Index: ObsoleteFiles.inc =================================================================== --- ObsoleteFiles.inc +++ ObsoleteFiles.inc @@ -38,6 +38,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20180517: retire vxge +OLD_FILES+=usr/share/man/man4/if_vxge.4.gz +OLD_FILES+=usr/share/man/man4/vxge.4.gz # 20180512: Rename Unbound tools OLD_FILES+=usr/sbin/unbound OLD_FILES+=usr/sbin/unbound-anchor Index: UPDATING =================================================================== --- UPDATING +++ UPDATING @@ -51,6 +51,12 @@ ****************************** SPECIAL WARNING: ****************************** +20180517: + The vxge(4) driver has been removed. This driver was introduced into + HEAD one week before the Exar left the Ethernet market and is not + known to be used. If you have device vxge in your kernel config file + it must be removed. + 20180508: The nxge(4) driver has been removed. This driver was for PCI-X 10g cards made by s2io/Neterion. The company was aquired by Exar and Index: share/man/man4/Makefile =================================================================== --- share/man/man4/Makefile +++ share/man/man4/Makefile @@ -569,7 +569,6 @@ vt.4 \ vte.4 \ ${_vtnet.4} \ - ${_vxge.4} \ watchdog.4 \ wb.4 \ ${_wbwd.4} \ @@ -753,7 +752,6 @@ MLINKS+=vr.4 if_vr.4 MLINKS+=vte.4 if_vte.4 MLINKS+=${_vtnet.4} ${_if_vtnet.4} -MLINKS+=${_vxge.4} ${_if_vxge.4} MLINKS+=watchdog.4 SW_WATCHDOG.4 MLINKS+=wb.4 if_wb.4 MLINKS+=wi.4 if_wi.4 @@ -824,7 +822,6 @@ _if_urtw.4= if_urtw.4 _if_vmx.4= if_vmx.4 _if_vtnet.4= if_vtnet.4 -_if_vxge.4= if_vxge.4 _if_wpi.4= if_wpi.4 _imcsmb.4= imcsmb.4 _ipmi.4= ipmi.4 @@ -845,7 +842,6 @@ _virtio_scsi.4= virtio_scsi.4 _vmx.4= vmx.4 _vtnet.4= vtnet.4 -_vxge.4= vxge.4 _padlock.4= padlock.4 _rr232x.4= rr232x.4 _speaker.4= speaker.4 Index: share/man/man4/vxge.4 =================================================================== --- share/man/man4/vxge.4 +++ share/man/man4/vxge.4 @@ -1,115 +0,0 @@ -.\" Copyright (c) 2002-2011 Exar Corp. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer as -.\" the first lines of this file unmodified. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd March 16, 2011 -.Dt VXGE 4 -.Os -.Sh NAME -.Nm vxge -.Nd "Neterion X3100 10GbE Server/Storage adapter driver" -.Sh SYNOPSIS -To compile this driver into the kernel, -place the following line in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "device vxge" -.Ed -.Pp -Alternatively, to load the driver as a -module at boot time, place the following line in -.Xr loader.conf 5 : -.Bd -literal -offset indent -if_vxge_load="YES" -.Ed -.Sh DEPRECATION NOTICE -The -.Nm -driver is not present in -.Fx 12.0 -and later. -.Sh DESCRIPTION -The -.Nm -driver provides support for Neterion X3100 adapters. -The driver supports TCP Segmentation Offload (TSO/LSO), -Large Receive Offload (LRO), Jumbo Frames, Receive Traffic Hash (RTH), -VLAN, Promiscuous mode and Multi function mode. -.Pp -The -.Nm -driver supports the following function modes: -.Bd -ragged -offset indent -.Cd "SF1_VP17 - 1 function with 17 VPATHs" -.Ed -.Bd -ragged -offset indent -.Cd "MF8_VP2 - 8 functions with 2 VPATHs per function" -.Ed -.Bd -ragged -offset indent -.Cd "MF2_VP8 - 2 functions, 8 Paths/Function" -.Ed -.Bd -ragged -offset indent -.Cd "MF4_VP4 - 4 Functions, 4 Paths/Function" -.Ed -.Bd -ragged -offset indent -.Cd "MF8P_VP2 - 8 functions with 2 VPATHs per function required for DirectIO" -.Ed -.Pp -For general information and support, please visit the Neterion support page -.Pa http://www.neterion.com/support/support.html . -.Pp -Support for Jumbo Frames is provided via the interface MTU setting. -Selecting an MTU larger than 1500 bytes with the -.Xr ifconfig 8 -utility configures the adapter to transmit and receive Jumbo Frames. -X3100 adapters support Jumbo Frames up to 9600 bytes. -.Pp -For Jumbo Frames, the driver will try to allocate physically contiguous buffers. -Failures to do so may degrade the performance. -To resolve such problems, please visit -.Pa http://www.neterion.com -where additional information and a kernel patch can be found. -.Pp -For more information on configuring this device, see -.Xr ifconfig 8 . -.Sh HARDWARE -The -.Nm -driver supports Neterion X3100 10 Gigabit Ethernet adapters listed in -.Pa http://www.neterion.com . -.Sh SUPPORT -For troubleshooting tips and FAQs, please visit -.Pa http://trac.neterion.com/cgi-bin/trac.cgi/wiki/TitleIndex?anonymous . -.Pp -For any issues please send an email to -.Aq Mt support@neterion.com . -.Sh SEE ALSO -.Xr arp 8 , -.Xr ifconfig 8 -.Sh AUTHORS -The -.Nm -driver was written by -.An Neterion Aq Mt support@neterion.com . Index: sys/conf/NOTES =================================================================== --- sys/conf/NOTES +++ sys/conf/NOTES @@ -2135,7 +2135,6 @@ device ti # Alteon Networks Tigon I/II gigabit Ethernet device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') -device vxge # Exar/Neterion XFrame 3100 10GbE # PCI IEEE 802.11 Wireless NICs device ath # Atheros pci/cardbus NIC's Index: sys/conf/files =================================================================== --- sys/conf/files +++ sys/conf/files @@ -3454,24 +3454,6 @@ dev/vte/if_vte.c optional vte pci dev/vx/if_vx.c optional vx dev/vx/if_vx_pci.c optional vx pci -dev/vxge/vxge.c optional vxge -dev/vxge/vxgehal/vxgehal-ifmsg.c optional vxge -dev/vxge/vxgehal/vxgehal-mrpcim.c optional vxge -dev/vxge/vxgehal/vxge-queue.c optional vxge -dev/vxge/vxgehal/vxgehal-ring.c optional vxge -dev/vxge/vxgehal/vxgehal-swapper.c optional vxge -dev/vxge/vxgehal/vxgehal-mgmt.c optional vxge -dev/vxge/vxgehal/vxgehal-srpcim.c optional vxge -dev/vxge/vxgehal/vxgehal-config.c optional vxge -dev/vxge/vxgehal/vxgehal-blockpool.c optional vxge -dev/vxge/vxgehal/vxgehal-doorbells.c optional vxge -dev/vxge/vxgehal/vxgehal-mgmtaux.c optional vxge -dev/vxge/vxgehal/vxgehal-device.c optional vxge -dev/vxge/vxgehal/vxgehal-mm.c optional vxge -dev/vxge/vxgehal/vxgehal-driver.c optional vxge -dev/vxge/vxgehal/vxgehal-virtualpath.c optional vxge -dev/vxge/vxgehal/vxgehal-channel.c optional vxge -dev/vxge/vxgehal/vxgehal-fifo.c optional vxge dev/watchdog/watchdog.c standard dev/wb/if_wb.c optional wb pci dev/wi/if_wi.c optional wi Index: sys/conf/makeLINT.mk =================================================================== --- sys/conf/makeLINT.mk +++ sys/conf/makeLINT.mk @@ -45,7 +45,6 @@ echo "nodevice sge" >> ${.TARGET}-NOIP echo "nodevice sk" >> ${.TARGET}-NOIP echo "nodevice txp" >> ${.TARGET}-NOIP - echo "nodevice vxge" >> ${.TARGET}-NOIP echo "nodevice netmap" >> ${.TARGET}-NOIP .endif .if ${TARGET} == "mips" Index: sys/dev/vxge/LICENSE =================================================================== --- sys/dev/vxge/LICENSE +++ sys/dev/vxge/LICENSE @@ -1,31 +0,0 @@ -/*- - * Copyright (c) 2002-2010 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ \ No newline at end of file Index: sys/dev/vxge/README =================================================================== --- sys/dev/vxge/README +++ sys/dev/vxge/README @@ -1,450 +0,0 @@ -$FreeBSD$ -''_Readme for FreeBSD X3100 Series 10GbE PCIe I/O Virtualized Server Adapter Drivers_''' - -=== Introduction === -FreeBSD Driver for X3100 10GbE Server/Storage adapters -* Drivers support all X3100 10GbE adapters with FreeBSD version 7.x, 8.x and 9.x -* Supports both i386 and amd64 architectures -* Features: Jumbo frames (up to 9600), - LRO (Large Receive Offload), - TSO (TCP segmentation offload), - RTH (Receive Traffic Hash). - Also, Extended Message Signaled Interrupts (MSI-X). - - -''Features'' - - a. Jumbo frames: - X3110 and X3120 supports MTU up to 9600 bytes, modifiable using ifconfig command. - - b. LRO (Large Receive Offload): - LRO can be enabled/disabled before loading driver. - Set lro_enable in vxge.conf to 1 before loading driver. - - c. TSO (TCP Segmentation Offload) - TSO can be enabled/disabled before loading driver. - Set tso_enable in vxge.conf to 1 before loading driver. - - d. RTH (Receive Traffic Hash) - Receive side steering for better scaling. - Set rth_enable in vxge.conf to 1 before loading driver. - - e. MSI-X - Can be enabled on platforms which support it, resulting in noticeable - performance improvement. - - f. Multi-VPaths - Up to 17 hardware based transmit and receive data channels, with - multiple steering options. - - -''X3100 & Driver configuration: vxge.conf'' - -The vxge.conf contains following attributes. - - -''msix_enable'' - -Enable MSI (Message Signaled Interrupts) feature in driver. -0 - INTA -1 - MSI-X -Default: 1 - - -''rth_enable'' - -Enables Receive side steering for better scaling (RTH - Receive Traffic Hash) -Range: 0 - 1 -Default: 1 - - -''lro_enable'' - -Enables LRO (Large Receive Offload) feature in driver. -Range: 0 - 1 -Default: 1 - - -''tso_enable'' - -Enables TSO (TCP Segmentaton Offload) feature in driver. -Range: 0 - 1 -Default: 1 - - -''no_of_vpath'' - -Specifies maximum VPATH(s) configured for each device function. -Valid range: 1-17 -Default: Optimized by driver - - -''func_mode'' - -Change PCI function mode - 0 - SF1_VP17 (1 function with 17 VPATHs) - 1 - MF8_VP2 (8 functions with 2 VPATHs per function) - 8 - MF2_VP8 (2 functions, 8 Paths/Function) - 9 - MF4_VP4 (4 Functions, 4 Paths/Function) - 11 - MF8P_VP2 (8 functions with 2 VPATHS per function required for DirectIO) - Default: -1 - - -''port_mode'' - -Change the default dual port mode - 2 - Active Passive - 3 - Single Port - 4 - Dual Port - - -''l2_switch'' - -Turn on/off the inter function traffic through l2 switch - 0 - Disallow inter function traffic - 1 - Allow inter function traffic - Default: -1 - - -''bandwidth_0 - bandwidth_7'' - - Desired max receive/transmit bandwidth,in Mbps for function 0 to function 7 - Minimum value is 100 Mbps, for 1 Gbps specify a value of 1024. - - -''priority_0 - priority_7'' - - Desired receive/transmit priority for function 0 to function 7 - - -''intr_coalesce'' - - Adaptive interrupt coalescing - 0 - Disable - 1 - Enable - - -''Low Latency'' - - 0 - Disable - 1 - Enable - -=== Installation Instructions === - -''Identifying the Adapter'' - - The X3100 adapter is identified by the board ID number on the adapter. - - Look for a label that has a barcode and a number, for example, - SXT0425072. The factory-burned MAC address (hardware address) - shows up on the board above the serial number, - (similar to 000CFC000449 -- 00:0C:FC:00:04:49). - - -''Kernel Driver Source Package'' - -This package contains kernel_update.sh script which is to be used to copy driver sources to kernel path. -It creates vxge folder with source code in /usr/src/sys/dev and Makefile in /usr/src/sys/modules. - -Loadable parameters can be changed by putting below lines in /boot/device.hints and set values as desired. - hint.vxge.0.msix_enable="1" - hint.vxge.0.rth_enable="1" - hint.vxge.0.lro_enable="1" - hint.vxge.0.tso_enable="1" - hint.vxge.0.tx_steering="1" - hint.vxge.0.no_of_vpath="-1" - hint.vxge.0.func_mode="-1" - hint.vxge.0.port_mode="-1" - hint.vxge.0.fw_upgrade="1" - hint.vxge.0.bandwidth_0="-1" - hint.vxge.0.bandwidth_1="-1" - hint.vxge.0.bandwidth_2="-1" - hint.vxge.0.bandwidth_3="-1" - hint.vxge.0.bandwidth_4="-1" - hint.vxge.0.bandwidth_5="-1" - hint.vxge.0.bandwidth_6="-1" - hint.vxge.0.bandwidth_7="-1" - hint.vxge.0.priority_0="-1" - hint.vxge.0.priority_1="-1" - hint.vxge.0.priority_2="-1" - hint.vxge.0.priority_3="-1" - hint.vxge.0.priority_4="-1" - hint.vxge.0.priority_5="-1" - hint.vxge.0.priority_6="-1" - hint.vxge.0.priority_7="-1" - hint.vxge.0.intr_coalesce="0" - hint.vxge.0.low_latency="0" - - e.g., set hint.vxge.0.msix_enable to 0 to load driver in INTA mode. - Then reboot the system to add loadable parameters to kenv. - - -''Standalone Driver Source Package'' - -vxge (FreeBSD package) - This directory contains FreeBSD driver sources for X3100 device(s), - Makefile, and X3100 Hardware Abstraction headers and sources - (vxgehal and include folders) - -vxgehal - This directory contains the X3100 HAL sources. - The driver uses HAL to perform operations on the X3100 hardware. - -include - The include subdirectory contains HAL header files. - -Source code for vxge-manage tool (used to get statistics, pciconfig and -register dump) are included in the freebsd directory. - - -''Building the driver'' - - The driver is distributed in the source form. Driver and installation - utility executables need to be built for the target platform. - - In the directory containing Makefile for building Exar driver for FreeBSD, - #make clean - #make - - Please unload previously installed Exar drivers before proceeding with following steps. - #make uninstall - - -''Loading the driver'' - - Use "kldload" to load driver module vxge.ko. - #kldload ./vxge.ko - - Run "kldstat" and find an entry for vxge kernel module to ensure driver installation - was successful. - #kldstat | grep vxge - 3 1 0xc22cc000 26000 vxge.ko - - -''Enabling interface and assigning IP address'' - - #ifconfig up - will be similar to vxge0, vxge1 etc. and can be - found by executing "ifconfig -a". - Neterion adapters typically have MAC addresses starting with - "00:0C:FC" or "00:11:25". - - Example: - #ifconfig vxge0 10.2.2.40 up - Enables vxge0 interface and assigns to it the IP address 10.2.2.40. - - vxge0: flags=8843 metric 0 mtu 1500 - options=53b - ether 00:0c:fc:00:da:47 - inet6 fe80::20c:fcff:fe00:da47%vxge0 prefixlen 64 scopeid 0x3 - inet 10.2.2.40 netmask 0xff000000 broadcast 17.255.255.255 - media: Ethernet autoselect (10Gbase-SR ) - status: active - - -''Disabling the interface'' - - #ifconfig down - Example: - #ifconfig vxge0 down - - -''Unloading the Driver'' - #kldunload vxge.ko - - -=== Performance Suggestions === - -Sysctl Tuning Parameters - #sysctl net.inet.tcp.sendspace=786432 - #sysctl net.inet.tcp.recvspace=786432 - #sysctl net.inet.tcp.recvbuf_max=16777216 - #sysctl net.inet.tcp.sendbuf_max=16777216 - #sysctl net.inet.tcp.blackhole=1 - #sysctl net.inet.tcp.rfc1323=1 - #sysctl net.inet.tcp.path_mtu_discovery=1 - #sysctl net.inet.tcp.inflight.enable=0 - #sysctl net.inet.ip.maxfragsperpacket=2147483647 - #sysctl kern.ipc.maxsockbuf=8388608 - #sysctl kern.ipc.nmbclusters=2147483647 - #sysctl kern.ipc.nmbjumbop=262144 - #sysctl kern.ipc.maxsockets=81920 - #sysctl hw.intr_storm_threshold=9000 - - -''Usage & Troubleshooting'' - -For general information and support, please visit Neterion support website at -http://www.neterion.com/support/support.html - -Make sure that the operating system identifies the X3100 adapter. Note that -Neterion vendor ID is 0x17D5 and X3110 and X3120 adapters can be fixed to both PCIe slots. - -The rest of this section details troubleshooting tips and information. Some of -them are general and some are more specific. For online Troubleshooting tips -and faqs, please visit -http://trac.neterion.com/cgi-bin/trac.cgi/wiki/TitleIndex?anonymous - - -''Loading the driver and initializing the device'' - -The first time FreeBSD identifies the device it stores the corresponding -device/vendor IDs in an enumerated tree of PCI devices. Note that Neterion -vendor id is 0x17d5. - -After cold reboot FreeBSD finds the device and tries to load the corresponding -driver. If it fails, try to switch the card and/or cable. And, in parallel, send -us the "tail" of the "/var/log/messages". We also need traces, register dump and -statistics(Use vxge-manage tool). - - -''Collect information'' - -If you're reporting a problem to Neterion, please describe: -host(s) and adapter(s), switch (if used), software version. - - -''ARP'' - -If this is a basic connectivity issue (e.g., cannot connect, cannot ping), -make sure first that ARP works -Do you see ARPs coming through a switch (in case switch is used)? -Do you see frame drops at the switch when pinging? -Do you see frame counts increasing via statistics? - - -''Have you tried'' - - a. A previous driver release; - b. A different adapter in the same PCI slot; - c. A different PCI slot; - d. Back-to-back setup so that the switch is excluded from the equation. - e. To replace the cables? - f. To use a different PCI slot? - - -''Start clean'' - - a. Have you tried to reboot the switch? Cold-reboot the host? - b. Make sure that the latest released driver gets loaded after the host - reboot, and that the 10GE interface shows up via ifconfig. - - -''LEDs'' - -Do you see LED going green after everything is connected and drivers loaded? -How/when does the color changes? - - -''ifconfig'' - -Run "ifconfig -a" at the command prompt and check whether the output Looks as -expected. Include the output in your problem report. - -Note for instance that "all-foxes" i.e, FF:FF:FF:FF:FF:FF MAC address could -explain a general connectivity issue, if that's what you see. - - -''Log'' - -Please attach the generated log, with traces enabled. - -Note that the driver's logging facility is configurable at compile-time. Errors -and traces can be compiled out on a per-component basis. The components are: HAL -fifos and rings, device, etc., see VXGE_COMPONENT_HAL_??? in the Makefile. - -Here's how you enable all except data path traces: -CFLAGS_VXGE = -DVXGE_DEBUG_MODULE_MASK=0xffffffbf \ --DVXGE_DEBUG_ERR_MASK=0xffffffbf -Recompile with traces and include the log in the report. - - -=== Utilities === - -''Statistics'' - - To print hardware and software statistics for interface instance 0 - (i.e., vxge0), run: - #vxge-manage vxgeX stats common - #vxge-manage vxgeX stats mrpcim - #vxge-manage vxgeX stats driver - #vxge-manage vxgeX pciconfig - #vxge-manage vxgeX hwinfo - #vxge-manage vxgeX bw_pri_get - #vxge-manage vxgeX bw_pri_get vf_id - #vxge-manage vxgeX port_mode_get - -The vxge-manage tool generates log file in the working directory. Once done, ping a -few times, and collect the statistics again (Ping both from this and the remote -machines). - -Many counters could be of interest. For example, "rx_vld_frms" counts all -valid incoming Ethernet frames seen by the adapter. Information could be derived -from the fact that (for instance) counter stay constant during ping, if that is -what happening. For detailed description of the X3100 counters, please refer -to the "X3100 User Guide". - -Please include the statistics into your problem report. - - -''X3100 registers'' - - Use vxge-manage to dump all X3100 BAR0 space registers. Include this register dump - into your problem report. - #vxge-manage vxgeX regs - - -''PCI configuration space'' - -Use vxge-manage to retrieve PCI vendor, device, etc. Include the PCI configutation -space in your problem report. - #vxge-manage vxgeX pciconfig - - -''Hardware Info'' - -To retrieve hardware info of device, e.g, serial / part number and function mode etc. -use vxge-manage - #vxge-manage vxgeX hwinfo - - -''Bandwidth and Priority'' - -Use vxge-manage to display Bandwidth and Priority information. - #vxge-manage vxgeX bw_pri_get - or - #vxge-manage vxgeX bw_pri_get vf_id - -vxge-manage can also be used to set bandwidth and priority for individual VF. - #vxge-manage vxgeX bw_pri_set vf_id bandwidth - or - #vxge-manage vxgeX bw_pri_set vf_id bandwidth priority - - Example: - #vxge-manage vxge0 bw_pri_set 0 1500 - or - #vxge-manage vxge0 bw_pri_set 0 1500 1 - -''Port mode'' - -Use vxge-manage to display Port mode setting - #vxge-manage vxgeX port_mode_get - -vxge-manage can also be used to set Port mode. - #vxge-manage vxgeX port_mode_set port_mode_value - - Example: - #vxge-manage vxge0 port_mode_set 2 - -=== Known Issues === - - -=== Available Downloads === - - For latest available drivers or further support please contact your network - adapter provider or neterionsupport@exar.com. - - -=================================================================== - Exar Corp., Proprietary - COPYRIGHT (c) 2002-2011 Exar corp., ALL RIGHTS RESERVED Index: sys/dev/vxge/include/build-version.h =================================================================== --- sys/dev/vxge/include/build-version.h +++ sys/dev/vxge/include/build-version.h @@ -1,7 +0,0 @@ -/* $FreeBSD$ */ - -#ifndef BUILD_VERSION_H -#define BUILD_VERSION_H -/* Do not edit! Automatically generated when released. */ -#define GENERATED_BUILD_VERSION 22770 -#endif /* BUILD_VERSION_H */ Index: sys/dev/vxge/include/vxge-debug.h =================================================================== --- sys/dev/vxge/include/vxge-debug.h +++ sys/dev/vxge/include/vxge-debug.h @@ -1,161 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_DEBUG_H -#define VXGE_DEBUG_H - -__EXTERN_BEGIN_DECLS - -/* - * __FUNCTION__ is, together with __PRETTY_FUNCTION__ or something similar, - * a gcc extension. we'll have to #if defined around that, and provide some - * meaningful replacement for those, so to make some gcc versions happier - */ -#ifndef __func__ -#if defined(__FUNCTION__) -#define __func__ __FUNCTION__ -#else -#define __func__ " " -#endif -#endif - -#define NULL_HLDEV NULL -#define NULL_VPID 0xFFFFFFFF - -#define VXGE_DEBUG_MODULE_MASK_DEF 0xFFFFFFFF -#define VXGE_DEBUG_LEVEL_DEF VXGE_TRACE - -extern u32 g_debug_level; - -#ifndef VXGE_DEBUG_MODULE_MASK -#define VXGE_DEBUG_MODULE_MASK 0 -#endif - -/* - * enum vxge_debug_level_e - * @VXGE_NONE: debug disabled - * @VXGE_ERR: all errors going to be logged out - * @VXGE_INFO: all errors plus all kind of info tracing print outs - * going to be logged out. noisy. - * @VXGE_TRACE: all errors, all info plus all function entry and exit - * and parameters. Very noisy - * - * This enumeration going to be used to switch between different - * debug levels during runtime if DEBUG macro defined during - * compilation. If DEBUG macro not defined than code will be - * compiled out. - */ -typedef enum vxge_debug_level_e { - VXGE_NONE = 0x0, - VXGE_ERR = 0x1, - VXGE_INFO = 0x2, - VXGE_TRACE = 0x4, -} vxge_debug_level_e; - -/* - * @VXGE_COMPONENT_HAL_DEVICE: do debug for vxge core device module - * @VXGE_COMPONENT_HAL_DEVICE_IRQ: do debug for vxge core device module in ISR - * @VXGE_COMPONENT_HAL_VAPTH: do debug for vxge core virtual path module - * @VXGE_COMPONENT_HAL_VAPTH_ISR: do debug for vxge core virtual path module in - * ISR - * @VXGE_COMPONENT_HAL_CONFIG: do debug for vxge core config module - * @VXGE_COMPONENT_HAL_MM: do debug for vxge core memory module - * @VXGE_COMPONENT_HAL_POOL: do debug for vxge core memory pool module - * @VXGE_COMPONENT_HAL_QUEUE: do debug for vxge core queue module - * @VXGE_COMPONENT_HAL_BITMAP: do debug for vxge core BITMAP module - * @VXGE_COMPONENT_HAL_CHANNEL: do debug for vxge core channel module - * @VXGE_COMPONENT_HAL_FIFO: do debug for vxge core fifo module - * @VXGE_COMPONENT_HAL_RING: do debug for vxge core ring module - * @VXGE_COMPONENT_HAL_DMQ: do debug for vxge core DMQ module - * @VXGE_COMPONENT_HAL_UMQ: do debug for vxge core UMQ module - * @VXGE_COMPONENT_HAL_SQ: do debug for vxge core SQ module - * @VXGE_COMPONENT_HAL_SRQ: do debug for vxge core SRQ module - * @VXGE_COMPONENT_HAL_CQRQ: do debug for vxge core CRQ module - * @VXGE_COMPONENT_HAL_NCE: do debug for vxge core NCE module - * @VXGE_COMPONENT_HAL_STAG: do debug for vxge core STAG module - * @VXGE_COMPONENT_HAL_TCP: do debug for vxge core TCP module - * @VXGE_COMPONENT_HAL_LRO: do debug for vxge core LRO module - * @VXGE_COMPONENT_HAL_SPDM: do debug for vxge core SPDM module - * @VXGE_COMPONENT_HAL_SESSION: do debug for vxge core SESSION module - * @VXGE_COMPONENT_HAL_STATS: do debug for vxge core statistics module - * @VXGE_COMPONENT_HAL_MRPCIM: do debug for vxge KMA core mrpcim module - * @VXGE_COMPONENT_HAL_SRPCIM: do debug for vxge KMA core srpcim module - * @VXGE_COMPONENT_OSDEP: do debug for vxge KMA os dependent parts - * @VXGE_COMPONENT_LL: do debug for vxge link layer module - * @VXGE_COMPONENT_ULD: do debug for vxge upper layer driver - * @VXGE_COMPONENT_ALL: activate debug for all modules with no exceptions - * - * This enumeration going to be used to distinguish modules - * or libraries during compilation and runtime. Makefile must declare - * VXGE_DEBUG_MODULE_MASK macro and set it to proper value. - */ -#define VXGE_COMPONENT_HAL_DEVICE 0x00000001 -#define VXGE_COMPONENT_HAL_DEVICE_IRQ 0x00000002 -#define VXGE_COMPONENT_HAL_VPATH 0x00000004 -#define VXGE_COMPONENT_HAL_VPATH_IRQ 0x00000008 -#define VXGE_COMPONENT_HAL_CONFIG 0x00000010 -#define VXGE_COMPONENT_HAL_MM 0x00000020 -#define VXGE_COMPONENT_HAL_POOL 0x00000040 -#define VXGE_COMPONENT_HAL_QUEUE 0x00000080 -#define VXGE_COMPONENT_HAL_BITMAP 0x00000100 -#define VXGE_COMPONENT_HAL_CHANNEL 0x00000200 -#define VXGE_COMPONENT_HAL_FIFO 0x00000400 -#define VXGE_COMPONENT_HAL_RING 0x00000800 -#define VXGE_COMPONENT_HAL_DMQ 0x00001000 -#define VXGE_COMPONENT_HAL_UMQ 0x00002000 -#define VXGE_COMPONENT_HAL_SQ 0x00004000 -#define VXGE_COMPONENT_HAL_SRQ 0x00008000 -#define VXGE_COMPONENT_HAL_CQRQ 0x00010000 -#define VXGE_COMPONENT_HAL_NCE 0x00020000 -#define VXGE_COMPONENT_HAL_STAG 0x00040000 -#define VXGE_COMPONENT_HAL_TCP 0x00080000 -#define VXGE_COMPONENT_HAL_LRO 0x00100000 -#define VXGE_COMPONENT_HAL_SPDM 0x00200000 -#define VXGE_COMPONENT_HAL_SESSION 0x00400000 -#define VXGE_COMPONENT_HAL_STATS 0x00800000 -#define VXGE_COMPONENT_HAL_MRPCIM 0x01000000 -#define VXGE_COMPONENT_HAL_MRPCIM_IRQ 0x02000000 -#define VXGE_COMPONENT_HAL_SRPCIM 0x04000000 -#define VXGE_COMPONENT_HAL_SRPCIM_IRQ 0x08000000 -#define VXGE_COMPONENT_HAL_DRIVER 0x10000000 - -/* space for CORE_XXX */ -#define VXGE_COMPONENT_OSDEP 0x20000000 -#define VXGE_COMPONENT_LL 0x40000000 -#define VXGE_COMPONENT_ULD 0x80000000 -#define VXGE_COMPONENT_ALL 0xffffffff - -__EXTERN_END_DECLS - -#endif /* VXGE_DEBUG_H */ Index: sys/dev/vxge/include/vxge-defs.h =================================================================== --- sys/dev/vxge/include/vxge-defs.h +++ sys/dev/vxge/include/vxge-defs.h @@ -1,253 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_DEFS_H -#define VXGE_DEFS_H - -#define VXGE_PCI_VENDOR_ID 0x17D5 -#define VXGE_PCI_DEVICE_ID_TITAN_1 0x5833 -#define VXGE_PCI_REVISION_TITAN_1 1 -#define VXGE_PCI_DEVICE_ID_TITAN_1A 0x5833 -#define VXGE_PCI_REVISION_TITAN_1A 2 -#define VXGE_PCI_DEVICE_ID_TITAN_2 0x5834 -#define VXGE_PCI_REVISION_TITAN_2 1 - -#define VXGE_MIN_FW_MAJOR_VERSION 1 -#define VXGE_MIN_FW_MINOR_VERSION 8 -#define VXGE_MIN_FW_BUILD_NUMBER 1 - -#define VXGE_DRIVER_VENDOR "Exar Corp." -#define VXGE_CHIP_FAMILY "X3100" -#define VXGE_SUPPORTED_MEDIA_0 "Fiber" - -#define VXGE_DRIVER_NAME \ - "Neterion X3100 10GbE PCIe Server Adapter Driver" -/* - * mBIT(loc) - set bit at offset - */ -#define mBIT(loc) (0x8000000000000000ULL >> (loc)) - -/* - * vBIT(val, loc, sz) - set bits at offset - */ -#define vBIT(val, loc, sz) (((u64)(val)) << (64-(loc)-(sz))) -#define vBIT32(val, loc, sz) (((u32)(val)) << (32-(loc)-(sz))) - -/* - * bVALx(bits, loc) - Get the value of x bits at location - */ -#define bVAL1(bits, loc) ((((u64)bits) >> (64-(loc+1))) & 0x1) -#define bVAL2(bits, loc) ((((u64)bits) >> (64-(loc+2))) & 0x3) -#define bVAL3(bits, loc) ((((u64)bits) >> (64-(loc+3))) & 0x7) -#define bVAL4(bits, loc) ((((u64)bits) >> (64-(loc+4))) & 0xF) -#define bVAL5(bits, loc) ((((u64)bits) >> (64-(loc+5))) & 0x1F) -#define bVAL6(bits, loc) ((((u64)bits) >> (64-(loc+6))) & 0x3F) -#define bVAL7(bits, loc) ((((u64)bits) >> (64-(loc+7))) & 0x7F) -#define bVAL8(bits, loc) ((((u64)bits) >> (64-(loc+8))) & 0xFF) -#define bVAL9(bits, loc) ((((u64)bits) >> (64-(loc+9))) & 0x1FF) -#define bVAL11(bits, loc) ((((u64)bits) >> (64-(loc+11))) & 0x7FF) -#define bVAL12(bits, loc) ((((u64)bits) >> (64-(loc+12))) & 0xFFF) -#define bVAL14(bits, loc) ((((u64)bits) >> (64-(loc+14))) & 0x3FFF) -#define bVAL15(bits, loc) ((((u64)bits) >> (64-(loc+15))) & 0x7FFF) -#define bVAL16(bits, loc) ((((u64)bits) >> (64-(loc+16))) & 0xFFFF) -#define bVAL17(bits, loc) ((((u64)bits) >> (64-(loc+17))) & 0x1FFFF) -#define bVAL18(bits, loc) ((((u64)bits) >> (64-(loc+18))) & 0x3FFFF) -#define bVAL20(bits, loc) ((((u64)bits) >> (64-(loc+20))) & 0xFFFFF) -#define bVAL22(bits, loc) ((((u64)bits) >> (64-(loc+22))) & 0x3FFFFF) -#define bVAL24(bits, loc) ((((u64)bits) >> (64-(loc+24))) & 0xFFFFFF) -#define bVAL28(bits, loc) ((((u64)bits) >> (64-(loc+28))) & 0xFFFFFFF) -#define bVAL32(bits, loc) ((((u64)bits) >> (64-(loc+32))) & 0xFFFFFFFF) -#define bVAL36(bits, loc) ((((u64)bits) >> (64-(loc+36))) & 0xFFFFFFFFFULL) -#define bVAL40(bits, loc) ((((u64)bits) >> (64-(loc+40))) & 0xFFFFFFFFFFULL) -#define bVAL44(bits, loc) ((((u64)bits) >> (64-(loc+44))) & 0xFFFFFFFFFFFULL) -#define bVAL48(bits, loc) ((((u64)bits) >> (64-(loc+48))) & 0xFFFFFFFFFFFFULL) -#define bVAL52(bits, loc) ((((u64)bits) >> (64-(loc+52))) & 0xFFFFFFFFFFFFFULL) -#define bVAL56(bits, loc) ((((u64)bits) >> (64-(loc+56))) & 0xFFFFFFFFFFFFFFULL) -#define bVAL60(bits, loc) \ - ((((u64)bits) >> (64-(loc+60))) & 0xFFFFFFFFFFFFFFFULL) -#define bVAL61(bits, loc) \ - ((((u64)bits) >> (64-(loc+61))) & 0x1FFFFFFFFFFFFFFFULL) - -#define VXGE_HAL_VPATH_BMAP_START 47 -#define VXGE_HAL_VPATH_BMAP_END 63 - -#define VXGE_HAL_ALL_FOXES 0xFFFFFFFFFFFFFFFFULL - -#define VXGE_HAL_INTR_MASK_ALL 0xFFFFFFFFFFFFFFFFULL - -#define VXGE_HAL_MAX_VIRTUAL_PATHS 17 - -#define VXGE_HAL_MAX_FUNCTIONS 8 - -#define VXGE_HAL_MAX_ITABLE_ENTRIES 256 - -#define VXGE_HAL_MAX_RSS_KEY_SIZE 40 - -#define VXGE_HAL_MAC_MAX_WIRE_PORTS 2 - -#define VXGE_HAL_MAC_SWITCH_PORT 2 - -#define VXGE_HAL_MAC_MAX_AGGR_PORTS 2 - -#define VXGE_HAL_MAC_MAX_PORTS 3 - -#define VXGE_HAL_INTR_ALARM (1<<4) - -#define VXGE_HAL_INTR_TX (1<<(3-VXGE_HAL_VPATH_INTR_TX)) - -#define VXGE_HAL_INTR_RX (1<<(3-VXGE_HAL_VPATH_INTR_RX)) - -#define VXGE_HAL_INTR_EINTA (1<<(3-VXGE_HAL_VPATH_INTR_EINTA)) - -#define VXGE_HAL_INTR_BMAP (1<<(3-VXGE_HAL_VPATH_INTR_BMAP)) - -#define VXGE_HAL_PCI_CONFIG_SPACE_SIZE VXGE_OS_PCI_CONFIG_SIZE - -#define VXGE_HAL_DEFAULT_32 0xffffffff - -#define VXGE_HAL_DEFAULT_64 0xffffffffffffffff - -#define VXGE_HAL_DUMP_BUF_SIZE 0x10000 - -#define VXGE_HAL_VPD_BUFFER_SIZE 128 - -#define VXGE_HAL_VPD_LENGTH 80 - -/* Check whether an address is multicast. */ -#define VXGE_HAL_IS_NULL(Address) (Address == 0x0000000000000000ULL) - -/* Check whether an address is multicast. */ -#define VXGE_HAL_IS_MULTICAST(Address) (Address & 0x0000010000000000ULL) - -/* Check whether an address is broadcast. */ -#define VXGE_HAL_IS_BROADCAST(Address) \ - ((Address & 0x0000FFFF00000000ULL) == 0x0000FFFF00000000ULL) - -#define VXGE_HAL_IS_UNICAST(Address) \ - (!(VXGE_HAL_IS_NULL(Address) || \ - VXGE_HAL_IS_MULTICAST(Address) || \ - VXGE_HAL_IS_BROADCAST(Address))) - -/* frames sizes */ -#define VXGE_HAL_HEADER_ETHERNET_II_802_3_SIZE 14 -#define VXGE_HAL_HEADER_802_2_SIZE 3 -#define VXGE_HAL_HEADER_SNAP_SIZE 5 -#define VXGE_HAL_HEADER_VLAN_SIZE 4 -#define VXGE_HAL_MAC_HEADER_MAX_SIZE \ - (VXGE_HAL_HEADER_ETHERNET_II_802_3_SIZE + \ - VXGE_HAL_HEADER_802_2_SIZE + \ - VXGE_HAL_HEADER_SNAP_SIZE) - -#define VXGE_HAL_TCPIP_HEADER_MAX_SIZE (64 + 64) - -/* 32bit alignments */ - -/* A receive data corruption can occur resulting in either a single-bit or -double-bit ECC error being flagged in the ASIC if starting offset of a -buffer in single buffer mode is 0x2 to 0xa. Single bit ECC error will not -lock up the card but can hide the data corruption while the double-bit ECC -error will lock up the card. Limiting the starting offset of the buffers to -0x0, 0x1 or to a value greater than 0xF will workaround this issue. -VXGE_HAL_HEADER_ETHERNET_II_802_3_ALIGN of 2 causes the starting offset of -buffer to be 0x2, 0x12 and so on, to have the start of the ip header dword -aligned. The start of buffer of 0x2 will cause this problem to occur. -To avoid this problem in all cases, add 0x10 to 0x2, to ensure that the start -of buffer is outside of the problem causing offsets. -*/ - -#define VXGE_HAL_HEADER_ETHERNET_II_802_3_ALIGN 0x12 -#define VXGE_HAL_HEADER_802_2_SNAP_ALIGN 2 -#define VXGE_HAL_HEADER_802_2_ALIGN 3 -#define VXGE_HAL_HEADER_SNAP_ALIGN 1 - -#define VXGE_HAL_MIN_MTU 46 -#define VXGE_HAL_MAX_MTU 9600 -#define VXGE_HAL_DEFAULT_MTU 1500 - -#define VXGE_HAL_SEGEMENT_OFFLOAD_MAX_SIZE 81920 - -#if defined(__EXTERN_BEGIN_DECLS) -#undef __EXTERN_BEGIN_DECLS -#endif - -#if defined(__EXTERN_END_DECLS) -#undef __EXTERN_END_DECLS -#endif - -#if defined(__cplusplus) -#define __EXTERN_BEGIN_DECLS extern "C" { -#define __EXTERN_END_DECLS } -#else -#define __EXTERN_BEGIN_DECLS -#define __EXTERN_END_DECLS -#endif - -__EXTERN_BEGIN_DECLS - -/* --------------------------- common stuffs ------------------------------ */ -/* - * VXGE_OS_DMA_REQUIRES_SYNC - should be defined or - * NOT defined in the Makefile - */ -#define VXGE_OS_DMA_CACHELINE_ALIGNED 0x1 - -/* - * Either STREAMING or CONSISTENT should be used. - * The combination of both or none is invalid - */ -#define VXGE_OS_DMA_STREAMING 0x2 -#define VXGE_OS_DMA_CONSISTENT 0x4 -#define VXGE_OS_SPRINTF_STRLEN 64 - -/* --------------------------- common stuffs ------------------------------ */ -#ifndef VXGE_OS_LLXFMT -#define VXGE_OS_LLXFMT "%llx" -#endif - -#ifndef VXGE_OS_LLDFMT -#define VXGE_OS_LLDFMT "%lld" -#endif - -#ifndef VXGE_OS_STXFMT -#define VXGE_OS_STXFMT "%zx" -#endif - -#ifndef VXGE_OS_STDFMT -#define VXGE_OS_STDFMT "%zd" -#endif - - -__EXTERN_END_DECLS - -#endif /* VXGE_DEFS_H */ Index: sys/dev/vxge/include/vxge-list.h =================================================================== --- sys/dev/vxge/include/vxge-list.h +++ sys/dev/vxge/include/vxge-list.h @@ -1,205 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_LIST_H -#define VXGE_LIST_H - -__EXTERN_BEGIN_DECLS - -/* - * struct vxge_list_t - List item. - * @prev: Previous list item. - * @next: Next list item. - * - * Item of a bi-directional linked list. - */ -typedef struct vxge_list_t { - struct vxge_list_t *prev; - struct vxge_list_t *next; -} vxge_list_t; - -/* - * vxge_list_init - Initialize linked list. - * @header: first element of the list (head) - * - * Initialize linked list. - * See also: vxge_list_t {}. - */ -static inline void vxge_list_init(vxge_list_t *header) -{ - vxge_assert(header != NULL); - - header->next = header; - header->prev = header; -} - -/* - * vxge_list_is_empty - Is the list empty? - * @header: first element of the list (head) - * - * Determine whether the bi-directional list is empty. Return '1' in - * case of 'empty'. - * See also: vxge_list_t {}. - */ -static inline int vxge_list_is_empty(vxge_list_t *header) -{ - vxge_assert(header != NULL); - - return (header->next == header); -} - -/* - * vxge_list_first_get - Return the first item from the linked list. - * @header: first element of the list (head) - * - * Returns the next item from the header. - * Returns NULL if the next item is header itself - * See also: vxge_list_remove(), vxge_list_insert(), vxge_list_t {}. - */ -static inline vxge_list_t *vxge_list_first_get(vxge_list_t *header) -{ - vxge_assert(header != NULL); - vxge_assert(header->next != NULL); - vxge_assert(header->prev != NULL); - - if (header->next == header) - return (NULL); - else - return (header->next); -} - -/* - * vxge_list_remove - Remove the specified item from the linked list. - * @item: element of the list - * - * Remove item from a list. - * See also: vxge_list_insert(), vxge_list_t {}. - */ -static inline void vxge_list_remove(vxge_list_t *item) -{ - vxge_assert(item != NULL); - vxge_assert(item->next != NULL); - vxge_assert(item->prev != NULL); - - item->next->prev = item->prev; - item->prev->next = item->next; -#if defined(VXGE_DEBUG_ASSERT) - item->next = item->prev = NULL; -#endif -} - -/* - * vxge_list_insert - Insert a new item after the specified item. - * @new_item: new element of the list - * @prev_item: element of the list after which the new element is - * inserted - * - * Insert new item (new_item) after given item (prev_item). - * See also: vxge_list_remove(), vxge_list_insert_before(), vxge_list_t {}. - */ -static inline void vxge_list_insert(vxge_list_t *new_item, - vxge_list_t *prev_item) -{ - vxge_assert(new_item != NULL); - vxge_assert(prev_item != NULL); - vxge_assert(prev_item->next != NULL); - - new_item->next = prev_item->next; - new_item->prev = prev_item; - prev_item->next->prev = new_item; - prev_item->next = new_item; -} - -/* - * vxge_list_insert_before - Insert a new item before the specified item. - * @new_item: new element of the list - * @next_item: element of the list after which the new element is inserted - * - * Insert new item (new_item) before given item (next_item). - */ -static inline void vxge_list_insert_before(vxge_list_t *new_item, - vxge_list_t * next_item) -{ - vxge_assert(new_item != NULL); - vxge_assert(next_item != NULL); - vxge_assert(next_item->next != NULL); - - new_item->next = next_item; - new_item->prev = next_item->prev; - next_item->prev->next = new_item; - next_item->prev = new_item; -} - -#define vxge_list_for_each(_p, _h) \ - for (_p = (_h)->next, vxge_os_prefetch(_p->next); _p != (_h); \ - _p = _p->next, vxge_os_prefetch(_p->next)) - -#define vxge_list_for_each_safe(_p, _n, _h) \ - for (_p = (_h)->next, _n = _p->next; _p != (_h); \ - _p = _n, _n = _p->next) - -#define vxge_list_for_each_prev_safe(_p, _n, _h) \ - for (_p = (_h)->prev, _n = _p->prev; _p != (_h); \ - _p = _n, _n = _p->prev) - -#if defined(__GNUC__) -/* - * vxge_container_of - Given a member, return the containing structure. - * @ptr: the pointer to the member. - * @type: the type of the container struct this is embedded in. - * @member: the name of the member within the struct. - * - * Cast a member of a structure out to the containing structure. - */ -#define vxge_container_of(ptr, type, member) (\ - { __typeof(((type *)0)->member) *__mptr = (ptr); \ - (type *)(void *)((char *)__mptr - ((ptr_t)&((type *)0)->member)); }) -#else -/* type unsafe version */ -#define vxge_container_of(ptr, type, member) \ - ((type *)(void *)((char *)(ptr) - ((ptr_t)&((type *)0)->member))) -#endif - -/* - * vxge_offsetof - Offset of the member in the containing structure. - * @t: struct name. - * @m: the name of the member within the struct. - * - * Return the offset of the member @m in the structure @t. - */ -#define vxge_offsetof(t, m) ((ptr_t)(&((t *)0)->m)) - -__EXTERN_END_DECLS - -#endif /* VXGE_LIST_H */ Index: sys/dev/vxge/include/vxge-os-debug.h =================================================================== --- sys/dev/vxge/include/vxge-os-debug.h +++ sys/dev/vxge/include/vxge-os-debug.h @@ -1,263 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_OS_DEBUG_H -#define VXGE_OS_DEBUG_H - -__EXTERN_BEGIN_DECLS - -#ifndef VXGE_DEBUG_INLINE_FUNCTIONS - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) -#define vxge_trace_aux(hldev, vpid, fmt, ...) \ - vxge_os_vasprintf(hldev, vpid, fmt, __VA_ARGS__) -#else -#define vxge_trace_aux(hldev, vpid, fmt, ...) \ - vxge_os_vaprintf(hldev, vpid, fmt, __VA_ARGS__) -#endif - -#define vxge_debug(module, level, hldev, vpid, fmt, ...) \ -{ \ - if (((u32)level <= \ - ((vxge_hal_device_t *)hldev)->debug_level) && \ - ((u32)module & \ - ((vxge_hal_device_t *)hldev)->debug_module_mask)) \ - vxge_trace_aux((vxge_hal_device_h)hldev, \ - vpid, fmt, __VA_ARGS__); \ -} - -/* - * vxge_debug_driver - * @level: level of debug verbosity. - * @hldev: HAL Device - * @vpid: Vpath id - * @fmt: printf like format string - * - * Provides logging facilities for OS Dependent functions. Can be customized - * with debug levels. Input parameters, except level, are the same - * as posix printf. This function may be compiled out if DEBUG macro - * was never defined. - * See also: vxge_debug_level_e{}. - */ -#if (VXGE_COMPONENT_HAL_DRIVER & VXGE_DEBUG_MODULE_MASK) -#define vxge_debug_driver(level, hldev, vpid, fmt, ...) \ - if ((u32)level <= g_debug_level) \ - vxge_os_vaprintf((vxge_hal_device_h)hldev, \ - vpid, fmt, __VA_ARGS__); -#else -#define vxge_debug_driver(level, hldev, vpid, fmt, ...) -#endif - -/* - * vxge_debug_osdep - * @level: level of debug verbosity. - * @hldev: HAL Device - * @vpid: Vpath id - * @fmt: printf like format string - * - * Provides logging facilities for OS Dependent functions. Can be customized - * with debug levels. Input parameters, except level, are the same - * as posix printf. This function may be compiled out if DEBUG macro - * was never defined. - * See also: vxge_debug_level_e{}. - */ -#if (VXGE_COMPONENT_OSDEP & VXGE_DEBUG_MODULE_MASK) -#define vxge_debug_osdep(level, hldev, vpid, fmt, ...) \ - vxge_debug(VXGE_COMPONENT_OSDEP, level, hldev, vpid, fmt, __VA_ARGS__) -#else -#define vxge_debug_osdep(level, hldev, vpid, fmt, ...) -#endif - -/* - * vxge_debug_ll - * @level: level of debug verbosity. - * @hldev: HAL Device - * @vpid: Vpath id - * @fmt: printf like format string - * - * Provides logging facilities for LL driver. Can be customized - * with debug levels. Input parameters, except level, are the same - * as posix printf. This function may be compiled out if DEBUG macro - * was never defined. - * See also: vxge_debug_level_e{}. - */ -#if (VXGE_COMPONENT_LL & VXGE_DEBUG_MODULE_MASK) -#define vxge_debug_ll(level, hldev, vpid, fmt, ...) \ - vxge_debug(VXGE_COMPONENT_LL, level, hldev, vpid, fmt, __VA_ARGS__) -#else -#define vxge_debug_ll(level, hldev, vpid, fmt, ...) -#endif - -/* - * vxge_debug_uld - * @component: The Component mask - * @level: level of debug verbosity. - * @hldev: HAL Device - * @vpid: Vpath id - * @fmt: printf like format string - * - * Provides logging facilities for LL driver. Can be customized - * with debug levels. Input parameters, except level, are the same - * as posix printf. This function may be compiled out if DEBUG macro - * was never defined. - * See also: vxge_debug_level_e{}. - */ -#if (VXGE_COMPONENT_ULD & VXGE_DEBUG_MODULE_MASK) -#define vxge_debug_uld(component, level, hldev, vpid, fmt, ...) \ - vxge_debug(component, level, hldev, vpid, fmt, __VA_ARGS__) -#else -#define vxge_debug_uld(level, hldev, vpid, fmt, ...) -#endif - -#else /* VXGE_DEBUG_INLINE_FUNCTIONS */ - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) -#define vxge_trace_aux(hldev, vpid, fmt) \ - vxge_os_vasprintf(hldev, vpid, fmt) -#else -#define vxge_trace_aux(hldev, vpid, fmt) \ - vxge_os_vaprintf(hldev, vpid, fmt) -#endif - -#define vxge_debug(module, level, hldev, vpid, fmt) \ -{ \ - if (((u32)level <= ((vxge_hal_device_t *)hldev)->debug_level) && \ - ((u32)module & ((vxge_hal_device_t *)hldev)->debug_module_mask))\ - vxge_trace_aux((vxge_hal_device_h)hldev, vpid, fmt); \ -} - -/* - * vxge_debug_driver - * @level: level of debug verbosity. - * @hldev: HAL Device - * @vpid: Vpath id - * @fmt: printf like format string - * - * Provides logging facilities for OS Dependent functions. Can be customized - * with debug levels. Input parameters, except level, are the same - * as posix printf. This function may be compiled out if DEBUG macro - * was never defined. - * See also: vxge_debug_level_e{}. - */ -static inline void vxge_debug_driver( - vxge_debug_level_e level, - vxge_hal_device_h hldev, - u32 vpid, - char *fmt, ...) -{ -#if (VXGE_COMPONENT_HAL_DRIVER & VXGE_DEBUG_MODULE_MASK) - if ((u32) level <= g_debug_level) - vxge_os_vaprintf((vxge_hal_device_h) hldev, vpid, fmt); -#endif -} - -/* - * vxge_debug_osdep - * @level: level of debug verbosity. - * @hldev: HAL Device - * @vpid: Vpath id - * @fmt: printf like format string - * - * Provides logging facilities for OS Dependent functions. Can be customized - * with debug levels. Input parameters, except level, are the same - * as posix printf. This function may be compiled out if DEBUG macro - * was never defined. - * See also: vxge_debug_level_e{}. - */ -static inline void vxge_debug_osdep( - vxge_debug_level_e level, - vxge_hal_device_h hldev, - u32 vpid, - char *fmt, ...) -{ -#if (VXGE_COMPONENT_OSDEP & VXGE_DEBUG_MODULE_MASK) - vxge_debug(VXGE_COMPONENT_OSDEP, level, hldev, vpid, fmt) -#endif -} - -/* - * vxge_debug_ll - * @level: level of debug verbosity. - * @hldev: HAL Device - * @vpid: Vpath id - * @fmt: printf like format string - * - * Provides logging facilities for LL driver. Can be customized - * with debug levels. Input parameters, except level, are the same - * as posix printf. This function may be compiled out if DEBUG macro - * was never defined. - * See also: vxge_debug_level_e{}. - */ -static inline void vxge_debug_ll( - vxge_debug_level_e level, - vxge_hal_device_h hldev, - u32 vpid, - char *fmt, ...) -{ -#if (VXGE_COMPONENT_LL & VXGE_DEBUG_MODULE_MASK) - vxge_debug(VXGE_COMPONENT_LL, level, hldev, vpid, fmt) -#endif -} - -/* - * vxge_debug_uld - * @component: The Component mask - * @level: level of debug verbosity. - * @hldev: HAL Device - * @vpid: Vpath id - * @fmt: printf like format string - * - * Provides logging facilities for LL driver. Can be customized - * with debug levels. Input parameters, except level, are the same - * as posix printf. This function may be compiled out if DEBUG macro - * was never defined. - * See also: vxge_debug_level_e{}. - */ -static inline void vxge_debug_uld( - u32 component, - vxge_debug_level_e level, - vxge_hal_device_h hldev, - u32 vpid, - char *fmt, ...) -{ -#if (VXGE_COMPONENT_ULD & VXGE_DEBUG_MODULE_MASK) - vxge_debug(component, level, hldev, vpid, fmt) -#endif -} - -#endif /* end of VXGE_DEBUG_INLINE_FUNCTIONS */ - -__EXTERN_END_DECLS - -#endif /* VXGE_OS_DEBUG_H */ Index: sys/dev/vxge/include/vxge-os-pal.h =================================================================== --- sys/dev/vxge/include/vxge-os-pal.h +++ sys/dev/vxge/include/vxge-os-pal.h @@ -1,82 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_OS_PAL_H -#define VXGE_OS_PAL_H - -__EXTERN_BEGIN_DECLS - -/* --------------------------- platform switch ------------------------------ */ - -/* platform specific header */ -#include -#define IN -#define OUT - -#if !defined(VXGE_OS_PLATFORM_64BIT) && !defined(VXGE_OS_PLATFORM_32BIT) -#error "either 32bit or 64bit switch must be defined!" -#endif - -#if !defined(VXGE_OS_HOST_BIG_ENDIAN) && !defined(VXGE_OS_HOST_LITTLE_ENDIAN) -#error "either little endian or big endian switch must be defined!" -#endif - -#if defined(VXGE_OS_PLATFORM_64BIT) -#define VXGE_OS_MEMORY_DEADCODE_PAT 0x5a5a5a5a5a5a5a5a -#else -#define VXGE_OS_MEMORY_DEADCODE_PAT 0x5a5a5a5a -#endif - -#if defined(VXGE_DEBUG_ASSERT) - -/* - * vxge_assert - * @test: C-condition to check - * @fmt: printf like format string - * - * This function implements traditional assert. By default assertions - * are enabled. It can be disabled by defining VXGE_DEBUG_ASSERT macro in - * compilation - * time. - */ -#define vxge_assert(test) { \ - if (!(test)) vxge_os_bug("bad cond: "#test" at %s:%d\n", \ - __FILE__, __LINE__); } -#else -#define vxge_assert(test) -#endif /* end of VXGE_DEBUG_ASSERT */ - -__EXTERN_END_DECLS - -#endif /* VXGE_OS_PAL_H */ Index: sys/dev/vxge/include/vxge-queue.h =================================================================== --- sys/dev/vxge/include/vxge-queue.h +++ sys/dev/vxge/include/vxge-queue.h @@ -1,314 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_QUEUE_H -#define VXGE_QUEUE_H - -__EXTERN_BEGIN_DECLS - -#define VXGE_QUEUE_BUF_SIZE 0x1000 -#define VXGE_DEFAULT_EVENT_MAX_DATA_SIZE 16 - -/* - * enum vxge_queue_status_e - Enumerates return codes of the vxge_queue - * manipulation APIs. - * @VXGE_QUEUE_IS_FULL: Queue is full, need to grow. - * @VXGE_QUEUE_IS_EMPTY: Queue is empty. - * @VXGE_QUEUE_OUT_OF_MEMORY: Out of memory. - * @VXGE_QUEUE_NOT_ENOUGH_SPACE: Exceeded specified event size, - * see vxge_queue_consume(). - * @VXGE_QUEUE_OK: Neither one of the codes listed above. - * - * Enumerates return codes of vxge_queue_consume() - * and vxge_queue_produce() APIs. - */ -typedef enum vxge_queue_status_e { - VXGE_QUEUE_OK = 0, - VXGE_QUEUE_IS_FULL = 1, - VXGE_QUEUE_IS_EMPTY = 2, - VXGE_QUEUE_OUT_OF_MEMORY = 3, - VXGE_QUEUE_NOT_ENOUGH_SPACE = 4 -} vxge_queue_status_e; - -typedef void *vxge_queue_h; - -/* - * struct vxge_queue_item_t - Queue item. - * @item: List item. Note that the queue is "built" on top of - * the bi-directional linked list. - * @event_type: Event type. Includes (but is not restricted to) - * one of the vxge_hal_event_e {} enumerated types. - * @data_size: Size of the enqueued user data. Note that vxge_queue_t - * items are allowed to have variable sizes. - * @is_critical: For critical events, e.g. ECC. - * @context: Opaque (void *) "context", for instance event producer object. - * - * Item of the vxge_queue_t {}. The queue is protected - * in terms of multi-threaded concurrent access. - * See also: vxge_queue_t {}. - */ -typedef struct vxge_queue_item_t { - vxge_list_t item; - vxge_hal_event_e event_type; - u32 data_size; - u32 is_critical; - void *context; -} vxge_queue_item_t; - -/* - * function vxge_queued_f - Item-enqueued callback. - * @data: Per-queue context independent of the event. E.g., device handle. - * @event_type: HAL or ULD-defined event type. Note that HAL own - * events are enumerated by vxge_hal_event_e {}. - * - * Per-queue optional callback. If not NULL, called by HAL each - * time an event gets added to the queue. - */ -typedef void (*vxge_queued_f) (void *data, u32 event_type); - -/* - * struct vxge_queue_t - Protected dynamic queue of variable-size items. - * @start_ptr: Points to the start of the queue. - * @end_ptr: Points to the end of the queue. - * @head_ptr: Points to the head of the queue. It gets changed during queue - * produce/consume operations. - * @tail_ptr: Points to the tail of the queue. It gets changed during queue - * produce/consume operations. - * @lock: Lock for queue operations(synchronization purpose). - * @pages_initial:Number of pages to be initially allocated at the time - * of queue creation. - * @pages_max: Max number of pages that can be allocated in the queue. - * @pages_current: Number of pages currently allocated - * @list_head: Points to the list of queue elements that are produced, but yet - * to be consumed. - * @hldev: HAL device handle - * @pdev: PCI device handle - * @irqh: PCI device IRQ handle. - * @queued_func: Optional callback function to be called each time a new - * item is added to the queue. - * @queued_data: Arguments to the callback function. - * @has_critical_event: Non-zero, if the queue contains a critical event, - * see vxge_hal_event_e {}. - * Protected dynamically growing queue. The queue is used to support multiple - * producer/consumer type scenarios. The queue is a strict FIFO: first come - * first served. - * Queue users may "produce" (see vxge_queue_produce()) and "consume" - * (see vxge_queue_consume()) items (a.k.a. events) variable sizes. - * See also: vxge_queue_item_t {}. - */ -typedef struct vxge_queue_t { - void *start_ptr; - void *end_ptr; - void *head_ptr; - void *tail_ptr; - spinlock_t lock; - u32 pages_initial; - u32 pages_max; - u32 pages_current; - vxge_list_t list_head; - vxge_hal_device_h hldev; - pci_dev_h pdev; - pci_irq_h irqh; - vxge_queued_f queued_func; - void *queued_data; - u32 has_critical_event; -} vxge_queue_t; - -/* ========================== PUBLIC API ================================= */ - -/* - * vxge_queue_create - Create protected first-in-first-out queue. - * @devh: HAL device handle. - * @pages_initial: Number of pages to be initially allocated at the - * time of queue creation. - * @pages_max: Max number of pages that can be allocated in the queue. - * @queued_func: Optional callback function to be called each time a new item is - * added to the queue. - * @queued_data: Argument to the callback function. - * - * Create protected (fifo) queue. - * - * Returns: Pointer to vxge_queue_t structure, - * NULL - on failure. - * - * See also: vxge_queue_item_t {}, vxge_queue_destroy(). - */ -vxge_queue_h -vxge_queue_create(vxge_hal_device_h devh, - u32 pages_initial, - u32 pages_max, - vxge_queued_f queued_func, - void *queued_data); - -/* - * vxge_queue_destroy - Destroy vxge_queue_t object. - * @queueh: Queue handle. - * - * Destroy the specified vxge_queue_t object. - * - * See also: vxge_queue_item_t {}, vxge_queue_create(). - */ -void -vxge_queue_destroy(vxge_queue_h queueh); - -/* - * vxge_queue_item_data - Get item's data. - * @item: Queue item. - * - * Returns: item data(variable size). Note that vxge_queue_t - * contains items comprized of a fixed vxge_queue_item_t "header" - * and a variable size data. This function returns the variable - * user-defined portion of the queue item. - */ -void * -vxge_queue_item_data(vxge_queue_item_t *item); - -/* - * vxge_queue_produce - Enqueue an item (see vxge_queue_item_t {}) - * into the specified queue. - * @queueh: Queue handle. - * @event_type: Event type. One of the enumerated event types - * that both consumer and producer "understand". - * For an example, please refer to vxge_hal_event_e. - * @context: Opaque (void *) "context", for instance event producer object. - * @is_critical: For critical event, e.g. ECC. - * @data_size: Size of the @data. - * @data: User data of variable @data_size that is _copied_ into - * the new queue item (see vxge_queue_item_t {}). Upon return - * from the call the @data memory can be re-used or released. - * - * Enqueue a new item. - * - * Returns: VXGE_QUEUE_OK - success. - * VXGE_QUEUE_IS_FULL - Queue is full. - * VXGE_QUEUE_OUT_OF_MEMORY - Memory allocation failed. - * - * See also: vxge_queue_item_t {}, vxge_queue_consume(). - */ -vxge_queue_status_e -vxge_queue_produce(vxge_queue_h queueh, - u32 event_type, - void *context, - u32 is_critical, - const u32 data_size, - void *data); - -/* - * vxge_queue_produce_context - Enqueue context. - * @queueh: Queue handle. - * @event_type: Event type. One of the enumerated event types - * that both consumer and producer "understand". - * For an example, please refer to vxge_hal_event_e. - * @context: Opaque (void *) "context", for instance event producer object. - * - * Enqueue Context. - * - * Returns: VXGE_QUEUE_OK - success. - * VXGE_QUEUE_IS_EMPTY - Queue is empty. - * VXGE_QUEUE_NOT_ENOUGH_SPACE - Requested item size(@data_max_size) - * is too small to accommodate an item from the queue. - * - * See also: vxge_queue_item_t {}, vxge_queue_produce(). - */ -static inline vxge_queue_status_e -/* LINTED */ -vxge_queue_produce_context(vxge_queue_h queueh, - u32 event_type, - void *context) -{ - return (vxge_queue_produce(queueh, event_type, context, 0, 0, 0)); -} - -/* - * vxge_queue_consume - Dequeue an item from the specified queue. - * @queueh: Queue handle. - * @data_max_size: Maximum expected size of the item. - * @item: Memory area into which the item is _copied_ upon return - * from the function. - * - * Dequeue an item from the queue. The caller is required to provide - * enough space for the item. - * - * Returns: VXGE_QUEUE_OK - success. - * VXGE_QUEUE_IS_EMPTY - Queue is empty. - * VXGE_QUEUE_NOT_ENOUGH_SPACE - Requested item size(@data_max_size) - * is too small to accommodate an item from the queue. - * - * See also: vxge_queue_item_t {}, vxge_queue_produce(). - */ -vxge_queue_status_e -vxge_queue_consume(vxge_queue_h queueh, - u32 data_max_size, - vxge_queue_item_t *item); - -/* - * vxge_queue_flush - Flush, or empty, the queue. - * @queueh: Queue handle. - * - * Flush the queue, i.e. make it empty by consuming all events - * without invoking the event processing logic (callbacks, etc.) - */ -void -vxge_queue_flush(vxge_queue_h queueh); - -/* - * vxge_io_queue_grow - Dynamically increases the size of the queue. - * @queueh: Queue handle. - * - * This function is called in the case of no slot avaialble in the queue - * to accommodate the newly received event. - * Note that queue cannot grow beyond the max size specified for the - * queue. - * - * Returns VXGE_QUEUE_OK: On success. - * VXGE_QUEUE_OUT_OF_MEMORY : No memory is available. - */ -vxge_queue_status_e -vxge_io_queue_grow(vxge_queue_h qh); - -/* - * vxge_queue_get_reset_critical - Check for critical events in the queue, - * @queueh: Queue handle. - * - * Check for critical event(s) in the queue, and reset the - * "has-critical-event" flag upon return. - * Returns: 1 - if the queue contains atleast one critical event. - * 0 - If there are no critical events in the queue. - */ -u32 -vxge_queue_get_reset_critical(vxge_queue_h queueh); - -__EXTERN_END_DECLS - -#endif /* VXGE_QUEUE_H */ Index: sys/dev/vxge/include/vxgehal-config.h =================================================================== --- sys/dev/vxge/include/vxgehal-config.h +++ sys/dev/vxge/include/vxgehal-config.h @@ -1,2566 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_CONFIG_H -#define VXGE_HAL_CONFIG_H - -__EXTERN_BEGIN_DECLS - -#define VXGE_HAL_USE_FLASH_DEFAULT VXGE_HAL_DEFAULT_32 - -#define VXGE_HAL_MAX_INTR_PER_VP 4 - -#define VXGE_HAL_VPATH_MSIX_MAX 4 - -#define VXGE_HAL_VPATH_INTR_TX 0 - -#define VXGE_HAL_VPATH_INTR_RX 1 - -#define VXGE_HAL_VPATH_INTR_EINTA 2 - -#define VXGE_HAL_VPATH_INTR_BMAP 3 - -#define WAIT_FACTOR 1 -/* - * struct vxge_hal_driver_config_t - HAL driver object configuration. - * - * @level: Debug Level. See vxge_debug_level_e {} - * - * Currently this structure contains just a few basic values. - */ -typedef struct vxge_hal_driver_config_t { - vxge_debug_level_e level; -} vxge_hal_driver_config_t; - -/* - * struct vxge_hal_wire_port_config_t - Wire Port configuration (Physical ports) - * @port_id: Port number - * @media: Transponder type. - * @mtu: mtu size used on this port. - * @autoneg_mode: The device supports several mechanisms to auto-negotiate the - * port data rate. The Fixed mode essentially means no - * auto-negotiation and the data rate is determined by the RATE - * field of this register. The MDIO-based mode determines the data - * rate by reading MDIO registers in the external PHY chip. The - * Backplane Ethernet mode using parallel detect and/or - * DME-signaled exchange of page information with the PHY chip in - * order to figure out the proper rate. - * 00 - Fixed - * 01 - MDIO-based - * 10 - Backplane Ethernet - * 11 - Reserved - * @autoneg_rate: When MODE is set to Fixed, then this field determines the data - * rate of the port. - * 0 - 1G - * 1 - 10G - * @fixed_use_fsm: When MODE is set to Fixed, then this field determines whether - * a processor (i.e. F/W or host driver) or hardware-based state - * machine is used to run the auto-negotiation. - * 0 - Use processor. Either on-chip F/W or host-based driver used. - * 1 - Use H/W state machine - * @antp_use_fsm: When MODE is set to ANTP (Auto-Negotiation for Twisted Pair), - * this field determines whether a processor (F/W or host driver) - * or hardware-based state machine is used to talk to the PHY chip - * via the MDIO interface. - * 0 - Use processor. Either on-chip F/W or host-based driver used. - * 1 - Use H/W state machine - * @anbe_use_fsm: When MODE is set to ANBE-based, then this field determines - * whether a processor (i.e. F/W or host driver) or hardware-based - * state machine is used to talk to the Backplane Ethernet logic - * inside the device - * 0 - Use processor. Either on-chip F/W or host-based driver used. - * 1 - Use H/W state machine - * @link_stability_period: Timeout for the link stability - * @port_stability_period: Timeout for the port stability - * @tmac_en: TMAC enable. 0 - Disable; 1 - Enable - * @rmac_en: RMAC enable. 0 - Disable; 1 - Enable - * @tmac_pad: Determines whether padding is appended to transmitted frames. - * 0 - No padding appended - * 1 - Pad to 64 bytes (not including preamble/SFD) - * @tmac_pad_byte: The byte that is used to pad - * @tmac_util_period: The sampling period over which the transmit utilization - * is calculated. - * @rmac_strip_fcs: Determines whether FCS of received frames is removed by the - * MAC or sent to the host. - * 0 - Send FCS to host. - * 1 - FCS removed by MAC. - * @rmac_prom_en: Enable/Disable promiscuous mode. In promiscuous mode all - * received frames are passed to the host. PROM_EN overrules the - * configuration determined by the UCAST_ALL_ADDR_EN, - * MCAST_ALL_ADDR_EN and ALL_VID_EN fields of RXMAC_VCFG, as well - * as the configurable discard fields in RMAC_ERR_CFG_PORTn. - * Note: PROM_EN does not overrule DISCARD_PFRM (i.e. discard of - * pause frames by receive MAC is controlled solely by - * DISCARD_PFRM). - * 0 - Disable - * 1 - Enable - * @rmac_discard_pfrm: Determines whether received pause frames are discarded at - * the receive MAC or passed to the host. - * Note: Other MAC control frames are always passed to the host. - * 0 - Send to host. - * 1 - Pause frames discarded by MAC. - * @rmac_util_period: The sampling period over which the receive utilization - * is calculated. - * @rmac_strip_pad: Determines whether padding of received frames is removed by - * the MAC or sent to the host. - * @rmac_bcast_en: Enable frames containing broadcast address to be - * passed to the host. - * @rmac_pause_gen_en: Received pause generation enable. - * @rmac_pause_rcv_en: Receive pause enable. - * @rmac_pause_time: The value to be inserted in outgoing pause frames. - * Has units of pause quanta (one pause quanta = 512 bit times). - * @limiter_en: Enables logic that limits the contribution that any one receive - * queue can have on the transmission of pause frames. This avoids - * a situation where the adapter will permanently send pause frames - * due to a receive VPATH that is either undergoing a long reset or - * is in a dead state. - * 0 - Don't limit the contribution of any queue. If any queue's - * fill level sits above the high threshold, then a pause frame - * is sent. - * 1 - Place a cap on the number of pause frames that are sent - * because any one queue has crossed its high threshold. - * See MAX_LIMIT for more details. - * @max_limit: Contains the value that is loaded into the per-queue limiting - * counters that exist in the flow control logic. Essentially, - * this represents the maximum number of pause frames that are sent - * due to any one particular queue having crossed its high - * threshold. Each counter is set to this max limit the first time - * the corresponding queue's high threshold is crossed. The counter - * decrements each time the queue remains above the high threshold - * and the adapter requests pause frame transmission. Once the - * counter expires that queue no longer contributes to pause frame - * transmission requests. The queue's fill level must drop below - * the low pause threshold before it is once again allowed to - * contribute. Note: This field is only used when LIMITER_EN is set - * to 1. - * - * Wire Port Configuration - */ -typedef struct vxge_hal_wire_port_config_t { - - u32 port_id; -#define VXGE_HAL_WIRE_PORT_PORT0 0 -#define VXGE_HAL_WIRE_PORT_PORT1 1 -#define VXGE_HAL_WIRE_PORT_MAX_PORTS VXGE_HAL_MAC_MAX_WIRE_PORTS - - u32 media; -#define VXGE_HAL_WIRE_PORT_MIN_MEDIA 0 -#define VXGE_HAL_WIRE_PORT_MEDIA_SR 0 -#define VXGE_HAL_WIRE_PORT_MEDIA_SW 1 -#define VXGE_HAL_WIRE_PORT_MEDIA_LR 2 -#define VXGE_HAL_WIRE_PORT_MEDIA_LW 3 -#define VXGE_HAL_WIRE_PORT_MEDIA_ER 4 -#define VXGE_HAL_WIRE_PORT_MEDIA_EW 5 -#define VXGE_HAL_WIRE_PORT_MAX_MEDIA 5 -#define VXGE_HAL_WIRE_PORT_MEDIA_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 mtu; -#define VXGE_HAL_WIRE_PORT_MIN_INITIAL_MTU VXGE_HAL_MIN_MTU -#define VXGE_HAL_WIRE_PORT_MAX_INITIAL_MTU VXGE_HAL_MAX_MTU -#define VXGE_HAL_WIRE_PORT_DEF_INITIAL_MTU VXGE_HAL_USE_FLASH_DEFAULT - - u32 autoneg_mode; -#define VXGE_HAL_WIRE_PORT_AUTONEG_MODE_FIXED 0 -#define VXGE_HAL_WIRE_PORT_AUTONEG_MODE_ANTP 1 -#define VXGE_HAL_WIRE_PORT_AUTONEG_MODE_ANBE 2 -#define VXGE_HAL_WIRE_PORT_AUTONEG_MODE_RESERVED 3 -#define VXGE_HAL_WIRE_PORT_AUTONEG_MODE_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 autoneg_rate; -#define VXGE_HAL_WIRE_PORT_AUTONEG_RATE_1G 0 -#define VXGE_HAL_WIRE_PORT_AUTONEG_RATE_10G 1 -#define VXGE_HAL_WIRE_PORT_AUTONEG_RATE_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 fixed_use_fsm; -#define VXGE_HAL_WIRE_PORT_FIXED_USE_FSM_PROCESSOR 0 -#define VXGE_HAL_WIRE_PORT_FIXED_USE_FSM_HW 1 -#define VXGE_HAL_WIRE_PORT_FIXED_USE_FSM_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 antp_use_fsm; -#define VXGE_HAL_WIRE_PORT_ANTP_USE_FSM_PROCESSOR 0 -#define VXGE_HAL_WIRE_PORT_ANTP_USE_FSM_HW 1 -#define VXGE_HAL_WIRE_PORT_ANTP_USE_FSM_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 anbe_use_fsm; -#define VXGE_HAL_WIRE_PORT_ANBE_USE_FSM_PROCESSOR 0 -#define VXGE_HAL_WIRE_PORT_ANBE_USE_FSM_HW 1 -#define VXGE_HAL_WIRE_PORT_ANBE_USE_FSM_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 link_stability_period; -#define VXGE_HAL_WIRE_PORT_MIN_LINK_STABILITY_PERIOD 0x0 /* 0s */ -#define VXGE_HAL_WIRE_PORT_MAX_LINK_STABILITY_PERIOD 0xF /* 2s */ -#define VXGE_HAL_WIRE_PORT_DEF_LINK_STABILITY_PERIOD \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 port_stability_period; -#define VXGE_HAL_WIRE_PORT_MIN_PORT_STABILITY_PERIOD 0x0 /* 0s */ -#define VXGE_HAL_WIRE_PORT_MAX_PORT_STABILITY_PERIOD 0xF /* 2s */ -#define VXGE_HAL_WIRE_PORT_DEF_PORT_STABILITY_PERIOD \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_en; -#define VXGE_HAL_WIRE_PORT_TMAC_ENABLE 1 -#define VXGE_HAL_WIRE_PORT_TMAC_DISABLE 0 -#define VXGE_HAL_WIRE_PORT_TMAC_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_en; -#define VXGE_HAL_WIRE_PORT_RMAC_ENABLE 1 -#define VXGE_HAL_WIRE_PORT_RMAC_DISABLE 0 -#define VXGE_HAL_WIRE_PORT_RMAC_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_pad; -#define VXGE_HAL_WIRE_PORT_TMAC_NO_PAD 0 -#define VXGE_HAL_WIRE_PORT_TMAC_64B_PAD 1 -#define VXGE_HAL_WIRE_PORT_TMAC_PAD_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_pad_byte; -#define VXGE_HAL_WIRE_PORT_MIN_TMAC_PAD_BYTE 0 -#define VXGE_HAL_WIRE_PORT_MAX_TMAC_PAD_BYTE 255 -#define VXGE_HAL_WIRE_PORT_DEF_TMAC_PAD_BYTE VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_util_period; -#define VXGE_HAL_WIRE_PORT_MIN_TMAC_UTIL_PERIOD 0 -#define VXGE_HAL_WIRE_PORT_MAX_TMAC_UTIL_PERIOD 15 -#define VXGE_HAL_WIRE_PORT_DEF_TMAC_UTIL_PERIOD VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_strip_fcs; -#define VXGE_HAL_WIRE_PORT_RMAC_STRIP_FCS 1 -#define VXGE_HAL_WIRE_PORT_RMAC_SEND_FCS_TO_HOST 0 -#define VXGE_HAL_WIRE_PORT_RMAC_STRIP_FCS_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_prom_en; -#define VXGE_HAL_WIRE_PORT_RMAC_PROM_EN_ENABLE 1 -#define VXGE_HAL_WIRE_PORT_RMAC_PROM_EN_DISABLE 0 -#define VXGE_HAL_WIRE_PORT_RMAC_PROM_EN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_discard_pfrm; -#define VXGE_HAL_WIRE_PORT_RMAC_DISCARD_PFRM 1 -#define VXGE_HAL_WIRE_PORT_RMAC_SEND_PFRM_TO_HOST 0 -#define VXGE_HAL_WIRE_PORT_RMAC_DISCARD_PFRM_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_util_period; -#define VXGE_HAL_WIRE_PORT_MIN_RMAC_UTIL_PERIOD 0 -#define VXGE_HAL_WIRE_PORT_MAX_RMAC_UTIL_PERIOD 15 -#define VXGE_HAL_WIRE_PORT_DEF_RMAC_UTIL_PERIOD VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_pause_gen_en; -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_GEN_EN_ENABLE 1 -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_GEN_EN_DISABLE 0 -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_GEN_EN_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_pause_rcv_en; -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_RCV_EN_ENABLE 1 -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_RCV_EN_DISABLE 0 -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_RCV_EN_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_pause_time; -#define VXGE_HAL_WIRE_PORT_MIN_RMAC_HIGH_PTIME 16 -#define VXGE_HAL_WIRE_PORT_MAX_RMAC_HIGH_PTIME 65535 -#define VXGE_HAL_WIRE_PORT_DEF_RMAC_HIGH_PTIME VXGE_HAL_USE_FLASH_DEFAULT - - u32 limiter_en; -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_LIMITER_ENABLE 1 -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_LIMITER_DISABLE 0 -#define VXGE_HAL_WIRE_PORT_RMAC_PAUSE_LIMITER_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 max_limit; -#define VXGE_HAL_WIRE_PORT_MIN_RMAC_MAX_LIMIT 0 -#define VXGE_HAL_WIRE_PORT_MAX_RMAC_MAX_LIMIT 255 -#define VXGE_HAL_WIRE_PORT_DEF_RMAC_MAX_LIMIT VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_wire_port_config_t; - -/* - * struct vxge_hal_switch_port_config_t - Switch Port configuration(vm-vm port) - * @mtu: mtu size used on this port. - * @tmac_en: TMAC enable. 0 - Disable; 1 - Enable - * @rmac_en: RMAC enable. 0 - Disable; 1 - Enable - * @tmac_pad: Determines whether padding is appended to transmitted frames. - * 0 - No padding appended - * 1 - Pad to 64 bytes (not including preamble/SFD) - * @tmac_pad_byte: The byte that is used to pad - * @tmac_util_period: The sampling period over which the transmit utilization - * is calculated. - * @rmac_strip_fcs: Determines whether FCS of received frames is removed by the - * MAC or sent to the host. - * 0 - Send FCS to host. - * 1 - FCS removed by MAC. - * @rmac_prom_en: Enable/Disable promiscuous mode. In promiscuous mode all - * received frames are passed to the host. PROM_EN overrules the - * configuration determined by the UCAST_ALL_ADDR_EN, - * MCAST_ALL_ADDR_EN and ALL_VID_EN fields of RXMAC_VCFG, as well - * as the configurable discard fields in RMAC_ERR_CFG_PORTn. - * Note: PROM_EN does not overrule DISCARD_PFRM (i.e. discard of - * pause frames by receive MAC is controlled solely by - * DISCARD_PFRM). - * 0 - Disable - * 1 - Enable - * @rmac_discard_pfrm: Determines whether received pause frames are discarded at - * the receive MAC or passed to the host. - * Note: Other MAC control frames are always passed to the host. - * 0 - Send to host. - * 1 - Pause frames discarded by MAC. - * @rmac_util_period: The sampling period over which the receive utilization - * is calculated. - * @rmac_strip_pad: Determines whether padding of received frames is removed by - * the MAC or sent to the host. - * @rmac_bcast_en: Enable frames containing broadcast address to be - * passed to the host. - * @rmac_pause_gen_en: Received pause generation enable. - * @rmac_pause_rcv_en: Receive pause enable. - * @rmac_pause_time: The value to be inserted in outgoing pause frames. - * Has units of pause quanta (one pause quanta = 512 bit times). - * @limiter_en: Enables logic that limits the contribution that any one receive - * queue can have on the transmission of pause frames. This avoids - * a situation where the adapter will permanently send pause frames - * due to a receive VPATH that is either undergoing a long reset or - * is in a dead state. - * 0 - Don't limit the contribution of any queue. If any queue's - * fill level sits above the high threshold, then a pause frame - * is sent. - * 1 - Place a cap on the number of pause frames that are sent - * because any one queue has crossed its high threshold. - * See MAX_LIMIT for more details. - * @max_limit: Contains the value that is loaded into the per-queue limiting - * counters that exist in the flow control logic. Essentially, - * this represents the maximum number of pause frames that are sent - * due to any one particular queue having crossed its high - * threshold. Each counter is set to this max limit the first time - * the corresponding queue's high threshold is crossed. The counter - * decrements each time the queue remains above the high threshold - * and the adapter requests pause frame transmission. Once the - * counter expires that queue no longer contributes to pause frame - * transmission requests. The queue's fill level must drop below - * the low pause threshold before it is once again allowed to - * contribute. Note: This field is only used when LIMITER_EN is set - * to 1. - * - * Switch Port Configuration - */ -typedef struct vxge_hal_switch_port_config_t { - - u32 mtu; -#define VXGE_HAL_SWITCH_PORT_MIN_INITIAL_MTU VXGE_HAL_MIN_MTU -#define VXGE_HAL_SWITCH_PORT_MAX_INITIAL_MTU VXGE_HAL_MAX_MTU -#define VXGE_HAL_SWITCH_PORT_DEF_INITIAL_MTU VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_en; -#define VXGE_HAL_SWITCH_PORT_TMAC_ENABLE 1 -#define VXGE_HAL_SWITCH_PORT_TMAC_DISABLE 0 -#define VXGE_HAL_SWITCH_PORT_TMAC_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_en; -#define VXGE_HAL_SWITCH_PORT_RMAC_ENABLE 1 -#define VXGE_HAL_SWITCH_PORT_RMAC_DISABLE 0 -#define VXGE_HAL_SWITCH_PORT_RMAC_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_pad; -#define VXGE_HAL_SWITCH_PORT_TMAC_NO_PAD 0 -#define VXGE_HAL_SWITCH_PORT_TMAC_64B_PAD 1 -#define VXGE_HAL_SWITCH_PORT_TMAC_PAD_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_pad_byte; -#define VXGE_HAL_SWITCH_PORT_MIN_TMAC_PAD_BYTE 0 -#define VXGE_HAL_SWITCH_PORT_MAX_TMAC_PAD_BYTE 255 -#define VXGE_HAL_SWITCH_PORT_DEF_TMAC_PAD_BYTE VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_util_period; -#define VXGE_HAL_SWITCH_PORT_MIN_TMAC_UTIL_PERIOD 0 -#define VXGE_HAL_SWITCH_PORT_MAX_TMAC_UTIL_PERIOD 15 -#define VXGE_HAL_SWITCH_PORT_DEF_TMAC_UTIL_PERIOD VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_strip_fcs; -#define VXGE_HAL_SWITCH_PORT_RMAC_STRIP_FCS 1 -#define VXGE_HAL_SWITCH_PORT_RMAC_SEND_FCS_TO_HOST 0 -#define VXGE_HAL_SWITCH_PORT_RMAC_STRIP_FCS_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_prom_en; -#define VXGE_HAL_SWITCH_PORT_RMAC_PROM_EN_ENABLE 1 -#define VXGE_HAL_SWITCH_PORT_RMAC_PROM_EN_DISABLE 0 -#define VXGE_HAL_SWITCH_PORT_RMAC_PROM_EN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_discard_pfrm; -#define VXGE_HAL_SWITCH_PORT_RMAC_DISCARD_PFRM 1 -#define VXGE_HAL_SWITCH_PORT_RMAC_SEND_PFRM_TO_HOST 0 -#define VXGE_HAL_SWITCH_PORT_RMAC_DISCARD_PFRM_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_util_period; -#define VXGE_HAL_SWITCH_PORT_MIN_RMAC_UTIL_PERIOD 0 -#define VXGE_HAL_SWITCH_PORT_MAX_RMAC_UTIL_PERIOD 15 -#define VXGE_HAL_SWITCH_PORT_DEF_RMAC_UTIL_PERIOD VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_pause_gen_en; -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_GEN_EN_ENABLE 1 -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_GEN_EN_DISABLE 0 -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_GEN_EN_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_pause_rcv_en; -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_RCV_EN_ENABLE 1 -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_RCV_EN_DISABLE 0 -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_RCV_EN_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rmac_pause_time; -#define VXGE_HAL_SWITCH_PORT_MIN_RMAC_HIGH_PTIME 16 -#define VXGE_HAL_SWITCH_PORT_MAX_RMAC_HIGH_PTIME 65535 -#define VXGE_HAL_SWITCH_PORT_DEF_RMAC_HIGH_PTIME VXGE_HAL_USE_FLASH_DEFAULT - - u32 limiter_en; -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_LIMITER_ENABLE 1 -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_LIMITER_DISABLE 0 -#define VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_LIMITER_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 max_limit; -#define VXGE_HAL_SWITCH_PORT_MIN_RMAC_MAX_LIMIT 0 -#define VXGE_HAL_SWITCH_PORT_MAX_RMAC_MAX_LIMIT 255 -#define VXGE_HAL_SWITCH_PORT_DEF_RMAC_MAX_LIMIT VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_switch_port_config_t; - -/* - * struct vxge_hal_mac_config_t - MAC configuration (Physical ports). - * @wire_port_config: Wire Port configuration - * @switch_port_config: Switch Port configuration - * @network_stability_period: The wait period for network stability - * @mc_pause_threshold: Contains thresholds for pause frame generation - * for queues 0 through 15. The threshold value indicates portion - * of the individual receive buffer queue size. Thresholds have a - * range of 0 to 255, allowing 256 possible watermarks in a queue. - * @tmac_perma_stop_en: Controls TMAC reaction to double ECC errors on its - * internal SRAMs. - * 0 - Disable TMAC permanent stop - * 1 - Enable TMAC permanent stop whenever double ECC errors are - * detected on the internal transmit SRAMs. - * @tmac_tx_switch_dis: Allows the user to disable the switching of transmit - * frames back to the receive path. - * 0 - Tx frames are switched based on the result of the DA lookup - * 1 - The DA lookup result is ignored and all traffic is sent to - * the wire. - * Note that this register field does not impact the multicast - * replication on the receive side. - * @tmac_lossy_switch_en: Controls the behaviour of the internal Tx to Rx switch - * in the event of back-pressure on the receive path due to - * priority given to traffic arriving off the wire or simply due to - * a full receive external buffer. br> - * 0 - No frames are dropped on the switch path. Instead, in the - * event of back-pressure, the transmit path is backed up. - * 1 - Whenever back-pressure is present and the next frame is - * bound for the switch path, then the frame is dropped. - * If it is also destined for the transmit wire, it is still - * sent there. - * Note: HIP traffic that is bound for the switch path is never - * dropped - the transmit path is forced to backup. - * @tmac_lossy_wire_en: Controls the behaviour of the TMAC when the wire path - * is unavailable. This occurs when the target wire port is down. - * 0 - No frames are dropped on the wire path. Instead,in the event - * of port failure, the transmit path is backed up. - * 1 - Whenever a wire port is down and the next frame is bound for - * that port, then the frame is dropped. If it is also destined - * for the switch path, it is still sent there. - * @tmac_bcast_to_wire_dis: Suppresses the transmission of broadcast frames to - * the wire. - * 0 - Transmit broadcast frames are sent out the wire and also - * sent along the switch path. - * 1 - Transmit broadcast frame are only sent along the switch path - * @tmac_bcast_to_switch_dis: Suppresses the transmission of broadcast frames - * along the switch path. - * 0 - Transmit broadcast frames are sent out the wire and also - * sent along the switch path. - * 1 - Transmit broadcast frame are only sent out the wire. - * @tmac_host_append_fcs_en: Suppresses the H/W from appending the FCS to the - * end of transmitted frames. The host is responsible for tacking - * on the 4-byte FCS at the end of the frame. - * 0 - Normal operation. H/W appends FCS to all transmitted frames. - * 1 - Host appends FCS to frame. Transmit MAC passes it through - * @tpa_support_snap_ab_n: When set to 0, the TPA will accept LLC-SAP values of - * 0xAB as valid. If set to 1, the TPA rejects LLC-SAP values of - * 0xAB (only 0xAA is accepted). - * @tpa_ecc_enable_n: Allows ECC protection of TPA internal memories to be - * disabled without having to disable ECC protection for entire - * chip. - * 0 - Disable TPA ECC protection - * 1 - Enable TPA ECC protection. - * Note: If chip-wide ECC protection is disabled, then so is TPA - * ECC protection. - * @rpa_ignore_frame_err: Ignore Frame Error. The RPA may detect frame integrity - * errors as it processes each received frame. If this bit is set - * to '0', the RPA will tag such frames as "errored" in the RxDMA - * descriptor. If the bit is set to '1', the frame will not be - * tagged as "errored". - * Detectable errors include: - * 1) early end-of-frame error, which occurs when the frame ends - * before the number of bytes predicted by the IP "total length" - * field have been received; - * 2) IP version mismatches; - * 3) IPv6 packets that include routing headers that are not type 0 - * 4) Frames which contain IP packets but have an illegal SNAP-OUI - * or LLC-CTRL fields, unless IGNORE_SNAP_OUI or IGNORE_LLC_CTRL - * are set - * @rpa_support_snap_ab_n: When set to 0, the RPA will accept LLC-SAP values of - * 0xAB as valid. If set to 1, the RPA rejects LLC-SAP values of - * 0xAB (only 0xAA is accepted). - * @rpa_search_for_hao: Enable searching for the Home Address Option.If this bit - * is set, the RPA will parse through Destination Address Headers - * searching for the H.A.O. If the bit is not set, the RPA will not - * perform a search and these headers will effectively be ignored. - * @rpa_support_ipv6_mobile_hdrs: Enable/disable support for the mobile-ipv6 - * Home Address Option (HAO) and Route 2 Routing Headers,as defined - * in RFC 3775. - * 0 - Do not support mobile IPv6. - * 1 - Support mobile IPv6 - * @rpa_ipv6_stop_searching: Enable/disable unknown IPv6 extension header - * parsing. If the adapter discovers an unknown extension header, - * it can either continue to search for a L4 protocol, or stop - * searching. - * 0 - do not stop searching for L4 when an unknown header is - * encountered. - * 1 - stop searching when an unknown header is encountered. - * @rpa_no_ps_if_unknown: Enable/disable pseudo-header inclusion if an unknown - * IPv6 extension header is encountered. - * If this bit is set to '1' and an unknown routing header or IPv6 - * extension header is discovered, the L4 checksum will not include - * a pseudo-header. - * If it is set to '0', the adapter will use the addresses found - * in the IPv6 base header, and/or the addresses found in a Routing - * Header or Home Address Option (if it is enabled). - * This applies to frames not on LRO sessions only. For frames on - * LRO sessions, the pseudo-header is always included in the L4 - * checksum - * @rpa_search_for_etype: For receive traffic steering purposes, indicates - * whether the RPA should parse through the LLC header to find the - * Ethertype of the packet. - * 0 - RPA presents the 802.3 length/type field, which for an - * LLC-encoded frame is interpreted as a length. - * 1 - RPA parses the LLC-header and presents the Ethertype to the - * traffic steering logic. When SEARCH_FOR_ETYPE is set and a jumbo - * snap frame is received then GLOBAL_PA_CFG.EN_JS determines the - * value that is presented to the traffic steering logic. If EN_JS - * is set, then the RPA parses inside the header to find the - * Ethertype, while if EN_JS is not set the RPA presents 0x8870. - * @rpa_repl_l4_comp_csum: Controls whether or not to complement the L4 checksum - * after the final calculation. - * 0: Do not complement the L4 checksum. - * 1: Complement the L4 checksum. - * For the behaviour on non-replicated frames see FAU_RPA_VCFG. - * @rpa_repl_l3_incl_cf: Controls whether or not to include the L3 checksum - * field in the checksum calculation. - * 0: Do not include the L3 checksum field in checksum calculation - * 1: Include the L4 checksum field in the checksum calculation. - * For the behaviour on non-replicated frames see FAU_RPA_VCFG. - * @rpa_repl_l3_comp_csum: Controls whether or not to complement the L3 checksum - * after the final calculation. - * 0: Do not complement the L3 checksum. - * 1: Complement the L3 checksum. - * For the behaviour on non-replicated frames see FAU_RPA_VCFG. - * @rpa_repl_ipv4_tcp_incl_ph: For received frames that are replicated at the - * internal L2 switch, determines whether the pseudo-header is - * included in the calculation of the L4 checksum that is passed to - * the host. - * @rpa_repl_ipv6_tcp_incl_ph: For received frames that are replicated at the - * internal L2 switch, determines whether the pseudo-header is - * included in the calculation of the L4 checksum that is passed to - * the host. - * @rpa_repl_ipv4_udp_incl_ph: For received frames that are replicated at the - * internal L2 switch, determines whether the pseudo-header is - * included in the calculation of the L4 checksum that is passed to - * the host. - * @rpa_repl_ipv6_udp_incl_ph: For received frames that are replicated at the - * internal L2 switch, determines whether the pseudo-header is - * included in the calculation of the L4 checksum that is passed to - * the host. - * @rpa_repl_l4_incl_cf: For received frames that are replicated at the internal - * L2 switch, determines whether the checksum field (CF) of the - * received frame is included in the calculation of the L4 - * checksum that is passed to the host. - * @rpa_repl_strip_vlan_tag: Strip VLAN Tag enable/disable. Instructs the device - * to remove the VLAN tag from all received tagged frames that - * are replicated at the internal L2 switch (i.e. multicast frames - * that are placed in the replication queue). - * 0 - Do not strip the VLAN tag. - * 1 - Strip the VLAN tag. - * Regardless of this setting, VLAN tags are always placed into - * the RxDMA descriptor. - * - * MAC configuration. This includes various aspects of configuration, including: - * - Pause frame threshold; - * - sampling rate to calculate link utilization; - * - enabling/disabling broadcasts. - * - * See X3100 ER User Guide for more details. - * Note: Valid (min, max) range for each attribute is specified in the body of - * the vxge_hal_mac_config_t {} structure. Please refer to the - * corresponding include file. - */ -typedef struct vxge_hal_mac_config_t { - - vxge_hal_wire_port_config_t wire_port_config[ \ - VXGE_HAL_MAC_MAX_WIRE_PORTS]; - vxge_hal_switch_port_config_t switch_port_config; - - u32 network_stability_period; -#define VXGE_HAL_MAC_MIN_NETWORK_STABILITY_PERIOD 0x0 /* 0s */ -#define VXGE_HAL_MAC_MAX_NETWORK_STABILITY_PERIOD 0x7 /* 2s */ -#define VXGE_HAL_MAC_DEF_NETWORK_STABILITY_PERIOD VXGE_HAL_USE_FLASH_DEFAULT - - u32 mc_pause_threshold[16]; -#define VXGE_HAL_MAC_MIN_MC_PAUSE_THRESHOLD 0 -#define VXGE_HAL_MAC_MAX_MC_PAUSE_THRESHOLD 254 -#define VXGE_HAL_MAC_DEF_MC_PAUSE_THRESHOLD VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_perma_stop_en; -#define VXGE_HAL_MAC_TMAC_PERMA_STOP_ENABLE 1 -#define VXGE_HAL_MAC_TMAC_PERMA_STOP_DISABLE 0 -#define VXGE_HAL_MAC_TMAC_PERMA_STOP_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_tx_switch_dis; -#define VXGE_HAL_MAC_TMAC_TX_SWITCH_ENABLE 0 -#define VXGE_HAL_MAC_TMAC_TX_SWITCH_DISABLE 1 -#define VXGE_HAL_MAC_TMAC_TX_SWITCH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_lossy_switch_en; -#define VXGE_HAL_MAC_TMAC_LOSSY_SWITCH_ENABLE 1 -#define VXGE_HAL_MAC_TMAC_LOSSY_SWITCH_DISABLE 0 -#define VXGE_HAL_MAC_TMAC_LOSSY_SWITCH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_lossy_wire_en; -#define VXGE_HAL_MAC_TMAC_LOSSY_WIRE_ENABLE 1 -#define VXGE_HAL_MAC_TMAC_LOSSY_WIRE_DISABLE 0 -#define VXGE_HAL_MAC_TMAC_LOSSY_WIRE_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_bcast_to_wire_dis; -#define VXGE_HAL_MAC_TMAC_BCAST_TO_WIRE_DISABLE 1 -#define VXGE_HAL_MAC_TMAC_BCAST_TO_WIRE_ENABLE 0 -#define VXGE_HAL_MAC_TMAC_BCAST_TO_WIRE_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_bcast_to_switch_dis; -#define VXGE_HAL_MAC_TMAC_BCAST_TO_SWITCH_DISABLE 1 -#define VXGE_HAL_MAC_TMAC_BCAST_TO_SWITCH_ENABLE 0 -#define VXGE_HAL_MAC_TMAC_BCAST_TO_SWITCH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tmac_host_append_fcs_en; -#define VXGE_HAL_MAC_TMAC_HOST_APPEND_FCS_ENABLE 1 -#define VXGE_HAL_MAC_TMAC_HOST_APPEND_FCS_DISABLE 0 -#define VXGE_HAL_MAC_TMAC_HOST_APPEND_FCS_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tpa_support_snap_ab_n; -#define VXGE_HAL_MAC_TPA_SUPPORT_SNAP_AB_N_LLC_SAP_AB 0 -#define VXGE_HAL_MAC_TPA_SUPPORT_SNAP_AB_N_LLC_SAP_AA 1 -#define VXGE_HAL_MAC_TPA_SUPPORT_SNAP_AB_N_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 tpa_ecc_enable_n; -#define VXGE_HAL_MAC_TPA_ECC_ENABLE_N_ENABLE 1 -#define VXGE_HAL_MAC_TPA_ECC_ENABLE_N_DISABLE 0 -#define VXGE_HAL_MAC_TPA_ECC_ENABLE_N_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_ignore_frame_err; -#define VXGE_HAL_MAC_RPA_IGNORE_FRAME_ERR_ENABLE 1 -#define VXGE_HAL_MAC_RPA_IGNORE_FRAME_ERR_DISABLE 0 -#define VXGE_HAL_MAC_RPA_IGNORE_FRAME_ERR_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_support_snap_ab_n; -#define VXGE_HAL_MAC_RPA_SUPPORT_SNAP_AB_N_ENABLE 1 -#define VXGE_HAL_MAC_RPA_SUPPORT_SNAP_AB_N_DISABLE 0 -#define VXGE_HAL_MAC_RPA_SUPPORT_SNAP_AB_N_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_search_for_hao; -#define VXGE_HAL_MAC_RPA_SEARCH_FOR_HAO_ENABLE 1 -#define VXGE_HAL_MAC_RPA_SEARCH_FOR_HAO_DISABLE 0 -#define VXGE_HAL_MAC_RPA_SEARCH_FOR_HAO_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_support_ipv6_mobile_hdrs; -#define VXGE_HAL_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS_ENABLE 1 -#define VXGE_HAL_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS_DISABLE 0 -#define VXGE_HAL_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_ipv6_stop_searching; -#define VXGE_HAL_MAC_RPA_IPV6_STOP_SEARCHING 1 -#define VXGE_HAL_MAC_RPA_IPV6_DONT_STOP_SEARCHING 0 -#define VXGE_HAL_MAC_RPA_IPV6_STOP_SEARCHING_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_no_ps_if_unknown; -#define VXGE_HAL_MAC_RPA_NO_PS_IF_UNKNOWN_ENABLE 1 -#define VXGE_HAL_MAC_RPA_NO_PS_IF_UNKNOWN_DISABLE 0 -#define VXGE_HAL_MAC_RPA_NO_PS_IF_UNKNOWN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_search_for_etype; -#define VXGE_HAL_MAC_RPA_SEARCH_FOR_ETYPE_ENABLE 1 -#define VXGE_HAL_MAC_RPA_SEARCH_FOR_ETYPE_DISABLE 0 -#define VXGE_HAL_MAC_RPA_SEARCH_FOR_ETYPE_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_l4_comp_csum; -#define VXGE_HAL_MAC_RPA_REPL_L4_COMP_CSUM_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_L4_COMP_CSUM_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_l4_COMP_CSUM_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_l3_incl_cf; -#define VXGE_HAL_MAC_RPA_REPL_L3_INCL_CF_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_L3_INCL_CF_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_L3_INCL_CF_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_l3_comp_csum; -#define VXGE_HAL_MAC_RPA_REPL_L3_COMP_CSUM_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_L3_COMP_CSUM_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_l3_COMP_CSUM_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_ipv4_tcp_incl_ph; -#define VXGE_HAL_MAC_RPA_REPL_IPV4_TCP_INCL_PH_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_IPV4_TCP_INCL_PH_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_IPV4_TCP_INCL_PH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_ipv6_tcp_incl_ph; -#define VXGE_HAL_MAC_RPA_REPL_IPV6_TCP_INCL_PH_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_IPV6_TCP_INCL_PH_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_IPV6_TCP_INCL_PH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_ipv4_udp_incl_ph; -#define VXGE_HAL_MAC_RPA_REPL_IPV4_UDP_INCL_PH_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_IPV4_UDP_INCL_PH_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_IPV4_UDP_INCL_PH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_ipv6_udp_incl_ph; -#define VXGE_HAL_MAC_RPA_REPL_IPV6_UDP_INCL_PH_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_IPV6_UDP_INCL_PH_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_IPV6_UDP_INCL_PH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_l4_incl_cf; -#define VXGE_HAL_MAC_RPA_REPL_L4_INCL_CF_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_L4_INCL_CF_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_L4_INCL_CF_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_repl_strip_vlan_tag; -#define VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_ENABLE 1 -#define VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_DISABLE 0 -#define VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_mac_config_t; - -/* - * struct vxge_hal_lag_port_config_t - LAG Port configuration(For privileged - * mode driver only) - * - * @port_id: Port Id - * @lag_en: Enables or disables the port from joining a link aggregation group. - * If link aggregation is enabled and this port is disabled, then - * this port does not carry traffic (it is not associated with an - * Aggregator). Both this bit and port_enabled from the physical - * layer logic must be asserted to permit the Receive machine to - * move beyond the PORT_DISABLED state. - * 0 - Disable; - * 1 - Enable; - * @discard_slow_proto: Discard received frames that contain the Slow Protocols - * Multicast address (IEEE 802.3-2005 Clause 43B) -- Such frames - * are used for link aggregation Marker Protocol and for LACP. - * 0 - Pass to host; - * 1 - Discard; - * @host_chosen_aggr: When the host is running the Link Aggregation Control - * algorithm, this field determines which aggregator is attached - * to this port. This field is only valid when LAG_LACP_CFG.EN is 0 - * 0 - Aggregator 0 is attached to this port. - * 1 - Aggregator 1 is attached to this port. - * @discard_unknown_slow_proto: Discard received frames that contain the Slow - * Protocols Multicast address (IEEE 802.3-2005 Clause 43B), - * but have an unknown Slow Protocols PDU. - * 0 - Pass to host - * 1 - Discard - * Note: This field is only relevant when DISCARD_SLOW_PROTO - * is set to 0. - * @actor_port_num: The port number assigned to the port. Port Number 0 is - * reserved and must not be assigned to any port. - * @actor_port_priority: The priority value assigned to the port. - * @actor_key_10g: The port's administrative Key when auto-negotiated to 10Gbps - * The null (all zeros) Key value is not available for local use. - * @actor_key_1g: The port's administrative Key when auto-negotiated to 1Gbps. - * The null (all zeros) Key value is not available for local use. - * @actor_lacp_activity: Indicates the Activity control value for this port. - * 0 - Passive LACP - * 1 - Active LACP - * @actor_lacp_timeout: Indicates the Timeout control value for this port. - * 0 - Long Timeout - * 1 - Short Timeout - * @actor_aggregation: Indicates if the port is a potential candidate for - * aggregation. - * 0 - Link is Individual - * 1 - Link is Aggregateable - * @actor_synchronization: Indicates if the port is in sync. - * 0 - Link is out of sync; it is in the wrong Aggregation - * 1 - Link is in sync (allocated to the correct Link Aggregation - * Group, the group is associated with a compatible Aggregator, - * and the identity of the Link Aggregation Group is consistent - * with the System ID and operational Key information transmitted) - * @actor_collecting: Indicates whether collecting of incoming frames is enabled - * on this port. - * 0 - Not collecting - * 1 - Collection is enabled - * @actor_distributing: Indicates whether distribution of outgoing frames is - * enabled on this port. - * 0 - Not distributing - * 1 - Distribution is enabled - * @actor_defaulted: Indicates whether the Actor's Receive state machine is - * using administratively configured information for the Partner. - * 0 - The operational Partner info has been received in a LACPDU - * 1 - The operation Partner info is using administrative defaults - * @actor_expired: Indicates whether the Actor's Receive state machine is in the - * EXPIRED state. - * 0 - Not in the EXPIRED state - * 1 - Is in the EXPIRED state - * @partner_sys_pri: The administrative default for the System Priority - * component of the System Identifier of the Partner. - * @partner_key: The administrative default for the Partner's Key. The null - * (all zeros) Key value is not available for local use. - * @partner_port_num: The administrative default for the Port Number component - * of the Partner's Port Identifier. - * @partner_port_priority: The administrative default for the Port Identifier - * component of the Partner's Port Identifier. - * @partner_lacp_activity: Indicates the Activity control value for this port. - * 0 - Passive LACP - * 1 - Active LACP - * @partner_lacp_timeout: Indicates the Timeout control value for this port. - * 0 - Long Timeout - * 1 - Short Timeout - * @partner_aggregation: Indicates if the port is a potential candidate for - * aggregation. - * 0 - Link is Individual - * 1 - Link is Aggregateable - * @partner_synchronization: Indicates if the port is in sync. - * 0 - Link is out of sync; it is in the wrong Aggregation - * 1 - Link is in sync (allocated to the correct Link Aggregation - * Group, the group is associated with a compatible Aggregator, - * and the identity of the Link Aggregation Group is consistent - * with the System ID and operational Key information transmitted) - * @partner_collecting: Indicates whether collecting of incoming frames is - * enabled on this port. - * 0 - Not collecting - * 1 - Collection is enabled. - * Note: According to IEEE 802.3-2005, the value of the - * partner_collecting field of this register must be the same as - * the value of the partner_synchronization field of this register - * @partner_distributing: Indicates whether distribution of outgoing frames is - * enabled on this port. - * 0 - Not distributing - * 1 - Distribution is enabled - * @partner_defaulted: Indicates whether the Actor's Receive state machine is - * using administratively configured information for the Partner. - * 0 - The operational Partner information has been received in - * a LACPDU - * 1 - The operation Partner information is using administrative - * defaults - * @partner_expired: Indicates whether the Actor's Receive state machine is in - * the expired state. - * 0 - Not in the EXPIRED state - * 1 - Is in the EXPIRED state - * @partner_mac_addr: Default value for the MAC address of the Partner. - * - * This structure is configuration for LAG Port of device - */ -typedef struct vxge_hal_lag_port_config_t { - u32 port_id; -#define VXGE_HAL_LAG_PORT_PORT_ID_0 1 -#define VXGE_HAL_LAG_PORT_PORT_ID_1 2 -#define VXGE_HAL_LAG_PORT_MAX_PORTS VXGE_HAL_MAC_MAX_WIRE_PORTS - - u32 lag_en; -#define VXGE_HAL_LAG_PORT_LAG_EN_DISABLE 0 -#define VXGE_HAL_LAG_PORT_LAG_EN_ENABLE 1 -#define VXGE_HAL_LAG_PORT_LAG_EN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 discard_slow_proto; -#define VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_DISABLE 0 -#define VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_ENABLE 1 -#define VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 host_chosen_aggr; -#define VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_0 0 -#define VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_1 1 -#define VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 discard_unknown_slow_proto; -#define VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_DISABLE 0 -#define VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_ENABLE 1 -#define VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_port_num; -#define VXGE_HAL_LAG_PORT_MIN_ACTOR_PORT_NUM 0 -#define VXGE_HAL_LAG_PORT_MAX_ACTOR_PORT_NUM 65535 -#define VXGE_HAL_LAG_PORT_DEF_ACTOR_PORT_NUM VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_port_priority; -#define VXGE_HAL_LAG_PORT_MIN_ACTOR_PORT_PRIORITY 0 -#define VXGE_HAL_LAG_PORT_MAX_ACTOR_PORT_PRIORITY 65535 -#define VXGE_HAL_LAG_PORT_DEF_ACTOR_PORT_PRIORITY VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_key_10g; -#define VXGE_HAL_LAG_PORT_MIN_ACTOR_KEY_10G 0 -#define VXGE_HAL_LAG_PORT_MAX_ACTOR_KEY_10G 65535 -#define VXGE_HAL_LAG_PORT_DEF_ACTOR_KEY_10G VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_key_1g; -#define VXGE_HAL_LAG_PORT_MIN_ACTOR_KEY_1G 0 -#define VXGE_HAL_LAG_PORT_MAX_ACTOR_KEY_1G 65535 -#define VXGE_HAL_LAG_PORT_DEF_ACTOR_KEY_1G VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_lacp_activity; -#define VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_PASSIVE 0 -#define VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_ACTIVE 1 -#define VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_lacp_timeout; -#define VXGE_HAL_LAG_PORT_ACTOR_LACP_TIMEOUT_LONG 0 -#define VXGE_HAL_LAG_PORT_ACTOR_LACP_TIMEOUT_SHORT 1 -#define VXGE_HAL_LAG_PORT_ACTOR_LACP_TIMEOUT_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_aggregation; -#define VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_INDIVIDUAL 0 -#define VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_AGGREGATEABLE 1 -#define VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_synchronization; -#define VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_OUT_OF_SYNC 0 -#define VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_IN_SYNC 1 -#define VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_collecting; -#define VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_DISABLE 0 -#define VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_ENABLE 1 -#define VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_distributing; -#define VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_DISABLE 0 -#define VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_ENABLE 1 -#define VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_defaulted; -#define VXGE_HAL_LAG_PORT_ACTOR_DEFAULTED 0 -#define VXGE_HAL_LAG_PORT_ACTOR_NOT_DEFAULTED 1 -#define VXGE_HAL_LAG_PORT_ACTOR_DEFAULTED_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 actor_expired; -#define VXGE_HAL_LAG_PORT_ACTOR_EXPIRED 0 -#define VXGE_HAL_LAG_PORT_ACTOR_NOT_EXPIRED 1 -#define VXGE_HAL_LAG_PORT_ACTOR_EXPIRED_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_sys_pri; -#define VXGE_HAL_LAG_PORT_MIN_PARTNER_SYS_PRI 0 -#define VXGE_HAL_LAG_PORT_MAX_PARTNER_SYS_PRI 65535 -#define VXGE_HAL_LAG_PORT_DEF_PARTNER_SYS_PRI VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_key; -#define VXGE_HAL_LAG_PORT_MIN_PARTNER_KEY 0 -#define VXGE_HAL_LAG_PORT_MAX_PARTNER_KEY 65535 -#define VXGE_HAL_LAG_PORT_DEF_PARTNER_KEY VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_port_num; -#define VXGE_HAL_LAG_PORT_MIN_PARTNER_PORT_NUM 0 -#define VXGE_HAL_LAG_PORT_MAX_PARTNER_PORT_NUM 65535 -#define VXGE_HAL_LAG_PORT_DEF_PARTNER_PORT_NUM VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_port_priority; -#define VXGE_HAL_LAG_PORT_MIN_PARTNER_PORT_PRIORITY 0 -#define VXGE_HAL_LAG_PORT_MAX_PARTNER_PORT_PRIORITY 65535 -#define VXGE_HAL_LAG_PORT_DEF_PARTNER_PORT_PRIORITY VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_lacp_activity; -#define VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_PASSIVE 0 -#define VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_ACTIVE 1 -#define VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_lacp_timeout; -#define VXGE_HAL_LAG_PORT_PARTNER_LACP_TIMEOUT_LONG 0 -#define VXGE_HAL_LAG_PORT_PARTNER_LACP_TIMEOUT_SHORT 1 -#define VXGE_HAL_LAG_PORT_PARTNER_LACP_TIMEOUT_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_aggregation; -#define VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_INDIVIDUAL 0 -#define VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_AGGREGATEABLE 1 -#define VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_synchronization; -#define VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_OUT_OF_SYNC 0 -#define VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_IN_SYNC 1 -#define VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_collecting; -#define VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_DISABLE 0 -#define VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_ENABLE 1 -#define VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_distributing; -#define VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_DISABLE 0 -#define VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_ENABLE 1 -#define VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_defaulted; -#define VXGE_HAL_LAG_PORT_PARTNER_DEFAULTED 0 -#define VXGE_HAL_LAG_PORT_PARTNER_NOT_DEFAULTED 1 -#define VXGE_HAL_LAG_PORT_PARTNER_DEFAULTED_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 partner_expired; -#define VXGE_HAL_LAG_PORT_PARTNER_EXPIRED 0 -#define VXGE_HAL_LAG_PORT_PARTNER_NOT_EXPIRED 1 -#define VXGE_HAL_LAG_PORT_PARTNER_EXPIRED_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - macaddr_t partner_mac_addr; - -} vxge_hal_lag_port_config_t; - -/* - * struct vxge_hal_lag_aggr_config_t - LAG Aggregator configuration - * (For privileged mode driver only) - * - * @aggr_id: Aggregator Id - * @mac_addr: The MAC address assigned to the Aggregator. - * @use_port_mac_addr: Indicates whether the Aggregator should use: - * 0 - the address specified in this register - * 1 - the station address of one of the ports to which - * it is attached - * @mac_addr_sel: Indicates which port address to use, if use_port_mac_addr - * is set and two ports are attached to the aggregator: - * 0 - the station address of port 0 - * 1 - the station address of port 1. - * @admin_key: The Aggregator's administrative Key under most circumstances - * (see alt_admin_key for exceptions). The null (all zeros) Key - * value is not available for local use. - * This structure is configuration for LAG Aggregators of device - */ -typedef struct vxge_hal_lag_aggr_config_t { - u32 aggr_id; -#define VXGE_HAL_LAG_AGGR_AGGR_ID_1 1 -#define VXGE_HAL_LAG_AGGR_AGGR_ID_2 2 -#define VXGE_HAL_LAG_AGGR_MAX_PORTS VXGE_HAL_MAC_MAX_AGGR_PORTS - - macaddr_t mac_addr; - - u32 use_port_mac_addr; -#define VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_DISBALE 0 -#define VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_ENABLE 1 -#define VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 mac_addr_sel; -#define VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_PORT_0 0 -#define VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_PORT_1 1 -#define VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 admin_key; -#define VXGE_HAL_LAG_AGGR_MIN_ADMIN_KEY 0 -#define VXGE_HAL_LAG_AGGR_MAX_ADMIN_KEY 65535 -#define VXGE_HAL_LAG_AGGR_DEF_ADMIN_KEY VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_lag_aggr_config_t; - -/* - * struct vxge_hal_lag_la_config_t - LAG Link Aggregator mode configuration( - * For privileged mode driver only) - * - * @tx_discard: When the state of the port state attached to the Tx Aggregator - * is not Distributing, this field determines whether frames from - * the Frame Distributor are discarded by the Aggregator Mux - * @distrib_alg_sel: Configures the link aggregation distribution algorithm, - * which determines the destination port of each wire-bound frame. - * 0x0 - The source VPATH determines the target port and the - * mapping is controlled by the MAP_VPATHn fields of this - * register. - * 0x1 - Even parity over the frame's MAC destination address - * 0x2 - Even parity over the frame's MAC source address - * 0x3 - Even parity over the frame's MAC destination address and - * MAC source address - * Note: If the host changes this mapping while traffic is flowing, - * then (to avoid mis-ordering at the receiver) host must either - * enable the Marker protocol or assume responsibility for ensuring - * that no frames pertaining to the conversations (that are moving - * to a new port) are in flight. - * @distrib_dest: When LAG_TX_CFG.DISTRIB_ALG_SEL is set to use the source - * VPATH, then this field indicates the target adapter port for - * frames that come from a particular VPATH. - * 0 - Send frames from this VPATH to port 0 - * 1 - Send frames from this VPATH to port 1 - * Note: If the host updates this mapping while traffic is flowing, - * then (to avoid mis-ordering at the receiver) the host must - * either enable the Marker protocol or assume responsibility for - * ensuring that no frames pertaining to the conversations (that - * are moving to a new port) are in flight. - * @distrib_remap_if_fail: When lag_mode is Link Aggregated, this field controls - * whether frames are re-distributed to the working port if one - * port goes down. - * 0 - Don't remap. Enforce frames destined for port 'x' to remain - * destined for it and let LAG_CFG.TX_DISCARD_BEHAV determine - * what happens to the frames. - * 1 - Remap the frames to the working port, essentially ignoring - * the mapping table. - * @coll_max_delay: Collector Max Delay - the maximum amount of time (measured - * in units of tens of microseconds) that the Frame Collector is - * allowed to delay delivery of frames to the host. The contents - * of this field are placed into the transmitted LACPDU. - * @rx_discard: When the state of the port state attached to the Rx Aggregator - * is not Collecting, this field determines whether frames to the - * Frame Collector are discarded by the Aggregator Parser - * - * Link Aggregation Link Aggregator Mode Configuration - */ -typedef struct vxge_hal_lag_la_config_t { - u32 tx_discard; -#define VXGE_HAL_LAG_TX_DISCARD_DISBALE 0 -#define VXGE_HAL_LAG_TX_DISCARD_ENABLE 1 -#define VXGE_HAL_LAG_TX_DISCARD_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 distrib_alg_sel; -#define VXGE_HAL_LAG_DISTRIB_ALG_SEL_SRC_VPATH 0 -#define VXGE_HAL_LAG_DISTRIB_ALG_SEL_DEST_MAC_ADDR 1 -#define VXGE_HAL_LAG_DISTRIB_ALG_SEL_SRC_MAC_ADDR 2 -#define VXGE_HAL_LAG_DISTRIB_ALG_SEL_BOTH_MAC_ADDR 3 -#define VXGE_HAL_LAG_DISTRIB_ALG_SEL_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u64 distrib_dest; -#define VXGE_HAL_LAG_DISTRIB_DEST_VPATH_TO_PORT_PORT0(vpid) 0 -#define VXGE_HAL_LAG_DISTRIB_DEST_VPATH_TO_PORT_PORT1(vpid) mBIT(vpid) -#define VXGE_HAL_LAG_DISTRIB_DEST_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 distrib_remap_if_fail; -#define VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_DISBALE 0 -#define VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_ENABLE 1 -#define VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 coll_max_delay; -#define VXGE_HAL_LAG_MIN_COLL_MAX_DELAY 0 -#define VXGE_HAL_LAG_MAX_COLL_MAX_DELAY 65535 -#define VXGE_HAL_LAG_DEF_COLL_MAX_DELAY VXGE_HAL_USE_FLASH_DEFAULT - - u32 rx_discard; -#define VXGE_HAL_LAG_RX_DISCARD_DISBALE 0 -#define VXGE_HAL_LAG_RX_DISCARD_ENABLE 1 -#define VXGE_HAL_LAG_RX_DISCARD_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - -} vxge_hal_lag_la_config_t; - -/* - * struct vxge_hal_lag_ap_config_t - LAG Active Passive Failover mode - * configuration(For privileged mode driver only) - * - * @hot_standby: Keep the standby port alive even when it is not carrying - * traffic - * 0 - Standby port disabled until needed. The hardware behaves as - * if XGMAC_CFG_PORTn.PORT_EN has disabled the port. - * 1 - Standby port kept up - * @lacp_decides: This field determines whether or not the LACP Selection logic - * handles hot standby port interaction. This field is only used - * when hot_standby is 1. - * 0 - LACP Selection logic does not explicitly determine standby - * port, instead internal logic changes the aggregator's key - * using information found in the alt_admin_key - * field. Note that this does not disable LACP. - * 1 - LACP Selection logic explicitly determines standby port by - * enforcing a rule that if one port is already attached to any - * aggregator, then the other port is put into STANDBY. Assuming - * both ports have the same Key, at startup (or anytime both - * ports have become UNSELECTED) the Selection logic uses - * pref_active_port to choose the active (and consequently - * standby) port. After that it only selects a new port when - * the active port goes down. - * @pref_active_port: Indicates the preferred active port number. - * If hot_standby is disabled (i.e. "cold standby"), then - * pref_active_port determines which port remains powered up - * (and consequently which one is powered down). If hot_standby is - * enabled, then pref_active_port is used by the Selection logic - * whenever both ports have become UNSELECTED and the Selection - * logic must decide which to make SELECTED and which to make - * STANDBY. - * 0 - Link0 is preferred (Link1 becomes the standby port). - * 1 - Link1 is preferred - * @auto_failback: When LACP Selection logic is not handling standby port - * interaction, this register provides additional user flexibility - * for standby port handling. The AUTO_FAILBACK field controls - * whether the device automatically fails back to the preferred - * (i.e. non-alternate) Aggregator+Port pair in the event that the - * preferred port comes back up after a failure. Only used when - * hot_standby is set to 1 and lacp_decides is set to 0. - * 0 - After a failure on the preferred port, stay on alternate - * port even if the preferred port comes back up. Return to - * preferred port only when host indicates to return - * (via FAILBACK_EN) - * 1 - After a failure on the preferred port,automatically failback - * to preferred port whenever it comes back up. - * @failback_en: This field is used when hot_standby is set to 1,lacp_decides is - * set to 0, and AUTO_FAILBACK is set to 0. The field is also used - * when hot_standby is set to 0. The failback_en field allow the - * host to control when the adapter is allowed to fail back to the - * preferred port. The driver sets this field to indicate to the - * adapter that it okay to fail back to the preferred port (i.e. - * attempt to acquire a good port on the preferred port). This - * field is self-clearing -- the adapter clears it immediately. - * Note that the host can use waiting_to_fallback to tell if the - * adapter is waiting for host intervention. - * 0 - Adapter has acknowledged the request to fail back. - * 1 - Host requests that the adapter fail back to preferred port. - * @cold_failover_timeout: When cold standby mode is entered, this field - * controls how long (in msec) the adapter waits for the preferred - * port to come alive (assuming it isn't alreay alive. It the - * preferred port does not come up, then the adapter fails over - * to the standby port when the timer expires. At the time of - * standby port initialization, the timer is started again and - * if the standby port does not come up after the timer expires, - * then both ports are shut down. - * @alt_admin_key: The Aggregator's administrative Key whenever the device is in - * active-passive failover mode and both ports are up. This - * prevents both ports from becoming active in this case. - * The H/W is responsible for choosing the proper key to use in - * this case. The null (all zeros) Key value is not available for - * local use. - * @alt_aggr: Identifies which Aggregator is designated as the alternate - * (i.e. unused) Aggregator, when both ports are up. - * 0 - Aggregator0 is the alternate - * 1 - Aggregator1 is the alternate - * - * Link Aggregation Active Passive failover mode Configuration - */ -typedef struct vxge_hal_lag_ap_config_t { - u32 hot_standby; -#define VXGE_HAL_LAG_HOT_STANDBY_DISBALE_PORT 0 -#define VXGE_HAL_LAG_HOT_STANDBY_KEEP_UP_PORT 1 -#define VXGE_HAL_LAG_HOT_STANDBY_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 lacp_decides; -#define VXGE_HAL_LAG_LACP_DECIDES_DISBALE 0 -#define VXGE_HAL_LAG_LACP_DECIDES_ENBALE 1 -#define VXGE_HAL_LAG_LACP_DECIDES_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 pref_active_port; -#define VXGE_HAL_LAG_PREF_ACTIVE_PORT_0 0 -#define VXGE_HAL_LAG_PREF_ACTIVE_PORT_1 1 -#define VXGE_HAL_LAG_PREF_ACTIVE_PORT_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 auto_failback; -#define VXGE_HAL_LAG_AUTO_FAILBACK_DISBALE 0 -#define VXGE_HAL_LAG_AUTO_FAILBACK_ENBALE 1 -#define VXGE_HAL_LAG_AUTO_FAILBACK_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 failback_en; -#define VXGE_HAL_LAG_FAILBACK_EN_DISBALE 0 -#define VXGE_HAL_LAG_FAILBACK_EN_ENBALE 1 -#define VXGE_HAL_LAG_FAILBACK_EN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 cold_failover_timeout; -#define VXGE_HAL_LAG_MIN_COLD_FAILOVER_TIMEOUT 0 -#define VXGE_HAL_LAG_MAX_COLD_FAILOVER_TIMEOUT 65535 -#define VXGE_HAL_LAG_DEF_COLD_FAILOVER_TIMEOUT VXGE_HAL_USE_FLASH_DEFAULT - - u32 alt_admin_key; -#define VXGE_HAL_LAG_MIN_ALT_ADMIN_KEY 0 -#define VXGE_HAL_LAG_MAX_ALT_ADMIN_KEY 65535 -#define VXGE_HAL_LAG_DEF_ALT_ADMIN_KEY VXGE_HAL_USE_FLASH_DEFAULT - - u32 alt_aggr; -#define VXGE_HAL_LAG_ALT_AGGR_0 0 -#define VXGE_HAL_LAG_ALT_AGGR_1 1 -#define VXGE_HAL_LAG_ALT_AGGR_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_lag_ap_config_t; - -/* - * struct vxge_hal_lag_sl_config_t - LAG Single Link configuration(For - * privileged mode driver only) - * - * @pref_indiv_port: For Single Link mode, this field indicates the preferred - * active port number. It is used by the Selection logic whenever - * both ports have become UNSELECTED and the Selection logic must - * decide which to make SELECTED and which to keep UNSELECTED. - * This field is only valid when the MODE field is set to - * 'Single Link'. - * - * Link Aggregation Single Link Configuration - */ -typedef struct vxge_hal_lag_sl_config_t { - u32 pref_indiv_port; -#define VXGE_HAL_LAG_PREF_INDIV_PORT_0 0 -#define VXGE_HAL_LAG_PREF_INDIV_PORT_1 1 -#define VXGE_HAL_LAG_PREF_INDIV_PORT_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT -} vxge_hal_lag_sl_config_t; - -/* - * struct vxge_hal_lag_lacp_config_t - LAG LACP configuration(For privileged - * mode driver only) - * - * @lacp_en: Enables use of the on-chip LACP implementation. - * @lacp_begin: Re-initializes the LACP protocol state machines. - * @discard_lacp: If LACP is not enabled on the device, then all LACP frames - * are passed to the host. However, when LACP is enabled,this field - * determines whether the LACP frames are still passed to the host. - * @liberal_len_chk: Controls the length checks that are performed on the - * received LACPDU by the RX FSM. Normally, the received value of - * the following length fields is a known constant and(as suggested - * by IEEE 802.3-2005 43.4.12) the hardware validates them: - * Actor_Information_Length, Partner_Information_Length, - * Collector_Information_Length, and Terminator_Information_Length. - * @marker_gen_recv_en: Enables marker generator/receiver. If this functionality - * is disabled, then the host must assume responsibility for - * ensuring that no frames pertaining to the conversations (that - * are moving to a new port) are in flight, whenever the transmit - * distribution algorithm is updated. - * @marker_resp_en: Enables the transmission of Marker Response PDUs. Adapter - * sends a Marker Response PDU in response to a received Marker PDU - * @marker_resp_timeout: Timeout value for response to Marker frame - number - * of milliseconds that the frame distribution logic will wait - * before assuming that all frames transmitted on a particular - * conversation have been successfully received. If a Marker - * Response PDU comes back before the timer expires, then the - * same assumption is made. - * @slow_proto_mrkr_min_interval: Minimum interval (in milliseconds) between - * Marker PDU transmissions. Includes both Marker PDUs and Marker - * Response PDUs. According to IEEE 802.3-2005 Annex 43B.2, the - * device should send no more than 10 frames in any one-second - * period. Thus, waiting 100ms between successive transmission - * of Slow Protocol frames for the Marker Protocol (i.e. those - * that are sourced by our Marker Generator), guarantee that we - * satisfy this requirement. To be overly conservative the default - * value of this register allows for 200ms between frames. - * @throttle_mrkr_resp: Permits the adapter to throttle the tranmission of - * Marker Response PDUs to satisfy the Slow Protocols transmission - * rate (see IEEE 802.3-2005 Annex 43B). - * 0 - Transmission of Marker Response PDUs is not moderated. - * A Marker Response PDU is sent in response to every received - * Marker frame, regardless of whether the Marker frames are - * being received at a rate below the Slow Protocols rate. - * 1 - Limit the transmission of Marker Response PDUs to the Slow - * Protocols transmission rate. If a remote host is generating - * Marker frames too quickly, then some of these frames will - * have no corresponding Marker Response PDU generated by the - * adapter. - * - * Link Aggregation LACP Configuration - */ -typedef struct vxge_hal_lag_lacp_config_t { - u32 lacp_en; -#define VXGE_HAL_LAG_LACP_EN_DISBALE 0 -#define VXGE_HAL_LAG_LACP_EN_ENABLE 1 -#define VXGE_HAL_LAG_LACP_EN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 lacp_begin; -#define VXGE_HAL_LAG_LACP_BEGIN_NORMAL 0 -#define VXGE_HAL_LAG_LACP_BEGIN_RESET 1 -#define VXGE_HAL_LAG_LACP_BEGIN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 discard_lacp; -#define VXGE_HAL_LAG_DISCARD_LACP_DISBALE 0 -#define VXGE_HAL_LAG_DISCARD_LACP_ENABLE 1 -#define VXGE_HAL_LAG_DISCARD_LACP_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 liberal_len_chk; -#define VXGE_HAL_LAG_LIBERAL_LEN_CHK_DISBALE 0 -#define VXGE_HAL_LAG_LIBERAL_LEN_CHK_ENABLE 1 -#define VXGE_HAL_LAG_LIBERAL_LEN_CHK_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 marker_gen_recv_en; -#define VXGE_HAL_LAG_MARKER_GEN_RECV_EN_DISBALE 0 -#define VXGE_HAL_LAG_MARKER_GEN_RECV_EN_ENABLE 1 -#define VXGE_HAL_LAG_MARKER_GEN_RECV_EN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 marker_resp_en; -#define VXGE_HAL_LAG_MARKER_RESP_EN_DISBALE 0 -#define VXGE_HAL_LAG_MARKER_RESP_EN_ENABLE 1 -#define VXGE_HAL_LAG_MARKER_RESP_EN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 marker_resp_timeout; -#define VXGE_HAL_LAG_MIN_MARKER_RESP_TIMEOUT 0 -#define VXGE_HAL_LAG_MAX_MARKER_RESP_TIMEOUT 65535 -#define VXGE_HAL_LAG_DEF_MARKER_RESP_TIMEOUT VXGE_HAL_USE_FLASH_DEFAULT - - u32 slow_proto_mrkr_min_interval; -#define VXGE_HAL_LAG_MIN_SLOW_PROTO_MRKR_MIN_INTERVAL 0 -#define VXGE_HAL_LAG_MAX_SLOW_PROTO_MRKR_MIN_INTERVAL 65535 -#define VXGE_HAL_LAG_DEF_SLOW_PROTO_MRKR_MIN_INTERVAL \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 throttle_mrkr_resp; -#define VXGE_HAL_LAG_THROTTLE_MRKR_RESP_DISBALE 0 -#define VXGE_HAL_LAG_THROTTLE_MRKR_RESP_ENABLE 1 -#define VXGE_HAL_LAG_THROTTLE_MRKR_RESP_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_lag_lacp_config_t; - -/* - * struct vxge_hal_lag_config_t - LAG configuration(For privileged - * mode driver only) - * - * @lag_en: Enables link aggregation - * @lag_mode: Select the mode of operation for link aggregation. The options: - * 00 - Link Aggregated - * 01 - Active/Passive Failover - * 10 - Single Link - * @la_mode_config: LAG Link Aggregator mode config - * @ap_mode_config: LAG Active Passive Failover mode config - * @sl_mode_config: LAG Single Link mode config - * @lacp_config: LAG LACP config - * @incr_tx_aggr_stats: Controls whether Tx aggregator stats are incremented - * when Link Aggregation is disabled. - * 0 - Don't increment - * 1 - Increment - * Note: When LAG is enabled, aggregator stats are always - * incremented. - * @port_config: Lag Port configuration. See vxge_hal_lag_port_config_t {} - * @aggr_config: Lag Aggregator configuration. See vxge_hal_lag_aggr_config_t {} - * @sys_pri: The System Priority of the System. Numerically lower values have - * higher priority. - * @mac_addr: The MAC address assigned to the System. Should be non-zero. - * @use_port_mac_addr: Indicates whether the Aggregator should use: - * 0 - the address specified in this register. - * 1 - the station address of one of the ports in the System - * @mac_addr_sel: Indicates which port address to use, if USE_PORT_ADDR is set: - * 0 - the station address of port 0 - * 1 - the station address of port 1. - * @fast_per_time: Fast Periodic Time - number of seconds between periodic - * transmissions of Short Timeouts. - * @slow_per_time: Slow Periodic Time - number of seconds between periodic - * transmissions of Long Timeouts. - * @short_timeout: Short Timeout Time - number of seconds before - * invalidating received LACPDU information using Short - * Timeouts (3 x Fast Periodic Time). - * @long_timeout: Long Timeout Time - number of seconds before invalidating - * received LACPDU information using Long Timeouts - * (3 x Slow Periodic Time). - * @churn_det_time: Churn Detection Time - number of seconds that the - * Actor and Partner Churn state machines wait for the Actor - * or Partner Sync state to stabilize. - * @aggr_wait_time: Aggregate Wait Time - number of seconds to delay - * aggregation,to allow multiple links to aggregate simultaneously - * @short_timer_scale: For simulation purposes, this field allows scaling of - * link aggregation timers. Specifically, the included timers are - * short (programmed with units of msec) and include 'Emptied Link - * Timer', 'Slow Proto Timer for Marker PDU', 'Slow Proto Timer for - * Marker Response PDU', and 'Cold Failover Timer'. - * 0x0 - No scaling - * 0x1 - Scale by 10X (counter expires 10 times faster) - * 0x2 - Scale by 100X - * 0x3 - Scale by 1000X - * @long_timer_scale: For simulation purposes, this field allows scaling of link - * aggregation timers. Specifically, the included timers are long - * (programmed with units of seconds) and include 'Current While - * Timer', 'Periodic Timer', 'Wait While Timer', 'Transmit LACP - * Timer', 'Actor Churn Timer', 'Partner Churn Timer', - * 0x0 - No scaling - * 0x1 - Scale by 10X (counter expires 10 times faster) - * 0x2 - Scale by 100X - * 0x3 - Scale by 1000X - * 0x4 - Scale by 10000X - * 0x5 - Scale by 100000X - * 0x6 - Scale by 1000000X - * - * Link Aggregation Configuration - */ -typedef struct vxge_hal_lag_config_t { - u32 lag_en; -#define VXGE_HAL_LAG_LAG_EN_DISABLE 0 -#define VXGE_HAL_LAG_LAG_EN_ENABLE 1 -#define VXGE_HAL_LAG_LAG_EN_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 lag_mode; -#define VXGE_HAL_LAG_LAG_MODE_LAG 0 -#define VXGE_HAL_LAG_LAG_MODE_ACTIVE_PASSIVE_FAILOVER 1 -#define VXGE_HAL_LAG_LAG_MODE_SINGLE_LINK 2 -#define VXGE_HAL_LAG_LAG_MODE_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - vxge_hal_lag_la_config_t la_mode_config; - vxge_hal_lag_ap_config_t ap_mode_config; - vxge_hal_lag_sl_config_t sl_mode_config; - vxge_hal_lag_lacp_config_t lacp_config; - - u32 incr_tx_aggr_stats; -#define VXGE_HAL_LAG_INCR_TX_AGGR_STATS_DISBALE 0 -#define VXGE_HAL_LAG_INCR_TX_AGGR_STATS_ENABLE 1 -#define VXGE_HAL_LAG_INCR_TX_AGGR_STATS_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - vxge_hal_lag_port_config_t port_config[VXGE_HAL_LAG_PORT_MAX_PORTS]; - vxge_hal_lag_aggr_config_t aggr_config[VXGE_HAL_LAG_AGGR_MAX_PORTS]; - - u32 sys_pri; -#define VXGE_HAL_LAG_MIN_SYS_PRI 0 -#define VXGE_HAL_LAG_MAX_SYS_PRI 65535 -#define VXGE_HAL_LAG_DEF_SYS_PRI VXGE_HAL_USE_FLASH_DEFAULT - - macaddr_t mac_addr; - - u32 use_port_mac_addr; -#define VXGE_HAL_LAG_USE_PORT_MAC_ADDR_DISBALE 0 -#define VXGE_HAL_LAG_USE_PORT_MAC_ADDR_ENABLE 1 -#define VXGE_HAL_LAG_USE_PORT_MAC_ADDR_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 mac_addr_sel; -#define VXGE_HAL_LAG_MAC_ADDR_SEL_PORT_0 0 -#define VXGE_HAL_LAG_MAC_ADDR_SEL_PORT_1 1 -#define VXGE_HAL_LAG_MAC_ADDR_SEL_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 fast_per_time; -#define VXGE_HAL_LAG_MIN_FAST_PER_TIME 0 -#define VXGE_HAL_LAG_MAX_FAST_PER_TIME 65535 -#define VXGE_HAL_LAG_DEF_FAST_PER_TIME VXGE_HAL_USE_FLASH_DEFAULT - - u32 slow_per_time; -#define VXGE_HAL_LAG_MIN_SLOW_PER_TIME 0 -#define VXGE_HAL_LAG_MAX_SLOW_PER_TIME 65535 -#define VXGE_HAL_LAG_DEF_SLOW_PER_TIME VXGE_HAL_USE_FLASH_DEFAULT - - u32 short_timeout; -#define VXGE_HAL_LAG_MIN_SHORT_TIMEOUT 0 -#define VXGE_HAL_LAG_MAX_SHORT_TIMEOUT 65535 -#define VXGE_HAL_LAG_DEF_SHORT_TIMEOUT VXGE_HAL_USE_FLASH_DEFAULT - - u32 long_timeout; -#define VXGE_HAL_LAG_MIN_LONG_TIMEOUT 0 -#define VXGE_HAL_LAG_MAX_LONG_TIMEOUT 65535 -#define VXGE_HAL_LAG_DEF_LONG_TIMEOUT VXGE_HAL_USE_FLASH_DEFAULT - - u32 churn_det_time; -#define VXGE_HAL_LAG_MIN_CHURN_DET_TIME 0 -#define VXGE_HAL_LAG_MAX_CHURN_DET_TIME 65535 -#define VXGE_HAL_LAG_DEF_CHURN_DET_TIME VXGE_HAL_USE_FLASH_DEFAULT - - u32 aggr_wait_time; -#define VXGE_HAL_LAG_MIN_AGGR_WAIT_TIME 0 -#define VXGE_HAL_LAG_MAX_AGGR_WAIT_TIME 65535 -#define VXGE_HAL_LAG_DEF_AGGR_WAIT_TIME VXGE_HAL_USE_FLASH_DEFAULT - - u32 short_timer_scale; -#define VXGE_HAL_LAG_SHORT_TIMER_SCALE_1X 0 -#define VXGE_HAL_LAG_SHORT_TIMER_SCALE_10X 1 -#define VXGE_HAL_LAG_SHORT_TIMER_SCALE_100X 2 -#define VXGE_HAL_LAG_SHORT_TIMER_SCALE_1000X 3 -#define VXGE_HAL_LAG_SHORT_TIMER_SCALE_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 long_timer_scale; -#define VXGE_HAL_LAG_LONG_TIMER_SCALE_1X 0 -#define VXGE_HAL_LAG_LONG_TIMER_SCALE_10X 1 -#define VXGE_HAL_LAG_LONG_TIMER_SCALE_100X 2 -#define VXGE_HAL_LAG_LONG_TIMER_SCALE_1000X 3 -#define VXGE_HAL_LAG_LONG_TIMER_SCALE_10000X 4 -#define VXGE_HAL_LAG_LONG_TIMER_SCALE_100000X 5 -#define VXGE_HAL_LAG_LONG_TIMER_SCALE_1000000X 6 -#define VXGE_HAL_LAG_LONG_TIMER_SCALE_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_lag_config_t; - -/* - * struct vxge_hal_vpath_qos_config_t - Vpath qos(For privileged - * mode driver only) - * @priority: The priority of vpath - * @min_bandwidth: Minimum Guaranteed bandwidth - * @max_bandwidth: Maximum allowed bandwidth - * - * This structure is vpath qos configuration for MRPCIM section of device - */ -typedef struct vxge_hal_vpath_qos_config_t { - u32 priority; -#define VXGE_HAL_VPATH_QOS_PRIORITY_MIN 0 -#define VXGE_HAL_VPATH_QOS_PRIORITY_MAX 16 -#define VXGE_HAL_VPATH_QOS_PRIORITY_DEFAULT 0 - - u32 min_bandwidth; -#define VXGE_HAL_VPATH_QOS_MIN_BANDWIDTH_MIN 0 -#define VXGE_HAL_VPATH_QOS_MIN_BANDWIDTH_MAX 100 -#define VXGE_HAL_VPATH_QOS_MIN_BANDWIDTH_DEFAULT 0 - - u32 max_bandwidth; -#define VXGE_HAL_VPATH_QOS_MAX_BANDWIDTH_MIN 0 -#define VXGE_HAL_VPATH_QOS_MAX_BANDWIDTH_MAX 100 -#define VXGE_HAL_VPATH_QOS_MAX_BANDWIDTH_DEFAULT 0 - -} vxge_hal_vpath_qos_config_t; - -/* - * struct vxge_hal_mrpcim_config_t - MRPCIM secion configuration(For privileged - * mode driver only) - * - * @mac_config: MAC Port Config. See vxge_hal_mac_config_t {} - * @lag_config: MAC Port Config. See vxge_hal_lag_config_t {} - * @vp_qos: Vpath QOS - * @vpath_to_wire_port_map_en: Mask to enable vpath to wire port mapping. - * @vpath_to_wire_port_map: If LAG is not enabled or lag_distrib_dest is not set - * then vpath_to_wire_port_map is used to assign independent ports - * to vpath - * - * This structure is configuration for MRPCIM section of device - */ -typedef struct vxge_hal_mrpcim_config_t { - vxge_hal_mac_config_t mac_config; - vxge_hal_lag_config_t lag_config; - u64 vpath_to_wire_port_map_en; -#define VXGE_HAL_VPATH_TO_WIRE_PORT_MAP_EN_DISABLE(vpid) 0 -#define VXGE_HAL_VPATH_TO_WIRE_PORT_MAP_EN_ENABLE(vpid) mBIT(vpid) -#define VXGE_HAL_VPATH_WIRE_PORTS_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - u64 vpath_to_wire_port_map; -#define VXGE_HAL_VPATH_TO_WIRE_PORT_MAP_PORT0(vpid) 0 -#define VXGE_HAL_VPATH_TO_WIRE_PORT_MAP_PORT1(vpid) mBIT(vpid) -#define VXGE_HAL_VPATH_TO_WIRE_PORT_MAP_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - vxge_hal_vpath_qos_config_t vp_qos[VXGE_HAL_MAX_VIRTUAL_PATHS]; -} vxge_hal_mrpcim_config_t; - -/* - * struct vxge_hal_tim_intr_config_t - X3100 Tim interrupt configuration. - * @intr_enable: Set to 1, if interrupt is enabled. - * @btimer_val: Boundary Timer Initialization value in units of 272 ns. - * @timer_ac_en: Timer Automatic Cancel. 1 : Automatic Canceling Enable: when - * asserted, other interrupt-generating entities will cancel the - * scheduled timer interrupt. - * @timer_ci_en: Timer Continuous Interrupt. 1 : Continuous Interrupting Enable: - * When asserted, an interrupt will be generated every time the - * boundary timer expires, even if no traffic has been transmitted - * on this interrupt. - * @timer_ri_en: Timer Consecutive (Re-) Interrupt 1 : Consecutive - * (Re-) Interrupt Enable: When asserted, an interrupt will be - * generated the next time the timer expires,even if no traffic has - * been transmitted on this interrupt. (This will only happen once - * each time that this value is written to the TIM.) This bit is - * cleared by H/W at the end of the current-timer-interval when - * the interrupt is triggered. - * @rtimer_event_sf: Restriction Timer Event Scale Factor. A scale factor that - * is to be applied to the current event count before it is added - * to the restriction timer value when the restriction timer - * is started. - * The scale factor is applied as a right or left shift to multiply - * or divide by the event count. The programmable values are as - * follows: - * 0-disable restriction timer and use the base timer value. - * 1-Multiply the event count by 2, shift left by 1. - * 2-Multiply the event count by 4, shift left by 2. - * 3-Multiply the event count by 8, shift left by 3. - * 4-Multiply the event count by 16, shift left by 4. - * 5-Multiply the event count by 32, shift left by 5. - * 6-Multiply the event count by 64, shift left by 6. - * 7-Multiply the event count by 128, shift left by 7. - * 8-add the event count, no shifting. - * 9-Divide the event count by 128, shift right by 7. - * 10-Divide the event count by 64, shift right by 6. - * 11-Divide the event count by 32, shift right by 5. - * 12-Divide the event count by 16, shift right by 4. - * 13-Divide the event count by 8, shift right by 3. - * 14-Divide the event count by 4, shift right by 2. - * 15-Divide the event count by 2, shift right by 1. - * @rtimer_val: Restriction Timer Initialization value in units of 272 ns. - * @util_sel: Utilization Selector. Selects which of the workload approximations - * to use (e.g. legacy Tx utilization, Tx/Rx utilization, host - * specified utilization etc.),selects one of the 17 host - * configured values. - * 0-Virtual Path 0 - * 1-Virtual Path 1 - * ... - * 16-Virtual Path 17 - * 17-Legacy Tx network utilization, provided by TPA - * 18-Legacy Rx network utilization, provided by FAU - * 19-Average of legacy Rx and Tx utilization calculated from link - * utilization values. - * 20-31-Invalid configurations - * 32-Host utilization for Virtual Path 0 - * 33-Host utilization for Virtual Path 1 - * ... - * 48-Host utilization for Virtual Path 17 - * 49-Legacy Tx network utilization, provided by TPA - * 50-Legacy Rx network utilization, provided by FAU - * 51-Average of legacy Rx and Tx utilization calculated from - * link utilization values. - * 52-63-Invalid configurations - * @ltimer_val: Latency Timer Initialization Value in units of 272 ns. - * @txfrm_cnt_en: Transmit Frame Event Count Enable. This configuration bit - * when set to 1 enables counting of transmit frame's(signalled by - * SM), towards utilization event count values. - * @txd_cnt_en: TxD Return Event Count Enable. This configuration bit when set - * to 1 enables counting of TxD0 returns (signalled by PCC's), - * towards utilization event count values. - * @urange_a: Defines the upper limit (in percent) for this utilization range - * to be active. This range is considered active - * if 0 = UTIL = URNG_A and the UEC_A field (below) is non-zero. - * @uec_a: Utilization Event Count A. If this range is active, the adapter will - * wait until UEC_A events have occurred on the interrupt before - * generating an interrupt. - * @urange_b: Link utilization range B. - * @uec_b: Utilization Event Count B. - * @urange_c: Link utilization range C. - * @uec_c: Utilization Event Count C. - * @urange_d: Link utilization range D. - * @uec_d: Utilization Event Count D. - * @ufca_intr_thres - * @ufca_lo_lim - * @ufca_hi_lim - * @ufca_lbolt_period: - * - * Traffic Interrupt Controller Module interrupt configuration. - */ -typedef struct vxge_hal_tim_intr_config_t { - - u32 intr_enable; -#define VXGE_HAL_TIM_INTR_ENABLE 1 -#define VXGE_HAL_TIM_INTR_DISABLE 0 -#define VXGE_HAL_TIM_INTR_DEFAULT 0 - - u32 btimer_val; -#define VXGE_HAL_MIN_TIM_BTIMER_VAL 0 -#define VXGE_HAL_MAX_TIM_BTIMER_VAL 67108864 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_BTIMER_VAL VXGE_HAL_USE_FLASH_DEFAULT - - u32 timer_ac_en; -#define VXGE_HAL_TIM_TIMER_AC_ENABLE 1 -#define VXGE_HAL_TIM_TIMER_AC_DISABLE 0 -#define VXGE_HAL_TIM_TIMER_AC_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 timer_ci_en; -#define VXGE_HAL_TIM_TIMER_CI_ENABLE 1 -#define VXGE_HAL_TIM_TIMER_CI_DISABLE 0 -#define VXGE_HAL_TIM_TIMER_CI_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 timer_ri_en; -#define VXGE_HAL_TIM_TIMER_RI_ENABLE 1 -#define VXGE_HAL_TIM_TIMER_RI_DISABLE 0 -#define VXGE_HAL_TIM_TIMER_RI_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rtimer_event_sf; -#define VXGE_HAL_MIN_TIM_RTIMER_EVENT_SF 0 -#define VXGE_HAL_MAX_TIM_RTIMER_EVENT_SF 15 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_EVENT_SF \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rtimer_val; -#define VXGE_HAL_MIN_TIM_RTIMER_VAL 0 -#define VXGE_HAL_MAX_TIM_RTIMER_VAL 67108864 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_VAL VXGE_HAL_USE_FLASH_DEFAULT - - u32 util_sel; -#define VXGE_HAL_TIM_UTIL_SEL_VPATH(n) n -#define VXGE_HAL_TIM_UTIL_SEL_LEGACY_TX_NET_UTIL 17 -#define VXGE_HAL_TIM_UTIL_SEL_LEGACY_RX_NET_UTIL 18 -#define VXGE_HAL_TIM_UTIL_SEL_LEGACY_TX_RX_AVE_NET_UTIL 19 -#define VXGE_HAL_TIM_UTIL_SEL_VPATH(n) n -#define VXGE_HAL_TIM_UTIL_SEL_VPATH(n) n -#define VXGE_HAL_TIM_UTIL_SEL_HOST_UTIL_VPATH(n) (32+n) -#define VXGE_HAL_TIM_UTIL_SEL_TIM_UTIL_VPATH(n) 63 -#define VXGE_HAL_TIM_UTIL_SEL_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 ltimer_val; -#define VXGE_HAL_MIN_TIM_LTIMER_VAL 0 -#define VXGE_HAL_MAX_TIM_LTIMER_VAL 67108864 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_LTIMER_VAL VXGE_HAL_USE_FLASH_DEFAULT - - /* Line utilization interrupts */ - u32 txfrm_cnt_en; -#define VXGE_HAL_TXFRM_CNT_EN_ENABLE 1 -#define VXGE_HAL_TXFRM_CNT_EN_DISABLE 0 -#define VXGE_HAL_TXFRM_CNT_EN_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 txd_cnt_en; -#define VXGE_HAL_TXD_CNT_EN_ENABLE 1 -#define VXGE_HAL_TXD_CNT_EN_DISABLE 0 -#define VXGE_HAL_TXD_CNT_EN_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 urange_a; -#define VXGE_HAL_MIN_TIM_URANGE_A 0 -#define VXGE_HAL_MAX_TIM_URANGE_A 100 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_A VXGE_HAL_USE_FLASH_DEFAULT - - u32 uec_a; -#define VXGE_HAL_MIN_TIM_UEC_A 0 -#define VXGE_HAL_MAX_TIM_UEC_A 65535 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_A VXGE_HAL_USE_FLASH_DEFAULT - - u32 urange_b; -#define VXGE_HAL_MIN_TIM_URANGE_B 0 -#define VXGE_HAL_MAX_TIM_URANGE_B 100 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_B VXGE_HAL_USE_FLASH_DEFAULT - - u32 uec_b; -#define VXGE_HAL_MIN_TIM_UEC_B 0 -#define VXGE_HAL_MAX_TIM_UEC_B 65535 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_B VXGE_HAL_USE_FLASH_DEFAULT - - u32 urange_c; -#define VXGE_HAL_MIN_TIM_URANGE_C 0 -#define VXGE_HAL_MAX_TIM_URANGE_C 100 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_C VXGE_HAL_USE_FLASH_DEFAULT - - u32 uec_c; -#define VXGE_HAL_MIN_TIM_UEC_C 0 -#define VXGE_HAL_MAX_TIM_UEC_C 65535 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_C VXGE_HAL_USE_FLASH_DEFAULT - - u32 uec_d; -#define VXGE_HAL_MIN_TIM_UEC_D 0 -#define VXGE_HAL_MAX_TIM_UEC_D 65535 -#define VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_D VXGE_HAL_USE_FLASH_DEFAULT - - u32 ufca_intr_thres; -#define VXGE_HAL_MIN_UFCA_INTR_THRES 1 -#define VXGE_HAL_MAX_UFCA_INTR_THRES 4096 -#define VXGE_HAL_USE_FLASH_DEFAULT_UFCA_INTR_THRES VXGE_HAL_USE_FLASH_DEFAULT - - u32 ufca_lo_lim; -#define VXGE_HAL_MIN_UFCA_LO_LIM 1 -#define VXGE_HAL_MAX_UFCA_LO_LIM 16 -#define VXGE_HAL_USE_FLASH_DEFAULT_UFCA_LO_LIM VXGE_HAL_USE_FLASH_DEFAULT - - u32 ufca_hi_lim; -#define VXGE_HAL_MIN_UFCA_HI_LIM 1 -#define VXGE_HAL_MAX_UFCA_HI_LIM 256 -#define VXGE_HAL_USE_FLASH_DEFAULT_UFCA_HI_LIM VXGE_HAL_USE_FLASH_DEFAULT - - u32 ufca_lbolt_period; -#define VXGE_HAL_MIN_UFCA_LBOLT_PERIOD 1 -#define VXGE_HAL_MAX_UFCA_LBOLT_PERIOD 1024 -#define VXGE_HAL_USE_FLASH_DEFAULT_UFCA_LBOLT_PERIOD \ - VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_tim_intr_config_t; - -/* - * struct vxge_hal_fifo_config_t - Configuration of fifo. - * @enable: Is this fifo to be commissioned - * @fifo_length: Numbers of TxDLs (that is, lists of Tx descriptors)per queue. - * @max_frags: Max number of Tx buffers per TxDL (that is, per single - * transmit operation). - * No more than 256 transmit buffers can be specified. - * @alignment_size: per Tx fragment DMA-able memory used to align transmit data - * (e.g., to align on a cache line). - * @max_aligned_frags: Number of fragments to be aligned out of - * maximum fragments (see @max_frags). - * @intr: Boolean. Use 1 to generate interrupt for each completed TxDL. - * Use 0 otherwise. - * @no_snoop_bits: If non-zero, specifies no-snoop PCI operation, - * which generally improves latency of the host bridge operation - * (see PCI specification). For valid values please refer - * to vxge_hal_fifo_config_t {} in the driver sources. - * Configuration of all X3100 fifos. - * Note: Valid (min, max) range for each attribute is specified in the body of - * the vxge_hal_fifo_config_t {} structure. - */ -typedef struct vxge_hal_fifo_config_t { - u32 enable; -#define VXGE_HAL_FIFO_ENABLE 1 -#define VXGE_HAL_FIFO_DISABLE 0 -#define VXGE_HAL_FIFO_DEFAULT 1 - - u32 fifo_length; -#define VXGE_HAL_MIN_FIFO_LENGTH 1 -#define VXGE_HAL_MAX_FIFO_LENGTH 12*1024 -#define VXGE_HAL_DEF_FIFO_LENGTH 512 - - u32 max_frags; -#define VXGE_HAL_MIN_FIFO_FRAGS 1 -#define VXGE_HAL_MAX_FIFO_FRAGS 256 -#define VXGE_HAL_DEF_FIFO_FRAGS 256 - - u32 alignment_size; -#define VXGE_HAL_MIN_FIFO_ALIGNMENT_SIZE 0 -#define VXGE_HAL_MAX_FIFO_ALIGNMENT_SIZE 65536 -#define VXGE_HAL_DEF_FIFO_ALIGNMENT_SIZE __vxge_os_cacheline_size - - u32 max_aligned_frags; - /* range: (1, @max_frags) */ - - u32 intr; -#define VXGE_HAL_FIFO_QUEUE_INTR_ENABLE 1 -#define VXGE_HAL_FIFO_QUEUE_INTR_DISABLE 0 -#define VXGE_HAL_FIFO_QUEUE_INTR_DEFAULT 0 - - u32 no_snoop_bits; -#define VXGE_HAL_FIFO_NO_SNOOP_DISABLED 0 -#define VXGE_HAL_FIFO_NO_SNOOP_TXD 1 -#define VXGE_HAL_FIFO_NO_SNOOP_FRM 2 -#define VXGE_HAL_FIFO_NO_SNOOP_ALL 3 -#define VXGE_HAL_FIFO_NO_SNOOP_DEFAULT 0 - -} vxge_hal_fifo_config_t; - -/* - * struct vxge_hal_ring_config_t - Ring configurations. - * @enable: Is this ring to be commissioned - * @ring_length: Numbers of RxDs in the ring - * @buffer_mode: Receive buffer mode (1, 2, 3, or 5); for details please refer - * to X3100 User Guide. - * @scatter_mode: X3100 supports two receive scatter modes: A and B. - * For details please refer to X3100 User Guide. - * @post_mode: The RxD post mode. - * @max_frm_len: Maximum frame length that can be received on _that_ ring. - * Setting this field to VXGE_HAL_USE_FLASH_DEFAULT ensures that - * the ring will "accept" - * MTU-size frames (note that MTU can be changed at runtime). - * Any value other than (VXGE_HAL_USE_FLASH_DEFAULT) specifies a - * certain "hard" limit on the receive frame sizes. The field can - * be used to activate receive frame-length based steering. - * @no_snoop_bits: If non-zero, specifies no-snoop PCI operation, - * which generally improves latency of the host bridge operation - * (see PCI specification). For valid values please refer - * to vxge_hal_ring_config_t {} in the driver sources. - * @rx_timer_val: The number of 32ns periods that would be counted between two - * timer interrupts. - * @greedy_return: If Set it forces the device to return absolutely all RxD - * that are consumed and still on board when a timer interrupt - * triggers. If Clear, then if the device has already returned - * RxD before current timer interrupt trigerred and after the - * previous timer interrupt triggered, then the device is not - * forced to returned the rest of the consumed RxD that it has - * on board which account for a byte count less than the one - * programmed into PRC_CFG6.RXD_CRXDT field - * @rx_timer_ci: TBD - * @backoff_interval_us: Time (in microseconds), after which X3100 - * tries to download RxDs posted by the host. - * Note that the "backoff" does not happen if host posts receive - * descriptors in the timely fashion. - * @indicate_max_pkts: Sets maximum number of received frames to be processed - * within single interrupt. - * @sw_lro_sessions: Number of LRO Sessions - * @sw_lro_sg_size: Size of LROable segment - * @sw_lro_frm_len: Length of LROable frame - * - * Ring configuration. - */ -typedef struct vxge_hal_ring_config_t { - u32 enable; -#define VXGE_HAL_RING_ENABLE 1 -#define VXGE_HAL_RING_DISABLE 0 -#define VXGE_HAL_RING_DEFAULT 1 - - u32 ring_length; -#define VXGE_HAL_MIN_RING_LENGTH 1 -#define VXGE_HAL_MAX_RING_LENGTH 8096 -#define VXGE_HAL_DEF_RING_LENGTH 512 - - u32 buffer_mode; -#define VXGE_HAL_RING_RXD_BUFFER_MODE_1 1 -#define VXGE_HAL_RING_RXD_BUFFER_MODE_3 3 -#define VXGE_HAL_RING_RXD_BUFFER_MODE_5 5 -#define VXGE_HAL_RING_RXD_BUFFER_MODE_DEFAULT 1 - - u32 scatter_mode; -#define VXGE_HAL_RING_SCATTER_MODE_A 0 -#define VXGE_HAL_RING_SCATTER_MODE_B 1 -#define VXGE_HAL_RING_SCATTER_MODE_C 2 -#define VXGE_HAL_RING_SCATTER_MODE_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 post_mode; -#define VXGE_HAL_RING_POST_MODE_LEGACY 0 -#define VXGE_HAL_RING_POST_MODE_DOORBELL 1 -#define VXGE_HAL_RING_POST_MODE_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 max_frm_len; -#define VXGE_HAL_MIN_RING_MAX_FRM_LEN VXGE_HAL_MIN_MTU -#define VXGE_HAL_MAX_RING_MAX_FRM_LEN VXGE_HAL_MAX_MTU -#define VXGE_HAL_MAX_RING_FRM_LEN_USE_MTU VXGE_HAL_USE_FLASH_DEFAULT - - u32 no_snoop_bits; -#define VXGE_HAL_RING_NO_SNOOP_DISABLED 0 -#define VXGE_HAL_RING_NO_SNOOP_RXD 1 -#define VXGE_HAL_RING_NO_SNOOP_FRM 2 -#define VXGE_HAL_RING_NO_SNOOP_ALL 3 -#define VXGE_HAL_RING_NO_SNOOP_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rx_timer_val; -#define VXGE_HAL_RING_MIN_RX_TIMER_VAL 0 -#define VXGE_HAL_RING_MAX_RX_TIMER_VAL 536870912 -#define VXGE_HAL_RING_USE_FLASH_DEFAULT_RX_TIMER_VAL \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 greedy_return; -#define VXGE_HAL_RING_GREEDY_RETURN_ENABLE 1 -#define VXGE_HAL_RING_GREEDY_RETURN_DISABLE 0 -#define VXGE_HAL_RING_GREEDY_RETURN_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rx_timer_ci; -#define VXGE_HAL_RING_RX_TIMER_CI_ENABLE 1 -#define VXGE_HAL_RING_RX_TIMER_CI_DISABLE 0 -#define VXGE_HAL_RING_RX_TIMER_CI_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 backoff_interval_us; -#define VXGE_HAL_MIN_BACKOFF_INTERVAL_US 1 -#define VXGE_HAL_MAX_BACKOFF_INTERVAL_US 125000 -#define VXGE_HAL_USE_FLASH_DEFAULT_BACKOFF_INTERVAL_US \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 indicate_max_pkts; -#define VXGE_HAL_MIN_RING_INDICATE_MAX_PKTS 1 -#define VXGE_HAL_MAX_RING_INDICATE_MAX_PKTS 65536 -#define VXGE_HAL_DEF_RING_INDICATE_MAX_PKTS 65536 - - -} vxge_hal_ring_config_t; - - -/* - * struct vxge_hal_vp_config_t - Configuration of virtual path - * @vp_id: Virtual Path Id - * @wire_port: Wire port to be associated with the vpath - * @bandwidth_limit: Desired bandwidth limit for this vpath. - * 0 = Disable limit, 1 = 8192 kBps, 2 = 16384 kBps, ... , - * >152588 = 1 GBps - * @no_snoop: Enable or disable no snoop for vpath - * @ring: See vxge_hal_ring_config_t {}. - * @fifo: See vxge_hal_fifo_config_t {}. - * @dmq: See vxge_hal_dmq_config_t {}; - * @umq: See vxge_hal_umq_config_t {}; - * @lro: See vxge_hal_lro_config_t {}; - * @tti: Configuration of interrupt associated with Transmit. - * see vxge_hal_tim_intr_config_t(); - * @rti: Configuration of interrupt associated with Receive. - * see vxge_hal_tim_intr_config_t(); - * @mtu: mtu size used on this port. - * @tpa_lsov2_en: LSOv2 Behaviour for IP ID roll-over - * @tpa_ignore_frame_error: Ignore Frame Error. TPA may detect frame integrity - * errors as it processes each frame. If this bit is set to '0', - * the TPA will tag such frames as invalid and they will be dropped - * by the transmit MAC. If the bit is set to '1',the frame will not - * be tagged as "errored". Detectable errors include: - * 1) early end-of-frame error, which occurs when the frame ends - * before the number of bytes predicted by the IP "total length" - * field have been received; - * 2) IP version mismatches; - * 3) IPv6 packets that include routing headers that are not type 0 - * 4) Frames which contain IP packets but have an illegal SNAP-OUI - * or LLC-CTRL fields, unless IGNORE_SNAP_OUI or IGNORE_LLC_CTRL - * are set (see below). - * @tpa_ipv6_keep_searching: If unknown IPv6 header is found, - * 0 - stop searching for TCP - * 1 - keep searching for TCP - * @tpa_l4_pshdr_present: If asserted true, indicates the host has provided a - * valid pseudo header for TCP or UDP running over IPv4 or IPv6 - * @tpa_support_mobile_ipv6_hdrs: This register is somewhat equivalent to - * asserting both Hercules register fields LSO_RT2_EN and - * LSO_IPV6_HAO_EN. Enable/disable support for Type 2 Routing - * Headers, and for Mobile-IPv6 Home Address Option (HAO), - * as defined by mobile-ipv6. - * @rpa_ipv4_tcp_incl_ph: Determines if the pseudo-header is included in the - * calculation of the L4 checksum that is passed to the host. This - * field applies to TCP/IPv4 packets only. This field affects both - * non-offload and LRO traffic. Note that the RPA always includes - * the pseudo-header in the "Checksum Ok" L4 checksum calculation - * i.e. the checksum that decides whether a frame is a candidate to - * be offloaded. - * 0 - Do not include the pseudo-header in L4 checksum calculation. - * This setting should be used if the adapter is incorrectly - * calculating the pseudo-header. - * 1 - Include the pseudo-header in L4 checksum calculation - * @rpa_ipv6_tcp_incl_ph: Determines whether the pseudo-header is included in - * the calculation of the L4 checksum that is passed to the host. - * This field applies to TCP/IPv6 packets only. This field affects - * both non-offload and LRO traffic. Note that the RPA always - * includes the pseudo-header in the "Checksum Ok" L4 checksum - * calculation. i.e. the checksum that decides whether a frame - * is a candidate to be offloaded. - * 0 - Do not include the pseudo-header in L4 checksum calculation. - * This setting should be used if the adapter is incorrectly - * calculating the pseudo-header. - * 1 - Include the pseudo-header in L4 checksum calculation - * @rpa_ipv4_udp_incl_ph: Determines whether the pseudo-header is included in - * the calculation of the L4 checksum that is passed to the host. - * This field applies to UDP/IPv4 packets only. It only affects - * non-offload traffic(since UDP frames are not candidates for LRO) - * 0 - Do not include the pseudo-header in L4 checksum calculation. - * This setting should be used if the adapter is incorrectly - * calculating the pseudo-header. - * 1 - Include the pseudo-header in L4 checksum calculation - * @rpa_ipv6_udp_incl_ph: Determines if the pseudo-header is included in the - * calculation of the L4 checksum that is passed to the host. This - * field applies to UDP/IPv6 packets only. It only affects - * non-offload traffic(since UDP frames are not candidates for LRO) - * 0 - Do not include the pseudo-header in L4 checksum calculation. - * This setting should be used if the adapter is incorrectly - * calculating the pseudo-header. - * 1 - Include the pseudo-header in L4 checksum calculation - * @rpa_l4_incl_cf: Determines whether the checksum field (CF) of the received - * frame is included in the calculation of the L4 checksum that is - * passed to the host. This field affects both non-offload and LRO - * traffic. Note that the RPA always includes the checksum field in - * the "Checksum Ok" L4 checksum calculation -- i.e. the checksum - * that decides whether a frame is a candidate to be offloaded. - * 0 - Do not include the checksum field in L4 checksum calculation - * 1 - Include the checksum field in L4 checksum calculation - * @rpa_strip_vlan_tag: Strip VLAN Tag enable/disable. Instructs the device to - * remove the VLAN tag from all received tagged frames that are not - * replicated at the internal L2 switch. - * 0 - Do not strip the VLAN tag. - * 1 - Strip the VLAN tag. Regardless of this setting,VLAN tags are - * always placed into the RxDMA descriptor. - * @rpa_l4_comp_csum: Determines whether the calculated L4 checksum should be - * complemented before it is passed to the host This field affects - * both non-offload and LRO traffic. - * 0 - Do not complement the calculated L4 checksum. - * 1 - Complement the calculated L4 checksum - * @rpa_l3_incl_cf: Determines whether the checksum field (CF) of the received - * frame is included in the calculation of the L3 checksum that is - * passed to the host. This field affects both non-offload and LRO - * traffic. Note that the RPA always includes the checksum field in - * the "Checksum Ok" L3 checksum calculation--i.e. the checksum - * that decides whether a frame is a candidate to be offloaded. - * 0 - Do not include the checksum field in L3 checksum calculation - * 1 - Include the checksum field in L3 checksum calculation - * @rpa_l3_comp_csum: Determines whether the calculated L3 checksum should be - * complemented before it is passed to the host This field affects - * both non-offload and LRO traffic. - * 0 - Do not complement the calculated L3 checksum. - * 1 - Complement the calculated L3 checksum - * @rpa_ucast_all_addr_en: Enables frames with any unicast address (as its - * destination address) to be passed to the host. - * @rpa_mcast_all_addr_en: Enables frames with any multicast address (as its - * destination address) to be passed to the host. - * @rpa_bcast_en: Enables frames with any broadicast address (as its - * destination address) to be passed to the host. - * @rpa_all_vid_en: romiscuous mode, it overrides the value held in this field. - * 0 - Disable; - * 1 - Enable - * Note: RXMAC_GLOBAL_CFG.AUTHORIZE_VP_ALL_VID must be set to - * allow this. - * @vp_queue_l2_flow: Allows per-VPATH receive queue from - * contributing to L2 flow control. Has precedence over - * RMAC_PAUSE_CFG_PORTn.LIMITER_EN. - * 0 - Queue is not allowed to contribute to L2 flow control. - * 1 - Queue is allowed to contribute to L2 flow control. - * - * This structure is used by the driver to pass the configuration parameters to - * configure Virtual Path. - */ -typedef struct vxge_hal_vp_config_t { - u32 vp_id; - - u32 wire_port; -#define VXGE_HAL_VPATH_USE_DEFAULT_PORT VXGE_HAL_FIFO_HOST_STEER_NORMAL -#define VXGE_HAL_VPATH_USE_PORT0 VXGE_HAL_FIFO_HOST_STEER_PORT0 -#define VXGE_HAL_VPATH_USE_PORT1 VXGE_HAL_FIFO_HOST_STEER_PORT1 -#define VXGE_HAL_VPATH_USE_BOTH VXGE_HAL_FIFO_HOST_STEER_BOTH - - u32 bandwidth; -#define VXGE_HAL_VPATH_BW_LIMIT_MAX 10000 -#define VXGE_HAL_VPATH_BW_LIMIT_MIN 100 -#define VXGE_HAL_VPATH_BW_LIMIT_DEFAULT 0XFFFFFFFF -#define VXGE_HAL_TX_BW_VPATH_LIMIT 8 - - u32 priority; -#define VXGE_HAL_VPATH_PRIORITY_MIN 0 -#define VXGE_HAL_VPATH_PRIORITY_MAX 3 -#define VXGE_HAL_VPATH_PRIORITY_DEFAULT 0XFFFFFFFF - - u32 no_snoop; -#define VXGE_HAL_VPATH_NO_SNOOP_ENABLE 1 -#define VXGE_HAL_VPATH_NO_SNOOP_DISABLE 0 -#define VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - vxge_hal_ring_config_t ring; - vxge_hal_fifo_config_t fifo; - - vxge_hal_tim_intr_config_t tti; - vxge_hal_tim_intr_config_t rti; - - u32 mtu; -#define VXGE_HAL_VPATH_MIN_INITIAL_MTU VXGE_HAL_MIN_MTU -#define VXGE_HAL_VPATH_MAX_INITIAL_MTU VXGE_HAL_MAX_MTU -#define VXGE_HAL_VPATH_USE_FLASH_DEFAULT_INITIAL_MTU \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 tpa_lsov2_en; -#define VXGE_HAL_VPATH_TPA_LSOV2_EN_ENABLE 1 -#define VXGE_HAL_VPATH_TPA_LSOV2_EN_DISABLE 0 -#define VXGE_HAL_VPATH_TPA_LSOV2_EN_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 tpa_ignore_frame_error; -#define VXGE_HAL_VPATH_TPA_IGNORE_FRAME_ERROR_ENABLE 1 -#define VXGE_HAL_VPATH_TPA_IGNORE_FRAME_ERROR_DISABLE 0 -#define VXGE_HAL_VPATH_TPA_IGNORE_FRAME_ERROR_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 tpa_ipv6_keep_searching; -#define VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_ENABLE 1 -#define VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_DISABLE 0 -#define VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 tpa_l4_pshdr_present; -#define VXGE_HAL_VPATH_TPA_L4_PSHDR_PRESENT_ENABLE 1 -#define VXGE_HAL_VPATH_TPA_L4_PSHDR_PRESENT_DISABLE 0 -#define VXGE_HAL_VPATH_TPA_L4_PSHDR_PRESENT_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 tpa_support_mobile_ipv6_hdrs; -#define VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_ENABLE 1 -#define VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_DISABLE 0 -#define VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT -#define VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_DEFAULT \ - VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_USE_FLASH_DEFAULT - - u32 rpa_ipv4_tcp_incl_ph; -#define VXGE_HAL_VPATH_RPA_IPV4_TCP_INCL_PH_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_IPV4_TCP_INCL_PH_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_IPV4_TCP_INCL_PH_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_ipv6_tcp_incl_ph; -#define VXGE_HAL_VPATH_RPA_IPV6_TCP_INCL_PH_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_IPV6_TCP_INCL_PH_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_IPV6_TCP_INCL_PH_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_ipv4_udp_incl_ph; -#define VXGE_HAL_VPATH_RPA_IPV4_UDP_INCL_PH_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_IPV4_UDP_INCL_PH_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_IPV4_UDP_INCL_PH_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_ipv6_udp_incl_ph; -#define VXGE_HAL_VPATH_RPA_IPV6_UDP_INCL_PH_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_IPV6_UDP_INCL_PH_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_IPV6_UDP_INCL_PH_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_l4_incl_cf; -#define VXGE_HAL_VPATH_RPA_L4_INCL_CF_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_L4_INCL_CF_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_L4_INCL_CF_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_strip_vlan_tag; -#define VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_l4_comp_csum; -#define VXGE_HAL_VPATH_RPA_L4_COMP_CSUM_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_L4_COMP_CSUM_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_L4_COMP_CSUM_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_l3_incl_cf; -#define VXGE_HAL_VPATH_RPA_L3_INCL_CF_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_L3_INCL_CF_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_L3_INCL_CF_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_l3_comp_csum; -#define VXGE_HAL_VPATH_RPA_L3_COMP_CSUM_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_L3_COMP_CSUM_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_L3_COMP_CSUM_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_ucast_all_addr_en; -#define VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_mcast_all_addr_en; -#define VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_bcast_en; -#define VXGE_HAL_VPATH_RPA_BCAST_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_BCAST_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_BCAST_USE_FLASH_DEFAULT VXGE_HAL_USE_FLASH_DEFAULT - - u32 rpa_all_vid_en; -#define VXGE_HAL_VPATH_RPA_ALL_VID_ENABLE 1 -#define VXGE_HAL_VPATH_RPA_ALL_VID_DISABLE 0 -#define VXGE_HAL_VPATH_RPA_ALL_VID_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - - u32 vp_queue_l2_flow; -#define VXGE_HAL_VPATH_VP_Q_L2_FLOW_ENABLE 1 -#define VXGE_HAL_VPATH_VP_Q_L2_FLOW_DISABLE 0 -#define VXGE_HAL_VPATH_VP_Q_L2_FLOW_USE_FLASH_DEFAULT \ - VXGE_HAL_USE_FLASH_DEFAULT - -} vxge_hal_vp_config_t; - -/* - * struct vxge_hal_device_config_t - Device configuration. - * @dma_blockpool_min: Minimum blocks in the DMA pool - * @dma_blockpool_initial: Initial size of DMA Pool - * @dma_blockpool_incr: Number of blocks to request each time number of blocks - * in the pool reaches dma_pool_min - * @dma_blockpool_max: Maximum blocks in DMA pool - * @mrpcim_config: MRPCIM section config. Used only for the privileged mode ULD - * instance. - * @isr_polling_cnt: Maximum number of times to "poll" for Tx and Rx - * completions. Used in vxge_hal_device_handle_irq(). - * @max_payload_size: Maximum TLP payload size for the device/fFunction. - * As a Receiver, the Function/device must handle TLPs as large - * as the set value; as . As a Transmitter, the Function/device - * must not generate TLPs exceeding the set value. Permissible - * values that can be programmed are indicated by the - * Max_Payload_Size Supported in the Device Capabilities register - * @mmrb_count: Maximum Memory Read Byte Count. Use (VXGE_HAL_USE_FLASH_DEFAULT) - * to use default BIOS value. - * @stats_refresh_time_sec: Sets the default interval for automatic stats - * transfer to the host. This includes MAC stats as well as - * PCI stats. - * @intr_mode: Line, or MSI-X interrupt. - * - * @dump_on_unknown: Dump adapter state ("about", statistics, registers) - * on UNKNWON#. - * @dump_on_serr: Dump adapter state ("about", statistics, registers) on SERR#. - * @dump_on_critical: Dump adapter state ("about", statistics, registers) - * on CRITICAL#. - * @dump_on_eccerr: Dump adapter state ("about", statistics, registers) on - * ECC error. - * @rth_en: Enable Receive Traffic Hashing(RTH) using IT(Indirection Table). - * @rth_it_type: RTH IT table programming type - * @rts_mac_en: Enable Receive Traffic Steering using MAC destination address - * @rts_qos_en: TBD - * @rts_port_en: TBD - * @vp_config: Configuration for virtual paths - * @max_cqe_groups: The maximum number of adapter CQE group blocks a CQRQ - * can own at any one time. - * @max_num_wqe_od_groups: The maximum number of WQE Headers/OD Groups that - * this S-RQ can own at any one time. - * @no_wqe_threshold: Maximum number of times adapter polls WQE Hdr blocks for - * WQEs before generating a message or interrupt. - * @refill_threshold_high:This field provides a hysteresis upper bound for - * automatic adapter refill operations. - * @refill_threshold_low:This field provides a hysteresis lower bound for - * automatic adapter refill operations. - * @eol_policy: This field sets the policy for handling the end of list - * condition. - * 2'b00 - When EOL is reached, poll until last block wrapper - * size is no longer 0. - * 2'b01 - Send UMQ message when EOL is reached. - * 2'b1x - Poll until the poll_count_max is reached and - * if still EOL, send UMQ message - * @eol_poll_count_max:sets the maximum number of times the queue manager will - * poll fora non-zero block wrapper before giving up and sending - * a UMQ message - * @ack_blk_limit: Limit on the maximum number of ACK list blocks that can be - * held by a session at any one time. - * @poll_or_doorbell: TBD - * @stats_read_method: Stats read method.(DMA or PIO) - * @device_poll_millis: Specify the interval (in mulliseconds) to wait for - * register reads - * @debug_level: Debug logging level. see vxge_debug_level_e {} - * @debug_mask: Module mask for debug logging level. for masks see vxge_debug.h - * @lro_enable: SW LRO enable mask - * @tracebuf_size: Size of the trace buffer. Set it to '0' to disable. - * - * X3100 configuration. - * Contains per-device configuration parameters, including: - * - latency timer (settable via PCI configuration space); - * - maximum number of split transactions; - * - maximum number of shared splits; - * - stats sampling interval, etc. - * - * In addition, vxge_hal_device_config_t {} includes "subordinate" - * configurations, including: - * - fifos and rings; - * - MAC (done at firmware level). - * - * See X3100 User Guide for more details. - * Note: Valid (min, max) range for each attribute is specified in the body of - * the vxge_hal_device_config_t {} structure. Please refer to the - * corresponding include file. - * See also: vxge_hal_tim_intr_config_t {}. - */ -typedef struct vxge_hal_device_config_t { - u32 dma_blockpool_min; - u32 dma_blockpool_initial; - u32 dma_blockpool_incr; - u32 dma_blockpool_max; -#define VXGE_HAL_MIN_DMA_BLOCK_POOL_SIZE 0 -#define VXGE_HAL_INITIAL_DMA_BLOCK_POOL_SIZE 0 -#define VXGE_HAL_INCR_DMA_BLOCK_POOL_SIZE 4 -#define VXGE_HAL_MAX_DMA_BLOCK_POOL_SIZE 4096 - - vxge_hal_mrpcim_config_t mrpcim_config; - - u32 isr_polling_cnt; -#define VXGE_HAL_MIN_ISR_POLLING_CNT 0 -#define VXGE_HAL_MAX_ISR_POLLING_CNT 65536 -#define VXGE_HAL_DEF_ISR_POLLING_CNT 1 - - u32 max_payload_size; -#define VXGE_HAL_USE_BIOS_DEFAULT_PAYLOAD_SIZE VXGE_HAL_USE_FLASH_DEFAULT -#define VXGE_HAL_MAX_PAYLOAD_SIZE_128 0 -#define VXGE_HAL_MAX_PAYLOAD_SIZE_256 1 -#define VXGE_HAL_MAX_PAYLOAD_SIZE_512 2 -#define VXGE_HAL_MAX_PAYLOAD_SIZE_1024 3 -#define VXGE_HAL_MAX_PAYLOAD_SIZE_2048 4 -#define VXGE_HAL_MAX_PAYLOAD_SIZE_4096 5 - - u32 mmrb_count; -#define VXGE_HAL_USE_BIOS_DEFAULT_MMRB_COUNT VXGE_HAL_USE_FLASH_DEFAULT -#define VXGE_HAL_MMRB_COUNT_128 0 -#define VXGE_HAL_MMRB_COUNT_256 1 -#define VXGE_HAL_MMRB_COUNT_512 2 -#define VXGE_HAL_MMRB_COUNT_1024 3 -#define VXGE_HAL_MMRB_COUNT_2048 4 -#define VXGE_HAL_MMRB_COUNT_4096 5 - - u32 stats_refresh_time_sec; -#define VXGE_HAL_STATS_REFRESH_DISABLE 0 -#define VXGE_HAL_MIN_STATS_REFRESH_TIME 1 -#define VXGE_HAL_MAX_STATS_REFRESH_TIME 300 -#define VXGE_HAL_USE_FLASH_DEFAULT_STATS_REFRESH_TIME 30 - - u32 intr_mode; -#define VXGE_HAL_INTR_MODE_IRQLINE 0 -#define VXGE_HAL_INTR_MODE_MSIX 1 -#define VXGE_HAL_INTR_MODE_MSIX_ONE_SHOT 2 -#define VXGE_HAL_INTR_MODE_EMULATED_INTA 3 -#define VXGE_HAL_INTR_MODE_DEF 0 - - u32 dump_on_unknown; -#define VXGE_HAL_DUMP_ON_UNKNOWN_DISABLE 0 -#define VXGE_HAL_DUMP_ON_UNKNOWN_ENABLE 1 -#define VXGE_HAL_DUMP_ON_UNKNOWN_DEFAULT 0 - - u32 dump_on_serr; -#define VXGE_HAL_DUMP_ON_SERR_DISABLE 0 -#define VXGE_HAL_DUMP_ON_SERR_ENABLE 1 -#define VXGE_HAL_DUMP_ON_SERR_DEFAULT 0 - - u32 dump_on_critical; -#define VXGE_HAL_DUMP_ON_CRITICAL_DISABLE 0 -#define VXGE_HAL_DUMP_ON_CRITICAL_ENABLE 1 -#define VXGE_HAL_DUMP_ON_CRITICAL_DEFAULT 0 - - u32 dump_on_eccerr; -#define VXGE_HAL_DUMP_ON_ECCERR_DISABLE 0 -#define VXGE_HAL_DUMP_ON_ECCERR_ENABLE 1 -#define VXGE_HAL_DUMP_ON_ECCERR_DEFAULT 0 - - u32 rth_en; -#define VXGE_HAL_RTH_DISABLE 0 -#define VXGE_HAL_RTH_ENABLE 1 -#define VXGE_HAL_RTH_DEFAULT 0 - - u32 rth_it_type; -#define VXGE_HAL_RTH_IT_TYPE_SOLO_IT 0 -#define VXGE_HAL_RTH_IT_TYPE_MULTI_IT 1 -#define VXGE_HAL_RTH_IT_TYPE_DEFAULT 0 - - u32 rts_mac_en; -#define VXGE_HAL_RTS_MAC_DISABLE 0 -#define VXGE_HAL_RTS_MAC_ENABLE 1 -#define VXGE_HAL_RTS_MAC_DEFAULT 0 - - u32 rts_qos_en; -#define VXGE_HAL_RTS_QOS_DISABLE 0 -#define VXGE_HAL_RTS_QOS_ENABLE 1 -#define VXGE_HAL_RTS_QOS_DEFAULT 0 - - u32 rts_port_en; -#define VXGE_HAL_RTS_PORT_DISABLE 0 -#define VXGE_HAL_RTS_PORT_ENABLE 1 -#define VXGE_HAL_RTS_PORT_DEFAULT 0 - - vxge_hal_vp_config_t vp_config[VXGE_HAL_MAX_VIRTUAL_PATHS]; - - u32 max_cqe_groups; -#define VXGE_HAL_MIN_MAX_CQE_GROUPS 1 -#define VXGE_HAL_MAX_MAX_CQE_GROUPS 16 -#define VXGE_HAL_DEF_MAX_CQE_GROUPS 16 - - u32 max_num_wqe_od_groups; -#define VXGE_HAL_MIN_MAX_NUM_OD_GROUPS 1 -#define VXGE_HAL_MAX_MAX_NUM_OD_GROUPS 16 -#define VXGE_HAL_DEF_MAX_NUM_OD_GROUPS 16 - - u32 no_wqe_threshold; -#define VXGE_HAL_MIN_NO_WQE_THRESHOLD 1 -#define VXGE_HAL_MAX_NO_WQE_THRESHOLD 16 -#define VXGE_HAL_DEF_NO_WQE_THRESHOLD 16 - - u32 refill_threshold_high; -#define VXGE_HAL_MIN_REFILL_THRESHOLD_HIGH 1 -#define VXGE_HAL_MAX_REFILL_THRESHOLD_HIGH 16 -#define VXGE_HAL_DEF_REFILL_THRESHOLD_HIGH 16 - - u32 refill_threshold_low; -#define VXGE_HAL_MIN_REFILL_THRESHOLD_LOW 1 -#define VXGE_HAL_MAX_REFILL_THRESHOLD_LOW 16 -#define VXGE_HAL_DEF_REFILL_THRESHOLD_LOW 16 - - u32 ack_blk_limit; -#define VXGE_HAL_MIN_ACK_BLOCK_LIMIT 1 -#define VXGE_HAL_MAX_ACK_BLOCK_LIMIT 16 -#define VXGE_HAL_DEF_ACK_BLOCK_LIMIT 16 - - u32 poll_or_doorbell; -#define VXGE_HAL_POLL_OR_DOORBELL_POLL 1 -#define VXGE_HAL_POLL_OR_DOORBELL_DOORBELL 0 -#define VXGE_HAL_POLL_OR_DOORBELL_DEFAULT 1 - - u32 stats_read_method; -#define VXGE_HAL_STATS_READ_METHOD_DMA 1 -#define VXGE_HAL_STATS_READ_METHOD_PIO 0 -#define VXGE_HAL_STATS_READ_METHOD_DEFAULT 1 - - u32 device_poll_millis; -#define VXGE_HAL_MIN_DEVICE_POLL_MILLIS 1 -#define VXGE_HAL_MAX_DEVICE_POLL_MILLIS 100000 -#define VXGE_HAL_DEF_DEVICE_POLL_MILLIS 1000 - - vxge_debug_level_e debug_level; - - u32 debug_mask; - - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - u32 tracebuf_size; -#define VXGE_HAL_MIN_CIRCULAR_ARR 4096 -#define VXGE_HAL_MAX_CIRCULAR_ARR 65536 -#define VXGE_HAL_DEF_CIRCULAR_ARR 16384 -#endif -} vxge_hal_device_config_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_CONFIG_H */ Index: sys/dev/vxge/include/vxgehal-ll.h =================================================================== --- sys/dev/vxge/include/vxgehal-ll.h +++ sys/dev/vxge/include/vxgehal-ll.h @@ -1,6123 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_LL_H -#define VXGE_HAL_LL_H - -#include -#include -#include -#include "vxgehal-status.h" -#include -#include -#include -#include -#include -#include -#include -#include - -__EXTERN_BEGIN_DECLS - -/* - * Driver - */ - -/* - * enum vxge_hal_xpak_alarm_type_e - XPAK Alarm types - * @VXGE_HAL_XPAK_ALARM_EXCESS_TEMP: Excess temparature alarm - * @VXGE_HAL_XPAK_ALARM_EXCESS_BIAS_CURRENT: Excess bias current alarm - * @VXGE_HAL_XPAK_ALARM_EXCESS_LASER_OUTPUT: Excess laser output alarm - * - * XPAK alarm types - */ -typedef enum vxge_hal_xpak_alarm_type_e { - VXGE_HAL_XPAK_ALARM_EXCESS_TEMP = 1, - VXGE_HAL_XPAK_ALARM_EXCESS_BIAS_CURRENT = 2, - VXGE_HAL_XPAK_ALARM_EXCESS_LASER_OUTPUT = 3, -} vxge_hal_xpak_alarm_type_e; - -/* - * function vxge_uld_sched_timer_cb_f - Per-device periodic timer - * callback. - * @devh: HAL device handle. - * @userdata: Per-device user data (a.k.a. context) specified via - * vxge_hal_device_initialize(). - * - * Periodic or one-shot timer callback. If specified (that is, not NULL) - * HAL invokes this callback periodically. The call is performed in the - * interrupt context, or more exactly, in the context of HAL's ISR - * vxge_hal_device_continue_irq(). - * - * See also: vxge_hal_device_initialize {} - */ -typedef void (*vxge_uld_sched_timer_cb_f) ( - vxge_hal_device_h devh, - void *userdata); - -/* - * function vxge_uld_link_up_f - Link-Up callback provided by upper-layer - * driver. - * @devh: HAL device handle. - * @userdata: Opaque context set by the ULD via - * vxge_hal_device_private_set() - * (typically - at HAL device iinitialization time). - * - * Link-up notification callback provided by the ULD. - * This is one of the per-driver callbacks, see vxge_hal_uld_cbs_t {}. - * - * See also: vxge_hal_uld_cbs_t {}, vxge_uld_link_down_f {}, - * vxge_hal_driver_initialize(), vxge_hal_device_private_set(). - */ -typedef void (*vxge_uld_link_up_f) ( - vxge_hal_device_h devh, - void *userdata); - -/* - * function vxge_uld_link_down_f - Link-Down callback provided by - * upper-layer driver. - * @devh: HAL device handle. - * @userdata: Opaque context set by the ULD via - * vxge_hal_device_private_set() - * (typically - at HAL device iinitialization time). - * - * Link-Down notification callback provided by the upper-layer driver. - * This is one of the per-driver callbacks, see vxge_hal_uld_cbs_t {}. - * - * See also: vxge_hal_uld_cbs_t {}, vxge_uld_link_up_f {}, - * vxge_hal_driver_initialize(), vxge_hal_device_private_set(). - */ -typedef void (*vxge_uld_link_down_f) ( - vxge_hal_device_h devh, - void *userdata); - -/* - * function vxge_uld_crit_err_f - Critical Error notification callback. - * @devh: HAL device handle. - * @userdata: Opaque context set by the ULD via - * vxge_hal_device_private_set() - * (typically - at HAL device iinitialization time). - * @type: Enumerated hw error, e.g.: double ECC. - * @serr_data: X3100 status. - * @ext_data: Extended data. The contents depends on the @type. - * - * Critical error notification callback provided by the upper-layer driver. - * This is one of the per-driver callbacks, see vxge_hal_uld_cbs_t {}. - * - * See also: vxge_hal_uld_cbs_t {}, vxge_hal_event_e {}, - * vxge_hal_device_private_set(), vxge_hal_driver_initialize(). - */ -typedef void (*vxge_uld_crit_err_f) ( - vxge_hal_device_h devh, - void *userdata, - vxge_hal_event_e type, - u64 ext_data); - -/* - * function vxge_uld_xpak_alarm_log_f - ULD "XPAK alarm log" callback. - * @devh: HAL device handle. - * @port: Port number - * @type: XPAK Alarm type - * - * Unless NULL is specified, HAL invokes the callback after checking XPAK - * counters - */ -typedef void (*vxge_uld_xpak_alarm_log_f) ( - vxge_hal_device_h devh, - u32 port, - vxge_hal_xpak_alarm_type_e type); - -/* - * struct vxge_hal_uld_cbs_t - Upper-layer driver "slow-path" callbacks. - * @link_up: See vxge_uld_link_up_f {}. - * @link_down: See vxge_uld_link_down_f {}. - * @crit_err: See vxge_uld_crit_err_f {}. - * @sched_timer: See vxge_uld_sched_timer_cb_f {}. - * @xpak_alarm_log: - * - * Upper layer driver slow-path (per-driver) callbacks. - * Implemented by ULD and provided to HAL via - * vxge_hal_driver_initialize(). - * Note that these callbacks are not mandatory: HAL will not invoke - * a callback if NULL is specified. - * - * See also: vxge_hal_driver_initialize(). - */ -typedef struct vxge_hal_uld_cbs_t { - vxge_uld_link_up_f link_up; - vxge_uld_link_down_f link_down; - vxge_uld_crit_err_f crit_err; - vxge_uld_sched_timer_cb_f sched_timer; - vxge_uld_xpak_alarm_log_f xpak_alarm_log; -} vxge_hal_uld_cbs_t; - -/* - * vxge_hal_driver_initialize - Initialize HAL. - * @config: HAL configuration, see vxge_hal_driver_config_t {}. - * @uld_callbacks: Upper-layer driver callbacks, e.g. link-up. - * - * HAL initialization entry point. Not to confuse with device initialization - * (note that HAL "contains" zero or more X3100 devices). - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_ERR_BAD_DRIVER_CONFIG - Driver configuration params invalid. - * - */ -vxge_hal_status_e -vxge_hal_driver_initialize( - vxge_hal_driver_config_t *config, - vxge_hal_uld_cbs_t *uld_callbacks); - -/* - * vxge_hal_driver_debug_set - Set the debug module, level and timestamp - * @level: Debug level as defined in enum vxge_debug_level_e - * - * This routine is used to dynamically change the debug output - */ -void -vxge_hal_driver_debug_set( - vxge_debug_level_e level); - -/* - * vxge_hal_driver_debug_get - Get the debug level - * - * This routine returns the current debug level set - */ -u32 -vxge_hal_driver_debug_get(void); - -/* - * vxge_hal_driver_terminate - Terminate HAL. - * - * HAL termination entry point. - */ -void -vxge_hal_driver_terminate(void); - -void * -vxge_hal_device_get_legacy_reg(pci_dev_h pdev, pci_reg_h regh, u8 *bar0); - -/* - * RX Descriptor - */ -/* - * enum vxge_hal_rxd_state_e - Descriptor (RXD) state. - * @VXGE_HAL_RXD_STATE_NONE: Invalid state. - * @VXGE_HAL_RXD_STATE_AVAIL: Descriptor is available for reservation. - * @VXGE_HAL_RXD_STATE_POSTED: Descriptor is posted for processing by the - * device. - * @VXGE_HAL_RXD_STATE_FREED: Descriptor is free and can be reused for - * filling-in and posting later. - * - * X3100/HAL descriptor states. - * - */ -typedef enum vxge_hal_rxd_state_e { - VXGE_HAL_RXD_STATE_NONE = 0, - VXGE_HAL_RXD_STATE_AVAIL = 1, - VXGE_HAL_RXD_STATE_POSTED = 2, - VXGE_HAL_RXD_STATE_FREED = 3 -} vxge_hal_rxd_state_e; - -/* - * Ring - */ - -/* - * struct vxge_hal_ring_rxd_info_t - Extended information associated with a - * completed ring descriptor. - * @syn_flag: SYN flag - * @is_icmp: Is ICMP - * @fast_path_eligible: Fast Path Eligible flag - * @l3_cksum_valid: in L3 checksum is valid - * @l3_cksum: Result of IP checksum check (by X3100 hardware). - * This field containing VXGE_HAL_L3_CKSUM_OK would mean that - * the checksum is correct, otherwise - the datagram is - * corrupted. - * @l4_cksum_valid: in L4 checksum is valid - * @l4_cksum: Result of TCP/UDP checksum check (by X3100 hardware). - * This field containing VXGE_HAL_L4_CKSUM_OK would mean that - * the checksum is correct. Otherwise - the packet is - * corrupted. - * @frame: Zero or more of vxge_hal_frame_type_e flags. - * See vxge_hal_frame_type_e {}. - * @proto: zero or more of vxge_hal_frame_proto_e flags. Reporting bits for - * various higher-layer protocols, including (but note restricted to) - * TCP and UDP. See vxge_hal_frame_proto_e {}. - * @is_vlan: If vlan tag is valid - * @vlan: VLAN tag extracted from the received frame. - * @rth_bucket: RTH bucket - * @rth_it_hit: Set, If RTH hash value calculated by the X3100 hardware - * has a matching entry in the Indirection table. - * @rth_spdm_hit: Set, If RTH hash value calculated by the X3100 hardware - * has a matching entry in the Socket Pair Direct Match table. - * @rth_hash_type: RTH hash code of the function used to calculate the hash. - * @rth_value: Receive Traffic Hashing(RTH) hash value. Produced by X3100 - * hardware if RTH is enabled. - */ -typedef struct vxge_hal_ring_rxd_info_t { - u32 syn_flag; - u32 is_icmp; - u32 fast_path_eligible; - u32 l3_cksum_valid; - u32 l3_cksum; - u32 l4_cksum_valid; - u32 l4_cksum; - u32 frame; - u32 proto; - u32 is_vlan; -#define VXGE_HAL_VLAN_VID_MASK 0xfff - u32 vlan; - u32 rth_bucket; - u32 rth_it_hit; - u32 rth_spdm_hit; - u32 rth_hash_type; - u32 rth_value; -} vxge_hal_ring_rxd_info_t; - -/* - * enum vxge_hal_frame_type_e - Ethernet frame format. - * @VXGE_HAL_FRAME_TYPE_DIX: DIX (Ethernet II) format. - * @VXGE_HAL_FRAME_TYPE_LLC: LLC format. - * @VXGE_HAL_FRAME_TYPE_SNAP: SNAP format. - * @VXGE_HAL_FRAME_TYPE_IPX: IPX format. - * - * Ethernet frame format. - */ -typedef enum vxge_hal_frame_type_e { - VXGE_HAL_FRAME_TYPE_DIX = 0x0, - VXGE_HAL_FRAME_TYPE_LLC = 0x1, - VXGE_HAL_FRAME_TYPE_SNAP = 0x2, - VXGE_HAL_FRAME_TYPE_IPX = 0x3, -} vxge_hal_frame_type_e; - -typedef enum vxge_hal_tcp_option_e { - - VXGE_HAL_TCPOPT_NOP = 1, /* Padding */ - VXGE_HAL_TCPOPT_EOL = 0, /* End of options */ - VXGE_HAL_TCPOPT_MSS = 2, /* Segment size negotiating */ - VXGE_HAL_TCPOPT_WINDOW = 3, /* Window scaling */ - VXGE_HAL_TCPOPT_SACK_PERM = 4, /* SACK Permitted */ - VXGE_HAL_TCPOPT_SACK = 5, /* SACK Block */ - VXGE_HAL_TCPOPT_TIMESTAMP = 8, /* Better RTT estimations/PAWS */ - VXGE_HAL_TCPOPT_MD5SIG = 19, /* MD5 Signature (RFC2385) */ - VXGE_HAL_TCPOLEN_TIMESTAMP = 10, - VXGE_HAL_TCPOLEN_TSTAMP_ALIGNED = 12 - -} vxge_hal_tcp_option_e; - -/* - * enum vxge_hal_frame_proto_e - Higher-layer ethernet protocols. - * @VXGE_HAL_FRAME_PROTO_VLAN_TAGGED: VLAN. - * @VXGE_HAL_FRAME_PROTO_IPV4: IPv4. - * @VXGE_HAL_FRAME_PROTO_IPV6: IPv6. - * @VXGE_HAL_FRAME_PROTO_IP_FRAG: IP fragmented. - * @VXGE_HAL_FRAME_PROTO_TCP: TCP. - * @VXGE_HAL_FRAME_PROTO_UDP: UDP. - * @VXGE_HAL_FRAME_PROTO_TCP_OR_UDP: TCP or UDP. - * - * Higher layer ethernet protocols and options. - */ -typedef enum vxge_hal_frame_proto_e { - VXGE_HAL_FRAME_PROTO_VLAN_TAGGED = 0x80, - VXGE_HAL_FRAME_PROTO_IPV4 = 0x10, - VXGE_HAL_FRAME_PROTO_IPV6 = 0x08, - VXGE_HAL_FRAME_PROTO_IP_FRAG = 0x04, - VXGE_HAL_FRAME_PROTO_TCP = 0x02, - VXGE_HAL_FRAME_PROTO_UDP = 0x01, - VXGE_HAL_FRAME_PROTO_TCP_OR_UDP = (VXGE_HAL_FRAME_PROTO_TCP | \ - VXGE_HAL_FRAME_PROTO_UDP) -} vxge_hal_frame_proto_e; - -/* - * enum vxge_hal_ring_tcode_e - Transfer codes returned by adapter - * @VXGE_HAL_RING_T_CODE_OK: Transfer ok. - * @VXGE_HAL_RING_T_CODE_L3_CKSUM_MISMATCH: Layer 3 checksum presentation - * configuration mismatch. - * @VXGE_HAL_RING_T_CODE_L4_CKSUM_MISMATCH: Layer 4 checksum presentation - * configuration mismatch. - * @VXGE_HAL_RING_T_CODE_L3_L4_CKSUM_MISMATCH: Layer 3 and Layer 4 checksum - * presentation configuration mismatch. - * @VXGE_HAL_RING_T_CODE_L3_PKT_ERR: Layer 3 error: unparseable packet, - * such as unknown IPv6 header. - * @VXGE_HAL_RING_T_CODE_L2_FRM_ERR: Layer 2 error: frame integrity - * error, such as FCS or ECC). - * @VXGE_HAL_RING_T_CODE_BUF_SIZE_ERR: Buffer size error: the RxD buffer(s) - * were not appropriately sized and data loss occurred. - * @VXGE_HAL_RING_T_CODE_INT_ECC_ERR: Internal ECC error: RxD corrupted. - * @VXGE_HAL_RING_T_CODE_BENIGN_OVFLOW: Benign overflow: the contents of - * Segment1 exceeded the capacity of Buffer1 and the remainder - * was placed in Buffer2. Segment2 now starts in Buffer3. - * No data loss or errors occurred. - * @VXGE_HAL_RING_T_CODE_ZERO_LEN_BUFF: Buffer size 0: one of the RxDs - * assigned buffers has a size of 0 bytes. - * @VXGE_HAL_RING_T_CODE_FRM_DROP: Frame dropped: either due to - * VPath Reset or because of a VPIN mismatch. - * @VXGE_HAL_RING_T_CODE_UNUSED: Unused - * @VXGE_HAL_RING_T_CODE_MULTI_ERR: Multiple errors: more than one - * transfer code condition occurred. - * - * Transfer codes returned by adapter. - */ -typedef enum vxge_hal_ring_tcode_e { - VXGE_HAL_RING_T_CODE_OK = 0x0, - VXGE_HAL_RING_T_CODE_L3_CKSUM_MISMATCH = 0x1, - VXGE_HAL_RING_T_CODE_L4_CKSUM_MISMATCH = 0x2, - VXGE_HAL_RING_T_CODE_L3_L4_CKSUM_MISMATCH = 0x3, - VXGE_HAL_RING_T_CODE_L3_PKT_ERR = 0x5, - VXGE_HAL_RING_T_CODE_L2_FRM_ERR = 0x6, - VXGE_HAL_RING_T_CODE_BUF_SIZE_ERR = 0x7, - VXGE_HAL_RING_T_CODE_INT_ECC_ERR = 0x8, - VXGE_HAL_RING_T_CODE_BENIGN_OVFLOW = 0x9, - VXGE_HAL_RING_T_CODE_ZERO_LEN_BUFF = 0xA, - VXGE_HAL_RING_T_CODE_FRM_DROP = 0xC, - VXGE_HAL_RING_T_CODE_UNUSED = 0xE, - VXGE_HAL_RING_T_CODE_MULTI_ERR = 0xF -} vxge_hal_ring_tcode_e; - -/* - * enum vxge_hal_ring_hash_type_e - RTH hash types - * @VXGE_HAL_RING_HASH_TYPE_NONE: No Hash - * @VXGE_HAL_RING_HASH_TYPE_TCP_IPV4: TCP IPv4 - * @VXGE_HAL_RING_HASH_TYPE_UDP_IPV4: UDP IPv4 - * @VXGE_HAL_RING_HASH_TYPE_IPV4: IPv4 - * @VXGE_HAL_RING_HASH_TYPE_TCP_IPV6: TCP IPv6 - * @VXGE_HAL_RING_HASH_TYPE_UDP_IPV6: UDP IPv6 - * @VXGE_HAL_RING_HASH_TYPE_IPV6: IPv6 - * @VXGE_HAL_RING_HASH_TYPE_TCP_IPV6_EX: TCP IPv6 extension - * @VXGE_HAL_RING_HASH_TYPE_UDP_IPV6_EX: UDP IPv6 extension - * @VXGE_HAL_RING_HASH_TYPE_IPV6_EX: IPv6 extension - * - * RTH hash types - */ -typedef enum vxge_hal_ring_hash_type_e { - VXGE_HAL_RING_HASH_TYPE_NONE = 0x0, - VXGE_HAL_RING_HASH_TYPE_TCP_IPV4 = 0x1, - VXGE_HAL_RING_HASH_TYPE_UDP_IPV4 = 0x2, - VXGE_HAL_RING_HASH_TYPE_IPV4 = 0x3, - VXGE_HAL_RING_HASH_TYPE_TCP_IPV6 = 0x4, - VXGE_HAL_RING_HASH_TYPE_UDP_IPV6 = 0x5, - VXGE_HAL_RING_HASH_TYPE_IPV6 = 0x6, - VXGE_HAL_RING_HASH_TYPE_TCP_IPV6_EX = 0x7, - VXGE_HAL_RING_HASH_TYPE_UDP_IPV6_EX = 0x8, - VXGE_HAL_RING_HASH_TYPE_IPV6_EX = 0x9 -} vxge_hal_ring_hash_type_e; - -/* - * struct vxge_hal_ring_rxd_1_t - One buffer mode RxD for ring - * @host_control: This field is exclusively for host use and is "readonly" - * from the adapter's perspective. - * @control_0:Bits 0 to 6 - RTH_Bucket get - * Bit 7 - Own Descriptor ownership bit. This bit is set to 1 by the - * host, and is set to 0 by the adapter. - * 0 - Host owns RxD and buffer. - * 1 - The adapter owns RxD and buffer. - * Bit 8 - Fast_Path_Eligible When set, indicates that the received - * frame meets all of the criteria for fast path processing. - * The required criteria are as follows: - * !SYN & - * (Transfer_Code == "Transfer OK") & - * (!Is_IP_Fragment) & - * ((Is_IPv4 & computed_L3_checksum == 0xFFFF) | - * (Is_IPv6)) & - * ((Is_TCP & computed_L4_checksum == 0xFFFF) | - * (Is_UDP & (computed_L4_checksum == 0xFFFF | - * computed _L4_checksum == 0x0000))) - * (same meaning for all RxD buffer modes) - * Bit 9 - L3 Checksum Correct - * Bit 10 - L4 Checksum Correct - * Bit 11 - Reserved - * Bit 12 to 15 - This field is written by the adapter. It is used - * to report the status of the frame transfer to the host. - * 0x0 - Transfer OK - * 0x4 - RDA Failure During Transfer - * 0x5 - Unparseable Packet, such as unknown IPv6 header. - * 0x6 - Frame integrity error (FCS or ECC). - * 0x7 - Buffer Size Error. The provided buffer(s) were not - * appropriately sized and data loss occurred. - * 0x8 - Internal ECC Error. RxD corrupted. - * 0x9 - IPv4 Checksum error - * 0xA - TCP/UDP Checksum error - * 0xF - Unknown Error or Multiple Error. Indicates an unknown - * problem or that more than one of transfer codes is set. - * Bit 16 - SYN The adapter sets this field to indicate that the - * incoming frame contained a TCP segment with its SYN bit set - * and its ACK bit NOT set. (same meaning for all RxD buffer modes) - * Bit 17 - Is ICMP - * Bit 18 - RTH_SPDM_HIT Set to 1 if there was a match in the - * Socket - * Pair Direct Match Table and the frame was steered based on SPDM. - * Bit 19 - RTH_IT_HIT Set to 1 if there was a match in the - * Indirection Table and the frame was steered based on hash - * indirection. - * Bit 20 to 23 - RTH_HASH_TYPE Indicates the function (hash type) - * that was used to calculate the hash. - * Bit 19 - IS_VLAN Set to '1' if the frame was/is VLAN tagged. - * Bit 25 to 26 - ETHER_ENCAP Reflects the Ethernet encapsulation - * of the received frame. - * 0x0 - Ethernet DIX - * 0x1 - LLC - * 0x2 - SNAP (includes Jumbo-SNAP) - * 0x3 - IPX - * Bit 27 - IS_IPV4 Set to '1' if the frame contains IPv4 packet. - * Bit 28 - IS_IPV6 Set to '1' if the frame contains IPv6 packet. - * Bit 29 - IS_IP_FRAG Set to '1' if the frame contains a - * fragmented IP packet. - * Bit 30 - IS_TCP Set to '1' if the frame contains a TCP segment. - * Bit 31 - IS_UDP Set to '1' if the frame contains a UDP message. - * Bit 32 to 47 - L3_Checksum[0:15] The IPv4 checksum value that - * arrived with the frame. If the resulting computed IPv4 header - * checksum for the frame did not produce the expected 0xFFFF value, - * then the transfer code would be set to 0x9. - * Bit 48 to 63 - L4_Checksum[0:15] TCP/UDP checksum value that - * arrived with the frame. If the resulting computed TCP/UDP checksum - * for the frame did not produce the expected 0xFFFF value, then the - * transfer code would be set to 0xA. - * @control_1:Bits 0 to 1 - Reserved - * Bits 2 to 15 - Buffer0_Size.This field is set by the host and - * eventually overwritten by the adapter. The host writes the - * available buffer size in bytes when it passes the descriptor to - * the adapter. When a frame is delivered the host, the adapter - * populates this field with the number of bytes written into the - * buffer. The largest supported buffer is 16, 383 bytes. - * Bit 16 to 47 - RTH Hash Value 32-bit RTH hash value. Only valid - * if RTH_HASH_TYPE (Control_0, bits 20:23) is nonzero. - * Bit 48 to 63 - VLAN_Tag[0:15] The contents of the variable - * portion of the VLAN tag, if one was detected by the adapter. - * This field is populated even if VLAN-tag stripping is enabled. - * @buffer0_ptr: Pointer to buffer. This field is populated by the driver. - * - * One buffer mode RxD for ring structure - */ -typedef struct vxge_hal_ring_rxd_1_t { - u64 host_control; - u64 control_0; -#define VXGE_HAL_RING_RXD_RTH_BUCKET_GET(ctrl0) bVAL7(ctrl0, 0) -#define VXGE_HAL_RING_RXD_RTH_BUCKET_ADAPTER vBIT(val, 0, 7) - -#define VXGE_HAL_RING_RXD_LIST_OWN_GET(ctrl0) bVAL1(ctrl0, 7) -#define VXGE_HAL_RING_RXD_LIST_OWN_ADAPTER mBIT(7) - -#define VXGE_HAL_RING_RXD_FAST_PATH_ELIGIBLE_GET(ctrl0) bVAL1(ctrl0, 8) -#define VXGE_HAL_RING_RXD_FAST_PATH_ELIGIBLE mBIT(8) - -#define VXGE_HAL_RING_RXD_L3_CKSUM_CORRECT_GET(ctrl0) bVAL1(ctrl0, 9) -#define VXGE_HAL_RING_RXD_L3_CKSUM_CORRECT mBIT(9) - -#define VXGE_HAL_RING_RXD_L4_CKSUM_CORRECT_GET(ctrl0) bVAL1(ctrl0, 10) -#define VXGE_HAL_RING_RXD_L4_CKSUM_CORRECT mBIT(10) - -#define VXGE_HAL_RING_RXD_T_CODE_GET(ctrl0) bVAL4(ctrl0, 12) -#define VXGE_HAL_RING_RXD_T_CODE(val) vBIT(val, 12, 4) -#define VXGE_HAL_RING_RXD_T_CODE_OK VXGE_HAL_RING_T_CODE_OK -#define VXGE_HAL_RING_RXD_T_CODE_L3_CKSUM_MISMATCH \ - VXGE_HAL_RING_T_CODE_L3_CKSUM_MISMATCH -#define VXGE_HAL_RING_RXD_T_CODE_L4_CKSUM_MISMATCH \ - VXGE_HAL_RING_T_CODE_L4_CKSUM_MISMATCH -#define VXGE_HAL_RING_RXD_T_CODE_L3_L4_CKSUM_MISMATCH \ - VXGE_HAL_RING_T_CODE_L3_L4_CKSUM_MISMATCH -#define VXGE_HAL_RING_RXD_T_CODE_L3_PKT_ERR VXGE_HAL_RING_T_CODE_L3_PKT_ERR -#define VXGE_HAL_RING_RXD_T_CODE_L2_FRM_ERR VXGE_HAL_RING_T_CODE_L2_FRM_ERR -#define VXGE_HAL_RING_RXD_T_CODE_BUF_SIZE_ERR \ - VXGE_HAL_RING_T_CODE_BUF_SIZE_ERR -#define VXGE_HAL_RING_RXD_T_CODE_INT_ECC_ERR VXGE_HAL_RING_T_CODE_INT_ECC_ERR -#define VXGE_HAL_RING_RXD_T_CODE_BENIGN_OVFLOW \ - VXGE_HAL_RING_T_CODE_BENIGN_OVFLOW -#define VXGE_HAL_RING_RXD_T_CODE_ZERO_LEN_BUFF \ - VXGE_HAL_RING_T_CODE_ZERO_LEN_BUFF -#define VXGE_HAL_RING_RXD_T_CODE_FRM_DROP VXGE_HAL_RING_T_CODE_FRM_DROP -#define VXGE_HAL_RING_RXD_T_CODE_UNUSED VXGE_HAL_RING_T_CODE_UNUSED -#define VXGE_HAL_RING_RXD_T_CODE_MULTI_ERR VXGE_HAL_RING_T_CODE_MULTI_ERR - -#define VXGE_HAL_RING_RXD_SYN_GET(ctrl0) bVAL1(ctrl0, 16) -#define VXGE_HAL_RING_RXD_SYN mBIT(16) - -#define VXGE_HAL_RING_RXD_IS_ICMP_GET(ctrl0) bVAL1(ctrl0, 17) -#define VXGE_HAL_RING_RXD_IS_ICMP mBIT(17) - -#define VXGE_HAL_RING_RXD_RTH_SPDM_HIT_GET(ctrl0) bVAL1(ctrl0, 18) -#define VXGE_HAL_RING_RXD_RTH_SPDM_HIT mBIT(18) - -#define VXGE_HAL_RING_RXD_RTH_IT_HIT_GET(ctrl0) bVAL1(ctrl0, 19) -#define VXGE_HAL_RING_RXD_RTH_IT_HIT mBIT(19) - -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_GET(ctrl0) bVAL4(ctrl0, 20) -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE(val) vBIT(val, 20, 4) -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_NONE VXGE_HAL_RING_HASH_TYPE_NONE -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV4 \ - VXGE_HAL_RING_HASH_TYPE_TCP_IPV4 -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV4 \ - VXGE_HAL_RING_HASH_TYPE_UDP_IPV4 -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV4 VXGE_HAL_RING_HASH_TYPE_IPV4 -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV6 \ - VXGE_HAL_RING_HASH_TYPE_TCP_IPV6 -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV6 \ - VXGE_HAL_RING_HASH_TYPE_UDP_IPV6 -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV6 VXGE_HAL_RING_HASH_TYPE_IPV6 -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV6_EX \ - VXGE_HAL_RING_HASH_TYPE_TCP_IPV6_EX -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV6_EX \ - VXGE_HAL_RING_HASH_TYPE_UDP_IPV6_EX -#define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV6_EX VXGE_HAL_RING_HASH_TYPE_IPV6_EX - -#define VXGE_HAL_RING_RXD_IS_VLAN_GET(ctrl0) bVAL1(ctrl0, 24) -#define VXGE_HAL_RING_RXD_IS_VLAN mBIT(24) - -#define VXGE_HAL_RING_RXD_ETHER_ENCAP_GET(ctrl0) bVAL2(ctrl0, 25) -#define VXGE_HAL_RING_RXD_ETHER_ENCAP(val) vBIT(val, 25, 2) -#define VXGE_HAL_RING_RXD_ETHER_ENCAP_DIX VXGE_HAL_FRAME_TYPE_DIX -#define VXGE_HAL_RING_RXD_ETHER_ENCAP_LLC VXGE_HAL_FRAME_TYPE_LLC -#define VXGE_HAL_RING_RXD_ETHER_ENCAP_SNAP VXGE_HAL_FRAME_TYPE_SNAP -#define VXGE_HAL_RING_RXD_ETHER_ENCAP_IPX VXGE_HAL_FRAME_TYPE_IPX - -#define VXGE_HAL_RING_RXD_IS_IPV4_GET(ctrl0) bVAL1(ctrl0, 27) -#define VXGE_HAL_RING_RXD_IS_IPV4 mBIT(27) - -#define VXGE_HAL_RING_RXD_IS_IPV6_GET(ctrl0) bVAL1(ctrl0, 28) -#define VXGE_HAL_RING_RXD_IS_IPV6 mBIT(28) - -#define VXGE_HAL_RING_RXD_IS_IPV_FRAG_GET(ctrl0) bVAL1(ctrl0, 29) -#define VXGE_HAL_RING_RXD_IS_IPV_FRAG mBIT(29) - -#define VXGE_HAL_RING_RXD_IS_TCP_GET(ctrl0) bVAL1(ctrl0, 30) -#define VXGE_HAL_RING_RXD_IS_TCP mBIT(30) - -#define VXGE_HAL_RING_RXD_IS_UDP_GET(ctrl0) bVAL1(ctrl0, 31) -#define VXGE_HAL_RING_RXD_IS_UDP mBIT(31) - -#define VXGE_HAL_RING_RXD_FRAME_PROTO_GET(ctrl0) bVAL5(ctrl0, 27) -#define VXGE_HAL_RING_RXD_FRAME_PROTO(val) vBIT(val, 27, 5) -#define VXGE_HAL_RING_RXD_FRAME_PROTO_IPV4 VXGE_HAL_FRAME_PROTO_IPV4 -#define VXGE_HAL_RING_RXD_FRAME_PROTO_IPV6 VXGE_HAL_FRAME_PROTO_IPV6 -#define VXGE_HAL_RING_RXD_FRAME_PROTO_IP_FRAG VXGE_HAL_FRAME_PROTO_IP_FRAG -#define VXGE_HAL_RING_RXD_FRAME_PROTO_TCP VXGE_HAL_FRAME_PROTO_TCP -#define VXGE_HAL_RING_RXD_FRAME_PROTO_UDP VXGE_HAL_FRAME_PROTO_UDP -#define VXGE_HAL_RING_RXD_FRAME_PROTO_TCP_OR_UDP (VXGE_HAL_FRAME_PROTO_TCP |\ - VXGE_HAL_FRAME_PROTO_UDP) - -#define VXGE_HAL_RING_RXD_L3_CKSUM_GET(ctrl0) bVAL16(ctrl0, 32) -#define VXGE_HAL_RING_RXD_L3_CKSUM(val) vBIT(val, 32, 16) - -#define VXGE_HAL_RING_RXD_L4_CKSUM_GET(ctrl0) bVAL16(ctrl0, 48) -#define VXGE_HAL_RING_RXD_L4_CKSUM(val) vBIT(val, 48, 16) - - u64 control_1; -#define VXGE_HAL_RING_RXD_LIST_TAIL_OWN_ADAPTER mBIT(0) - -#define VXGE_HAL_RING_RXD_1_BUFFER0_SIZE_GET(ctrl1) bVAL14(ctrl1, 2) -#define VXGE_HAL_RING_RXD_1_BUFFER0_SIZE(val) vBIT(val, 2, 14) -#define VXGE_HAL_RING_RXD_1_BUFFER0_SIZE_MASK vBIT(0x3FFF, 2, 14) - -#define VXGE_HAL_RING_RXD_1_RTH_HASH_VAL_GET(ctrl1) bVAL32(ctrl1, 16) -#define VXGE_HAL_RING_RXD_1_RTH_HASH_VAL(val) vBIT(val, 16, 32) - -#define VXGE_HAL_RING_RXD_VLAN_TAG_GET(ctrl1) bVAL16(ctrl1, 48) -#define VXGE_HAL_RING_RXD_VLAN_TAG(val) vBIT(val, 48, 16) - - u64 buffer0_ptr; - -} vxge_hal_ring_rxd_1_t; - -/* - * struct vxge_hal_ring_rxd_3_t - Three buffer mode RxD for ring - * @host_control: This field is exclusively for host use and is "readonly" - * from the adapter's perspective. - * @control_0:Bits 0 to 6 - RTH_Bucket get - * Bit 7 - Own Descriptor ownership bit. This bit is set to 1 - * by the host, and is set to 0 by the adapter. - * 0 - Host owns RxD and buffer. - * 1 - The adapter owns RxD and buffer. - * Bit 8 - Fast_Path_Eligible When set, indicates that the - * received frame meets all of the criteria for fast path processing. - * The required criteria are as follows: - * !SYN & - * (Transfer_Code == "Transfer OK") & - * (!Is_IP_Fragment) & - * ((Is_IPv4 & computed_L3_checksum == 0xFFFF) | - * (Is_IPv6)) & - * ((Is_TCP & computed_L4_checksum == 0xFFFF) | - * (Is_UDP & (computed_L4_checksum == 0xFFFF | - * computed _L4_checksum == 0x0000))) - * (same meaning for all RxD buffer modes) - * Bit 9 - L3 Checksum Correct - * Bit 10 - L4 Checksum Correct - * Bit 11 - Reserved - * Bit 12 to 15 - This field is written by the adapter. It is used - * to report the status of the frame transfer to the host. - * 0x0 - Transfer OK - * 0x4 - RDA Failure During Transfer - * 0x5 - Unparseable Packet, such as unknown IPv6 header. - * 0x6 - Frame integrity error (FCS or ECC). - * 0x7 - Buffer Size Error. The provided buffer(s) were not - * appropriately sized and data loss occurred. - * 0x8 - Internal ECC Error. RxD corrupted. - * 0x9 - IPv4 Checksum error - * 0xA - TCP/UDP Checksum error - * 0xF - Unknown Error or Multiple Error. Indicates an unknown - * problem or that more than one of transfer codes is set. - * Bit 16 - SYN The adapter sets this field to indicate that the - * incoming frame contained a TCP segment with its SYN bit set - * and its ACK bit NOT set. (same meaning for all RxD buffer modes) - * Bit 17 - Is ICMP - * Bit 18 - RTH_SPDM_HIT Set to 1 if there was a match in the - * Socket - * Pair Direct Match Table and the frame was steered based on SPDM. - * Bit 19 - RTH_IT_HIT Set to 1 if there was a match in the - * Indirection Table and the frame was steered based on hash - * indirection. - * Bit 20 to 23 - RTH_HASH_TYPE Indicates the function (hash type) - * that was used to calculate the hash. - * Bit 19 - IS_VLAN Set to '1' if the frame was/is VLAN tagged. - * Bit 25 to 26 - ETHER_ENCAP Reflects the Ethernet encapsulation - * of the received frame. - * 0x0 - Ethernet DIX - * 0x1 - LLC - * 0x2 - SNAP (includes Jumbo-SNAP) - * 0x3 - IPX - * Bit 27 - IS_IPV4 Set to '1' if the frame contains IPv4 packet. - * Bit 28 - IS_IPV6 Set to '1' if the frame contains IPv6 packet. - * Bit 29 - IS_IP_FRAG Set to '1' if the frame contains a - * fragmented IP packet. - * Bit 30 - IS_TCP Set to '1' if the frame contains a TCP segment. - * Bit 31 - IS_UDP Set to '1' if the frame contains a UDP message. - * Bit 32 to 47 - L3_Checksum[0:15] The IPv4 checksum value that - * arrived with the frame. If the resulting computed IPv4 header - * checksum for the frame did not produce the expected 0xFFFF value, - * then the transfer code would be set to 0x9. - * Bit 48 to 63 - L4_Checksum[0:15] TCP/UDP checksum value that - * arrived with the frame. If the resulting computed TCP/UDP checksum - * for the frame did not produce the expected 0xFFFF value, then the - * transfer code would be set to 0xA. - * @control_1:Bit 0 - This field must be used in conjunction with the Ownership - * field (above). - * 1 - Set by the host to indicate that the RxD points to fresh - * buffers. - * 0 - Cleared by the adapter to indicate that frame data has been - * placed into the assigned buffers, and that the host once again - * owns the descriptor. - * (Note: Please observe the usage guidelines outlined in the - * Ownership field (above)). - * Bit 1 - Unused. Ignored by Adapter on RxD read. Set to 0 - * by Adapter on RxD write. - * Bits 2 to 15 - This field is written by the host and by X3100. - * The host writes the available buffer 0 size in bytes when it - * passes the descriptor to the X3100. The X3100 writes the number - * of bytes written to the buffer when it passes the descriptor back - * to the host. - * Bits 16 to 17 - Reserved - * Bits 18 to 31 - This field is set by the host and eventually - * overwritten by the adapter. The host writes the available - * buffer 1size in bytes when it passes the descriptor to the adapter. - * When a frame is delivered the host, the adapter populates this field - * with the number of bytes written into the buffer 1. The largest - * supported buffer is 16, 383 bytes. - * Bits 32 to 33 - Reserved - * Bits 34 to 47 - This field is set by the host and eventually - * overwritten by the adapter. The host writes the available - * buffer 2 size in bytes when it passes the descriptor to the adapter. - * When a frame is delivered the host, the adapter populates this field - * with the number of bytes written into the buffer 2. The largest - * supported buffer is 16, 383 bytes. - * Bit 48 to 63 - VLAN_Tag[0:15] The contents of the variable - * portion of the VLAN tag, if one was detected by the adapter. This - * field is populated even if VLAN-tag stripping is enabled. - * @buffer0_ptr: Pointer to buffer 0. This field is populated by the driver. - * In 3-buffer mode, when the RxD is returned to the host, - * buffer0_ptr field will be overwritten if the following conditions - * are met: - * 1 - RTH_Disable in the PRC_CTRL register is not set. - * 2 - RTH is enabled and a valid hash value was calculated for the - * frame. This will be indicated by a non-zero value in the - * RTH_HASH_TYPE field (Control_0, bits 20:23). In the event that the - * pointer is overwritten on return to the host, bits 0:31 will be - * all zeroes while bits 32:63 will contain the calculated hash value. - * @buffer1_ptr: Pointer to buffer 1. This field is populated by the driver. - * @buffer2_ptr: Pointer to buffer 2. This field is populated by the driver. - * - * Three buffer mode RxD for ring structure - */ -typedef struct vxge_hal_ring_rxd_3_t { - u64 host_control; - u64 control_0; -/* - * The following bit fields are common in all the three buffer modes and are - * defined in vxge_hal_ring_rxd_1_t - * #define VXGE_HAL_RING_RXD_RTH_BUCKET_GET(ctrl0) bVAL7(ctrl0, 0) - * #define VXGE_HAL_RING_RXD_RTH_BUCKET_ADAPTER vBIT(val, 0, 7) - * - * #define VXGE_HAL_RING_RXD_LIST_OWN_GET(ctrl0) bVAL1(ctrl0, 7) - * #define VXGE_HAL_RING_RXD_LIST_OWN_ADAPTER mBIT(7) - * - * #define VXGE_HAL_RING_RXD_FAST_PATH_ELIGIBLE_GET(ctrl0) \ - * bVAL1(ctrl0, 8) - * #define VXGE_HAL_RING_RXD_FAST_PATH_ELIGIBLE mBIT(8) - * - * #define VXGE_HAL_RING_RXD_L3_CKSUM_CORRECT_GET(ctrl0) \ - * bVAL1(ctrl0, 9) - * #define VXGE_HAL_RING_RXD_L3_CKSUM_CORRECT mBIT(9) - * - * #define VXGE_HAL_RING_RXD_L4_CKSUM_CORRECT_GET(ctrl0) \ - * bVAL1(ctrl0, 10) - * #define VXGE_HAL_RING_RXD_L4_CKSUM_CORRECT mBIT(10) - * - * #define VXGE_HAL_RING_RXD_T_CODE_GET(ctrl0) bVAL4(ctrl0, 12) - * #define VXGE_HAL_RING_RXD_T_CODE(val) vBIT(val, 12, 4) - * #define VXGE_HAL_RING_RXD_T_CODE_OK VXGE_HAL_RING_T_CODE_OK - * #define VXGE_HAL_RING_RXD_T_CODE_L3_CKSUM_MISMATCH \ - * VXGE_HAL_RING_T_CODE_L3_CKSUM_MISMATCH - * #define VXGE_HAL_RING_RXD_T_CODE_L4_CKSUM_MISMATCH \ - * VXGE_HAL_RING_T_CODE_L4_CKSUM_MISMATCH - * #define VXGE_HAL_RING_RXD_T_CODE_L3_L4_CKSUM_MISMATCH \ - * VXGE_HAL_RING_T_CODE_L3_L4_CKSUM_MISMATCH - * #define VXGE_HAL_RING_RXD_T_CODE_L3_PKT_ERR \ - * VXGE_HAL_RING_T_CODE_L3_PKT_ERR - * #define VXGE_HAL_RING_RXD_T_CODE_L2_FRM_ERR \ - * VXGE_HAL_RING_T_CODE_L2_FRM_ERR - * #define VXGE_HAL_RING_RXD_T_CODE_BUF_SIZE_ERR \ - * VXGE_HAL_RING_T_CODE_BUF_SIZE_ERR - * #define VXGE_HAL_RING_RXD_T_CODE_INT_ECC_ERR \ - * VXGE_HAL_RING_T_CODE_INT_ECC_ERR - * #define VXGE_HAL_RING_RXD_T_CODE_BENIGN_OVFLOW \ - * VXGE_HAL_RING_T_CODE_BENIGN_OVFLOW - * #define VXGE_HAL_RING_RXD_T_CODE_ZERO_LEN_BUFF \ - * VXGE_HAL_RING_T_CODE_ZERO_LEN_BUFF - * #define VXGE_HAL_RING_RXD_T_CODE_FRM_DROP VXGE_HAL_RING_T_CODE_FRM_DROP - * #define VXGE_HAL_RING_RXD_T_CODE_UNUSED VXGE_HAL_RING_T_CODE_UNUSED - * #define VXGE_HAL_RING_RXD_T_CODE_MULTI_ERR \ - * VXGE_HAL_RING_T_CODE_MULTI_ERR - * - * #define VXGE_HAL_RING_RXD_SYN_GET(ctrl0) bVAL1(ctrl0, 16) - * #define VXGE_HAL_RING_RXD_SYN mBIT(16) - * - * #define VXGE_HAL_RING_RXD_IS_ICMP_GET(ctrl0) bVAL1(ctrl0, 17) - * #define VXGE_HAL_RING_RXD_IS_ICMP mBIT(17) - * - * #define VXGE_HAL_RING_RXD_RTH_SPDM_HIT_GET(ctrl0) bVAL1(ctrl0, 18) - * #define VXGE_HAL_RING_RXD_RTH_SPDM_HIT mBIT(18) - * - * #define VXGE_HAL_RING_RXD_RTH_IT_HIT_GET(ctrl0) bVAL1(ctrl0, 19) - * #define VXGE_HAL_RING_RXD_RTH_IT_HIT mBIT(19) - * - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_GET(ctrl0) bVAL4(ctrl0, 20) - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE(val) vBIT(val, 20, 4) - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_NONE \ - * VXGE_HAL_RING_HASH_TYPE_NONE - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV4 \ - * VXGE_HAL_RING_HASH_TYPE_TCP_IPV4 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV4 \ - * VXGE_HAL_RING_HASH_TYPE_UDP_IPV4 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV4 \ - * VXGE_HAL_RING_HASH_TYPE_IPV4 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV6 \ - * VXGE_HAL_RING_HASH_TYPE_TCP_IPV6 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV6 \ - * VXGE_HAL_RING_HASH_TYPE_UDP_IPV6 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV6 \ - * VXGE_HAL_RING_HASH_TYPE_IPV6 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV6_EX \ - * VXGE_HAL_RING_HASH_TYPE_TCP_IPV6_EX - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV6_EX \ - * VXGE_HAL_RING_HASH_TYPE_UDP_IPV6_EX - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV6_EX \ - * VXGE_HAL_RING_HASH_TYPE_IPV6_EX - * - * #define VXGE_HAL_RING_RXD_IS_VLAN_GET(ctrl0) bVAL1(ctrl0, 24) - * #define VXGE_HAL_RING_RXD_IS_VLAN mBIT(24) - * - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_GET(ctrl0) bVAL2(ctrl0, 25) - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP(val) vBIT(val, 25, 2) - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_DIX VXGE_HAL_FRAME_TYPE_DIX - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_LLC VXGE_HAL_FRAME_TYPE_LLC - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_SNAP VXGE_HAL_FRAME_TYPE_SNAP - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_IPX VXGE_HAL_FRAME_TYPE_IPX - * - * #define VXGE_HAL_RING_RXD_IS_IPV4_GET(ctrl0) bVAL1(ctrl0, 27) - * #define VXGE_HAL_RING_RXD_IS_IPV4 mBIT(27) - * - * #define VXGE_HAL_RING_RXD_IS_IPV6_GET(ctrl0) bVAL1(ctrl0, 28) - * #define VXGE_HAL_RING_RXD_IS_IPV6 mBIT(28) - * - * #define VXGE_HAL_RING_RXD_IS_IPV_FRAG_GET(ctrl0) bVAL1(ctrl0, 29) - * #define VXGE_HAL_RING_RXD_IS_IPV_FRAG mBIT(29) - * - * #define VXGE_HAL_RING_RXD_IS_TCP_GET(ctrl0) bVAL1(ctrl0, 30) - * #define VXGE_HAL_RING_RXD_IS_TCP mBIT(30) - * - * #define VXGE_HAL_RING_RXD_IS_UDP_GET(ctrl0) bVAL1(ctrl0, 31) - * #define VXGE_HAL_RING_RXD_IS_UDP mBIT(31) - * - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_GET(ctrl0) bVAL5(ctrl0, 27) - * #define VXGE_HAL_RING_RXD_FRAME_PROTO(val) vBIT(val, 27, 5) - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_IPV4 \ - * VXGE_HAL_FRAME_PROTO_IPV4 - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_IPV6 \ - * VXGE_HAL_FRAME_PROTO_IPV6 - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_IP_FRAG \ - * VXGE_HAL_FRAME_PROTO_IP_FRAG - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_TCP \ - * VXGE_HAL_FRAME_PROTO_TCP - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_UDP \ - * VXGE_HAL_FRAME_PROTO_UDP - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_TCP_OR_UDP \ - * (VXGE_HAL_FRAME_PROTO_TCP | VXGE_HAL_FRAME_PROTO_UDP) - * - * #define VXGE_HAL_RING_RXD_L3_CKSUM_GET(ctrl0) bVAL16(ctrl0, 32) - * #define VXGE_HAL_RING_RXD_L3_CKSUM(val) vBIT(val, 32, 16) - * - * #define VXGE_HAL_RING_RXD_L4_CKSUM_GET(ctrl0) bVAL16(ctrl0, 48) - * #define VXGE_HAL_RING_RXD_L4_CKSUM(val) vBIT(val, 48, 16) - */ - - u64 control_1; -#define VXGE_HAL_RING_RXD_3_BUFFER_EMPTY_GET(ctrl1) bVAL1(ctrl1, 0) -#define VXGE_HAL_RING_RXD_3_BUFFER_EMPTY mBIT(0) - -#define VXGE_HAL_RING_RXD_3_BUFFER0_SIZE_GET(ctrl1) bVAL14(ctrl1, 2) -#define VXGE_HAL_RING_RXD_3_BUFFER0_SIZE(val) vBIT(val, 2, 14) -#define VXGE_HAL_RING_RXD_3_BUFFER0_SIZE_MASK vBIT(0x3FFc, 2, 14) - -#define VXGE_HAL_RING_RXD_3_BUFFER1_SIZE_GET(ctrl1) bVAL14(ctrl1, 18) -#define VXGE_HAL_RING_RXD_3_BUFFER1_SIZE(val) vBIT(val, 18, 14) -#define VXGE_HAL_RING_RXD_3_BUFFER1_SIZE_MASK vBIT(0x3FFc, 18, 14) - -#define VXGE_HAL_RING_RXD_3_BUFFER2_SIZE_GET(ctrl1) bVAL14(ctrl1, 34) -#define VXGE_HAL_RING_RXD_3_BUFFER2_SIZE(val) vBIT(val, 34, 14) -#define VXGE_HAL_RING_RXD_3_BUFFER2_SIZE_MASK vBIT(0x3FFc, 34, 14) - -/* - * The following bit fields are common in all the three buffer modes and are - * defined in vxge_hal_ring_rxd_1_t - * #define VXGE_HAL_RING_RXD_VLAN_TAG_GET(ctrl1) bVAL16(ctrl1, 48) - * #define VXGE_HAL_RING_RXD_VLAN_TAG(val) vBIT(val, 48, 16) - */ - u64 buffer0_ptr; -#define VXGE_HAL_RING_RXD_3_RTH_HASH_VALUE_GET(b0_ptr) bVAL32(b0_ptr, 32) -#define VXGE_HAL_RING_RXD_3_RTH_HASH_VALUE(val) vBIT(val, 32, 32) - - u64 buffer1_ptr; - - u64 buffer2_ptr; - -} vxge_hal_ring_rxd_3_t; - -/* - * struct vxge_hal_ring_rxd_5_t - Five buffer mode RxD for ring - * @host_control: This 32 bitfield is exclusively for host use and is "readonly" - * from the adapter's perspective. - * @control_2: Bits 0 to 1 - Reserved - * Bits 2 to 15 - This field is set by the host and eventually - * overwritten by the adapter. The host writes the available buffer - * 3 size in bytes when it pas ses the descriptor to the adapter. - * When a frame is delivered the host, the adapter populates this - * field with the number of bytes written into the buffer. The - * largest supported buffer is 16, 383 bytes. - * Bits 16 to 17 - Reserved - * Bits 18 to 31 - This field is set by the host and eventually - * overwritten by the adapter. The host writes the available buffer - * 4 size in bytes when it passes the descriptor to the adapter. - * When a frame is delivered the host, the adapter populates this - * field with the number of bytes written into the buffer. - * The largest supported buffer is 16, 383 bytes. - * @control_0: Bits 0 to 6 - RTH_Bucket get - * Bit 7 - Own Descriptor ownership bit. This bit is set to 1 by - * the host, and is set to 0 by the adapter. - * 0 - Host owns RxD and buffer. - * 1 - The adapter owns RxD and buffer. - * Bit 8 - Fast_Path_Eligible When set,indicates that the received - * frame meets all of the criteria for fast path processing. - * The required criteria are as follows: - * !SYN & - * (Transfer_Code == "Transfer OK") & - * (!Is_IP_Fragment) & - * ((Is_IPv4 & computed_L3_checksum == 0xFFFF) | - * (Is_IPv6)) & - * ((Is_TCP & computed_L4_checksum == 0xFFFF) | - * (Is_UDP & (computed_L4_checksum == 0xFFFF | - * computed _L4_checksum == 0x0000))) - * (same meaning for all RxD buffer modes) - * Bit 9 - L3 Checksum Correct - * Bit 10 - L4 Checksum Correct - * Bit 11 - Reserved - * Bit 12 to 15 - This field is written by the adapter. It is used - * to report the status of the frame transfer to the host. - * 0x0 - Transfer OK - * 0x4 - RDA Failure During Transfer - * 0x5 - Unparseable Packet, such as unknown IPv6 header. - * 0x6 - Frame integrity error (FCS or ECC). - * 0x7 - Buffer Size Error. The provided buffer(s) were not - * appropriately sized and data loss occurred. - * 0x8 - Internal ECC Error. RxD corrupted. - * 0x9 - IPv4 Checksum error - * 0xA - TCP/UDP Checksum error - * 0xF - Unknown Error or Multiple Error. Indicates an unknown - * problem or that more than one of transfer codes is set. - * Bit 16 - SYN The adapter sets this field to indicate that the - * incoming frame contained a TCP segment with its SYN bit set - * and its ACK bit NOT set. (same meaning for all RxD buffer modes) - * Bit 17 - Is ICMP - * Bit 18 - RTH_SPDM_HIT Set to 1 if there was a match in the - * Socket Pair Direct Match Table and the frame was steered based on - * SPDM. - * Bit 19 - RTH_IT_HIT Set to 1 if there was a match in the - * Indirection Table and the frame was steered based on hash - * indirection. - * Bit 20 to 23 - RTH_HASH_TYPE Indicates the function (hash type) - * that was used to calculate the hash. - * Bit 19 - IS_VLAN Set to '1' if the frame was/is VLAN tagged. - * Bit 25 to 26 - ETHER_ENCAP Reflects the Ethernet encapsulation - * of the received frame. - * 0x0 - Ethernet DIX - * 0x1 - LLC - * 0x2 - SNAP (includes Jumbo-SNAP) - * 0x3 - IPX - * Bit 27 - IS_IPV4 Set to '1' if the frame contains IPv4 packet. - * Bit 28 - IS_IPV6 Set to '1' if the frame contains IPv6 packet. - * Bit 29 - IS_IP_FRAG Set to '1' if the frame contains a - * fragmented IP packet. - * Bit 30 - IS_TCP Set to '1' if the frame contains a TCP segment. - * Bit 31 - IS_UDP Set to '1' if the frame contains a UDP message. - * Bit 32 to 47 - L3_Checksum[0:15] The IPv4 checksum value that - * arrived with the frame. If the resulting computed IPv4 header - * checksum for the frame did not produce the expected 0xFFFF value, - * then the transfer code would be set to 0x9. - * Bit 48 to 63 - L4_Checksum[0:15] TCP/UDP checksum value that - * arrived with the frame. If the resulting computed TCP/UDP checksum - * for the frame did not produce the expected 0xFFFF value, then the - * transfer code would be set to 0xA. - * @control_1: Bits 0 to 1 - Reserved. - * Bits 2 to 15 - This field is written by the host and by X3100. - * The host writes the available buffer 0 size in bytes when it - * passes the descriptor to the X3100. The X3100 writes the number - * of bytes written to the buffer when it passes the descriptor back - * to the host. - * Bits 16 to 17 - Reserved - * Bits 18 to 31 - This field is set by the host and eventually - * overwritten by the adapter. The host writes the available - * buffer 1 size in bytes when it passes the descriptor to the adapter. - * When a frame is delivered the host, the adapter populates this field - * with the number of bytes written into the buffer 1. The largest - * supported buffer is 16, 383 bytes. - * Bits 32 to 33 - Reserved - * Bits 34 to 47 - This field is set by the host and eventually - * overwritten by the adapter. The host writes the available - * buffer 2 size in bytes when it passes the descriptor to the adapter. - * When a frame is delivered the host, the adapter populates this field - * with the number of bytes written into the buffer 2. The largest - * supported buffer is 16, 383 bytes. - * Bit 48 to 63 - VLAN_Tag[0:15] The contents of the variable - * portion of the VLAN tag, if one was detected by the adapter. This - * field is populated even if VLAN-tag stripping is enabled. - * @buffer0_ptr: Pointer to buffer 0. This field is populated by the driver. - * In 5-buffer mode, when the RxD is returned to the host, - * buffer0_ptr field will be overwritten if the following conditions - * are met: - * 1 - RTH_Disable in the PRC_CTRL register is not set. - * 2 - RTH is enabled and a valid hash value was calculated for the - * frame. This will be indicated by a non-zero value in the - * RTH_HASH_TYPE field (Control_0, bits 20:23). In the event that the - * pointer is overwritten on return to the host, bits 0:31 will be - * all zeroes while bits 32:63 will contain the calculated hash value. - * @buffer1_ptr: Pointer to buffer 1. This field is populated by the driver. - * @buffer2_ptr: Pointer to buffer 2. This field is populated by the driver. - * @buffer3_ptr: Pointer to buffer 3. This field is populated by the driver. - * @buffer4_ptr: Pointer to buffer 4. This field is populated by the driver. - * @pad: Pad to align at cache line boundary - * - * Three buffer mode RxD for ring structure - */ -typedef struct vxge_hal_ring_rxd_5_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u32 host_control; - u32 control_2; -#else - u32 control_2; - u32 host_control; -#endif - -#define VXGE_HAL_RING_RXD_5_BUFFER3_SIZE_GET(ctrl2) bVAL14(ctrl2, 34) -#define VXGE_HAL_RING_RXD_5_BUFFER3_SIZE(val) vBIT(val, 34, 14) -#define VXGE_HAL_RING_RXD_5_BUFFER3_SIZE_MASK vBIT(0x3FFF, 34, 14) - -#define VXGE_HAL_RING_RXD_5_BUFFER4_SIZE_GET(ctrl2) bVAL14(ctrl2, 50) -#define VXGE_HAL_RING_RXD_5_BUFFER4_SIZE(val) vBIT(val, 50, 14) -#define VXGE_HAL_RING_RXD_5_BUFFER4_SIZE_MASK vBIT(0x3FFF, 50, 14) - - - u64 control_0; -/* - * The following bit fields are common in all the three buffer modes and are - * defined in vxge_hal_ring_rxd_1_t - * #define VXGE_HAL_RING_RXD_RTH_BUCKET_GET(ctrl0) bVAL7(ctrl0, 0) - * #define VXGE_HAL_RING_RXD_RTH_BUCKET_ADAPTER vBIT(val, 0, 7) - * - * #define VXGE_HAL_RING_RXD_LIST_OWN_GET(ctrl0) bVAL1(ctrl0, 7) - * #define VXGE_HAL_RING_RXD_LIST_OWN_ADAPTER mBIT(7) - * - * #define VXGE_HAL_RING_RXD_FAST_PATH_ELIGIBLE_GET(ctrl0 \ - * bVAL1(ctrl0, 8) - * #define VXGE_HAL_RING_RXD_FAST_PATH_ELIGIBLE mBIT(8) - * - * #define VXGE_HAL_RING_RXD_L3_CKSUM_CORRECT_GET(ctrl0) \ - * bVAL1(ctrl0, 9) - * #define VXGE_HAL_RING_RXD_L3_CKSUM_CORRECT mBIT(9) - * - * #define VXGE_HAL_RING_RXD_L4_CKSUM_CORRECT_GET(ctrl0) \ - * bVAL1(ctrl0, 10) - * #define VXGE_HAL_RING_RXD_L4_CKSUM_CORRECT mBIT(10) - * - * #define VXGE_HAL_RING_RXD_T_CODE_GET(ctrl0) bVAL4(ctrl0, 12) - * #define VXGE_HAL_RING_RXD_T_CODE(val) vBIT(val, 12, 4) - * #define VXGE_HAL_RING_RXD_T_CODE_OK \ - * VXGE_HAL_RING_T_CODE_OK - * #define VXGE_HAL_RING_RXD_T_CODE_L3_CKSUM_MISMATCH \ - * VXGE_HAL_RING_T_CODE_L3_CKSUM_MISMATCH - * #define VXGE_HAL_RING_RXD_T_CODE_L4_CKSUM_MISMATCH \ - * VXGE_HAL_RING_T_CODE_L4_CKSUM_MISMATCH - * #define VXGE_HAL_RING_RXD_T_CODE_L3_L4_CKSUM_MISMATCH \ - * VXGE_HAL_RING_T_CODE_L3_L4_CKSUM_MISMATCH - * #define VXGE_HAL_RING_RXD_T_CODE_L3_PKT_ERR \ - * VXGE_HAL_RING_T_CODE_L3_PKT_ERR - * #define VXGE_HAL_RING_RXD_T_CODE_L2_FRM_ERR \ - * VXGE_HAL_RING_T_CODE_L2_FRM_ERR - * #define VXGE_HAL_RING_RXD_T_CODE_BUF_SIZE_ERR \ - * VXGE_HAL_RING_T_CODE_BUF_SIZE_ERR - * #define VXGE_HAL_RING_RXD_T_CODE_INT_ECC_ERR \ - * VXGE_HAL_RING_T_CODE_INT_ECC_ERR - * #define VXGE_HAL_RING_RXD_T_CODE_BENIGN_OVFLOW \ - * VXGE_HAL_RING_T_CODE_BENIGN_OVFLOW - * #define VXGE_HAL_RING_RXD_T_CODE_ZERO_LEN_BUFF \ - * VXGE_HAL_RING_T_CODE_ZERO_LEN_BUFF - * #define VXGE_HAL_RING_RXD_T_CODE_FRM_DROP \ - * VXGE_HAL_RING_T_CODE_FRM_DROP - * #define VXGE_HAL_RING_RXD_T_CODE_UNUSED \ - * VXGE_HAL_RING_T_CODE_UNUSED - * #define VXGE_HAL_RING_RXD_T_CODE_MULTI_ERR \ - * VXGE_HAL_RING_T_CODE_MULTI_ERR - * - * #define VXGE_HAL_RING_RXD_SYN_GET(ctrl0) bVAL1(ctrl0, 16) - * #define VXGE_HAL_RING_RXD_SYN mBIT(16) - * - * #define VXGE_HAL_RING_RXD_IS_ICMP_GET(ctrl0) bVAL1(ctrl0, 17) - * #define VXGE_HAL_RING_RXD_IS_ICMP mBIT(17) - * - * #define VXGE_HAL_RING_RXD_RTH_SPDM_HIT_GET(ctrl0) bVAL1(ctrl0, 18) - * #define VXGE_HAL_RING_RXD_RTH_SPDM_HIT mBIT(18) - * - * #define VXGE_HAL_RING_RXD_RTH_IT_HIT_GET(ctrl0) bVAL1(ctrl0, 19) - * #define VXGE_HAL_RING_RXD_RTH_IT_HIT mBIT(19) - * - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_GET(ctrl0) bVAL4(ctrl0, 20) - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE(val) vBIT(val, 20, 4) - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_NONE \ - * VXGE_HAL_RING_HASH_TYPE_NONE - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV4 \ - * VXGE_HAL_RING_HASH_TYPE_TCP_IPV4 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV4 \ - * VXGE_HAL_RING_HASH_TYPE_UDP_IPV4 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV4 \ - * VXGE_HAL_RING_HASH_TYPE_IPV4 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV6 \ - * VXGE_HAL_RING_HASH_TYPE_TCP_IPV6 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV6 \ - * VXGE_HAL_RING_HASH_TYPE_UDP_IPV6 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV6 \ - * VXGE_HAL_RING_HASH_TYPE_IPV6 - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_TCP_IPV6_EX \ - * VXGE_HAL_RING_HASH_TYPE_TCP_IPV6_EX - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_UDP_IPV6_EX \ - * VXGE_HAL_RING_HASH_TYPE_UDP_IPV6_EX - * #define VXGE_HAL_RING_RXD_RTH_HASH_TYPE_IPV6_EX \ - * VXGE_HAL_RING_HASH_TYPE_IPV6_EX - * - * #define VXGE_HAL_RING_RXD_IS_VLAN_GET(ctrl0) bVAL1(ctrl0, 24) - * #define VXGE_HAL_RING_RXD_IS_VLAN mBIT(24) - * - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_GET(ctrl0) bVAL2(ctrl0, 25) - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP(val) vBIT(val, 25, 2) - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_DIX VXGE_HAL_FRAME_TYPE_DIX - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_LLC VXGE_HAL_FRAME_TYPE_LLC - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_SNAP VXGE_HAL_FRAME_TYPE_SNAP - * #define VXGE_HAL_RING_RXD_ETHER_ENCAP_IPX VXGE_HAL_FRAME_TYPE_IPX - * - * #define VXGE_HAL_RING_RXD_IS_IPV4_GET(ctrl0) bVAL1(ctrl0, 27) - * #define VXGE_HAL_RING_RXD_IS_IPV4 mBIT(27) - * - * #define VXGE_HAL_RING_RXD_IS_IPV6_GET(ctrl0) bVAL1(ctrl0, 28) - * #define VXGE_HAL_RING_RXD_IS_IPV6 mBIT(28) - * - * #define VXGE_HAL_RING_RXD_IS_IPV_FRAG_GET(ctrl0) bVAL1(ctrl0, 29) - * #define VXGE_HAL_RING_RXD_IS_IPV_FRAG mBIT(29) - * - * #define VXGE_HAL_RING_RXD_IS_TCP_GET(ctrl0) bVAL1(ctrl0, 30) - * #define VXGE_HAL_RING_RXD_IS_TCP mBIT(30) - * - * #define VXGE_HAL_RING_RXD_IS_UDP_GET(ctrl0) bVAL1(ctrl0, 31) - * #define VXGE_HAL_RING_RXD_IS_UDP mBIT(31) - * - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_GET(ctrl0) bVAL5(ctrl0, 27) - * #define VXGE_HAL_RING_RXD_FRAME_PROTO(val) vBIT(val, 27, 5) - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_IPV4 VXGE_HAL_FRAME_PROTO_IPV4 - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_IPV6 VXGE_HAL_FRAME_PROTO_IPV6 - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_IP_FRAG \ - * VXGE_HAL_FRAME_PROTO_IP_FRAG - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_TCP VXGE_HAL_FRAME_PROTO_TCP - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_UDP VXGE_HAL_FRAME_PROTO_UDP - * #define VXGE_HAL_RING_RXD_FRAME_PROTO_TCP_OR_UDP \ - * (VXGE_HAL_FRAME_PROTO_TCP | VXGE_HAL_FRAME_PROTO_UDP) - * - * #define VXGE_HAL_RING_RXD_L3_CKSUM_GET(ctrl0) bVAL16(ctrl0, 32) - * #define VXGE_HAL_RING_RXD_L3_CKSUM(val) vBIT(val, 32, 16) - * - * #define VXGE_HAL_RING_RXD_L4_CKSUM_GET(ctrl0) bVAL16(ctrl0, 48) - * #define VXGE_HAL_RING_RXD_L4_CKSUM(val) vBIT(val, 48, 16) - */ - - u64 control_1; - -#define VXGE_HAL_RING_RXD_5_BUFFER0_SIZE_GET(ctrl1) bVAL14(ctrl1, 2) -#define VXGE_HAL_RING_RXD_5_BUFFER0_SIZE(val) vBIT(val, 2, 14) -#define VXGE_HAL_RING_RXD_5_BUFFER0_SIZE_MASK vBIT(0x3FFF, 2, 14) - -#define VXGE_HAL_RING_RXD_5_BUFFER1_SIZE_GET(ctrl1) bVAL14(ctrl1, 18) -#define VXGE_HAL_RING_RXD_5_BUFFER1_SIZE(val) vBIT(val, 18, 14) -#define VXGE_HAL_RING_RXD_5_BUFFER1_SIZE_MASK vBIT(0x3FFF, 18, 14) - -#define VXGE_HAL_RING_RXD_5_BUFFER2_SIZE_GET(ctrl1) bVAL14(ctrl1, 34) -#define VXGE_HAL_RING_RXD_5_BUFFER2_SIZE(val) vBIT(val, 34, 14) -#define VXGE_HAL_RING_RXD_5_BUFFER2_SIZE_MASK vBIT(0xFFFF, 34, 14) - -/* - * The following bit fields are common in all the three buffer modes and are - * defined in vxge_hal_ring_rxd_1_t - * #define VXGE_HAL_RING_RXD_VLAN_TAG_GET(ctrl1) bVAL16(ctrl1, 48) - * #define VXGE_HAL_RING_RXD_VLAN_TAG(val) vBIT(val, 48, 16) - */ - - u64 buffer0_ptr; -#define VXGE_HAL_RING_RXD_5_RTH_HASH_VALUE_GET(b0_ptr) bVAL32(b0_ptr, 32) -#define VXGE_HAL_RING_RXD_5_RTH_HASH_VALUE(val) vBIT(val, 32, 32) - - u64 buffer1_ptr; - u64 buffer2_ptr; - u64 buffer3_ptr; - u64 buffer4_ptr; -} vxge_hal_ring_rxd_5_t; - -/* - * function vxge_hal_ring_callback_f - Ring callback. - * @vpath_handle: Virtual Path whose Ring "containing" 1 or more completed - * descriptors. - * @rxdh: First completed descriptor. - * @rxd_priv: Pointer to per rxd space allocated - * @t_code: Transfer code, as per X3100 User Guide. - * Returned by HAL. - * @userdata: Opaque per-ring data specified at ring open - * time, via vxge_hal_vpath_open(). - * - * ring completion callback (type declaration). A single per-ring - * callback is specified at virtual path open time, via - * vxge_hal_vpath_open(). - * Typically gets called as part of the processing of the Interrupt - * Service Routine. - * - * ring callback gets called by HAL if, and only if, there is at least - * one new completion on a given ring . Upon processing the first @rxdh - * ULD is _supposed_ to continue consuming completions - * using - vxge_hal_ring_rxd_next_completed(). - * - * Note that failure to process new completions in a timely fashion - * leads to VXGE_HAL_INF_OUT_OF_DESCRIPTORS condition. - * - * Non-zero @t_code means failure to process receive descriptor. - * - * In the "transmit" case the failure could happen, for instance, when the - * link is down, in which case X3100 completes the descriptor because it - * is not able to send the data out. - * - * For details please refer to X3100 User Guide. - * - * See also: vxge_hal_ring_rxd_next_completed(), vxge_hal_ring_rxd_term_f {}. - */ -typedef vxge_hal_status_e(*vxge_hal_ring_callback_f) ( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - void *rxd_priv, - u8 t_code, - void *userdata); - -/* - * function vxge_hal_ring_rxd_init_f - Initialize descriptor callback. - * @vpath_handle: Virtual path whose ring "containing" the @rxdh descriptor. - * @rxdh: Descriptor. - * @rxd_priv: Pointer to per rxd space allocated - * @index: Index of the descriptor in the ring's set of descriptors. - * @userdata: Per-ring user data (a.k.a. context) specified at - * ring open time, via vxge_hal_vpath_open(). - * @reopen: See vxge_hal_reopen_e {}. - * - * Initialize descriptor callback. Unless NULL is specified in the - * vxge_hal_ring_attr_t {} structure passed to vxge_hal_vpath_open()), - * HAL invokes the callback as part of the ring create in vxge_hal_vpath_open() - * implementation. - * The ULD is expected to fill in this descriptor with buffer(s) - * and control information. - * - * See also: vxge_hal_ring_attr_t {}, vxge_hal_ring_rxd_term_f {}. - */ -typedef vxge_hal_status_e(*vxge_hal_ring_rxd_init_f) ( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - void *rxd_priv, - u32 index, - void *userdata, - vxge_hal_reopen_e reopen); - -/* - * function vxge_hal_ring_rxd_term_f - Terminate descriptor callback. - * @vpath_handle: Virtual path whose ring "containing" the @rxdh descriptor. - * @rxdh: First completed descriptor. - * @rxd_priv: Pointer to per rxd space allocated - * @state: One of the vxge_hal_rxd_state_e {} enumerated states. - * @userdata: Per-ring user data (a.k.a. context) specified at - * ring open time, via vxge_hal_vpath_open(). - * @reopen: See vxge_hal_reopen_e {}. - * - * Terminate descriptor callback. Unless NULL is specified in the - * vxge_hal_ring_attr_t {} structure passed to vxge_hal_vpath_open()), - * HAL invokes the callback as part of closing the corresponding - * ring, prior to de-allocating the ring and associated data - * structures (including descriptors). - * ULD should utilize the callback to (for instance) unmap - * and free DMA data buffers associated with the posted (state = - * VXGE_HAL_RXD_STATE_POSTED) descriptors, - * as well as other relevant cleanup functions. - * - * See also: vxge_hal_ring_attr_t {}, vxge_hal_ring_rxd_init_f {}. - */ -typedef void (*vxge_hal_ring_rxd_term_f) ( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - void *rxd_priv, - vxge_hal_rxd_state_e state, - void *userdata, - vxge_hal_reopen_e reopen); - -/* - * struct vxge_hal_ring_attr_t - Ring open "template". - * @callback: Ring completion callback. HAL invokes the callback when there - * are new completions on that ring. In many implementations - * the @callback executes in the hw interrupt context. - * @rxd_init: Ring's descriptor-initialize callback. - * See vxge_hal_ring_rxd_init_f {}. - * If not NULL, HAL invokes the callback when opening - * the ring. - * @rxd_term: Ring's descriptor-terminate callback. If not NULL, - * HAL invokes the callback when closing the corresponding ring. - * See also vxge_hal_ring_rxd_term_f {}. - * @userdata: User-defined "context" of _that_ ring. Passed back to the - * user as one of the @callback, @rxd_init, and @rxd_term arguments. - * @per_rxd_space: If specified (i.e., greater than zero): extra space - * reserved by HAL per each receive descriptor. Can be used to store, - * and retrieve on completion, information specific - * to the upper-layer. - * - * Ring open "template". User fills the structure with ring - * attributes and passes it to vxge_hal_vpath_open(). - */ -typedef struct vxge_hal_ring_attr_t { - vxge_hal_ring_callback_f callback; - vxge_hal_ring_rxd_init_f rxd_init; - vxge_hal_ring_rxd_term_f rxd_term; - void *userdata; - u32 per_rxd_space; -} vxge_hal_ring_attr_t; - - -/* - * vxge_hal_ring_rxd_size_get - Get the size of ring descriptor. - * @buf_mode: Buffer mode (1, 3 or 5) - * - * This function returns the size of RxD for given buffer mode - */ -static inline u32 -/* LINTED */ -vxge_hal_ring_rxd_size_get( - u32 buf_mode) -{ - return ((u32) (buf_mode == 1 ? sizeof(vxge_hal_ring_rxd_1_t) : \ - (buf_mode == 3 ? sizeof(vxge_hal_ring_rxd_3_t) : \ - sizeof(vxge_hal_ring_rxd_5_t)))); - -} - -/* - * vxge_hal_ring_rxds_per_block_get - Get the number of rxds per block. - * @buf_mode: Buffer mode (1, 3 or 5) - * - * This function returns the number of RxD for RxD block for given buffer mode - */ -static inline u32 -/* LINTED */ -vxge_hal_ring_rxds_per_block_get( - u32 buf_mode) -{ - return ((u32) ((VXGE_OS_HOST_PAGE_SIZE - 16) / - ((buf_mode == 1) ? sizeof(vxge_hal_ring_rxd_1_t) : - ((buf_mode == 3) ? sizeof(vxge_hal_ring_rxd_3_t) : - sizeof(vxge_hal_ring_rxd_5_t))))); -} - -/* - * vxge_hal_ring_rxd_reserve - Reserve ring descriptor. - * @vpath_handle: virtual Path handle. - * @rxdh: Reserved descriptor. On success HAL fills this "out" parameter - * with a valid handle. - * @rxd_priv: Buffer to return the pointer to per rxd space allocated - * - * Reserve Rx descriptor for the subsequent filling-in (by upper layer - * driver (ULD)) and posting on the corresponding ring - * via vxge_hal_ring_rxd_post(). - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_OUT_OF_DESCRIPTORS - Currently no descriptors available. - * - */ -vxge_hal_status_e -vxge_hal_ring_rxd_reserve( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h *rxdh, - void **rxd_priv); - -/* - * vxge_hal_ring_rxd_1b_set - Prepare 1-buffer-mode descriptor. - * @rxdh: Descriptor handle. - * @dma_pointer: DMA address of a single receive buffer this descriptor - * should carry. Note that by the time - * vxge_hal_ring_rxd_1b_set is called, the - * receive buffer should be already mapped - * to the corresponding X3100 device. - * @size: Size of the receive @dma_pointer buffer. - * - * Prepare 1-buffer-mode Rx descriptor for posting - * (via vxge_hal_ring_rxd_post()). - * - * This inline helper-function does not return any parameters and always - * succeeds. - * - */ -static inline -/* LINTED */ -void vxge_hal_ring_rxd_1b_set( - vxge_hal_rxd_h rxdh, - dma_addr_t dma_pointer, - int size) -{ - vxge_hal_ring_rxd_1_t *rxdp = (vxge_hal_ring_rxd_1_t *) rxdh; - rxdp->buffer0_ptr = dma_pointer; - rxdp->control_1 &= ~VXGE_HAL_RING_RXD_1_BUFFER0_SIZE_MASK; - rxdp->control_1 |= VXGE_HAL_RING_RXD_1_BUFFER0_SIZE(size); -} - -/* - * vxge_hal_ring_rxd_3b_set - Prepare 3-buffer-mode descriptor. - * @rxdh: Descriptor handle. - * @dma_pointers: Array of DMA addresses. Contains exactly 3 receive buffers - * _this_ descriptor should carry. Note that by the time - * vxge_hal_ring_rxd_3b_set is called, the receive buffers should - * be mapped to the corresponding X3100 device. - * @sizes: Array of receive buffer sizes. Contains 3 sizes: one size per - * buffer from @dma_pointers. - * - * Prepare 3-buffer-mode Rx descriptor for posting (via - * vxge_hal_ring_rxd_post()). - * This inline helper-function does not return any parameters and always - * succeeds. - * - */ -static inline -/* LINTED */ -void vxge_hal_ring_rxd_3b_set( - vxge_hal_rxd_h rxdh, - dma_addr_t dma_pointers[], - u32 sizes[]) -{ - vxge_hal_ring_rxd_3_t *rxdp = (vxge_hal_ring_rxd_3_t *) rxdh; - rxdp->buffer0_ptr = dma_pointers[0]; - rxdp->control_1 &= (~VXGE_HAL_RING_RXD_3_BUFFER0_SIZE_MASK); - rxdp->control_1 |= VXGE_HAL_RING_RXD_3_BUFFER0_SIZE(sizes[0]); - rxdp->buffer1_ptr = dma_pointers[1]; - rxdp->control_1 &= (~VXGE_HAL_RING_RXD_3_BUFFER1_SIZE_MASK); - rxdp->control_1 |= VXGE_HAL_RING_RXD_3_BUFFER1_SIZE(sizes[1]); - rxdp->buffer2_ptr = dma_pointers[2]; - rxdp->control_1 &= (~VXGE_HAL_RING_RXD_3_BUFFER2_SIZE_MASK); - rxdp->control_1 |= VXGE_HAL_RING_RXD_3_BUFFER2_SIZE(sizes[2]); -} - -/* - * vxge_hal_ring_rxd_5b_set - Prepare 5-buffer-mode descriptor. - * @rxdh: Descriptor handle. - * @dma_pointers: Array of DMA addresses. Contains exactly 5 receive buffers - * _this_ descriptor should carry. Note that by the time - * vxge_hal_ring_rxd_5b_set is called, the receive buffers should - * be mapped to the corresponding X3100 device. - * @sizes: Array of receive buffer sizes. Contains 5 sizes: one size per buffer - * from @dma_pointers. - * - * Prepare 5-buffer-mode Rx descriptor for posting - * (via vxge_hal_ring_rxd_post()). - * This inline helper-function does not return any - * values and always succeeds. - * - * See also: vxge_hal_ring_rxd_1b_set(), vxge_hal_ring_rxd_3b_set(). - */ -static inline -/* LINTED */ -void vxge_hal_ring_rxd_5b_set( - vxge_hal_rxd_h rxdh, - dma_addr_t dma_pointers[], - u32 sizes[]) -{ - vxge_hal_ring_rxd_5_t *rxdp = (vxge_hal_ring_rxd_5_t *) rxdh; - - rxdp->buffer0_ptr = dma_pointers[0]; - rxdp->control_1 &= (~VXGE_HAL_RING_RXD_5_BUFFER0_SIZE_MASK); - rxdp->control_1 |= VXGE_HAL_RING_RXD_5_BUFFER0_SIZE(sizes[0]); - rxdp->buffer1_ptr = dma_pointers[1]; - rxdp->control_1 &= (~VXGE_HAL_RING_RXD_5_BUFFER1_SIZE_MASK); - rxdp->control_1 |= VXGE_HAL_RING_RXD_5_BUFFER1_SIZE(sizes[1]); - rxdp->buffer2_ptr = dma_pointers[2]; - rxdp->control_1 &= (~VXGE_HAL_RING_RXD_5_BUFFER2_SIZE_MASK); - rxdp->control_1 |= VXGE_HAL_RING_RXD_5_BUFFER2_SIZE(sizes[2]); - rxdp->buffer3_ptr = dma_pointers[3]; - rxdp->control_2 &= (~VXGE_HAL_RING_RXD_5_BUFFER3_SIZE_MASK); - rxdp->control_2 |= VXGE_HAL_RING_RXD_5_BUFFER3_SIZE(sizes[3]); - rxdp->buffer4_ptr = dma_pointers[4]; - rxdp->control_2 &= (~VXGE_HAL_RING_RXD_5_BUFFER4_SIZE_MASK); - rxdp->control_2 |= VXGE_HAL_RING_RXD_5_BUFFER4_SIZE(sizes[4]); -} - -/* - * vxge_hal_ring_rxd_pre_post - Prepare rxd and post - * @vpath_handle: virtual Path handle. - * @rxdh: Descriptor handle. - * - * This routine prepares a rxd and posts - */ -void -vxge_hal_ring_rxd_pre_post( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh); - -/* - * vxge_hal_ring_rxd_post_post - Process rxd after post. - * @vpath_handle: virtual Path handle. - * @rxdh: Descriptor handle. - * - * Processes rxd after post - */ -void -vxge_hal_ring_rxd_post_post( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh); - -/* - * vxge_hal_ring_rxd_post_post_db - Post Doorbell after posting the rxd(s). - * @vpath_handle: virtual Path handle. - * - * Post Doorbell after posting the rxd(s). - */ -void -vxge_hal_ring_rxd_post_post_db( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_ring_rxd_post_post_wmb - Process rxd after post with memory barrier - * @vpath_handle: virtual Path handle. - * @rxdh: Descriptor handle. - * - * Processes rxd after post with memory barrier. - */ -void -vxge_hal_ring_rxd_post_post_wmb( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh); - -/* - * vxge_hal_ring_rxd_post - Post descriptor on the ring. - * @vpath_handle: virtual Path handle. - * @rxdh: Descriptor obtained via vxge_hal_ring_rxd_reserve(). - * - * Post descriptor on the ring. - * Prior to posting the descriptor should be filled in accordance with - * Host/X3100 interface specification for a given service (LL, etc.). - * - */ -void -vxge_hal_ring_rxd_post( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh); - -/* - * vxge_hal_ring_is_next_rxd_completed - Check if the next rxd is completed - * @vpath_handle: Virtual Path handle. - * - * Checks if the _next_ completed descriptor is in host memory - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS - No completed descriptors - * are currently available for processing. - */ -vxge_hal_status_e -vxge_hal_ring_is_next_rxd_completed( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_ring_rxd_next_completed - Get the _next_ completed descriptor. - * @vpath_handle: Virtual path handle. - * @rxdh: Descriptor handle. Returned by HAL. - * @rxd_priv: Buffer to return a pointer to the per rxd space allocated - * @t_code: Transfer code, as per X3100 User Guide, - * Receive Descriptor Format. Returned by HAL. - * - * Retrieve the _next_ completed descriptor. - * HAL uses ring callback (*vxge_hal_ring_callback_f) to notifiy - * upper-layer driver (ULD) of new completed descriptors. After that - * the ULD can use vxge_hal_ring_rxd_next_completed to retrieve the rest - * completions (the very first completion is passed by HAL via - * vxge_hal_ring_callback_f). - * - * Implementation-wise, the upper-layer driver is free to call - * vxge_hal_ring_rxd_next_completed either immediately from inside the - * ring callback, or in a deferred fashion and separate (from HAL) - * context. - * - * Non-zero @t_code means failure to fill-in receive buffer(s) - * of the descriptor. - * For instance, parity error detected during the data transfer. - * In this case X3100 will complete the descriptor and indicate - * for the host that the received data is not to be used. - * For details please refer to X3100 User Guide. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS - No completed descriptors - * are currently available for processing. - * - * See also: vxge_hal_ring_callback_f {}, - * vxge_hal_fifo_txdl_next_completed(), vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_ring_rxd_next_completed( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h *rxdh, - void **rxd_priv, - u8 *t_code); - -/* - * vxge_hal_ring_handle_tcode - Handle transfer code. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * @t_code: One of the enumerated (and documented in the X3100 user guide) - * "transfer codes". - * - * Handle descriptor's transfer code. The latter comes with each completed - * descriptor. - * - * Returns: one of the vxge_hal_status_e {} enumerated types. - * VXGE_HAL_OK - for success. - * VXGE_HAL_ERR_CRITICAL - when encounters critical error. - */ -vxge_hal_status_e -vxge_hal_ring_handle_tcode( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - u8 t_code); - -/* - * vxge_hal_ring_rxd_1b_get - Get data from the completed 1-buf - * descriptor. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * @dma_pointer: DMA address of a single receive buffer _this_ descriptor - * carries. Returned by HAL. - * @pkt_length: Length (in bytes) of the data in the buffer pointed by - * @dma_pointer. Returned by HAL. - * - * Retrieve protocol data from the completed 1-buffer-mode Rx descriptor. - * This inline helper-function uses completed descriptor to populate receive - * buffer pointer and other "out" parameters. The function always succeeds. - * - */ -static inline -/* LINTED */ -void vxge_hal_ring_rxd_1b_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - dma_addr_t *dma_pointer, - u32 *pkt_length) -{ - vxge_hal_ring_rxd_1_t *rxdp = (vxge_hal_ring_rxd_1_t *) rxdh; - - *pkt_length = - (u32) VXGE_HAL_RING_RXD_1_BUFFER0_SIZE_GET(rxdp->control_1); - *dma_pointer = rxdp->buffer0_ptr; -} - -/* - * vxge_hal_ring_rxd_3b_get - Get data from the completed 3-buf - * descriptor. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * @dma_pointers: DMA addresses of the 3 receive buffers _this_ descriptor - * carries. The first two buffers contain ethernet and - * (IP + transport) headers. The 3rd buffer contains packet - * data. - * @sizes: Array of receive buffer sizes. Contains 3 sizes: one size per - * buffer from @dma_pointers. Returned by HAL. - * - * Retrieve protocol data from the completed 3-buffer-mode Rx descriptor. - * This inline helper-function uses completed descriptor to populate receive - * buffer pointer and other "out" parameters. The function always succeeds. - * - */ -static inline -/* LINTED */ -void vxge_hal_ring_rxd_3b_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - dma_addr_t dma_pointers[], - u32 sizes[]) -{ - vxge_hal_ring_rxd_3_t *rxdp = (vxge_hal_ring_rxd_3_t *) rxdh; - - dma_pointers[0] = rxdp->buffer0_ptr; - sizes[0] = (u32) VXGE_HAL_RING_RXD_3_BUFFER0_SIZE_GET(rxdp->control_1); - - dma_pointers[1] = rxdp->buffer1_ptr; - sizes[1] = (u32) VXGE_HAL_RING_RXD_3_BUFFER1_SIZE_GET(rxdp->control_1); - - dma_pointers[2] = rxdp->buffer2_ptr; - sizes[2] = (u32) VXGE_HAL_RING_RXD_3_BUFFER2_SIZE_GET(rxdp->control_1); -} - -/* - * vxge_hal_ring_rxd_5b_get - Get data from the completed 5-buf descriptor. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * @dma_pointers: DMA addresses of the 5 receive buffers _this_ descriptor - * carries. The first 4 buffers contains L2 (ethernet) through - * L5 headers. The 5th buffer contain received (applicaion) - * data. Returned by HAL. - * @sizes: Array of receive buffer sizes. Contains 5 sizes: one size per - * buffer from @dma_pointers. Returned by HAL. - * - * Retrieve protocol data from the completed 5-buffer-mode Rx descriptor. - * This inline helper-function uses completed descriptor to populate receive - * buffer pointer and other "out" parameters. The function always succeeds. - * - * See also: vxge_hal_ring_rxd_3b_get(), vxge_hal_ring_rxd_5b_get(). - */ -static inline -/* LINTED */ -void vxge_hal_ring_rxd_5b_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - dma_addr_t dma_pointers[], - int sizes[]) -{ - vxge_hal_ring_rxd_5_t *rxdp = (vxge_hal_ring_rxd_5_t *) rxdh; - - dma_pointers[0] = rxdp->buffer0_ptr; - sizes[0] = (u32) VXGE_HAL_RING_RXD_5_BUFFER0_SIZE_GET(rxdp->control_1); - - dma_pointers[1] = rxdp->buffer1_ptr; - sizes[1] = (u32) VXGE_HAL_RING_RXD_5_BUFFER1_SIZE_GET(rxdp->control_1); - - dma_pointers[2] = rxdp->buffer2_ptr; - sizes[2] = (u32) VXGE_HAL_RING_RXD_5_BUFFER2_SIZE_GET(rxdp->control_1); - - dma_pointers[3] = rxdp->buffer3_ptr; - sizes[3] = (u32) VXGE_HAL_RING_RXD_5_BUFFER3_SIZE_GET(rxdp->control_2); - - dma_pointers[4] = rxdp->buffer4_ptr; - sizes[4] = (u32) VXGE_HAL_RING_RXD_5_BUFFER3_SIZE_GET(rxdp->control_2); -} - -/* - * vxge_hal_ring_rxd_1b_info_get - Get extended information associated with - * a completed receive descriptor for 1b mode. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * @rxd_info: Descriptor information - * - * Retrieve extended information associated with a completed receive descriptor. - * - */ -static inline -/* LINTED */ -void vxge_hal_ring_rxd_1b_info_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - vxge_hal_ring_rxd_info_t *rxd_info) -{ - vxge_hal_ring_rxd_1_t *rxdp = (vxge_hal_ring_rxd_1_t *) rxdh; - - rxd_info->syn_flag = - (u32) VXGE_HAL_RING_RXD_SYN_GET(rxdp->control_0); - rxd_info->is_icmp = - (u32) VXGE_HAL_RING_RXD_IS_ICMP_GET(rxdp->control_0); - rxd_info->fast_path_eligible = - (u32) VXGE_HAL_RING_RXD_FAST_PATH_ELIGIBLE_GET(rxdp->control_0); - rxd_info->l3_cksum_valid = - (u32) VXGE_HAL_RING_RXD_L3_CKSUM_CORRECT_GET(rxdp->control_0); - rxd_info->l3_cksum = - (u32) VXGE_HAL_RING_RXD_L3_CKSUM_GET(rxdp->control_0); - rxd_info->l4_cksum_valid = - (u32) VXGE_HAL_RING_RXD_L4_CKSUM_CORRECT_GET(rxdp->control_0); - rxd_info->l4_cksum = - (u32) VXGE_HAL_RING_RXD_L4_CKSUM_GET(rxdp->control_0); - rxd_info->frame = - (u32) VXGE_HAL_RING_RXD_ETHER_ENCAP_GET(rxdp->control_0); - rxd_info->proto = - (u32) VXGE_HAL_RING_RXD_FRAME_PROTO_GET(rxdp->control_0); - rxd_info->is_vlan = - (u32) VXGE_HAL_RING_RXD_IS_VLAN_GET(rxdp->control_0); - rxd_info->vlan = - (u32) VXGE_HAL_RING_RXD_VLAN_TAG_GET(rxdp->control_1); - rxd_info->rth_bucket = - (u32) VXGE_HAL_RING_RXD_RTH_BUCKET_GET(rxdp->control_0); - rxd_info->rth_it_hit = - (u32) VXGE_HAL_RING_RXD_RTH_IT_HIT_GET(rxdp->control_0); - rxd_info->rth_spdm_hit = - (u32) VXGE_HAL_RING_RXD_RTH_SPDM_HIT_GET(rxdp->control_0); - rxd_info->rth_hash_type = - (u32) VXGE_HAL_RING_RXD_RTH_HASH_TYPE_GET(rxdp->control_0); - rxd_info->rth_value = - (u32) VXGE_HAL_RING_RXD_1_RTH_HASH_VAL_GET(rxdp->control_1); -} - -/* - * vxge_hal_ring_rxd_3b_5b_info_get - Get extended information associated with - * a completed receive descriptor for 3b & 5b mode. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * @rxd_info: Descriptor information - * - * Retrieve extended information associated with a completed receive descriptor. - * - */ -static inline -/* LINTED */ -void vxge_hal_ring_rxd_3b_5b_info_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - vxge_hal_ring_rxd_info_t *rxd_info) -{ - vxge_hal_ring_rxd_3_t *rxdp = (vxge_hal_ring_rxd_3_t *) rxdh; - - rxd_info->syn_flag = - (u32) VXGE_HAL_RING_RXD_SYN_GET(rxdp->control_0); - rxd_info->is_icmp = - (u32) VXGE_HAL_RING_RXD_IS_ICMP_GET(rxdp->control_0); - rxd_info->fast_path_eligible = - (u32) VXGE_HAL_RING_RXD_FAST_PATH_ELIGIBLE_GET(rxdp->control_0); - rxd_info->l3_cksum_valid = - (u32) VXGE_HAL_RING_RXD_L3_CKSUM_CORRECT_GET(rxdp->control_0); - rxd_info->l3_cksum = - (u32) VXGE_HAL_RING_RXD_L3_CKSUM_GET(rxdp->control_0); - rxd_info->l4_cksum_valid = - (u32) VXGE_HAL_RING_RXD_L4_CKSUM_CORRECT_GET(rxdp->control_0); - rxd_info->l4_cksum = - (u32) VXGE_HAL_RING_RXD_L4_CKSUM_GET(rxdp->control_0); - rxd_info->frame = - (u32) VXGE_HAL_RING_RXD_ETHER_ENCAP_GET(rxdp->control_0); - rxd_info->proto = - (u32) VXGE_HAL_RING_RXD_FRAME_PROTO_GET(rxdp->control_0); - rxd_info->is_vlan = - (u32) VXGE_HAL_RING_RXD_IS_VLAN_GET(rxdp->control_0); - rxd_info->vlan = - (u32) VXGE_HAL_RING_RXD_VLAN_TAG_GET(rxdp->control_1); - rxd_info->rth_bucket = - (u32) VXGE_HAL_RING_RXD_RTH_BUCKET_GET(rxdp->control_0); - rxd_info->rth_it_hit = - (u32) VXGE_HAL_RING_RXD_RTH_IT_HIT_GET(rxdp->control_0); - rxd_info->rth_spdm_hit = - (u32) VXGE_HAL_RING_RXD_RTH_SPDM_HIT_GET(rxdp->control_0); - rxd_info->rth_hash_type = - (u32) VXGE_HAL_RING_RXD_RTH_HASH_TYPE_GET(rxdp->control_0); - rxd_info->rth_value = (u32) VXGE_HAL_RING_RXD_3_RTH_HASH_VALUE_GET( - rxdp->buffer0_ptr); -} - -/* - * vxge_hal_device_is_privileged - * @host_type: host type. - * @func_id: function id. - * - */ -vxge_hal_status_e -vxge_hal_device_is_privileged( - u32 host_type, - u32 func_id); - -/* - * vxge_hal_ring_rxd_private_get - Get ULD private per-descriptor data - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * - * Returns: private ULD info associated with the descriptor. - * ULD requests per-descriptor space via vxge_hal_ring_attr. - * - */ -void * -vxge_hal_ring_rxd_private_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh); - -/* - * vxge_hal_ring_rxd_free - Free descriptor. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * - * Free the reserved descriptor. This operation is "symmetrical" to - * vxge_hal_ring_rxd_reserve. The "free-ing" completes the descriptor's - * lifecycle. - * - * After free-ing (see vxge_hal_ring_rxd_free()) the descriptor again can - * be: - * - * - reserved (vxge_hal_ring_rxd_reserve); - * - * - posted (vxge_hal_ring_rxd_post); - * - * - completed (vxge_hal_ring_rxd_next_completed); - * - * - and recycled again (vxge_hal_ring_rxd_free). - * - * For alternative state transitions and more details please refer to - * the design doc. - * - */ -void -vxge_hal_ring_rxd_free( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh); - - -/* - * Fifo - */ -/* - * TX Descriptor - */ -/* - * enum vxge_hal_txdl_state_e - Descriptor (TXDL) state. - * @VXGE_HAL_TXDL_STATE_NONE: Invalid state. - * @VXGE_HAL_TXDL_STATE_AVAIL: Descriptor is available for reservation. - * @VXGE_HAL_TXDL_STATE_POSTED: Descriptor is posted for processing by the - * device. - * @VXGE_HAL_TXDL_STATE_FREED: Descriptor is free and can be reused for - * filling-in and posting later. - * - * X3100/HAL descriptor states. - * - */ -typedef enum vxge_hal_txdl_state_e { - VXGE_HAL_TXDL_STATE_NONE = 0, - VXGE_HAL_TXDL_STATE_AVAIL = 1, - VXGE_HAL_TXDL_STATE_POSTED = 2, - VXGE_HAL_TXDL_STATE_FREED = 3 -} vxge_hal_txdl_state_e; - -/* - * enum vxge_hal_fifo_tcode_e - tcodes used in fifo - * @VXGE_HAL_FIFO_T_CODE_OK: Transfer OK - * @VXGE_HAL_FIFO_T_CODE_PCI_READ_CORRUPT: PCI read transaction (either TxD or - * frame data) returned with corrupt data. - * @VXGE_HAL_FIFO_T_CODE_PCI_READ_FAIL:PCI read transaction was returned - * with no data. - * @VXGE_HAL_FIFO_T_CODE_INVALID_MSS: The host attempted to send either a - * frame or LSO MSS that was too long (>9800B). - * @VXGE_HAL_FIFO_T_CODE_LSO_ERROR: Error detected during TCP/UDP Large Send - * Offload operation, due to improper header template, - * unsupported protocol, etc. - * @VXGE_HAL_FIFO_T_CODE_UNUSED: Unused - * @VXGE_HAL_FIFO_T_CODE_MULTI_ERROR: Set to 1 by the adapter if multiple - * data buffer transfer errors are encountered (see below). - * Otherwise it is set to 0. - * - * These tcodes are returned in various API for TxD status - */ -typedef enum vxge_hal_fifo_tcode_e { - VXGE_HAL_FIFO_T_CODE_OK = 0x0, - VXGE_HAL_FIFO_T_CODE_PCI_READ_CORRUPT = 0x1, - VXGE_HAL_FIFO_T_CODE_PCI_READ_FAIL = 0x2, - VXGE_HAL_FIFO_T_CODE_INVALID_MSS = 0x3, - VXGE_HAL_FIFO_T_CODE_LSO_ERROR = 0x4, - VXGE_HAL_FIFO_T_CODE_UNUSED = 0x7, - VXGE_HAL_FIFO_T_CODE_MULTI_ERROR = 0x8 -} vxge_hal_fifo_tcode_e; - -/* - * enum vxge_hal_fifo_host_steer_e - Host steer type - * @VXGE_HAL_FIFO_HOST_STEER_NORMAL: Normal. Use Destination/MAC Address - * lookup to determine the transmit porte - * @VXGE_HAL_FIFO_HOST_STEER_PORT1: Send on physical Port1 - * @VXGE_HAL_FIFO_HOST_STEER_PORT0: Send on physical Port0 - * @VXGE_HAL_FIFO_HOST_STEER_BOTH: Send on both ports. - * - * Host steer type - */ -typedef enum vxge_hal_fifo_host_steer_e { - VXGE_HAL_FIFO_HOST_STEER_NORMAL = 0x0, - VXGE_HAL_FIFO_HOST_STEER_PORT1 = 0x1, - VXGE_HAL_FIFO_HOST_STEER_PORT0 = 0x2, - VXGE_HAL_FIFO_HOST_STEER_BOTH = 0x3 -} vxge_hal_fifo_host_steer_e; - -/* - * enum vxge_hal_fifo_gather_code_e - Gather codes used in fifo TxD - * @VXGE_HAL_FIFO_GATHER_CODE_FIRST: First TxDL - * @VXGE_HAL_FIFO_GATHER_CODE_MIDDLE: Middle TxDL - * @VXGE_HAL_FIFO_GATHER_CODE_LAST: Last TxDL - * @VXGE_HAL_FIFO_GATHER_CODE_FIRST_LAST: First and Last TxDL. - * - * These gather codes are used to indicate the position of a TxD in a TxD list - */ -typedef enum vxge_hal_fifo_gather_code_e { - VXGE_HAL_FIFO_GATHER_CODE_FIRST = 0x2, - VXGE_HAL_FIFO_GATHER_CODE_MIDDLE = 0x0, - VXGE_HAL_FIFO_GATHER_CODE_LAST = 0x1, - VXGE_HAL_FIFO_GATHER_CODE_FIRST_LAST = 0x3 -} vxge_hal_fifo_gather_code_e; - -/* - * enum vxge_hal_fifo_lso_frm_encap_e - LSO Frame Encapsulation - * @VXGE_HAL_FIFO_LSO_FRM_ENCAP_AUTO: auto mode (best guess) - * @VXGE_HAL_FIFO_LSO_FRM_ENCAP_LLC: LLC - * @VXGE_HAL_FIFO_LSO_FRM_ENCAP_SNAP: SNAP - * @VXGE_HAL_FIFO_LSO_FRM_ENCAP_DIX: DIX - * - * LSO Frame Encapsulation type - */ -typedef enum vxge_hal_fifo_lso_frm_encap_e { - VXGE_HAL_FIFO_LSO_FRM_ENCAP_AUTO = 0x0, - VXGE_HAL_FIFO_LSO_FRM_ENCAP_LLC = 0x1, - VXGE_HAL_FIFO_LSO_FRM_ENCAP_SNAP = 0x2, - VXGE_HAL_FIFO_LSO_FRM_ENCAP_DIX = 0x3 -} vxge_hal_fifo_lso_frm_encap_e; - -/* - * struct vxge_hal_fifo_txd_t - Transmit Descriptor - * @control_0: Bits 0 to 6 - Reserved. - * Bit 7 - List Ownership. This field should be initialized - * to '1' by the driver before the transmit list pointer is - * written to the adapter. This field will be set to '0' by the - * adapter once it has completed transmitting the frame or frames - * in the list. Note - This field is only valid in TxD0. - * Additionally, for multi-list sequences, the driver should not - * release any buffers until the ownership of the last list in the - * multi-list sequence has been returned to the host. - * Bits 8 to 11 - Reserved - * Bits 12 to 15 - Transfer_Code. This field is only valid in - * TxD0. It is used to describe the status of the transmit data - * buffer transfer. This field is always overwritten by the - * adapter, so this field may be initialized to any value. - * Bits 16 to 17 - Host steering. This field allows the host to - * override the selection of the physical transmit port. - * Attention: - * Normal sounds as if learned from the switch rather than from - * the aggregation algorythms. - * 00: Normal. Use Destination/MAC Address - * lookup to determine the transmit port. - * 01: Send on physical Port1. - * 10: Send on physical Port0. - * 11: Send on both ports. - * Bits 18 to 21 - Reserved - * Bits 22 to 23 - Gather_Code. This field is set by the host and - * is used to describe how individual buffers comprise a frame. - * 10: First descriptor of a frame. - * 00: Middle of a multi-descriptor frame. - * 01: Last descriptor of a frame. - * 11: First and last descriptor of a frame (the entire frame - * resides in a single buffer). - * For multi-descriptor frames, the only valid gather code sequence - * is {10, [00], 01}. In other words,the descriptors must be placed - * in the list in the correct order. - * Bits 24 to 27 - Reserved - * Bits 28 to 29 - LSO_Frm_Encap. LSO Frame Encapsulation - * definition. Only valid in TxD0. This field allows the host to - * indicate the Ethernet encapsulation of an outbound LSO packet. - * 00 - classic mode (best guess) - * 01 - LLC - * 10 - SNAP - * 11 - DIX - * If "classic mode" is selected, the adapter will attempt to - * decode the frame's Ethernet encapsulation by examining the L/T - * field as follows: - * <= 0x05DC LLC/SNAP encoding; must examine DSAP/SSAP to determine - * if packet is IPv4 or IPv6. - * 0x8870 Jumbo-SNAP encoding. - * 0x0800 IPv4 DIX encoding - * 0x86DD IPv6 DIX encoding - * others illegal encapsulation - * Bits 30 - LSO_ Flag. Large Send Offload (LSO) flag. - * Set to 1 to perform segmentation offload for TCP/UDP. - * This field is valid only in TxD0. - * Bits 31 to 33 - Reserved. - * Bits 34 to 47 - LSO_MSS. TCP/UDP LSO Maximum Segment Size - * This field is meaningful only when LSO_Control is non-zero. - * When LSO_Control is set to TCP_LSO, the single (possibly large) - * TCP segment described by this TxDL will be sent as a series of - * TCP segments each of which contains no more than LSO_MSS - * payload bytes. - * When LSO_Control is set to UDP_LSO, the single (possibly large) - * UDP datagram described by this TxDL will be sent as a series of - * UDP datagrams each of which contains no more than LSO_MSS - * payload bytes. - * All outgoing frames from this TxDL will have LSO_MSS bytes of - * UDP or TCP payload, with the exception of the last, which will - * have <= LSO_MSS bytes of payload. - * Bits 48 to 63 - Buffer_Size. Number of valid bytes in the - * buffer to be read by the adapter. This field is written by the - * host. A value of 0 is illegal. - * Bits 32 to 63 - This value is written by the adapter upon - * completion of a UDP or TCP LSO operation and indicates the - * number of UDP or TCP payload bytes that were transmitted. - * 0x0000 will bereturned for any non-LSO operation. - * @control_1: Bits 0 to 4 - Reserved. - * Bit 5 - Tx_CKO_IPv4 Set to a '1' to enable IPv4 header checksum - * offload. This field is only valid in the first TxD of a frame. - * Bit 6 - Tx_CKO_TCP Set to a '1' to enable TCP checksum offload. - * This field is only valid in the first TxD of a frame (the TxD's - * gather code must be 10 or 11). The driver should only set this - * Bit if it can guarantee that TCP is present. - * Bit 7 - Tx_CKO_UDP Set to a '1' to enable UDP checksum offload. - * This field is only valid in the first TxD of a frame (the TxD's - * gather code must be 10 or 11). The driver should only set this - * Bit if it can guarantee that UDP is present. - * Bits 8 to 14 - Reserved. - * Bit 15 - Tx_VLAN_Enable VLAN tag insertion flag. Set to a '1' to - * instruct the adapter to insert the VLAN tag specified by the - * Tx_VLAN_Tag field. This field is only valid in the first TxD of - * a frame. - * Bits 16 to 31 - Tx_VLAN_Tag. Variable portion of the VLAN tag - * to be inserted into the frame by the adapter(the first two bytes - * of a VLAN tag are always 0x8100).This field is only valid if the - * Tx_VLAN_Enable field is set to '1'. - * Bits 32 to 33 - Reserved. - * Bits 34 to 39 - Tx_Int_Number. Indicates which Tx interrupt - * number the frame associated with. This field is written by the - * host. It is only valid in the first TxD of a frame. - * Bits 40 to 42 - Reserved. - * Bit 43 - Set to 1 to exclude the frame from bandwidth metering - * functions. This field is valid only in the first TxD - * of a frame. - * Bits 44 to 45 - Reserved. - * Bit 46 - Tx_Int_Per_List Set to a '1' to instruct the adapter to - * generate an interrupt as soon as all of the frames in the list - * have been transmitted. In order to have per-frame interrupts, - * the driver should place a maximum of one frame per list. This - * field is only valid in the first TxD of a frame. - * Bit 47 - Tx_Int_Utilization Set to a '1' to instruct the adapter - * to count the frame toward the utilization interrupt specified in - * the Tx_Int_Number field. This field is only valid in the first - * TxD of a frame. - * Bits 48 to 63 - Reserved. - * @buffer_pointer: Buffer start address. - * @host_control: Host_Control.Opaque 64bit data stored by ULD inside the X3100 - * descriptor prior to posting the latter on the fifo - * via vxge_hal_fifo_txdl_post().The %host_control is returned as is to - * the ULD with each completed descriptor. - * - * Transmit descriptor (TxD).Fifo descriptor contains configured number - * (list) of TxDs. * For more details please refer to X3100 User Guide, - * Section 5.4.2 "Transmit Descriptor (TxD) Format". - */ -typedef struct vxge_hal_fifo_txd_t { - u64 control_0; -#define VXGE_HAL_FIFO_TXD_LIST_OWN_GET(ctrl0) bVAL1(ctrl0, 7) -#define VXGE_HAL_FIFO_TXD_LIST_OWN_ADAPTER mBIT(7) - -#define VXGE_HAL_FIFO_TXD_T_CODE_GET(ctrl0) bVAL4(ctrl0, 12) -#define VXGE_HAL_FIFO_TXD_T_CODE(val) vBIT(val, 12, 4) -#define VXGE_HAL_FIFO_TXD_T_CODE_OK VXGE_HAL_FIFO_T_CODE_OK -#define VXGE_HAL_FIFO_TXD_T_CODE_PCI_READ_CORRUPT \ - VXGE_HAL_FIFO_T_CODE_PCI_READ_CORRUPT -#define VXGE_HAL_FIFO_TXD_T_CODE_PCI_READ_FAIL \ - VXGE_HAL_FIFO_T_CODE_PCI_READ_FAIL -#define VXGE_HAL_FIFO_TXD_T_CODE_INVALID_MSS VXGE_HAL_FIFO_T_CODE_INVALID_MSS -#define VXGE_HAL_FIFO_TXD_T_CODE_LSO_ERROR VXGE_HAL_FIFO_T_CODE_LSO_ERROR -#define VXGE_HAL_FIFO_TXD_T_CODE_UNUSED VXGE_HAL_FIFO_T_CODE_UNUSED -#define VXGE_HAL_FIFO_TXD_T_CODE_MULTI_ERROR VXGE_HAL_FIFO_T_CODE_MULTI_ERROR - -#define VXGE_HAL_FIFO_TXD_HOST_STEER_GET(ctrl0) bVAL2(ctrl0, 16) -#define VXGE_HAL_FIFO_TXD_HOST_STEER(val) vBIT(val, 16, 2) -#define VXGE_HAL_FIFO_TXD_HOST_STEER_NORMAL VXGE_HAL_FIFO_HOST_STEER_NORMAL -#define VXGE_HAL_FIFO_TXD_HOST_STEER_PORT1 VXGE_HAL_FIFO_HOST_STEER_PORT1 -#define VXGE_HAL_FIFO_TXD_HOST_STEER_PORT0 VXGE_HAL_FIFO_HOST_STEER_PORT0 -#define VXGE_HAL_FIFO_TXD_HOST_STEER_BOTH VXGE_HAL_FIFO_HOST_STEER_BOTH - -#define VXGE_HAL_FIFO_TXD_GATHER_CODE_GET(ctrl0) bVAL2(ctrl0, 22) -#define VXGE_HAL_FIFO_TXD_GATHER_CODE(val) vBIT(val, 22, 2) -#define VXGE_HAL_FIFO_TXD_GATHER_CODE_FIRST VXGE_HAL_FIFO_GATHER_CODE_FIRST -#define VXGE_HAL_FIFO_TXD_GATHER_CODE_MIDDLE VXGE_HAL_FIFO_GATHER_CODE_MIDDLE -#define VXGE_HAL_FIFO_TXD_GATHER_CODE_LAST VXGE_HAL_FIFO_GATHER_CODE_LAST -#define VXGE_HAL_FIFO_TXD_GATHER_CODE_FIRST_LAST \ - VXGE_HAL_FIFO_GATHER_CODE_FIRST_LAST - -#define VXGE_HAL_FIFO_TXD_LSO_FRM_ENCAP_GET(ctrl0) bVAL2(ctrl0, 28) -#define VXGE_HAL_FIFO_TXD_LSO_FRM_ENCAP(val) vBIT(val, 28, 2) -#define VXGE_HAL_FIFO_TXD_LSO_FRM_ENCAP_AUTO VXGE_HAL_FIFO_LSO_FRM_ENCAP_AUTO -#define VXGE_HAL_FIFO_TXD_LSO_FRM_ENCAP_LLC VXGE_HAL_FIFO_LSO_FRM_ENCAP_LLC -#define VXGE_HAL_FIFO_TXD_LSO_FRM_ENCAP_SNAP VXGE_HAL_FIFO_LSO_FRM_ENCAP_SNAP -#define VXGE_HAL_FIFO_TXD_LSO_FRM_ENCAP_DIX VXGE_HAL_FIFO_LSO_FRM_ENCAP_DIX - -#define VXGE_HAL_FIFO_TXD_LSO_FLAG_GET(ctrl0) bVAL1(ctrl0, 30) -#define VXGE_HAL_FIFO_TXD_LSO_FLAG mBIT(30) - -#define VXGE_HAL_FIFO_TXD_LSO_MSS_GET(ctrl0) bVAL14(ctrl0, 34) -#define VXGE_HAL_FIFO_TXD_LSO_MSS(val) vBIT(val, 34, 14) - -#define VXGE_HAL_FIFO_TXD_BUFFER_SIZE_GET(ctrl0) bVAL16(ctrl0, 48) -#define VXGE_HAL_FIFO_TXD_BUFFER_SIZE(val) vBIT(val, 48, 16) - -#define VXGE_HAL_FIFO_TXD_LSO_BYTES_SENT_GET(ctrl0) bVAL32(ctrl0, 32) -#define VXGE_HAL_FIFO_TXD_LSO_BYTES_SENT(val) vBIT(val, 32, 32) - - u64 control_1; -#define VXGE_HAL_FIFO_TXD_TX_CKO_IPV4_EN_GET(ctrl1) bVAL1(ctrl1, 5) -#define VXGE_HAL_FIFO_TXD_TX_CKO_IPV4_EN mBIT(5) - -#define VXGE_HAL_FIFO_TXD_TX_CKO_TCP_EN_GET(ctrl1) bVAL1(ctrl1, 6) -#define VXGE_HAL_FIFO_TXD_TX_CKO_TCP_EN mBIT(6) - -#define VXGE_HAL_FIFO_TXD_TX_CKO_UDP_EN_GET(ctrl1) bVAL1(ctrl1, 7) -#define VXGE_HAL_FIFO_TXD_TX_CKO_UDP_EN mBIT(7) - -#define VXGE_HAL_FIFO_TXD_TX_CKO_CONTROL (mBIT(5)|mBIT(6)|mBIT(7)) - -#define VXGE_HAL_FIFO_TXD_VLAN_ENABLE_GET(ctrl1) bVAL1(ctrl1, 15) -#define VXGE_HAL_FIFO_TXD_VLAN_ENABLE mBIT(15) - -#define VXGE_HAL_FIFO_TXD_VLAN_TAG_GET(ctrl1) bVAL16(ctrl1, 16) -#define VXGE_HAL_FIFO_TXD_VLAN_TAG(val) vBIT(val, 16, 16) - -#define VXGE_HAL_FIFO_TXD_INT_NUMBER_GET(ctrl1) bVAL6(ctrl1, 34) -#define VXGE_HAL_FIFO_TXD_INT_NUMBER(val) vBIT(val, 34, 6) - -#define VXGE_HAL_FIFO_TXD_NO_BW_LIMIT_GET(ctrl1) bVAL1(ctrl1, 43) -#define VXGE_HAL_FIFO_TXD_NO_BW_LIMIT mBIT(43) - -#define VXGE_HAL_FIFO_TXD_INT_TYPE_PER_LIST_GET(ctrl1) bVAL1(ctrl1, 46) -#define VXGE_HAL_FIFO_TXD_INT_TYPE_PER_LIST mBIT(46) - -#define VXGE_HAL_FIFO_TXD_INT_TYPE_UTILZ_GET(ctrl1) bVAL1(ctrl1, 47) -#define VXGE_HAL_FIFO_TXD_INT_TYPE_UTILZ mBIT(47) - - u64 buffer_pointer; - - u64 host_control; - -} vxge_hal_fifo_txd_t; - -typedef vxge_hal_fifo_txd_t *vxge_hal_fifo_txdl_t; - -/* - * function vxge_hal_fifo_callback_f - FIFO callback. - * @vpath_handle: Virtual path whose Fifo "containing" 1 or more completed - * descriptors. - * @txdlh: First completed descriptor. - * @txdl_priv: Pointer to per txdl space allocated - * @t_code: Transfer code, as per X3100 User Guide. - * Returned by HAL. - * @host_control: Opaque 64bit data stored by ULD inside the X3100 - * descriptor prior to posting the latter on the fifo - * via vxge_hal_fifo_txdl_post(). The @host_control is returned - * as is to the ULD with each completed descriptor. - * @userdata: Opaque per-fifo data specified at fifo open - * time, via vxge_hal_vpath_open(). - * - * Fifo completion callback (type declaration). A single per-fifo - * callback is specified at fifo open time, via - * vxge_hal_vpath_open(). Typically gets called as part of the processing - * of the Interrupt Service Routine. - * - * Fifo callback gets called by HAL if, and only if, there is at least - * one new completion on a given fifo. Upon processing the first @txdlh ULD - * is _supposed_ to continue consuming completions using: - * - vxge_hal_fifo_txdl_next_completed() - * - * Note that failure to process new completions in a timely fashion - * leads to VXGE_HAL_INF_OUT_OF_DESCRIPTORS condition. - * - * Non-zero @t_code means failure to process transmit descriptor. - * - * In the "transmit" case the failure could happen, for instance, when the - * link is down, in which case X3100 completes the descriptor because it - * is not able to send the data out. - * - * For details please refer to X3100 User Guide. - * - * See also: vxge_hal_fifo_txdl_next_completed(), vxge_hal_fifo_txdl_term_f {}. - */ -typedef vxge_hal_status_e(*vxge_hal_fifo_callback_f) ( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - void *txdl_priv, - vxge_hal_fifo_tcode_e t_code, - void *userdata); - -/* - * function vxge_hal_fifo_txdl_init_f - Initialize descriptor callback. - * @vpath_handle: Virtual path whose Fifo "containing" the @txdlh descriptor. - * @txdlh: Descriptor. - * @txdl_priv: Pointer to per txdl space allocated - * @index: Index of the descriptor in the fifo's set of descriptors. - * @userdata: Per-fifo user data (a.k.a. context) specified at - * fifo open time, via vxge_hal_vpath_open(). - * @reopen: See vxge_hal_reopen_e {}. - * - * Initialize descriptor callback. Unless NULL is specified in the - * vxge_hal_fifo_attr_t {} structure passed to vxge_hal_vpath_open()), - * HAL invokes the callback as part of the vxge_hal_vpath_open() - * implementation. - * The ULD could use the callback to pre-set DMA mappings and/or alignment - * buffers. - * - * See also: vxge_hal_fifo_attr_t {}, vxge_hal_fifo_txdl_term_f {}. - */ -typedef vxge_hal_status_e(*vxge_hal_fifo_txdl_init_f) ( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - void *txdl_priv, - u32 index, - void *userdata, - vxge_hal_reopen_e reopen); - -/* - * function vxge_hal_fifo_txdl_term_f - Terminate descriptor callback. - * @vpath_handle: Virtual path whose Fifo "containing" the @txdlh descriptor. - * @txdlh: First completed descriptor. - * @txdl_priv: Pointer to per txdl space allocated - * @state: One of the vxge_hal_txdl_state_e {} enumerated states. - * @userdata: Per-fifo user data (a.k.a. context) specified at - * fifo open time, via vxge_hal_vpath_open(). - * @reopen: See vxge_hal_reopen_e {}. - * - * Terminate descriptor callback. Unless NULL is specified in the - * vxge_hal_fifo_attr_t {} structure passed to vxge_hal_vpath_open()), - * HAL invokes the callback as part of closing fifo, prior to - * de-allocating the ring and associated data structures - * (including descriptors). - * ULD should utilize the callback to (for instance) unmap - * and free DMA data buffers associated with the posted (state = - * VXGE_HAL_TXDL_STATE_POSTED) descriptors, - * as well as other relevant cleanup functions. - * - * See also: vxge_hal_fifo_attr_t {}, vxge_hal_fifo_txdl_init_f {}. - */ -typedef void (*vxge_hal_fifo_txdl_term_f) ( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - void *txdl_priv, - vxge_hal_txdl_state_e state, - void *userdata, - vxge_hal_reopen_e reopen); - -/* - * struct vxge_hal_fifo_attr_t - Fifo open "template". - * @callback: Fifo completion callback. HAL invokes the callback when there - * are new completions on that fifo. In many implementations - * the @callback executes in the hw interrupt context. - * @txdl_init: Fifo's descriptor-initialize callback. - * See vxge_hal_fifo_txdl_init_f {}. - * If not NULL, HAL invokes the callback when opening - * the fifo via vxge_hal_vpath_open(). - * @txdl_term: Fifo's descriptor-terminate callback. If not NULL, - * HAL invokes the callback when closing the corresponding fifo. - * See also vxge_hal_fifo_txdl_term_f {}. - * @userdata: User-defined "context" of _that_ fifo. Passed back to the - * user as one of the @callback, @txdl_init, and @txdl_term arguments. - * @per_txdl_space: If specified (i.e., greater than zero): extra space - * reserved by HAL per each transmit descriptor. Can be used to - * store, and retrieve on completion, information specific - * to the upper-layer. - * - * Fifo open "template". User fills the structure with fifo - * attributes and passes it to vxge_hal_vpath_open(). - */ -typedef struct vxge_hal_fifo_attr_t { - vxge_hal_fifo_callback_f callback; - vxge_hal_fifo_txdl_init_f txdl_init; - vxge_hal_fifo_txdl_term_f txdl_term; - void *userdata; - u32 per_txdl_space; -} vxge_hal_fifo_attr_t; - -/* - * vxge_hal_fifo_doorbell_reset - Resets the doorbell fifo - * @vpath_handle: Vpath Handle - * - * This function resets the doorbell fifo during if fifo error occurs - */ -vxge_hal_status_e -vxge_hal_fifo_doorbell_reset( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_fifo_txdl_reserve - Reserve fifo descriptor. - * @vpath_handle: virtual path handle. - * @txdlh: Reserved descriptor. On success HAL fills this "out" parameter - * with a valid handle. - * @txdl_priv: Buffer to return the pointer to per txdl space allocated - * - * Reserve a single TxDL (that is, fifo descriptor) - * for the subsequent filling-in by upper layerdriver (ULD)) - * and posting on the corresponding fifo - * via vxge_hal_fifo_txdl_post(). - * - * Note: it is the responsibility of ULD to reserve multiple descriptors - * for lengthy (e.g., LSO) transmit operation. A single fifo descriptor - * carries up to configured number (fifo.max_frags) of contiguous buffers. - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_INF_OUT_OF_DESCRIPTORS - Currently no descriptors available - * - */ -vxge_hal_status_e -vxge_hal_fifo_txdl_reserve( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h *txdlh, - void **txdl_priv); - - -/* - * vxge_hal_fifo_txdl_cksum_set_bits - Offload checksum. - * @txdlh: Descriptor handle. - * @cksum_bits: Specifies which checksums are to be offloaded: IPv4, - * and/or TCP and/or UDP. - * - * Ask X3100 to calculate IPv4 & transport checksums for _this_ transmit - * descriptor. - * This API is part of the preparation of the transmit descriptor for posting - * (via vxge_hal_fifo_txdl_post()). The related "preparation" APIs include - * vxge_hal_fifo_txdl_mss_set(), vxge_hal_fifo_txdl_buffer_set_aligned(), - * and vxge_hal_fifo_txdl_buffer_set(). - * All these APIs fill in the fields of the fifo descriptor, - * in accordance with the X3100 specification. - * - */ -static inline -/* LINTED */ -void vxge_hal_fifo_txdl_cksum_set_bits( - vxge_hal_txdl_h txdlh, - u64 cksum_bits) -{ - vxge_hal_fifo_txd_t *txdp = (vxge_hal_fifo_txd_t *) txdlh; - - txdp->control_1 |= cksum_bits; - -} - -/* - * vxge_hal_fifo_txdl_interrupt_type_set - Set the interrupt type for the txdl - * @txdlh: Descriptor handle. - * @interrupt_type: utiliz based interrupt or List interrupt - * - * vxge_hal_fifo_txdl_interrupt_type_set is used to set the interrupt type for - * each xmit txdl dynamically - */ -static inline -/* LINTED */ -void vxge_hal_fifo_txdl_interrupt_type_set( - vxge_hal_txdl_h txdlh, - u64 interrupt_type) -{ - vxge_hal_fifo_txd_t *txdp = (vxge_hal_fifo_txd_t *) txdlh; - - txdp->control_1 |= interrupt_type; -} - -/* - * vxge_hal_fifo_txdl_lso_set - Set LSO Parameters. - * @txdlh: Descriptor handle. - * @encap: LSO Encapsulation - * @mss: MSS size for LSO. - * - * This API is part of the preparation of the transmit descriptor for posting - * (via vxge_hal_fifo_txdl_post()). The related "preparation" APIs include - * vxge_hal_fifo_txdl_buffer_set(), vxge_hal_fifo_txdl_buffer_set_aligned(), - * and vxge_hal_fifo_txdl_cksum_set_bits(). - * All these APIs fill in the fields of the fifo descriptor, - * in accordance with the X3100 specification. - * - */ -static inline -/* LINTED */ -void vxge_hal_fifo_txdl_lso_set( - vxge_hal_txdl_h txdlh, - u32 encap, - u32 mss) -{ - vxge_hal_fifo_txd_t *txdp = (vxge_hal_fifo_txd_t *) txdlh; - - txdp->control_0 |= VXGE_HAL_FIFO_TXD_LSO_FRM_ENCAP(encap) | - VXGE_HAL_FIFO_TXD_LSO_FLAG | VXGE_HAL_FIFO_TXD_LSO_MSS(mss); -} - -/* - * vxge_hal_fifo_txdl_lso_bytes_sent - Get the lso bytes sent. - * @txdlh: Descriptor handle. - * - * Returns the lso bytes sent - */ -static inline -/* LINTED */ -u32 vxge_hal_fifo_txdl_lso_bytes_sent( - vxge_hal_txdl_h txdlh) -{ - vxge_hal_fifo_txd_t *txdp = (vxge_hal_fifo_txd_t *) txdlh; - - return (u32) VXGE_HAL_FIFO_TXD_LSO_BYTES_SENT_GET(txdp->control_0); -} - -/* - * vxge_hal_fifo_txdl_vlan_set - Set VLAN tag. - * @txdlh: Descriptor handle. - * @vlan_tag: 16bit VLAN tag. - * - * Insert VLAN tag into specified transmit descriptor. - * The actual insertion of the tag into outgoing frame is done by the hardware. - */ -static inline -/* LINTED */ -void vxge_hal_fifo_txdl_vlan_set( - vxge_hal_txdl_h txdlh, - u16 vlan_tag) -{ - vxge_hal_fifo_txd_t *txdp = (vxge_hal_fifo_txd_t *) txdlh; - - txdp->control_1 |= VXGE_HAL_FIFO_TXD_VLAN_ENABLE; - txdp->control_1 |= VXGE_HAL_FIFO_TXD_VLAN_TAG(vlan_tag); -} - -/* - * vxge_hal_fifo_txdl_buffer_set - Set transmit buffer pointer in the - * descriptor. - * @vpath_handle: virtual path handle. - * @txdlh: Descriptor handle. - * @frag_idx: Index of the data buffer in the caller's scatter-gather list - * (of buffers). - * @dma_pointer: DMA address of the data buffer referenced by @frag_idx. - * @size: Size of the data buffer (in bytes). - * - * This API is part of the preparation of the transmit descriptor for posting - * (via vxge_hal_fifo_txdl_post()). The related "preparation" APIs include - * vxge_hal_fifo_txdl_mss_set() and vxge_hal_fifo_txdl_cksum_set_bits(). - * All three APIs fill in the fields of the fifo descriptor, - * in accordance with the X3100 specification. - * - */ -void -vxge_hal_fifo_txdl_buffer_set( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 frag_idx, - dma_addr_t dma_pointer, - unsigned long size); - -/* - * vxge_hal_fifo_txdl_buffer_set_aligned - Align transmit buffer and fill - * in fifo descriptor. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * @frag_idx: Index of the data buffer in the caller's scatter-gather list - * (of buffers). - * @vaddr: Virtual address of the data buffer. - * @dma_pointer: DMA address of the data buffer referenced by @frag_idx. - * @size: Size of the data buffer (in bytes). - * @misaligned_size: Size (in bytes) of the misaligned portion of the - * data buffer. Calculated by the caller, based on the platform/OS/other - * specific criteria, which is outside of HAL's domain. See notes below. - * - * This API is part of the transmit descriptor preparation for posting - * (via vxge_hal_fifo_txdl_post()). The related "preparation" APIs include - * vxge_hal_fifo_txdl_mss_set() and vxge_hal_fifo_txdl_cksum_set_bits(). - * All three APIs fill in the fields of the fifo descriptor, - * in accordance with the X3100 specification. - * On the PCI-X based systems aligning transmit data typically provides better - * transmit performance. The typical alignment granularity: L2 cacheline size. - * However, HAL does not make assumptions in terms of the alignment granularity; - * this is specified via additional @misaligned_size parameter described above. - * Prior to calling vxge_hal_fifo_txdl_buffer_set_aligned(), - * ULD is supposed to check alignment of a given fragment/buffer. For this HAL - * provides a separate vxge_hal_check_alignment() API sufficient to cover - * most (but not all) possible alignment criteria. - * If the buffer appears to be aligned, the ULD calls - * vxge_hal_fifo_txdl_buffer_set(). - * Otherwise, ULD calls vxge_hal_fifo_txdl_buffer_set_aligned(). - * - * Note; This API is a "superset" of vxge_hal_fifo_txdl_buffer_set(). In - * addition to filling in the specified descriptor it aligns transmit data on - * the specified boundary. - * Note: Decision on whether to align or not to align a given contiguous - * transmit buffer is outside of HAL's domain. To this end ULD can use any - * programmable criteria, which can help to 1) boost transmit performance, - * and/or 2) provide a workaround for PCI bridge bugs, if any. - * - */ -vxge_hal_status_e -vxge_hal_fifo_txdl_buffer_set_aligned( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 frag_idx, - void *vaddr, - dma_addr_t dma_pointer, - u32 size, - u32 misaligned_size); - -/* - * vxge_hal_fifo_txdl_buffer_append - Append the contents of virtually - * contiguous data buffer to a single physically contiguous buffer. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * @vaddr: Virtual address of the data buffer. - * @size: Size of the data buffer (in bytes). - * - * This API is part of the transmit descriptor preparation for posting - * (via vxge_hal_fifo_txdl_post()). - * The main difference of this API wrt to the APIs - * vxge_hal_fifo_txdl_buffer_set_aligned() is that this API appends the - * contents of virtually contiguous data buffers received from - * upper layer into a single physically contiguous data buffer and the - * device will do a DMA from this buffer. - * - * See Also: vxge_hal_fifo_txdl_buffer_finalize(), - * vxge_hal_fifo_txdl_buffer_set(), - * vxge_hal_fifo_txdl_buffer_set_aligned(). - */ -vxge_hal_status_e -vxge_hal_fifo_txdl_buffer_append( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - void *vaddr, - u32 size); -/* - * vxge_hal_fifo_txdl_buffer_finalize - Prepares a descriptor that contains the - * single physically contiguous buffer. - * - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * @frag_idx: Index of the data buffer in the Txdl list. - * - * This API in conjunction with vxge_hal_fifo_txdl_buffer_append() prepares - * a descriptor that consists of a single physically contiguous buffer - * which inturn contains the contents of one or more virtually contiguous - * buffers received from the upper layer. - * - * See Also: vxge_hal_fifo_txdl_buffer_append(). - */ -void -vxge_hal_fifo_txdl_buffer_finalize( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 frag_idx); - -/* - * vxge_hal_fifo_txdl_new_frame_set - Start the new packet by setting TXDL flags - * @vpath_handle: virtual path handle. - * @txdlh: Descriptor handle. - * - * This API is part of the preparation of the transmit descriptor for posting - * (via vxge_hal_fifo_txdl_post()). This api is used to mark the end of previous - * frame and start of a new frame. - * - */ -void -vxge_hal_fifo_txdl_new_frame_set( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 tagged); - -/* - * vxge_hal_fifo_txdl_post - Post descriptor on the fifo. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor obtained via vxge_hal_fifo_txdl_reserve() - * - * Post descriptor on the fifo for transmission. - * Prior to posting the descriptor should be filled in accordance with - * Host/X3100 interface specification for a given service (LL, etc.). - * - */ -void -vxge_hal_fifo_txdl_post( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 tagged); - -/* - * vxge_hal_fifo_is_next_txdl_completed - Checks if the next txdl is completed - * @vpath_handle: Virtual path handle. - */ -vxge_hal_status_e -vxge_hal_fifo_is_next_txdl_completed( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_fifo_free_txdl_count_get - returns the number of txdls available - * in the fifo - * @vpath_handle: Virtual path handle. - */ -u32 -vxge_hal_fifo_free_txdl_count_get( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_fifo_txdl_next_completed - Retrieve next completed descriptor. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. Returned by HAL. - * @txdl_priv: Buffer to return the pointer to per txdl space allocated - * @t_code: Transfer code, as per X3100 User Guide, - * Transmit Descriptor Format. - * Returned by HAL. - * - * Retrieve the _next_ completed descriptor. - * HAL uses fifo callback (*vxge_hal_fifo_callback_f) to notifiy - * upper-layer driver (ULD) of new completed descriptors. After that - * the ULD can use vxge_hal_fifo_txdl_next_completed to retrieve the rest - * completions (the very first completion is passed by HAL via - * vxge_hal_fifo_callback_f). - * - * Implementation-wise, the upper-layer driver is free to call - * vxge_hal_fifo_txdl_next_completed either immediately from inside the - * fifo callback, or in a deferred fashion and separate (from HAL) - * context. - * - * Non-zero @t_code means failure to process the descriptor. - * The failure could happen, for instance, when the link is - * down, in which case X3100 completes the descriptor because it - * is not able to send the data out. - * - * For details please refer to X3100 User Guide. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS - No completed descriptors - * are currently available for processing. - * - */ -vxge_hal_status_e -vxge_hal_fifo_txdl_next_completed( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h *txdlh, - void **txdl_priv, - vxge_hal_fifo_tcode_e *t_code); - -/* - * vxge_hal_fifo_handle_tcode - Handle transfer code. - * @vpath_handle: Virtual Path handle. - * @txdlh: Descriptor handle. - * @t_code: One of the enumerated (and documented in the X3100 user guide) - * "transfer codes". - * - * Handle descriptor's transfer code. The latter comes with each completed - * descriptor. - * - * Returns: one of the vxge_hal_status_e {} enumerated types. - * VXGE_HAL_OK - for success. - * VXGE_HAL_ERR_CRITICAL - when encounters critical error. - */ -vxge_hal_status_e -vxge_hal_fifo_handle_tcode( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - vxge_hal_fifo_tcode_e t_code); - -/* - * vxge_hal_fifo_txdl_private_get - Retrieve per-descriptor private data. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * - * Retrieve per-descriptor private data. - * Note that ULD requests per-descriptor space via - * vxge_hal_fifo_attr_t passed to - * vxge_hal_vpath_open(). - * - * Returns: private ULD data associated with the descriptor. - */ -void * -vxge_hal_fifo_txdl_private_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh); - -/* - * vxge_hal_fifo_txdl_free - Free descriptor. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * - * Free the reserved descriptor. This operation is "symmetrical" to - * vxge_hal_fifo_txdl_reserve. The "free-ing" completes the descriptor's - * lifecycle. - * - * After free-ing (see vxge_hal_fifo_txdl_free()) the descriptor again can - * be: - * - * - reserved (vxge_hal_fifo_txdl_reserve); - * - * - posted (vxge_hal_fifo_txdl_post); - * - * - completed (vxge_hal_fifo_txdl_next_completed); - * - * - and recycled again (vxge_hal_fifo_txdl_free). - * - * For alternative state transitions and more details please refer to - * the design doc. - * - */ -void -vxge_hal_fifo_txdl_free( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh); - -/* - * Device - */ - -/* - * enum vxge_hal_card_e - X3100 adapter type. - * @VXGE_HAL_CARD_UNKNOWN: Unknown device. - * @VXGE_HAL_CARD_TITAN: X3100 device. - * - * Enumerates X3100 adapter types. - * - * See also: vxge_hal_device_check_id(). - */ -typedef enum vxge_hal_card_e { - VXGE_HAL_CARD_UNKNOWN = 0, - VXGE_HAL_CARD_TITAN_1 = 1, - VXGE_HAL_CARD_TITAN_1A = 2, - VXGE_HAL_CARD_TITAN_2 = 3 -} vxge_hal_card_e; - -/* - * struct vxge_hal_device_attr_t - Device memory spaces. - * @regh0: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @regh1: BAR1 mapped memory handle. Same comment as above. - * @regh2: BAR2 mapped memory handle. Same comment as above. - * @bar0: BAR0 virtual address. - * @bar1: BAR1 virtual address. - * @bar2: BAR2 virtual address. - * @irqh: IRQ handle (Solaris). - * @cfgh: Configuration space handle (Solaris), or PCI device @pdev (Linux). - * @pdev: PCI device object. - * - * Device memory spaces. Includes configuration, BAR0, BAR1, etc. per device - * mapped memories. Also, includes a pointer to OS-specific PCI device object. - */ -typedef struct vxge_hal_device_attr_t { - pci_reg_h regh0; - pci_reg_h regh1; - pci_reg_h regh2; - u8 *bar0; - u8 *bar1; - u8 *bar2; - pci_irq_h irqh; - pci_cfg_h cfgh; - pci_dev_h pdev; -} vxge_hal_device_attr_t; - -/* - * enum vxge_hal_device_link_state_e - Link state enumeration. - * @VXGE_HAL_LINK_NONE: Invalid link state. - * @VXGE_HAL_LINK_DOWN: Link is down. - * @VXGE_HAL_LINK_UP: Link is up. - * - */ -typedef enum vxge_hal_device_link_state_e { - VXGE_HAL_LINK_NONE, - VXGE_HAL_LINK_DOWN, - VXGE_HAL_LINK_UP -} vxge_hal_device_link_state_e; - -/* - * enum vxge_hal_device_data_rate_e - Data rate enumeration. - * @VXGE_HAL_DATA_RATE_UNKNOWN: Unknown . - * @VXGE_HAL_DATA_RATE_1G: 1G. - * @VXGE_HAL_DATA_RATE_10G: 10G. - * - */ -typedef enum vxge_hal_device_data_rate_e { - VXGE_HAL_DATA_RATE_UNKNOWN, - VXGE_HAL_DATA_RATE_1G, - VXGE_HAL_DATA_RATE_10G -} vxge_hal_device_data_rate_e; - -/* - * enum vxge_hal_device_lag_mode_e - X3100 adapter lag mode - * @VXGE_HAL_DEVICE_LAG_MODE_UNKNOWN: Unknown mode. - * @VXGE_HAL_DEVICE_LAG_MODE_HW_LACP: Hardware Link Aggregation. - * @VXGE_HAL_DEVICE_LAG_MODE_ACTIVE_PASSIVE: Active Passive. - * @VXGE_HAL_DEVICE_LAG_MODE_SINGLE_PORT: Single Port. - * @VXGE_HAL_DEVICE_LAG_MODE_DUAL_PORT: Dual Port. - * @VXGE_HAL_DEVICE_LAG_MODE_DISABLED: Disabled. - * - * Enumerates X3100 adapter lag modes. - * - */ -typedef enum vxge_hal_device_lag_mode_e { - VXGE_HAL_DEVICE_LAG_MODE_UNKNOWN = 0, - VXGE_HAL_DEVICE_LAG_MODE_HW_LACP, - VXGE_HAL_DEVICE_LAG_MODE_ACTIVE_PASSIVE, - VXGE_HAL_DEVICE_LAG_MODE_SINGLE_PORT, - VXGE_HAL_DEVICE_LAG_MODE_DUAL_PORT, - VXGE_HAL_DEVICE_LAG_MODE_DISABLED -} vxge_hal_device_lag_mode_e; - -/* - * enum vxge_hal_pci_e_signalling_rate_e - PCI-E Lane signalling rate - * @VXGE_HAL_PCI_E_SIGNALLING_RATE_2_5GB: PCI-E signalling rate 2.5 GB - * @VXGE_HAL_PCI_E_SIGNALLING_RATE_5GB: PCI-E signalling rate 5 GB - * @VXGE_HAL_PCI_E_SIGNALLING_RATE_UNKNOWN: Unrecognized PCI bus frequency - * - * PCI-E Lane signalling rate - */ -typedef enum vxge_hal_pci_e_signalling_rate_e { - VXGE_HAL_PCI_E_SIGNALLING_RATE_2_5GB = 1, - VXGE_HAL_PCI_E_SIGNALLING_RATE_5GB = 2, - VXGE_HAL_PCI_E_SIGNALLING_RATE_UNKNOWN = 0 -} vxge_hal_pci_e_signalling_rate_e; - -/* - * enum vxge_hal_pci_e_link_width_e - PCI-E Link width enumeration. - * @VXGE_HAL_PCI_E_LINK_WIDTH_X1: 1 Lane. - * @VXGE_HAL_PCI_E_LINK_WIDTH_X2: 2 Lane. - * @VXGE_HAL_PCI_E_LINK_WIDTH_X4: 4 Lane. - * @VXGE_HAL_PCI_E_LINK_WIDTH_X8: 8 Lane. - * @VXGE_HAL_PCI_E_LINK_WIDTH_X12: 12 Lane. - * @VXGE_HAL_PCI_E_LINK_WIDTH_X16: 16 Lane. - * @VXGE_HAL_PCI_E_LINK_WIDTH_X32: 32 Lane. - * @VXGE_HAL_PCI_E_LINK_WIDTH_UNKNOWN: Unknown - * - * PCI-E Link width enumeration. - */ -typedef enum vxge_hal_pci_e_link_width_e { - VXGE_HAL_PCI_E_LINK_WIDTH_X1 = 1, - VXGE_HAL_PCI_E_LINK_WIDTH_X2 = 2, - VXGE_HAL_PCI_E_LINK_WIDTH_X4 = 4, - VXGE_HAL_PCI_E_LINK_WIDTH_X8 = 8, - VXGE_HAL_PCI_E_LINK_WIDTH_X12 = 12, - VXGE_HAL_PCI_E_LINK_WIDTH_X16 = 16, - VXGE_HAL_PCI_E_LINK_WIDTH_X32 = 32, - VXGE_HAL_PCI_E_LINK_WIDTH_UNKNOWN = 0 -} vxge_hal_pci_e_link_width_e; - -#define VXGE_HAL_DEVICE_STATS_SW_INFO_NOT_TRAFFIC_INTR(hldev) \ - ((vxge_hal_device_t *)hldev)->not_traffic_intr_cnt++ - -#define VXGE_HAL_DEVICE_STATS_SW_INFO_TRAFFIC_INTR(hldev) \ - ((vxge_hal_device_t *)hldev)->traffic_intr_cnt++ - -/* - * struct vxge_hal_device_t - Hal device object - * @magic: Magic Number - * @device_id: PCI Device Id of the adapter - * @revision: PCI Device major revision - * @upper_layer_data: Private data set by LL driver - * @signalling_rate: PCI-E signalling rate - * @link_width: see vxge_hal_pci_e_link_width_e {} - * @regh0: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @regh1: BAR1 mapped memory handle. Same comment as above. - * @regh2: BAR2 mapped memory handle. Same comment as above. - * @bar0: BAR0 virtual address. - * @bar1: BAR1 virtual address. - * @bar2: BAR2 virtual address. - * @irqh: IRQ handle - * @cfgh: Configuration space handle - * @pdev: Physical device handle - * @config: Confguration passed by the LL driver at initialization - * @is_initialized: Flag to specify if device is initialized - * @msix_enabled: Flag to indicate if msix is enabled - * @terminating: Flag to specify if the device is terminating - * @link_state: Link state - * @data_rate: Data rate - * @not_traffic_intr_cnt: Number of times the host was interrupted - * without new completions. - * "Non-traffic interrupt counter". - * @traffic_intr_cnt: Number of traffic interrupts for the device. - * @debug_module_mask: Debug module mask - * @debug_level: Debug Level - * - * HAL device object. Represents Titan adapter - */ -typedef struct vxge_hal_device_t { - u32 magic; -#define VXGE_HAL_DEVICE_MAGIC 0x12345678 -#define VXGE_HAL_DEVICE_DEAD 0xDEADDEAD - u16 device_id; - u16 revision; - void *upper_layer_data; - vxge_hal_pci_e_signalling_rate_e signalling_rate; - vxge_hal_pci_e_link_width_e link_width; - pci_reg_h regh0; - pci_reg_h regh1; - pci_reg_h regh2; - u8 *bar0; - u8 *bar1; - u8 *bar2; - pci_irq_h irqh; - pci_cfg_h cfgh; - pci_dev_h pdev; - vxge_hal_device_config_t config; - volatile u32 is_initialized; - volatile u32 msix_enabled; - volatile u32 terminating; - volatile vxge_hal_device_link_state_e link_state; - volatile vxge_hal_device_data_rate_e data_rate; - volatile u32 not_traffic_intr_cnt; - volatile u32 traffic_intr_cnt; - u32 debug_module_mask; - u32 debug_level; -} vxge_hal_device_t; - -/* - * struct vxge_hal_device_date_t - Date Format - * @day: Day - * @month: Month - * @year: Year - * @date: Date in string format - * - * Structure for returning date - */ -typedef struct vxge_hal_device_date_t { - u32 day; - u32 month; - u32 year; - char date[16]; -} vxge_hal_device_date_t; - -/* - * struct vxge_hal_device_version_t - Version Format - * @major: Major Version - * @minor: Minor Version - * @build: Build Number - * @version: Version in string format - * - * Structure for returning version - */ -typedef struct vxge_hal_device_version_t { - u32 major; - u32 minor; - u32 build; - char version[32]; -} vxge_hal_device_version_t; - -/* - * struct vxge_hal_device_pmd_info_t - PMD Information - * @type: PMD Type - * @vendor: Vender name - * @part_num: PMD Part Number - * @ser_num: PMD Serial Number - * - * Structure for returning PMD info - */ -typedef struct vxge_hal_device_pmd_info_t { - u32 type; -#define VXGE_HAL_DEVICE_PMD_TYPE_UNKNOWN 0 -#define VXGE_HAL_DEVICE_PMD_TYPE_10G_SR 1 -#define VXGE_HAL_DEVICE_PMD_TYPE_10G_LR 2 -#define VXGE_HAL_DEVICE_PMD_TYPE_10G_LRM 3 -#define VXGE_HAL_DEVICE_PMD_TYPE_10G_DIRECT 4 -#define VXGE_HAL_DEVICE_PMD_TYPE_10G_CX4 5 -#define VXGE_HAL_DEVICE_PMD_TYPE_10G_BASE_T 6 -#define VXGE_HAL_DEVICE_PMD_TYPE_10G_OTHER 7 -#define VXGE_HAL_DEVICE_PMD_TYPE_1G_SX 8 -#define VXGE_HAL_DEVICE_PMD_TYPE_1G_LX 9 -#define VXGE_HAL_DEVICE_PMD_TYPE_1G_CX 10 -#define VXGE_HAL_DEVICE_PMD_TYPE_1G_DIRECT 11 -#define VXGE_HAL_DEVICE_PMD_TYPE_1G_CX4 12 -#define VXGE_HAL_DEVICE_PMD_TYPE_1G_BASE_T 13 -#define VXGE_HAL_DEVICE_PMD_TYPE_1G_OTHER 14 - u32 unused; - char vendor[24]; - char part_num[24]; - char ser_num[24]; -} vxge_hal_device_pmd_info_t; - - -/* - * struct vxge_hal_device_hw_info_t - Device information - * @host_type: Host Type - * @function_mode: PCI Function Mode - * @func_id: Function Id - * @vpath_mask: vpath bit mask - * @fw_version: Firmware version - * @fw_date: Firmware Date - * @flash_version: Firmware version - * @flash_date: Firmware Date - * @serial_number: Card Serial Number - * @part_number: Card Part Number - * @product_description: Card Product Description - * @unused: For Solaris alignment purpose - * @ports: Number of ports present - * @pmd_port0: Port 0 PMD Info - * @pmd_port1: Port 1 PMD Info - * @mac_addrs: Mac addresses for each vpath - * @mac_addr_masks: Mac address masks for each vpath - * - * Returns the vpath mask that has the bits set for each vpath allocated - * for the driver and the first mac addresse for each vpath - */ -typedef struct vxge_hal_device_hw_info_t { - u32 host_type; -#define VXGE_HAL_NO_MR_NO_SR_NORMAL_FUNCTION 0 -#define VXGE_HAL_MR_NO_SR_VH0_BASE_FUNCTION 1 -#define VXGE_HAL_NO_MR_SR_VH0_FUNCTION0 2 -#define VXGE_HAL_NO_MR_SR_VH0_VIRTUAL_FUNCTION 3 -#define VXGE_HAL_MR_SR_VH0_INVALID_CONFIG 4 -#define VXGE_HAL_SR_VH_FUNCTION0 5 -#define VXGE_HAL_SR_VH_VIRTUAL_FUNCTION 6 -#define VXGE_HAL_VH_NORMAL_FUNCTION 7 - u64 function_mode; - u32 func_id; - u64 vpath_mask; - vxge_hal_device_version_t fw_version; - vxge_hal_device_date_t fw_date; - vxge_hal_device_version_t flash_version; - vxge_hal_device_date_t flash_date; - u8 serial_number[24]; - u8 part_number[24]; - u8 product_description[72]; - u32 unused; - u32 ports; - vxge_hal_device_pmd_info_t pmd_port0; - vxge_hal_device_pmd_info_t pmd_port1; - macaddr_t mac_addrs[VXGE_HAL_MAX_VIRTUAL_PATHS]; - macaddr_t mac_addr_masks[VXGE_HAL_MAX_VIRTUAL_PATHS]; -} vxge_hal_device_hw_info_t; - -/* - * vxge_hal_device_hw_info_get - Get the hw information - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @bar0: Address of BAR0 in PCI config - * @hw_info: Buffer to return vxge_hal_device_hw_info_t {} structure - * - * Returns the vpath mask that has the bits set for each vpath allocated - * for the driver, FW version information and the first mac addresse for - * each vpath - */ -vxge_hal_status_e -vxge_hal_device_hw_info_get( - pci_dev_h pdev, - pci_reg_h regh0, - u8 *bar0, - vxge_hal_device_hw_info_t *hw_info); - -/* - * vxge_hal_device_config_default_get - Initialize device config with defaults. - * @device_config: Configuration structure to be initialized, - * For the X3100 configuration "knobs" please - * refer to vxge_hal_device_config_t and X3100 - * User Guide. - * - * Initialize X3100 device config with default values. - * - * See also: vxge_hal_device_initialize(), vxge_hal_device_terminate(), - * vxge_hal_status_e {} vxge_hal_device_attr_t {}. - */ -vxge_hal_status_e -vxge_hal_device_config_default_get( - vxge_hal_device_config_t *device_config); - -/* - * vxge_hal_device_initialize - Initialize X3100 device. - * @devh: Buffer to return HAL device handle. - * @attr: pointer to vxge_hal_device_attr_t structure - * @device_config: Configuration to be _applied_ to the device, - * For the X3100 configuration "knobs" please refer to - * vxge_hal_device_config_t and X3100 User Guide. - * - * Initialize X3100 device. Note that all the arguments of this public API - * are 'IN', except @hldev. Upper-layer driver (ULD) cooperates with - * OS to find new X3100 device, locate its PCI and memory spaces. - * - * When done, the ULD allocates sizeof(vxge_hal_device_t) bytes for HAL - * to enable the latter to perform X3100 hardware initialization. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED - Driver is not initialized. - * VXGE_HAL_ERR_BAD_DEVICE_CONFIG - Device configuration params are not - * valid. - * VXGE_HAL_ERR_OUT_OF_MEMORY - Memory allocation failed. - * VXGE_HAL_ERR_BAD_SUBSYSTEM_ID - Device subsystem id is invalid. - * VXGE_HAL_ERR_INVALID_MAC_ADDRESS - Device mac address in not valid. - * VXGE_HAL_INF_MEM_STROBE_CMD_EXECUTING - Failed to retrieve the mac - * address within the time(timeout) or TTI/RTI initialization failed. - * VXGE_HAL_ERR_SWAPPER_CTRL - Failed to configure swapper control. - * - * See also: vxge_hal_device_terminate(), vxge_hal_status_e {} - * vxge_hal_device_attr_t {}. - */ -vxge_hal_status_e -vxge_hal_device_initialize( - vxge_hal_device_h *devh, - vxge_hal_device_attr_t *attr, - vxge_hal_device_config_t *device_config); - -/* - * vxge_hal_device_check_id - Verify device ID. - * @devh: HAL device handle. - * - * Verify device ID. - * Returns: one of the vxge_hal_card_e {} enumerated types. - * See also: vxge_hal_card_e {}. - */ -static inline -/* LINTED */ -vxge_hal_card_e vxge_hal_device_check_id( - vxge_hal_device_h devh) -{ - vxge_hal_device_t *hldev = (vxge_hal_device_t *) devh; - switch (hldev->device_id) { - case VXGE_PCI_DEVICE_ID_TITAN_1: - if (hldev->revision == VXGE_PCI_REVISION_TITAN_1) - return (VXGE_HAL_CARD_TITAN_1); - else if (hldev->revision == VXGE_PCI_REVISION_TITAN_1A) - return (VXGE_HAL_CARD_TITAN_1A); - else - break; - - case VXGE_PCI_DEVICE_ID_TITAN_2: - if (hldev->revision == VXGE_PCI_REVISION_TITAN_2) - return (VXGE_HAL_CARD_TITAN_2); - else - break; - default: - break; - } - - return (VXGE_HAL_CARD_UNKNOWN); -} - -/* - * vxge_hal_device_revision_get - Get Device revision number. - * @devh: HAL device handle. - * - * Returns: Device revision number - */ -static inline -/* LINTED */ -u32 vxge_hal_device_revision_get( - vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->revision); -} - -/* - * vxge_hal_device_pciconfig_get - Read the content of given address - * in pci config space. - * @devh: Device handle. - * @offset: Configuration address(offset)to read from - * @length: Length of the data (1, 2 or 4 bytes) - * @val: Pointer to a buffer to return the content of the address - * - * Read from the pci config space. - * - */ -vxge_hal_status_e -vxge_hal_device_pciconfig_get( - vxge_hal_device_h devh, - u32 offset, - u32 length, - void *val); - -/* - * vxge_hal_device_bar0_get - Get BAR0 mapped address. - * @devh: HAL device handle. - * - * Returns: BAR0 address of the specified device. - */ -static inline -/* LINTED */ -u8 *vxge_hal_device_bar0_get( - vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->bar0); -} - -/* - * vxge_hal_device_bar1_get - Get BAR1 mapped address. - * @devh: HAL device handle. - * - * Returns: BAR1 address of the specified device. - */ -static inline -/* LINTED */ -u8 *vxge_hal_device_bar1_get( - vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->bar1); -} - -/* - * vxge_hal_device_bar2_get - Get BAR2 mapped address. - * @devh: HAL device handle. - * - * Returns: BAR2 address of the specified device. - */ -static inline -/* LINTED */ -u8 *vxge_hal_device_bar2_get( - vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->bar2); -} - -/* - * vxge_hal_device_bar0_set - Set BAR0 mapped address. - * @devh: HAL device handle. - * @bar0: BAR0 mapped address. - * * Set BAR0 address in the HAL device object. - */ -static inline -/* LINTED */ -void -vxge_hal_device_bar0_set( - vxge_hal_device_h devh, - u8 *bar0) -{ - ((vxge_hal_device_t *) devh)->bar0 = bar0; -} - -/* - * vxge_hal_device_bar1_set - Set BAR1 mapped address. - * @devh: HAL device handle. - * @bar1: BAR1 mapped address. - * - * Set BAR1 address in the HAL Device Object. - */ -static inline -/* LINTED */ -void -vxge_hal_device_bar1_set( - vxge_hal_device_h devh, - u8 *bar1) -{ - ((vxge_hal_device_t *) devh)->bar1 = bar1; -} - -/* - * vxge_hal_device_bar2_set - Set BAR2 mapped address. - * @devh: HAL device handle. - * @bar2: BAR2 mapped address. - * - * Set BAR2 address in the HAL Device Object. - */ -static inline -/* LINTED */ -void -vxge_hal_device_bar2_set( - vxge_hal_device_h devh, - u8 *bar2) -{ - ((vxge_hal_device_t *) devh)->bar2 = bar2; -} - -/* - * vxge_hal_device_enable - Enable device. - * @devh: HAL device handle. - * - * Enable the specified device: bring up the link/interface. - * - */ -vxge_hal_status_e -vxge_hal_device_enable( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_disable - Disable X3100 adapter. - * @devh: HAL device handle. - * - * Disable this device. To gracefully reset the adapter, the host should: - * - * - call vxge_hal_device_disable(); - * - * - call vxge_hal_device_intr_disable(); - * - * - do some work (error recovery, change mtu, reset, etc); - * - * - call vxge_hal_device_enable(); - * - * - call vxge_hal_device_intr_enable(). - * - * Note: Disabling the device does _not_ include disabling of interrupts. - * After disabling the device stops receiving new frames but those frames - * that were already in the pipe will keep coming for some few milliseconds. - * - * - */ -vxge_hal_status_e -vxge_hal_device_disable( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_pci_info_get - Get PCI bus informations such as width, - * frequency, and mode from previously stored values. - * @devh: HAL device handle. - * @signalling_rate: pointer to a variable of enumerated type - * vxge_hal_pci_e_signalling_rate_e {}. - * @link_width: pointer to a variable of enumerated type - * vxge_hal_pci_e_link_width_e {}. - * - * Get pci-e signalling rate and link width. - * - * Returns: one of the vxge_hal_status_e {} enumerated types. - * VXGE_HAL_OK - for success. - * VXGE_HAL_ERR_INVALID_DEVICE - for invalid device handle. - */ -static inline -/* LINTED */ -vxge_hal_status_e vxge_hal_device_pci_info_get( - vxge_hal_device_h devh, - vxge_hal_pci_e_signalling_rate_e *signalling_rate, - vxge_hal_pci_e_link_width_e *link_width) -{ - vxge_hal_device_t *hldev = (vxge_hal_device_t *) devh; - - if (!hldev || !hldev->is_initialized || - (hldev->magic != VXGE_HAL_DEVICE_MAGIC)) { - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - *signalling_rate = hldev->signalling_rate; - *link_width = hldev->link_width; - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_device_link_state_test - Test the link state. - * @devh: HAL device handle. - * - * Test link state. - * Returns: link state. - */ -vxge_hal_device_link_state_e -vxge_hal_device_link_state_test( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_link_state_get - Get link state. - * @devh: HAL device handle. - * - * Get link state. - * Returns: link state. - */ -static inline -/* LINTED */ -vxge_hal_device_link_state_e vxge_hal_device_link_state_get( - vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->link_state); -} - -/* - * vxge_hal_device_link_state_poll - Poll for the link state. - * @devh: HAL device handle. - * - * Get link state. - * Returns: link state. - */ -vxge_hal_device_link_state_e -vxge_hal_device_link_state_poll( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_data_rate_get - Get data rate. - * @devh: HAL device handle. - * - * Get data rate. - * Returns: data rate(1G or 10G). - */ -static inline -/* LINTED */ -vxge_hal_device_data_rate_e vxge_hal_device_data_rate_get( - vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->data_rate); -} - -/* - * vxge_hal_device_data_rate_poll - Poll for the data rate. - * @devh: HAL device handle. - * - * Get data rate. - * Returns: data rate. - */ -vxge_hal_device_data_rate_e -vxge_hal_device_data_rate_poll( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_lag_mode_get - Get Current LAG Mode - * @devh: HAL device handle. - * - * Get Current LAG Mode - */ -vxge_hal_device_lag_mode_e -vxge_hal_device_lag_mode_get( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_reset - Reset device. - * @devh: HAL device handle. - * - * Soft-reset the device, reset the device stats except reset_cnt. - * - * After reset is done, will try to re-initialize HW. - * - * Returns: VXGE_HAL_PENDING - successfully sent reset to device. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * - */ -vxge_hal_status_e -vxge_hal_device_reset( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_reset_poll - Poll the device for reset complete. - * @devh: HAL device handle. - * - * Poll the device for reset complete - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_device_reset_poll(vxge_hal_device_h devh); - -/* - * vxge_hal_device_mrpcim_reset_poll - Poll the device for mrpcim reset - * complete. - * @devh: HAL device handle. - * - * Poll the device for mrpcim reset complete - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * VXGE_HAL_ERR_MANAGER_NOT_FOUND - MRPCIM/SRPCIM manager not found - * VXGE_HAL_ERR_TIME_OUT - Device Reset timed out - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_device_mrpcim_reset_poll(vxge_hal_device_h devh); - -/* - * vxge_hal_device_terminating - Mark the device as 'terminating'. - * @devh: HAL device handle. - * - * Mark the device as 'terminating', going to terminate. Can be used - * to serialize termination with other running processes/contexts. - * - * See also: vxge_hal_device_terminate(). - */ -static inline void -/* LINTED */ -vxge_hal_device_terminating(vxge_hal_device_h devh) -{ - ((vxge_hal_device_t *) devh)->terminating = 1; -} - -/* - * vxge_hal_device_terminate - Terminate X3100 device. - * @devh: HAL device handle. - * - * Terminate HAL device. - * - * See also: vxge_hal_device_initialize(). - */ -void -vxge_hal_device_terminate( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_private_set - Set ULD context. - * @devh: HAL device handle. - * @data: pointer to ULD context - * - * Use HAL device to set upper-layer driver (ULD) context. - * - * See also: vxge_hal_device_private_get() - */ -static inline -/* LINTED */ -void vxge_hal_device_private_set( - vxge_hal_device_h devh, - void *data) -{ - ((vxge_hal_device_t *) devh)->upper_layer_data = data; -} - -/* - * vxge_hal_device_private_get - Get ULD context. - * @devh: HAL device handle. - * - * Use HAL device to set upper-layer driver (ULD) context. - * - * See also: vxge_hal_device_private_get() - */ -static inline -/* LINTED */ -void *vxge_hal_device_private_get( - vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->upper_layer_data); -} - -/* - * vxge_hal_device_status - Check whether X3100 hardware is ready for - * operation. - * @devh: HAL device handle. - * @hw_status: X3100 status register. Returned by HAL. - * - * Check whether X3100 hardware is ready for operation. - * The checking includes TDMA, RDMA, PFC, PIC, MC_DRAM, and the rest - * hardware functional blocks. - * - * Returns: VXGE_HAL_OK if the device is ready for operation. Otherwise - * returns VXGE_HAL_FAIL. Also, fills in adapter status (in @hw_status). - * - * See also: vxge_hal_status_e {}. - * Usage: See ex_open {}. - */ -vxge_hal_status_e -vxge_hal_device_status(vxge_hal_device_h devh, u64 *hw_status); - -/* - * vxge_hal_device_is_slot_freeze - * @devh: the device - * - * Returns non-zero if the slot is freezed. - * The determination is made based on the adapter_status - * register which will never give all FFs, unless PCI read - * cannot go through. - */ -int -vxge_hal_device_is_slot_freeze(vxge_hal_device_h devh); - -/* - * vxge_hal_device_is_traffic_interrupt - * @reason: The reason returned by the vxge)hal_device_begin_irq - * @vp_id: Id of vpath for which to check the interrupt - * - * Returns non-zero if traffic interrupt raised, 0 otherwise - */ -static inline u64 -/* LINTED */ -vxge_hal_device_is_traffic_interrupt(u64 reason, u32 vp_id) -{ - return (reason & mBIT(vp_id + 3)); -} - -/* - * vxge_hal_device_intr_enable - Enable X3100 interrupts. - * @devh: HAL device handle. - * @op: One of the vxge_hal_device_intr_e enumerated values specifying - * the type(s) of interrupts to enable. - * - * Enable X3100 interrupts. The function is to be executed the last in - * X3100 initialization sequence. - * - * See also: vxge_hal_device_intr_disable() - */ -void -vxge_hal_device_intr_enable( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_intr_disable - Disable X3100 interrupts. - * @devh: HAL device handle. - * @op: One of the vxge_hal_device_intr_e enumerated values specifying - * the type(s) of interrupts to disable. - * - * Disable X3100 interrupts. - * - * See also: vxge_hal_device_intr_enable() - */ -void -vxge_hal_device_intr_disable( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_mask_all - Mask all device interrupts. - * @devh: HAL device handle. - * - * Mask all device interrupts. - * - * See also: vxge_hal_device_unmask_all() - */ -void -vxge_hal_device_mask_all( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_unmask_all - Unmask all device interrupts. - * @devh: HAL device handle. - * - * Unmask all device interrupts. - * - * See also: vxge_hal_device_mask_all() - */ -void -vxge_hal_device_unmask_all( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_begin_irq - Begin IRQ processing. - * @devh: HAL device handle. - * @skip_alarms: Do not clear the alarms - * @reason: "Reason" for the interrupt, the value of X3100's - * general_int_status register. - * - * The function performs two actions, It first checks whether (shared IRQ) the - * interrupt was raised by the device. Next, it masks the device interrupts. - * - * Note: - * vxge_hal_device_begin_irq() does not flush MMIO writes through the - * bridge. Therefore, two back-to-back interrupts are potentially possible. - * It is the responsibility of the ULD to make sure that only one - * vxge_hal_device_continue_irq() runs at a time. - * - * Returns: 0, if the interrupt is not "ours" (note that in this case the - * device remain enabled). - * Otherwise, vxge_hal_device_begin_irq() returns 64bit general adapter - * status. - * See also: vxge_hal_device_handle_irq() - */ -vxge_hal_status_e -vxge_hal_device_begin_irq( - vxge_hal_device_h devh, - u32 skip_alarms, - u64 *reason); - -/* - * vxge_hal_device_continue_irq - Continue handling IRQ: process all - * completed descriptors. - * @devh: HAL device handle. - * - * Process completed descriptors and unmask the device interrupts. - * - * The vxge_hal_device_continue_irq() walks all open virtual paths - * and calls upper-layer driver (ULD) via supplied completion - * callback. - * - * Note that the vxge_hal_device_continue_irq is part of the _fast_ path. - * To optimize the processing, the function does _not_ check for - * errors and alarms. - * - * Returns: VXGE_HAL_OK. - * - * See also: vxge_hal_device_handle_irq(), - * vxge_hal_ring_rxd_next_completed(), - * vxge_hal_fifo_txdl_next_completed(), vxge_hal_ring_callback_f {}, - * vxge_hal_fifo_callback_f {}. - */ -vxge_hal_status_e -vxge_hal_device_continue_irq( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_handle_irq - Handle device IRQ. - * @devh: HAL device handle. - * @skip_alarms: Do not clear the alarms - * - * Perform the complete handling of the line interrupt. The function - * performs two calls. - * First it uses vxge_hal_device_begin_irq() to check the reason for - * the interrupt and mask the device interrupts. - * Second, it calls vxge_hal_device_continue_irq() to process all - * completed descriptors and re-enable the interrupts. - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_ERR_WRONG_IRQ - (shared) IRQ produced by other device. - * - * See also: vxge_hal_device_begin_irq(), vxge_hal_device_continue_irq(). - */ -vxge_hal_status_e -vxge_hal_device_handle_irq( - vxge_hal_device_h devh, - u32 skip_alarms); - -/* - * vxge_hal_device_mask_tx - Mask Tx interrupts. - * @devh: HAL device. - * - * Mask Tx device interrupts. - * - * See also: vxge_hal_device_unmask_tx(), vxge_hal_device_mask_rx(), - * vxge_hal_device_clear_tx(). - */ -void -vxge_hal_device_mask_tx( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_clear_tx - Acknowledge (that is, clear) the - * condition that has caused the TX interrupt. - * @devh: HAL device. - * - * Acknowledge (that is, clear) the condition that has caused - * the Tx interrupt. - * See also: vxge_hal_device_begin_irq(), vxge_hal_device_continue_irq(), - * vxge_hal_device_clear_rx(), vxge_hal_device_mask_tx(). - */ -void -vxge_hal_device_clear_tx( - vxge_hal_device_h devh); - - -/* - * vxge_hal_device_unmask_tx - Unmask Tx interrupts. - * @devh: HAL device. - * - * Unmask Tx device interrupts. - * - * See also: vxge_hal_device_mask_tx(), vxge_hal_device_clear_tx(). - */ -void -vxge_hal_device_unmask_tx( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_mask_rx - Mask Rx interrupts. - * @devh: HAL device. - * - * Mask Rx device interrupts. - * - * See also: vxge_hal_device_unmask_rx(), vxge_hal_device_mask_tx(), - * vxge_hal_device_clear_rx(). - */ -void -vxge_hal_device_mask_rx( - vxge_hal_device_h devh); - - -/* - * vxge_hal_device_clear_rx - Acknowledge (that is, clear) the - * condition that has caused the RX interrupt. - * @devh: HAL device. - * - * Acknowledge (that is, clear) the condition that has caused - * the Rx interrupt. - * See also: vxge_hal_device_begin_irq(), vxge_hal_device_continue_irq(), - * vxge_hal_device_clear_tx(), vxge_hal_device_mask_rx(). - */ -void -vxge_hal_device_clear_rx( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_unmask_rx - Unmask Rx interrupts. - * @devh: HAL device. - * - * Unmask Rx device interrupts. - * - * See also: vxge_hal_device_mask_rx(), vxge_hal_device_clear_rx(). - */ -void -vxge_hal_device_unmask_rx( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_mask_tx_rx - Mask Tx and Rx interrupts. - * @devh: HAL device. - * - * Mask Tx and Rx device interrupts. - * - * See also: vxge_hal_device_unmask_tx_rx(), vxge_hal_device_clear_tx_rx(). - */ -void -vxge_hal_device_mask_tx_rx( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_clear_tx_rx - Acknowledge (that is, clear) the - * condition that has caused the Tx and RX interrupt. - * @devh: HAL device. - * - * Acknowledge (that is, clear) the condition that has caused - * the Tx and Rx interrupt. - * See also: vxge_hal_device_begin_irq(), vxge_hal_device_continue_irq(), - * vxge_hal_device_mask_tx_rx(), vxge_hal_device_unmask_tx_rx(). - */ -void -vxge_hal_device_clear_tx_rx( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_unmask_tx_rx - Unmask Tx and Rx interrupts. - * @devh: HAL device. - * - * Unmask Tx and Rx device interrupts. - * - * See also: vxge_hal_device_mask_tx_rx(), vxge_hal_device_clear_tx_rx(). - */ -void -vxge_hal_device_unmask_tx_rx( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_msix_mode - Is MSIX enabled? - * @devh: HAL device handle. - * - * Returns 0 if MSIX is enabled for the specified device, - * non-zero otherwise. - */ -static inline int -/* LINTED */ -vxge_hal_device_msix_mode(vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->msix_enabled); -} - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - -/* - * vxge_hal_device_trace_write - Write the trace from the given buffer into - * circular trace buffer - * @devh: HAL device handle. - * @trace_buf: Buffer containing the trace. - * @trace_len: Length of the trace in the buffer - * - * Writes the trace from the given buffer into the circular trace buffer - * - */ -void -vxge_hal_device_trace_write(vxge_hal_device_h devh, - u8 *trace_buf, - u32 trace_len); - -/* - * vxge_hal_device_trace_dump - Dump the trace buffer. - * @devh: HAL device handle. - * - * Dump the trace buffer contents. - */ -void - vxge_hal_device_trace_dump(vxge_hal_device_h devh); - -/* - * vxge_hal_device_trace_read - Read trace buffer contents. - * @devh: HAL device handle. - * @buffer: Buffer to store the trace buffer contents. - * @buf_size: Size of the buffer. - * @read_length: Size of the valid data in the buffer. - * - * Read HAL trace buffer contents starting from the offset - * up to the size of the buffer or till EOF is reached. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_EOF_TRACE_BUF - No more data in the trace buffer. - * - */ -vxge_hal_status_e -vxge_hal_device_trace_read(vxge_hal_device_h devh, - char *buffer, - unsigned buf_size, - unsigned *read_length); - -#endif - -/* - * vxge_hal_device_debug_set - Set the debug module, level and timestamp - * @devh: Hal device object - * @level: Debug level as defined in enum vxge_debug_level_e - * @mask: An or value of component masks as defined in vxge_debug.h - * - * This routine is used to dynamically change the debug output - */ -void -vxge_hal_device_debug_set( - vxge_hal_device_h devh, - vxge_debug_level_e level, - u32 mask); - -/* - * vxge_hal_device_debug_level_get - Get the debug level - * @devh: Hal device object - * - * This routine returns the current debug level set - */ -static inline u32 -/* LINTED */ -vxge_hal_device_debug_level_get(vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->debug_level); -} - -/* - * vxge_hal_device_debug_mask_get - Get the debug mask - * @devh: Hal device object - * - * This routine returns the current debug mask set - */ -static inline u32 -/* LINTED */ -vxge_hal_device_debug_mask_get(vxge_hal_device_h devh) -{ - return (((vxge_hal_device_t *) devh)->debug_module_mask); -} - -/* - * vxge_hal_device_flick_link_led - Flick (blink) link LED. - * @devh: HAL device handle. - * @port : Port number 0, or 1 - * @on_off: TRUE if flickering to be on, FALSE to be off - * - * Flicker the link LED. - */ -vxge_hal_status_e -vxge_hal_device_flick_link_led( - vxge_hal_device_h devh, - u32 port, - u32 on_off); - -/* - * vxge_hal_device_getpause_data -Pause frame frame generation and reception. - * @devh: HAL device handle. - * @port : Port number 0, 1, or 2 - * @tx : A field to return the pause generation capability of the NIC. - * @rx : A field to return the pause reception capability of the NIC. - * - * Returns the Pause frame generation and reception capability of the NIC. - * Return value: - * status - */ -vxge_hal_status_e -vxge_hal_device_getpause_data( - vxge_hal_device_h devh, - u32 port, - u32 *tx, - u32 *rx); - -/* - * Privileged operations - */ - -/* - * enum vxge_hal_pcie_function_mode_e - PCIE Function modes - * @VXGE_HAL_PCIE_FUNC_MODE_SF1_VP17: Single Function - * - 1 function with 17 VPATHs - * @VXGE_HAL_PCIE_FUNC_MODE_MF8_VP2: Multi Function - * - 8 functions with 2 VPATHs per function - * @VXGE_HAL_PCIE_FUNC_MODE_SR17_VP1: SRIOV - * - 17 VFs with 1 VPATH per VF - * @VXGE_HAL_PCIE_FUNC_MODE_MR17_VP1: MRIOV - * - 17 Virtual Hierarchies, 1 Path/Function/Hierarchy - * @VXGE_HAL_PCIE_FUNC_MODE_MR8_VP2: MRIOV - * - 8 Virtual Hierarchies, 2 Path/Function/Hierarchy - * @VXGE_HAL_PCIE_FUNC_MODE_MF17_VP1: Multi Function - * - 17 functions, 1 Path/Function (PCIe ARI) - * @VXGE_HAL_PCIE_FUNC_MODE_SR8_VP2: SRIOV - * - 1 PF, 7 VF, 2 Paths/Function - * @VXGE_HAL_PCIE_FUNC_MODE_SR4_VP4: SRIOV - * - 1 PF, 3 VF, 4 Paths/Function - * @VXGE_HAL_PCIE_FUNC_MODE_MF2_VP8: Multi Function - * - 2 functions, 8 Paths/Function (funcs 2-7 have no resources) - */ -typedef enum vxge_hal_pcie_function_mode_e { - VXGE_HAL_PCIE_FUNC_MODE_SF1_VP17, - VXGE_HAL_PCIE_FUNC_MODE_MF8_VP2, - VXGE_HAL_PCIE_FUNC_MODE_SR17_VP1, - VXGE_HAL_PCIE_FUNC_MODE_MR17_VP1, - VXGE_HAL_PCIE_FUNC_MODE_MR8_VP2, - VXGE_HAL_PCIE_FUNC_MODE_MF17_VP1, - VXGE_HAL_PCIE_FUNC_MODE_SR8_VP2, - VXGE_HAL_PCIE_FUNC_MODE_SR4_VP4, - VXGE_HAL_PCIE_FUNC_MODE_MF2_VP8, - VXGE_HAL_PCIE_FUNC_MODE_MF4_VP4, - VXGE_HAL_PCIE_FUNC_MODE_MR4_VP4, - VXGE_HAL_PCIE_FUNC_MODE_MF8P_VP2 - -} vxge_hal_pcie_function_mode_e; - -/* Behavior on failure */ -typedef enum vxge_hal_xmac_nwif_behavior_on_failure { - VXGE_HAL_XMAC_NWIF_OnFailure_NoMove, - VXGE_HAL_XMAC_NWIF_OnFailure_OtherPort, - VXGE_HAL_XMAC_NWIF_OnFailure_OtherPortBackOnRestore -} vxge_hal_xmac_nwif_behavior_on_failure; - -/* - * Network Port configuration cmds - */ -typedef enum vxge_hal_nwif_cmds { - VXGE_HAL_XMAC_NWIF_Cmd_Version = 0x0, - VXGE_HAL_XMAC_NWIF_Cmd_SetMode = 0x1, - VXGE_HAL_XMAC_NWIF_Cmd_CfgSnglPort = 0x4, - VXGE_HAL_XMAC_NWIF_Cmd_Avail = 0x6, - VXGE_HAL_XMAC_NWIF_Cmd_CfgSetActPassPreferredPort = 0x7, - VXGE_HAL_XMAC_NWIF_Cmd_CfgSetBehaviourOnFailure = 0x8, - VXGE_HAL_XMAC_NWIF_Cmd_CfgDualPort_L2SwitchEnable = 0x9, - VXGE_HAL_XMAC_NWIF_Cmd_CfgDualPort_VPathVector = 0xa, - VXGE_HAL_XMAC_NWIF_Cmd_Get_Active_Config = 0xb -} vxge_hal_nwif_cmds; - -/* Network port get active config options */ -typedef enum vxge_hal_xmac_nwif_actconfig { - VXGE_HAL_XMAC_NWIF_ActConfig_Avail = 0, - VXGE_HAL_XMAC_NWIF_ActConfig_NWPortMode = 1, - VXGE_HAL_XMAC_NWIF_ActConfig_PreferredPort = 2, - VXGE_HAL_XMAC_NWIF_ActConfig_BehaviourOnFail = 3, - VXGE_HAL_XMAC_NWIF_ActConfig_ActivePort = 4, - VXGE_HAL_XMAC_NWIF_ActConfig_L2SwitchEnabled = 5, - VXGE_HAL_XMAC_NWIF_ActConfig_DualPortPath = 6 -} vxge_hal_xmac_nwif_actconfig; - -/* Dual port modes */ -typedef enum vxge_hal_xmac_nwif_dp_mode { - VXGE_HAL_DP_NP_MODE_DEFAULT, - VXGE_HAL_DP_NP_MODE_LINK_AGGR, - VXGE_HAL_DP_NP_MODE_ACTIVE_PASSIVE, - VXGE_HAL_DP_NP_MODE_SINGLE_PORT, - VXGE_HAL_DP_NP_MODE_DUAL_PORT, - VXGE_HAL_DP_NP_MODE_DISABLE_PORT_MGMT -} vxge_hal_xmac_nwif_dp_mode; - -/* L2 switch status */ -typedef enum vxge_hal_xmac_nwif_l2_switch_status { - VXGE_HAL_XMAC_NWIF_L2_SWITCH_DISABLE, - VXGE_HAL_XMAC_NWIF_L2_SWITCH_ENABLE -} vxge_hal_xmac_nwif_l2_switch_status; - -/* - * vxge_hal_srpcim_alarm_process - Process srpcim Alarms. - * @devh: Device Handle. - * @skip_alarms: Flasg to indicate not to clear alarms - * - * Process srpcim alarms. - * - */ -vxge_hal_status_e -vxge_hal_srpcim_alarm_process(vxge_hal_device_h devh, u32 skip_alarms); - -/* - * vxge_hal_srpcim_intr_enable - Enable srpcim interrupts. - * @devh: Device Handle. - * - * Enable srpcim interrupts. - * - * See also: vxge_hal_srpcim_intr_disable() - */ -vxge_hal_status_e -vxge_hal_srpcim_intr_enable(vxge_hal_device_h devh); - -/* - * vxge_hal_srpcim_intr_disable - Disable srpcim interrupts. - * @devh: Device Handle. - * - * Disable srpcim interrupts. - * - * See also: vxge_hal_srpcim_intr_enable() - */ -vxge_hal_status_e -vxge_hal_srpcim_intr_disable(vxge_hal_device_h devh); - -/* - * vxge_hal_srpcim_msix_set - Associate MSIX vector with srpcim alarm - * @devh: Device Handle. - * @alarm_msix_id: MSIX vector for alarm. - * - * This API will associate a given MSIX vector numbers with srpcim alarm - */ -vxge_hal_status_e -vxge_hal_srpcim_msix_set(vxge_hal_device_h devh, int alarm_msix_id); - -/* - * vxge_hal_srpcim_msix_mask - Mask MSIX Vector. - * @devh: Device Handle. - * - * The function masks the srpcim msix interrupt - * - */ -void -vxge_hal_srpcim_msix_mask(vxge_hal_device_h devh); - -/* - * vxge_hal_srpcim_msix_clear - Clear MSIX Vector. - * @devh: Device Handle. - * - * The function clears the srpcim msix interrupt - * - */ -void -vxge_hal_srpcim_msix_clear(vxge_hal_device_h devh); - - -/* - * vxge_hal_srpcim_msix_unmask - Unmask MSIX Vector. - * @devh: Device Handle. - * - * The function unmasks the srpcim msix interrupt - * - */ -void -vxge_hal_srpcim_msix_unmask(vxge_hal_device_h devh); - -vxge_hal_status_e -vxge_hal_func_mode_count(vxge_hal_device_h devh, - u32 func_mode, u32 *num_funcs); - -vxge_hal_status_e -vxge_hal_send_message(vxge_hal_device_h devh, u64 vp_id, u8 msg_type, - u8 msg_dst, u32 msg_data, u64 *msg_sent_to_vpaths); - -/* - * vxge_hal_func_mode_set - Set PCI-E function mode - * @devh: Device Handle. - * @func_mode: PCI-E func mode. Please see vxge_hal_pcie_function_mode_e{} - * - * Set PCI-E function mode. - * - */ -vxge_hal_status_e -vxge_hal_func_mode_get(vxge_hal_device_h devh, u32 *func_mode); -/* - * vxge_hal_func_mode_set - Set PCI-E function mode - * @devh: Device Handle. - * @func_mode: PCI-E func mode. Please see vxge_hal_pcie_function_mode_e{} - * - * Set PCI-E function mode. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_pcie_func_mode_set(vxge_hal_device_h devh, - vxge_hal_pcie_function_mode_e func_mode); - -/* - * vxge_hal_get_active_config - Get active configuration - * @devh: Device Handle. - * - */ -vxge_hal_status_e -vxge_hal_get_active_config(vxge_hal_device_h devh, - vxge_hal_xmac_nwif_actconfig req_config, u64 *cur_config); - -/* - * vxge_hw_set_port_mode - Set dual port mode - * override the default dual port mode - * @devh: Device Handle. - * - */ - -vxge_hal_status_e -vxge_hal_set_port_mode(vxge_hal_device_h devh, - vxge_hal_xmac_nwif_dp_mode port_mode); - -/* - * vxge_hal_set_behavior_on_failure - Set port behaviour - * change port behavior on failure - * @devh: Device Handle. - */ -vxge_hal_status_e -vxge_hal_set_behavior_on_failure(vxge_hal_device_h devh, - vxge_hal_xmac_nwif_behavior_on_failure behave_on_failure); - - -/* - * vxge_hal_set_l2switch_mode - Set port behaviour - * set l2switch mode - * @devh: Device Handle. - */ -vxge_hal_status_e -vxge_hal_set_l2switch_mode(vxge_hal_device_h devh, - enum vxge_hal_xmac_nwif_l2_switch_status l2_switch); -/* - * vxge_hal_set_fw_api - Setup FW api - * @devh: Device Handle. - * - */ -vxge_hal_status_e -vxge_hal_set_fw_api(vxge_hal_device_h devh, u64 vp_id, u32 action, - u32 offset, u64 data0, u64 data1); - -vxge_hal_status_e -vxge_hal_config_vpath_map(vxge_hal_device_h devh, u64 port_map); - -vxge_hal_status_e -vxge_hal_get_vpath_mask(vxge_hal_device_h devh, u32 vf_id, - u32 *no_of_vpath, u64 *vpath_mask); - -vxge_hal_status_e -vxge_hal_get_vpath_list(vxge_hal_device_h devh, u32 vf_id, - u64 *vpath_list, u32 *vpath_count); - -vxge_hal_status_e -vxge_hal_rx_bw_priority_set(vxge_hal_device_h devh, u64 vp_id); - -vxge_hal_status_e -vxge_hal_tx_bw_priority_set(vxge_hal_device_h devh, u64 vp_id); - -vxge_hal_status_e -vxge_hal_bw_priority_get(vxge_hal_device_h devh, u64 vp_id, - u32 *bandwidth, u32 *priority); - -vxge_hal_status_e -vxge_hal_vf_rx_bw_get(vxge_hal_device_h devh, u64 func_id, - u32 *bandwidth, u32 *priority); -/* - * vxge_hal_mrpcim_serial_number_get - Returns the serial number - * @devh: Device Handle. - * - * Return the serial number - */ -const u8 * -vxge_hal_mrpcim_serial_number_get(vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_fw_upgrade - Upgrade firmware - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @bar0: Address of BAR0 in PCI config - * @buffer: Buffer containing F/W image - * @length: F/W image length - * - * Upgrade firmware - */ -vxge_hal_status_e -vxge_hal_mrpcim_fw_upgrade( - pci_dev_h pdev, - pci_reg_h regh0, - u8 *bar0, - u8 *buffer, - u32 length); - -/* - * vxge_hal_mrpcim_vpath_map_get - Returns the assigned vpaths map - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @bar0: Address of BAR0 in PCI config - * @func: Function Number - * - * Returns the assigned vpaths map - */ -u64 -vxge_hal_mrpcim_vpath_map_get( - pci_dev_h pdev, - pci_reg_h regh0, - u8 *bar0, - u32 func); - -/* - * vxge_hal_mrpcim_vpath_qos_set - Set the priority, Guaranteed and maximum - * bandwidth for a vpath. - * @devh: HAL device handle. - * @vp_id: Vpath Id. - * @priority: Priority - * @min_bandwidth: Minimum Bandwidth - * @max_bandwidth: Maximum Bandwidth - * - * Set the Priority, Guaranteed and maximum bandwidth for a given vpath - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_vpath_qos_set( - vxge_hal_device_h devh, - u32 vp_id, - u32 priority, - u32 min_bandwidth, - u32 max_bandwidth); - -/* - * vxge_hal_mrpcim_vpath_qos_get - Get the priority, Guaranteed and maximum - * bandwidth for a vpath. - * @devh: HAL device handle. - * @vp_id: Vpath Id. - * @priority: Buffer to return Priority - * @min_bandwidth: Buffer to return Minimum Bandwidth - * @max_bandwidth: Buffer to return Maximum Bandwidth - * - * Get the Priority, Guaranteed and maximum bandwidth for a given vpath - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_vpath_qos_get( - vxge_hal_device_h devh, - u32 vp_id, - u32 *priority, - u32 *min_bandwidth, - u32 *max_bandwidth); - -/* - * vxge_hal_mrpcim_mac_addr_add - Add the mac address entry - * into MAC address table. - * @devh: Device handle. - * @offset: Index into the DA table to add the mac address. - * @macaddr: MAC address to be added for this vpath into the list - * @macaddr_mask: MAC address mask for macaddr - * @vpath_vector: Bit mask specifying the vpaths to which the mac address - * applies - * @duplicate_mode: Duplicate MAC address add mode. Please see - * vxge_hal_vpath_mac_addr_add_mode_e {} - * - * Adds the given mac address, mac address mask and vpath vector into the list - * - * see also: vxge_hal_vpath_mac_addr_delete, vxge_hal_vpath_mac_addr_get and - * vxge_hal_vpath_mac_addr_get_next - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_mac_addr_add( - vxge_hal_device_h devh, - u32 offset, - macaddr_t macaddr, - macaddr_t macaddr_mask, - u64 vpath_vector, - u32 duplicate_mode); - -/* - * vxge_hal_mrpcim_mac_addr_get - Read the mac address entry - * into MAC address table. - * @devh: Device handle. - * @offset: Index into the DA table to execute the command on. - * @macaddr: Buffer to return MAC address to be added for this vpath - * @macaddr_mask: Buffer to return MAC address mask for macaddr - * @vpath_vector: Buffer to return Bit mask specifying the vpaths to which - * the mac address applies - * - * Reads the mac address,mac address mask and vpath vector from the given offset - * - * see also: vxge_hal_mrpcim_mac_addr_add - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_mac_addr_get( - vxge_hal_device_h devh, - u32 offset, - macaddr_t macaddr, - macaddr_t macaddr_mask, - u64 *vpath_vector); - -/* - * vxge_hal_mrpcim_reset - Reset the entire device. - * @devh: HAL device handle. - * - * Soft-reset the device, reset the device stats except reset_cnt. - * - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_mrpcim_reset(vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_reset_poll - Poll the device for reset complete. - * @devh: HAL device handle. - * - * Soft-reset the device, reset the device stats except reset_cnt. - * - * After reset is done, will try to re-initialize HW. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_mrpcim_reset_poll(vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_strip_repl_vlan_tag_enable - Enable strip Repl vlan tag. - * @devh: Device handle. - * - * Enable X3100 strip Repl vlan tag. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_strip_repl_vlan_tag_enable( - vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_strip_repl_vlan_tag_disable - Disable strip Repl vlan tag. - * @devh: Device handle. - * - * Disable X3100 strip Repl vlan tag. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_strip_repl_vlan_tag_disable( - vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_intr_enable - Enable the interrupts on mrpcim. - * @devh: HAL device handle. - * - * Enable mrpcim interrupts - * - * See also: vxge_hal_mrpcim_intr_disable(). - */ -vxge_hal_status_e -vxge_hal_mrpcim_intr_enable(vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_intr_disable - Disable the interrupts on mrpcim. - * @devh: HAL device handle. - * - * Disable mrpcim interrupts - * - * See also: vxge_hal_mrpcim_intr_enable(). - */ -vxge_hal_status_e -vxge_hal_mrpcim_intr_disable(vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_lag_config_get - Get the LAG config. - * @devh: Device handle. - * @lconfig: LAG Configuration - * - * Returns the current LAG configuration. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_lag_config_get( - vxge_hal_device_h devh, - vxge_hal_lag_config_t *lconfig); - -/* - * vxge_hal_mrpcim_lag_config_set - Set the LAG config. - * @devh: Device handle. - * @lconfig: LAG Configuration - * - * Sets the LAG configuration. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_lag_config_set( - vxge_hal_device_h devh, - vxge_hal_lag_config_t *lconfig); - -/* - * vxge_hal_mrpcim_getpause_data -Pause frame frame generation and reception. - * @devh: HAL device handle. - * @port : Port number 0, 1, or 2 - * @tx : A field to return the pause generation capability of the NIC. - * @rx : A field to return the pause reception capability of the NIC. - * - * Returns the Pause frame generation and reception capability of the NIC. - * Return value: - * status - */ -vxge_hal_status_e -vxge_hal_mrpcim_getpause_data(vxge_hal_device_h devh, - u32 port, - u32 *tx, - u32 *rx); - -/* - * vxge_hal_mrpcim_setpause_data - set/reset pause frame generation. - * @devh: HAL device handle. - * @port : Port number 0, 1, or 2 - * @tx: A field that indicates the pause generation capability to be - * set on the NIC. - * @rx: A field that indicates the pause reception capability to be - * set on the NIC. - * - * It can be used to set or reset Pause frame generation or reception - * support of the NIC. - * Return value: - * int, returns 0 on Success - */ - -vxge_hal_status_e -vxge_hal_mrpcim_setpause_data( - vxge_hal_device_h devh, - u32 port, - u32 tx, - u32 rx); - -/* - * vxge_hal_mrpcim_bist_test - invokes the MemBist test of the card . - * @devh: HAL device handle. - * @data:variable that returns the result of each of the test conducted by - * the driver. - * - * This invokes the MemBist test of the card. We give around - * 2 secs time for the Test to complete. If it's still not complete - * within this peiod, we consider that the test failed. - * Return value: - * 0 on success and -1 on failure. - */ -vxge_hal_status_e -vxge_hal_mrpcim_bist_test(vxge_hal_device_h devh, u64 *data); - -/* - * vxge_hal_mrpcim_udp_rth_enable - Enable UDP/RTH. - * @devh: HAL device handle. - * - * enable udp rth - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_udp_rth_enable( - vxge_hal_device_h devh); - -/* - * Virtual Paths - */ - -/* - * struct vxge_hal_vpath_attr_t - Attributes of virtual path - * @vp_id: Identifier of Virtual Path - * @ring_attr: Attributes of ring for non-offload receive - * @fifo_attr: Attributes of fifo for non-offload transmit - * - * Attributes of virtual path. This structure is passed as parameter - * to the vxge_hal_vpath_open() routine to set the attributes of DMQ, UMQ, - * ring and fifo. After virtual path is open, iWARP/RDMA module can attach - * to virtual path. - */ -typedef struct vxge_hal_vpath_attr_t { - u32 vp_id; - vxge_hal_ring_attr_t ring_attr; - vxge_hal_fifo_attr_t fifo_attr; -} vxge_hal_vpath_attr_t; - -/* - * vxge_hal_vpath_open - Open a virtual path on a given adapter - * @devh: handle to device object - * @attr: Virtual path attributes - * @cb_fn: Call back to be called to complete an asynchronous function call - * @client_handle: handle to be returned in the callback - * @vpath_handle: Buffer to return a handle to the vpath - * - * This function is used to open access to virtual path of an - * adapter for offload, LRO and SPDM operations. This function returns - * synchronously. - */ -vxge_hal_status_e -vxge_hal_vpath_open( - vxge_hal_device_h devh, - vxge_hal_vpath_attr_t *attr, - vxge_hal_vpath_callback_f cb_fn, - vxge_hal_client_h client_handle, - vxge_hal_vpath_h *vpath_handle); - -/* - * vxge_hal_vpath_enable - * @vpath_handle: Handle to the vpath object - * - * This routine clears the vpath reset and puts vpath in service - */ -vxge_hal_status_e -vxge_hal_vpath_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_id - Get virtual path ID - * @vpath_handle: Handle got from previous vpath open - * - * This function returns virtual path id - */ -u32 -vxge_hal_vpath_id(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_close - Close the handle got from previous vpath (vpath) open - * @vpath_handle: Handle got from previous vpath open - * - * This function is used to close access to virtual path opened - * earlier. This function returns synchronously. - */ -vxge_hal_status_e -vxge_hal_vpath_close(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_reset - Resets vpath - * @vpath_handle: Handle got from previous vpath open - * - * This function is used to request a reset of vpath - */ -vxge_hal_status_e -vxge_hal_vpath_reset(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_reset_poll - Poll for reset complete - * @vpath_handle: Handle got from previous vpath open - * - * This function is used to poll for the vpath reset completion - */ -vxge_hal_status_e -vxge_hal_vpath_reset_poll(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_obj_count_get - Get the Object usage count for a given - * virtual path - * @vpath_handle: Virtal path handle - * @obj_counts: Buffer to return object counts - * - * This function returns the object counts for virtual path. This function - * returns synchronously. - */ -vxge_hal_status_e -vxge_hal_vpath_obj_count_get(vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_sw_obj_count_t *obj_counts); - -/* - * vxge_hal_vpath_mtu_check - check MTU value for ranges - * @vpath_handle: Virtal path handle - * @new_mtu: new MTU value to check - * - * Will do sanity check for new MTU value. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_MTU_SIZE - MTU is invalid. - * - * See also: vxge_hal_vpath_mtu_set() - */ -vxge_hal_status_e -vxge_hal_device_mtu_check(vxge_hal_vpath_h vpath_handle, - unsigned long new_mtu); - -/* - * vxge_hal_vpath_mtu_set - Set MTU. - * @vpath_handle: Virtal path handle - * @new_mtu: New MTU size to configure. - * - * Set new MTU value. Example, to use jumbo frames: - * vxge_hal_vpath_mtu_set(my_device, 9600); - * - */ -vxge_hal_status_e -vxge_hal_vpath_mtu_set(vxge_hal_vpath_h vpath_handle, - unsigned long new_mtu); - -typedef enum vxge_hal_vpath_mac_addr_add_mode_e { - VXGE_HAL_VPATH_MAC_ADDR_ADD_DUPLICATE = 0, - VXGE_HAL_VPATH_MAC_ADDR_DISCARD_DUPLICATE = 1, - VXGE_HAL_VPATH_MAC_ADDR_REPLACE_DUPLICATE = 2 -} vxge_hal_vpath_mac_addr_add_mode_e; - -/* - * vxge_hal_vpath_mac_addr_add - Add the mac address entry for this vpath - * to MAC address table. - * @vpath_handle: Vpath handle. - * @macaddr: MAC address to be added for this vpath into the list - * @macaddr_mask: MAC address mask for mac_addr - * @duplicate_mode: Duplicate MAC address add mode. Please see - * vxge_hal_vpath_mac_addr_add_mode_e {} - * - * Adds the given mac address and mac address mask into the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_delete, vxge_hal_vpath_mac_addr_get and - * vxge_hal_vpath_mac_addr_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_mac_addr_add( - vxge_hal_vpath_h vpath_handle, - macaddr_t macaddr, - macaddr_t macaddr_mask, - vxge_hal_vpath_mac_addr_add_mode_e duplicate_mode); - -/* - * vxge_hal_vpath_mac_addr_get - Get the first mac address entry for this vpath - * from MAC address table. - * @vpath_handle: Vpath handle. - * @macaddr: First MAC address entry for this vpath in the list - * @macaddr_mask: MAC address mask for mac_addr - * - * Returns the first mac address and mac address mask in the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_mac_addr_get( - vxge_hal_vpath_h vpath_handle, - macaddr_t macaddr, - macaddr_t macaddr_mask); - -/* - * vxge_hal_vpath_mac_addr_get_next - Get the next mac address entry for this - * vpath from MAC address table. - * @vpath_handle: Vpath handle. - * @macaddr: Next MAC address entry for this vpath in the list - * @macaddr_mask: MAC address mask for mac_addr - * - * Returns the next mac address and mac address mask in the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_get - * - */ -vxge_hal_status_e -vxge_hal_vpath_mac_addr_get_next( - vxge_hal_vpath_h vpath_handle, - macaddr_t macaddr, - macaddr_t macaddr_mask); - -/* - * vxge_hal_vpath_mac_addr_delete - Delete the mac address entry for this vpath - * to MAC address table. - * @vpath_handle: Vpath handle. - * @macaddr: MAC address to be added for this vpath into the list - * @macaddr_mask: MAC address mask for macaddr - * - * Delete the given mac address and mac address mask into the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_add, vxge_hal_vpath_mac_addr_get and - * vxge_hal_vpath_mac_addr_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_mac_addr_delete( - vxge_hal_vpath_h vpath_handle, - macaddr_t macaddr, - macaddr_t macaddr_mask); - -/* - * vxge_hal_vpath_vid_add - Add the vlan id entry for this vpath - * to vlan id table. - * @vpath_handle: Vpath handle. - * @vid: vlan id to be added for this vpath into the list - * - * Adds the given vlan id into the list for this vpath. - * see also: vxge_hal_vpath_vid_delete, vxge_hal_vpath_vid_get and - * vxge_hal_vpath_vid_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_vid_add( - vxge_hal_vpath_h vpath_handle, - u64 vid); - -/* - * vxge_hal_vpath_vid_get - Get the first vid entry for this vpath - * from vlan id table. - * @vpath_handle: Vpath handle. - * @vid: Buffer to return vlan id - * - * Returns the first vlan id in the list for this vpath. - * see also: vxge_hal_vpath_vid_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_vid_get( - vxge_hal_vpath_h vpath_handle, - u64 *vid); - -/* - * vxge_hal_vpath_vid_get_next - Get the next vid entry for this vpath - * from vlan id table. - * @vpath_handle: Vpath handle. - * @vid: Buffer to return vlan id - * - * Returns the next vlan id in the list for this vpath. - * see also: vxge_hal_vpath_vid_get - * - */ -vxge_hal_status_e -vxge_hal_vpath_vid_get_next( - vxge_hal_vpath_h vpath_handle, - u64 *vid); - -/* - * vxge_hal_vpath_vid_delete - Delete the vlan id entry for this vpath - * to vlan id table. - * @vpath_handle: Vpath handle. - * @vid: vlan id to be added for this vpath into the list - * - * Adds the given vlan id into the list for this vpath. - * see also: vxge_hal_vpath_vid_add, vxge_hal_vpath_vid_get and - * vxge_hal_vpath_vid_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_vid_delete( - vxge_hal_vpath_h vpath_handle, - u64 vid); - -/* - * vxge_hal_vpath_etype_add - Add the Ethertype entry for this vpath - * to Ethertype table. - * @vpath_handle: Vpath handle. - * @etype: ethertype to be added for this vpath into the list - * - * Adds the given Ethertype into the list for this vpath. - * see also: vxge_hal_vpath_etype_delete, vxge_hal_vpath_etype_get and - * vxge_hal_vpath_etype_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_etype_add( - vxge_hal_vpath_h vpath_handle, - u64 etype); - -/* - * vxge_hal_vpath_etype_get - Get the first ethertype entry for this vpath - * from Ethertype table. - * @vpath_handle: Vpath handle. - * @etype: Buffer to return Ethertype - * - * Returns the first ethype entry in the list for this vpath. - * see also: vxge_hal_vpath_etype_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_etype_get( - vxge_hal_vpath_h vpath_handle, - u64 *etype); - -/* - * vxge_hal_vpath_etype_get_next - Get the next Ethertype entry for this vpath - * from Ethertype table. - * @vpath_handle: Vpath handle. - * @etype: Buffer to return Ethwrtype - * - * Returns the next Ethwrtype in the list for this vpath. - * see also: vxge_hal_vpath_etype_get - * - */ -vxge_hal_status_e -vxge_hal_vpath_etype_get_next( - vxge_hal_vpath_h vpath_handle, - u64 *etype); - -/* - * vxge_hal_vpath_etype_delete - Delete the Ethertype entry for this vpath - * to Ethertype table. - * @vpath_handle: Vpath handle. - * @etype: ethertype to be added for this vpath into the list - * - * Adds the given Ethertype into the list for this vpath. - * see also: vxge_hal_vpath_etype_add, vxge_hal_vpath_etype_get and - * vxge_hal_vpath_etype_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_etype_delete( - vxge_hal_vpath_h vpath_handle, - u64 etype); - -/* - * vxge_hal_vpath_port_add - Add the port entry for this vpath - * to port number table. - * @vpath_handle: Vpath handle. - * @port_type: if 0 - Src port or 1 - Dest port - * @protocol: if 0 - TCP or 1 - UDP - * @port: port to be added for this vpath into the list - * - * Adds the given port into the list for this vpath. - * see also: vxge_hal_vpath_port_delete, vxge_hal_vpath_port_get and - * vxge_hal_vpath_port_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_port_add( - vxge_hal_vpath_h vpath_handle, - u32 port_type, - u32 protocol, - u32 port); - -/* - * vxge_hal_vpath_port_get - Get the first port number entry for this vpath - * from port number table. - * @vpath_handle: Vpath handle. - * @port_type: Buffer to return if 0 - Src port or 1 - Dest port - * @protocol: Buffer to return if 0 - TCP or 1 - UDP - * @port: Buffer to return port number - * - * Returns the first port number entry in the list for this vpath. - * see also: vxge_hal_vpath_port_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_port_get( - vxge_hal_vpath_h vpath_handle, - u32 *port_type, - u32 *protocol, - u32 *port); - -/* - * vxge_hal_vpath_port_get_next - Get the next port number entry for this vpath - * from port number table. - * @vpath_handle: Vpath handle. - * @port_type: Buffer to return if 0 - Src port or 1 - Dest port - * @protocol: Buffer to return if 0 - TCP or 1 - UDP - * @port: Buffer to return port number - * - * Returns the next port number entry in the list for this vpath. - * see also: vxge_hal_vpath_port_get - * - */ -vxge_hal_status_e -vxge_hal_vpath_port_get_next( - vxge_hal_vpath_h vpath_handle, - u32 *port_type, - u32 *protocol, - u32 *port); - -/* - * vxge_hal_vpath_port_delete - Delete the port entry for this vpath - * to port number table. - * @vpath_handle: Vpath handle. - * @port_type: if 0 - Src port or 1 - Dest port - * @protocol: if 0 - TCP or 1 - UDP - * @port: port to be added for this vpath into the list - * - * Adds the given port into the list for this vpath. - * see also: vxge_hal_vpath_port_add, vxge_hal_vpath_port_get and - * vxge_hal_vpath_port_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_port_delete( - vxge_hal_vpath_h vpath_handle, - u32 port_type, - u32 protocol, - u32 port); - -typedef enum vxge_hal_rth_algoritms_t { - RTH_ALG_NONE = -1, - RTH_ALG_JENKINS = 0, - RTH_ALG_MS_RSS = 1, - RTH_ALG_CRC32C = 2 -} vxge_hal_rth_algoritms_t; - -/* - * struct vxge_hal_rth_hash_types_t - RTH hash types. - * @hash_type_tcpipv4_en: Enables RTH field type HashTypeTcpIPv4 - * @hash_type_ipv4_en: Enables RTH field type HashTypeIPv4 - * @hash_type_tcpipv6_en: Enables RTH field type HashTypeTcpIPv6 - * @hash_type_ipv6_en: Enables RTH field type HashTypeIPv6 - * @hash_type_tcpipv6ex_en: Enables RTH field type HashTypeTcpIPv6Ex - * @hash_type_ipv6ex_en: Enables RTH field type HashTypeIPv6Ex - * - * Used to pass RTH hash types to rts_rts_set. - * - * See also: vxge_hal_vpath_rts_rth_set(), vxge_hal_vpath_rts_rth_get(). - */ -typedef struct vxge_hal_rth_hash_types_t { - u8 hash_type_tcpipv4_en; - u8 hash_type_ipv4_en; - u8 hash_type_tcpipv6_en; - u8 hash_type_ipv6_en; - u8 hash_type_tcpipv6ex_en; - u8 hash_type_ipv6ex_en; -} vxge_hal_rth_hash_types_t; - -/* - * vxge_hal_vpath_udp_rth_disable - Disable UDP/RTH. - * @vpath_handle: Vpath handle. - * - * Disable udp rth - * - */ -vxge_hal_status_e -vxge_hal_vpath_udp_rth_disable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_rts_rth_set - Set/configure RTS hashing. - * @vpath_handle: Virtual Path handle. - * @algorithm: Algorithm Select - * @hash_type: Hash Type - * @bucket_size: no of least significant bits to be used for hashing. - * @it_switch: Itable switch required - * - * Used to set/configure all RTS hashing related stuff. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_itable_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_set( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rth_algoritms_t algorithm, - vxge_hal_rth_hash_types_t *hash_type, - u16 bucket_size, - u16 it_switch); - -/* - * vxge_hal_vpath_rts_rth_get - Read RTS hashing. - * @vpath_handle: Virtual Path handle. - * @algorithm: Buffer to return Algorithm Select - * @hash_type: Buffer to return Hash Type - * @table_select: Buffer to return active Table - * @bucket_size: Buffer to return no of least significant bits used for hashing. - * - * Used to read all RTS hashing related stuff. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_itable_set(), - * vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rth_algoritms_t *algorithm, - vxge_hal_rth_hash_types_t *hash_type, - u8 *table_select, - u16 *bucket_size); - -/* - * vxge_hal_vpath_rts_rth_key_set - Configure 40byte secret for hash calc. - * - * @vpath_handle: Virtual Path ahandle. - * @KeySize: Number of 64-bit words - * @Key: up to 40-byte array of 64-bit values - * This function configures the 40-byte secret which is used for hash - * calculation. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_key_set( - vxge_hal_vpath_h vpath_handle, - u8 KeySize, - u64 *Key); - -/* - * vxge_hal_vpath_rts_rth_key_get - Read 40byte secret for hash calc. - * - * @vpath_handle: Virtual Path ahandle. - * @KeySize: Number of 64-bit words - * @Key: Buffer to return the key - * This function reads the 40-byte secret which is used for hash - * calculation. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(), - * vxge_hal_vpath_rts_rth_key_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_key_get( - vxge_hal_vpath_h vpath_handle, - u8 KeySize, - u64 *Key); - -/* - * vxge_hal_vpath_rts_rth_jhash_cfg_set - Configure JHASH algorithm - * - * @vpath_handle: Virtual Path ahandle. - * @golden_ratio: Golden ratio - * @init_value: Initial value - * This function configures JENKIN's HASH algorithm - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_jhash_cfg_set( - vxge_hal_vpath_h vpath_handle, - u32 golden_ratio, - u32 init_value); - -/* - * vxge_hal_vpath_rts_rth_jhash_cfg_get - Read JHASH algorithm - * - * @vpath_handle: Virtual Path ahandle. - * @golden_ratio: Buffer to return Golden ratio - * @init_value: Buffer to return Initial value - * This function reads JENKIN's HASH algorithm - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(), - * vxge_hal_vpath_rts_rth_jhash_cfg_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_jhash_cfg_get( - vxge_hal_vpath_h vpath_handle, - u32 *golden_ratio, - u32 *init_value); - -/* - * vxge_hal_vpath_rts_rth_mask_set - Set/configure JHASH mask. - * @vpath_handle: Virtual Path ahandle. - * @table_size: Size of the mask table - * @hash_mask_ipv6sa: IPv6SA Hash Mask - * @hash_mask_ipv6da: IPv6DA Hash Mask - * @hash_mask_ipv4sa: IPv4SA Hash Mask - * @hash_mask_ipv4da: IPv4DA Hash Mask - * @hash_mask_l4sp: L4SP Hash Mask - * @hash_mask_l4dp: L4DP Hash Mask - * - * Used to set/configure indirection table masks. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_mask_set( - vxge_hal_vpath_h vpath_handle, - u32 table_size, - u32 *hash_mask_ipv6sa, - u32 *hash_mask_ipv6da, - u32 *hash_mask_ipv4sa, - u32 *hash_mask_ipv4da, - u32 *hash_mask_l4sp, - u32 *hash_mask_l4dp); - -/* - * vxge_hal_vpath_rts_rth_mask_get - Read JHASH mask. - * @vpath_handle: Virtual Path ahandle. - * @table_size: Size of the mask table - * @hash_mask_ipv6sa: Buffer to return IPv6SA Hash Mask - * @hash_mask_ipv6da: Buffer to return IPv6DA Hash Mask - * @hash_mask_ipv4sa: Buffer to return IPv4SA Hash Mask - * @hash_mask_ipv4da: Buffer to return IPv4DA Hash Mask - * @hash_mask_l4sp: Buffer to return L4SP Hash Mask - * @hash_mask_l4dp: Buffer to return L4DP Hash Mask - * - * Used to read rth mask. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(), - * vxge_hal_vpath_rts_rth_mask_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_mask_get( - vxge_hal_vpath_h vpath_handle, - u32 table_size, - u32 *hash_mask_ipv6sa, - u32 *hash_mask_ipv6da, - u32 *hash_mask_ipv4sa, - u32 *hash_mask_ipv4da, - u32 *hash_mask_l4sp, - u32 *hash_mask_l4dp); - -/* - * vxge_hal_vpath_rts_rth_itable_set - Set/configure indirection table (IT). - * @vpath_handles: Virtual Path handles. - * @vpath_count: Number of vpath handles passed in vpath_handles - * @itable: Pointer to indirection table - * @itable_size: Number of entries in itable - * - * Used to set/configure indirection table. - * It enables the required no of entries in the IT. - * It adds entries to the IT. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_itable_set( - vxge_hal_vpath_h *vpath_handles, - u32 vpath_count, - u8 *itable, - u32 itable_size); - -/* - * vxge_hal_vpath_rts_rth_itable_get - Read indirection table (IT). - * @vpath_handles: Virtual Path handles. - * @vpath_count: Number of vpath handles passed in vpath_handles - * @itable: Pointer to the buffer to return indirection table - * @itable_size: pointer to buffer to return Number of entries in itable - * - * Used to read indirection table. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(), - * vxge_hal_vpath_rts_rth_itable_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_itable_get( - vxge_hal_vpath_h *vpath_handles, - u32 vpath_count, - u8 *itable, - u32 itable_size); - -/* - * vxge_hal_vpath_rts_rth_clr - Clear RTS hashing. - * @vpath_handles: Virtual Path handles. - * @vpath_count: Number of vpath handles passed in vpath_handles - * - * This function is used to clear all RTS hashing related stuff. - * - * See also: vxge_hal_vpath_rts_rth_set(), vxge_hal_vpath_rts_rth_itable_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_clr( - vxge_hal_vpath_h *vpath_handles, - u32 vpath_count); - -/* - * vxge_hal_vpath_promisc_enable - Enable promiscuous mode. - * @vpath_handle: Vpath handle. - * - * Enable promiscuous mode of X3100 operation. - * - * See also: vxge_hal_vpath_promisc_disable(). - */ -vxge_hal_status_e -vxge_hal_vpath_promisc_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_promisc_disable - Disable promiscuous mode. - * @vpath_handle: Vpath handle. - * - * Disable promiscuous mode of X3100 operation. - * - * See also: vxge_hal_vpath_promisc_enable(). - */ -vxge_hal_status_e -vxge_hal_vpath_promisc_disable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_bcast_enable - Enable broadcast - * @vpath_handle: Vpath handle. - * - * Enable receiving broadcasts. - */ -vxge_hal_status_e -vxge_hal_vpath_bcast_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_bcast_disable - Disable broadcast - * @vpath_handle: Vpath handle. - * - * Disable receiving broadcasts. - */ -vxge_hal_status_e -vxge_hal_vpath_bcast_disable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_mcast_enable - Enable multicast addresses. - * @vpath_handle: Vpath handle. - * - * Enable X3100 multicast addresses. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_mcast_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_mcast_disable - Disable multicast addresses. - * @vpath_handle: Vpath handle. - * - * Disable X3100 multicast addresses. - * Returns: VXGE_HAL_OK - success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_mcast_disable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_ucast_enable - Enable unicast addresses. - * @vpath_handle: Vpath handle. - * - * Enable X3100 unicast addresses. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_ucast_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_ucast_disable - Disable unicast addresses. - * @vpath_handle: Vpath handle. - * - * Disable X3100 unicast addresses. - * Returns: VXGE_HAL_OK - success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_ucast_disable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_all_vid_enable - Enable all Vlan Ids. - * @vpath_handle: Vpath handle. - * - * Enable X3100 vlan ids. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_all_vid_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_all_vid_disable - Disable all Vlan Ids. - * @vpath_handle: Vpath handle. - * - * Disable X3100 vlan ids. - * Returns: VXGE_HAL_OK - success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_all_vid_disable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_strip_vlan_tag_enable - Enable strip vlan tag. - * @vpath_handle: Vpath handle. - * - * Enable X3100 strip vlan tag. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_strip_vlan_tag_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_strip_vlan_tag_disable - Disable strip vlan tag. - * @vpath_handle: Vpath handle. - * - * Disable X3100 strip vlan tag. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_strip_vlan_tag_disable( - vxge_hal_vpath_h vpath_handle); - -void -vxge_hal_vpath_dynamic_tti_rtimer_set(vxge_hal_vpath_h vpath_handle, - u32 timer_val); - -void -vxge_hal_vpath_dynamic_rti_rtimer_set(vxge_hal_vpath_h vpath_handle, - u32 timer_val); - -void -vxge_hal_vpath_tti_ci_set(vxge_hal_vpath_h vpath_handle); - -void -vxge_hal_vpath_tti_ci_reset(vxge_hal_vpath_h vpath_handle); - -void -vxge_hal_vpath_rti_ci_set(vxge_hal_vpath_h vpath_handle); - -void -vxge_hal_vpath_rti_ci_reset(vxge_hal_vpath_h vpath_handle); - -/* - * struct vxge_hal_vpath_tpa_params - Vpath TPA Parameters. - * @tpa_lsov2_en: LSOv2 Behaviour for IP ID roll-over - * 1 - enable, 0 - disable, - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @tpa_ignore_frame_error: Ignore Frame Error. TPA may detect frame integrity - * errors as it processes each frame. If this bit is set to '0', - * the TPA will tag such frames as invalid and they will be dropped - * by the transmit MAC. If the bit is set to '1',the frame will not - * be tagged as "errored". Detectable errors include: - * 1) early end-of-frame error, which occurs when the frame ends - * before the number of bytes predicted by the IP "total length" - * field have been received; - * 2) IP version mismatches; - * 3) IPv6 packets that include routing headers that are not type 0 - * 4) Frames which contain IP packets but have an illegal SNAP-OUI - * or LLC-CTRL fields, unless IGNORE_SNAP_OUI or IGNORE_LLC_CTRL - * are set (see below). - * setting the value of this field to VXGE_HAL_DEFAULT_32 - don't - * change current setting - * @tpa_ipv6_keep_searching: If unknown IPv6 header is found, - * 0 - stop searching for TCP - * 1 - keep searching for TCP - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @tpa_l4_pshdr_present: If asserted true, indicates the host has provided a - * valid pseudo header for TCP or UDP running over IPv4 or IPv6 - * if set to VXGE_HAL_DEFAULT_32 - don't change current setting - * @tpa_support_mobile_ipv6_hdrs: This register is somewhat equivalent to - * asserting both Hercules register fields LSO_RT2_EN and - * LSO_IPV6_HAO_EN. Enable/disable support for Type 2 Routing - * Headers, and for Mobile-IPv6 Home Address Option (HAO), as - * defined by mobile-ipv6. if set to VXGE_HAL_DEFAULT_32 - - * don't change current setting - * - * See also: vxge_hal_vpath_tpa_set() - */ -typedef struct vxge_hal_vpath_tpa_params { - u32 tpa_lsov2_en; - u32 tpa_ignore_frame_error; - u32 tpa_ipv6_keep_searching; - u32 tpa_l4_pshdr_present; - u32 tpa_support_mobile_ipv6_hdrs; -} vxge_hal_vpath_tpa_params; - -/* - * vxge_hal_vpath_tpa_set - Set tpa parameters. - * @vpath_handle: Virtual Path ahandle. - * @params: vxge_hal_vpath_tpa_params {} structure with parameters - * - * The function sets the tpa parametrs for the vpath. - * - * See also: vxge_hal_vpath_tpa_params {} - */ -vxge_hal_status_e -vxge_hal_vpath_tpa_set( - vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_tpa_params *params); - -/* - * struct vxge_hal_vpath_rpa_params - Vpath RPA Parameters. - * - * @rpa_ipv4_tcp_incl_ph: Determines if the pseudo-header is included in the - * calculation of the L4 checksum that is passed to the host. This - * field applies to TCP/IPv4 packets only. This field affects both - * non-offload and LRO traffic. Note that the RPA always includes - * the pseudo-header in the "Checksum Ok" L4 checksum calculation - * i.e. the checksum that decides whether a frame is a candidate to - * be offloaded. - * 0 - Do not include the pseudo-header in L4 checksum calculation. - * This setting should be used if the adapter is incorrectly - * calculating the pseudo-header. - * 1 - Include the pseudo-header in L4 checksum calculation - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_ipv6_tcp_incl_ph: Determines whether the pseudo-header is included in - * the calculation of the L4 checksum that is passed to the host. - * This field applies to TCP/IPv6 packets only. This field affects - * both non-offload and LRO traffic. Note that the RPA always - * includes the pseudo-header in the "Checksum Ok" L4 checksum - * calculation. i.e. the checksum that decides whether a frame - * is a candidate to be offloaded. - * 0 - Do not include the pseudo-header in L4 checksum calculation. - * This setting should be used if the adapter is incorrectly - * calculating the pseudo-header. - * 1 - Include the pseudo-header in L4 checksum calculation - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_ipv4_udp_incl_ph: Determines whether the pseudo-header is included in - * the calculation of the L4 checksum that is passed to the host. - * This field applies to UDP/IPv4 packets only. It only affects - * non-offload traffic(since UDP frames are not candidates for LRO) - * 0 - Do not include the pseudo-header in L4 checksum calculation. - * This setting should be used if the adapter is incorrectly - * calculating the pseudo-header. - * 1 - Include the pseudo-header in L4 checksum calculation - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_ipv6_udp_incl_ph: Determines if the pseudo-header is included in the - * calculation of the L4 checksum that is passed to the host. This - * field applies to UDP/IPv6 packets only. It only affects - * non-offload traffic(since UDP frames are not candidates for LRO) - * 0 - Do not include the pseudo-header in L4 checksum calculation. - * This setting should be used if the adapter is incorrectly - * calculating the pseudo-header. - * 1 - Include the pseudo-header in L4 checksum calculation - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_l4_incl_cf: Determines whether the checksum field (CF) of the received - * frame is included in the calculation of the L4 checksum that is - * passed to the host. This field affects both non-offload and LRO - * traffic. Note that the RPA always includes the checksum field in - * the "Checksum Ok" L4 checksum calculation -- i.e. the checksum - * that decides whether a frame is a candidate to be offloaded. - * 0 - Do not include the checksum field in L4 checksum calculation - * 1 - Include the checksum field in L4 checksum calculation - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_strip_vlan_tag: Strip VLAN Tag enable/disable. Instructs the device to - * remove the VLAN tag from all received tagged frames that are not - * replicated at the internal L2 switch. - * 0 - Do not strip the VLAN tag. - * 1 - Strip the VLAN tag. Regardless of this setting,VLAN tags are - * always placed into the RxDMA descriptor. - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_l4_comp_csum: Determines whether the calculated L4 checksum should be - * complemented before it is passed to the host This field affects - * both non-offload and LRO traffic. - * 0 - Do not complement the calculated L4 checksum. - * 1 - Complement the calculated L4 checksum - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_l3_incl_cf: Determines whether the checksum field (CF) of the received - * frame is included in the calculation of the L3 checksum that is - * passed to the host. This field affects both non-offload and LRO - * traffic. Note that the RPA always includes the checksum field in - * the "Checksum Ok" L3 checksum calculation -- i.e. the checksum - * that decides whether a frame is a candidate to be offloaded. - * 0 - Do not include the checksum field in L3 checksum calculation - * 1 - Include the checksum field in L3 checksum calculation - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_l3_comp_csum: Determines whether the calculated L3 checksum should be - * complemented before it is passed to the host This field affects - * both non-offload and LRO traffic. - * 0 - Do not complement the calculated L3 checksum. - * 1 - Complement the calculated L3 checksum - * VXGE_HAL_DEFAULT_32 - don't change current setting - * @rpa_ucast_all_addr_en: Enables frames with any unicast address (as its - * destination address) to be passed to the host. - * Setting this field to VXGE_HAL_DEFAULT_32 - don't change current - * setting - * @rpa_mcast_all_addr_en: Enables frames with any multicast address (as its - * destination address) to be passed to the host. - * Setting this field to VXGE_HAL_DEFAULT_32 - don't change current - * setting - * @rpa_bcast_en: Enables frames with any broadicast address (as its - * destination address) to be passed to the host. - * Setting this field to VXGE_HAL_DEFAULT_32 - don't change current - * setting - * @rpa_all_vid_en: romiscuous mode, it overrides the value held in this field. - * 0 - Disable; - * 1 - Enable - * VXGE_HAL_DEFAULT_32 - don't change current setting - * Note: RXMAC_GLOBAL_CFG.AUTHORIZE_VP_ALL_VID must be set to - * allow this. - * - * See also: vxge_hal_vpath_rpa_set() - */ -typedef struct vxge_hal_vpath_rpa_params { - u32 rpa_ipv4_tcp_incl_ph; - u32 rpa_ipv6_tcp_incl_ph; - u32 rpa_ipv4_udp_incl_ph; - u32 rpa_ipv6_udp_incl_ph; - u32 rpa_l4_incl_cf; - u32 rpa_strip_vlan_tag; - u32 rpa_l4_comp_csum; - u32 rpa_l3_incl_cf; - u32 rpa_l3_comp_csum; - u32 rpa_ucast_all_addr_en; - u32 rpa_mcast_all_addr_en; - u32 rpa_bcast_en; - u32 rpa_all_vid_en; -} vxge_hal_vpath_rpa_params; - -/* - * vxge_hal_vpath_rpa_set - Set rpa parameters. - * @vpath_handle: Virtual Path ahandle. - * @params: vxge_hal_vpath_rpa_params {} structure with parameters - * - * The function sets the rpa parametrs for the vpath. - * - * See also: vxge_hal_vpath_rpa_params {} - */ -vxge_hal_status_e -vxge_hal_vpath_rpa_set( - vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_rpa_params *params); - -/* - * vxge_hal_vpath_poll_rx - Poll Rx od Virtual Path for completed - * descriptors and process the same. - * @vpath_handle: Virtual Path ahandle. - * @got_rx: Buffer to return the flag set if receive interrupt is occurred - * - * The function polls the Rx for the completed descriptors and calls - * the upper-layer driver (ULD) via supplied completion callback. - * - * Returns: VXGE_HAL_OK, if the polling is completed successful. - * VXGE_HAL_COMPLETIONS_REMAIN: There are still more completed - * descriptors available which are yet to be processed. - * - * See also: vxge_hal_vpath_poll_tx() - */ -vxge_hal_status_e -vxge_hal_vpath_poll_rx( - vxge_hal_vpath_h vpath_handle, - u32 *got_rx); - -/* - * vxge_hal_vpath_poll_tx - Poll Tx for completed descriptors and process - * the same. - * @vpath_handle: Virtual Path ahandle. - * @got_tx: Buffer to return the flag set if transmit interrupt is occurred - * - * The function polls the Tx for the completed descriptors and calls - * the upper-layer driver (ULD) via supplied completion callback. - * - * Returns: VXGE_HAL_OK, if the polling is completed successful. - * VXGE_HAL_COMPLETIONS_REMAIN: There are still more completed - * descriptors available which are yet to be processed. - * - * See also: vxge_hal_vpath_poll_rx(). - */ -vxge_hal_status_e -vxge_hal_vpath_poll_tx( - vxge_hal_vpath_h vpath_handle, - u32 *got_tx); - - -/* - * vxge_hal_vpath_intr_enable - Enable vpath interrupts. - * @vpath_handle: Virtual Path handle. - * @op: One of the vxge_hal_vpath_intr_e enumerated values specifying - * the type(s) of interrupts to enable. - * - * Enable vpath interrupts. The function is to be executed the last in - * vpath initialization sequence. - * - * See also: vxge_hal_vpath_intr_disable() - */ -vxge_hal_status_e -vxge_hal_vpath_intr_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_intr_disable - Disable vpath interrupts. - * @vpath_handle: Virtual Path handle. - * @op: One of the vxge_hal_vpath_intr_e enumerated values specifying - * the type(s) of interrupts to disable. - * - * Disable vpath interrupts. - * - * See also: vxge_hal_vpath_intr_enable() - */ -vxge_hal_status_e -vxge_hal_vpath_intr_disable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_mask_all - Mask all vpath interrupts. - * @vpath_handle: Virtual Path handle. - * - * Mask all vpath interrupts. - * - * See also: vxge_hal_vpath_unmask_all() - */ -void -vxge_hal_vpath_mask_all( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_unmask_all - Unmask all vpath interrupts. - * @vpath_handle: Virtual Path handle. - * - * Unmask all vpath interrupts. - * - * See also: vxge_hal_vpath_mask_all() - */ -void -vxge_hal_vpath_unmask_all( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_begin_irq - Begin IRQ processing. - * @vpath_handle: Virtual Path handle. - * @skip_alarms: Do not clear the alarms - * @reason: "Reason" for the interrupt, the value of vpath's - * general_int_status register. - * - * The function performs two actions, It first checks whether (shared IRQ) the - * interrupt was raised by the device. Next, it masks the device interrupts. - * - * Note: - * vxge_hal_vpath_begin_irq() does not flush MMIO writes through the - * bridge. Therefore, two back-to-back interrupts are potentially possible. - * It is the responsibility of the ULD to make sure that only one - * vxge_hal_vpath_continue_irq() runs at a time. - * - * Returns: 0, if the interrupt is not "ours" (note that in this case the - * vpath remain enabled). - * Otherwise, vxge_hal_vpath_begin_irq() returns 64bit general adapter - * status. - * See also: vxge_hal_vpath_handle_irq() - */ -vxge_hal_status_e -vxge_hal_vpath_begin_irq( - vxge_hal_vpath_h vpath_handle, - u32 skip_alarms, - u64 *reason); - -/* - * vxge_hal_vpath_continue_irq - Continue handling IRQ: process all - * completed descriptors. - * @vpath_handle: Virtual Path handle. - * - * Process completed descriptors and unmask the vpath interrupts. - * - * The vxge_hal_vpath_continue_irq() calls upper-layer driver (ULD) - * via supplied completion callback. - * - * Note that the vxge_hal_vpath_continue_irq is part of the _fast_ path. - * To optimize the processing, the function does _not_ check for - * errors and alarms. - * - * Returns: VXGE_HAL_OK. - * - * See also: vxge_hal_vpath_handle_irq(), - * vxge_hal_ring_rxd_next_completed(), - * vxge_hal_fifo_txdl_next_completed(), vxge_hal_ring_callback_f {}, - * vxge_hal_fifo_callback_f {}. - */ -vxge_hal_status_e -vxge_hal_vpath_continue_irq( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpathe_handle_irq - Handle vpath IRQ. - * @vpath_handle: Virtual Path handle. - * @skip_alarms: Do not clear the alarms - * - * Perform the complete handling of the line interrupt. The function - * performs two calls. - * First it uses vxge_hal_vpath_begin_irq() to check the reason for - * the interrupt and mask the vpath interrupts. - * Second, it calls vxge_hal_vpath_continue_irq() to process all - * completed descriptors and re-enable the interrupts. - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_ERR_WRONG_IRQ - (shared) IRQ produced by other device. - * - * See also: vxge_hal_vpath_begin_irq(), vxge_hal_vpath_continue_irq(). - */ -vxge_hal_status_e -vxge_hal_vpath_handle_irq( - vxge_hal_vpath_h vpath_handle, - u32 skip_alarms); - -/* - * vxge_hal_vpath_mask_tx - Mask Tx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Mask Tx device interrupts. - * - * See also: vxge_hal_vpath_unmask_tx(), vxge_hal_vpath_mask_rx(), - * vxge_hal_vpath_clear_tx(). - */ -void -vxge_hal_vpath_mask_tx( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_clear_tx - Acknowledge (that is, clear) the - * condition that has caused the TX interrupt. - * @vpath_handle: Virtual Path handle. - * - * Acknowledge (that is, clear) the condition that has caused - * the Tx interrupt. - * See also: vxge_hal_vpath_begin_irq(), vxge_hal_vpath_continue_irq(), - * vxge_hal_vpath_clear_rx(), vxge_hal_vpath_mask_tx(). - */ -void -vxge_hal_vpath_clear_tx( - vxge_hal_vpath_h vpath_handle); - - -/* - * vxge_hal_vpath_unmask_tx - Unmask Tx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Unmask Tx vpath interrupts. - * - * See also: vxge_hal_vpath_mask_tx(), vxge_hal_vpath_clear_tx(). - */ -void -vxge_hal_vpath_unmask_tx( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_mask_rx - Mask Rx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Mask Rx vpath interrupts. - * - * See also: vxge_hal_vpath_unmask_rx(), vxge_hal_vpath_mask_tx(), - * vxge_hal_vpath_clear_rx(). - */ -void -vxge_hal_vpath_mask_rx( - vxge_hal_vpath_h vpath_handle); - - -/* - * vxge_hal_vpath_clear_rx - Acknowledge (that is, clear) the - * condition that has caused the RX interrupt. - * @vpath_handle: Virtual Path handle. - * - * Acknowledge (that is, clear) the condition that has caused - * the Rx interrupt. - * See also: vxge_hal_vpath_begin_irq(), vxge_hal_vpath_continue_irq(), - * vxge_hal_vpath_clear_tx(), vxge_hal_vpath_mask_rx(). - */ -void -vxge_hal_vpath_clear_rx( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_unmask_rx - Unmask Rx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Unmask Rx vpath interrupts. - * - * See also: vxge_hal_vpath_mask_rx(), vxge_hal_vpath_clear_rx(). - */ -void -vxge_hal_vpath_unmask_rx( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_mask_tx_rx - Mask Tx and Rx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Mask Tx and Rx vpath interrupts. - * - * See also: vxge_hal_vpath_unmask_tx_rx(), vxge_hal_vpath_clear_tx_rx(). - */ -void -vxge_hal_vpath_mask_tx_rx( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_clear_tx_rx - Acknowledge (that is, clear) the - * condition that has caused the Tx and RX interrupt. - * @vpath_handle: Virtual Path handle. - * - * Acknowledge (that is, clear) the condition that has caused - * the Tx and Rx interrupt. - * See also: vxge_hal_vpath_begin_irq(), vxge_hal_vpath_continue_irq(), - * vxge_hal_vpath_clear_tx_rx(), vxge_hal_vpath_mask_tx_rx(). - */ -void -vxge_hal_vpath_clear_tx_rx( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_unmask_tx_rx - Unmask Tx and Rx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Unmask Tx and Rx vpath interrupts. - * - * See also: vxge_hal_vpath_mask_tx_rx(), vxge_hal_vpath_clear_tx_rx(). - */ -void -vxge_hal_vpath_unmask_tx_rx( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_alarm_process - Process Alarms. - * @vpath: Virtual Path. - * @skip_alarms: Do not clear the alarms - * - * Process vpath alarms. - * - */ -vxge_hal_status_e -vxge_hal_vpath_alarm_process( - vxge_hal_vpath_h vpath_handle, - u32 skip_alarms); - -/* NEWCODE */ - -vxge_hal_status_e -vxge_hal_vpath_mf_msix_set(vxge_hal_vpath_h vpath_handle, - int *tim_msix_id, int alarm_msix_id); -void -vxge_hal_vpath_mf_msix_clear(vxge_hal_vpath_h vpath_handle, int msix_id); -void -vxge_hal_vpath_mf_msix_mask(vxge_hal_vpath_h vpath_handle, int msix_id); -void -vxge_hal_vpath_mf_msix_unmask(vxge_hal_vpath_h vpath_handle, int msix_id); - -/* NEWCODE */ - -/* - * vxge_hal_vpath_msix_mode - Is MSIX enabled? - * @vpath_handle: Virtual Path handle. - * - * Returns 0 if MSI is enabled for the specified device, - * non-zero otherwise. - */ -u32 -vxge_hal_vpath_msix_mode(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_msix_set - Associate MSIX vectors with TIM interrupts and - * alrms - * @vpath_handle: Virtual Path handle. - * @tim_msix_id: MSIX vectors associated with VXGE_HAL_VPATH_MSIX_MAX number of - * interrupts(Valid numbers 0 to 3). - * @alarm_msix_id: MSIX vector for alarm (Valid numbers 0 to 3). - * - * This API will associate a given MSIX vector numbers with the four TIM - * interrupts and alarm interrupt. - */ -vxge_hal_status_e -vxge_hal_vpath_msix_set(vxge_hal_vpath_h vpath_handle, - int *tim_msix_id, - int alarm_msix_id); - -/* - * vxge_hal_vpath_msix_mask - Mask MSIX Vector. - * @vpath_handle: Virtual Path handle. - * @msix_id: MSIX ID - * - * The function masks the msix interrupt for the given msix_id - * - * Note: - * - * Returns: 0, - * Otherwise, VXGE_HAL_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_msix_mask(vxge_hal_vpath_h vpath_handle, int msix_id); - -/* - * vxge_hal_vpath_msix_clear - Clear MSIX Vector. - * @vpath_handle: Virtual Path handle. - * @msix_id: MSI ID - * - * The function clears the msix interrupt for the given msix_id - * - * Note: - * - * Returns: 0, - * Otherwise, VXGE_HAL_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_msix_clear(vxge_hal_vpath_h vpath_handle, int msix_id); - -/* - * vxge_hal_vpath_msix_unmask - Unmask MSIX Vector. - * @vpath_handle: Virtual Path handle. - * @msix_id: MSI ID - * - * The function unmasks the msix interrupt for the given msix_id - * - * Note: - * - * Returns: 0, - * Otherwise, VXGE_HAL_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_msix_unmask(vxge_hal_vpath_h vpath_handle, int msix_id); - -/* - * vxge_hal_vpath_msix_mask_all - Mask all MSIX vectors for the vpath. - * @vpath_handle: Virtual Path handle. - * - * The function masks the msix interrupt for the given vpath - * - */ -void -vxge_hal_vpath_msix_mask_all(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_msix_unmask_all - Unmask all MSIX vectors for the vpath. - * @vpath_handle: Virtual Path handle. - * - * The function unmasks the msix interrupt for the given vpath - * - */ -void -vxge_hal_vpath_msix_unmask_all(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_is_rxdmem_leak - Check for the rxd memory leak. - * @vpath_handle: Virtual Path handle. - * - * The function checks for the rxd memory leak. - * - */ -u32 -vxge_hal_vpath_is_rxdmem_leak(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_rldram_test - offline test for access to the RldRam chip on - * the NIC - * @devh: HAL device handle. - * @data: variable that returns the result of each of the test - * conducted by the driver. - * - * This is one of the offline test that tests the read and write - * access to the RldRam chip on the NIC. - * Return value: - * 0 on success. - */ -vxge_hal_status_e -vxge_hal_rldram_test( - vxge_hal_device_h devh, - u64 *data); - -/* - * vxge_hal_check_alignment - Check buffer alignment and calculate the - * "misaligned" portion. - * @dma_pointer: DMA address of the buffer. - * @size: Buffer size, in bytes. - * @alignment: Alignment "granularity" (see below), in bytes. - * @copy_size: Maximum number of bytes to "extract" from the buffer - * (in order to spost it as a separate scatter-gather entry). See below. - * - * Check buffer alignment and calculate "misaligned" portion, if exists. - * The buffer is considered aligned if its address is multiple of - * the specified @alignment. If this is the case, - * vxge_hal_check_alignment() returns zero. - * Otherwise, vxge_hal_check_alignment() uses the last argument, - * @copy_size, - * to calculate the size to "extract" from the buffer. The @copy_size - * may or may not be equal @alignment. The difference between these two - * arguments is that the @alignment is used to make the decision: aligned - * or not aligned. While the @copy_size is used to calculate the portion - * of the buffer to "extract", i.e. to post as a separate entry in the - * transmit descriptor. For example, the combination - * @alignment=8 and @copy_size=64 will work okay on AMD Opteron boxes. - * - * Note: @copy_size should be a multiple of @alignment. In many practical - * cases @copy_size and @alignment will probably be equal. - * - * See also: vxge_hal_fifo_txdl_buffer_set_aligned(). - */ -u32 -vxge_hal_check_alignment( - dma_addr_t dma_pointer, - u32 size, - u32 alignment, - u32 copy_size); - - -void -vxge_hw_vpath_set_zero_rx_frm_len(vxge_hal_device_h devh, u32 vp_id); - -void -vxge_hw_vpath_wait_receive_idle(vxge_hal_device_h devh, u32 vp_id, - u32 *count, u32 *total_count); - -#define VXGE_HW_MIN_SUCCESSIVE_IDLE_COUNT 5 -#define VXGE_HW_MAX_POLLING_COUNT 160 - - -__EXTERN_END_DECLS - -#include - -#endif /* VXGE_HAL_LL_H */ Index: sys/dev/vxge/include/vxgehal-mgmt.h =================================================================== --- sys/dev/vxge/include/vxgehal-mgmt.h +++ sys/dev/vxge/include/vxgehal-mgmt.h @@ -1,690 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_MGMT_H -#define VXGE_HAL_MGMT_H - -__EXTERN_BEGIN_DECLS - -/* - * struct vxge_hal_mgmt_about_info_t - About info. - * @vendor: PCI Vendor ID. - * @device: PCI Device ID. - * @subsys_vendor: PCI Subsystem Vendor ID. - * @subsys_device: PCI Subsystem Device ID. - * @board_rev: PCI Board revision, e.g. 3 - for Xena 3. - * @vendor_name: Exar Corp. - * @chip_name: X3100. - * @media: Fiber, copper. - * @hal_major: HAL major version number. - * @hal_minor: HAL minor version number. - * @hal_fix: HAL fix number. - * @hal_build: HAL build number. - * @ll_major: Link-layer ULD major version number. - * @ll_minor: Link-layer ULD minor version number. - * @ll_fix: Link-layer ULD fix version number. - * @ll_build: Link-layer ULD build number. - */ -typedef struct vxge_hal_mgmt_about_info_t { - u16 vendor; - u16 device; - u16 subsys_vendor; - u16 subsys_device; - u8 board_rev; - char vendor_name[16]; - char chip_name[16]; - char media[16]; - char hal_major[4]; - char hal_minor[4]; - char hal_fix[4]; - char hal_build[16]; - char ll_major[4]; - char ll_minor[4]; - char ll_fix[4]; - char ll_build[16]; -} vxge_hal_mgmt_about_info_t; - - -/* - * vxge_hal_mgmt_about - Retrieve about info. - * @devh: HAL device handle. - * @about_info: Filled in by HAL. See vxge_hal_mgmt_about_info_t {}. - * @size: Pointer to buffer containing the Size of the @buffer_info. - * HAL will return an error if the size is smaller than - * sizeof(vxge_hal_mgmt_about_info_t) and returns required size in this field - * - * Retrieve information such as PCI device and vendor IDs, board - * revision number, HAL version number, etc. - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * VXGE_HAL_FAIL - Failed to retrieve the information. - * - * See also: vxge_hal_mgmt_about_info_t {}. - */ -vxge_hal_status_e -vxge_hal_mgmt_about(vxge_hal_device_h devh, - vxge_hal_mgmt_about_info_t *about_info, - u32 *size); - -/* - * vxge_hal_mgmt_pci_config - Retrieve PCI configuration. - * @devh: HAL device handle. - * @buffer: Buffer for PCI configuration space. - * @size: Pointer to buffer containing the Size of the @buffer. - * HAL will return an error if the size is smaller than - * sizeof(vxge_hal_pci_config_t) and returns required size in this field - * - * Get PCI configuration. Permits to retrieve at run-time configuration - * values that were used to configure the device at load-time. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * - */ -vxge_hal_status_e -vxge_hal_mgmt_pci_config(vxge_hal_device_h devh, u8 *buffer, u32 *size); - -/* - * struct vxge_hal_mgmt_pm_cap_t - Power Management Capabilities - * @pm_cap_ver: Version - * @pm_cap_pme_clock: PME clock required - * @pm_cap_aux_power: Auxiliary power support - * @pm_cap_dsi: Device specific initialization - * @pm_cap_aux_current: auxiliary current requirements - * @pm_cap_cap_d0: D1 power state support - * @pm_cap_cap_d1: D2 power state support - * @pm_cap_pme_d0: PME# can be asserted from D3hot - * @pm_cap_pme_d1: PME# can be asserted from D3hot - * @pm_cap_pme_d2: PME# can be asserted from D3hot - * @pm_cap_pme_d3_hot: PME# can be asserted from D3hot - * @pm_cap_pme_d3_cold: PME# can be asserted from D3cold - * @pm_ctrl_state: Current power state (D0 to D3) - * @pm_ctrl_no_soft_reset: Devices transitioning from D3hot to D0 - * @pm_ctrl_pme_enable: PME pin enable - * @pm_ctrl_pme_data_sel: Data select - * @pm_ctrl_pme_data_scale: Data scale - * @pm_ctrl_pme_status: PME pin status - * @pm_ppb_ext_b2_b3: Stop clock when in D3hot - * @pm_ppb_ext_ecc_en: Bus power/clock control enable - * @pm_data_reg: state dependent data requested by pm_ctrl_pme_data_sel - * - * Power Management Capabilities structure - */ -typedef struct vxge_hal_mgmt_pm_cap_t { - u32 pm_cap_ver; - u32 pm_cap_pme_clock; - u32 pm_cap_aux_power; - u32 pm_cap_dsi; - u32 pm_cap_aux_current; - u32 pm_cap_cap_d0; - u32 pm_cap_cap_d1; - u32 pm_cap_pme_d0; - u32 pm_cap_pme_d1; - u32 pm_cap_pme_d2; - u32 pm_cap_pme_d3_hot; - u32 pm_cap_pme_d3_cold; - u32 pm_ctrl_state; - u32 pm_ctrl_no_soft_reset; - u32 pm_ctrl_pme_enable; - u32 pm_ctrl_pme_data_sel; - u32 pm_ctrl_pme_data_scale; - u32 pm_ctrl_pme_status; - u32 pm_ppb_ext_b2_b3; - u32 pm_ppb_ext_ecc_en; - u32 pm_data_reg; -} vxge_hal_mgmt_pm_cap_t; - -/* - * vxge_hal_mgmt_pm_capabilities_get - Returns the pm capabilities - * @devh: HAL device handle. - * @pm_cap: Power Management Capabilities - * - * Return the pm capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_pm_capabilities_get(vxge_hal_device_h devh, - vxge_hal_mgmt_pm_cap_t *pm_cap); - -/* - * struct vxge_hal_mgmt_sid_cap_t - Slot ID Capabilities - * @sid_number_of_slots: Number of solts - * @sid_first_in_chasis: First in chasis flag - * @sid_chasis_number: Chasis Number - * - * Slot ID Capabilities structure - */ -typedef struct vxge_hal_mgmt_sid_cap_t { - u32 sid_number_of_slots; - u32 sid_first_in_chasis; - u32 sid_chasis_number; -} vxge_hal_mgmt_sid_cap_t; - -/* - * vxge_hal_mgmt_sid_capabilities_get - Returns the sid capabilities - * @devh: HAL device handle. - * @sid_cap: Slot Id Capabilities - * - * Return the pm capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_sid_capabilities_get(vxge_hal_device_h devh, - vxge_hal_mgmt_sid_cap_t *sid_cap); - -/* - * struct vxge_hal_mgmt_msi_cap_t - MSI Capabilities - * @enable: 1 - MSI enabled, 0 - MSI not enabled - * @is_pvm_capable: 1 - PVM capable, 0 - Not PVM Capable (valid for get only) - * @is_64bit_addr_capable: 1 - 64 bit address capable, 0 - 32 bit address only - * (valid for get only) - * @vectors_allocated: Number of vectors allocated - * 000-1 vectors - * 001-2 vectors - * 010-4 vectors - * 011-8 vectors - * 100-16 vectors - * 101-32 vectors - * @max_vectors_capable: Maximum number of vectors that can be allocated - * (valid for get only) - * 000-1 vectors - * 001-2 vectors - * 010-4 vectors - * 011-8 vectors - * 100-16 vectors - * 101-32 vectors - * @address: MSI address - * @data: MSI Data - * @mask_bits: For each Mask bit that is set, the function is prohibited from - * sending the associated message - * @pending_bits: For each Pending bit that is set, the function has a - * pending associated message. - * - * MSI Capabilities structure - */ -typedef struct vxge_hal_mgmt_msi_cap_t { - u32 enable; - u32 is_pvm_capable; - u32 is_64bit_addr_capable; - u32 vectors_allocated; - u32 max_vectors_capable; -#define VXGE_HAL_MGMT_MSI_CAP_VECTORS_1 0 -#define VXGE_HAL_MGMT_MSI_CAP_VECTORS_2 1 -#define VXGE_HAL_MGMT_MSI_CAP_VECTORS_4 2 -#define VXGE_HAL_MGMT_MSI_CAP_VECTORS_8 3 -#define VXGE_HAL_MGMT_MSI_CAP_VECTORS_16 4 -#define VXGE_HAL_MGMT_MSI_CAP_VECTORS_32 5 - u64 address; - u16 data; - u32 mask_bits; - u32 pending_bits; -} vxge_hal_mgmt_msi_cap_t; - -/* - * vxge_hal_mgmt_msi_capabilities_get - Returns the msi capabilities - * @devh: HAL device handle. - * @msi_cap: MSI Capabilities - * - * Return the msi capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_msi_capabilities_get(vxge_hal_device_h devh, - vxge_hal_mgmt_msi_cap_t *msi_cap); - -/* - * vxge_hal_mgmt_msi_capabilities_set - Sets the msi capabilities - * @devh: HAL device handle. - * @msi_cap: MSI Capabilities - * - * Sets the msi capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_msi_capabilities_set(vxge_hal_device_h devh, - vxge_hal_mgmt_msi_cap_t *msi_cap); - -/* - * struct vxge_hal_mgmt_msix_cap_t - MSIX Capabilities - * @enable: 1 - MSIX enabled, 0 - MSIX not enabled - * @mask_all_vect: 1 - Mask all vectors, 0 - Do not mask all vectors - * @table_size: MSIX Table Size-1 - * @table_offset: Offset of the table from the table_bir - * @table_bir: Table Bar address register number 0-BAR0, 2-BAR1, 4-BAR2 - * @pba_offset: Offset of the PBA from the pba_bir - * @pba_bir: PBA Bar address register number 0-BAR0, 2-BAR1, 4-BAR2 - * - * MSIS Capabilities structure - */ -typedef struct vxge_hal_mgmt_msix_cap_t { - u32 enable; - u32 mask_all_vect; - u32 table_size; - u32 table_offset; - u32 table_bir; -#define VXGE_HAL_MGMT_MSIX_CAP_TABLE_BAR0 0 -#define VXGE_HAL_MGMT_MSIX_CAP_TABLE_BAR1 2 -#define VXGE_HAL_MGMT_MSIX_CAP_TABLE_BAR2 4 - u32 pba_offset; - u32 pba_bir; -#define VXGE_HAL_MGMT_MSIX_CAP_PBA_BAR0 0 -#define VXGE_HAL_MGMT_MSIX_CAP_PBA_BAR1 2 -#define VXGE_HAL_MGMT_MSIX_CAP_PBA_BAR2 4 -} vxge_hal_mgmt_msix_cap_t; - -/* - * vxge_hal_mgmt_msix_capabilities_get - Returns the msix capabilities - * @devh: HAL device handle. - * @msix_cap: MSIX Capabilities - * - * Return the msix capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_msix_capabilities_get(vxge_hal_device_h devh, - vxge_hal_mgmt_msix_cap_t *msix_cap); - -/* - * struct vxge_hal_pci_err_cap_t - PCI Error Capabilities - * @pci_err_header: Error header - * @pci_err_uncor_status: Uncorrectable error status - * 0x00000001 - Training - * 0x00000010 - Data Link Protocol - * 0x00001000 - Poisoned TLP - * 0x00002000 - Flow Control Protocol - * 0x00004000 - Completion Timeout - * 0x00008000 - Completer Abort - * 0x00010000 - Unexpected Completion - * 0x00020000 - Receiver Overflow - * 0x00040000 - Malformed TLP - * 0x00080000 - ECRC Error Status - * 0x00100000 - Unsupported Request - * @pci_err_uncor_mask: Uncorrectable mask - * @pci_err_uncor_server: Uncorrectable server - * @pci_err_cor_status: Correctable status - * 0x00000001 - Receiver Error Status - * 0x00000040 - Bad TLP Status - * 0x00000080 - Bad DLLP Status - * 0x00000100 - REPLAY_NUM Rollover - * 0x00001000 - Replay Timer Timeout - * VXGE_HAL_PCI_ERR_COR_MASK 20 - * @pci_err_cap: Error capability - * 0x00000020 - ECRC Generation Capable - * 0x00000040 - ECRC Generation Enable - * 0x00000080 - ECRC Check Capable - * 0x00000100 - ECRC Check Enable - * @err_header_log: Error header log - * @unused: Reserved - * @pci_err_root_command: Error root command - * @pci_err_root_status: Error root status - * @pci_err_root_cor_src: Error root correctible source - * @pci_err_root_src: Error root source - * - * MSIS Capabilities structure - */ -typedef struct vxge_hal_pci_err_cap_t { - u32 pci_err_header; - u32 pci_err_uncor_status; -#define VXGE_HAL_PCI_ERR_CAP_UNC_TRAIN 0x00000001 /* Training */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_DLP 0x00000010 /* Data Link Protocol */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_POISON_TLP 0x00001000 /* Poisoned TLP */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_FCP 0x00002000 /* Flow Ctrl Protocol */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_COMP_TIME 0x00004000 /* Completion Timeout */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_COMP_ABORT 0x00008000 /* Completer Abort */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_UNX_COMP 0x00010000 /* Unexpected Compl */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_RX_OVER 0x00020000 /* Receiver Overflow */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_MALF_TLP 0x00040000 /* Malformed TLP */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_ECRC 0x00080000 /* ECRC Error Status */ -#define VXGE_HAL_PCI_ERR_CAP_UNC_UNSUP 0x00100000 /* Unsupported Request */ - u32 pci_err_uncor_mask; - u32 pci_err_uncor_server; - u32 pci_err_cor_status; -#define VXGE_HAL_PCI_ERR_CAP_COR_RCVR 0x00000001 /* Recv Err Status */ -#define VXGE_HAL_PCI_ERR_CAP_COR_BAD_TLP 0x00000040 /* Bad TLP Status */ -#define VXGE_HAL_PCI_ERR_CAP_COR_BAD_DLLP 0x00000080 /* Bad DLLP Status */ -#define VXGE_HAL_PCI_ERR_CAP_COR_REP_ROLL 0x00000100 /* REPLAY Rollover */ -#define VXGE_HAL_PCI_ERR_CAP_COR_REP_TIMER 0x00001000 /* Replay Timeout */ -#define VXGE_HAL_PCI_ERR_CAP_COR_MASK 20 /* Corrble Err Mask */ - u32 pci_err_cap; -#define VXGE_HAL_PCI_ERR_CAP_CAP_FEP(x) ((x) & 31) /* First Err Ptr */ -#define VXGE_HAL_PCI_ERR_CAP_CAP_ECRC_GENC 0x00000020 /* ECRC Gen Capable */ -#define VXGE_HAL_PCI_ERR_CAP_CAP_ECRC_GENE 0x00000040 /* ECRC Gen Enable */ -#define VXGE_HAL_PCI_ERR_CAP_CAP_ECRC_CHKC 0x00000080 /* ECRC Chk Capable */ -#define VXGE_HAL_PCI_ERR_CAP_CAP_ECRC_CHKE 0x00000100 /* ECRC Chk Enable */ - u32 err_header_log; -#define VXGE_HAL_PCI_ERR_CAP_HEADER_LOG(x) ((x) >> 31) /* Error Hdr Log */ - u32 unused[3]; - u32 pci_err_root_command; - u32 pci_err_root_status; - u32 pci_err_root_cor_src; - u32 pci_err_root_src; -} vxge_hal_pci_err_cap_t; - -/* - * vxge_hal_mgmt_pci_err_capabilities_get - Returns the pci error capabilities - * @devh: HAL device handle. - * @err_cap: PCI-E Extended Error Capabilities - * - * Return the PCI-E Extended Error capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_pci_err_capabilities_get(vxge_hal_device_h devh, - vxge_hal_pci_err_cap_t *err_cap); - -/* - * vxge_hal_mgmt_driver_config - Retrieve driver configuration. - * @drv_config: Device configuration, see vxge_hal_driver_config_t {}. - * @size: Pointer to buffer containing the Size of the @drv_config. - * HAL will return an error if the size is smaller than - * sizeof(vxge_hal_driver_config_t) and returns required size in this field - * - * Get driver configuration. Permits to retrieve at run-time configuration - * values that were used to configure the device at load-time. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED - HAL is not initialized. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version is not matching. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * - * See also: vxge_hal_driver_config_t {}, vxge_hal_mgmt_device_config(). - */ -vxge_hal_status_e -vxge_hal_mgmt_driver_config(vxge_hal_driver_config_t *drv_config, u32 *size); - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - -/* - * vxge_hal_mgmt_trace_read - Read trace buffer contents. - * @buffer: Buffer to store the trace buffer contents. - * @buf_size: Size of the buffer. - * @offset: Offset in the internal trace buffer to read data. - * @read_length: Size of the valid data in the buffer. - * - * Read HAL trace buffer contents starting from the offset - * up to the size of the buffer or till EOF is reached. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_EOF_TRACE_BUF - No more data in the trace buffer. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_trace_read(char *buffer, - unsigned buf_size, - unsigned *offset, - unsigned *read_length); - -#endif - -/* - * vxge_hal_mgmt_device_config - Retrieve device configuration. - * @devh: HAL device handle. - * @dev_config: Device configuration, see vxge_hal_device_config_t {}. - * @size: Pointer to buffer containing the Size of the @dev_config. - * HAL will return an error if the size is smaller than - * sizeof(vxge_hal_device_config_t) and returns required size in this field - * - * Get device configuration. Permits to retrieve at run-time configuration - * values that were used to initialize and configure the device. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * - * See also: vxge_hal_device_config_t {}, vxge_hal_mgmt_driver_config(). - */ -vxge_hal_status_e -vxge_hal_mgmt_device_config(vxge_hal_device_h devh, - vxge_hal_device_config_t *dev_config, u32 *size); - - -/* - * vxge_hal_mgmt_pcireg_read - Read PCI configuration at a specified - * offset. - * @devh: HAL device handle. - * @offset: Offset in the 256 byte PCI configuration space. - * @value_bits: 8, 16, or 32 (bits) to read. - * @value: Value returned by HAL. - * - * Read PCI configuration, given device and offset in the PCI space. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not - * valid. - * VXGE_HAL_ERR_INVALID_VALUE_BIT_SIZE - Invalid bits size. Valid - * values(8/16/32). - * - */ -vxge_hal_status_e -vxge_hal_mgmt_pcireg_read(vxge_hal_device_h devh, unsigned int offset, - int value_bits, u32 *value); - -/* - * enum vxge_hal_mgmt_reg_type_e - Register types. - * - * @vxge_hal_mgmt_reg_type_legacy: Legacy registers - * @vxge_hal_mgmt_reg_type_toc: TOC Registers - * @vxge_hal_mgmt_reg_type_common: Common Registers - * @vxge_hal_mgmt_reg_type_memrepair: Memrepair Registers - * @vxge_hal_mgmt_reg_type_pcicfgmgmt: pci cfg management registers - * @vxge_hal_mgmt_reg_type_mrpcim: mrpcim registers - * @vxge_hal_mgmt_reg_type_srpcim: srpcim registers - * @vxge_hal_mgmt_reg_type_vpmgmt: vpath management registers - * @vxge_hal_mgmt_reg_type_vpath: vpath registers - * - * Register type enumaration - */ -typedef enum vxge_hal_mgmt_reg_type_e { - vxge_hal_mgmt_reg_type_legacy = 0, - vxge_hal_mgmt_reg_type_toc = 1, - vxge_hal_mgmt_reg_type_common = 2, - vxge_hal_mgmt_reg_type_memrepair = 3, - vxge_hal_mgmt_reg_type_pcicfgmgmt = 4, - vxge_hal_mgmt_reg_type_mrpcim = 5, - vxge_hal_mgmt_reg_type_srpcim = 6, - vxge_hal_mgmt_reg_type_vpmgmt = 7, - vxge_hal_mgmt_reg_type_vpath = 8 -} vxge_hal_mgmt_reg_type_e; - -/* - * vxge_hal_mgmt_reg_read - Read X3100 register. - * @devh: HAL device handle. - * @type: Register types as defined in enum vxge_hal_mgmt_reg_type_e {} - * @index: For pcicfgmgmt, srpcim, vpmgmt, vpath this gives the Index - * ignored for others - * @offset: Register offset in the register space qualified by the type and - * index. - * @value: Register value. Returned by HAL. - * Read X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_TYPE - Type is not valid. - * VXGE_HAL_ERR_INVALID_INDEX - Index is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_reg_read(vxge_hal_device_h devh, - vxge_hal_mgmt_reg_type_e type, - u32 index, - u32 offset, - u64 *value); - -/* - * vxge_hal_mgmt_reg_Write - Write X3100 register. - * @devh: HAL device handle. - * @type: Register types as defined in enum vxge_hal_mgmt_reg_type_e {} - * @index: For pcicfgmgmt, srpcim, vpmgmt, vpath this gives the Index - * ignored for others - * @offset: Register offset in the register space qualified by the type and - * index. - * @value: Register value to be written. - * Write X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_TYPE - Type is not valid. - * VXGE_HAL_ERR_INVALID_INDEX - Index is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_reg_write(vxge_hal_device_h devh, - vxge_hal_mgmt_reg_type_e type, - u32 index, - u32 offset, - u64 value); - -/* - * vxge_hal_mgmt_bar0_read - Read X3100 register located at the offset - * from bar0. - * @devh: HAL device handle. - * @offset: Register offset from bar0 - * @value: Register value. Returned by HAL. - * Read X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_bar0_read(vxge_hal_device_h devh, - u32 offset, - u64 *value); - -/* - * vxge_hal_mgmt_bar1_read - Read X3100 register located at the offset - * from bar1. - * @devh: HAL device handle. - * @offset: Register offset from bar1 - * @value: Register value. Returned by HAL. - * Read X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_bar1_read(vxge_hal_device_h devh, - u32 offset, - u64 *value); - -/* - * vxge_hal_mgmt_bar0_Write - Write X3100 register located at the offset - * from bar0. - * @devh: HAL device handle. - * @offset: Register offset from bar0 - * @value: Register value to be written. - * Write X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_bar0_write(vxge_hal_device_h devh, - u32 offset, - u64 value); - -/* - * vxge_hal_mgmt_register_config - Retrieve register configuration. - * @devh: HAL device handle. - * @type: Register types as defined in enum vxge_hal_mgmt_reg_type_e {} - * @Index: For pcicfgmgmt, srpcim, vpmgmt, vpath this gives the Index - * ignored for others - * @config: Device configuration, see vxge_hal_device_config_t {}. - * @size: Pointer to buffer containing the Size of the @reg_config. - * HAL will return an error if the size is smaller than - * requested register space and returns required size in this field - * - * Get register configuration. Permits to retrieve register values. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_TYPE - Type is not valid. - * VXGE_HAL_ERR_INVALID_INDEX - Index is not valid. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * - */ -vxge_hal_status_e -vxge_hal_mgmt_register_config(vxge_hal_device_h devh, - vxge_hal_mgmt_reg_type_e type, - u32 vp_id, - u8 *config, - u32 *size); - -/* - * vxge_hal_mgmt_read_xfp_current_temp - Read current temparature of given port - * @devh: HAL device handle. - * @port: Port number - * - * This routine only gets the temperature for XFP modules. Also, updating of the - * NVRAM can sometimes fail and so the reading we might get may not be uptodate. - */ -u32 vxge_hal_mgmt_read_xfp_current_temp(vxge_hal_device_h devh, u32 port); - -/* - * vxge_hal_mgmt_pma_loopback - Enable or disable PMA loopback - * @devh: HAL device handle. - * @port: Port number - * @enable:Boolean set to 1 to enable and 0 to disable. - * - * Enable or disable PMA loopback. - * Return value: - * 0 on success. - */ -vxge_hal_status_e -vxge_hal_mgmt_pma_loopback(vxge_hal_device_h devh, u32 port, u32 enable); - -/* - * vxge_hal_mgmt_xgmii_loopback - Enable or disable xgmii loopback - * @devh: HAL device handle. - * @port: Port number - * @enable:Boolean set to 1 to enable and 0 to disable. - * - * Enable or disable xgmii loopback. - * Return value: - * 0 on success. - */ -vxge_hal_status_e -vxge_hal_mgmt_xgmii_loopback(vxge_hal_device_h devh, u32 port, u32 enable); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_MGMT_H */ Index: sys/dev/vxge/include/vxgehal-mgmtaux.h =================================================================== --- sys/dev/vxge/include/vxgehal-mgmtaux.h +++ sys/dev/vxge/include/vxgehal-mgmtaux.h @@ -1,391 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_MGMTAUX_H -#define VXGE_HAL_MGMTAUX_H - -__EXTERN_BEGIN_DECLS - -/* - * vxge_hal_aux_about_read - Retrieve and format about info. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Retrieve about info (using vxge_hal_mgmt_about()) and sprintf it - * into the provided @retbuf. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * VXGE_HAL_FAIL - Failed to retrieve the information. - * - * See also: vxge_hal_mgmt_about(), vxge_hal_aux_device_dump(). - */ -vxge_hal_status_e vxge_hal_aux_about_read(vxge_hal_device_h devh, int bufsize, - char *retbuf, int *retsize); - -/* - * vxge_hal_aux_driver_config_read - Read Driver configuration. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read driver configuration, - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * - * See also: vxge_hal_aux_device_config_read(). - */ -vxge_hal_status_e -vxge_hal_aux_driver_config_read(int bufsize, char *retbuf, int *retsize); - -/* - * vxge_hal_aux_pci_config_read - Retrieve and format PCI Configuration - * info. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Retrieve about info (using vxge_hal_mgmt_pci_config()) and sprintf it - * into the provided @retbuf. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * - * See also: vxge_hal_mgmt_pci_config(), vxge_hal_aux_device_dump(). - */ -vxge_hal_status_e -vxge_hal_aux_pci_config_read(vxge_hal_device_h devh, - int bufsize, - char *retbuf, - int *retsize); - -/* - * vxge_hal_aux_device_config_read - Read device configuration. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device configuration, - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * - * See also: vxge_hal_aux_driver_config_read(). - */ -vxge_hal_status_e -vxge_hal_aux_device_config_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize); - -/* - * vxge_hal_aux_bar0_read - Read and format X3100 BAR0 register. - * @devh: HAL device handle. - * @offset: Register offset in the BAR0 space. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read X3100 register from BAR0 space. The result is formatted as an - * ascii string. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_OUT_OF_SPACE - Buffer size is very small. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not - * valid. - * - * See also: vxge_hal_mgmt_reg_read(). - */ -vxge_hal_status_e -vxge_hal_aux_bar0_read(vxge_hal_device_h devh, - unsigned int offset, int bufsize, char *retbuf, - int *retsize); - -/* - * vxge_hal_aux_bar1_read - Read and format X3100 BAR1 register. - * @devh: HAL device handle. - * @offset: Register offset in the BAR1 space. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read X3100 register from BAR1 space. The result is formatted as ascii string - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_OUT_OF_SPACE - Buffer size is very small. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not - * valid. - * - */ -vxge_hal_status_e -vxge_hal_aux_bar1_read(vxge_hal_device_h devh, - unsigned int offset, int bufsize, char *retbuf, - int *retsize); - -/* - * vxge_hal_aux_bar0_write - Write BAR0 register. - * @devh: HAL device handle. - * @offset: Register offset in the BAR0 space. - * @value: Regsister value (to write). - * - * Write BAR0 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not - * valid. - * - * See also: vxge_hal_mgmt_reg_write(). - */ -vxge_hal_status_e -vxge_hal_aux_bar0_write(vxge_hal_device_h devh, - unsigned int offset, u64 value); - -/* - * vxge_hal_aux_stats_vpath_hw_read - Read vpath hardware statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read vpath hardware statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_hw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_hw_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize); - -/* - * vxge_hal_aux_stats_device_hw_read - Read device hardware statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device hardware statistics. This is a subset of stats counters - * from vxge_hal_device_stats_hw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_device_hw_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize); - -/* - * vxge_hal_aux_stats_vpath_sw_fifo_read - Read vpath fifo software statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read vpath fifo software statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_sw_fifo_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_sw_fifo_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize); - -/* - * vxge_hal_aux_stats_vpath_sw_ring_read - Read vpath ring software statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read vpath ring software statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_sw_ring_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_sw_ring_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize); - - -/* - * vxge_hal_aux_stats_vpath_sw_err_read - Read vpath err software statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read vpath err software statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_sw_err_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_sw_err_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize); - -/* - * vxge_hal_aux_stats_vpath_sw_read - Read vpath soft statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device hardware statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_sw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_sw_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize); - -/* - * vxge_hal_aux_stats_device_sw_read - Read device software statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device software statistics. This is a subset of stats counters - * from vxge_hal_device_stats_sw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_device_sw_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize); - -/* - * vxge_hal_aux_stats_device_sw_err_read - Read device software error statistics - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device software error statistics. This is a subset of stats counters - * from vxge_hal_device_stats_sw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_device_sw_err_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize); - -/* - * vxge_hal_aux_stats_device_read - Read device statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device statistics. This is a subset of stats counters - * from vxge_hal_device_stats_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_device_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize); - -/* - * vxge_hal_aux_stats_xpak_read - Read device xpak statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device xpak statistics. This is valid for function 0 device only - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_xpak_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize); - -/* - * vxge_hal_aux_stats_mrpcim_read - Read device mrpcim statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read mrpcim statistics. This is valid for function 0 device only - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_mrpcim_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize); - -/* - * vxge_hal_aux_vpath_ring_dump - Dump vpath ring. - * @vpath_handle: Vpath handle. - * - * Dump vpath ring. - */ -vxge_hal_status_e -vxge_hal_aux_vpath_ring_dump(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_aux_vpath_fifo_dump - Dump vpath fifo. - * @vpath_handle: Vpath handle. - * - * Dump vpath fifo. - */ -vxge_hal_status_e -vxge_hal_aux_vpath_fifo_dump(vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_aux_device_dump - Dump driver "about" info and device state. - * @devh: HAL device handle. - * - * Dump driver & device "about" info and device state, - * including all BAR0 registers, hardware and software statistics, PCI - * configuration space. - */ -vxge_hal_status_e vxge_hal_aux_device_dump(vxge_hal_device_h devh); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_MGMTAUX_H */ Index: sys/dev/vxge/include/vxgehal-stats.h =================================================================== --- sys/dev/vxge/include/vxgehal-stats.h +++ sys/dev/vxge/include/vxgehal-stats.h @@ -1,2354 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_STATS_H -#define VXGE_HAL_STATS_H - -__EXTERN_BEGIN_DECLS - -#define VXGE_HAL_STATS_OP_READ 0 -#define VXGE_HAL_STATS_OP_CLEAR_STAT 1 -#define VXGE_HAL_STATS_OP_CLEAR_ALL_VPATH_STATS 2 -#define VXGE_HAL_STATS_OP_CLEAR_ALL_STATS_OF_LOC 2 -#define VXGE_HAL_STATS_OP_CLEAR_ALL_STATS 3 - -#define VXGE_HAL_STATS_LOC_VPATH(n) n -#define VXGE_HAL_STATS_LOC_AGGR 17 -#define VXGE_HAL_STATS_LOC_PORT 17 - -#define VXGE_HAL_STATS_AGGRn_TX_FRMS_OFFSET(n) ((0x720+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_TX_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_TX_DATA_OCTETS_OFFSET(n) ((0x728+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_TX_DATA_OCTETS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_TX_MCAST_FRMS_OFFSET(n) ((0x730+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_TX_MCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_TX_BCAST_FRMS_OFFSET(n) ((0x738+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_TX_BCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_TX_DISCARDED_FRMS_OFFSET(n) ((0x740+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_TX_DISCARDED_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_TX_ERRORED_FRMS_OFFSET(n) ((0x748+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_TX_ERRORED_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_RX_FRMS_OFFSET(n) ((0x750+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_RX_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_RX_DATA_OCTETS_OFFSET(n) ((0x758+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_RX_DATA_OCTETS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_RX_MCAST_FRMS_OFFSET(n) ((0x760+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_RX_MCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_RX_BCAST_FRMS_OFFSET(n) ((0x768+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_RX_BCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_RX_DISCARDED_FRMS_OFFSET(n) ((0x770+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_RX_DISCARDED_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_RX_ERRORED_FRMS_OFFSET(n) ((0x778+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_RX_ERRORED_FRMS(bits) bits - -#define VXGE_HAL_STATS_AGGRn_RX_U_SLOW_PROTO_FRMS_OFFSET(n) ((0x780+(104*n))>>3) -#define VXGE_HAL_STATS_GET_AGGRn_RX_U_SLOW_PROTO_FRMS(bits) bits - -#define VXGE_HAL_STATS_GLOBAL_PROG_EVENT_GNUM0_OFFSET (0x7f0>>3) -#define VXGE_HAL_STATS_GET_GLOBAL_PROG_EVENT_GNUM0(bits) bits - -#define VXGE_HAL_STATS_GLOBAL_PROG_EVENT_GNUM1_OFFSET (0x7f8>>3) -#define VXGE_HAL_STATS_GET_GLOBAL_PROG_EVENT_GNUM1(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_TTL_FRMS_OFFSET(n) ((0x000+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_TTL_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_TTL_OCTETS_OFFSET(n) ((0x008+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_TTL_OCTETS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_DATA_OCTETS_OFFSET(n) ((0x010+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_DATA_OCTETS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_MCAST_FRMS_OFFSET(n) ((0x018+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_MCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_BCAST_FRMS_OFFSET(n) ((0x020+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_BCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_UCAST_FRMS_OFFSET(n) ((0x028+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_UCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_TAGGED_FRMS_OFFSET(n) ((0x030+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_TAGGED_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_VLD_IP_OFFSET(n) ((0x038+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_VLD_IP(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_VLD_IP_OCTETS_OFFSET(n) ((0x040+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_VLD_IP_OCTETS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_ICMP_OFFSET(n) ((0x048+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_ICMP(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_TCP_OFFSET(n) ((0x050+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_TCP(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_RST_TCP_OFFSET(n) ((0x058+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_RST_TCP(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_UDP_OFFSET(n) ((0x060+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_UDP(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_UNKNOWN_PROTOCOL_OFFSET(n) ((0x068+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_UNKNOWN_PROTOCOL(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_PARSE_ERROR_OFFSET(n) ((0x068+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_PARSE_ERROR(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_PAUSE_CTRL_FRMS_OFFSET(n) ((0x070+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_PAUSE_CTRL_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_LACPDU_FRMS_OFFSET(n) ((0x078+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_LACPDU_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_MRKR_PDU_FRMS_OFFSET(n) ((0x078+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_MRKR_PDU_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_TX_MRKR_RESP_PDU_FRMS_OFFSET(n)\ - ((0x080+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_MRKR_RESP_PDU_FRMS(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_TX_DROP_IP_OFFSET(n) ((0x080+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_DROP_IP(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_TX_XGMII_CHAR1_MATCH_OFFSET(n) ((0x088+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_XGMII_CHAR1_MATCH(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_TX_XGMII_CHAR2_MATCH_OFFSET(n) ((0x088+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_XGMII_CHAR2_MATCH(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_TX_XGMII_COL1_MATCH_OFFSET(n) ((0x090+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_XGMII_COL1_MATCH(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_TX_XGMII_COL2_MATCH_OFFSET(n) ((0x090+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_XGMII_COL2_MATCH(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_TX_DROP_FRMS_OFFSET(n) ((0x098+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_DROP_FRMS(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_TX_ANY_ERR_FRMS_OFFSET(n) ((0x098+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_TX_ANY_ERR_FRMS(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_TTL_FRMS_OFFSET(n) ((0x0a0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_VLD_FRMS_OFFSET(n) ((0x0a8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_VLD_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_OFFLOAD_FRMS_OFFSET(n) ((0x0b0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_OFFLOAD_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_OCTETS_OFFSET(n) ((0x0b8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_OCTETS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_DATA_OCTETS_OFFSET(n) ((0x0c0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_DATA_OCTETS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_OFFLOAD_OCTETS_OFFSET(n) ((0x0c8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_OFFLOAD_OCTETS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_VLD_MCAST_FRMS_OFFSET(n) ((0x0d0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_VLD_MCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_VLD_BCAST_FRMS_OFFSET(n) ((0x0d8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_VLD_BCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_ACC_UCAST_FRMS_OFFSET(n) ((0x0e0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_ACC_UCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_ACC_NUCAST_FRMS_OFFSET(n) ((0x0e8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_ACC_NUCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TAGGED_FRMS_OFFSET(n) ((0x0f0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TAGGED_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_LONG_FRMS_OFFSET(n) ((0x0f8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_LONG_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_USIZED_FRMS_OFFSET(n) ((0x100+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_USIZED_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_OSIZED_FRMS_OFFSET(n) ((0x108+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_OSIZED_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_FRAG_FRMS_OFFSET(n) ((0x110+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_FRAG_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_JABBER_FRMS_OFFSET(n) ((0x118+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_JABBER_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_64_FRMS_OFFSET(n) ((0x120+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_64_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_65_127_FRMS_OFFSET(n) ((0x128+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_65_127_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_128_255_FRMS_OFFSET(n) ((0x130+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_128_255_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_256_511_FRMS_OFFSET(n) ((0x138+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_256_511_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_512_1023_FRMS_OFFSET(n) ((0x140+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_512_1023_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_1024_1518_FRMS_OFFSET(n)\ - ((0x148+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_1024_1518_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_1519_4095_FRMS_OFFSET(n)\ - ((0x150+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_1519_4095_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_4096_81915_FRMS_OFFSET(n)\ - ((0x158+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_4096_8191_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_8192_MAX_FRMS_OFFSET(n) ((0x160+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_8192_MAX_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TTL_GT_MAX_FRMS_OFFSET(n) ((0x168+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TTL_GT_MAX_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_IP_OFFSET(n) ((0x170+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_IP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_ACC_IP_OFFSET(n) ((0x178+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_ACC_IP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_IP_OCTETS_OFFSET(n) ((0x180+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_IP_OCTETS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_ERR_IP_OFFSET(n) ((0x188+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_ERR_IP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_ICMP_OFFSET(n) ((0x190+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_ICMP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_TCP_OFFSET(n) ((0x198+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TCP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_UDP_OFFSET(n) ((0x1a0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_UDP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_ERR_TCP_OFFSET(n) ((0x1a8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_ERR_TCP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_PAUSE_CNT_OFFSET(n) ((0x1b0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_PAUSE_CNT(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_PAUSE_CTRL_FRMS_OFFSET(n) ((0x1b8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_PAUSE_CTRL_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_UNSUP_CTRL_FRMS_OFFSET(n) ((0x1c0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_UNSUP_CTRL_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_FCS_ERR_FRMS_OFFSET(n) ((0x1c8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_FCS_ERR_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_IN_RNG_LEN_ERR_FRMS_OFFSET(n)\ - ((0x1d0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_IN_RNG_LEN_ERR_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_OUT_RNG_LEN_ERR_FRMS_OFFSET(n)\ - ((0x1d8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_OUT_RNG_LEN_ERR_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_DROP_FRMS_OFFSET(n) ((0x1e0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_DROP_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_DISCARDED_FRMS_OFFSET(n) ((0x1e8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_DISCARDED_FRMS(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_DROP_IP_OFFSET(n) ((0x1f0+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_DROP_IP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_DRP_UDP_OFFSET(n) ((0x1f8+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_DRP_UDP(bits) bits - -#define VXGE_HAL_STATS_PORTn_RX_LACPDU_FRMS_OFFSET(n) ((0x200+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_LACPDU_FRMS(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_MRKR_PDU_FRMS_OFFSET(n) ((0x200+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_MRKR_PDU_FRMS(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_MRKR_RESP_PDU_FRMS_OFFSET(n)\ - ((0x208+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_MRKR_RESP_PDU_FRMS(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_UNKNOWN_PDU_FRMS_OFFSET(n) ((0x208+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_UNKNOWN_PDU_FRMS(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_ILLEGAL_PDU_FRMS_OFFSET(n) ((0x210+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_ILLEGAL_PDU_FRMS(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_FCS_DISCARD_OFFSET(n) ((0x210+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_FCS_DISCARD(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_LEN_DISCARD_OFFSET(n) ((0x218+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_LEN_DISCARD(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_SWITCH_DISCARD_OFFSET(n) ((0x218+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_SWITCH_DISCARD(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_L2_MGMT_DISCARD_OFFSET(n) ((0x220+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_L2_MGMT_DISCARD(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_RPA_DISCARD_OFFSET(n) ((0x220+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_RPA_DISCARD(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_TRASH_DISCARD_OFFSET(n) ((0x228+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_TRASH_DISCARD(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_RTS_DISCARD_OFFSET(n) ((0x228+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_RTS_DISCARD(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_RED_DISCARD_OFFSET(n) ((0x230+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_RED_DISCARD(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_BUFF_FULL_DISCARD_OFFSET(n) ((0x230+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_BUFF_FULL_DISCARD(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_XGMII_DATA_ERR_CNT_OFFSET(n)\ - ((0x238+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_XGMII_DATA_ERR_CNT(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_XGMII_CTRL_ERR_CNT_OFFSET(n)\ - ((0x238+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CTRL_ERR_CNT(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_XGMII_ERR_SYM_OFFSET(n) ((0x240+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_XGMII_ERR_SYM(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_XGMII_CHAR1_MATCH_OFFSET(n) ((0x240+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CHAR1_MATCH(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_XGMII_CHAR2_MATCH_OFFSET(n) ((0x248+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CHAR2_MATCH(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_XGMII_COL1_MATCH_OFFSET(n) ((0x248+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_XGMII_COL1_MATCH(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_XGMII_COL2_MATCH_OFFSET(n) ((0x250+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_XGMII_COL2_MATCH(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_LOCAL_FAULT_OFFSET(n) ((0x250+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_LOCAL_FAULT(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_PORTn_RX_REMOTE_FAULT_OFFSET(n) ((0x258+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_REMOTE_FAULT(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_PORTn_RX_JETTISON_OFFSET(n) ((0x258+(608*n))>>3) -#define VXGE_HAL_STATS_GET_PORTn_RX_JETTISON(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_VPATH_TX_TTL_ETH_FRMS_OFFSET (0x000>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_TTL_ETH_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_TTL_ETH_OCTETS_OFFSET (0x008>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_TTL_ETH_OCTETS(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_DATA_OCTETS_OFFSET (0x010>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_DATA_OCTETS(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_MCAST_FRMS_OFFSET (0x018>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_MCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_BCAST_FRMS_OFFSET (0x020>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_BCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_UCAST_FRMS_OFFSET (0x028>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_UCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_TAGGED_FRMS_OFFSET (0x030>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_TAGGED_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_VLD_IP_OFFSET (0x038>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_VLD_IP(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_VLD_IP_OCTETS_OFFSET (0x040>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_VLD_IP_OCTETS(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_ICMP_OFFSET (0x048>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_ICMP(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_TCP_OFFSET (0x050>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_TCP(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_RST_TCP_OFFSET (0x058>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_RST_TCP(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_UDP_OFFSET (0x060>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_UDP(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_LOST_IP_OFFSET (0x068>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_LOST_IP(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_UNKNOWN_PROTOCOL_OFFSET (0x068>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_UNKNOWN_PROTOCOL(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_PARSE_ERROR_OFFSET (0x070>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_PARSE_ERROR(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_TCP_OFFLOAD_OFFSET (0x078>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_TCP_OFFLOAD(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_RETX_TCP_OFFLOAD_OFFSET (0x080>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_RETX_TCP_OFFLOAD(bits) bits - -#define VXGE_HAL_STATS_VPATH_TX_LOST_IP_OFFLOAD_OFFSET (0x088>>3) -#define VXGE_HAL_STATS_GET_VPATH_TX_LOST_IP_OFFLOAD(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_ETH_FRMS_OFFSET (0x090>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_ETH_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_VLD_FRMS_OFFSET (0x098>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_VLD_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_OFFLOAD_FRMS_OFFSET (0x0a0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_OFFLOAD_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_ETH_OCTETS_OFFSET (0x0a8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_ETH_OCTETS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_DATA_OCTETS_OFFSET (0x0b0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_DATA_OCTETS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_OFFLOAD_OCTETS_OFFSET (0x0b8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_OFFLOAD_OCTETS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_VLD_MCAST_FRMS_OFFSET (0x0c0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_VLD_MCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_VLD_BCAST_FRMS_OFFSET (0x0c8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_VLD_BCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_ACC_UCAST_FRMS_OFFSET (0x0d0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_ACC_UCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_ACC_NUCAST_FRMS_OFFSET (0x0d8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_ACC_NUCAST_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TAGGED_FRMS_OFFSET (0x0e0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TAGGED_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_LONG_FRMS_OFFSET (0x0e8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_LONG_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_USIZED_FRMS_OFFSET (0x0f0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_USIZED_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_OSIZED_FRMS_OFFSET (0x0f8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_OSIZED_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_FRAG_FRMS_OFFSET (0x100>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_FRAG_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_JABBER_FRMS_OFFSET (0x108>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_JABBER_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_64_FRMS_OFFSET (0x110>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_64_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_65_127_FRMS_OFFSET (0x118>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_65_127_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_128_255_FRMS_OFFSET (0x120>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_128_255_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_256_511_FRMS_OFFSET (0x128>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_256_511_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_512_1023_FRMS_OFFSET (0x130>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_512_1023_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_1024_1518_FRMS_OFFSET (0x138>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_1024_1518_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_1519_4095_FRMS_OFFSET (0x140>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_1519_4095_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_4096_8191_FRMS_OFFSET (0x148>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_4096_8191_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_8192_MAX_FRMS_OFFSET (0x150>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_8192_MAX_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TTL_GT_MAX_FRMS_OFFSET (0x158>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TTL_GT_MAX_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_IP_OFFSET (0x160>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_IP(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_ACC_IP_OFFSET (0x168>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_ACC_IP(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_IP_OCTETS_OFFSET (0x170>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_IP_OCTETS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_ERR_IP_OFFSET (0x178>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_ERR_IP(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_ICMP_OFFSET (0x180>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_ICMP(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_TCP_OFFSET (0x188>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_TCP(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_UDP_OFFSET (0x190>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_UDP(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_ERR_TCP_OFFSET (0x198>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_ERR_TCP(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_LOST_FRMS_OFFSET (0x1a0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_LOST_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_LOST_IP_OFFSET (0x1a8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_LOST_IP(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_LOST_IP_OFFLOAD_OFFSET (0x1b0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_LOST_IP_OFFLOAD(bits) bits - -#define VXGE_HAL_STATS_VPATH_RX_QUEUE_FULL_DISCARD_OFFSET (0x1b8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_QUEUE_FULL_DISCARD(bits) bVAL16(bits, 8) - -#define VXGE_HAL_STATS_VPATH_RX_RED_DISCARD_OFFSET (0x1b8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_RED_DISCARD(bits) bVAL16(bits, 24) - -#define VXGE_HAL_STATS_VPATH_RX_SLEEP_DISCARD_OFFSET (0x1b8>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_SLEEP_DISCARD(bits) bVAL16(bits, 42) - -#define VXGE_HAL_STATS_VPATH_RX_MPA_OK_FRMS_OFFSET (0x1c0>>3) -#define VXGE_HAL_STATS_GET_VPATH_RX_MPA_OK_FRMS(bits) bits - -#define VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM0_OFFSET (0x1d0>>3) -#define VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM0(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM1_OFFSET (0x1d0>>3) -#define VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM1(bits) bVAL32(bits, 32) - -#define VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM2_OFFSET (0x1d8>>3) -#define VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM2(bits) bVAL32(bits, 0) - -#define VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM3_OFFSET (0x1d8>>3) -#define VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM3(bits) bVAL32(bits, 32) - -/* - * struct vxge_hal_xmac_aggr_stats_t - Per-Aggregator XMAC Statistics - * - * @tx_frms: Count of data frames transmitted on this Aggregator on all - * its Aggregation ports. Does not include LACPDUs or Marker PDUs. - * However, does include frames discarded by the Distribution - * function. - * @tx_data_octets: Count of data and padding octets of frames transmitted - * on this Aggregator on all its Aggregation ports.Does not include - * octets of LACPDUs or Marker PDUs. However,does include octets of - * frames discarded by the Distribution function. - * @tx_mcast_frms: Count of data frames transmitted (to a group destination - * address other than the broadcast address) on this Aggregator on - * all its Aggregation ports. Does not include LACPDUs or Marker - * PDUs. However, does include frames discarded by the Distribution - * function. - * @tx_bcast_frms: Count of broadcast data frames transmitted on this Aggregator - * on all its Aggregation ports. Does not include LACPDUs or Marker - * PDUs. However, does include frames discarded by the Distribution - * function. - * @tx_discarded_frms: Count of data frames to be transmitted on this Aggregator - * that are discarded by the Distribution function.This occurs when - * conversation are allocated to different ports and have to be - * flushed on old ports - * @tx_errored_frms: Count of data frames transmitted on this Aggregator that - * experience transmission errors on its Aggregation ports. - * @rx_frms: Count of data frames received on this Aggregator on all its - * Aggregation ports. Does not include LACPDUs or Marker PDUs. - * Also, does not include frames discarded by the Collection - * function. - * @rx_data_octets: Count of data and padding octets of frames received on this - * Aggregator on all its Aggregation ports. Does not include octets - * of LACPDUs or Marker PDUs.Also,does not include octets of frames - * discarded by the Collection function. - * @rx_mcast_frms: Count of data frames received (from a group destination - * address other than the broadcast address) on this Aggregator on - * all its Aggregation ports. Does not include LACPDUs or Marker - * PDUs. Also, does not include frames discarded by the Collection - * function. - * @rx_bcast_frms: Count of broadcast data frames received on this Aggregator on - * all its Aggregation ports. Does not include LACPDUs or Marker - * PDUs. Also, does not include frames discarded by the Collection - * function. - * @rx_discarded_frms: Count of data frames received on this Aggregator that are - * discarded by the Collection function because the Collection - * function was disabled on the port which the frames are received. - * @rx_errored_frms: Count of data frames received on this Aggregator that are - * discarded by its Aggregation ports, or are discarded by the - * Collection function of the Aggregator, or that are discarded by - * the Aggregator due to detection of an illegal Slow Protocols PDU - * @rx_unknown_slow_proto_frms: Count of data frames received on this Aggregator - * that are discarded by its Aggregation ports due to detection of - * an unknown Slow Protocols PDU. - * - * Per aggregator XMAC RX statistics. - */ -#pragma pack(1) -typedef struct vxge_hal_xmac_aggr_stats_t { -/* 0x000 */ u64 tx_frms; -/* 0x008 */ u64 tx_data_octets; -/* 0x010 */ u64 tx_mcast_frms; -/* 0x018 */ u64 tx_bcast_frms; -/* 0x020 */ u64 tx_discarded_frms; -/* 0x028 */ u64 tx_errored_frms; -/* 0x030 */ u64 rx_frms; -/* 0x038 */ u64 rx_data_octets; -/* 0x040 */ u64 rx_mcast_frms; -/* 0x048 */ u64 rx_bcast_frms; -/* 0x050 */ u64 rx_discarded_frms; -/* 0x058 */ u64 rx_errored_frms; -/* 0x060 */ u64 rx_unknown_slow_proto_frms; -} vxge_hal_xmac_aggr_stats_t; - -#pragma pack() - -/* - * struct vxge_hal_xmac_port_stats_t - XMAC Port Statistics - * - * @tx_ttl_frms: Count of successfully transmitted MAC frames - * @tx_ttl_octets: Count of total octets of transmitted frames, not including - * framing characters (i.e. less framing bits). To determine the - * total octets of transmitted frames, including framing characters, - * multiply PORTn_TX_TTL_FRMS by 8 and add it to this stat (unless - * otherwise configured, this stat only counts frames that have - * 8 bytes of preamble for each frame). This stat can be configured - * (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count everything - * including the preamble octets. - * @tx_data_octets: Count of data and padding octets of successfully transmitted - * frames. - * @tx_mcast_frms: Count of successfully transmitted frames to a group address - * other than the broadcast address. - * @tx_bcast_frms: Count of successfully transmitted frames to the broadcast - * group address. - * @tx_ucast_frms: Count of transmitted frames containing a unicast address. - * Includes discarded frames that are not sent to the network. - * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag. - * @tx_vld_ip: Count of transmitted IP datagrams that are passed to the network. - * @tx_vld_ip_octets: Count of total octets of transmitted IP datagrams that - * are passed to the network. - * @tx_icmp: Count of transmitted ICMP messages. Includes messages not sent - * due to problems within ICMP. - * @tx_tcp: Count of transmitted TCP segments. Does not include segments - * containing retransmitted octets. - * @tx_rst_tcp: Count of transmitted TCP segments containing the RST flag. - * @tx_udp: Count of transmitted UDP datagrams. - * @tx_parse_error: Increments when the TPA is unable to parse a packet. This - * generally occurs when a packet is corrupt somehow, including - * packets that have IP version mismatches, invalid Layer 2 control - * fields, etc. L3/L4 checksums are not offloaded, but the packet - * is still be transmitted. - * @tx_unknown_protocol: Increments when the TPA encounters an unknown - * protocol, such as a new IPv6 extension header, or an unsupported - * Routing Type. The packet still has a checksum calculated but it - * may be incorrect. - * @tx_pause_ctrl_frms: Count of MAC PAUSE control frames that are transmitted. - * Since, the only control frames supported by this device are - * PAUSE frames, this register is a count of all transmitted MAC - * control frames. - * @tx_marker_pdu_frms: Count of Marker PDUs transmitted on this Aggr port - * @tx_lacpdu_frms: Count of LACPDUs transmitted on this Aggregation port. - * @tx_drop_ip: Count of transmitted IP datagrams that could not be passed to - * the network. Increments because of: 1) An internal processing error - * (such as an uncorrectable ECC error). 2) A frame parsing error - * during IP checksum calculation. - * @tx_marker_resp_pdu_frms: Count of Marker Response PDUs transmitted on this - * Aggregation port. - * @tx_xgmii_char2_match: Maintains a count of the number of transmitted XGMII - * characters that match a pattern that is programmable through - * register XMAC_STATS_TX_XGMII_CHAR_PORTn. By default, the pattern - * is set to /T/ (i.e. the terminate character), thus the statistic - * tracks the number of transmitted Terminate characters. - * @tx_xgmii_char1_match: Maintains a count of the number of transmitted XGMII - * characters that match a pattern that is programmable through - * register XMAC_STATS_TX_XGMII_CHAR_PORTn. By default, the pattern - * is set to /S/ (i.e. the start character), thus the statistic tracks - * the number of transmitted Start characters. - * @tx_xgmii_column2_match: Maintains a count of the number of transmitted XGMII - * columns that match a pattern that is programmable through register - * XMAC_STATS_TX_XGMII_COLUMN2_PORTn. By default, the pattern is set - * to 4 x /E/ (i.e. a column containing all error characters), thus - * the statistic tracks the number of Error columns transmitted at - * any time. If XMAC_STATS_TX_XGMII_BEHAV_COLUMN2_PORTn.NEAR_COL1 is - * set to 1, then this stat increments when COLUMN2 is found within - * 'n' clocks after COLUMN1. Here, 'n' is defined by - * XMAC_STATS_TX_XGMII_BEHAV_COLUMN2_PORTn.NUM_COL (if 'n' is set - * to 0, then it means to search anywhere for COLUMN2). - * @tx_xgmii_column1_match: Maintains a count of the number of transmitted XGMII - * columns that match a pattern that is programmable through register - * XMAC_STATS_TX_XGMII_COLUMN1_PORTn. By default, the pattern is set - * to 4 x /I/ (i.e. a column containing all idle characters), thus the - * statistic tracks the number of transmitted Idle columns. - * @unused1: Reserved - * @tx_any_err_frms: Count of transmitted frames containing any error that - * prevents them from being passed to the network. Increments if - * there is an ECC while reading the frame out of the transmit - * buffer. Also increments if the transmit protocol assist (TPA) - * block determines that the frame should not be sent. - * @tx_drop_frms: Count of frames that could not be sent for no other reason - * than internal MAC processing. Increments once whenever the - * transmit buffer is flushed (due to an ECC error on a memory - * descriptor). - * @rx_ttl_frms: Count of total received MAC frames, including frames received - * with frame-too-long, FCS, or length errors. This stat can be - * configured (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count - * everything, even "frames" as small one byte of preamble. - * @rx_vld_frms: Count of successfully received MAC frames. Does not include - * frames received with frame-too-long, FCS, or length errors. - * @rx_offload_frms: Count of offloaded received frames that are passed to - * the host. - * @rx_ttl_octets: Count of total octets of received frames, not including - * framing characters (i.e. less framing bits). To determine the - * total octets of received frames, including framing characters, - * multiply PORTn_RX_TTL_FRMS by 8 and add it to this stat (unless - * otherwise configured, this stat only counts frames that have 8 - * bytes of preamble for each frame). This stat can be configured - * (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count everything, - * even the preamble octets of "frames" as small one byte of preamble. - * @rx_data_octets: Count of data and padding octets of successfully received - * frames. Does not include frames received with frame-too-long, - * FCS, or length errors. - * @rx_offload_octets: Count of total octets, not including framing - * characters, of offloaded received frames that are passed - * to the host. - * @rx_vld_mcast_frms: Count of successfully received MAC frames containing a - * nonbroadcast group address. Does not include frames received - * with frame-too-long, FCS, or length errors. - * @rx_vld_bcast_frms: Count of successfully received MAC frames containing - * the broadcast group address. Does not include frames received - * with frame-too-long, FCS, or length errors. - * @rx_accepted_ucast_frms: Count of successfully received frames containing - * a unicast address. Only includes frames that are passed to - * the system. - * @rx_accepted_nucast_frms: Count of successfully received frames containing - * a non-unicast (broadcast or multicast) address. Only includes - * frames that are passed to the system. Could include, for instance, - * non-unicast frames that contain FCS errors if the MAC_ERROR_CFG - * register is set to pass FCS-errored frames to the host. - * @rx_tagged_frms: Count of received frames containing a VLAN tag. - * @rx_long_frms: Count of received frames that are longer than RX_MAX_PYLD_LEN - * + 18 bytes (+ 22 bytes if VLAN-tagged). - * @rx_usized_frms: Count of received frames of length (including FCS, but not - * framing bits) less than 64 octets, that are otherwise well-formed. - * In other words, counts runts. - * @rx_osized_frms: Count of received frames of length (including FCS, but not - * framing bits) more than 1518 octets, that are otherwise - * well-formed. Note: If register XMAC_STATS_GLOBAL_CFG.VLAN_HANDLING - * is set to 1, then "more than 1518 octets" becomes "more than 1518 - * (1522 if VLAN-tagged) octets". - * @rx_frag_frms: Count of received frames of length (including FCS, but not - * framing bits) less than 64 octets that had bad FCS. In other - * words, counts fragments. - * @rx_jabber_frms: Count of received frames of length (including FCS, but not - * framing bits) more than 1518 octets that had bad FCS. In other - * words, counts jabbers. Note: If register - * XMAC_STATS_GLOBAL_CFG.VLAN_HANDLING is set to 1, then "more than - * 1518 octets" becomes "more than 1518 (1522 if VLAN-tagged) octets". - * @rx_ttl_64_frms: Count of total received MAC frames with length (including - * FCS, but not framing bits) of exactly 64 octets. Includes frames - * received with frame-too-long, FCS, or length errors. - * @rx_ttl_65_127_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 65 and 127 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_128_255_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 128 and 255 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_256_511_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 256 and 511 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_512_1023_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 512 and 1023 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_1024_1518_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 1024 and 1518 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_1519_4095_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 1519 and 4095 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_4096_8191_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 4096 and 8191 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_8192_max_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 8192 and - * RX_MAX_PYLD_LEN+18 octets inclusive. Includes frames received - * with frame-too-long, FCS, or length errors. - * @rx_ttl_gt_max_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) exceeding - * RX_MAX_PYLD_LEN+18 (+22 bytes if VLAN-tagged) octets inclusive. - * Includes frames received with frame-too-long, FCS, or length errors. - * @rx_ip: Count of received IP datagrams. Includes errored IP datagrams. - * @rx_accepted_ip: Count of received IP datagrams that are passed to the system - * @rx_ip_octets: Count of number of octets in received IP datagrams. Includes - * errored IP datagrams. - * @rx_err_ip: Count of received IP datagrams containing errors. For example, - * bad IP checksum. - * @rx_icmp: Count of received ICMP messages. Includes errored ICMP messages. - * @rx_tcp: Count of received TCP segments. Includes errored TCP segments. - * Note: This stat contains a count of all received TCP segments, - * regardless of whether or not they pertain to an established - * connection. - * @rx_udp: Count of received UDP datagrams. - * @rx_err_tcp: Count of received TCP segments containing errors. For example, - * bad TCP checksum. - * @rx_pause_count: Count of number of pause quanta that the MAC has been in - * the paused state. Recall, one pause quantum equates to 512 - * bit times. - * @rx_pause_ctrl_frms: Count of received MAC PAUSE control frames. - * @rx_unsup_ctrl_frms: Count of received MAC control frames that do not - * contain the PAUSE opcode. The sum of RX_PAUSE_CTRL_FRMS and - * this register is a count of all received MAC control frames. - * Note: This stat may be configured to count all layer 2 errors - * (i.e. length errors and FCS errors). - * @rx_fcs_err_frms: Count of received MAC frames that do not pass FCS. Does - * not include frames received with frame-too-long or - * frame-too-short error. - * @rx_in_rng_len_err_frms: Count of received frames with a length/type field - * value between 46 (42 for VLAN-tagged frames) and 1500 (also 1500 - * for VLAN-tagged frames), inclusive, that does not match the - * number of data octets (including pad) received. Also contains - * a count of received frames with a length/type field less than - * 46 (42 for VLAN-tagged frames) and the number of data octets - * (including pad) received is greater than 46 (42 for VLAN-tagged - * frames). - * @rx_out_rng_len_err_frms: Count of received frames with length/type field - * between 1501 and 1535 decimal, inclusive. - * @rx_drop_frms: Count of received frames that could not be passed to the host. - * See PORTn_RX_L2_MGMT_DISCARD, PORTn_RX_RPA_DISCARD, - * PORTn_RX_TRASH_DISCARD, PORTn_RX_RTS_DISCARD, PORTn_RX_RED_DISCARD - * for a list of reasons. Because the RMAC drops one frame at a time, - * this stat also indicates the number of drop events. - * @rx_discarded_frms: Count of received frames containing error that prevents - * them from being passed to the system. See PORTn_RX_FCS_DISCARD, - * PORTn_RX_LEN_DISCARD, and PORTn_RX_SWITCH_DISCARD for a list of - * reasons. - * @rx_drop_ip: Count of received IP datagrams that could not be passed to the - * host. See PORTn_RX_DROP_FRMS for a list of reasons. - * @rx_drop_udp: Count of received UDP datagrams that are not delivered to the - * host. See PORTn_RX_DROP_FRMS for a list of reasons. - * @rx_marker_pdu_frms: Count of valid Marker PDUs received on this Aggregation - * port. - * @rx_lacpdu_frms: Count of valid LACPDUs received on this Aggregation port. - * @rx_unknown_pdu_frms: Count of received frames (on this Aggregation port) - * that carry the Slow Protocols EtherType, but contain an unknown - * PDU. Or frames that contain the Slow Protocols group MAC address, - * but do not carry the Slow Protocols EtherType. - * @rx_marker_resp_pdu_frms: Count of valid Marker Response PDUs received on - * this Aggregation port. - * @rx_fcs_discard: Count of received frames that are discarded because the - * FCS check failed. - * @rx_illegal_pdu_frms: Count of received frames (on this Aggregation port) - * that carry the Slow Protocols EtherType, but contain a badly - * formed PDU. Or frames that carry the Slow Protocols EtherType, - * but contain an illegal value of Protocol Subtype. - * @rx_switch_discard: Count of received frames that are discarded by the - * internal switch because they did not have an entry in the - * Filtering Database. This includes frames that had an invalid - * destination MAC address or VLAN ID. It also includes frames are - * discarded because they did not satisfy the length requirements - * of the target VPATH. - * @rx_len_discard: Count of received frames that are discarded because of an - * invalid frame length (includes fragments, oversized frames and - * mismatch between frame length and length/type field). This stat - * can be configured (see XMAC_STATS_GLOBAL_CFG.LEN_DISCARD_HANDLING). - * @rx_rpa_discard: Count of received frames that were discarded because the - * receive protocol assist (RPA) discovered and error in the frame - * or was unable to parse the frame. - * @rx_l2_mgmt_discard: Count of Layer 2 management frames (eg. pause frames, - * Link Aggregation Control Protocol (LACP) frames, etc.) that are - * discarded. - * @rx_rts_discard: Count of received frames that are discarded by the receive - * traffic steering (RTS) logic. Includes those frame discarded - * because the SSC response contradicted the switch table, because - * the SSC timed out, or because the target queue could not fit the - * frame. - * @rx_trash_discard: Count of received frames that are discarded because - * receive traffic steering (RTS) steered the frame to the trash - * queue. - * @rx_buff_full_discard: Count of received frames that are discarded because - * internal buffers are full. Includes frames discarded because the - * RTS logic is waiting for an SSC lookup that has no timeout bound. - * Also, includes frames that are dropped because the MAC2FAU buffer - * is nearly full -- this can happen if the external receive buffer - * is full and the receive path is backing up. - * @rx_red_discard: Count of received frames that are discarded because of RED - * (Random Early Discard). - * @rx_xgmii_ctrl_err_cnt: Maintains a count of unexpected or misplaced control - * characters occurring between times of normal data transmission - * (i.e. not included in RX_XGMII_DATA_ERR_CNT). This counter is - * incremented when either - - * 1) The Reconciliation Sublayer (RS) is expecting one control - * character and gets another (i.e. is expecting a Start - * character, but gets another control character). - * 2) Start control character is not in lane 0 - * Only increments the count by one for each XGMII column. - * @rx_xgmii_data_err_cnt: Maintains a count of unexpected control characters - * during normal data transmission. If the Reconciliation Sublayer - * (RS) receives a control character, other than a terminate control - * character, during receipt of data octets then this register is - * incremented. Also increments if the start frame delimiter is not - * found in the correct location. Only increments the count by one - * for each XGMII column. - * @rx_xgmii_char1_match: Maintains a count of the number of XGMII characters - * that match a pattern that is programmable through register - * XMAC_STATS_RX_XGMII_CHAR_PORTn. By default, the pattern is set - * to /E/ (i.e. the error character), thus the statistic tracks the - * number of Error characters received at any time. - * @rx_xgmii_err_sym: Count of the number of symbol errors in the received - * XGMII data (i.e. PHY indicates "Receive Error" on the XGMII). - * Only includes symbol errors that are observed between the XGMII - * Start Frame Delimiter and End Frame Delimiter, inclusive. And - * only increments the count by one for each frame. - * @rx_xgmii_column1_match: Maintains a count of the number of XGMII columns - * that match a pattern that is programmable through register - * XMAC_STATS_RX_XGMII_COLUMN1_PORTn. By default, the pattern is set - * to 4 x /E/ (i.e. a column containing all error characters), thus - * the statistic tracks the number of Error columns received at any - * time. - * @rx_xgmii_char2_match: Maintains a count of the number of XGMII characters - * that match a pattern that is programmable through register - * XMAC_STATS_RX_XGMII_CHAR_PORTn. By default, the pattern is set - * to /E/ (i.e. the error character), thus the statistic tracks the - * number of Error characters received at any time. - * @rx_local_fault: Maintains a count of the number of times that link - * transitioned from "up" to "down" due to a local fault. - * @rx_xgmii_column2_match: Maintains a count of the number of XGMII columns - * that match a pattern that is programmable through register - * XMAC_STATS_RX_XGMII_COLUMN2_PORTn. By default, the pattern is set - * to 4 x /E/ (i.e. a column containing all error characters), thus - * the statistic tracks the number of Error columns received at any - * time. If XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_PORTn.NEAR_COL1 is set - * to 1, then this stat increments when COLUMN2 is found within 'n' - * clocks after COLUMN1. Here, 'n' is defined by - * XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_PORTn.NUM_COL (if 'n' is set to - * 0, then it means to search anywhere for COLUMN2). - * @rx_jettison: Count of received frames that are jettisoned because internal - * buffers are full. - * @rx_remote_fault: Maintains a count of the number of times that link - * transitioned from "up" to "down" due to a remote fault. - * - * XMAC Port Statistics. - */ -#pragma pack(1) -typedef struct vxge_hal_xmac_port_stats_t { -/* 0x000 */ u64 tx_ttl_frms; -/* 0x008 */ u64 tx_ttl_octets; -/* 0x010 */ u64 tx_data_octets; -/* 0x018 */ u64 tx_mcast_frms; -/* 0x020 */ u64 tx_bcast_frms; -/* 0x028 */ u64 tx_ucast_frms; -/* 0x030 */ u64 tx_tagged_frms; -/* 0x038 */ u64 tx_vld_ip; -/* 0x040 */ u64 tx_vld_ip_octets; -/* 0x048 */ u64 tx_icmp; -/* 0x050 */ u64 tx_tcp; -/* 0x058 */ u64 tx_rst_tcp; -/* 0x060 */ u64 tx_udp; -/* 0x068 */ u32 tx_parse_error; -/* 0x06c */ u32 tx_unknown_protocol; -/* 0x070 */ u64 tx_pause_ctrl_frms; -/* 0x078 */ u32 tx_marker_pdu_frms; -/* 0x07c */ u32 tx_lacpdu_frms; -/* 0x080 */ u32 tx_drop_ip; -/* 0x084 */ u32 tx_marker_resp_pdu_frms; -/* 0x088 */ u32 tx_xgmii_char2_match; -/* 0x08c */ u32 tx_xgmii_char1_match; -/* 0x090 */ u32 tx_xgmii_column2_match; -/* 0x094 */ u32 tx_xgmii_column1_match; -/* 0x098 */ u32 unused1; -/* 0x09c */ u16 tx_any_err_frms; -/* 0x09e */ u16 tx_drop_frms; -/* 0x0a0 */ u64 rx_ttl_frms; -/* 0x0a8 */ u64 rx_vld_frms; -/* 0x0b0 */ u64 rx_offload_frms; -/* 0x0b8 */ u64 rx_ttl_octets; -/* 0x0c0 */ u64 rx_data_octets; -/* 0x0c8 */ u64 rx_offload_octets; -/* 0x0d0 */ u64 rx_vld_mcast_frms; -/* 0x0d8 */ u64 rx_vld_bcast_frms; -/* 0x0e0 */ u64 rx_accepted_ucast_frms; -/* 0x0e8 */ u64 rx_accepted_nucast_frms; -/* 0x0f0 */ u64 rx_tagged_frms; -/* 0x0f8 */ u64 rx_long_frms; -/* 0x100 */ u64 rx_usized_frms; -/* 0x108 */ u64 rx_osized_frms; -/* 0x110 */ u64 rx_frag_frms; -/* 0x118 */ u64 rx_jabber_frms; -/* 0x120 */ u64 rx_ttl_64_frms; -/* 0x128 */ u64 rx_ttl_65_127_frms; -/* 0x130 */ u64 rx_ttl_128_255_frms; -/* 0x138 */ u64 rx_ttl_256_511_frms; -/* 0x140 */ u64 rx_ttl_512_1023_frms; -/* 0x148 */ u64 rx_ttl_1024_1518_frms; -/* 0x150 */ u64 rx_ttl_1519_4095_frms; -/* 0x158 */ u64 rx_ttl_4096_8191_frms; -/* 0x160 */ u64 rx_ttl_8192_max_frms; -/* 0x168 */ u64 rx_ttl_gt_max_frms; -/* 0x170 */ u64 rx_ip; -/* 0x178 */ u64 rx_accepted_ip; -/* 0x180 */ u64 rx_ip_octets; -/* 0x188 */ u64 rx_err_ip; -/* 0x190 */ u64 rx_icmp; -/* 0x198 */ u64 rx_tcp; -/* 0x1a0 */ u64 rx_udp; -/* 0x1a8 */ u64 rx_err_tcp; -/* 0x1b0 */ u64 rx_pause_count; -/* 0x1b8 */ u64 rx_pause_ctrl_frms; -/* 0x1c0 */ u64 rx_unsup_ctrl_frms; -/* 0x1c8 */ u64 rx_fcs_err_frms; -/* 0x1d0 */ u64 rx_in_rng_len_err_frms; -/* 0x1d8 */ u64 rx_out_rng_len_err_frms; -/* 0x1e0 */ u64 rx_drop_frms; -/* 0x1e8 */ u64 rx_discarded_frms; -/* 0x1f0 */ u64 rx_drop_ip; -/* 0x1f8 */ u64 rx_drop_udp; -/* 0x200 */ u32 rx_marker_pdu_frms; -/* 0x204 */ u32 rx_lacpdu_frms; -/* 0x208 */ u32 rx_unknown_pdu_frms; -/* 0x20c */ u32 rx_marker_resp_pdu_frms; -/* 0x210 */ u32 rx_fcs_discard; -/* 0x214 */ u32 rx_illegal_pdu_frms; -/* 0x218 */ u32 rx_switch_discard; -/* 0x21c */ u32 rx_len_discard; -/* 0x220 */ u32 rx_rpa_discard; -/* 0x224 */ u32 rx_l2_mgmt_discard; -/* 0x228 */ u32 rx_rts_discard; -/* 0x22c */ u32 rx_trash_discard; -/* 0x230 */ u32 rx_buff_full_discard; -/* 0x234 */ u32 rx_red_discard; -/* 0x238 */ u32 rx_xgmii_ctrl_err_cnt; -/* 0x23c */ u32 rx_xgmii_data_err_cnt; -/* 0x240 */ u32 rx_xgmii_char1_match; -/* 0x244 */ u32 rx_xgmii_err_sym; -/* 0x248 */ u32 rx_xgmii_column1_match; -/* 0x24c */ u32 rx_xgmii_char2_match; -/* 0x250 */ u32 rx_local_fault; -/* 0x254 */ u32 rx_xgmii_column2_match; -/* 0x258 */ u32 rx_jettison; -/* 0x25c */ u32 rx_remote_fault; -} vxge_hal_xmac_port_stats_t; - -#pragma pack() - -/* - * struct vxge_hal_mrpcim_xmac_stats_t - XMAC Statistics - * - * @aggr_stats: Statistics on aggregate port(port 0, port 1) - * @port_stats: Staticstics on ports(wire 0, wire 1, lag) - * - * XMAC Statistics. - */ -typedef struct vxge_hal_mrpcim_xmac_stats_t { - vxge_hal_xmac_aggr_stats_t aggr_stats[VXGE_HAL_MAC_MAX_AGGR_PORTS]; - vxge_hal_xmac_port_stats_t port_stats[VXGE_HAL_MAC_MAX_PORTS]; -} vxge_hal_mrpcim_xmac_stats_t; - -/* - * struct vxge_hal_xmac_vpath_tx_stats_t - XMAC Vpath Tx Statistics - * - * @tx_ttl_eth_frms: Count of successfully transmitted MAC frames. - * @tx_ttl_eth_octets: Count of total octets of transmitted frames, - * not including framing characters (i.e. less framing bits). - * To determine the total octets of transmitted frames, including - * framing characters, multiply TX_TTL_ETH_FRMS by 8 and add it to - * this stat (the device always prepends 8 bytes of preamble for - * each frame) - * @tx_data_octets: Count of data and padding octets of successfully transmitted - * frames. - * @tx_mcast_frms: Count of successfully transmitted frames to a group address - * other than the broadcast address. - * @tx_bcast_frms: Count of successfully transmitted frames to the broadcast - * group address. - * @tx_ucast_frms: Count of transmitted frames containing a unicast address. - * Includes discarded frames that are not sent to the network. - * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag. - * @tx_vld_ip: Count of transmitted IP datagrams that are passed to the network. - * @tx_vld_ip_octets: Count of total octets of transmitted IP datagrams that - * are passed to the network. - * @tx_icmp: Count of transmitted ICMP messages. Includes messages not sent due - * to problems within ICMP. - * @tx_tcp: Count of transmitted TCP segments. Does not include segments - * containing retransmitted octets. - * @tx_rst_tcp: Count of transmitted TCP segments containing the RST flag. - * @tx_udp: Count of transmitted UDP datagrams. - * @tx_unknown_protocol: Increments when the TPA encounters an unknown protocol, - * such as a new IPv6 extension header, or an unsupported Routing - * Type. The packet still has a checksum calculated but it may be - * incorrect. - * @tx_lost_ip: Count of transmitted IP datagrams that could not be passed - * to the network. Increments because of: 1) An internal processing - * error (such as an uncorrectable ECC error). 2) A frame parsing - * error during IP checksum calculation. - * @unused1: Reserved. - * @tx_parse_error: Increments when the TPA is unable to parse a packet. This - * generally occurs when a packet is corrupt somehow, including - * packets that have IP version mismatches, invalid Layer 2 control - * fields, etc. L3/L4 checksums are not offloaded, but the packet - * is still be transmitted. - * @tx_tcp_offload: For frames belonging to offloaded sessions only, a count - * of transmitted TCP segments. Does not include segments containing - * retransmitted octets. - * @tx_retx_tcp_offload: For frames belonging to offloaded sessions only, the - * total number of segments retransmitted. Retransmitted segments - * that are sourced by the host are counted by the host. - * @tx_lost_ip_offload: For frames belonging to offloaded sessions only, a count - * of transmitted IP datagrams that could not be passed to the - * network. - * - * XMAC Vpath TX Statistics. - */ -#pragma pack(1) -typedef struct vxge_hal_xmac_vpath_tx_stats_t { - u64 tx_ttl_eth_frms; - u64 tx_ttl_eth_octets; - u64 tx_data_octets; - u64 tx_mcast_frms; - u64 tx_bcast_frms; - u64 tx_ucast_frms; - u64 tx_tagged_frms; - u64 tx_vld_ip; - u64 tx_vld_ip_octets; - u64 tx_icmp; - u64 tx_tcp; - u64 tx_rst_tcp; - u64 tx_udp; - u32 tx_unknown_protocol; - u32 tx_lost_ip; - u32 unused1; - u32 tx_parse_error; - u64 tx_tcp_offload; - u64 tx_retx_tcp_offload; - u64 tx_lost_ip_offload; -} vxge_hal_xmac_vpath_tx_stats_t; - -#pragma pack() - -/* - * struct vxge_hal_xmac_vpath_rx_stats_t - XMAC Vpath RX Statistics - * - * @rx_ttl_eth_frms: Count of successfully received MAC frames. - * @rx_vld_frms: Count of successfully received MAC frames. Does not include - * frames received with frame-too-long, FCS, or length errors. - * @rx_offload_frms: Count of offloaded received frames that are passed to - * the host. - * @rx_ttl_eth_octets: Count of total octets of received frames, not including - * framing characters (i.e. less framing bits). Only counts octets - * of frames that are at least 14 bytes (18 bytes for VLAN-tagged) - * before FCS. To determine the total octets of received frames, - * including framing characters, multiply RX_TTL_ETH_FRMS by 8 and - * add it to this stat (the stat RX_TTL_ETH_FRMS only counts frames - * that have the required 8 bytes of preamble). - * @rx_data_octets: Count of data and padding octets of successfully received - * frames. Does not include frames received with frame-too-long, - * FCS, or length errors. - * @rx_offload_octets: Count of total octets, not including framing characters, - * of offloaded received frames that are passed to the host. - * @rx_vld_mcast_frms: Count of successfully received MAC frames containing a - * nonbroadcast group address. Does not include frames received with - * frame-too-long, FCS, or length errors. - * @rx_vld_bcast_frms: Count of successfully received MAC frames containing the - * broadcast group address. Does not include frames received with - * frame-too-long, FCS, or length errors. - * @rx_accepted_ucast_frms: Count of successfully received frames containing - * a unicast address. Only includes frames that are passed to the - * system. - * @rx_accepted_nucast_frms: Count of successfully received frames containing - * a non-unicast (broadcast or multicast) address. Only includes - * frames that are passed to the system. Could include, for instance, - * non-unicast frames that contain FCS errors if the MAC_ERROR_CFG - * register is set to pass FCS-errored frames to the host. - * @rx_tagged_frms: Count of received frames containing a VLAN tag. - * @rx_long_frms: Count of received frames that are longer than RX_MAX_PYLD_LEN - * + 18 bytes (+ 22 bytes if VLAN-tagged). - * @rx_usized_frms: Count of received frames of length (including FCS, but not - * framing bits) less than 64 octets, that are otherwise well-formed. - * In other words, counts runts. - * @rx_osized_frms: Count of received frames of length (including FCS, but not - * framing bits) more than 1518 octets, that are otherwise - * well-formed. - * @rx_frag_frms: Count of received frames of length (including FCS, but not - * framing bits) less than 64 octets that had bad FCS. In other words, - * counts fragments. - * @rx_jabber_frms: Count of received frames of length (including FCS, but not - * framing bits) more than 1518 octets that had bad FCS. In other - * words, counts jabbers. - * @rx_ttl_64_frms: Count of total received MAC frames with length (including - * FCS, but not framing bits) of exactly 64 octets. Includes frames - * received with frame-too-long, FCS, or length errors. - * @rx_ttl_65_127_frms: Count of total received MAC frames with length(including - * FCS, but not framing bits) of between 65 and 127 octets inclusive. - * Includes frames received with frame-too-long, FCS, or length errors. - * @rx_ttl_128_255_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 128 and 255 octets - * inclusive. Includes frames received with frame-too-long, FCS, - * or length errors. - * @rx_ttl_256_511_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 256 and 511 octets - * inclusive. Includes frames received with frame-too-long, FCS, or - * length errors. - * @rx_ttl_512_1023_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 512 and 1023 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_1024_1518_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 1024 and 1518 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_1519_4095_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 1519 and 4095 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_4096_8191_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 4096 and 8191 - * octets inclusive. Includes frames received with frame-too-long, - * FCS, or length errors. - * @rx_ttl_8192_max_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) of between 8192 and - * RX_MAX_PYLD_LEN+18 octets inclusive. Includes frames received - * with frame-too-long, FCS, or length errors. - * @rx_ttl_gt_max_frms: Count of total received MAC frames with length - * (including FCS, but not framing bits) exceeding RX_MAX_PYLD_LEN+18 - * (+22 bytes if VLAN-tagged) octets inclusive. Includes frames - * received with frame-too-long, FCS, or length errors. - * @rx_ip: Count of received IP datagrams. Includes errored IP datagrams. - * @rx_accepted_ip: Count of received IP datagrams that are passed to the system - * @rx_ip_octets: Count of number of octets in received IP datagrams. - * Includes errored IP datagrams. - * @rx_err_ip: Count of received IP datagrams containing errors. For example, - * bad IP checksum. - * @rx_icmp: Count of received ICMP messages. Includes errored ICMP messages. - * @rx_tcp: Count of received TCP segments. Includes errored TCP segments. - * Note: This stat contains a count of all received TCP segments, - * regardless of whether or not they pertain to an established - * connection. - * @rx_udp: Count of received UDP datagrams. - * @rx_err_tcp: Count of received TCP segments containing errors. For example, - * bad TCP checksum. - * @rx_lost_frms: Count of received frames that could not be passed to the host. - * See RX_QUEUE_FULL_DISCARD and RX_RED_DISCARD for list of reasons - * @rx_lost_ip: Count of received IP datagrams that could not be passed to - * the host. See RX_LOST_FRMS for a list of reasons. - * @rx_lost_ip_offload: For frames belonging to offloaded sessions only, a count - * of received IP datagrams that could not be passed to the host. - * See RX_LOST_FRMS for a list of reasons. - * @rx_various_discard: Count of received frames that are discarded because - * the target receive queue is full. - * @rx_sleep_discard: Count of received frames that are discarded because the - * target VPATH is asleep (a Wake-on-LAN magic packet can be used - * to awaken the VPATH). - * @rx_red_discard: Count of received frames that are discarded because of RED - * (Random Early Discard). - * @rx_queue_full_discard: Count of received frames that are discarded because - * the target receive queue is full. - * @rx_mpa_ok_frms: Count of received frames that pass the MPA checks. - * - * XMAC Vpath RX Statistics. - */ -#pragma pack(1) -typedef struct vxge_hal_xmac_vpath_rx_stats_t { - u64 rx_ttl_eth_frms; - u64 rx_vld_frms; - u64 rx_offload_frms; - u64 rx_ttl_eth_octets; - u64 rx_data_octets; - u64 rx_offload_octets; - u64 rx_vld_mcast_frms; - u64 rx_vld_bcast_frms; - u64 rx_accepted_ucast_frms; - u64 rx_accepted_nucast_frms; - u64 rx_tagged_frms; - u64 rx_long_frms; - u64 rx_usized_frms; - u64 rx_osized_frms; - u64 rx_frag_frms; - u64 rx_jabber_frms; - u64 rx_ttl_64_frms; - u64 rx_ttl_65_127_frms; - u64 rx_ttl_128_255_frms; - u64 rx_ttl_256_511_frms; - u64 rx_ttl_512_1023_frms; - u64 rx_ttl_1024_1518_frms; - u64 rx_ttl_1519_4095_frms; - u64 rx_ttl_4096_8191_frms; - u64 rx_ttl_8192_max_frms; - u64 rx_ttl_gt_max_frms; - u64 rx_ip; - u64 rx_accepted_ip; - u64 rx_ip_octets; - u64 rx_err_ip; - u64 rx_icmp; - u64 rx_tcp; - u64 rx_udp; - u64 rx_err_tcp; - u64 rx_lost_frms; - u64 rx_lost_ip; - u64 rx_lost_ip_offload; - u16 rx_various_discard; - u16 rx_sleep_discard; - u16 rx_red_discard; - u16 rx_queue_full_discard; - u64 rx_mpa_ok_frms; -} vxge_hal_xmac_vpath_rx_stats_t; - -#pragma pack() - -/* - * struct vxge_hal_device_xmac_stats_t - XMAC Statistics - * - * @vpath_tx_stats: Per vpath XMAC TX stats - * @vpath_rx_stats: Per vpath XMAC RX stats - * - * XMAC Statistics. - */ -typedef struct vxge_hal_device_xmac_stats_t { - vxge_hal_xmac_vpath_tx_stats_t vpath_tx_stats[VXGE_HAL_MAX_VIRTUAL_PATHS]; - vxge_hal_xmac_vpath_rx_stats_t vpath_rx_stats[VXGE_HAL_MAX_VIRTUAL_PATHS]; -} vxge_hal_device_xmac_stats_t; - -/* - * struct vxge_hal_vpath_stats_hw_info_t - X3100 vpath hardware statistics. - * @ini_num_mwr_sent: The number of PCI memory writes initiated by the PIC block - * for the given VPATH - * @unused1: Reserved - * @ini_num_mrd_sent: The number of PCI memory reads initiated by the PIC block - * @unused2: Reserved - * @ini_num_cpl_rcvd: The number of PCI read completions received by the - * PIC block - * @unused3: Reserved - * @ini_num_mwr_byte_sent: The number of PCI memory write bytes sent by the PIC - * block to the host - * @ini_num_cpl_byte_rcvd: The number of PCI read completion bytes received by - * the PIC block - * @wrcrdtarb_xoff: TBD - * @unused4: Reserved - * @rdcrdtarb_xoff: TBD - * @unused5: Reserved - * @vpath_genstats_count0: Configurable statistic #1. Refer to the GENSTATS0_CFG - * for information on configuring this statistic - * @vpath_genstats_count1: Configurable statistic #2. Refer to the GENSTATS1_CFG - * for information on configuring this statistic - * @vpath_genstats_count2: Configurable statistic #3. Refer to the GENSTATS2_CFG - * for information on configuring this statistic - * @vpath_genstats_count3: Configurable statistic #4. Refer to the GENSTATS3_CFG - * for information on configuring this statistic - * @vpath_genstats_count4: Configurable statistic #5. Refer to the GENSTATS4_CFG - * for information on configuring this statistic - * @unused6: Reserved - * @vpath_gennstats_count5: Configurable statistic #6. Refer to the - * GENSTATS5_CFG for information on configuring this statistic - * @unused7: Reserved - * @tx_stats: Transmit stats - * @rx_stats: Receive stats - * @unused9: Reserved - * @prog_event_vnum1: Programmable statistic. Increments when internal logic - * detects a certain event. See register - * XMAC_STATS_CFG.EVENT_VNUM1_CFG for more information. - * @prog_event_vnum0: Programmable statistic. Increments when internal logic - * detects a certain event. See register - * XMAC_STATS_CFG.EVENT_VNUM0_CFG for more information. - * @prog_event_vnum3: Programmable statistic. Increments when internal logic - * detects a certain event. See register - * XMAC_STATS_CFG.EVENT_VNUM3_CFG for more information. - * @prog_event_vnum2: Programmable statistic. Increments when internal logic - * detects a certain event. See register - * XMAC_STATS_CFG.EVENT_VNUM2_CFG for more information. - * @rx_multi_cast_frame_discard: TBD - * @unused10: Reserved - * @rx_frm_transferred: TBD - * @unused11: Reserved - * @rxd_returned: TBD - * @unused12: Reserved - * @rx_mpa_len_fail_frms: Count of received frames failed the MPA length check - * @rx_mpa_mrk_fail_frms: Count of received frames failed the MPA marker check - * @rx_mpa_crc_fail_frms: Count of received frames failed the MPA CRC check - * @rx_permitted_frms: Count of frames that pass through the FAU and on to the - * frame buffer (and subsequently to the host). - * @rx_vp_reset_discarded_frms: Count of receive frames that are discarded - * because the VPATH is in reset - * @rx_wol_frms: Count of received "magic packet" frames. Stat increments - * whenever the received frame matches the VPATH's Wake-on-LAN - * signature(s) CRC. - * @tx_vp_reset_discarded_frms: Count of transmit frames that are discarded - * because the VPATH is in reset.Includes frames that are discarded - * because the current VPIN does not match that VPIN of the frame - * - * X3100 vpath hardware statistics. - */ -#pragma pack(1) -typedef struct vxge_hal_vpath_stats_hw_info_t { -/* 0x000 */ u32 ini_num_mwr_sent; -/* 0x004 */ u32 unused1; -/* 0x008 */ u32 ini_num_mrd_sent; -/* 0x00c */ u32 unused2; -/* 0x010 */ u32 ini_num_cpl_rcvd; -/* 0x014 */ u32 unused3; -/* 0x018 */ u64 ini_num_mwr_byte_sent; -/* 0x020 */ u64 ini_num_cpl_byte_rcvd; -/* 0x028 */ u32 wrcrdtarb_xoff; -/* 0x02c */ u32 unused4; -/* 0x030 */ u32 rdcrdtarb_xoff; -/* 0x034 */ u32 unused5; -/* 0x038 */ u32 vpath_genstats_count0; -/* 0x03c */ u32 vpath_genstats_count1; -/* 0x040 */ u32 vpath_genstats_count2; -/* 0x044 */ u32 vpath_genstats_count3; -/* 0x048 */ u32 vpath_genstats_count4; -/* 0x04c */ u32 unused6; -/* 0x050 */ u32 vpath_genstats_count5; -/* 0x054 */ u32 unused7; -/* 0x058 */ vxge_hal_xmac_vpath_tx_stats_t tx_stats; -/* 0x0e8 */ vxge_hal_xmac_vpath_rx_stats_t rx_stats; -/* 0x220 */ u64 unused9; -/* 0x228 */ u32 prog_event_vnum1; -/* 0x22c */ u32 prog_event_vnum0; -/* 0x230 */ u32 prog_event_vnum3; -/* 0x234 */ u32 prog_event_vnum2; -/* 0x238 */ u16 rx_multi_cast_frame_discard; -/* 0x23a */ u8 unused10[6]; -/* 0x240 */ u32 rx_frm_transferred; -/* 0x244 */ u32 unused11; -/* 0x248 */ u16 rxd_returned; -/* 0x24a */ u8 unused12[6]; -/* 0x252 */ u16 rx_mpa_len_fail_frms; -/* 0x254 */ u16 rx_mpa_mrk_fail_frms; -/* 0x256 */ u16 rx_mpa_crc_fail_frms; -/* 0x258 */ u16 rx_permitted_frms; -/* 0x25c */ u64 rx_vp_reset_discarded_frms; -/* 0x25e */ u64 rx_wol_frms; -/* 0x260 */ u64 tx_vp_reset_discarded_frms; -} vxge_hal_vpath_stats_hw_info_t; - -#pragma pack() - -/* - * struct vxge_hal_device_stats_mrpcim_info_t - X3100 mrpcim hardware - * statistics. - * @pic_ini_rd_drop: Number of DMA reads initiated by the adapter that were - * discarded because the VPATH is out of service - * @pic_ini_wr_drop: Number of DMA writes initiated by the adapter that were - * discared because the VPATH is out of service - * @pic_wrcrdtarb_ph_crdt_depleted: Number of times the posted header credits - * for upstream PCI writes were depleted - * @unused1: Reserved - * @pic_wrcrdtarb_ph_crdt_depleted_vplane: Array of structures containing above - * two fields. - * @pic_wrcrdtarb_pd_crdt_depleted: Number of times the posted data credits for - * upstream PCI writes were depleted - * @unused2: Reserved - * @pic_wrcrdtarb_pd_crdt_depleted_vplane: Array of structures containing above - * two fields. - * @pic_rdcrdtarb_nph_crdt_depleted: Number of times the non-posted header - * credits for upstream PCI reads were depleted - * @unused3: Reserved - * @pic_rdcrdtarb_nph_crdt_depleted_vplane: Array of structures containing above - * two fields. - * @pic_ini_rd_vpin_drop: Number of DMA reads initiated by the adapter that were - * discarded because the VPATH instance number does not match - * @pic_ini_wr_vpin_drop: Number of DMA writes initiated by the adapter that - * were discarded because the VPATH instance number does not match - * @pic_genstats_count0: Configurable statistic #1. Refer to the GENSTATS0_CFG - * for information on configuring this statistic - * @pic_genstats_count1: Configurable statistic #2. Refer to the GENSTATS1_CFG - * for information on configuring this statistic - * @pic_genstats_count2: Configurable statistic #3. Refer to the GENSTATS2_CFG - * for information on configuring this statistic - * @pic_genstats_count3: Configurable statistic #4. Refer to the GENSTATS3_CFG - * for information on configuring this statistic - * @pic_genstats_count4: Configurable statistic #5. Refer to the GENSTATS4_CFG - * for information on configuring this statistic - * @unused4: Reserved - * @pic_genstats_count5: Configurable statistic #6. Refer to the GENSTATS5_CFG - * for information on configuring this statistic - * @unused5: Reserved - * @pci_rstdrop_cpl: TBD - * @pci_rstdrop_msg: TBD - * @pci_rstdrop_client1: TBD - * @pci_rstdrop_client0: TBD - * @pci_rstdrop_client2: TBD - * @unused6: Reserved - * @unused7: Reserved - * @pci_depl_cplh: Number of times completion header credits were depleted - * @pci_depl_nph: Number of times non posted header credits were depleted - * @pci_depl_ph: Number of times the posted header credits were depleted - * @pci_depl_h_vplane: Array of structures containing above four fields. - * @unused8: Reserved - * @pci_depl_cpld: Number of times completion data credits were depleted - * @pci_depl_npd: Number of times non posted data credits were depleted - * @pci_depl_pd: Number of times the posted data credits were depleted - * @pci_depl_d_vplane: Array of structures containing above four fields. - * @xgmac_port: Array of xmac port stats - * @xgmac_aggr: Array of aggr port stats - * @xgmac_global_prog_event_gnum0: Programmable statistic. Increments when - * internal logic detects a certain event. See register - * XMAC_STATS_GLOBAL_CFG.EVENT_GNUM0_CFG for more information. - * @xgmac_global_prog_event_gnum1: Programmable statistic. Increments when - * internal logic detects a certain event. See register - * XMAC_STATS_GLOBAL_CFG.EVENT_GNUM1_CFG for more information. - * @unused9: Reserved - * @xgmac.orp_lro_events: TBD - * @xgmac.orp_bs_events: TBD - * @xgmac.orp_iwarp_events: TBD - * @unused10: Reserved - * @xgmac.tx_permitted_frms: TBD - * @unused11: Reserved - * @unused12: Reserved - * @xgmac.port2_tx_any_frms: TBD - * @xgmac.port1_tx_any_frms: TBD - * @xgmac.port0_tx_any_frms: TBD - * @unused13: Reserved - * @unused14: Reserved - * @xgmac.port2_rx_any_frms: TBD - * @xgmac.port1_rx_any_frms: TBD - * @xgmac.port0_rx_any_frms: TBD - * - * X3100 mrpcim hardware statistics. - */ -#pragma pack(1) -typedef struct vxge_hal_mrpcim_stats_hw_info_t { -/* 0x0000 */ u32 pic_ini_rd_drop; -/* 0x0004 */ u32 pic_ini_wr_drop; -/* 0x0008 */ struct { - /* 0x0000 */ u32 pic_wrcrdtarb_ph_crdt_depleted; - /* 0x0004 */ u32 unused1; - } pic_wrcrdtarb_ph_crdt_depleted_vplane[17]; -/* 0x0090 */ struct { - /* 0x0000 */ u32 pic_wrcrdtarb_pd_crdt_depleted; - /* 0x0004 */ u32 unused2; - } pic_wrcrdtarb_pd_crdt_depleted_vplane[17]; -/* 0x0118 */ struct { - /* 0x0000 */ u32 pic_rdcrdtarb_nph_crdt_depleted; - /* 0x0004 */ u32 unused3; - } pic_rdcrdtarb_nph_crdt_depleted_vplane[17]; -/* 0x01a0 */ u32 pic_ini_rd_vpin_drop; -/* 0x01a4 */ u32 pic_ini_wr_vpin_drop; -/* 0x01a8 */ u32 pic_genstats_count0; -/* 0x01ac */ u32 pic_genstats_count1; -/* 0x01b0 */ u32 pic_genstats_count2; -/* 0x01b4 */ u32 pic_genstats_count3; -/* 0x01b8 */ u32 pic_genstats_count4; -/* 0x01bc */ u32 unused4; -/* 0x01c0 */ u32 pic_genstats_count5; -/* 0x01c4 */ u32 unused5; -/* 0x01c8 */ u32 pci_rstdrop_cpl; -/* 0x01cc */ u32 pci_rstdrop_msg; -/* 0x01d0 */ u32 pci_rstdrop_client1; -/* 0x01d4 */ u32 pci_rstdrop_client0; -/* 0x01d8 */ u32 pci_rstdrop_client2; -/* 0x01dc */ u32 unused6; -/* 0x01e0 */ struct { - /* 0x0000 */ u16 unused7; - /* 0x0002 */ u16 pci_depl_cplh; - /* 0x0004 */ u16 pci_depl_nph; - /* 0x0006 */ u16 pci_depl_ph; - } pci_depl_h_vplane[17]; -/* 0x0268 */ struct { - /* 0x0000 */ u16 unused8; - /* 0x0002 */ u16 pci_depl_cpld; - /* 0x0004 */ u16 pci_depl_npd; - /* 0x0006 */ u16 pci_depl_pd; - } pci_depl_d_vplane[17]; -/* 0x02f0 */ vxge_hal_xmac_port_stats_t xgmac_port[3]; -/* 0x0a10 */ vxge_hal_xmac_aggr_stats_t xgmac_aggr[2]; -/* 0x0ae0 */ u64 xgmac_global_prog_event_gnum0; -/* 0x0ae8 */ u64 xgmac_global_prog_event_gnum1; -/* 0x0af0 */ u64 unused9; -/* 0x0af8 */ u64 xgmac_orp_lro_events; -/* 0x0b00 */ u64 xgmac_orp_bs_events; -/* 0x0b08 */ u64 xgmac_orp_iwarp_events; -/* 0x0b10 */ u32 unused10; -/* 0x0b14 */ u32 xgmac_tx_permitted_frms; -/* 0x0b18 */ u32 unused11; -/* 0x0b1c */ u8 unused12; -/* 0x0b1d */ u8 xgmac_port2_tx_any_frms; -/* 0x0b1e */ u8 xgmac_port1_tx_any_frms; -/* 0x0b1f */ u8 xgmac_port0_tx_any_frms; -/* 0x0b20 */ u32 unused13; -/* 0x0b24 */ u8 unused14; -/* 0x0b25 */ u8 xgmac_port2_rx_any_frms; -/* 0x0b26 */ u8 xgmac_port1_rx_any_frms; -/* 0x0b27 */ u8 xgmac_port0_rx_any_frms; -} vxge_hal_mrpcim_stats_hw_info_t; - -#pragma pack() - -/* - * struct vxge_hal_mrpcim_xpak_stats_t - HAL xpak stats - * @excess_temp: excess transceiver_temperature count - * @excess_bias_current: excess laser_bias_current count - * @excess_laser_output: excess laser_output_power count - * @alarm_transceiver_temp_high: alarm_transceiver_temp_high count value - * @alarm_transceiver_temp_low : alarm_transceiver_temp_low count value - * @alarm_laser_bias_current_high: alarm_laser_bias_current_high count value - * @alarm_laser_bias_current_low: alarm_laser_bias_current_low count value - * @alarm_laser_output_power_high: alarm_laser_output_power_high count value - * @alarm_laser_output_power_low: alarm_laser_output_power_low count value - * @warn_transceiver_temp_high: warn_transceiver_temp_high count value - * @warn_transceiver_temp_low: warn_transceiver_temp_low count value - * @warn_laser_bias_current_high: warn_laser_bias_current_high count value - * @warn_laser_bias_current_low: warn_laser_bias_current_low count value - * @warn_laser_output_power_high: warn_laser_output_power_high count value - * @warn_laser_output_power_low: warn_laser_output_power_low count value - */ -typedef struct vxge_hal_mrpcim_xpak_stats_t { - u32 excess_temp; - u32 excess_bias_current; - u32 excess_laser_output; - u16 alarm_transceiver_temp_high; - u16 alarm_transceiver_temp_low; - u16 alarm_laser_bias_current_high; - u16 alarm_laser_bias_current_low; - u16 alarm_laser_output_power_high; - u16 alarm_laser_output_power_low; - u16 warn_transceiver_temp_high; - u16 warn_transceiver_temp_low; - u16 warn_laser_bias_current_high; - u16 warn_laser_bias_current_low; - u16 warn_laser_output_power_high; - u16 warn_laser_output_power_low; -} vxge_hal_mrpcim_xpak_stats_t; - -/* - * struct vxge_hal_device_stats_hw_info_t - X3100 hardware statistics. - * @vpath_info: VPath statistics - * @vpath_info_sav: Vpath statistics saved - * - * X3100 hardware statistics. - */ -typedef struct vxge_hal_device_stats_hw_info_t { - vxge_hal_vpath_stats_hw_info_t *vpath_info[VXGE_HAL_MAX_VIRTUAL_PATHS]; - vxge_hal_vpath_stats_hw_info_t vpath_info_sav[VXGE_HAL_MAX_VIRTUAL_PATHS]; -} vxge_hal_device_stats_hw_info_t; - -/* - * struct vxge_hal_vpath_stats_sw_common_info_t - HAL common stats for queues. - * @full_cnt: Number of times the queue was full - * @usage_cnt: usage count. - * @usage_max: Maximum usage - * @avg_compl_per_intr_cnt: Average number of completions per interrupt. - * Note that a total number of completed descriptors - * for the given channel can be calculated as - * (@traffic_intr_cnt * @avg_compl_per_intr_cnt). - * @total_compl_cnt: Total completion count. - * @total_compl_cnt == (@traffic_intr_cnt * @avg_compl_per_intr_cnt). - * - * HAL common counters for queues - * See also: vxge_hal_vpath_stats_sw_fifo_info_t {}, - * vxge_hal_vpath_stats_sw_ring_info_t {}, - * vxge_hal_vpath_stats_sw_dmq_info_t {}, - * vxge_hal_vpath_stats_sw_umq_info_t {}, - * vxge_hal_vpath_stats_sw_srq_info_t {}, - * vxge_hal_vpath_stats_sw_cqrq_info_t {}. - */ -typedef struct vxge_hal_vpath_stats_sw_common_info_t { - u32 full_cnt; - u32 usage_cnt; - u32 usage_max; - u32 avg_compl_per_intr_cnt; - u32 total_compl_cnt; -} vxge_hal_vpath_stats_sw_common_info_t; - -/* - * struct vxge_hal_vpath_stats_sw_fifo_info_t - HAL fifo statistics - * @common_stats: Common counters for all queues - * @total_posts: Total number of postings on the queue. - * @total_buffers: Total number of buffers posted. - * @avg_buffers_per_post: Average number of buffers transferred in a single - * post operation. Calculated as @total_buffers/@total_posts. - * @copied_buffers: Number of buffers copied - * @avg_buffer_size: Average buffer size transferred by a single post - * operation. Calculated as a total number of transmitted octets - * divided by @total_buffers. - * @avg_post_size: Average amount of data transferred by a single post. - * Calculated as a total number of transmitted octets divided by - * @total_posts. - * @total_frags: Total number of fragments - * @copied_frags: Number of fragments copied - * @total_posts_dang_dtrs: Total number of posts involving dangling descriptors. - * @total_posts_dang_frags: Total number of dangling fragments posted during - * post request containing multiple descriptors. - * @txd_t_code_err_cnt: Array of transmit transfer codes. The position - * (index) in this array reflects the transfer code type, for instance - * 0xA - "loss of link". - * Value txd_t_code_err_cnt[i] reflects the - * number of times the corresponding transfer code was encountered. - * - * HAL fifo counters - * See also: vxge_hal_vpath_stats_sw_common_info_t {}, - * vxge_hal_vpath_stats_sw_ring_info_t {}, - * vxge_hal_vpath_stats_sw_dmq_info_t {}, - * vxge_hal_vpath_stats_sw_umq_info_t {}, - * vxge_hal_vpath_stats_sw_sq_info_t {}, - * vxge_hal_vpath_stats_sw_srq_info_t {}, - * vxge_hal_vpath_stats_sw_cqrq_info_t {}. - */ -typedef struct vxge_hal_vpath_stats_sw_fifo_info_t { - vxge_hal_vpath_stats_sw_common_info_t common_stats; - u32 total_posts; - u32 total_buffers; - u32 avg_buffers_per_post; - u32 copied_buffers; - u32 avg_buffer_size; - u32 avg_post_size; - u32 total_frags; - u32 copied_frags; - u32 total_posts_dang_dtrs; - u32 total_posts_dang_frags; - u32 txd_t_code_err_cnt[16]; -} vxge_hal_vpath_stats_sw_fifo_info_t; - -/* - * struct vxge_hal_vpath_stats_sw_ring_info_t - HAL ring statistics - * @common_stats: Common counters for all queues - * @rxd_t_code_err_cnt: Array of receive transfer codes. The position - * (index) in this array reflects the transfer code type, - * for instance - * 0x7 - for "invalid receive buffer size", or 0x8 - for ECC. - * Value rxd_t_code_err_cnt[i] reflects the - * number of times the corresponding transfer code was encountered. - * @lro_clubbed_frms_cnt: Total no of Aggregated packets - * @lro_sending_both: Number of times the aggregation of packets broken - * @lro_outof_sequence_pkts: Number of out of order packets - * @lro_flush_max_pkts: Number of times we reached upper packet limit for - * aggregation per session - * @lro_sum_avg_pkts_aggregated: Total number of packets considered for - * aggregation - * @lro_num_aggregations: Number of packets sent to the stack - * @lro_max_pkts_aggr: Max number of aggr packet per ring - * @lro_avg_agr_pkts: Average Aggregate packet - * - * HAL ring counters - * See also: vxge_hal_vpath_stats_sw_common_info_t {}, - * vxge_hal_vpath_stats_sw_fifo_info_t {}, - * vxge_hal_vpath_stats_sw_dmq_info_t {}, - * vxge_hal_vpath_stats_sw_umq_info_t {}, - * vxge_hal_vpath_stats_sw_sq_info_t {}, - * vxge_hal_vpath_stats_sw_srq_info_t {}, - * vxge_hal_vpath_stats_sw_cqrq_info_t {}. - */ -typedef struct vxge_hal_vpath_stats_sw_ring_info_t { - vxge_hal_vpath_stats_sw_common_info_t common_stats; - u32 rxd_t_code_err_cnt[16]; -} vxge_hal_vpath_stats_sw_ring_info_t; - -/* - * struct vxge_hal_vpath_stats_sw_dmq_info_t - HAL dmq statistics - * @common_stats: Common counters for all queues - * - * HAL dmq counters - * See also: vxge_hal_vpath_stats_sw_common_info_t {}, - * vxge_hal_vpath_stats_sw_fifo_info_t {}, - * vxge_hal_vpath_stats_sw_ring_info_t {}, - * vxge_hal_vpath_stats_sw_umq_info_t {}, - * vxge_hal_vpath_stats_sw_sq_info_t {}, - * vxge_hal_vpath_stats_sw_srq_info_t {}, - * vxge_hal_vpath_stats_sw_cqrq_info_t {}. - */ -typedef struct vxge_hal_vpath_stats_sw_dmq_info_t { - vxge_hal_vpath_stats_sw_common_info_t common_stats; -} vxge_hal_vpath_stats_sw_dmq_info_t; - -/* - * struct vxge_hal_vpath_stats_sw_umq_info_t - HAL umq statistics - * @common_stats: Common counters for all queues - * - * HAL dmq counters - * See also: vxge_hal_vpath_stats_sw_common_info_t {}, - * vxge_hal_vpath_stats_sw_fifo_info_t {}, - * vxge_hal_vpath_stats_sw_ring_info_t {}, - * vxge_hal_vpath_stats_sw_dmq_info_t {}, - * vxge_hal_vpath_stats_sw_sq_info_t {}, - * vxge_hal_vpath_stats_sw_srq_info_t {}, - * vxge_hal_vpath_stats_sw_cqrq_info_t {}. - */ -typedef struct vxge_hal_vpath_stats_sw_umq_info_t { - vxge_hal_vpath_stats_sw_common_info_t common_stats; -} vxge_hal_vpath_stats_sw_umq_info_t; - -/* - * struct vxge_hal_vpath_stats_sw_sq_info_t - HAL sq statistics - * @common_stats: Common counters for all queues - * - * HAL srq counters - * See also: vxge_hal_vpath_stats_sw_common_info_t {}, - * vxge_hal_vpath_stats_sw_fifo_info_t {}, - * vxge_hal_vpath_stats_sw_ring_info_t {}, - * vxge_hal_vpath_stats_sw_dmq_info_t {}, - * vxge_hal_vpath_stats_sw_umq_info_t {}, - * vxge_hal_vpath_stats_sw_srq_info_t {}, - * vxge_hal_vpath_stats_sw_cqrq_info_t {}. - */ -typedef struct vxge_hal_vpath_stats_sw_sq_info_t { - vxge_hal_vpath_stats_sw_common_info_t common_stats; -} vxge_hal_vpath_stats_sw_sq_info_t; - -/* - * struct vxge_hal_vpath_stats_sw_srq_info_t - HAL srq statistics - * @common_stats: Common counters for all queues - * - * HAL srq counters - * See also: vxge_hal_vpath_stats_sw_common_info_t {}, - * vxge_hal_vpath_stats_sw_fifo_info_t {}, - * vxge_hal_vpath_stats_sw_ring_info_t {}, - * vxge_hal_vpath_stats_sw_dmq_info_t {}, - * vxge_hal_vpath_stats_sw_umq_info_t {}, - * vxge_hal_vpath_stats_sw_sq_info_t {}, - * vxge_hal_vpath_stats_sw_cqrq_info_t {}. - */ -typedef struct vxge_hal_vpath_stats_sw_srq_info_t { - vxge_hal_vpath_stats_sw_common_info_t common_stats; -} vxge_hal_vpath_stats_sw_srq_info_t; - -/* - * struct vxge_hal_vpath_stats_sw_cqrq_info_t - HAL cqrq statistics - * @common_stats: Common counters for all queues - * - * HAL cqrq counters - * See also: vxge_hal_vpath_stats_sw_common_info_t {}, - * vxge_hal_vpath_stats_sw_fifo_info_t {}, - * vxge_hal_vpath_stats_sw_ring_info_t {}, - * vxge_hal_vpath_stats_sw_dmq_info_t {}, - * vxge_hal_vpath_stats_sw_umq_info_t {}, - * vxge_hal_vpath_stats_sw_sq_info_t {}, - * vxge_hal_vpath_stats_sw_srq_info_t {}. - */ -typedef struct vxge_hal_vpath_stats_sw_cqrq_info_t { - vxge_hal_vpath_stats_sw_common_info_t common_stats; -} vxge_hal_vpath_stats_sw_cqrq_info_t; - -/* - * struct vxge_hal_vpath_sw_obj_count_t - Usage count of obj ids in virtual path - * - * @no_nces: Number of NCEs on Adapter in this VP - * @no_sqs: Number of SQs on Adapter in this VP - * @no_srqs: Number of SRQs on Adapter in this VP - * @no_cqrqs: Number of CQRQs on Adapter in this VP - * @no_sessions: Number of sessions on Adapter in this VP - * - * This structure contains fields to keep the usage count of objects in - * a virtual path - */ -typedef struct vxge_hal_vpath_sw_obj_count_t { - u32 no_nces; - u32 no_sqs; - u32 no_srqs; - u32 no_cqrqs; - u32 no_sessions; -} vxge_hal_vpath_sw_obj_count_t; - -/* - * struct vxge_hal_vpath_stats_sw_err_t - HAL vpath error statistics - * @unknown_alarms: Unknown Alarm count - * @network_sustained_fault: Network sustained fault count - * @network_sustained_ok: Network sustained ok count - * @kdfcctl_fifo0_overwrite: Fifo 0 overwrite count - * @kdfcctl_fifo0_poison: Fifo 0 poison count - * @kdfcctl_fifo0_dma_error: Fifo 0 dma error count - * @kdfcctl_fifo1_overwrite: Fifo 1 overwrite count - * @kdfcctl_fifo1_poison: Fifo 1 poison count - * @kdfcctl_fifo1_dma_error: Fifo 1 dma error count - * @kdfcctl_fifo2_overwrite: Fifo 2 overwrite count - * @kdfcctl_fifo2_poison: Fifo 2 overwrite count - * @kdfcctl_fifo2_dma_error: Fifo 2 dma error count - * @dblgen_fifo0_overflow: Dblgen Fifo 0 overflow count - * @dblgen_fifo1_overflow: Dblgen Fifo 1 overflow count - * @dblgen_fifo2_overflow: Dblgen Fifo 2 overflow count - * @statsb_pif_chain_error: Statsb pif chain error count - * @statsb_drop_timeout: Statsb drop timeout count - * @target_illegal_access: Target illegal access count - * @ini_serr_det: Serious error detected count - * @pci_config_status_err: PCI config status error count - * @pci_config_uncor_err: PCI config uncorrectable error count - * @pci_config_cor_err: PCI config correctable error count - * @mrpcim_to_vpath_alarms: MRPCIM to vpath alarm count - * @srpcim_to_vpath_alarms: SRPCIM to vpath alarm count - * @srpcim_msg_to_vpath: SRPCIM to vpath message count - * @prc_ring_bumps: Ring controller ring bumps count - * @prc_rxdcm_sc_err: Ring controller rxdsm sc error count - * @prc_rxdcm_sc_abort: Ring controller rxdsm sc abort count - * @prc_quanta_size_err: Ring controller quanta size count - * - * HAL vpath error statistics - */ -typedef struct vxge_hal_vpath_stats_sw_err_t { - u32 unknown_alarms; - u32 network_sustained_fault; - u32 network_sustained_ok; - u32 kdfcctl_fifo0_overwrite; - u32 kdfcctl_fifo0_poison; - u32 kdfcctl_fifo0_dma_error; - u32 kdfcctl_fifo1_overwrite; - u32 kdfcctl_fifo1_poison; - u32 kdfcctl_fifo1_dma_error; - u32 kdfcctl_fifo2_overwrite; - u32 kdfcctl_fifo2_poison; - u32 kdfcctl_fifo2_dma_error; - u32 dblgen_fifo0_overflow; - u32 dblgen_fifo1_overflow; - u32 dblgen_fifo2_overflow; - u32 statsb_pif_chain_error; - u32 statsb_drop_timeout; - u32 target_illegal_access; - u32 ini_serr_det; - u32 pci_config_status_err; - u32 pci_config_uncor_err; - u32 pci_config_cor_err; - u32 mrpcim_to_vpath_alarms; - u32 srpcim_to_vpath_alarms; - u32 srpcim_msg_to_vpath; - u32 prc_ring_bumps; - u32 prc_rxdcm_sc_err; - u32 prc_rxdcm_sc_abort; - u32 prc_quanta_size_err; -} vxge_hal_vpath_stats_sw_err_t; - -/* - * struct vxge_hal_vpath_stats_sw_info_t - HAL vpath sw statistics - * @soft_reset_cnt: Number of times soft reset is done on this vpath. - * @obj_counts: Statistics for the VP - * @error_stats: error counters for the vpath - * @ring_stats: counters for ring belonging to the vpath - * @fifo_stats: counters for fifo belonging to the vpath - * @dmq_stats: counters for dmq belonging to the vpath - * @umq_stats: counters for umq belonging to the vpath - * - * HAL vpath sw statistics - * See also: vxge_hal_device_info_t {}}. - */ -typedef struct vxge_hal_vpath_stats_sw_info_t { - u32 soft_reset_cnt; - vxge_hal_vpath_sw_obj_count_t obj_counts; - vxge_hal_vpath_stats_sw_err_t error_stats; - vxge_hal_vpath_stats_sw_ring_info_t ring_stats; - vxge_hal_vpath_stats_sw_fifo_info_t fifo_stats; - vxge_hal_vpath_stats_sw_dmq_info_t dmq_stats; - vxge_hal_vpath_stats_sw_umq_info_t umq_stats; -} vxge_hal_vpath_stats_sw_info_t; - -/* - * struct vxge_hal_device_stats_sw_info_t - HAL own per-device statistics. - * - * @soft_reset_cnt: Number of times soft reset is done on this device. - * @vpath_info: please see vxge_hal_vpath_stats_sw_info_t {} - * HAL per-device statistics. - */ -typedef struct vxge_hal_device_stats_sw_info_t { - u32 soft_reset_cnt; - vxge_hal_vpath_stats_sw_info_t vpath_info[VXGE_HAL_MAX_VIRTUAL_PATHS]; -} vxge_hal_device_stats_sw_info_t; - -/* - * struct vxge_hal_device_stats_sw_err_t - HAL device error statistics. - * @mrpcim_alarms: Number of mrpcim alarms - * @srpcim_alarms: Number of srpcim alarms - * @vpath_alarms: Number of vpath alarms - * - * HAL Device error stats - */ -typedef struct vxge_hal_device_stats_sw_err_t { - u32 mrpcim_alarms; - u32 srpcim_alarms; - u32 vpath_alarms; -} vxge_hal_device_stats_sw_err_t; - -/* - * struct vxge_hal_device_stats_t - Contains HAL per-device statistics, - * including hw. - * @devh: HAL device handle. - * - * @hw_dev_info_stats: X3100 statistics maintained by the hardware. - * @sw_dev_err_stats: HAL's "soft" device error statistics. - * @sw_dev_info_stats: HAL's "soft" device informational statistics, e.g. number - * of completions per interrupt. - * - * @is_enabled: True, if device stats collection is enabled. - * - * Structure-container of HAL per-device statistics. Note that per-channel - * statistics are kept in separate structures under HAL's fifo and ring - * channels. - */ -typedef struct vxge_hal_device_stats_t { - /* handles */ - vxge_hal_device_h devh; - - /* HAL device hardware statistics */ - vxge_hal_device_stats_hw_info_t hw_dev_info_stats; - - /* HAL device "soft" stats */ - vxge_hal_device_stats_sw_err_t sw_dev_err_stats; - vxge_hal_device_stats_sw_info_t sw_dev_info_stats; - - /* flags */ - int is_enabled; -} vxge_hal_device_stats_t; - -/* - * vxge_hal_vpath_hw_stats_enable - Enable vpath h/w statistics. - * @vpath_handle: Virtual Path handle. - * - * Enable the DMA vpath statistics. The function is to be called to re-enable - * the adapter to update stats into the host memory - * - * See also: vxge_hal_vpath_hw_stats_disable() - */ -vxge_hal_status_e -vxge_hal_vpath_hw_stats_enable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_hw_stats_disable - Disable vpath h/w statistics. - * @vpath_handle: Virtual Path handle. - * - * Enable the DMA vpath statistics. The function is to be called to disable - * the adapter to update stats into the host memory. This function is not - * needed to be called, normally. - * - * See also: vxge_hal_vpath_hw_stats_enable() - */ -vxge_hal_status_e -vxge_hal_vpath_hw_stats_disable( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_vpath_hw_stats_get - Get the vpath hw statistics. - * @vpath_handle: Virtual Path handle. - * @hw_stats: Hardware stats - * - * Returns the vpath h/w stats. - * - * See also: vxge_hal_vpath_hw_stats_enable(), vxge_hal_vpath_hw_stats_disable() - */ -vxge_hal_status_e -vxge_hal_vpath_hw_stats_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_stats_hw_info_t *hw_stats); - -/* - * vxge_hal_vpath_sw_stats_get - Get the vpath sw statistics. - * @vpath_handle: Virtual Path handle. - * @sw_stats: Software stats - * - * Returns the vpath s/w stats. - * - * See also: vxge_hal_vpath_hw_stats_get() - */ -vxge_hal_status_e -vxge_hal_vpath_sw_stats_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_stats_sw_info_t *sw_stats); - -/* - * vxge_hal_vpath_stats_access - Get the statistics from the given location - * and offset and perform an operation - * @vpath_handle: Virtual path handle. - * @operation: Operation to be performed - * @offset: Offset with in the location - * @stat: Pointer to a buffer to return the value - * - * Get the statistics from the given location and offset. - * - */ -vxge_hal_status_e -vxge_hal_vpath_stats_access( - vxge_hal_vpath_h vpath_handle, - u32 operation, - u32 offset, - u64 *stat); - -/* - * vxge_hal_vpath_xmac_tx_stats_get - Get the TX Statistics of a vpath - * @virtual_path: vpath handle. - * @vpath_tx_stats: Buffer to return TX Statistics of vpath. - * - * Get the TX Statistics of a vpath - * - */ -vxge_hal_status_e -vxge_hal_vpath_xmac_tx_stats_get(vxge_hal_vpath_h virtual_path, - vxge_hal_xmac_vpath_tx_stats_t *vpath_tx_stats); - -/* - * vxge_hal_vpath_xmac_rx_stats_get - Get the RX Statistics of a vpath - * @virtual_path: vpath handle. - * @vpath_rx_stats: Buffer to return RX Statistics of vpath. - * - * Get the RX Statistics of a vpath - * - */ -vxge_hal_status_e -vxge_hal_vpath_xmac_rx_stats_get(vxge_hal_vpath_h virtual_path, - vxge_hal_xmac_vpath_rx_stats_t *vpath_rx_stats); - -/* - * vxge_hal_vpath_stats_clear - Clear all the statistics of vpath - * @vpath_handle: Virtual path handle. - * - * Clear the statistics of the given vpath. - * - */ -vxge_hal_status_e -vxge_hal_vpath_stats_clear( - vxge_hal_vpath_h vpath_handle); - -/* - * vxge_hal_device_hw_stats_enable - Enable device h/w statistics. - * @devh: HAL Device. - * - * Enable the DMA vpath statistics for the device. The function is to be called - * to re-enable the adapter to update stats into the host memory - * - * See also: vxge_hal_device_hw_stats_disable() - */ -vxge_hal_status_e -vxge_hal_device_hw_stats_enable( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_hw_stats_disable - Disable device h/w statistics. - * @devh: HAL Device. - * - * Enable the DMA vpath statistics for the device. The function is to be called - * to disable the adapter to update stats into the host memory. This function - * is not needed to be called, normally. - * - * See also: vxge_hal_device_hw_stats_enable() - */ -vxge_hal_status_e -vxge_hal_device_hw_stats_disable( - vxge_hal_device_h devh); - -/* - * vxge_hal_device_hw_stats_get - Get the device hw statistics. - * @devh: HAL Device. - * @hw_stats: Hardware stats - * - * Returns the vpath h/w stats for the device. - * - * See also: vxge_hal_device_hw_stats_enable(), - * vxge_hal_device_hw_stats_disable(), - * vxge_hal_device_sw_stats_get(), - * vxge_hal_device_stats_get() - */ -vxge_hal_status_e -vxge_hal_device_hw_stats_get( - vxge_hal_device_h devh, - vxge_hal_device_stats_hw_info_t *hw_stats); - -/* - * vxge_hal_device_sw_stats_get - Get the device sw statistics. - * @devh: HAL Device. - * @sw_stats: Software stats - * - * Returns the device s/w stats for the device. - * - * See also: vxge_hal_device_hw_stats_get(), vxge_hal_device_stats_get() - */ -vxge_hal_status_e -vxge_hal_device_sw_stats_get( - vxge_hal_device_h devh, - vxge_hal_device_stats_sw_info_t *sw_stats); - -/* - * vxge_hal_device_stats_get - Get the device statistics. - * @devh: HAL Device. - * @stats: Device stats - * - * Returns the device stats for the device. - * - * See also: vxge_hal_device_hw_stats_get(), vxge_hal_device_sw_stats_get() - */ -vxge_hal_status_e -vxge_hal_device_stats_get( - vxge_hal_device_h devh, - vxge_hal_device_stats_t *stats); - -/* - * vxge_hal_device_xmac_stats_get - Get the XMAC Statistics - * @devh: HAL device handle. - * @xmac_stats: Buffer to return XMAC Statistics. - * - * Get the XMAC Statistics - * - */ -vxge_hal_status_e -vxge_hal_device_xmac_stats_get(vxge_hal_device_h devh, - vxge_hal_device_xmac_stats_t *xmac_stats); - -/* - * vxge_hal_mrpcim_stats_enable - Enable mrpcim statistics. - * @devh: HAL Device. - * - * Enable the DMA mrpcim statistics for the device. The function is to be called - * to re-enable the adapter to update stats into the host memory - * - * See also: vxge_hal_mrpcim_stats_disable() - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_enable( - vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_stats_disable - Disable mrpcim statistics. - * @devh: HAL Device. - * - * Enable the DMA mrpcim statistics for the device. The function is to be called - * to disable the adapter to update stats into the host memory. This function - * is not needed to be called, normally. - * - * See also: vxge_hal_mrpcim_stats_enable() - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_disable( - vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_stats_get - Get the mrpcim statistics. - * @devh: HAL Device. - * @stats: mrpcim stats - * - * Returns the device mrpcim stats for the device. - * - * See also: vxge_hal_device_stats_get() - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_get( - vxge_hal_device_h devh, - vxge_hal_mrpcim_stats_hw_info_t *stats); - -/* - * vxge_hal_mrpcim_stats_access - Access the statistics from the given location - * and offset and perform an operation - * @devh: HAL Device handle. - * @operation: Operation to be performed - * @location: Location (one of vpath id, aggregate or port) - * @offset: Offset with in the location - * @stat: Pointer to a buffer to return the value - * - * Get the statistics from the given location and offset. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_access( - vxge_hal_device_h devh, - u32 operation, - u32 location, - u32 offset, - u64 *stat); - -/* - * vxge_hal_mrpcim_xmac_aggr_stats_get - Get the Statistics on aggregate port - * @devh: HAL device handle. - * @port: Number of the port (0 or 1) - * @aggr_stats: Buffer to return Statistics on aggregate port. - * - * Get the Statistics on aggregate port - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_xmac_aggr_stats_get(vxge_hal_device_h devh, - u32 port, - vxge_hal_xmac_aggr_stats_t *aggr_stats); - -/* - * vxge_hal_mrpcim_xmac_port_stats_get - Get the Statistics on a port - * @devh: HAL device handle. - * @port: Number of the port (wire 0, wire 1 or LAG) - * @port_stats: Buffer to return Statistics on a port. - * - * Get the Statistics on port - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_xmac_port_stats_get(vxge_hal_device_h devh, - u32 port, - vxge_hal_xmac_port_stats_t *port_stats); - -/* - * vxge_hal_mrpcim_xmac_stats_get - Get the XMAC Statistics - * @devh: HAL device handle. - * @xmac_stats: Buffer to return XMAC Statistics. - * - * Get the XMAC Statistics - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_xmac_stats_get(vxge_hal_device_h devh, - vxge_hal_mrpcim_xmac_stats_t *xmac_stats); - -/* - * vxge_hal_mrpcim_stats_clear - Clear the statistics of the device - * @devh: HAL Device handle. - * - * Clear the statistics of the given Device. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_clear( - vxge_hal_device_h devh); - -/* - * vxge_hal_mrpcim_xpak_stats_poll - Poll and update the Xpak error count. - * @devh: HAL device handle - * @port: Port number - * - * It is used to update the xpak stats value. Called by ULD periodically - */ -vxge_hal_status_e -vxge_hal_mrpcim_xpak_stats_poll( - vxge_hal_device_h devh, u32 port); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_STATS_H */ Index: sys/dev/vxge/include/vxgehal-status.h =================================================================== --- sys/dev/vxge/include/vxgehal-status.h +++ sys/dev/vxge/include/vxgehal-status.h @@ -1,1114 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_STATUS_H -#define VXGE_HAL_STATUS_H - -__EXTERN_BEGIN_DECLS - -#define VXGE_HAL_EVENT_BASE 0 -#define VXGE_LL_EVENT_BASE 100 - -/* - * enum vxge_hal_event_e - Enumerates slow-path HAL events. - * @VXGE_HAL_EVENT_UNKNOWN: Unknown (and invalid) event. - * @VXGE_HAL_EVENT_SERR: Serious hardware error event. - * @VXGE_HAL_EVENT_CRITICAL: Critical vpath hardware error event. - * @VXGE_HAL_EVENT_ECCERR: vpath ECC error event. - * @VXGE_HAL_EVENT_KDFCCTL: FIFO Doorbell fifo error. - * @VXGE_HAL_EVENT_SRPCIM_CRITICAL: srpcim hardware error event. - * @VXGE_HAL_EVENT_MRPCIM_CRITICAL: mrpcim hardware error event. - * @VXGE_HAL_EVENT_MRPCIM_ECCERR: mrpcim ecc error event. - * @VXGE_HAL_EVENT_DEVICE_RESET_START: Privileged entity starting device reset - * @VXGE_HAL_EVENT_DEVICE_RESET_COMPLETE: Device reset has been completed - * @VXGE_HAL_EVENT_VPATH_RESET_START: A function is starting vpath reset - * @VXGE_HAL_EVENT_VPATH_RESET_COMPLETE: vpath reset has been completed - * @VXGE_HAL_EVENT_SLOT_FREEZE: Slot-freeze event. Driver tries to distinguish - * slot-freeze from the rest critical events (e.g. ECC) when it is - * impossible to PIO read "through" the bus, i.e. when getting all-foxes. - * - * vxge_hal_event_e enumerates slow-path HAL eventis. - * - * See also: vxge_hal_uld_cbs_t {}, vxge_uld_link_up_f {}, - * vxge_uld_link_down_f {}. - */ -typedef enum vxge_hal_event_e { - VXGE_HAL_EVENT_UNKNOWN = 0, - /* HAL events */ - VXGE_HAL_EVENT_SERR = VXGE_HAL_EVENT_BASE + 1, - VXGE_HAL_EVENT_CRITICAL = VXGE_HAL_EVENT_BASE + 2, - VXGE_HAL_EVENT_ECCERR = VXGE_HAL_EVENT_BASE + 3, - VXGE_HAL_EVENT_KDFCCTL = VXGE_HAL_EVENT_BASE + 4, - VXGE_HAL_EVENT_SRPCIM_CRITICAL = VXGE_HAL_EVENT_BASE + 5, - VXGE_HAL_EVENT_MRPCIM_CRITICAL = VXGE_HAL_EVENT_BASE + 6, - VXGE_HAL_EVENT_MRPCIM_ECCERR = VXGE_HAL_EVENT_BASE + 7, - VXGE_HAL_EVENT_DEVICE_RESET_START = VXGE_HAL_EVENT_BASE + 8, - VXGE_HAL_EVENT_DEVICE_RESET_COMPLETE = VXGE_HAL_EVENT_BASE + 9, - VXGE_HAL_EVENT_VPATH_RESET_START = VXGE_HAL_EVENT_BASE + 10, - VXGE_HAL_EVENT_VPATH_RESET_COMPLETE = VXGE_HAL_EVENT_BASE + 11, - VXGE_HAL_EVENT_SLOT_FREEZE = VXGE_HAL_EVENT_BASE + 12 -} vxge_hal_event_e; - -#define VXGE_HAL_BASE_INF 100 -#define VXGE_HAL_BASE_ERR 200 -#define VXGE_HAL_BASE_BADCFG 300 - -/* - * enum vxge_hal_status_e - HAL return codes. - * @VXGE_HAL_OK: Success. - * @VXGE_HAL_FAIL: Failure. - * @VXGE_HAL_PENDING: Opearation is pending - * @VXGE_HAL_CONTINUE: Continue processing - * @VXGE_HAL_RETURN: Stop processing and return - * @VXGE_HAL_COMPLETIONS_REMAIN: There are more completions on a channel. - * (specific to polling mode completion processing). - * @VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS: No more completed - * descriptors. See vxge_hal_fifo_txdl_next_completed(). - * @VXGE_HAL_INF_OUT_OF_DESCRIPTORS: Out of descriptors. Channel - * descriptors - * are reserved (via vxge_hal_fifo_txdl_reserve(), - * vxge_hal_ring_rxd_reserve()) - * and not yet freed (via vxge_hal_fifo_txdl_free(), - * vxge_hal_ring_rxd_free()). - * @VXGE_HAL_INF_QUEUE_IS_NOT_READY: A descriptor was reserved and not posted - * @VXGE_HAL_INF_MEM_STROBE_CMD_EXECUTING: Indicates that host needs to - * poll until PIO is executed. - * @VXGE_HAL_INF_STATS_IS_NOT_READY: Queue is not ready for - * operation. - * @VXGE_HAL_INF_NO_MORE_FREED_DESCRIPTORS: No descriptors left to - * reserve. Internal use only. - * @VXGE_HAL_INF_IRQ_POLLING_CONTINUE: Returned by the ULD channel - * callback when instructed to exit descriptor processing loop - * prematurely. Typical usage: polling mode of processing completed - * descriptors. - * Upon getting LRO_ISED, ll driver shall - * 1) initialise lro struct with mbuf if sg_num == 1. - * 2) else it will update m_data_ptr_of_mbuf to tcp pointer and - * append the new mbuf to the tail of mbuf chain in lro struct. - * @VXGE_HAL_INF_SW_LRO_BEGIN: Returned by ULD LRO module, when new LRO is - * being initiated. - * @VXGE_HAL_INF_SW_LRO_CONT: Returned by ULD LRO module, when new frame - * is appended at the end of existing LRO. - * @VXGE_HAL_INF_SW_LRO_UNCAPABLE: Returned by ULD LRO module, when new - * frame is not LRO capable. - * @VXGE_HAL_INF_SW_LRO_FLUSH_SESSION: Returned by ULD LRO module, - * when new frame triggers LRO flush. - * @VXGE_HAL_INF_SW_LRO_FLUSH_BOTH: Returned by ULD LRO module, when new - * frame triggers LRO flush. Lro frame should be flushed first then - * new frame should be flushed next. - * @VXGE_HAL_INF_SW_LRO_END_3: Returned by ULD LRO module, when new - * frame triggers close of current LRO session and opening of new LRO session - * with the frame. - * @VXGE_HAL_INF_SW_LRO_SESSIONS_XCDED: Returned by ULD LRO module, when no - * more LRO sessions can be added. - * @VXGE_HAL_INF_NOT_ENOUGH_HW_CQES: Enough CQEs are available - * @VXGE_HAL_INF_LINK_UP_DOWN: Link up down indication received - * @VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED: HAL is not initialized. - * @VXGE_HAL_ERR_INVALID_HANDLE: The handle passed is invalid. - * @VXGE_HAL_ERR_OUT_OF_MEMORY: Out of memory (example, when and - * allocating descriptors). - * @VXGE_HAL_ERR_VPATH_NOT_AVAILABLE: Vpath is not allocated to this - * function - * @VXGE_HAL_ERR_VPATH_NOT_OPEN: Vpath is not opened i.e put in service. - * @VXGE_HAL_ERR_WRONG_IRQ: Returned by HAL's ISR when the latter is - * invoked not because of the X3100-generated interrupt. - * @VXGE_HAL_ERR_OUT_OF_MAC_ADDRESSES: Returned when user tries to - * configure more than VXGE_HAL_MAX_MAC_ADDRESSES mac addresses. - * @VXGE_HAL_ERR_SWAPPER_CTRL: Error during device initialization: failed - * to set X3100 byte swapper in accordnace with the host - * endian-ness. - * @VXGE_HAL_ERR_DEVICE_IS_NOT_QUIESCENT: Failed to restore the device to - * a "quiescent" state. - * @VXGE_HAL_ERR_INVALID_MTU_SIZE:Returned when MTU size specified by - * caller is not in the (64, 9600) range. - * @VXGE_HAL_ERR_OUT_OF_MAPPING: Failed to map DMA-able memory. - * @VXGE_HAL_ERR_BAD_SUBSYSTEM_ID: Bad PCI subsystem ID. (Currently we - * check for zero/non-zero only.) - * @VXGE_HAL_ERR_INVALID_BAR_ID: Invalid BAR ID. X3100 supports two Base - * Address Register Spaces: BAR0 (id=0) and BAR1 (id=1). - * @VXGE_HAL_ERR_INVALID_INDEX: Invalid index. Example, attempt to read - * register value from the register section that is out of range. - * @VXGE_HAL_ERR_INVALID_TYPE: Invalid register section. - * @VXGE_HAL_ERR_INVALID_OFFSET: Invalid offset. Example, attempt to read - * register value (with offset) outside of the register section range - * @VXGE_HAL_ERR_INVALID_DEVICE: Invalid device. The HAL device handle - * (passed by ULD) is invalid. - * @VXGE_HAL_ERR_OUT_OF_SPACE: Out-of-provided-buffer-space. Returned by - * management "get" routines when the retrieved information does - * not fit into the provided buffer. - * @VXGE_HAL_ERR_INVALID_VALUE_BIT_SIZE: Invalid bit size. - * @VXGE_HAL_ERR_VERSION_CONFLICT: Upper-layer driver and HAL (versions) - * are not compatible. - * @VXGE_HAL_ERR_INVALID_MAC_ADDRESS: Invalid MAC address. - * @VXGE_HAL_ERR_BAD_DEVICE_ID: Unknown device PCI ID. - * @VXGE_HAL_ERR_OUT_ALIGNED_FRAGS: Too many unaligned fragments - * in a scatter-gather list. - * @VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED: Device is not initialized. - * Typically means wrong sequence of API calls. - * @VXGE_HAL_ERR_SPDM_NOT_ENABLED: SPDM support is not enabled. - * @VXGE_HAL_ERR_SPDM_TABLE_FULL: SPDM table is full. - * @VXGE_HAL_ERR_SPDM_INVALID_ENTRY: Invalid SPDM entry. - * @VXGE_HAL_ERR_SPDM_ENTRY_NOT_FOUND: Unable to locate the entry in the - * SPDM table. - * @VXGE_HAL_ERR_SPDM_TABLE_DATA_INCONSISTENT: Local SPDM table is not in - * synch ith the actual one. - * @VXGE_HAL_ERR_INVALID_PCI_INFO: Invalid or unrecognized PCI parameters. - * @VXGE_HAL_ERR_CRITICAL: Critical error. Returned by HAL APIs - * (including vxge_hal_fifo_handle_tcode() and vxge_hal_ring_handle_tcode()) - * on: ECC, parity, SERR. - * Also returned when PIO read does not go through ("all-foxes") - * because of "slot-freeze". - * @VXGE_HAL_ERR_RESET_FAILED: Failed to soft-reset the device. - * Returned by vxge_hal_device_reset(). One circumstance when it could - * happen: slot freeze by the system (see @VXGE_HAL_ERR_CRITICAL). - * @VXGE_HAL_ERR_TOO_MANY: This error is returned if there were laready - * maximum number of sessions or queues allocated - * @VXGE_HAL_ERR_PKT_DROP: Packet got dropped - * @VXGE_HAL_ERR_INVALID_BLOCK_SIZE: Invalid block size - * @VXGE_HAL_ERR_INVALID_STATE: Invalid state - * @VXGE_HAL_ERR_PRIVILAGED_OPEARATION: A previleged operation is attempted - * @VXGE_HAL_ERR_RESET_IN_PROGRESS: Reset is currently in progress - * @VXGE_HAL_ERR_MAC_TABLE_FULL: DA table is full - * @VXGE_HAL_ERR_MAC_TABLE_EMPTY: DA table is empty - * @VXGE_HAL_ERR_MAC_TABLE_NO_MORE_ENTRIES: There are no more entries in the - * DA table - * @VXGE_HAL_ERR_RTDMA_RTDMA_READY: RTDMA is ready - * @VXGE_HAL_ERR_WRDMA_WRDMA_READY: WRDMA is ready - * @VXGE_HAL_ERR_KDFC_KDFC_READY: Kernel mode doorbell controller ready - * @VXGE_HAL_ERR_TPA_TMAC_BUF_EMPTY: Transmit Protocol Assist TMAC buffer empty - * @VXGE_HAL_ERR_RDCTL_PIC_QUIESCENT: PIC block is quiescent - * @VXGE_HAL_ERR_XGMAC_NETWORK_FAULT: Network Fault - * @VXGE_HAL_ERR_ROCRC_OFFLOAD_QUIESCENT: ROCRC offload quiescent - * @VXGE_HAL_ERR_G3IF_FB_G3IF_FB_GDDR3_READY: G3DDR Interface FB Ready - * @VXGE_HAL_ERR_G3IF_CM_G3IF_CM_GDDR3_READY: G3DDR Interface CM Ready - * @VXGE_HAL_ERR_RIC_RIC_RUNNING: Adapter RIC is still programming flash - * settings to device - * @VXGE_HAL_ERR_CMG_C_PLL_IN_LOCK: CMG C PLL in lock - * @VXGE_HAL_ERR_XGMAC_X_PLL_IN_LOCK: XGMAC X PLL in Lock - * @VXGE_HAL_ERR_FBIF_M_PLL_IN_LOCK: FBUF M PLL in Lock - * @VXGE_HAL_ERR_PCC_PCC_IDLE: PCC is idle - * @VXGE_HAL_ERR_ROCRC_RC_PRC_QUIESCENT: ROCRC RC PCC quiescent - * @VXGE_HAL_ERR_SLOT_FREEZE: PCI Slot frozen - * @VXGE_HAL_ERR_INVALID_TCODE: The t-code returned is invalid - * @VXGE_HAL_ERR_INVALID_PORT: The port number specified is invalid - * @VXGE_HAL_ERR_INVALID_PRIORITY: Proiority specified is invalid - * @VXGE_HAL_ERR_INVALID_MIN_BANDWIDTH: Minimum bandwidth specified is invalid - * @VXGE_HAL_ERR_INVALID_MAX_BANDWIDTH: Maximum bandwidth specified is invalid - * @VXGE_HAL_ERR_INVALID_BANDWIDTH_LIMIT: Bandwidth limit specified is invalid - * @VXGE_HAL_ERR_INVALID_TOTAL_BANDWIDTH: Total bandwidth specified is invalid - * @VXGE_HAL_ERR_MANAGER_NOT_FOUND: The Function 0 driver or MRPCIM manager is - * down - * @VXGE_HAL_ERR_TIME_OUT: Timeout occurred - * @VXGE_HAL_ERR_EVENT_UNKNOWN: Unknown alarm - * @VXGE_HAL_ERR_EVENT_SERR: Serious error on device - * @VXGE_HAL_ERR_EVENT_CRITICAL: Critical error in the vpath - * @VXGE_HAL_ERR_EVENT_ECCERR: Ecc Error returned in t-code - * @VXGE_HAL_ERR_EVENT_KDFCCTL: Kdfcctl error on the device - * @VXGE_HAL_ERR_EVENT_SRPCIM_CRITICAL: Critical error in SRPCIM - * @VXGE_HAL_ERR_EVENT_MRPCIM_CRITICAL: Critical error in MRPCIM - * @VXGE_HAL_ERR_EVENT_MRPCIM_ECCERR: ECC error in MRPCIM - * @VXGE_HAL_ERR_EVENT_RESET_START: Device is going to be reset - * @VXGE_HAL_ERR_EVENT_RESET_COMPLETE: Device reset is complete - * @VXGE_HAL_ERR_EVENT_SLOT_FREEZE: PCI Slot freeze - * @VXGE_HAL_BADCFG_WIRE_PORT_PORT_ID: Invalid port id in config - * @VXGE_HAL_BADCFG_WIRE_PORT_MAX_MEDIA: Invalid media type in config - * @VXGE_HAL_BADCFG_WIRE_PORT_MAX_INITIAL_MTU: Invalid initial MTU size - * in config - * @VXGE_HAL_BADCFG_WIRE_PORT_AUTONEG_MODE: Invalid autonegotiation mode - * in config - * @VXGE_HAL_BADCFG_WIRE_PORT_AUTONEG_RATE: Invalid autonegotiation rate - * in config - * @VXGE_HAL_BADCFG_WIRE_PORT_FIXED_USE_FSM: Invalid fixed use fsm in config - * @VXGE_HAL_BADCFG_WIRE_PORT_ANTP_USE_FSM: Invalid ANTP use FSM in config - * @VXGE_HAL_BADCFG_WIRE_PORT_ANBE_USE_FSM: Invalid ANBE use FSM in config - * @VXGE_HAL_BADCFG_WIRE_PORT_LINK_STABILITY_PERIOD: Invalid link stability - * period in config - * @VXGE_HAL_BADCFG_WIRE_PORT_PORT_STABILITY_PERIOD: Invalid port stability - * period in config - * @VXGE_HAL_BADCFG_WIRE_PORT_TMAC_EN: Invalid Transmit MAC enable setting - * in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_EN: Invalid Receive MAC enable setting - * in config - * @VXGE_HAL_BADCFG_WIRE_PORT_TMAC_PAD: Invalid Transmit MAC PAD enable setting - * in config - * @VXGE_HAL_BADCFG_WIRE_PORT_TMAC_PAD_BYTE: Invalid Transmit MAC PAD Byte - * setting in config - * @VXGE_HAL_BADCFG_WIRE_PORT_TMAC_UTIL_PERIOD: Invalid Transmit MAC utilization - * period in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_STRIP_FCS: Invalid Receive MAC strip FCS - * setting in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PROM_EN: Invalid Receive MAC PROM enable - * in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_DISCARD_PFRM: Invalid Receive MAC discard - * pfrm setting in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_UTIL_PERIOD: Invalid Receive MAC utilization - * period in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_GEN_EN: Invalid Receive MAC pause - * generation enable setting in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_RCV_EN: Invalid Receive MAC pause - * receive enable setting in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_HIGH_PTIME: Invalid Receive MAC high ptime - * setting in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_LIMITER_EN: Invalid Receive MAC pause - * limitter enable setting in config - * @VXGE_HAL_BADCFG_WIRE_PORT_RMAC_MAX_LIMIT: Invalid Receive MAC max limit - * setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_MAX_INITIAL_MTU: Invalid initial MTU size - * in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_EN: Invalid Transmit MAC enable setting - * in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_EN: Invalid Receive MAC enable setting - * in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_PAD: Invalid Transmit MAC PAD enable - * setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_PAD_BYTE: Invalid Transmit MAC PAD Byte - * setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_UTIL_PERIOD: Invalid Transmit MAC - * utilization period in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_STRIP_FCS: Invalid Receive MAC strip FCS - * setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PROM_EN: Invalid Receive MAC PROM enable - * in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_DISCARD_PFRM: Invalid Receive MAC discard - * pfrm setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_UTIL_PERIOD: Invalid Receive MAC - * utilization period in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_GEN_EN: Invalid Receive MAC - * pause generation enable setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_RCV_EN: Invalid Receive MAC - * pause receive enable setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_HIGH_PTIME: Invalid Receive MAC - * high ptime setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_LIMITER_EN: Invalid Receive MAC pause - * limitter enable setting in config - * @VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_MAX_LIMIT: Invalid Receive MAC - * max limit setting in config - * @VXGE_HAL_BADCFG_MAC_NETWORK_STABILITY_PERIOD: Invalid network - * stability period setting in config - * @VXGE_HAL_BADCFG_MAC_MC_PAUSE_THRESHOLD: Invalid MC pause threshold - * setting in config - * @VXGE_HAL_BADCFG_MAC_PERMA_STOP_EN: Invalid perma stop enable setting - * in config - * @VXGE_HAL_BADCFG_MAC_TMAC_TX_SWITCH_DIS: Invalid Transmit MAC - * tx switch disable in config - * @VXGE_HAL_BADCFG_MAC_TMAC_LOSSY_SWITCH_EN: Invalid Transmit MAC - * lossy switch enable in config - * @VXGE_HAL_BADCFG_MAC_TMAC_LOSSY_WIRE_EN: Invalid Transmit MAC - * lossy wire enable in config - * @VXGE_HAL_BADCFG_MAC_TMAC_BCAST_TO_WIRE_DIS: Invalid Transmit - * MAC broadcast to wire disable in config - * @VXGE_HAL_BADCFG_MAC_TMAC_BCAST_TO_SWITCH_DIS: Invalid Transmit - * MAC broadcast to switch disable in config - * @VXGE_HAL_BADCFG_MAC_TMAC_HOST_APPEND_FCS_EN: Invalid Transmit MAC - * host append fcs in config - * @VXGE_HAL_BADCFG_MAC_TPA_SUPPORT_SNAP_AB_N: Invalid Transmit Protocol - * Assist support SNAP AB N setting in config - * @VXGE_HAL_BADCFG_MAC_TPA_ECC_ENABLE_N: Invalid Transmit Protocol - * Assist ecc enable N setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_IGNORE_FRAME_ERR: Invalid Receive Protocol - * Assist ignore frame error in config - * @VXGE_HAL_BADCFG_MAC_RPA_SNAP_AB_N: Invalid Receive Protocol Assist - * SNAP AB N in config - * @VXGE_HAL_BADCFG_MAC_RPA_SEARCH_FOR_HAO: Invalid Receive Protocol - * Assist search for HAO in config - * @VXGE_HAL_BADCFG_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS: Invalid Receive - * Protocol support ipv6 mobile headers in config - * @VXGE_HAL_BADCFG_MAC_RPA_IPV6_STOP_SEARCHING: Invalid Receive Protocol - * Assist ipv6 stop searching in config - * @VXGE_HAL_BADCFG_MAC_RPA_NO_PS_IF_UNKNOWN: Invalid Receive Protocol - * Assist no ps if unknown in config - * @VXGE_HAL_BADCFG_MAC_RPA_SEARCH_FOR_ETYPE: Invalid Receive Protocol - * Assist search for etype in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_L4_COMP_CSUM: Invalid Receive Protocol - * Assist replication setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_L3_INCL_CF: Invalid Receive Protocol Assist - * replication setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_L3_COMP_CSUM: Invalid Receive Protocol Assist - * replication setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV4_TCP_INCL_PH: Invalid Receive Protocol - * Assist replication setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV6_TCP_INCL_PH: Invalid Receive Protocol - * Assist replication setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV4_UDP_INCL_PH: Invalid Receive Protocol - * Assist replication setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV6_UDP_INCL_PH: Invalid Receive Protocol - * Assist replication setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_L4_INCL_CF: Invalid Receive Protocol Assist - * replication setting in config - * @VXGE_HAL_BADCFG_MAC_RPA_REPL_STRIP_VLAN_TAG: Invalid Receive Protocol - * Assist replication setting in config - * @VXGE_HAL_BADCFG_LAG_LAG_EN: Invalid option for lag_en in config - * @VXGE_HAL_BADCFG_LAG_LAG_MODE: Invalid option for lag_mode in config - * @VXGE_HAL_BADCFG_LAG_TX_DISCARD: Invalid option for tx_discard in config - * @VXGE_HAL_BADCFG_LAG_TX_AGGR_STATS: Invalid option for incr_tx_aggr_stats - * in config - * @VXGE_HAL_BADCFG_LAG_DISTRIB_ALG_SEL: Invalid option for distrib_alg_sel - * in config - * @VXGE_HAL_BADCFG_LAG_DISTRIB_REMAP_IF_FAIL: Invalid option for - * distrib_remap_if_fail in config - * @VXGE_HAL_BADCFG_LAG_COLL_MAX_DELAY: Invalid Collector Max Delay in config - * @VXGE_HAL_BADCFG_LAG_RX_DISCARD: Invalid option for rx_discard in config - * @VXGE_HAL_BADCFG_LAG_PREF_INDIV_PORT: Invalid option for pref_indiv_port - * in config - * @VXGE_HAL_BADCFG_LAG_HOT_STANDBY: Invalid option for hot_standby in config - * @VXGE_HAL_BADCFG_LAG_LACP_DECIDES: Invalid option for lacp_decides in config - * @VXGE_HAL_BADCFG_LAG_PREF_ACTIVE_PORT: Invalid option for pref_active_port - * in config - * @VXGE_HAL_BADCFG_LAG_AUTO_FAILBACK: Invalid option for auto_failback - * in config - * @VXGE_HAL_BADCFG_LAG_FAILBACK_EN: Invalid option for failback_en in config - * @VXGE_HAL_BADCFG_LAG_COLD_FAILOVER_TIMEOUT: Invalid cold_failover_timeout - * in config - * @VXGE_HAL_BADCFG_LAG_LACP_EN: Invalid option for lacp_en in config - * @VXGE_HAL_BADCFG_LAG_LACP_BEGIN: Invalid option for lacp_begin in config - * @VXGE_HAL_BADCFG_LAG_DISCARD_LACP: Invalid option for discard_lacp in config - * @VXGE_HAL_BADCFG_LAG_LIBERAL_LEN_CHK: Invalid option for liberal_len_chk - * in config - * @VXGE_HAL_BADCFG_LAG_MARKER_GEN_RECV_EN: Invalid option for - * marker_gen_recv_en in config - * @VXGE_HAL_BADCFG_LAG_MARKER_RESP_EN: Invalid option for marker_resp_en - * in config - * @VXGE_HAL_BADCFG_LAG_MARKER_RESP_TIMEOUT: Invalid option for - * marker_resp_timeout in config - * @VXGE_HAL_BADCFG_LAG_SLOW_PROTO_MRKR_MIN_INTERVAL: Invalid option for - * slow_proto_mrkr_min_interval in config - * @VXGE_HAL_BADCFG_LAG_THROTTLE_MRKR_RESP: Invalid option for - * throttle_mrkr_resp in config - * @VXGE_HAL_BADCFG_LAG_SYS_PRI: Invalid system priority in config - * @VXGE_HAL_BADCFG_LAG_USE_PORT_MAC_ADDR: Invalid option for - * use_port_mac_addr in config - * @VXGE_HAL_BADCFG_LAG_MAC_ADDR_SEL: Invalid option for mac_addr_sel in config - * @VXGE_HAL_BADCFG_LAG_ALT_ADMIN_KEY: Invalid alterneate admin key in config - * @VXGE_HAL_BADCFG_LAG_ALT_AGGR: Invalid option for alt_aggr in config - * @VXGE_HAL_BADCFG_LAG_FAST_PER_TIME: Invalid fast periodic time in config - * @VXGE_HAL_BADCFG_LAG_SLOW_PER_TIME: Invalid slow periodic time in config - * @VXGE_HAL_BADCFG_LAG_SHORT_TIMEOUT: Invalid short timeout in config - * @VXGE_HAL_BADCFG_LAG_LONG_TIMEOUT: Invalid long timeout in config - * @VXGE_HAL_BADCFG_LAG_CHURN_DET_TIME: Invalid churn detection time in config - * @VXGE_HAL_BADCFG_LAG_AGGR_WAIT_TIME: Invalid Aggregator wait time in config - * @VXGE_HAL_BADCFG_LAG_SHORT_TIMER_SCALE: Invalid short timer scale in config - * @VXGE_HAL_BADCFG_LAG_LONG_TIMER_SCALE: Invalid long timer scale in config - * @VXGE_HAL_BADCFG_LAG_AGGR_AGGR_ID: Invalid Aggregator Id in config - * @VXGE_HAL_BADCFG_LAG_AGGR_USE_PORT_MAC_ADDR: Invalid option for - * use_port_mac_addr in config - * @VXGE_HAL_BADCFG_LAG_AGGR_MAC_ADDR_SEL: Invalid option for mac_addr_sel - * in config - * @VXGE_HAL_BADCFG_LAG_AGGR_ADMIN_KEY: Invalid admin key in config - * @VXGE_HAL_BADCFG_LAG_PORT_PORT_ID: Invalid port id in config - * @VXGE_HAL_BADCFG_LAG_PORT_LAG_EN: Invalid option for lag_en in config - * @VXGE_HAL_BADCFG_LAG_PORT_DISCARD_SLOW_PROTO: Invalid option for - * discard_slow_proto in config - * @VXGE_HAL_BADCFG_LAG_PORT_HOST_CHOSEN_AGGR: Invalid option for - * host_chosen_aggr in config - * @VXGE_HAL_BADCFG_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO: Invalid option - * for discard unknown slow proto in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_PORT_NUM: Invalid Actor port number in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_PORT_PRIORITY: Invalid Actor port priority - * in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_KEY_10G: Invalid Actor 10G key in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_KEY_1G: Invalid Actor 1G key in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_LACP_ACTIVITY: Invalid option for - * actor_lacp_activity in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_LACP_TIMEOUT: Invalid option for - * actor_lacp_timeout in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_AGGREGATION: Invalid option for - * actor_aggregation in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_SYNCHRONIZATION: Invalid option - * for actor_synchronization in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_COLLECTING: Invalid option for - * actor_collecting in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_DISTRIBUTING: Invalid option for - * actor_distributing in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_DEFAULTED: Invalid option for - * actor_defaulted in config - * @VXGE_HAL_BADCFG_LAG_PORT_ACTOR_EXPIRED: Invalid option for - * actor_expired in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_SYS_PRI: Invalid option for - * partner_sys_pri in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_KEY: Invalid option for - * partner_key in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_NUM: Invalid option for - * partner_port_num in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_PORT_PRIORITY: Invalid option for - * partner_port_pri in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_LACP_ACTIVITY: Invalid option for - * partner_lacp_activity in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_LACP_TIMEOUT: Invalid option for - * partner_lacp_timeout in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_AGGREGATION: Invalid option for - * partner_aggregation in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_SYNCHRONIZATION: Invalid option for - * partner_synchronization in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_COLLECTING: Invalid option for - * partner_collecting in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_DISTRIBUTING: Invalid option for - * partner_distributing in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_DEFAULTED: Invalid option for - * partner_defaulted in config - * @VXGE_HAL_BADCFG_LAG_PORT_PARTNER_EXPIRED: Invalid option for - * partner_expired in config - * @VXGE_HAL_BADCFG_VPATH_QOS_PRIORITY: Invalid vpath priority - * @VXGE_HAL_BADCFG_VPATH_QOS_MIN_BANDWIDTH: Invalid minimum bandwidth - * @VXGE_HAL_BADCFG_VPATH_QOS_MAX_BANDWIDTH: Invalid maximum bandwidth - * @VXGE_HAL_BADCFG_LOG_LEVEL: Invalid option for partner_mac_addr in config - * @VXGE_HAL_BADCFG_RING_ENABLE: Invalid option for ring enable in config - * @VXGE_HAL_BADCFG_RING_LENGTH: Invalid ring length in config in config - * @VXGE_HAL_BADCFG_RING_RXD_BUFFER_MODE: Invalid receive buffer mode in config - * @VXGE_HAL_BADCFG_RING_SCATTER_MODE: Invalid scatter mode setting in config - * @VXGE_HAL_BADCFG_RING_POST_MODE: Invalid post mode setting in config - * @VXGE_HAL_BADCFG_RING_MAX_FRM_LEN: Invalid max frame length setting in config - * @VXGE_HAL_BADCFG_RING_NO_SNOOP_ALL: Invalid no snoop all setting in config - * @VXGE_HAL_BADCFG_RING_TIMER_VAL: Invalid timer value setting in config - * @VXGE_HAL_BADCFG_RING_GREEDY_RETURN: Invalid grredy return setting in config - * @VXGE_HAL_BADCFG_RING_TIMER_CI: Invalid timer ci setting in config - * @VXGE_HAL_BADCFG_RING_BACKOFF_INTERVAL_US: Invalid backoff interval - * in microseconds setting in config - * @VXGE_HAL_BADCFG_RING_INDICATE_MAX_PKTS: Invalid indicate maximum packets - * setting in config - * @VXGE_HAL_BADCFG_FIFO_ENABLE: Invalid option for FIFO enable in config - * @VXGE_HAL_BADCFG_FIFO_LENGTH: Invalid FIFO length in config - * @VXGE_HAL_BADCFG_FIFO_FRAGS: Invalid number of transmit frame fragments - * in config - * @VXGE_HAL_BADCFG_FIFO_ALIGNMENT_SIZE: Invalid alignment size in config - * @VXGE_HAL_BADCFG_FIFO_MAX_FRAGS: Invalid maximum number of transmit frame - * fragments in config - * @VXGE_HAL_BADCFG_FIFO_QUEUE_INTR: Invalid FIFO queue interrupt setting - * in config - * @VXGE_HAL_BADCFG_FIFO_NO_SNOOP_ALL: Invalid FIFO no snoop all setting - * in config - * @VXGE_HAL_BADCFG_DMQ_LENGTH: Invalid DMQ length setting in config - * @VXGE_HAL_BADCFG_DMQ_IMMED_EN: Invalid DMQ immediate enable setting in config - * @VXGE_HAL_BADCFG_DMQ_EVENT_EN: Invalid DMQ event enable setting in config - * @VXGE_HAL_BADCFG_DMQ_INTR_CTRL: Invalid DMQ interrupt control setting - * in config - * @VXGE_HAL_BADCFG_DMQ_GEN_COMPL: Invalid DMQ general completion setting - * in config - * @VXGE_HAL_BADCFG_UMQ_LENGTH: Invalid UMQ length setting in config - * @VXGE_HAL_BADCFG_UMQ_IMMED_EN: Invalid UMQ immediate enable setting in config - * @VXGE_HAL_BADCFG_UMQ_EVENT_EN: Invalid UMQ event enable setting in config - * @VXGE_HAL_BADCFG_UMQ_INTR_CTRL: Invalid UMQ interrupt control setting - * in config - * @VXGE_HAL_BADCFG_UMQ_GEN_COMPL: Invalid UMQ general completion setting - * in config - * @VXGE_HAL_BADCFG_SW_LRO_SESSIONS: Invalid number of SW LRO sessions - * setting in config - * @VXGE_HAL_BADCFG_SW_LRO_SG_SIZE: Invalid SW LRO Segment size - * @VXGE_HAL_BADCFG_SW_LRO_FRM_LEN: Invalid SW LRO Frame Length - * @VXGE_HAL_BADCFG_SW_LRO_MODE: Invalid SW LRO mode setting in config - * @VXGE_HAL_BADCFG_LRO_SESSIONS_MAX: Invalid maximum number of LRO sessions - * setting in config - * @VXGE_HAL_BADCFG_LRO_SESSIONS_THRESHOLD: Invalid sessions number threshold - * setting in config - * @VXGE_HAL_BADCFG_LRO_SESSIONS_TIMEOUT: Invalid sessions timeout setting - * in config - * @VXGE_HAL_BADCFG_LRO_NO_WQE_THRESHOLD: Invalid lower limit for number - * of WQEs in config - * @VXGE_HAL_BADCFG_LRO_DUPACK_DETECTION: Invalid option for - * dupack_detection_enabled in config - * @VXGE_HAL_BADCFG_LRO_DATA_MERGING: Invalid option for - * data_merging_enabled in config - * @VXGE_HAL_BADCFG_LRO_ACK_MERGING: Invalid option for - * ack_merging_enabled in config - * @VXGE_HAL_BADCFG_LRO_LLC_HDR_MODE: Invalid LLC Header Mode - * @VXGE_HAL_BADCFG_LRO_SNAP_HDR_MODE: Invalid SNAP Header Mode - * @VXGE_HAL_BADCFG_LRO_SESSION_ECN: Invalid option for session_ecn_enabled - * @VXGE_HAL_BADCFG_LRO_SESSION_ECN_NONCE: Invalid option for - * session_ecn_enabled_nonce - * @VXGE_HAL_BADCFG_LRO_RXD_BUFFER_MODE: Invalid buffer mode - * @VXGE_HAL_BADCFG_LRO_SCATTER_MODE: Invalid scatter mode - * @VXGE_HAL_BADCFG_LRO_IP_DATAGRAM_SIZE: Invalid IP Datagram size - * @VXGE_HAL_BADCFG_LRO_FRAME_THRESHOLD: Invalid Frame Threshold - * @VXGE_HAL_BADCFG_LRO_PSH_THRESHOLD: Invalid push Threshold - * @VXGE_HAL_BADCFG_LRO_MTU_THRESHOLD: Invalid MTU Threshold - * @VXGE_HAL_BADCFG_LRO_MSS_THRESHOLD: Invalid MSS Threshold - * @VXGE_HAL_BADCFG_LRO_TCP_TSVAL_DELTA: Invalid TXP TSVAL DELTA - * @VXGE_HAL_BADCFG_LRO_ACK_NBR_DELTA: Invalid Acknowledgement delta - * @VXGE_HAL_BADCFG_LRO_SPARE_WQE_CAPACITY: Invalid Spare WQE Capacity - * @VXGE_HAL_BADCFG_TIM_INTR_ENABLE: Invalid TIM interrupt enable setting - * in config - * @VXGE_HAL_BADCFG_TIM_BTIMER_VAL: Invalid TIM btimer value setting in config - * @VXGE_HAL_BADCFG_TIM_TIMER_AC_EN: Invalid TIM timer ac enable setting - * in config - * @VXGE_HAL_BADCFG_TIM_TIMER_CI_EN: Invalid Tx timer continuous interrupt - * enable. See the structure vxge_hal_tim_intr_config_t {} for valid values. - * @VXGE_HAL_BADCFG_TIM_TIMER_RI_EN: Invalid TIM timer ri enable setting - * in config - * @VXGE_HAL_BADCFG_TIM_BTIMER_EVENT_SF: Invalid TIM btimer event sf seting - * in config - * @VXGE_HAL_BADCFG_TIM_RTIMER_VAL: Invalid TIM rtimer setting in config - * @VXGE_HAL_BADCFG_TIM_UTIL_SEL: Invalid TIM utilization setting in config - * @VXGE_HAL_BADCFG_TIM_LTIMER_VAL: Invalid TIM ltimer value setting in config - * @VXGE_HAL_BADCFG_TXFRM_CNT_EN: Invalid transmit frame count enable in config - * @VXGE_HAL_BADCFG_TXD_CNT_EN: Invalid transmit count enable in config - * @VXGE_HAL_BADCFG_TIM_URANGE_A: Invalid link utilization range A. See - * the structure vxge_hal_tim_intr_config_t {} for valid values. - * @VXGE_HAL_BADCFG_TIM_UEC_A: Invalid frame count for link utilization - * range A. See the structure vxge_hal_tim_intr_config_t {} for valid values. - * @VXGE_HAL_BADCFG_TIM_URANGE_B: Invalid link utilization range B. See - * the structure vxge_hal_tim_intr_config_t {} for valid values. - * @VXGE_HAL_BADCFG_TIM_UEC_B: Invalid frame count for link utilization - * range B. See the strucuture vxge_hal_tim_intr_config_t {} for valid values. - * @VXGE_HAL_BADCFG_TIM_URANGE_C: Invalid link utilization range C. See - * the structure vxge_hal_tim_intr_config_t {} for valid values. - * @VXGE_HAL_BADCFG_TIM_UEC_C: Invalid frame count for link utilization - * range C. See the structure vxge_hal_tim_intr_config_t {} for valid values. - * @VXGE_HAL_BADCFG_TIM_UEC_D: Invalid frame count for link utilization - * range D. See the structure vxge_hal_tim_intr_config_t {} for valid values. - * @VXGE_HAL_BADCFG_VPATH_ID: Invalid vpath id in config - * @VXGE_HAL_BADCFG_VPATH_WIRE_PORT: Invalid wire port to be used - * @VXGE_HAL_BADCFG_VPATH_NO_SNOOP: Invalid vpath no snoop setting in config - * @VXGE_HAL_BADCFG_VPATH_MTU: Invalid vpath mtu size setting in config - * @VXGE_HAL_BADCFG_VPATH_TPA_LSOV2_EN: Invalid vpath transmit protocol assist - * lso v2 en setting in config - * @VXGE_HAL_BADCFG_VPATH_TPA_IGNORE_FRAME_ERROR: Invalid vpath transmit - * protocol assist ignore frame error setting in config - * @VXGE_HAL_BADCFG_VPATH_TPA_IPV6_KEEP_SEARCHING: Invalid vpath transmit - * protocol assist ipv6 keep searching setting in config - * @VXGE_HAL_BADCFG_VPATH_TPA_L4_PSHDR_PRESENT: Invalid vpath transmit protocol - * assist L4 pseudo header present setting in config - * @VXGE_HAL_BADCFG_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS: Invalid vpath transmit - * protocol assist support mobile ipv6 headers setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_IPV4_TCP_INCL_PH: Invalid vpath receive protocol - * assist ipv4 tcp include pseudo header setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_IPV6_TCP_INCL_PH: Invalid vpath receive protocol - * assist ipv6 tcp include pseudo header setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_IPV4_UDP_INCL_PH: Invalid vpath receive protocol - * assist ipv4 udp include pseudo header setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_IPV6_UDP_INCL_PH: Invalid vpath receive protocol - * assist ipv6 udp include pseudo header setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_L4_INCL_CF: Invalid vpath receive protocol assist - * layer 4 include cf setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_STRIP_VLAN_TAG: Invalid vpath receive protocol - * assist strip vlan tag setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_L4_COMP_CSUM: Invalid vpath receive protocol - * assist layer 4 compute check sum setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_L3_INCL_CF: Invalid vpath receive protocol - * assist layer 3 include cf setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_L3_COMP_CSUM: Invalid vpath receive protocol - * assist layer 3 compute check sum setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_UCAST_ALL_ADDR_EN: Invalid vpath receive protocol - * assist unicast all address enable setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_MCAST_ALL_ADDR_EN: Invalid vpath receive protocol - * assist multi-icast all address enable setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_CAST_EN: Invalid vpath receive protocol assist - * cast enable setting in config - * @VXGE_HAL_BADCFG_VPATH_RPA_ALL_VID_EN: Invalid vpath receive protocol - * assist all vlan ids enable setting in config - * @VXGE_HAL_BADCFG_VPATH_VP_Q_L2_FLOW: Invalid Q l2 flow setting in config - * @VXGE_HAL_BADCFG_VPATH_VP_STATS_READ_METHOD: Invalid Stats read method - * @VXGE_HAL_BADCFG_VPATH_BANDWIDTH_LIMIT: Invalid bandwidth limit - * @VXGE_HAL_BADCFG_BLOCKPOOL_MIN: Invalid minimum number of block pool blocks - * setting in config - * @VXGE_HAL_BADCFG_BLOCKPOOL_INITIAL: Invalid initial number of block pool - * blocks setting in config - * @VXGE_HAL_BADCFG_BLOCKPOOL_INCR: Invalid number of block pool blocks - * increment setting in config - * @VXGE_HAL_BADCFG_BLOCKPOOL_MAX: Invalid maximum number of block pool - * blocks setting in config - * @VXGE_HAL_BADCFG_ISR_POLLING_CNT: Invalid isr polling count setting in config - * @VXGE_HAL_BADCFG_MAX_PAYLOAD_SIZE: Invalid maximum payload size setting - * in config - * @VXGE_HAL_BADCFG_MMRB_COUNT: Invalid mmrb count setting in config - * @VXGE_HAL_BADCFG_STATS_REFRESH_TIME: Invalid stats refresh time setting - * in config - * @VXGE_HAL_BADCFG_DUMP_ON_SERR: Invalid dump on serr setting in config - * @VXGE_HAL_BADCFG_DUMP_ON_CRITICAL: Invalid dump on critical error setting - * config - * @VXGE_HAL_BADCFG_DUMP_ON_ECCERR: Invalid dump on ecc error setting config - * @VXGE_HAL_BADCFG_DUMP_ON_UNKNOWN: Invalid dump on unknown alarm setting - * config - * @VXGE_HAL_BADCFG_INTR_MODE: Invalid interrupt mode setting in config - * @VXGE_HAL_BADCFG_RTH_EN: Invalid rth enable setting in config - * @VXGE_HAL_BADCFG_RTH_IT_TYPE: Invalid rth it type setting in config - * @VXGE_HAL_BADCFG_UFCA_INTR_THRES: Invalid rxufca interrupt threshold - * setting in config - * @VXGE_HAL_BADCFG_UFCA_LO_LIM: Invalid rxufca low limit setting in config - * @VXGE_HAL_BADCFG_UFCA_HI_LIM: Invalid rxufca high limit setting in config - * @VXGE_HAL_BADCFG_UFCA_LBOLT_PERIOD: Invalid rxufca lbolt period in config - * @VXGE_HAL_BADCFG_DEVICE_POLL_MILLIS: Invalid device poll timeout - * in milliseconds setting in config - * @VXGE_HAL_BADCFG_RTS_MAC_EN: Invalid rts mac enable setting in config - * @VXGE_HAL_BADCFG_RTS_QOS_EN: Invalid rts qos enable setting in config - * @VXGE_HAL_BADCFG_RTS_PORT_EN: Invalid rts port enable setting in config - * @VXGE_HAL_BADCFG_MAX_CQE_GROUPS: Invalid maximum number of CQE groups - * in config - * @VXGE_HAL_BADCFG_MAX_NUM_OD_GROUPS: Invalid maximum number of OD groups - * in config - * @VXGE_HAL_BADCFG_NO_WQE_THRESHOLD: Invalid no wqe threshold setting - * in config - * @VXGE_HAL_BADCFG_REFILL_THRESHOLD_HIGH: Invalid refill threshold setting - * in config - * @VXGE_HAL_BADCFG_REFILL_THRESHOLD_LOW: Invalid refill threshold setting - * in config - * @VXGE_HAL_BADCFG_ACK_BLOCK_LIMIT: Invalid acknowledgement block setting - * in config - * @VXGE_HAL_BADCFG_STATS_READ_METHOD: Invalid stats read method - * @VXGE_HAL_BADCFG_POLL_OR_DOOR_BELL: Invalid poll or doorbell setting - * in config - * @VXGE_HAL_BADCFG_MSIX_ID: Invalid MSIX Id - * @VXGE_HAL_EOF_TRACE_BUF: Invalid end of trace buffer setting in config - * - */ -typedef enum vxge_hal_status_e { - VXGE_HAL_OK = 0, - VXGE_HAL_FAIL = 1, - VXGE_HAL_PENDING = 2, - VXGE_HAL_CONTINUE = 3, - VXGE_HAL_RETURN = 4, - VXGE_HAL_COMPLETIONS_REMAIN = 5, - VXGE_HAL_TRAFFIC_INTERRUPT = 6, - - VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS = VXGE_HAL_BASE_INF + 1, - VXGE_HAL_INF_OUT_OF_DESCRIPTORS = VXGE_HAL_BASE_INF + 2, - VXGE_HAL_INF_QUEUE_IS_NOT_READY = VXGE_HAL_BASE_INF + 4, - VXGE_HAL_INF_MEM_STROBE_CMD_EXECUTING = VXGE_HAL_BASE_INF + 5, - VXGE_HAL_INF_STATS_IS_NOT_READY = VXGE_HAL_BASE_INF + 6, - VXGE_HAL_INF_NO_MORE_FREED_DESCRIPTORS = VXGE_HAL_BASE_INF + 7, - VXGE_HAL_INF_IRQ_POLLING_CONTINUE = VXGE_HAL_BASE_INF + 8, - VXGE_HAL_INF_SW_LRO_BEGIN = VXGE_HAL_BASE_INF + 9, - VXGE_HAL_INF_SW_LRO_CONT = VXGE_HAL_BASE_INF + 10, - VXGE_HAL_INF_SW_LRO_UNCAPABLE = VXGE_HAL_BASE_INF + 11, - VXGE_HAL_INF_SW_LRO_FLUSH_SESSION = VXGE_HAL_BASE_INF + 12, - VXGE_HAL_INF_SW_LRO_FLUSH_BOTH = VXGE_HAL_BASE_INF + 13, - VXGE_HAL_INF_SW_LRO_END_3 = VXGE_HAL_BASE_INF + 14, - VXGE_HAL_INF_SW_LRO_SESSIONS_XCDED = VXGE_HAL_BASE_INF + 15, - VXGE_HAL_INF_NOT_ENOUGH_HW_CQES = VXGE_HAL_BASE_INF + 16, - VXGE_HAL_INF_LINK_UP_DOWN = VXGE_HAL_BASE_INF + 17, - - VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED = VXGE_HAL_BASE_ERR + 1, - VXGE_HAL_ERR_INVALID_HANDLE = VXGE_HAL_BASE_ERR + 2, - VXGE_HAL_ERR_OUT_OF_MEMORY = VXGE_HAL_BASE_ERR + 3, - VXGE_HAL_ERR_VPATH_NOT_AVAILABLE = VXGE_HAL_BASE_ERR + 4, - VXGE_HAL_ERR_VPATH_NOT_OPEN = VXGE_HAL_BASE_ERR + 5, - VXGE_HAL_ERR_WRONG_IRQ = VXGE_HAL_BASE_ERR + 6, - VXGE_HAL_ERR_OUT_OF_MAC_ADDRESSES = VXGE_HAL_BASE_ERR + 7, - VXGE_HAL_ERR_SWAPPER_CTRL = VXGE_HAL_BASE_ERR + 8, - VXGE_HAL_ERR_DEVICE_IS_NOT_QUIESCENT = VXGE_HAL_BASE_ERR + 9, - VXGE_HAL_ERR_INVALID_MTU_SIZE = VXGE_HAL_BASE_ERR + 10, - VXGE_HAL_ERR_OUT_OF_MAPPING = VXGE_HAL_BASE_ERR + 11, - VXGE_HAL_ERR_BAD_SUBSYSTEM_ID = VXGE_HAL_BASE_ERR + 12, - VXGE_HAL_ERR_INVALID_BAR_ID = VXGE_HAL_BASE_ERR + 13, - VXGE_HAL_ERR_INVALID_INDEX = VXGE_HAL_BASE_ERR + 14, - VXGE_HAL_ERR_INVALID_TYPE = VXGE_HAL_BASE_ERR + 15, - VXGE_HAL_ERR_INVALID_OFFSET = VXGE_HAL_BASE_ERR + 16, - VXGE_HAL_ERR_INVALID_DEVICE = VXGE_HAL_BASE_ERR + 17, - VXGE_HAL_ERR_OUT_OF_SPACE = VXGE_HAL_BASE_ERR + 18, - VXGE_HAL_ERR_INVALID_VALUE_BIT_SIZE = VXGE_HAL_BASE_ERR + 19, - VXGE_HAL_ERR_VERSION_CONFLICT = VXGE_HAL_BASE_ERR + 20, - VXGE_HAL_ERR_INVALID_MAC_ADDRESS = VXGE_HAL_BASE_ERR + 21, - VXGE_HAL_ERR_BAD_DEVICE_ID = VXGE_HAL_BASE_ERR + 22, - VXGE_HAL_ERR_OUT_ALIGNED_FRAGS = VXGE_HAL_BASE_ERR + 23, - VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED = VXGE_HAL_BASE_ERR + 24, - VXGE_HAL_ERR_SPDM_NOT_ENABLED = VXGE_HAL_BASE_ERR + 25, - VXGE_HAL_ERR_SPDM_TABLE_FULL = VXGE_HAL_BASE_ERR + 26, - VXGE_HAL_ERR_SPDM_INVALID_ENTRY = VXGE_HAL_BASE_ERR + 27, - VXGE_HAL_ERR_SPDM_ENTRY_NOT_FOUND = VXGE_HAL_BASE_ERR + 28, - VXGE_HAL_ERR_SPDM_TABLE_DATA_INCONSISTENT = VXGE_HAL_BASE_ERR + 29, - VXGE_HAL_ERR_INVALID_PCI_INFO = VXGE_HAL_BASE_ERR + 30, - VXGE_HAL_ERR_CRITICAL = VXGE_HAL_BASE_ERR + 31, - VXGE_HAL_ERR_RESET_FAILED = VXGE_HAL_BASE_ERR + 32, - VXGE_HAL_ERR_TOO_MANY = VXGE_HAL_BASE_ERR + 33, - VXGE_HAL_ERR_PKT_DROP = VXGE_HAL_BASE_ERR + 34, - VXGE_HAL_ERR_INVALID_BLOCK_SIZE = VXGE_HAL_BASE_ERR + 35, - VXGE_HAL_ERR_INVALID_STATE = VXGE_HAL_BASE_ERR + 36, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION = VXGE_HAL_BASE_ERR + 37, - VXGE_HAL_ERR_RESET_IN_PROGRESS = VXGE_HAL_BASE_ERR + 38, - VXGE_HAL_ERR_MAC_TABLE_FULL = VXGE_HAL_BASE_ERR + 39, - VXGE_HAL_ERR_MAC_TABLE_EMPTY = VXGE_HAL_BASE_ERR + 40, - VXGE_HAL_ERR_MAC_TABLE_NO_MORE_ENTRIES = VXGE_HAL_BASE_ERR + 41, - VXGE_HAL_ERR_RTDMA_RTDMA_READY = VXGE_HAL_BASE_ERR + 42, - VXGE_HAL_ERR_WRDMA_WRDMA_READY = VXGE_HAL_BASE_ERR + 43, - VXGE_HAL_ERR_KDFC_KDFC_READY = VXGE_HAL_BASE_ERR + 44, - VXGE_HAL_ERR_TPA_TMAC_BUF_EMPTY = VXGE_HAL_BASE_ERR + 45, - VXGE_HAL_ERR_RDCTL_PIC_QUIESCENT = VXGE_HAL_BASE_ERR + 46, - VXGE_HAL_ERR_XGMAC_NETWORK_FAULT = VXGE_HAL_BASE_ERR + 47, - VXGE_HAL_ERR_ROCRC_OFFLOAD_QUIESCENT = VXGE_HAL_BASE_ERR + 48, - VXGE_HAL_ERR_G3IF_FB_G3IF_FB_GDDR3_READY = VXGE_HAL_BASE_ERR + 49, - VXGE_HAL_ERR_G3IF_CM_G3IF_CM_GDDR3_READY = VXGE_HAL_BASE_ERR + 50, - VXGE_HAL_ERR_RIC_RIC_RUNNING = VXGE_HAL_BASE_ERR + 51, - VXGE_HAL_ERR_CMG_C_PLL_IN_LOCK = VXGE_HAL_BASE_ERR + 52, - VXGE_HAL_ERR_XGMAC_X_PLL_IN_LOCK = VXGE_HAL_BASE_ERR + 53, - VXGE_HAL_ERR_FBIF_M_PLL_IN_LOCK = VXGE_HAL_BASE_ERR + 54, - VXGE_HAL_ERR_PCC_PCC_IDLE = VXGE_HAL_BASE_ERR + 55, - VXGE_HAL_ERR_ROCRC_RC_PRC_QUIESCENT = VXGE_HAL_BASE_ERR + 56, - VXGE_HAL_ERR_SLOT_FREEZE = VXGE_HAL_BASE_ERR + 57, - VXGE_HAL_ERR_INVALID_TCODE = VXGE_HAL_BASE_ERR + 58, - VXGE_HAL_ERR_INVALID_PORT = VXGE_HAL_BASE_ERR + 59, - VXGE_HAL_ERR_INVALID_WIRE_PORT = VXGE_HAL_BASE_ERR + 60, - VXGE_HAL_ERR_INVALID_PRIORITY = VXGE_HAL_BASE_ERR + 61, - VXGE_HAL_ERR_INVALID_MIN_BANDWIDTH = VXGE_HAL_BASE_ERR + 62, - VXGE_HAL_ERR_INVALID_MAX_BANDWIDTH = VXGE_HAL_BASE_ERR + 63, - VXGE_HAL_ERR_INVALID_BANDWIDTH_LIMIT = VXGE_HAL_BASE_ERR + 64, - VXGE_HAL_ERR_INVALID_TOTAL_BANDWIDTH = VXGE_HAL_BASE_ERR + 65, - VXGE_HAL_ERR_MANAGER_NOT_FOUND = VXGE_HAL_BASE_ERR + 66, - VXGE_HAL_ERR_TIME_OUT = VXGE_HAL_BASE_ERR + 67, - VXGE_HAL_ERR_EVENT_UNKNOWN = VXGE_HAL_BASE_ERR + 68, - VXGE_HAL_ERR_EVENT_SERR = VXGE_HAL_BASE_ERR + 69, - VXGE_HAL_ERR_EVENT_CRITICAL = VXGE_HAL_BASE_ERR + 70, - VXGE_HAL_ERR_EVENT_ECCERR = VXGE_HAL_BASE_ERR + 71, - VXGE_HAL_ERR_EVENT_KDFCCTL = VXGE_HAL_BASE_ERR + 72, - VXGE_HAL_ERR_EVENT_SRPCIM_CRITICAL = VXGE_HAL_BASE_ERR + 73, - VXGE_HAL_ERR_EVENT_MRPCIM_CRITICAL = VXGE_HAL_BASE_ERR + 74, - VXGE_HAL_ERR_EVENT_MRPCIM_ECCERR = VXGE_HAL_BASE_ERR + 75, - VXGE_HAL_ERR_EVENT_RESET_START = VXGE_HAL_BASE_ERR + 76, - VXGE_HAL_ERR_EVENT_RESET_COMPLETE = VXGE_HAL_BASE_ERR + 77, - VXGE_HAL_ERR_EVENT_SLOT_FREEZE = VXGE_HAL_BASE_ERR + 78, - VXGE_HAL_ERR_INVALID_DP_MODE = VXGE_HAL_BASE_ERR + 79, - VXGE_HAL_ERR_INVALID_L2_SWITCH_STATE = VXGE_HAL_BASE_ERR + 79, - - VXGE_HAL_BADCFG_WIRE_PORT_PORT_ID = VXGE_HAL_BASE_BADCFG + 1, - VXGE_HAL_BADCFG_WIRE_PORT_MAX_MEDIA = VXGE_HAL_BASE_BADCFG + 2, - VXGE_HAL_BADCFG_WIRE_PORT_MAX_INITIAL_MTU = VXGE_HAL_BASE_BADCFG + 3, - VXGE_HAL_BADCFG_WIRE_PORT_AUTONEG_MODE = VXGE_HAL_BASE_BADCFG + 4, - VXGE_HAL_BADCFG_WIRE_PORT_AUTONEG_RATE = VXGE_HAL_BASE_BADCFG + 5, - VXGE_HAL_BADCFG_WIRE_PORT_FIXED_USE_FSM = VXGE_HAL_BASE_BADCFG + 6, - VXGE_HAL_BADCFG_WIRE_PORT_ANTP_USE_FSM = VXGE_HAL_BASE_BADCFG + 7, - VXGE_HAL_BADCFG_WIRE_PORT_ANBE_USE_FSM = VXGE_HAL_BASE_BADCFG + 8, - VXGE_HAL_BADCFG_WIRE_PORT_LINK_STABILITY_PERIOD = - VXGE_HAL_BASE_BADCFG + 9, - VXGE_HAL_BADCFG_WIRE_PORT_PORT_STABILITY_PERIOD = - VXGE_HAL_BASE_BADCFG + 10, - VXGE_HAL_BADCFG_WIRE_PORT_TMAC_EN = VXGE_HAL_BASE_BADCFG + 11, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_EN = VXGE_HAL_BASE_BADCFG + 12, - VXGE_HAL_BADCFG_WIRE_PORT_TMAC_PAD = VXGE_HAL_BASE_BADCFG + 13, - VXGE_HAL_BADCFG_WIRE_PORT_TMAC_PAD_BYTE = VXGE_HAL_BASE_BADCFG + 14, - VXGE_HAL_BADCFG_WIRE_PORT_TMAC_UTIL_PERIOD = VXGE_HAL_BASE_BADCFG + 15, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_STRIP_FCS = VXGE_HAL_BASE_BADCFG + 16, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PROM_EN = VXGE_HAL_BASE_BADCFG + 18, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_DISCARD_PFRM = VXGE_HAL_BASE_BADCFG + 19, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_UTIL_PERIOD = VXGE_HAL_BASE_BADCFG + 20, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_GEN_EN = VXGE_HAL_BASE_BADCFG + 21, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_RCV_EN = VXGE_HAL_BASE_BADCFG + 22, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_HIGH_PTIME = VXGE_HAL_BASE_BADCFG + 23, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_LIMITER_EN = - VXGE_HAL_BASE_BADCFG + 24, - VXGE_HAL_BADCFG_WIRE_PORT_RMAC_MAX_LIMIT = VXGE_HAL_BASE_BADCFG + 25, - VXGE_HAL_BADCFG_SWITCH_PORT_MAX_INITIAL_MTU = VXGE_HAL_BASE_BADCFG + 26, - VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_EN = VXGE_HAL_BASE_BADCFG + 27, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_EN = VXGE_HAL_BASE_BADCFG + 28, - VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_PAD = VXGE_HAL_BASE_BADCFG + 29, - VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_PAD_BYTE = VXGE_HAL_BASE_BADCFG + 30, - VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_UTIL_PERIOD = - VXGE_HAL_BASE_BADCFG + 31, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_STRIP_FCS = VXGE_HAL_BASE_BADCFG + 32, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PROM_EN = VXGE_HAL_BASE_BADCFG + 33, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_DISCARD_PFRM = - VXGE_HAL_BASE_BADCFG + 34, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_UTIL_PERIOD = - VXGE_HAL_BASE_BADCFG + 35, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_GEN_EN = - VXGE_HAL_BASE_BADCFG + 36, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_RCV_EN = - VXGE_HAL_BASE_BADCFG + 37, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_HIGH_PTIME = VXGE_HAL_BASE_BADCFG + 38, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_LIMITER_EN = - VXGE_HAL_BASE_BADCFG + 39, - VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_MAX_LIMIT = VXGE_HAL_BASE_BADCFG + 40, - VXGE_HAL_BADCFG_MAC_NETWORK_STABILITY_PERIOD = - VXGE_HAL_BASE_BADCFG + 41, - VXGE_HAL_BADCFG_MAC_MC_PAUSE_THRESHOLD = VXGE_HAL_BASE_BADCFG + 42, - VXGE_HAL_BADCFG_MAC_PERMA_STOP_EN = VXGE_HAL_BASE_BADCFG + 43, - VXGE_HAL_BADCFG_MAC_TMAC_TX_SWITCH_DIS = VXGE_HAL_BASE_BADCFG + 44, - VXGE_HAL_BADCFG_MAC_TMAC_LOSSY_SWITCH_EN = VXGE_HAL_BASE_BADCFG + 45, - VXGE_HAL_BADCFG_MAC_TMAC_LOSSY_WIRE_EN = VXGE_HAL_BASE_BADCFG + 46, - VXGE_HAL_BADCFG_MAC_TMAC_BCAST_TO_WIRE_DIS = VXGE_HAL_BASE_BADCFG + 47, - VXGE_HAL_BADCFG_MAC_TMAC_BCAST_TO_SWITCH_DIS = - VXGE_HAL_BASE_BADCFG + 48, - VXGE_HAL_BADCFG_MAC_TMAC_HOST_APPEND_FCS_EN = VXGE_HAL_BASE_BADCFG + 49, - VXGE_HAL_BADCFG_MAC_TPA_SUPPORT_SNAP_AB_N = VXGE_HAL_BASE_BADCFG + 50, - VXGE_HAL_BADCFG_MAC_TPA_ECC_ENABLE_N = VXGE_HAL_BASE_BADCFG + 51, - VXGE_HAL_BADCFG_MAC_RPA_IGNORE_FRAME_ERR = VXGE_HAL_BASE_BADCFG + 52, - VXGE_HAL_BADCFG_MAC_RPA_SNAP_AB_N = VXGE_HAL_BASE_BADCFG + 53, - VXGE_HAL_BADCFG_MAC_RPA_SEARCH_FOR_HAO = VXGE_HAL_BASE_BADCFG + 54, - VXGE_HAL_BADCFG_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS = - VXGE_HAL_BASE_BADCFG + 55, - VXGE_HAL_BADCFG_MAC_RPA_IPV6_STOP_SEARCHING = VXGE_HAL_BASE_BADCFG + 56, - VXGE_HAL_BADCFG_MAC_RPA_NO_PS_IF_UNKNOWN = VXGE_HAL_BASE_BADCFG + 57, - VXGE_HAL_BADCFG_MAC_RPA_SEARCH_FOR_ETYPE = VXGE_HAL_BASE_BADCFG + 58, - VXGE_HAL_BADCFG_MAC_RPA_REPL_L4_COMP_CSUM = VXGE_HAL_BASE_BADCFG + 59, - VXGE_HAL_BADCFG_MAC_RPA_REPL_L3_INCL_CF = VXGE_HAL_BASE_BADCFG + 60, - VXGE_HAL_BADCFG_MAC_RPA_REPL_L3_COMP_CSUM = VXGE_HAL_BASE_BADCFG + 61, - VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV4_TCP_INCL_PH = - VXGE_HAL_BASE_BADCFG + 62, - VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV6_TCP_INCL_PH = - VXGE_HAL_BASE_BADCFG + 63, - VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV4_UDP_INCL_PH = - VXGE_HAL_BASE_BADCFG + 64, - VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV6_UDP_INCL_PH = - VXGE_HAL_BASE_BADCFG + 65, - VXGE_HAL_BADCFG_MAC_RPA_REPL_L4_INCL_CF = VXGE_HAL_BASE_BADCFG + 66, - VXGE_HAL_BADCFG_MAC_RPA_REPL_STRIP_VLAN_TAG = VXGE_HAL_BASE_BADCFG + 67, - - VXGE_HAL_BADCFG_LAG_LAG_EN = VXGE_HAL_BASE_BADCFG + 101, - VXGE_HAL_BADCFG_LAG_LAG_MODE = VXGE_HAL_BASE_BADCFG + 102, - VXGE_HAL_BADCFG_LAG_TX_DISCARD = VXGE_HAL_BASE_BADCFG + 103, - VXGE_HAL_BADCFG_LAG_TX_AGGR_STATS = VXGE_HAL_BASE_BADCFG + 104, - VXGE_HAL_BADCFG_LAG_DISTRIB_ALG_SEL = VXGE_HAL_BASE_BADCFG + 105, - VXGE_HAL_BADCFG_LAG_DISTRIB_REMAP_IF_FAIL = VXGE_HAL_BASE_BADCFG + 106, - VXGE_HAL_BADCFG_LAG_COLL_MAX_DELAY = VXGE_HAL_BASE_BADCFG + 107, - VXGE_HAL_BADCFG_LAG_RX_DISCARD = VXGE_HAL_BASE_BADCFG + 108, - VXGE_HAL_BADCFG_LAG_PREF_INDIV_PORT = VXGE_HAL_BASE_BADCFG + 109, - VXGE_HAL_BADCFG_LAG_HOT_STANDBY = VXGE_HAL_BASE_BADCFG + 110, - VXGE_HAL_BADCFG_LAG_LACP_DECIDES = VXGE_HAL_BASE_BADCFG + 111, - VXGE_HAL_BADCFG_LAG_PREF_ACTIVE_PORT = VXGE_HAL_BASE_BADCFG + 112, - VXGE_HAL_BADCFG_LAG_AUTO_FAILBACK = VXGE_HAL_BASE_BADCFG + 113, - VXGE_HAL_BADCFG_LAG_FAILBACK_EN = VXGE_HAL_BASE_BADCFG + 114, - VXGE_HAL_BADCFG_LAG_COLD_FAILOVER_TIMEOUT = VXGE_HAL_BASE_BADCFG + 115, - VXGE_HAL_BADCFG_LAG_LACP_EN = VXGE_HAL_BASE_BADCFG + 116, - VXGE_HAL_BADCFG_LAG_LACP_BEGIN = VXGE_HAL_BASE_BADCFG + 117, - VXGE_HAL_BADCFG_LAG_DISCARD_LACP = VXGE_HAL_BASE_BADCFG + 118, - VXGE_HAL_BADCFG_LAG_LIBERAL_LEN_CHK = VXGE_HAL_BASE_BADCFG + 119, - VXGE_HAL_BADCFG_LAG_MARKER_GEN_RECV_EN = VXGE_HAL_BASE_BADCFG + 120, - VXGE_HAL_BADCFG_LAG_MARKER_RESP_EN = VXGE_HAL_BASE_BADCFG + 121, - VXGE_HAL_BADCFG_LAG_MARKER_RESP_TIMEOUT = VXGE_HAL_BASE_BADCFG + 122, - VXGE_HAL_BADCFG_LAG_SLOW_PROTO_MRKR_MIN_INTERVAL = - VXGE_HAL_BASE_BADCFG + 123, - VXGE_HAL_BADCFG_LAG_THROTTLE_MRKR_RESP = VXGE_HAL_BASE_BADCFG + 124, - VXGE_HAL_BADCFG_LAG_SYS_PRI = VXGE_HAL_BASE_BADCFG + 125, - VXGE_HAL_BADCFG_LAG_USE_PORT_MAC_ADDR = VXGE_HAL_BASE_BADCFG + 126, - VXGE_HAL_BADCFG_LAG_MAC_ADDR_SEL = VXGE_HAL_BASE_BADCFG + 127, - VXGE_HAL_BADCFG_LAG_ALT_ADMIN_KEY = VXGE_HAL_BASE_BADCFG + 128, - VXGE_HAL_BADCFG_LAG_ALT_AGGR = VXGE_HAL_BASE_BADCFG + 129, - VXGE_HAL_BADCFG_LAG_FAST_PER_TIME = VXGE_HAL_BASE_BADCFG + 130, - VXGE_HAL_BADCFG_LAG_SLOW_PER_TIME = VXGE_HAL_BASE_BADCFG + 131, - VXGE_HAL_BADCFG_LAG_SHORT_TIMEOUT = VXGE_HAL_BASE_BADCFG + 132, - VXGE_HAL_BADCFG_LAG_LONG_TIMEOUT = VXGE_HAL_BASE_BADCFG + 133, - VXGE_HAL_BADCFG_LAG_CHURN_DET_TIME = VXGE_HAL_BASE_BADCFG + 134, - VXGE_HAL_BADCFG_LAG_AGGR_WAIT_TIME = VXGE_HAL_BASE_BADCFG + 135, - VXGE_HAL_BADCFG_LAG_SHORT_TIMER_SCALE = VXGE_HAL_BASE_BADCFG + 136, - VXGE_HAL_BADCFG_LAG_LONG_TIMER_SCALE = VXGE_HAL_BASE_BADCFG + 137, - VXGE_HAL_BADCFG_LAG_AGGR_AGGR_ID = VXGE_HAL_BASE_BADCFG + 138, - VXGE_HAL_BADCFG_LAG_AGGR_USE_PORT_MAC_ADDR = VXGE_HAL_BASE_BADCFG + 139, - VXGE_HAL_BADCFG_LAG_AGGR_MAC_ADDR_SEL = VXGE_HAL_BASE_BADCFG + 140, - VXGE_HAL_BADCFG_LAG_AGGR_ADMIN_KEY = VXGE_HAL_BASE_BADCFG + 141, - VXGE_HAL_BADCFG_LAG_PORT_PORT_ID = VXGE_HAL_BASE_BADCFG + 142, - VXGE_HAL_BADCFG_LAG_PORT_LAG_EN = VXGE_HAL_BASE_BADCFG + 143, - VXGE_HAL_BADCFG_LAG_PORT_DISCARD_SLOW_PROTO = - VXGE_HAL_BASE_BADCFG + 144, - VXGE_HAL_BADCFG_LAG_PORT_HOST_CHOSEN_AGGR = VXGE_HAL_BASE_BADCFG + 145, - VXGE_HAL_BADCFG_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO = - VXGE_HAL_BASE_BADCFG + 146, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_PORT_NUM = VXGE_HAL_BASE_BADCFG + 147, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_PORT_PRIORITY = - VXGE_HAL_BASE_BADCFG + 148, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_KEY_10G = VXGE_HAL_BASE_BADCFG + 149, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_KEY_1G = VXGE_HAL_BASE_BADCFG + 150, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_LACP_ACTIVITY = - VXGE_HAL_BASE_BADCFG + 151, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_LACP_TIMEOUT = - VXGE_HAL_BASE_BADCFG + 152, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_AGGREGATION = VXGE_HAL_BASE_BADCFG + 153, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_SYNCHRONIZATION = - VXGE_HAL_BASE_BADCFG + 154, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_COLLECTING = VXGE_HAL_BASE_BADCFG + 155, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_DISTRIBUTING = - VXGE_HAL_BASE_BADCFG + 156, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_DEFAULTED = VXGE_HAL_BASE_BADCFG + 157, - VXGE_HAL_BADCFG_LAG_PORT_ACTOR_EXPIRED = VXGE_HAL_BASE_BADCFG + 158, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_SYS_PRI = VXGE_HAL_BASE_BADCFG + 159, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_KEY = VXGE_HAL_BASE_BADCFG + 160, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_NUM = VXGE_HAL_BASE_BADCFG + 161, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_PORT_PRIORITY = - VXGE_HAL_BASE_BADCFG + 162, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_LACP_ACTIVITY = - VXGE_HAL_BASE_BADCFG + 163, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_LACP_TIMEOUT = - VXGE_HAL_BASE_BADCFG + 164, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_AGGREGATION = - VXGE_HAL_BASE_BADCFG + 165, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_SYNCHRONIZATION = - VXGE_HAL_BASE_BADCFG + 166, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_COLLECTING = - VXGE_HAL_BASE_BADCFG + 167, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_DISTRIBUTING = - VXGE_HAL_BASE_BADCFG + 168, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_DEFAULTED = - VXGE_HAL_BASE_BADCFG + 169, - VXGE_HAL_BADCFG_LAG_PORT_PARTNER_EXPIRED = - VXGE_HAL_BASE_BADCFG + 170, - VXGE_HAL_BADCFG_VPATH_QOS_PRIORITY = VXGE_HAL_BASE_BADCFG + 171, - VXGE_HAL_BADCFG_VPATH_QOS_MIN_BANDWIDTH = VXGE_HAL_BASE_BADCFG + 172, - VXGE_HAL_BADCFG_VPATH_QOS_MAX_BANDWIDTH = VXGE_HAL_BASE_BADCFG + 173, - - VXGE_HAL_BADCFG_LOG_LEVEL = VXGE_HAL_BASE_BADCFG + 202, - VXGE_HAL_BADCFG_RING_ENABLE = VXGE_HAL_BASE_BADCFG + 203, - VXGE_HAL_BADCFG_RING_LENGTH = VXGE_HAL_BASE_BADCFG + 204, - VXGE_HAL_BADCFG_RING_RXD_BUFFER_MODE = VXGE_HAL_BASE_BADCFG + 205, - VXGE_HAL_BADCFG_RING_SCATTER_MODE = VXGE_HAL_BASE_BADCFG + 206, - VXGE_HAL_BADCFG_RING_POST_MODE = VXGE_HAL_BASE_BADCFG + 207, - VXGE_HAL_BADCFG_RING_MAX_FRM_LEN = VXGE_HAL_BASE_BADCFG + 208, - VXGE_HAL_BADCFG_RING_NO_SNOOP_ALL = VXGE_HAL_BASE_BADCFG + 209, - VXGE_HAL_BADCFG_RING_TIMER_VAL = VXGE_HAL_BASE_BADCFG + 210, - VXGE_HAL_BADCFG_RING_GREEDY_RETURN = VXGE_HAL_BASE_BADCFG + 211, - VXGE_HAL_BADCFG_RING_TIMER_CI = VXGE_HAL_BASE_BADCFG + 212, - VXGE_HAL_BADCFG_RING_BACKOFF_INTERVAL_US = VXGE_HAL_BASE_BADCFG + 213, - VXGE_HAL_BADCFG_RING_INDICATE_MAX_PKTS = VXGE_HAL_BASE_BADCFG + 214, - VXGE_HAL_BADCFG_FIFO_ENABLE = VXGE_HAL_BASE_BADCFG + 215, - VXGE_HAL_BADCFG_FIFO_LENGTH = VXGE_HAL_BASE_BADCFG + 216, - VXGE_HAL_BADCFG_FIFO_FRAGS = VXGE_HAL_BASE_BADCFG + 217, - VXGE_HAL_BADCFG_FIFO_ALIGNMENT_SIZE = VXGE_HAL_BASE_BADCFG + 218, - VXGE_HAL_BADCFG_FIFO_MAX_FRAGS = VXGE_HAL_BASE_BADCFG + 219, - VXGE_HAL_BADCFG_FIFO_QUEUE_INTR = VXGE_HAL_BASE_BADCFG + 220, - VXGE_HAL_BADCFG_FIFO_NO_SNOOP_ALL = VXGE_HAL_BASE_BADCFG + 221, - VXGE_HAL_BADCFG_DMQ_LENGTH = VXGE_HAL_BASE_BADCFG + 222, - VXGE_HAL_BADCFG_DMQ_IMMED_EN = VXGE_HAL_BASE_BADCFG + 223, - VXGE_HAL_BADCFG_DMQ_EVENT_EN = VXGE_HAL_BASE_BADCFG + 224, - VXGE_HAL_BADCFG_DMQ_INTR_CTRL = VXGE_HAL_BASE_BADCFG + 225, - VXGE_HAL_BADCFG_DMQ_GEN_COMPL = VXGE_HAL_BASE_BADCFG + 226, - VXGE_HAL_BADCFG_UMQ_LENGTH = VXGE_HAL_BASE_BADCFG + 227, - VXGE_HAL_BADCFG_UMQ_IMMED_EN = VXGE_HAL_BASE_BADCFG + 228, - VXGE_HAL_BADCFG_UMQ_EVENT_EN = VXGE_HAL_BASE_BADCFG + 229, - VXGE_HAL_BADCFG_UMQ_INTR_CTRL = VXGE_HAL_BASE_BADCFG + 230, - VXGE_HAL_BADCFG_UMQ_GEN_COMPL = VXGE_HAL_BASE_BADCFG + 231, - VXGE_HAL_BADCFG_SW_LRO_SESSIONS = VXGE_HAL_BASE_BADCFG + 232, - VXGE_HAL_BADCFG_SW_LRO_SG_SIZE = VXGE_HAL_BASE_BADCFG + 333, - VXGE_HAL_BADCFG_SW_LRO_FRM_LEN = VXGE_HAL_BASE_BADCFG + 334, - VXGE_HAL_BADCFG_SW_LRO_MODE = VXGE_HAL_BASE_BADCFG + 235, - VXGE_HAL_BADCFG_LRO_SESSIONS_MAX = VXGE_HAL_BASE_BADCFG + 236, - VXGE_HAL_BADCFG_LRO_SESSIONS_THRESHOLD = VXGE_HAL_BASE_BADCFG + 237, - VXGE_HAL_BADCFG_LRO_SESSIONS_TIMEOUT = VXGE_HAL_BASE_BADCFG + 238, - VXGE_HAL_BADCFG_LRO_NO_WQE_THRESHOLD = VXGE_HAL_BASE_BADCFG + 239, - VXGE_HAL_BADCFG_LRO_DUPACK_DETECTION = VXGE_HAL_BASE_BADCFG + 242, - VXGE_HAL_BADCFG_LRO_DATA_MERGING = VXGE_HAL_BASE_BADCFG + 243, - VXGE_HAL_BADCFG_LRO_ACK_MERGING = VXGE_HAL_BASE_BADCFG + 244, - VXGE_HAL_BADCFG_LRO_LLC_HDR_MODE = VXGE_HAL_BASE_BADCFG + 245, - VXGE_HAL_BADCFG_LRO_SNAP_HDR_MODE = VXGE_HAL_BASE_BADCFG + 246, - VXGE_HAL_BADCFG_LRO_SESSION_ECN = VXGE_HAL_BASE_BADCFG + 247, - VXGE_HAL_BADCFG_LRO_SESSION_ECN_NONCE = VXGE_HAL_BASE_BADCFG + 248, - VXGE_HAL_BADCFG_LRO_RXD_BUFFER_MODE = VXGE_HAL_BASE_BADCFG + 249, - VXGE_HAL_BADCFG_LRO_SCATTER_MODE = VXGE_HAL_BASE_BADCFG + 250, - VXGE_HAL_BADCFG_LRO_IP_DATAGRAM_SIZE = VXGE_HAL_BASE_BADCFG + 251, - VXGE_HAL_BADCFG_LRO_FRAME_THRESHOLD = VXGE_HAL_BASE_BADCFG + 252, - VXGE_HAL_BADCFG_LRO_PSH_THRESHOLD = VXGE_HAL_BASE_BADCFG + 253, - VXGE_HAL_BADCFG_LRO_MTU_THRESHOLD = VXGE_HAL_BASE_BADCFG + 254, - VXGE_HAL_BADCFG_LRO_MSS_THRESHOLD = VXGE_HAL_BASE_BADCFG + 255, - VXGE_HAL_BADCFG_LRO_TCP_TSVAL_DELTA = VXGE_HAL_BASE_BADCFG + 256, - VXGE_HAL_BADCFG_LRO_ACK_NBR_DELTA = VXGE_HAL_BASE_BADCFG + 257, - VXGE_HAL_BADCFG_LRO_SPARE_WQE_CAPACITY = VXGE_HAL_BASE_BADCFG + 258, - VXGE_HAL_BADCFG_TIM_INTR_ENABLE = VXGE_HAL_BASE_BADCFG + 259, - VXGE_HAL_BADCFG_TIM_BTIMER_VAL = VXGE_HAL_BASE_BADCFG + 261, - VXGE_HAL_BADCFG_TIM_TIMER_AC_EN = VXGE_HAL_BASE_BADCFG + 262, - VXGE_HAL_BADCFG_TIM_TIMER_CI_EN = VXGE_HAL_BASE_BADCFG + 263, - VXGE_HAL_BADCFG_TIM_TIMER_RI_EN = VXGE_HAL_BASE_BADCFG + 264, - VXGE_HAL_BADCFG_TIM_BTIMER_EVENT_SF = VXGE_HAL_BASE_BADCFG + 265, - VXGE_HAL_BADCFG_TIM_RTIMER_VAL = VXGE_HAL_BASE_BADCFG + 266, - VXGE_HAL_BADCFG_TIM_UTIL_SEL = VXGE_HAL_BASE_BADCFG + 267, - VXGE_HAL_BADCFG_TIM_LTIMER_VAL = VXGE_HAL_BASE_BADCFG + 268, - VXGE_HAL_BADCFG_TXFRM_CNT_EN = VXGE_HAL_BASE_BADCFG + 269, - VXGE_HAL_BADCFG_TXD_CNT_EN = VXGE_HAL_BASE_BADCFG + 270, - VXGE_HAL_BADCFG_TIM_URANGE_A = VXGE_HAL_BASE_BADCFG + 271, - VXGE_HAL_BADCFG_TIM_UEC_A = VXGE_HAL_BASE_BADCFG + 272, - VXGE_HAL_BADCFG_TIM_URANGE_B = VXGE_HAL_BASE_BADCFG + 273, - VXGE_HAL_BADCFG_TIM_UEC_B = VXGE_HAL_BASE_BADCFG + 274, - VXGE_HAL_BADCFG_TIM_URANGE_C = VXGE_HAL_BASE_BADCFG + 275, - VXGE_HAL_BADCFG_TIM_UEC_C = VXGE_HAL_BASE_BADCFG + 276, - VXGE_HAL_BADCFG_TIM_UEC_D = VXGE_HAL_BASE_BADCFG + 277, - VXGE_HAL_BADCFG_VPATH_ID = VXGE_HAL_BASE_BADCFG + 278, - VXGE_HAL_BADCFG_VPATH_WIRE_PORT = VXGE_HAL_BASE_BADCFG + 279, - VXGE_HAL_BADCFG_VPATH_NO_SNOOP = VXGE_HAL_BASE_BADCFG + 281, - VXGE_HAL_BADCFG_VPATH_MTU = VXGE_HAL_BASE_BADCFG + 282, - VXGE_HAL_BADCFG_VPATH_TPA_LSOV2_EN = VXGE_HAL_BASE_BADCFG + 283, - VXGE_HAL_BADCFG_VPATH_TPA_IGNORE_FRAME_ERROR = - VXGE_HAL_BASE_BADCFG + 284, - VXGE_HAL_BADCFG_VPATH_TPA_IPV6_KEEP_SEARCHING = - VXGE_HAL_BASE_BADCFG + 285, - VXGE_HAL_BADCFG_VPATH_TPA_L4_PSHDR_PRESENT = VXGE_HAL_BASE_BADCFG + 286, - VXGE_HAL_BADCFG_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS = - VXGE_HAL_BASE_BADCFG + 287, - VXGE_HAL_BADCFG_VPATH_RPA_IPV4_TCP_INCL_PH = VXGE_HAL_BASE_BADCFG + 288, - VXGE_HAL_BADCFG_VPATH_RPA_IPV6_TCP_INCL_PH = VXGE_HAL_BASE_BADCFG + 289, - VXGE_HAL_BADCFG_VPATH_RPA_IPV4_UDP_INCL_PH = VXGE_HAL_BASE_BADCFG + 290, - VXGE_HAL_BADCFG_VPATH_RPA_IPV6_UDP_INCL_PH = VXGE_HAL_BASE_BADCFG + 291, - VXGE_HAL_BADCFG_VPATH_RPA_L4_INCL_CF = VXGE_HAL_BASE_BADCFG + 292, - VXGE_HAL_BADCFG_VPATH_RPA_STRIP_VLAN_TAG = VXGE_HAL_BASE_BADCFG + 293, - VXGE_HAL_BADCFG_VPATH_RPA_L4_COMP_CSUM = VXGE_HAL_BASE_BADCFG + 294, - VXGE_HAL_BADCFG_VPATH_RPA_L3_INCL_CF = VXGE_HAL_BASE_BADCFG + 295, - VXGE_HAL_BADCFG_VPATH_RPA_L3_COMP_CSUM = VXGE_HAL_BASE_BADCFG + 296, - VXGE_HAL_BADCFG_VPATH_RPA_UCAST_ALL_ADDR_EN = - VXGE_HAL_BASE_BADCFG + 297, - VXGE_HAL_BADCFG_VPATH_RPA_MCAST_ALL_ADDR_EN = - VXGE_HAL_BASE_BADCFG + 298, - VXGE_HAL_BADCFG_VPATH_RPA_CAST_EN = VXGE_HAL_BASE_BADCFG + 299, - VXGE_HAL_BADCFG_VPATH_RPA_ALL_VID_EN = VXGE_HAL_BASE_BADCFG + 300, - VXGE_HAL_BADCFG_VPATH_VP_Q_L2_FLOW = VXGE_HAL_BASE_BADCFG + 301, - VXGE_HAL_BADCFG_VPATH_VP_STATS_READ_METHOD = VXGE_HAL_BASE_BADCFG + 302, - VXGE_HAL_BADCFG_VPATH_BANDWIDTH_LIMIT = VXGE_HAL_BASE_BADCFG + 305, - VXGE_HAL_BADCFG_BLOCKPOOL_MIN = VXGE_HAL_BASE_BADCFG + 306, - VXGE_HAL_BADCFG_BLOCKPOOL_INITIAL = VXGE_HAL_BASE_BADCFG + 307, - VXGE_HAL_BADCFG_BLOCKPOOL_INCR = VXGE_HAL_BASE_BADCFG + 308, - VXGE_HAL_BADCFG_BLOCKPOOL_MAX = VXGE_HAL_BASE_BADCFG + 309, - VXGE_HAL_BADCFG_ISR_POLLING_CNT = VXGE_HAL_BASE_BADCFG + 310, - VXGE_HAL_BADCFG_MAX_PAYLOAD_SIZE = VXGE_HAL_BASE_BADCFG + 312, - VXGE_HAL_BADCFG_MMRB_COUNT = VXGE_HAL_BASE_BADCFG + 313, - VXGE_HAL_BADCFG_STATS_REFRESH_TIME = VXGE_HAL_BASE_BADCFG + 314, - VXGE_HAL_BADCFG_DUMP_ON_UNKNOWN = VXGE_HAL_BASE_BADCFG + 315, - VXGE_HAL_BADCFG_DUMP_ON_SERR = VXGE_HAL_BASE_BADCFG + 316, - VXGE_HAL_BADCFG_DUMP_ON_CRITICAL = VXGE_HAL_BASE_BADCFG + 317, - VXGE_HAL_BADCFG_DUMP_ON_ECCERR = VXGE_HAL_BASE_BADCFG + 318, - VXGE_HAL_BADCFG_INTR_MODE = VXGE_HAL_BASE_BADCFG + 319, - VXGE_HAL_BADCFG_RTH_EN = VXGE_HAL_BASE_BADCFG + 320, - VXGE_HAL_BADCFG_RTH_IT_TYPE = VXGE_HAL_BASE_BADCFG + 321, - VXGE_HAL_BADCFG_UFCA_INTR_THRES = VXGE_HAL_BASE_BADCFG + 323, - VXGE_HAL_BADCFG_UFCA_LO_LIM = VXGE_HAL_BASE_BADCFG + 324, - VXGE_HAL_BADCFG_UFCA_HI_LIM = VXGE_HAL_BASE_BADCFG + 325, - VXGE_HAL_BADCFG_UFCA_LBOLT_PERIOD = VXGE_HAL_BASE_BADCFG + 326, - VXGE_HAL_BADCFG_DEVICE_POLL_MILLIS = VXGE_HAL_BASE_BADCFG + 327, - VXGE_HAL_BADCFG_RTS_MAC_EN = VXGE_HAL_BASE_BADCFG + 330, - VXGE_HAL_BADCFG_RTS_QOS_EN = VXGE_HAL_BASE_BADCFG + 331, - VXGE_HAL_BADCFG_RTS_PORT_EN = VXGE_HAL_BASE_BADCFG + 332, - VXGE_HAL_BADCFG_MAX_CQE_GROUPS = VXGE_HAL_BASE_BADCFG + 333, - VXGE_HAL_BADCFG_MAX_NUM_OD_GROUPS = VXGE_HAL_BASE_BADCFG + 334, - VXGE_HAL_BADCFG_NO_WQE_THRESHOLD = VXGE_HAL_BASE_BADCFG + 335, - VXGE_HAL_BADCFG_REFILL_THRESHOLD_HIGH = VXGE_HAL_BASE_BADCFG + 336, - VXGE_HAL_BADCFG_REFILL_THRESHOLD_LOW = VXGE_HAL_BASE_BADCFG + 337, - VXGE_HAL_BADCFG_ACK_BLOCK_LIMIT = VXGE_HAL_BASE_BADCFG + 338, - VXGE_HAL_BADCFG_STATS_READ_METHOD = VXGE_HAL_BASE_BADCFG + 339, - VXGE_HAL_BADCFG_POLL_OR_DOOR_BELL = VXGE_HAL_BASE_BADCFG + 340, - VXGE_HAL_BADCFG_MSIX_ID = VXGE_HAL_BASE_BADCFG + 341, - VXGE_HAL_BADCFG_VPATH_PRIORITY = VXGE_HAL_BASE_BADCFG + 342, - VXGE_HAL_EOF_TRACE_BUF = -1 - -} vxge_hal_status_e; - -/* - * enum vxge_hal_result_e - HAL Up Message result codes. - * @VXGE_HAL_RESULT_OK: Success - */ -typedef enum vxge_hal_result_e { - VXGE_HAL_RESULT_OK = 0 -} vxge_hal_result_e; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_STATUS_H */ Index: sys/dev/vxge/include/vxgehal-types.h =================================================================== --- sys/dev/vxge/include/vxgehal-types.h +++ sys/dev/vxge/include/vxgehal-types.h @@ -1,768 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_TYPES_H -#define VXGE_HAL_TYPES_H - -__EXTERN_BEGIN_DECLS - -/* - * enum vxge_hal_reopen_e - Open, close, or reopen option. - * @VXGE_HAL_RESET_ONLY: Do not (de)allocate - * @VXGE_HAL_OPEN_NORMAL: Do (de)allocate - * - * Enumerates options used with ring, fifo, sq, srq, cqrq, dmq and umq - * open and close operations. The @VXGE_HAL_RESET_ONLY can be used when - * resetting the device; in this case there is actually no need to free - * and then again malloc the memory (including DMA-able memory). - */ -typedef enum vxge_hal_reopen_e { - VXGE_HAL_RESET_ONLY = 1, - VXGE_HAL_OPEN_NORMAL = 2 -} vxge_hal_reopen_e; - -/* - * struct vxge_hal_version_t - HAL version info - * @version_major: Major version - * @version_minor: Minor version - * @version_fix: version fix - * @version_build: Version Build - * - * Structure to store version info - */ -typedef struct vxge_hal_version_t { - u32 version_major; - u32 version_minor; - u32 version_fix; - u32 version_build; -} vxge_hal_version_t; - -/* - * VXGE_HAL_ETH_ALEN - */ -#define VXGE_HAL_ETH_ALEN 6 - -/* - * typedef macaddr_t - Ethernet address type - */ -typedef u8 macaddr_t[VXGE_HAL_ETH_ALEN]; - -/* - * struct vxge_hal_ipv4 - IP version 4 address type - * @addr: IP address - */ -typedef struct vxge_hal_ipv4 { - u32 addr; -} vxge_hal_ipv4; - -/* - * struct vxge_hal_ipv6 - IP version 6 address type - * @addr: IP address - */ -typedef struct vxge_hal_ipv6 { - u64 addr[2]; -} vxge_hal_ipv6; - -/* - * union vxge_hal_ipaddr_t - IP address type - * @ipv4: IP V4 address - * @ipv6: IP V6 address - */ -typedef union vxge_hal_ipaddr_t { - vxge_hal_ipv4 ipv4; - vxge_hal_ipv6 ipv6; -} vxge_hal_ipaddr_t; - -/* - * typedef vxge_hal_obj_id_t - Object Id type used for Session, - * SRQ, CQRQ, STAG, LRO, SPDM etc objects - */ -typedef u64 vxge_hal_obj_id_t; - -/* basic handles */ - -/* - * typedef vxge_hal_device_h - Handle to the adapter object - */ -typedef void *vxge_hal_device_h; - -/* - * typedef vxge_hal_vpath_h - Handle to the virtual path object returned to LL - */ -typedef void *vxge_hal_vpath_h; - -/* - * typedef vxge_hal_client_h - Handle passed by client for client's private data - */ -typedef void *vxge_hal_client_h; - -/* - * typedef vxge_hal_ring_h - Handle to the ring object used for non offload - * receive - */ -typedef void *vxge_hal_ring_h; - -/* - * typedef vxge_hal_fifo_h - Handle to the fifo object used for non offload send - */ -typedef void *vxge_hal_fifo_h; - - -/* - * typedef vxge_hal_txdl_h - Handle to the transmit desriptor list object used - * for nonoffload send - */ -typedef void *vxge_hal_txdl_h; - -/* - * typedef vxge_hal_rxd_h - Handle to the receive desriptor object used for - * nonoffload receive - */ -typedef void *vxge_hal_rxd_h; - -/* - * typedef vxge_hal_up_msg_h - Handle to the up message queue - */ -typedef void *vxge_hal_up_msg_h; - -/* - * typedef vxge_hal_down_msg_h - Handle to the down message queue - */ -typedef void *vxge_hal_down_msg_h; - - -/* - * typedef vxge_hal_callback_h - Handle to callback function - */ -typedef void *vxge_hal_callback_h; - -/* - * enum vxge_hal_message_type_e - Enumerated message types. - * - * @VXGE_HAL_MSG_TYPE_NCE_CREATE_REQ: The NCE Create Request - * message is used by the host to create an NCE on the adapter. - * @VXGE_HAL_MSG_TYPE_NCE_CREATE_RESP:The NCE Create Response - * message is sent in response to the NCE Create Request - * message from the host to indicate the status of the operation - * and return the NCE ID. - * @VXGE_HAL_MSG_TYPE_NCE_DELETE_REQ:The NCE Delete Request - * messag is sent by the host to delete an NCE after it is no - * longer required. - * @VXGE_HAL_MSG_TYPE_NCE_DELETE_RESP:The NCE Delete Response - * message is sent in response to the NCE Delete Request - * message from the host to indicate the status of the operation. - * @VXGE_HAL_MSG_TYPE_NCE_UPDATE_MAC_REQ:The NCE Update MAC Request - * message is used by the host to modify the MAC address for - * an NCE on the adapter. - * @VXGE_HAL_MSG_TYPE_NCE_UPDATE_MAC_RESP:The NCE Update MAC Response - * message is sent in response to the NCE Update MAC Request - * message from the host to indicate the status of the - * operation. - * @VXGE_HAL_MSG_TYPE_NCE_UPDATE_RCH_TIME_REQ:The NCE Update Rch Time - * Request message is used by the host to update the - * Reachability time for an NCE on the adapter. - * @VXGE_HAL_MSG_TYPE_NCE_UPDATE_RCH_TIME_RESP:The NCE Update - * Rch Time Response message is sent in response to the NCE - * Update Rch Time Request message from the host to indicate - * the status of updating the reachability time for the NCE. - * @VXGE_HAL_MSG_TYPE_NCE_QUERY_REQ:The NCE Query Request message - * is used by the host to query an NCE on the adapter. - * @VXGE_HAL_MSG_TYPE_NCE_QUERY_RESP:The NCE Query Response - * message is sent in response to the NCE Query Request message - * from the host to indicate the status of the operation. - * @VXGE_HAL_MSG_TYPE_NCE_RCH_TIME_EXCEEDED:This is an unsolicited message - * sent to the host by the adapter when the NCE Reach Time has - * been exceeded. - * @VXGE_HAL_MSG_TYPE_CQRQ_CREATE_REQ:The CQRQ Create Request - * message is used by the host to create a CQRQ on the adapter. - * @VXGE_HAL_MSG_TYPE_CQRQ_CREATE_RESP:The CQRQ Create Response - * message is sent in response to the CQRQ Create Request - * message from the host to indicate the status of the operation. - * @VXGE_HAL_MSG_TYPE_CQRQ_DELETE_REQ:The CQRQ Delete Request - * message is used by the host to destroy a CQRQ on the adapter. - * @VXGE_HAL_MSG_TYPE_CQRQ_DELETE_RESP:The CQRQ Delete Response - * message is sent in response to the CQRQ Delete Request - * message from the host to indicate the status of the operation. - * @VXGE_HAL_MSG_TYPE_CQRQ_MODIFY_REQ:The CQRQ Modify Request - * message is used by the host to modify fields for an - * CQRQ on the adapter. The adapter will make the following - * checks - * - The CQRQ ID is valid - * All other checks must be performed by the host software. - * @VXGE_HAL_MSG_TYPE_CQRQ_MODIFY_RESP:The CQRQ Modify Response - * message is sent in response to the CQRQ Modify Request - * message from the host to indicate the status of the operation. - * @VXGE_HAL_MSG_TYPE_CQRQ_QUERY_REQ:The CQRQ Query Request - * message is used by the host to query the properties of a CQRQ - * on the adapter - * @VXGE_HAL_MSG_TYPE_CQRQ_QUERY_RESP:The CQRQ Query Response - * message is sent in response to the CQRQ Query Request - * message from the host to indicate the status of the operation - * and return any CQRQ properties to the host. - * @VXGE_HAL_MSG_TYPE_CQRQ_ARM_REQ:The CQRQ Arm Request message - * is used by the host to change the armed state of a CQRQ on the - * adapter. The armed state determines how the adapter will - * interrupt the host when RDMA messages arrive. - * @VXGE_HAL_MSG_TYPE_CQRQ_ARM_RESP:The CQRQ Arm Response message - * is sent in response to the CQRQ Arm Request message from the - * host to indicate the status of arming the CQRQ - * @VXGE_HAL_MSG_TYPE_CQRQ_EVENT_NOTIF:The CQRQ Event Notification - * message is sent to host when the adapter encounters a - * problem when DMAing CQEs from host memory. There are three - * conditions, EOL, Low Threshold, Drained - * @VXGE_HAL_MSG_TYPE_CQRQ_FIRST_CQE_BW_NOTIF_REQ:The CQRQ - * First CQE BW Notification Request message is used by the - * host to notify the adapter after it has configured the first - * CQE block wrapper(s). It is required to pass the host address - * and number of bytes of the first CQE block wrapper in host - * memory. - * @VXGE_HAL_MSG_TYPE_CQRQ_FIRST_CQE_BW_NOTIF_RESP:The CQRQ - * First CQE BW Notification Response message is sent in - * response to the CQRQ First CQE BW Notification Request - * message from the host to acknowledge the notification from - * host and return the status of updating the CQRQ record with - * the address and bytes of the first CQE block wrapper. - * @VXGE_HAL_MSG_TYPE_SRQ_CREATE_REQ:The SRQ Create Request - * message is used by the host to create an SRQ on the adapter. - * @VXGE_HAL_MSG_TYPE_SRQ_CREATE_RESP:The SRQ Create Response - * message is sent in response to the SRQ Create Request - * message from the host to indicate the status of the operation - * and return the SRQ ID to the host. - * @VXGE_HAL_MSG_TYPE_SRQ_DELETE_REQ:The SRQ Delete Request - * message is used by the host to delete an SRQ on the adapter. - * @VXGE_HAL_MSG_TYPE_SRQ_DELETE_RESP:The SRQ Delete Response - * message is sent in response to the SRQ Delete Request - * message from the host to indicate the status of the operation. - * @VXGE_HAL_MSG_TYPE_SRQ_MODIFY_REQ:The SRQ Modify Request - * message is used by the host to modify an SRQ on the adapter. - * The host must send down all the fields to modify. To simplify - * the adapter firmware there will be no mask to modify individual - * fields. - * @VXGE_HAL_MSG_TYPE_SRQ_MODIFY_RESP:The SRQ Modify Response - * message is sent in response to the SRQ Modify Request - * message from the host to indicate the status of the operation. - * @VXGE_HAL_MSG_TYPE_SRQ_QUERY_REQ:The SRQ Query Request message - * is used by the host to query the properties of an SRQ on the - * adapter. - * @VXGE_HAL_MSG_TYPE_SRQ_QUERY_RESP:The SRQ Query Response - * message is sent in response to the SRQ Query Request message - * from the host to indicate the status of the operation and - * return any SRQ properties to the host - * @VXGE_HAL_MSG_TYPE_SRQ_ARM_REQ:The SRQ Arm Request message is - * sent to the adapter to arm or re-arm the SRQ limit. - * @VXGE_HAL_MSG_TYPE_SRQ_ARM_RESP:The SRQ Arm Response is sent - * to the host to acknowledge the SRQ Arm Request and indicate - * the status of arming or re-arming the SRQ limit. - * @VXGE_HAL_MSG_TYPE_SRQ_EVENT_NOTIF:The SRQ Event Notification - * iMSG is used to alert the host that the adapter has encountered - * one of the following conditions when DMAing WQEs from host - * memory - EOL (End of list of WQEs in host memory),Low Threshold - * (The adapter is running low on available WQEs),Drained (Adapter - * out of WQEs because of EOL condition or adapter use faster than - * DMA), SRQ Limit (The number of available WQEs on adapter + host - * less than SRQ limit and the SRQ limit is armed). - * @VXGE_HAL_MSG_TYPE_SRQ_FIRST_WQE_BW_NOTIF_REQ:The SRQ First - * WQE BW Notification Request is used to alert the adapter of - * the location of the first WQE block wrapper after initially - * creating the SRQ. It is required because the host cannot - * pre-post WQEs when creating the SRQ. - * @VXGE_HAL_MSG_TYPE_SRQ_FIRST_WQE_BW_NOTIF_RESP:The SRQ First - * WQE BW Notification Response message is sent in response to - * the SRQ First WQE BW Notification Request message from the - * host to indicate the status of the operation. - * @VXGE_HAL_MSG_TYPE_SRQ_WQE_BLOCKS_ADDED_NOTIF_REQ:The SRQ - * WQE Blocks Added Notification Request is used to alert the - * adapter that new WQEs have been posted in host memory. This is - * required in order for the adapter to support the concept of SRQ - * limit. - * @VXGE_HAL_MSG_TYPE_SRQ_WQE_BLOCKS_ADDED_NOTIF_RESP:The SRQ - * WQE Blocks Added Notification Response is sent by the adapter - * in response to the SRQ WQE Blocks Added Notification Request - * to acknowledge the notification from the host and to return any - * status in the event a problem occurred. - * @VXGE_HAL_MSG_TYPE_SRQ_RETURN_UNUSED_WQES_REQ:The SRQ Return WQEs - * Request message may be sent by the host to reclaim unused - * WQEs from the head of the WQE block wrapper list. Its purpose - * is to reclaim over-provisioned WQEs for an SRQ. The host may - * choose to reclaim WQEs from an SRQ at any time. - * @VXGE_HAL_MSG_TYPE_SRQ_RETURN_UNUSED_WQES_RESP:The SRQ Return WQEs - * is sent in reply to the SRQ Return WQEs Request message - * to reclaim unused WQEs from an over-provisioned SRQ. - * @VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_NSMR_REQ:This downward message - * commands the adapter to create a new non-shared memory region - * (NSMR) in the invalid state. This message is used to implement - * the Allocate Non-Shared Memory Region memory management verb. - * @VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_NSMR_RESP:This upward message - * communicates to the host the success or failure of the - * corresponding STAG Allocate NSMR Request message - * @VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_MW_REQ:This downward message - * commands the adapter to allocate a new memory window (MW). - * This message is used to implement the Allocate Memory Window - * memory management verb. - * @VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_MW_RESP:This upward message - * communicates to the host the success or failure of the - * corresponding STAG Allocate MW Request message. - * @VXGE_HAL_MSG_TYPE_STAG_DE_ALLOCATE_REQ:This downward message - * commands the adapter to deallocate the specified STag, freeing - * up any on-adapter resources - * @VXGE_HAL_MSG_TYPE_STAG_DE_ALLOCATE_RESP:This upward message - * communicates to the host the success or failure of the - * corresponding STAG De-allocate Request message. - * @VXGE_HAL_MSG_TYPE_STAG_REGISTER_NSMR_REQ:This downward message - * commands the adapter to register a non-shared memory region. - * This message is used to implement Register NSMR memory - * management verb Fast registration cannot be performed with - * this . It can only be done via the PostSQ TOWI. - * @VXGE_HAL_MSG_TYPE_STAG_REGISTER_NSMR_RESP:This upward message - * communicates to the host the success or failure of the - * corresponding STAG Register NSMR Request message. - * @VXGE_HAL_MSG_TYPE_STAG_RE_REGISTER_NSMR_REQ:This downward - * message commands the adapter to change the memory registration - * of an existing NSMR to create a new NSMR in the valid state. - * This message is used to implement the Reregister Non-Shared - * Memory Region memory management verb. - * @VXGE_HAL_MSG_TYPE_STAG_RE_REGISTER_NSMR_RESP:This upward message - * communicates to the host the success or failure of the - * corresponding STAG Re-register NSMR Request message - * @VXGE_HAL_MSG_TYPE_STAG_REGISTER_SMR_REQ:This downward message - * commands the adapter to create a shared memory region (SMR) - * based on an existing memory region, either shared(SMR) or - * non-shared(NSMR). This message is used to implement the - * Register Shared Memory Region verb. - * @VXGE_HAL_MSG_TYPE_STAG_REGISTER_SMR_RESP:This upward message - * communicates to the host the success or failure of the - * corresponding STAG Re-register NSMR Request message. - * @VXGE_HAL_MSG_TYPE_STAG_QUERY_REQ:This downward message commands - * the adapter to return the specifics of the specified STag. - * This message is used to implement the Query Memory Region - * memory management verb and the Query Memory Window memory - * management verb. Memory region and memory window querying - * could be handled entirely by the host software without any - * adapter involvement. The STAG Query Request and STAG - * Query Response messages allow the host to implement - * adapter-based STag querying. - * @VXGE_HAL_MSG_TYPE_STAG_QUERY_RESP:This upward message - * communicates to the host the specifics of the queried STag. - * The response message does not return the underlying the PBL. - * @VXGE_HAL_MSG_TYPE_STAG_VALID_LOCAL_TAG_REQ:This message - * commands the adapter to transition an invalid STag to the - * valid state without changing any of its other attributes. - * The Validate-STag-/Validate-STag-Response- messages - * allow a Neterion-proprietary ability to revalidate an invalid - * STag without changing any of its attributes or its PBL. This - * is expected to be useful in situations where an STag is - * invalidated and then revalidated with the same attributes - * including PBL. Using this message, rather than the more - * general Reregister NSMR, saves the overhead of transferring - * the PBL to the adapter. - * @VXGE_HAL_MSG_TYPE_STAG_VALID_LOCAL_TAG_RESP:This upward message - * communicates to the host the success of failure of the - * corresponding STAG Validate Local Tag Request message. - * @VXGE_HAL_MSG_TYPE_STAG_INVALID_LOCAL_TAG_REQ: The STAG - * Invalidate Local Tag Request message is used by the host to - * invalidate a local STAG. This message provides an alternative - * route for the normal TOWI based STAG Invalidation. It allows a - * kernel mode process to invalidate an STAG without writing - * a TOWI. - * @VXGE_HAL_MSG_TYPE_STAG_INVALID_LOCAL_TAG_RESP: This upward - * message communicates to the host the success or failure of the - * corresponding STAG Invalidate Local Tag Request message. - * @VXGE_HAL_MSG_TYPE_STAG_BIND_MW_REQ: This downward message commands - * the adapter to bind an existing (invalid) MW to an existing - * (valid) MR. This message provides an alternative to the TOWI - * based implementation allowing the path be used for MW binding - * @VXGE_HAL_MSG_TYPE_STAG_BIND_MW_RESP: This upward message - * communicates to the host the success or failure of the - * corresponding STAG Bind MW Request message. - * @VXGE_HAL_MSG_TYPE_STAG_FAST_REGISTER_NSMR_REQ: The STAG Fast - * Register NSMR Request provides an alternative way to fast - * register an NSMR instead of going to the TOWI path. - * @VXGE_HAL_MSG_TYPE_STAG_FAST_REGISTER_NSMR_RESP: The STag Fast - * Register NSMR Response message is sent to the host from - * the adapter in response to the original message. It - * indicates the status of fast registering the NSMR. - * @VXGE_HAL_MSG_TYPE_TCP_OPEN_REQ:The TCP Open Request message - * is sent by the host to open a TCP connection on the adapter. - * @VXGE_HAL_MSG_TYPE_TCP_OPEN_RESP:The TCP Open Response message - * is sent in response to a TCP Open Request message to indicate - * that the TCP session has been opened - * @VXGE_HAL_MSG_TYPE_TCP_PROMOTE_TO_IWARP_REQ:The TCP Promote to - * iWARP Request message is sent from the host to the adapter - * in order to migrate an existing bytestream session to iWARP - * mode. - * @VXGE_HAL_MSG_TYPE_TCP_PROMOTE_TO_IWARP_RESP:The TCP Promote to - * iWARP Response message is sent to the host to indicate the - * status of promoting an existing bytestream session to iWARP - * mode. - * @VXGE_HAL_MSG_TYPE_TCP_MODIFY_REQ:The TCP Modify Request message - * is sent by the host to modify the attributes associated with a - * bytestream or iWARP session. - * @VXGE_HAL_MSG_TYPE_TCP_MODIFY_RESP:The TCP Modify Response message - * is sent to the host in response to a TCP Modify Request message - * to indicate the status of changing the attributes associated - * with the bytestream or iWARP session. - * @VXGE_HAL_MSG_TYPE_TCP_DELETE_REQ:The TCP Delete Request - * message is sent by the host to delete a bytestream TCP session - * on the adapter. - * @VXGE_HAL_MSG_TYPE_TCP_DELETE_RESP:The TCP Delete Response - * message is sent in response to a TCP Delete Request message - * to indicate that the TCP session has been deleted. - * @VXGE_HAL_MSG_TYPE_TCP_ABORT_REQ: The TCP Abort Request message - * is used to abort a bytestream or iWARP session. - * @VXGE_HAL_MSG_TYPE_TCP_ABORT_RESP: The TCP Abort Response - * message is sent to the host from the adapter after aborting the - * bytestream or iWARP session. - * @VXGE_HAL_MSG_TYPE_TCP_ESTABLISHED: The TCP Established message is - * an un-solicited event sent from the adapter to the host when - * the SYN+ACK segment arrives (active opener) or the ACK segment - * (passive opener) arrives at the adapter. - * @VXGE_HAL_MSG_TYPE_TCP_FIN_RECEIVED: The TCP FIN Received message - * is an un-solicited event sent from the adapter to the host on - * session teardown. It indicates that the FIN segment has been - * received from the remote end and the session is now in TIME - * WAIT state. - * @VXGE_HAL_MSG_TYPE_TCP_TIME_WAIT_DONE: The TCP Time Wait Done message - * is sent from the adapter to the host to indicate when the TCP - * session leaves the TIME WAIT state. - * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_RXWIN: This message is used for receive - * window updates, both for rx window flow control updates(updates - * to rcv_buf as data is consumed by the application on the host) - * and for maximum receive window size updates (when the receive - * buffer size changes on the host) - * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_MSS: This is sent by the host to the - * adapter to update the MSS for the session. - * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_IP_HEADER: The TCP Update IP Header - * is used to update the IP TOS and IP flow label in the IP header - * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_KEEPALIVE: The TCP Update Keepalive - * message is sent from the host to the adapter to update the - * keep-alive timer for the session. - * @VXGE_HAL_MSG_TYPE_TCP_UPDATE_FAILURE: The TCP Update Failure - * message is sent to the host from the adapter in the event that - * one of the TCP update messages failed for the session. Normally - * these messages do not require a reply and therefore there is no - * response from the adapter. The TCP Update messages include: - * VXGE_HAL_MSG_TYPE_TCP_UPDATE_RXWIN - * VXGE_HAL_MSG_TYPE_TCP_UPDATE_MSS - * VXGE_HAL_MSG_TYPE_TCP_UPDATE_IP_HEADER - * VXGE_HAL_MSG_TYPE_TCP_UPDATE_KEEPALIVE - * @VXGE_HAL_MSG_TYPE_TCP_FIN_ACK_RECEIVED:The TCP FIN ACK Received - * message is an unsolicited message sent to the host from the - * adapter on received of the ACK segment acknowledging that the - * remote end has received the FIN. It is required for Sun's KPI - * interface. - * @VXGE_HAL_MSG_TYPE_TCP_RELINK_TO_NCE_REQ:The TCP Relink to NCE - * Request would be used to change the NCE entry associated - * with a particular bytestream or iWARP session. This message - * could be used to change the NCE of a group of sessions if a - * particular path went down and need to be replaced by a new path - * The host is responsible for tracking the mapping of sessions to - * NCEs so that when de-allocating an NCE it does not de-allocate - * on that is still in use by a particular session. - * @VXGE_HAL_MSG_TYPE_TCP_RELINK_TO_NCE_RESP:This message is sent in - * response to the TCP Relink to NCE Request to indicate the - * status of re-linking the TCP session to a particular NCE. - * @VXGE_HAL_MSG_TYPE_TCP_QP_LIMIT_EXCEEDED:The TCP QP Limit Exceeded - * Notification message is sent to the host when an iWARP - * session has reached its QP Limit and the QP limit was armed. - * @VXGE_HAL_MSG_TYPE_TCP_RDMA_TERMINATE_RECEIVED:The TCP RDMA Terminate - * Received message is an un-solicited event sent from the - * adapter to the host when an RDMA terminate message has been - * received from the remote end. - * @VXGE_HAL_MSG_TYPE_LRO_OPEN_REQ:The LRO Open Request message - * is sent by the host to open an LRO connection on the adapter. - * There is no PE context for an LRO session. The PE is involved - * for timer purposes and transferring messages to the RPE but it - * contains no session context. - * @VXGE_HAL_MSG_TYPE_LRO_OPEN_RESP:The LRO Open Response message - * is sent in response to a LRO Open Request message to - * indicate that the LRO session has been opened. - * @VXGE_HAL_MSG_TYPE_LRO_END_CLASSIF_REQ:The LRO End - * Classification Request is sent by the host before the LRO - * Delete Request to tell the adapter to stop steering Rx - * frames from that session into the LRO path. The host would - * later call LRO Delete Request . Separating these two calls - * allows enough time to pass so that frames already in the FB can - * be drained out, thereby avoiding the need for frame reversion. - * @VXGE_HAL_MSG_TYPE_LRO_END_CLASSIF_RESP:The LRO End - * Classification Response message is sent in response to a - * LRO End Classification Request message to indicate that - * classification has been stopped for the LRO session and the - * host can proceed with deleting the LRO session. - * @VXGE_HAL_MSG_TYPE_LRO_DELETE_REQ:The LRO Delete Request - * message is sent by the host to delete a LRO session on the - * adapter.It might be possible in the future to replace this - * message and the TCP Delete Request with a single common - * message since there doesn't seem to be any difference between - * the two anymore. - * @VXGE_HAL_MSG_TYPE_LRO_DELETE_RESP:The LRO Delete Response - * message is sent in response to a LRO Delete Request message - * to indicate that the LRO session has been deleted. - * @VXGE_HAL_MSG_TYPE_LRO_SESSION_CANDIDATE_NOTIF:This msg - * indicates to the host that the adapter's autoLRO feature has - * identified a candidate LRO session. No response from the host - * is required. (If the host did decide to act on this information - * from the adapter, the host would use the usual LRO Open Request - * ). - * @VXGE_HAL_MSG_TYPE_SPDM_OPEN_REQ:The SPDM Open Request message - * is sent by the host to open an SPDM connection on the adapter. - * There is no RPE or PE context for an SPDM session. The ONE is - * not involved in this type of classification. - * @VXGE_HAL_MSG_TYPE_SPDM_OPEN_RESP:The SPDM Open Response - * message is sent in response to a SPDM Open Request message - * to indicate the status of creating the SPDM session. - * @VXGE_HAL_MSG_TYPE_SPDM_DELETE_REQ:The SPDM Delete Request - * message is sent by the host to delete an SPDM session on the - * adapter. It might be possible in the future to replace this - * message and the LRO/TCP Delete Request with a single common - * message since there doesn't seem to be any difference between - * the two anymore. - * @VXGE_HAL_MSG_TYPE_SPDM_DELETE_RESP:The SPDM Delete Response - * message is sent in response to a SPDM Delete Request message - * to indicate that the SPDM session has been deleted. - * @VXGE_HAL_MSG_TYPE_SESSION_EVENT_NOTIF:The Session Event - * Notification message is an unsolicited message from the - * adapter used to inform the host about an unexpected condition - * on a bytestream or iWARP session. - * @VXGE_HAL_MSG_TYPE_SESSION_QUERY_REQ:The Session Query Request - * message is sent by the host to query the attributes of an - * existing offloaded session. This message may be used to query - * the attributes of an SPDM, LRO, bytestream or iWARP session. - * Initially this will be a single message used for all purposes. - * In the future this may be split up into multiple messages - * allowing the user to query the pecific context for an SPDM, - * LRO, iWARP, or bytestream session. - * @VXGE_HAL_MSG_TYPE_SESSION_QUERY_RESP:The Session Query Response - * message is sent in response to a Session Query Request - * message to return the attributes associated with the specified - * session - * @VXGE_HAL_MSG_TYPE_SESSION_RETURN_IN_PROG_WQES: This message is - * generated by the adapter during deletion of a session to return - * any WQEs that may be in the in-progress list for the session.If - * a WQE is in the in-progress list it is owned by the session and - * cannot be returned to the head of WQE list for an SRQ because - * of ordering issues. Therefore, it must be returned to the host - * at which point the host may choose to destroy the resource or - * simply re-post the WQE for re-use. - * @VXGE_HAL_MSG_TYPE_SESSION_FRAME_WRITE:The Frame Write message is - * generated by the adapter in order to send certain frames to the - * host via the path instead of the normal path. Frames will be - * sent to the host under the following conditions: - * 1) mis-aligned frames that the adapter cannot place - * 2) during debugging to look at the contents of the frame - * In addition to this,a RDMA terminate message will also be sent - * via a message but in this case it will be sent in a TCP RDMA - * Terminate Received message. Frames arriving in the will - * not have markers stripped. Instead the host will be responsible - * for stripping markers and taking appropriate action on the - * received frame. - * @VXGE_HAL_MSG_TYPE_SQ_CREATE_REQ: This is HAL private message for. - * SQ create. Never used. - * @VXGE_HAL_MSG_TYPE_SQ_CREATE_RESP: This is HAL private message - * for SQ create response. This is reported to clients by HAL. - * @VXGE_HAL_MSG_TYPE_SQ_DELETE_REQ: This is HAL private message for. - * SQ delete. Never used. - * @VXGE_HAL_MSG_TYPE_SQ_DELETE_RESP:This is HAL private message - * for SQ delete response. This is reported to clients by HAL. - * - * Message types supported by the adapter and HAL Private messages. - */ -typedef enum vxge_hal_message_type_e { - VXGE_HAL_MSG_TYPE_NCE_CREATE_REQ = 1, - VXGE_HAL_MSG_TYPE_NCE_CREATE_RESP = 2, - VXGE_HAL_MSG_TYPE_NCE_DELETE_REQ = 3, - VXGE_HAL_MSG_TYPE_NCE_DELETE_RESP = 4, - VXGE_HAL_MSG_TYPE_NCE_UPDATE_MAC_REQ = 5, - VXGE_HAL_MSG_TYPE_NCE_UPDATE_MAC_RESP = 6, - VXGE_HAL_MSG_TYPE_NCE_UPDATE_RCH_TIME_REQ = 7, - VXGE_HAL_MSG_TYPE_NCE_UPDATE_RCH_TIME_RESP = 8, - VXGE_HAL_MSG_TYPE_NCE_QUERY_REQ = 9, - VXGE_HAL_MSG_TYPE_NCE_QUERY_RESP = 10, - VXGE_HAL_MSG_TYPE_NCE_RCH_TIME_EXCEEDED = 86, - VXGE_HAL_MSG_TYPE_CQRQ_CREATE_REQ = 11, - VXGE_HAL_MSG_TYPE_CQRQ_CREATE_RESP = 12, - VXGE_HAL_MSG_TYPE_CQRQ_DELETE_REQ = 13, - VXGE_HAL_MSG_TYPE_CQRQ_DELETE_RESP = 14, - VXGE_HAL_MSG_TYPE_CQRQ_MODIFY_REQ = 16, - VXGE_HAL_MSG_TYPE_CQRQ_MODIFY_RESP = 17, - VXGE_HAL_MSG_TYPE_CQRQ_QUERY_REQ = 18, - VXGE_HAL_MSG_TYPE_CQRQ_QUERY_RESP = 19, - VXGE_HAL_MSG_TYPE_CQRQ_ARM_REQ = 20, - VXGE_HAL_MSG_TYPE_CQRQ_ARM_RESP = 21, - VXGE_HAL_MSG_TYPE_CQRQ_EVENT_NOTIF = 22, - VXGE_HAL_MSG_TYPE_CQRQ_FIRST_CQE_BW_NOTIF_REQ = 23, - VXGE_HAL_MSG_TYPE_CQRQ_FIRST_CQE_BW_NOTIF_RESP = 24, - VXGE_HAL_MSG_TYPE_SRQ_CREATE_REQ = 27, - VXGE_HAL_MSG_TYPE_SRQ_CREATE_RESP = 28, - VXGE_HAL_MSG_TYPE_SRQ_DELETE_REQ = 29, - VXGE_HAL_MSG_TYPE_SRQ_DELETE_RESP = 30, - VXGE_HAL_MSG_TYPE_SRQ_MODIFY_REQ = 31, - VXGE_HAL_MSG_TYPE_SRQ_MODIFY_RESP = 32, - VXGE_HAL_MSG_TYPE_SRQ_QUERY_REQ = 33, - VXGE_HAL_MSG_TYPE_SRQ_QUERY_RESP = 34, - VXGE_HAL_MSG_TYPE_SRQ_ARM_REQ = 35, - VXGE_HAL_MSG_TYPE_SRQ_ARM_RESP = 36, - VXGE_HAL_MSG_TYPE_SRQ_EVENT_NOTIF = 37, - VXGE_HAL_MSG_TYPE_SRQ_FIRST_WQE_BW_NOTIF_REQ = 38, - VXGE_HAL_MSG_TYPE_SRQ_FIRST_WQE_BW_NOTIF_RESP = 39, - VXGE_HAL_MSG_TYPE_SRQ_WQE_BLOCKS_ADDED_NOTIF_REQ = 40, - VXGE_HAL_MSG_TYPE_SRQ_WQE_BLOCKS_ADDED_NOTIF_RESP = 41, - VXGE_HAL_MSG_TYPE_SRQ_RETURN_UNUSED_WQES_REQ = 96, - VXGE_HAL_MSG_TYPE_SRQ_RETURN_UNUSED_WQES_RESP = 42, - VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_NSMR_REQ = 43, - VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_NSMR_RESP = 44, - VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_MW_REQ = 45, - VXGE_HAL_MSG_TYPE_STAG_ALLOCATE_MW_RESP = 46, - VXGE_HAL_MSG_TYPE_STAG_DE_ALLOCATE_REQ = 47, - VXGE_HAL_MSG_TYPE_STAG_DE_ALLOCATE_RESP = 48, - VXGE_HAL_MSG_TYPE_STAG_REGISTER_NSMR_REQ = 49, - VXGE_HAL_MSG_TYPE_STAG_REGISTER_NSMR_RESP = 50, - VXGE_HAL_MSG_TYPE_STAG_RE_REGISTER_NSMR_REQ = 51, - VXGE_HAL_MSG_TYPE_STAG_RE_REGISTER_NSMR_RESP = 52, - VXGE_HAL_MSG_TYPE_STAG_REGISTER_SMR_REQ = 53, - VXGE_HAL_MSG_TYPE_STAG_REGISTER_SMR_RESP = 54, - VXGE_HAL_MSG_TYPE_STAG_QUERY_REQ = 55, - VXGE_HAL_MSG_TYPE_STAG_QUERY_RESP = 56, - VXGE_HAL_MSG_TYPE_STAG_VALID_LOCAL_TAG_REQ = 57, - VXGE_HAL_MSG_TYPE_STAG_VALID_LOCAL_TAG_RESP = 58, - VXGE_HAL_MSG_TYPE_STAG_INVALID_LOCAL_TAG_REQ = 87, - VXGE_HAL_MSG_TYPE_STAG_INVALID_LOCAL_TAG_RESP = 88, - VXGE_HAL_MSG_TYPE_STAG_BIND_MW_REQ = 89, - VXGE_HAL_MSG_TYPE_STAG_BIND_MW_RESP = 90, - VXGE_HAL_MSG_TYPE_STAG_FAST_REGISTER_NSMR_REQ = 91, - VXGE_HAL_MSG_TYPE_STAG_FAST_REGISTER_NSMR_RESP = 92, - VXGE_HAL_MSG_TYPE_TCP_OPEN_REQ = 59, - VXGE_HAL_MSG_TYPE_TCP_OPEN_RESP = 60, - VXGE_HAL_MSG_TYPE_TCP_PROMOTE_TO_IWARP_REQ = 61, - VXGE_HAL_MSG_TYPE_TCP_PROMOTE_TO_IWARP_RESP = 62, - VXGE_HAL_MSG_TYPE_TCP_MODIFY_REQ = 98, - VXGE_HAL_MSG_TYPE_TCP_MODIFY_RESP = 99, - VXGE_HAL_MSG_TYPE_TCP_DELETE_REQ = 63, - VXGE_HAL_MSG_TYPE_TCP_DELETE_RESP = 64, - VXGE_HAL_MSG_TYPE_TCP_ABORT_REQ = 65, - VXGE_HAL_MSG_TYPE_TCP_ABORT_RESP = 66, - VXGE_HAL_MSG_TYPE_TCP_ESTABLISHED = 78, - VXGE_HAL_MSG_TYPE_TCP_FIN_RECEIVED = 79, - VXGE_HAL_MSG_TYPE_TCP_TIME_WAIT_DONE = 80, - VXGE_HAL_MSG_TYPE_TCP_UPDATE_RXWIN = 81, - VXGE_HAL_MSG_TYPE_TCP_UPDATE_MSS = 82, - VXGE_HAL_MSG_TYPE_TCP_UPDATE_IP_HEADER = 83, - VXGE_HAL_MSG_TYPE_TCP_UPDATE_KEEPALIVE = 84, - VXGE_HAL_MSG_TYPE_TCP_UPDATE_FAILURE = 85, - VXGE_HAL_MSG_TYPE_TCP_FIN_ACK_RECEIVED = 87, - VXGE_HAL_MSG_TYPE_TCP_RELINK_TO_NCE_REQ = 88, - VXGE_HAL_MSG_TYPE_TCP_RELINK_TO_NCE_RESP = 89, - VXGE_HAL_MSG_TYPE_TCP_QP_LIMIT_EXCEEDED = 100, - VXGE_HAL_MSG_TYPE_TCP_RDMA_TERMINATE_RECEIVED = 101, - VXGE_HAL_MSG_TYPE_LRO_OPEN_REQ = 67, - VXGE_HAL_MSG_TYPE_LRO_OPEN_RESP = 68, - VXGE_HAL_MSG_TYPE_LRO_END_CLASSIF_REQ = 69, - VXGE_HAL_MSG_TYPE_LRO_END_CLASSIF_RESP = 70, - VXGE_HAL_MSG_TYPE_LRO_DELETE_REQ = 71, - VXGE_HAL_MSG_TYPE_LRO_DELETE_RESP = 72, - VXGE_HAL_MSG_TYPE_LRO_SESSION_CANDIDATE_NOTIF = 73, - VXGE_HAL_MSG_TYPE_SPDM_OPEN_REQ = 74, - VXGE_HAL_MSG_TYPE_SPDM_OPEN_RESP = 75, - VXGE_HAL_MSG_TYPE_SPDM_DELETE_REQ = 76, - VXGE_HAL_MSG_TYPE_SPDM_DELETE_RESP = 77, - VXGE_HAL_MSG_TYPE_SESSION_EVENT_NOTIF = 102, - VXGE_HAL_MSG_TYPE_SESSION_QUERY_REQ = 103, - VXGE_HAL_MSG_TYPE_SESSION_QUERY_RESP = 104, - VXGE_HAL_MSG_TYPE_SESSION_RETURN_IN_PROG_WQES = 97, - VXGE_HAL_MSG_TYPE_SESSION_FRAME_WRITE = 105, - /* The following are private for HAL */ - VXGE_HAL_MSG_TYPE_SQ_CREATE_REQ = 65537, - VXGE_HAL_MSG_TYPE_SQ_CREATE_RESP = 65538, - VXGE_HAL_MSG_TYPE_SQ_DELETE_REQ = 65539, - VXGE_HAL_MSG_TYPE_SQ_DELETE_RESP = 65540 -} vxge_hal_message_type_e; - - -/* - * struct vxge_hal_opaque_handle_t - Opaque handle used by the hal and clients - * to save their contexts - * @vpath_handle: Virtual path handle - * @hal_priv: Private data which HAL assigns - * @client_priv: Client assigned private data - * - * This structure is used to store the client and hal data and pass as - * opaque handle in the messages. - */ -typedef struct vxge_hal_opaque_handle_t { - vxge_hal_vpath_h vpath_handle; -#define VXGE_HAL_OPAQUE_HANDLE_GET_VPATH_HANDLE(op) ((op)->vpath_handle) -#define VXGE_HAL_OPAQUE_HANDLE_VPATH_HANDLE(op, vrh) (op)->vpath_handle = vrh - - u64 hal_priv; -#define VXGE_HAL_OPAQUE_HANDLE_GET_HAL_PRIV(op) ((op)->hal_priv) -#define VXGE_HAL_OPAQUE_HANDLE_HAL_PRIV(op, priv) (op)->hal_priv = (u64)priv - - u64 client_priv; -#define VXGE_HAL_OPAQUE_HANDLE_GET_CLIENT_PRIV(op) ((op)->client_priv) -#define VXGE_HAL_OPAQUE_HANDLE_CLIENT_PRIV(op, priv) \ - (op)->client_priv = (u64)priv - -} vxge_hal_opaque_handle_t; - -/* - * vxge_hal_vpath_callback_f - Callback to receive up messages. - * @client_handle: handle passed by client in attach or open function - * @msgh: Message handle. - * @msg_type: Type of message - * @obj_id: Object Id of object to which message belongs - * @result: Result code - * @opaque_handle: Opaque handle passed when the request was made. - * - * Callback function registered when opening vpath to receive the messages - * This callback function passed to vxge_hal_vpath_open and - * vxge_hal_vpath_attach routine to get replys to all asynchronous functions. - * The format of the reply is a message along with the parameters that are - * common fro all replys. The message handle passed to this callback is - * opaque for the iWARP/RDMA module and the information from the message can - * be got by calling appropriate get function depending on the message type - * passed as one of the parameter to the callback. The message types that - * are to be passed to the callback are the ones that are responses and - * notifications - */ -typedef vxge_hal_status_e(*vxge_hal_vpath_callback_f) ( - vxge_hal_client_h client_handle, - vxge_hal_up_msg_h msgh, - vxge_hal_message_type_e msg_type, - vxge_hal_obj_id_t obj_id, - vxge_hal_status_e result, - vxge_hal_opaque_handle_t *opaque_handle); - - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_TYPES_H */ Index: sys/dev/vxge/include/vxgehal-version.h =================================================================== --- sys/dev/vxge/include/vxgehal-version.h +++ sys/dev/vxge/include/vxgehal-version.h @@ -1,75 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_VERSION_H -#define VXGE_HAL_VERSION_H - -#include - - -/* - * VXGE_HAL_VERSION_MAJOR - HAL major version - */ -#define VXGE_HAL_VERSION_MAJOR 0 - -/* - * VXGE_HAL_VERSION_MINOR - HAL minor version - */ -#define VXGE_HAL_VERSION_MINOR 0 - -/* - * VXGE_HAL_VERSION_FIX - HAL version fix - */ -#define VXGE_HAL_VERSION_FIX 0 - -/* - * VXGE_HAL_VERSION_BUILD - HAL build version - */ -#define VXGE_HAL_VERSION_BUILD GENERATED_BUILD_VERSION - -/* - * VXGE_HAL_VERSION - HAL version - */ -#define VXGE_HAL_VERSION "VXGE_HAL_VERSION_MAJOR.VXGE_HAL_VERSION_MINOR.\ - VXGE_HAL_VERSION_FIX.VXGE_HAL_VERSION_BUILD" - -/* - * VXGE_HAL_DESC - HAL Description - */ -#define VXGE_HAL_DESC VXGE_DRIVER_NAME" v."VXGE_HAL_VERSION - -/* Link Layer versioning */ -#include - -#endif /* VXGE_HAL_VERSION_H */ Index: sys/dev/vxge/vxge-firmware.h =================================================================== --- sys/dev/vxge/vxge-firmware.h +++ sys/dev/vxge/vxge-firmware.h @@ -1,29957 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ -unsigned char X3fw_ncf[] = { - 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x01, 0x00, 0x08, 0x00, 0xf7, 0x89, - 0x59, 0x3d, 0xec, 0x91, 0x1c, 0xcd, 0x21, 0x00, 0x00, 0x00, 0x13, 0x00, - 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x54, 0x31, 0x3a, 0x58, 0x33, 0x5f, - 0x31, 0x30, 0x31, 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, 0x38, 0x5f, 0x31, - 0x5f, 0x65, 0x78, 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, 0x57, 0x5f, 0x75, - 0x6e, 0x69, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x6d, 0x74, 0x5f, 0x63, 0x6d, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, - 0x2e, 0x74, 0x78, 0x74, 0xd0, 0x59, 0x04, 0x94, 0xaa, 0xb0, 0x1f, 0xc6, - 0x67, 0x8a, 0xbe, 0xbf, 0xb8, 0x54, 0xec, 0x06, 0xf7, 0x74, 0xf9, 0xfe, - 0x46, 0xb5, 0xb0, 0x57, 0x62, 0x7f, 0xed, 0x60, 0x60, 0x67, 0x80, 0xdf, - 0x8c, 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x01, 0x00, 0x08, 0x00, 0xf7, - 0x89, 0x59, 0x3d, 0xa2, 0xcb, 0x96, 0x76, 0x4c, 0xba, 0x02, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x34, 0x00, 0x00, 0x00, 0x54, 0x31, 0x3a, 0x58, 0x33, - 0x5f, 0x31, 0x30, 0x31, 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, 0x38, 0x5f, - 0x31, 0x5f, 0x65, 0x78, 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, 0x57, 0x5f, - 0x75, 0x6e, 0x69, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x30, 0x2e, 0x62, 0x69, 0x6e, 0x5d, - 0x6b, 0xe1, 0x46, 0xd9, 0x2f, 0xc2, 0xbd, 0x6e, 0xd8, 0xd6, 0x9b, 0xa3, - 0xcf, 0xbb, 0x2f, 0x62, 0x9b, 0x9d, 0xac, 0xc6, 0xb6, 0x2b, 0x47, 0x60, - 0x88, 0x1a, 0xef, 0xfe, 0x50, 0xe2, 0x4e, 0x8b, 0x2d, 0x4d, 0x72, 0xcc, - 0x1c, 0xe8, 0x02, 0xf7, 0x1f, 0x9b, 0xa7, 0x77, 0xbe, 0x34, 0xaa, 0xb2, - 0xc7, 0x22, 0xf1, 0x87, 0xf0, 0x73, 0xae, 0x29, 0x1f, 0x8f, 0x3c, 0x71, - 0x4d, 0x72, 0x7b, 0x71, 0xd9, 0x32, 0x3f, 0x0b, 0x40, 0x6f, 0x1e, 0x8c, - 0xca, 0x49, 0x5e, 0x83, 0xf9, 0x92, 0x63, 0x92, 0x74, 0x0c, 0xe7, 0xc1, - 0xa6, 0x78, 0x71, 0xd2, 0x08, 0x0c, 0x46, 0xbd, 0x74, 0x5a, 0xf5, 0x4f, - 0xc1, 0x51, 0x37, 0xee, 0xcf, 0x9d, 0x47, 0x66, 0xdd, 0xb5, 0xd9, 0xf2, - 0x4a, 0xe8, 0xab, 0xdf, 0x48, 0x91, 0x09, 0x8d, 0x32, 0xc8, 0xf1, 0x1d, - 0x20, 0xe3, 0x81, 0x8b, 0xd1, 0x27, 0x3c, 0x01, 0x06, 0xed, 0xd0, 0x98, - 0x1b, 0xbf, 0xc2, 0xa5, 0x83, 0xad, 0xce, 0x0c, 0x82, 0x5a, 0x0f, 0x54, - 0x8a, 0xb7, 0xfb, 0xfd, 0xf0, 0x05, 0xaf, 0x92, 0x4b, 0xbd, 0xdc, 0x04, - 0xc6, 0xb5, 0xb3, 0xda, 0xd4, 0x3e, 0xb1, 0x30, 0x08, 0xa9, 0x9c, 0x49, - 0x7a, 0xd2, 0xba, 0x59, 0xff, 0xb2, 0x61, 0xcc, 0xb1, 0x77, 0x69, 0x4b, - 0x28, 0x58, 0xcf, 0x76, 0x46, 0x96, 0x17, 0x73, 0x57, 0x70, 0xb3, 0x5e, - 0x49, 0xeb, 0xed, 0xf0, 0x9a, 0x56, 0x65, 0x1c, 0x28, 0x71, 0xe9, 0xd9, - 0x9a, 0x69, 0x27, 0x87, 0xd4, 0xde, 0xe3, 0x54, 0x49, 0x2d, 0xb9, 0xd3, - 0x9d, 0x20, 0xa8, 0x30, 0xa0, 0x4d, 0x7d, 0xdd, 0xbb, 0x33, 0x4d, 0x8e, - 0x7a, 0x32, 0xc1, 0xe7, 0xaa, 0x7e, 0x13, 0x5e, 0x04, 0x1f, 0x26, 0xdf, - 0x40, 0x22, 0x27, 0x99, 0x57, 0x0f, 0xbc, 0xaf, 0x6b, 0x30, 0xf6, 0x41, - 0x47, 0xd6, 0xb5, 0xf2, 0xf0, 0xc8, 0x7c, 0x2b, 0x65, 0x9a, 0xb8, 0xd2, - 0x06, 0x5c, 0x47, 0xac, 0xd5, 0xed, 0x05, 0xe6, 0xbc, 0x60, 0x6e, 0x45, - 0x5c, 0x07, 0xa8, 0xae, 0xca, 0x1a, 0x8a, 0xfb, 0xf1, 0x2a, 0xe5, 0x74, - 0x02, 0xb8, 0x48, 0xac, 0xb2, 0x54, 0xaa, 0xeb, 0xfc, 0xde, 0xe0, 0xa9, - 0x20, 0xd1, 0xac, 0x83, 0x69, 0xd4, 0xe0, 0xf7, 0x75, 0xfe, 0x8f, 0xd4, - 0xa6, 0xfa, 0xa6, 0x39, 0xe1, 0xd1, 0xf5, 0xa5, 0x3a, 0x06, 0x2d, 0xa8, - 0x74, 0x98, 0x13, 0x53, 0xfd, 0xd3, 0x45, 0x02, 0xed, 0xa4, 0x7b, 0xa5, - 0x36, 0xbd, 0x69, 0x5b, 0x33, 0x0d, 0x59, 0xa6, 0x3c, 0xd4, 0x8b, 0xa2, - 0xaa, 0x2c, 0x6c, 0xd0, 0x00, 0x98, 0x67, 0xc1, 0xde, 0x6c, 0x8d, 0xf1, - 0xcb, 0xdd, 0x78, 0x06, 0xc3, 0x21, 0xe0, 0x4d, 0xd2, 0x0b, 0x6f, 0x94, - 0x0f, 0xa9, 0x06, 0x4c, 0xd7, 0xe8, 0x54, 0xf7, 0x39, 0xc6, 0x72, 0xa3, - 0x8b, 0xef, 0x18, 0xeb, 0xc7, 0xd2, 0x16, 0x7e, 0x47, 0xd3, 0x03, 0xf1, - 0x3f, 0xe5, 0xf0, 0x9e, 0x6c, 0xe0, 0x94, 0x1c, 0xa0, 0xae, 0xdb, 0x5d, - 0x7a, 0x4d, 0x3c, 0xc1, 0x08, 0x4c, 0x77, 0xa0, 0x63, 0x3c, 0x31, 0x30, - 0xe9, 0x15, 0x92, 0xd4, 0x3e, 0x5d, 0xe7, 0x76, 0xee, 0xb7, 0xc4, 0x9f, - 0xb6, 0x8d, 0x3a, 0xd2, 0x4f, 0xcf, 0xb0, 0x2e, 0xbc, 0x9f, 0x27, 0x38, - 0xeb, 0x24, 0x35, 0xcb, 0xf9, 0x2c, 0xe1, 0xcb, 0xc9, 0x35, 0xdb, 0xb6, - 0x7c, 0x9e, 0x8f, 0x6c, 0x6e, 0x8c, 0x64, 0x2c, 0x62, 0x0f, 0xe2, 0x35, - 0xc6, 0xb1, 0x80, 0xf0, 0x62, 0x7c, 0xea, 0x9d, 0x71, 0x50, 0xe1, 0x41, - 0x90, 0x19, 0x9c, 0x1c, 0xf6, 0x36, 0xda, 0x94, 0x21, 0x7c, 0x36, 0x8d, - 0xf5, 0x73, 0xbe, 0xd4, 0x9f, 0x69, 0x20, 0x9e, 0xe2, 0x50, 0x3e, 0x2a, - 0xb1, 0x3c, 0xb2, 0x66, 0xc4, 0x74, 0x1d, 0xc4, 0x1d, 0xc9, 0xcb, 0xa8, - 0x4d, 0x22, 0x2e, 0x23, 0x0e, 0xa4, 0x77, 0xb1, 0x54, 0xc5, 0x92, 0x70, - 0x57, 0xa8, 0x91, 0x1f, 0x49, 0x5c, 0xe3, 0xbe, 0x35, 0x52, 0xf0, 0x07, - 0xfb, 0x05, 0x11, 0x12, 0x2b, 0xd9, 0xed, 0x18, 0x29, 0x58, 0xc7, 0x00, - 0x61, 0x4d, 0x92, 0xb8, 0x6e, 0x73, 0x08, 0x5c, 0x4d, 0x34, 0x71, 0xd6, - 0xdb, 0xcd, 0x17, 0xf1, 0xb4, 0x1c, 0x22, 0x73, 0x0f, 0x2b, 0x8c, 0x52, - 0xfc, 0x43, 0xe7, 0x64, 0x24, 0xea, 0x1c, 0xb0, 0x93, 0xde, 0xe3, 0x09, - 0xd6, 0xe6, 0xfb, 0x9c, 0xab, 0x7e, 0xd0, 0xa1, 0xb4, 0xe5, 0x8d, 0x9b, - 0x60, 0x9d, 0x7f, 0x5d, 0x99, 0xe0, 0xa5, 0x36, 0x5e, 0xb9, 0xe9, 0xe4, - 0xf6, 0x17, 0x05, 0x1f, 0x8d, 0xf2, 0x05, 0xa3, 0xc3, 0xe1, 0xa2, 0x3c, - 0xf4, 0xe8, 0x29, 0x90, 0x26, 0xb7, 0xc2, 0x83, 0xab, 0x03, 0x1c, 0x31, - 0x05, 0xb0, 0x45, 0x3e, 0x8e, 0xf9, 0x22, 0x96, 0xab, 0xf2, 0x39, 0x2a, - 0x4e, 0x5c, 0x98, 0x59, 0x07, 0x19, 0x09, 0x57, 0xcf, 0x2a, 0x74, 0x12, - 0xe9, 0xdc, 0x4b, 0x13, 0xe3, 0x44, 0x5a, 0x52, 0x38, 0x31, 0x93, 0x84, - 0x43, 0x8b, 0x6e, 0xaa, 0x49, 0x16, 0xbd, 0x5c, 0xc1, 0xb1, 0x39, 0xc5, - 0xd3, 0x6c, 0xcf, 0x9b, 0xfd, 0x54, 0xe1, 0xc3, 0x57, 0x2e, 0x04, 0xed, - 0x8f, 0x1a, 0x65, 0x93, 0xcd, 0x33, 0x18, 0xb8, 0x09, 0x9b, 0x97, 0xe2, - 0xce, 0xd9, 0xa5, 0x47, 0x01, 0x37, 0x98, 0xf6, 0xa7, 0xb7, 0x76, 0x3d, - 0x82, 0xbf, 0xda, 0xfe, 0x74, 0xeb, 0xb2, 0x4f, 0xa7, 0x3a, 0x57, 0x3c, - 0x16, 0x61, 0x88, 0x85, 0xca, 0xcb, 0x6f, 0x15, 0xd7, 0x46, 0x4a, 0x09, - 0xff, 0x59, 0x38, 0x2a, 0xcb, 0x4d, 0x03, 0x08, 0x4b, 0x6b, 0xe3, 0x0c, - 0xbb, 0x28, 0x51, 0x75, 0xb6, 0x17, 0x54, 0x61, 0xe5, 0xe1, 0x60, 0xf5, - 0xd8, 0x5f, 0x88, 0xe1, 0x54, 0xce, 0xff, 0x03, 0x2d, 0xc2, 0x01, 0xc7, - 0xb2, 0x32, 0xdb, 0x69, 0x5f, 0x84, 0x45, 0xbe, 0x4c, 0x7f, 0xdb, 0x88, - 0x81, 0xc2, 0x30, 0x44, 0xe1, 0xab, 0x9d, 0x9a, 0xd8, 0xa1, 0xbf, 0xfd, - 0x43, 0x6f, 0xd4, 0x1e, 0x0b, 0x74, 0xdf, 0xce, 0x68, 0x77, 0xfb, 0x4b, - 0xb6, 0x55, 0x7f, 0xb1, 0xb4, 0x98, 0xc2, 0x9d, 0x73, 0x99, 0x05, 0x98, - 0xff, 0x69, 0xce, 0x86, 0x02, 0xa4, 0x8f, 0x86, 0xdc, 0xe6, 0xac, 0x08, - 0xc8, 0x2b, 0x1b, 0x2f, 0x7d, 0x47, 0xee, 0xfe, 0x27, 0xed, 0xc3, 0x5d, - 0x90, 0x67, 0xf3, 0xe8, 0xbb, 0xc5, 0x88, 0xf1, 0xb0, 0xf8, 0xa1, 0x20, - 0x7c, 0x22, 0x29, 0x3f, 0x8b, 0xa8, 0xc4, 0x3d, 0x8e, 0xb9, 0xaf, 0x95, - 0xb6, 0xbd, 0x63, 0xe4, 0x11, 0x71, 0x5d, 0x0c, 0x6c, 0x83, 0x06, 0x9a, - 0xba, 0x64, 0x17, 0xe2, 0xef, 0x71, 0xd7, 0x37, 0xee, 0xd8, 0x07, 0x72, - 0x8f, 0xeb, 0xc7, 0x18, 0xb4, 0x0a, 0xa5, 0xac, 0xf1, 0x65, 0x01, 0x6f, - 0xdd, 0xa9, 0x20, 0xa8, 0xb7, 0x81, 0x9d, 0x56, 0x43, 0x1f, 0x36, 0xce, - 0xed, 0x92, 0xf2, 0x71, 0x22, 0x93, 0x33, 0x44, 0xfd, 0x45, 0xa3, 0xcc, - 0xb8, 0xcd, 0x46, 0x1b, 0x93, 0x6e, 0x65, 0x30, 0x03, 0xea, 0x06, 0xda, - 0xb6, 0x37, 0xc3, 0x7a, 0x1a, 0x89, 0x1f, 0xae, 0x63, 0x01, 0x6d, 0xf1, - 0x3d, 0x3c, 0xc6, 0x9c, 0x81, 0xb4, 0x00, 0x4c, 0xef, 0xd2, 0xcc, 0xda, - 0x9a, 0x48, 0x7b, 0xb9, 0x68, 0x09, 0x51, 0xf5, 0x7b, 0xf9, 0x09, 0x66, - 0x1d, 0x27, 0x24, 0x06, 0xf4, 0x23, 0x64, 0x85, 0x56, 0xbb, 0x8e, 0xe2, - 0xea, 0x33, 0x49, 0x13, 0x7a, 0x5e, 0x45, 0xf8, 0xf2, 0xd5, 0xd1, 0x62, - 0x99, 0xee, 0x35, 0x58, 0x61, 0x61, 0xbf, 0x7c, 0xce, 0x29, 0xd4, 0x43, - 0xfe, 0x7a, 0x1c, 0xa7, 0xd5, 0xa4, 0x11, 0x7e, 0xac, 0x50, 0x77, 0x6b, - 0xff, 0xa6, 0xd9, 0xe7, 0x0c, 0x72, 0xcd, 0xdf, 0x63, 0x9b, 0xac, 0xc6, - 0x15, 0x2a, 0x0c, 0x52, 0xb4, 0x42, 0x7b, 0xa8, 0x51, 0xae, 0xfc, 0x15, - 0xcd, 0xce, 0x6c, 0xf4, 0xf8, 0x83, 0xdb, 0xcb, 0x59, 0x9e, 0xa5, 0x5c, - 0x3b, 0xb1, 0x24, 0xbe, 0x6a, 0x2f, 0x3b, 0x8f, 0x1f, 0xd2, 0x16, 0x6f, - 0xcb, 0x54, 0x97, 0x3b, 0x2a, 0x40, 0x04, 0x38, 0xb8, 0x1c, 0x31, 0xaa, - 0xde, 0x65, 0x1c, 0x43, 0x1c, 0x2b, 0x4d, 0x92, 0x9e, 0x19, 0xb3, 0x4f, - 0xb7, 0xec, 0x0a, 0x40, 0xb5, 0xc9, 0x3e, 0x26, 0xfe, 0x92, 0xbf, 0xe7, - 0x1b, 0xdc, 0xef, 0x73, 0x06, 0xfa, 0x85, 0xdf, 0x7d, 0x5a, 0x9e, 0x82, - 0x6b, 0x6a, 0x22, 0x94, 0xcf, 0x14, 0xff, 0x79, 0x94, 0x7d, 0x98, 0x00, - 0xcd, 0x53, 0x59, 0xb4, 0x8e, 0xbb, 0x63, 0x58, 0xc4, 0x7f, 0x00, 0x28, - 0x0f, 0x73, 0x12, 0xf4, 0xd1, 0xdf, 0xd0, 0x24, 0x37, 0xd4, 0xb4, 0x35, - 0x9a, 0xeb, 0x88, 0x4d, 0x5e, 0xca, 0x8c, 0xc1, 0xd5, 0x70, 0xe1, 0xb3, - 0xf0, 0x30, 0x7a, 0xfd, 0xb3, 0xef, 0x25, 0x09, 0xb3, 0xaa, 0xa3, 0xf8, - 0xf3, 0x41, 0x2a, 0xcd, 0x74, 0xeb, 0x0f, 0x90, 0x36, 0x62, 0xf5, 0x48, - 0x02, 0xd8, 0xd6, 0x9a, 0x05, 0x33, 0x43, 0xdb, 0xcb, 0x98, 0xd8, 0xb6, - 0x83, 0xa4, 0x88, 0xdb, 0xee, 0x76, 0xef, 0xd4, 0xc8, 0x85, 0xf7, 0xc1, - 0x10, 0x95, 0xf9, 0x57, 0xfb, 0x2d, 0xb7, 0x12, 0x49, 0x6e, 0xe0, 0xaf, - 0x98, 0xd6, 0x3e, 0xc3, 0x85, 0x20, 0x8f, 0xf4, 0x83, 0xf4, 0x8a, 0x0a, - 0xf6, 0x82, 0xec, 0x01, 0x02, 0x34, 0xc3, 0xe4, 0x14, 0x3f, 0x97, 0x8b, - 0xa8, 0xc3, 0x42, 0x19, 0x4f, 0xfb, 0x31, 0x1a, 0xd3, 0x3a, 0xc7, 0x91, - 0x60, 0x28, 0xda, 0xdb, 0x4a, 0xe8, 0x8c, 0xb0, 0xcc, 0xee, 0x0a, 0x4f, - 0x33, 0x7f, 0x43, 0x6b, 0x7b, 0x50, 0xd0, 0xbf, 0xcf, 0xb4, 0x99, 0xfb, - 0x5e, 0x7b, 0x0c, 0xc6, 0x4c, 0x81, 0x4f, 0xf1, 0xfa, 0xf2, 0x85, 0x44, - 0x8b, 0x35, 0x1d, 0x3c, 0x42, 0xa1, 0x27, 0x1e, 0x7c, 0x1b, 0x05, 0x56, - 0xa2, 0x7e, 0x08, 0xc8, 0x3f, 0x99, 0x2d, 0x64, 0xb7, 0x6b, 0x1c, 0x9e, - 0xac, 0xd4, 0x95, 0xc7, 0x5d, 0xa7, 0x89, 0x0c, 0xed, 0x48, 0xf5, 0xc6, - 0x21, 0x2c, 0x0c, 0xd1, 0xa9, 0x3c, 0x9e, 0xab, 0x17, 0xc2, 0xe4, 0xc8, - 0x58, 0x1c, 0x1a, 0x9e, 0x2f, 0x07, 0x07, 0x29, 0x32, 0xeb, 0xb8, 0xac, - 0xdd, 0x00, 0xf4, 0x8a, 0x3a, 0x66, 0x35, 0x27, 0x36, 0xdf, 0x46, 0x15, - 0x68, 0xb7, 0x80, 0x30, 0xe0, 0x5a, 0x5e, 0x7e, 0x1d, 0x44, 0xa4, 0x0e, - 0x5a, 0x65, 0x09, 0x1b, 0x6a, 0xb8, 0x88, 0x04, 0xcb, 0xb4, 0x14, 0xd9, - 0x0e, 0xdd, 0xc8, 0x49, 0x10, 0x96, 0x9b, 0x38, 0x1a, 0xbf, 0x61, 0xb2, - 0x69, 0x8e, 0xb2, 0xcd, 0xff, 0xab, 0xa3, 0x49, 0xa0, 0x7b, 0x2f, 0x58, - 0xa8, 0x02, 0xc5, 0x79, 0x28, 0xca, 0xc1, 0xc5, 0x0f, 0x75, 0xa4, 0x32, - 0x1b, 0xb4, 0x2e, 0xe9, 0x43, 0x91, 0x48, 0x13, 0x94, 0xa0, 0xa8, 0xc8, - 0x90, 0xe9, 0x22, 0x20, 0xce, 0x50, 0x44, 0x76, 0xc8, 0x1b, 0x50, 0xbd, - 0x59, 0x6f, 0xbd, 0xa9, 0x1e, 0x9e, 0x05, 0xa0, 0x23, 0x38, 0x68, 0x30, - 0xef, 0x20, 0xff, 0x82, 0x11, 0xe3, 0x39, 0xc4, 0x98, 0x74, 0xdf, 0x1d, - 0x0b, 0xeb, 0x9a, 0xc3, 0xb8, 0x4a, 0x90, 0x10, 0xde, 0x54, 0xef, 0x8a, - 0xf0, 0x28, 0xe2, 0xba, 0x34, 0x94, 0xf2, 0x08, 0x04, 0x63, 0x94, 0x2f, - 0xca, 0x9b, 0x64, 0xb6, 0x5f, 0xe7, 0xd7, 0x17, 0x01, 0xc9, 0xa4, 0x4d, - 0x10, 0xff, 0xb9, 0xc7, 0x42, 0xf9, 0x34, 0xb6, 0x67, 0x50, 0x6c, 0x9e, - 0xaa, 0x10, 0x2a, 0xac, 0x6a, 0x1e, 0xeb, 0xad, 0xf0, 0xb4, 0x0c, 0x08, - 0xe7, 0x0e, 0xa6, 0xab, 0x23, 0x15, 0x77, 0x8f, 0xc5, 0x63, 0x5c, 0x8f, - 0x8c, 0xd8, 0x68, 0x94, 0xaa, 0x3c, 0x5f, 0x6a, 0x2c, 0x48, 0x21, 0x7b, - 0x61, 0x1e, 0x53, 0xd3, 0x62, 0x7e, 0x47, 0x64, 0xcc, 0xbd, 0x3b, 0x15, - 0x88, 0xf5, 0xbc, 0x8b, 0x15, 0x61, 0xf2, 0xd4, 0x7a, 0x71, 0x57, 0x3b, - 0x9c, 0x10, 0x0e, 0x09, 0x52, 0xd9, 0x72, 0x34, 0x78, 0xf4, 0xef, 0x3f, - 0xf2, 0x14, 0x6d, 0x89, 0xa8, 0x6b, 0x2c, 0xc8, 0x27, 0xb8, 0x32, 0xc9, - 0xbc, 0x67, 0x16, 0x0d, 0xa2, 0x6f, 0x04, 0x05, 0x9d, 0x47, 0x14, 0x6b, - 0x9e, 0x31, 0x00, 0xc7, 0x6e, 0xd8, 0xf2, 0xff, 0xe2, 0x93, 0x99, 0x96, - 0x1a, 0xae, 0x0d, 0x10, 0x15, 0x20, 0x28, 0xa6, 0x38, 0xed, 0xc5, 0x1b, - 0x7f, 0x67, 0x63, 0x50, 0xc5, 0x0e, 0x75, 0xe0, 0x10, 0xc7, 0x35, 0x1a, - 0xc2, 0x07, 0xfd, 0x3a, 0x8d, 0xce, 0x76, 0x2d, 0xf7, 0x95, 0x6f, 0x8e, - 0x4c, 0x42, 0x88, 0x85, 0x92, 0x1a, 0xee, 0x3f, 0xf1, 0x4a, 0xc5, 0x92, - 0xd3, 0x60, 0x7f, 0x85, 0xc1, 0x18, 0x83, 0x15, 0x94, 0x22, 0x0b, 0xde, - 0x36, 0x47, 0x78, 0x5c, 0xae, 0x56, 0xe5, 0xf9, 0x0d, 0xa0, 0xd8, 0x25, - 0x0f, 0x3c, 0x19, 0xe4, 0x05, 0x1d, 0x48, 0x77, 0xcf, 0x7a, 0x39, 0xd3, - 0xab, 0xf4, 0x2f, 0x1e, 0xf8, 0xb5, 0x59, 0x1c, 0x57, 0xb2, 0x31, 0x82, - 0x63, 0x73, 0x37, 0xff, 0x00, 0x6b, 0x2b, 0xb6, 0xd9, 0x8f, 0xfc, 0xfa, - 0x1e, 0xa8, 0x08, 0xcc, 0xb8, 0x9a, 0x1f, 0x73, 0x08, 0x0c, 0xcb, 0xc0, - 0x1f, 0xf9, 0xec, 0x7a, 0xee, 0xde, 0x36, 0x87, 0x38, 0x96, 0xab, 0x43, - 0x2e, 0xba, 0x9a, 0xaa, 0x82, 0x78, 0x04, 0x4b, 0x2b, 0x55, 0x58, 0x03, - 0xc9, 0x11, 0x08, 0x4c, 0xf6, 0x4c, 0x03, 0x7d, 0xd7, 0xb4, 0x67, 0x9f, - 0x38, 0xcf, 0x3c, 0x61, 0x3e, 0xad, 0x61, 0xb9, 0xbc, 0xe4, 0x19, 0xac, - 0x7b, 0x3d, 0x66, 0x65, 0x9a, 0x70, 0x4c, 0x89, 0xb1, 0x86, 0x20, 0xa9, - 0x5f, 0x30, 0x3b, 0x12, 0xe6, 0xc1, 0x20, 0x82, 0x25, 0xe0, 0x56, 0x09, - 0xf3, 0x3c, 0xb2, 0x3b, 0xaf, 0xeb, 0xb2, 0x17, 0x72, 0x8e, 0x67, 0xa3, - 0xd1, 0xec, 0x32, 0xb7, 0x85, 0x24, 0x2b, 0xc5, 0xce, 0x2d, 0x35, 0xcd, - 0x1f, 0x81, 0xe9, 0x62, 0x24, 0x77, 0x71, 0x7a, 0xa5, 0xa1, 0x5c, 0xe7, - 0xf4, 0x3a, 0x69, 0xa2, 0xad, 0x40, 0xb6, 0x89, 0x52, 0x97, 0xeb, 0x5a, - 0x05, 0x83, 0xf4, 0xfd, 0x96, 0xa3, 0x1d, 0xfa, 0x9e, 0x9d, 0x7f, 0xa7, - 0x7f, 0x6c, 0xaa, 0xd5, 0x7f, 0xd1, 0x48, 0x29, 0x60, 0x4e, 0xae, 0x51, - 0x7d, 0x6a, 0x3f, 0x62, 0x56, 0xef, 0xe9, 0xc4, 0xe4, 0x46, 0xab, 0xcf, - 0x06, 0x27, 0xce, 0x11, 0x14, 0x77, 0x0f, 0x13, 0xf7, 0x45, 0xf8, 0x1c, - 0x0d, 0x74, 0xfb, 0x8d, 0x1d, 0xf4, 0xcb, 0x2e, 0x54, 0xe6, 0xf7, 0x37, - 0x52, 0x24, 0xce, 0x2b, 0x2d, 0x72, 0xf0, 0x62, 0x77, 0x5e, 0x0e, 0xa8, - 0x98, 0x2b, 0xd3, 0x70, 0xa5, 0x8d, 0x1e, 0xec, 0xae, 0x6a, 0xdd, 0x21, - 0x16, 0x45, 0xee, 0xa6, 0xf2, 0x87, 0x5b, 0xff, 0x10, 0xb4, 0x23, 0x5b, - 0x8f, 0x09, 0x3a, 0xc6, 0x3a, 0x9c, 0x32, 0xc6, 0xa9, 0x54, 0xda, 0x47, - 0xec, 0xfd, 0x82, 0x70, 0xeb, 0x9e, 0x32, 0xeb, 0xbf, 0x0e, 0x8a, 0xfd, - 0x93, 0x82, 0xad, 0xb1, 0xb4, 0xf6, 0x7c, 0x22, 0x4a, 0x16, 0x89, 0x88, - 0xcc, 0x4f, 0x81, 0xf1, 0xc9, 0x99, 0x0a, 0x3e, 0xae, 0x7b, 0xb2, 0x11, - 0x75, 0xaa, 0x50, 0xda, 0x34, 0x2f, 0x7b, 0x19, 0x70, 0xc9, 0x44, 0x3c, - 0x11, 0x8f, 0x0b, 0xff, 0xb1, 0xfe, 0x80, 0x6f, 0x95, 0x4e, 0x95, 0x9c, - 0x8c, 0x8b, 0x80, 0xfb, 0x61, 0x9f, 0xf5, 0x04, 0x80, 0x98, 0xf8, 0xf5, - 0xa1, 0xc5, 0xf6, 0x78, 0x11, 0xb6, 0xcd, 0xc9, 0xac, 0x68, 0xf1, 0x5a, - 0xe0, 0x5c, 0xe2, 0x19, 0x2c, 0xab, 0xa1, 0x35, 0x79, 0x76, 0xbf, 0xe4, - 0xde, 0xc5, 0x31, 0xf1, 0x1f, 0x53, 0x85, 0x84, 0x7e, 0x76, 0xae, 0x33, - 0xa0, 0xdd, 0x32, 0x3c, 0xfe, 0x8e, 0xb7, 0x10, 0x61, 0xc4, 0xfd, 0x5c, - 0x2e, 0x71, 0x15, 0xf8, 0x7d, 0x30, 0x07, 0xd4, 0x7f, 0x86, 0x18, 0x21, - 0x96, 0x9e, 0x59, 0xd4, 0x62, 0x63, 0x70, 0x04, 0x45, 0x76, 0x3d, 0xf3, - 0x9b, 0xbe, 0x27, 0x73, 0x84, 0xd9, 0x48, 0x6d, 0xfe, 0x89, 0x40, 0xf8, - 0xb6, 0xf6, 0xdf, 0x29, 0x51, 0xb0, 0x62, 0x1f, 0xa8, 0xb1, 0xc4, 0x71, - 0x88, 0xbe, 0x25, 0x01, 0xa5, 0x82, 0xf2, 0x46, 0xcf, 0x43, 0x3e, 0x88, - 0xcc, 0x63, 0x0d, 0x1f, 0xd9, 0xe1, 0xe5, 0x0c, 0x2f, 0xb2, 0x86, 0x1f, - 0x56, 0x63, 0x34, 0x41, 0x60, 0xf1, 0x86, 0xdb, 0x18, 0x4b, 0xbe, 0xe4, - 0xdb, 0xc2, 0x1b, 0x86, 0xdf, 0xb2, 0x70, 0xc9, 0x25, 0x2d, 0x4b, 0xc8, - 0xbd, 0x5a, 0x8f, 0xea, 0x21, 0x95, 0x83, 0x99, 0xad, 0x73, 0x69, 0xdc, - 0xa7, 0xc7, 0x3a, 0x93, 0x88, 0x7e, 0xe1, 0x52, 0x4c, 0xc0, 0x5f, 0x70, - 0x5d, 0x55, 0x73, 0xf3, 0xa9, 0x8b, 0x24, 0x96, 0x53, 0xdb, 0xb9, 0x7a, - 0x0d, 0xf2, 0x20, 0xdb, 0x47, 0xdc, 0x76, 0xca, 0xaa, 0x3f, 0xd7, 0x28, - 0x6e, 0x13, 0x86, 0x7f, 0x16, 0x1e, 0xeb, 0xa4, 0xc4, 0x27, 0x06, 0x28, - 0x5a, 0x10, 0xed, 0xa5, 0xe4, 0x87, 0x53, 0x1a, 0x17, 0xc7, 0xd7, 0x8e, - 0xa9, 0x72, 0x99, 0x44, 0x3b, 0xa4, 0x52, 0xd4, 0xc3, 0x2a, 0xf3, 0xd1, - 0x6b, 0x7f, 0x3b, 0xe0, 0x49, 0x01, 0x31, 0x3e, 0x03, 0x46, 0xa4, 0x65, - 0x9e, 0xad, 0xf4, 0xf6, 0x01, 0x3c, 0x8b, 0xe3, 0x14, 0xf8, 0x3c, 0x5d, - 0xc6, 0x56, 0x3a, 0x6f, 0xb8, 0xb3, 0xd1, 0xd5, 0xc3, 0x67, 0x03, 0x6c, - 0x7f, 0x78, 0x29, 0xa5, 0x06, 0x58, 0x62, 0x31, 0x42, 0xdb, 0x5d, 0xb1, - 0x9f, 0x74, 0x98, 0x95, 0x8c, 0xea, 0xdb, 0x4e, 0x55, 0x52, 0x70, 0x14, - 0x99, 0xc5, 0x1f, 0x65, 0x4c, 0x38, 0x28, 0x55, 0x55, 0x2c, 0xd0, 0x22, - 0x58, 0x5a, 0x8a, 0x06, 0xad, 0x05, 0x42, 0xa1, 0xae, 0xd2, 0x16, 0x51, - 0x65, 0xa7, 0x69, 0xcc, 0x47, 0x86, 0x47, 0xbd, 0xe5, 0xce, 0x16, 0x5f, - 0x4a, 0x00, 0x49, 0xc9, 0x95, 0x1b, 0xa9, 0xa3, 0xe0, 0x02, 0x1f, 0x76, - 0xf9, 0x70, 0x58, 0x94, 0xf7, 0x16, 0x43, 0x27, 0xe8, 0x60, 0x0b, 0x27, - 0x7a, 0x3b, 0x1d, 0xc2, 0x8e, 0x7e, 0xf6, 0x07, 0x23, 0xc6, 0x1d, 0xe0, - 0x43, 0x69, 0x2a, 0x27, 0x60, 0x76, 0xab, 0xd6, 0x80, 0x69, 0xf1, 0x04, - 0xbc, 0x4c, 0xba, 0x29, 0xf1, 0x6e, 0x51, 0xb9, 0xa1, 0x6a, 0xc7, 0x31, - 0xca, 0x14, 0xe2, 0x60, 0x91, 0xb8, 0xce, 0x10, 0x12, 0x2a, 0x91, 0xea, - 0x21, 0x30, 0x89, 0x3a, 0x4b, 0x3c, 0x48, 0x47, 0x0a, 0x75, 0xae, 0xb4, - 0x0e, 0xa7, 0xad, 0xd2, 0x77, 0x1f, 0xbd, 0x11, 0x36, 0xdf, 0xd2, 0x94, - 0xa0, 0x64, 0x49, 0x2c, 0x6e, 0x1a, 0xbf, 0xfd, 0xe6, 0xcc, 0x58, 0x90, - 0x20, 0x07, 0x8d, 0x3e, 0xab, 0x61, 0xc7, 0xb3, 0x17, 0xb9, 0x3a, 0x4d, - 0x24, 0xb1, 0xb9, 0xb2, 0xd7, 0x9d, 0x5e, 0xc4, 0x89, 0x70, 0x27, 0xd4, - 0xc8, 0xf7, 0xac, 0x75, 0x77, 0x52, 0x0f, 0x10, 0x1e, 0x05, 0xf8, 0xcb, - 0xeb, 0x85, 0x2e, 0x0b, 0xa2, 0xd7, 0x59, 0x1e, 0xde, 0x3c, 0xb9, 0x6e, - 0x22, 0x3f, 0x13, 0xe8, 0xaa, 0xe3, 0x1f, 0x32, 0x20, 0xdf, 0x61, 0xad, - 0x84, 0xb3, 0x65, 0x78, 0xba, 0x3e, 0x83, 0x84, 0x0e, 0x36, 0xba, 0x2a, - 0x88, 0x06, 0xf6, 0xff, 0xe0, 0x21, 0x06, 0xf5, 0x14, 0x0a, 0x9a, 0xb0, - 0xde, 0xd7, 0xbd, 0xe0, 0x82, 0x6e, 0xd6, 0x9c, 0xc1, 0xab, 0x5d, 0x2a, - 0x12, 0xfc, 0x18, 0xba, 0x94, 0x92, 0xe9, 0x26, 0xe4, 0x96, 0x4c, 0x12, - 0xdd, 0xcf, 0x52, 0x05, 0x80, 0x4e, 0xbc, 0x15, 0x46, 0x99, 0x14, 0x2f, - 0x8d, 0x32, 0x61, 0x1e, 0xb6, 0xbb, 0xca, 0x74, 0x83, 0xd5, 0x1c, 0xbb, - 0x93, 0xd9, 0xbb, 0xb6, 0x9f, 0x74, 0x91, 0x70, 0x3f, 0xa5, 0xb8, 0x1f, - 0x22, 0x94, 0x04, 0x20, 0x58, 0x0f, 0x3e, 0x25, 0xf3, 0x06, 0xf7, 0x93, - 0xba, 0x32, 0x05, 0x9c, 0x22, 0x00, 0x4d, 0xd0, 0x90, 0xe9, 0x75, 0xbe, - 0x94, 0x90, 0x37, 0x09, 0x85, 0xd5, 0x32, 0xfc, 0x57, 0x12, 0xf7, 0x8f, - 0x7f, 0x6c, 0x2f, 0x7d, 0x9e, 0x55, 0xf9, 0x71, 0x31, 0xa9, 0xa2, 0x65, - 0xcc, 0xc5, 0x58, 0xca, 0xdb, 0x13, 0xd5, 0x7a, 0x6a, 0xfb, 0x27, 0x69, - 0xc7, 0x98, 0x90, 0x6a, 0xbf, 0x68, 0x18, 0xa8, 0xbf, 0x11, 0xff, 0x8b, - 0xe0, 0x19, 0x74, 0x96, 0x2b, 0xf8, 0x47, 0xd3, 0x2d, 0x53, 0x15, 0x87, - 0x46, 0xd0, 0x06, 0x82, 0xc5, 0x59, 0xd6, 0xe4, 0xeb, 0xff, 0x7e, 0x87, - 0x3a, 0x74, 0xad, 0x3c, 0xa8, 0xa2, 0xd2, 0x88, 0x85, 0xbc, 0xfd, 0x83, - 0xed, 0x36, 0x94, 0xdd, 0x14, 0xa3, 0xc2, 0xc2, 0x05, 0xe7, 0x00, 0x9b, - 0xe0, 0x58, 0x37, 0xe5, 0x52, 0x23, 0xa5, 0x1a, 0xd9, 0x84, 0x6d, 0xfb, - 0xa3, 0x4b, 0x5b, 0xb9, 0x05, 0x1a, 0x0b, 0x65, 0x63, 0xcd, 0x51, 0xb6, - 0x61, 0x0f, 0xa6, 0xeb, 0x11, 0x94, 0x99, 0x42, 0xd0, 0xae, 0xd9, 0x95, - 0xbf, 0xa9, 0x3b, 0x78, 0x57, 0xa9, 0x4a, 0x3e, 0xfd, 0x83, 0xee, 0x7a, - 0x0c, 0x34, 0x1e, 0x56, 0x4a, 0xdc, 0x97, 0x1e, 0x83, 0xcf, 0xe0, 0x39, - 0x3f, 0x62, 0xd4, 0xc2, 0x68, 0x4f, 0x1f, 0x4d, 0x7f, 0xfb, 0xeb, 0xf9, - 0xed, 0x75, 0xaa, 0x5e, 0x43, 0x64, 0xfa, 0xc1, 0x85, 0xa9, 0xcc, 0xb4, - 0xba, 0x30, 0x47, 0x68, 0xd3, 0x77, 0xb3, 0x00, 0x13, 0xc8, 0x29, 0x35, - 0x1c, 0xea, 0x40, 0xdb, 0x87, 0xba, 0xfb, 0xee, 0x90, 0xfe, 0x5e, 0x40, - 0xf2, 0x86, 0x62, 0x27, 0xe8, 0x94, 0xa5, 0x58, 0x11, 0xbb, 0x8b, 0xdf, - 0xe5, 0x07, 0xbc, 0xdf, 0x94, 0xb2, 0x5f, 0xf2, 0x1c, 0x91, 0xb6, 0x5a, - 0xe9, 0xa1, 0xc1, 0xdf, 0x84, 0x03, 0xb4, 0x8d, 0x01, 0xd8, 0xe1, 0xa1, - 0x61, 0xde, 0xa5, 0x1c, 0x7e, 0x97, 0xef, 0x8f, 0x22, 0x75, 0x22, 0xe5, - 0x64, 0x14, 0x7b, 0x12, 0x68, 0x3b, 0xa1, 0x2d, 0x7e, 0xe0, 0x18, 0x74, - 0x91, 0xa4, 0xdb, 0x9a, 0x27, 0x17, 0x71, 0xd1, 0x16, 0x58, 0x20, 0xca, - 0x12, 0xfc, 0x7a, 0x74, 0xa6, 0xed, 0x07, 0x34, 0xf3, 0xad, 0x6a, 0xdd, - 0x85, 0x76, 0x08, 0xc1, 0x88, 0x33, 0x5f, 0xa4, 0x8b, 0x9c, 0x84, 0x83, - 0x41, 0xb5, 0xc4, 0xae, 0x7b, 0x0b, 0x5b, 0x01, 0xb1, 0x29, 0xe4, 0xc3, - 0x03, 0x64, 0xcf, 0xc5, 0x1e, 0x85, 0xd9, 0x31, 0x0f, 0x4e, 0xc4, 0x9c, - 0xbd, 0xfc, 0xc1, 0xbb, 0xec, 0xb4, 0xd4, 0x61, 0x20, 0xcd, 0x5c, 0x82, - 0x4c, 0x12, 0x3a, 0xf1, 0xe5, 0xaa, 0x76, 0xc1, 0xbc, 0xdf, 0xdd, 0x48, - 0xfb, 0xf3, 0x62, 0x2a, 0xbf, 0x8f, 0x1f, 0x90, 0xd5, 0x8a, 0x43, 0xaf, - 0xaf, 0xb3, 0x51, 0x0f, 0x01, 0xbc, 0x0d, 0x32, 0xbe, 0x52, 0xbe, 0x0a, - 0x8f, 0xd9, 0xc6, 0x73, 0x5b, 0xe0, 0xc4, 0x44, 0x05, 0x8e, 0x00, 0xc1, - 0x80, 0x78, 0x5a, 0x5f, 0x4e, 0x1d, 0xa8, 0xa2, 0x23, 0x68, 0x38, 0x32, - 0xb6, 0x86, 0x91, 0xc8, 0xdb, 0xbb, 0x51, 0xca, 0x5d, 0xcc, 0xee, 0x77, - 0x7f, 0x18, 0x95, 0x85, 0x62, 0xda, 0x83, 0x4c, 0x6d, 0x51, 0x0e, 0x1c, - 0x68, 0x30, 0x1d, 0x04, 0xc1, 0x78, 0x01, 0xa6, 0x8a, 0xdd, 0xb1, 0x4f, - 0xa8, 0x1c, 0x3e, 0xfe, 0xf8, 0x8c, 0xa8, 0xe2, 0xa2, 0x9b, 0x50, 0xbc, - 0xe8, 0x24, 0x7a, 0xff, 0x81, 0x6a, 0xc1, 0xcc, 0x80, 0x55, 0x3e, 0x6b, - 0x94, 0x6c, 0x5a, 0x44, 0x9e, 0x49, 0x7c, 0x40, 0xa5, 0xca, 0xb6, 0x97, - 0xe5, 0xc7, 0xbc, 0x1f, 0x7d, 0x55, 0xd5, 0x71, 0xbf, 0x0d, 0xb9, 0x3a, - 0xa5, 0xb6, 0x79, 0x13, 0x17, 0x8f, 0x7d, 0x5c, 0xac, 0x86, 0xe6, 0xfc, - 0x12, 0x39, 0x73, 0x6b, 0x8f, 0x7e, 0x0a, 0xc3, 0xbf, 0xe6, 0xcf, 0xb4, - 0x1d, 0x85, 0x31, 0x6c, 0x8e, 0x71, 0xba, 0xb6, 0xe8, 0x13, 0x1d, 0x6d, - 0xda, 0xd3, 0x85, 0x38, 0x0c, 0xbc, 0x7d, 0x90, 0x19, 0xfd, 0xc1, 0xeb, - 0xf4, 0x75, 0xc3, 0xb1, 0xaa, 0x12, 0xf9, 0x32, 0x09, 0x6c, 0x11, 0xcb, - 0xdb, 0xd6, 0x01, 0x10, 0xfa, 0xaf, 0x8f, 0xae, 0x40, 0x3f, 0xaa, 0xc1, - 0x08, 0x86, 0x2f, 0x24, 0x78, 0x81, 0xab, 0xda, 0x84, 0x2a, 0x06, 0x2b, - 0xef, 0x84, 0x5d, 0xa0, 0x70, 0x1a, 0x8b, 0xb1, 0x11, 0x47, 0xcc, 0x1f, - 0xdf, 0xae, 0x48, 0xca, 0x2b, 0x49, 0xd0, 0xa1, 0x36, 0x31, 0xbe, 0x3e, - 0xa1, 0x35, 0x73, 0x7f, 0xcc, 0x01, 0x81, 0x88, 0x4d, 0xb4, 0xbd, 0x0e, - 0xa6, 0x17, 0xf3, 0x33, 0xab, 0x3c, 0xa2, 0x59, 0xad, 0x68, 0x2a, 0xbb, - 0xe1, 0x19, 0x9e, 0x9b, 0xda, 0x22, 0x2b, 0x3f, 0x2f, 0x58, 0x00, 0x7b, - 0xd7, 0xcb, 0x15, 0xe1, 0xf6, 0x2b, 0x38, 0x78, 0x30, 0x1e, 0x3e, 0xbc, - 0x1e, 0xc3, 0x13, 0xf7, 0x3b, 0xf2, 0x8f, 0x2f, 0x59, 0x76, 0x96, 0x31, - 0x0c, 0x20, 0xa2, 0xd1, 0xdb, 0xa6, 0xaf, 0x35, 0xf4, 0x84, 0x4d, 0x7a, - 0x2e, 0xa7, 0xd2, 0xb9, 0xfa, 0x16, 0x0d, 0x54, 0xb5, 0x98, 0x25, 0xee, - 0x97, 0x99, 0xc4, 0xc2, 0x34, 0x3b, 0xa6, 0xca, 0x76, 0x41, 0xc6, 0xf9, - 0xa6, 0xfb, 0xca, 0x63, 0x8f, 0xba, 0x11, 0x0a, 0x67, 0x7a, 0x00, 0x24, - 0x0f, 0xd0, 0xd8, 0x80, 0x23, 0x0f, 0x85, 0x26, 0xb7, 0x69, 0x43, 0x21, - 0x63, 0xa8, 0x5f, 0x7c, 0xe8, 0x13, 0x15, 0x37, 0x1f, 0x1e, 0x1d, 0xbc, - 0x98, 0xb8, 0xcb, 0xbf, 0x51, 0xdd, 0xcf, 0x7f, 0xc5, 0xe9, 0xdd, 0xd3, - 0xd9, 0x1a, 0x71, 0xd5, 0xa3, 0xe6, 0x93, 0x3c, 0xc2, 0xfc, 0xe7, 0xd3, - 0x62, 0x5b, 0xd5, 0x09, 0xd7, 0xc6, 0x9a, 0x16, 0xc5, 0x4d, 0x8b, 0xa9, - 0x94, 0x50, 0xea, 0x69, 0x68, 0x29, 0x21, 0xbc, 0xed, 0xdf, 0x9d, 0x43, - 0x0b, 0x3e, 0xbf, 0x21, 0xef, 0xbe, 0x9e, 0x08, 0x19, 0x81, 0xaf, 0x82, - 0x32, 0x7a, 0xc6, 0x24, 0x98, 0x6e, 0x88, 0x5a, 0x59, 0x0d, 0x1b, 0x3d, - 0xe7, 0xc0, 0x7a, 0x2a, 0x96, 0xaf, 0xcc, 0xaf, 0xe8, 0xd8, 0x5b, 0x37, - 0x25, 0x10, 0x65, 0xe8, 0xec, 0xb9, 0xb4, 0x42, 0x48, 0x65, 0x63, 0x5e, - 0x29, 0xbf, 0xbe, 0x9e, 0x14, 0x3b, 0x19, 0x77, 0xaa, 0xed, 0xe9, 0xc7, - 0x02, 0x8e, 0x1e, 0x7a, 0xdb, 0xad, 0xeb, 0x0a, 0x71, 0x70, 0x66, 0x60, - 0x46, 0xdb, 0x51, 0x54, 0xda, 0xff, 0x6f, 0x4f, 0x78, 0xed, 0x3a, 0x1e, - 0x07, 0xf1, 0xae, 0x5f, 0x6b, 0xb2, 0xd0, 0x4b, 0x31, 0x09, 0xd9, 0xda, - 0x42, 0x3a, 0x89, 0x14, 0x24, 0x18, 0xdb, 0xed, 0x27, 0x2e, 0x5d, 0xc5, - 0xc1, 0x70, 0x7b, 0x8e, 0xf7, 0xa3, 0x1d, 0x0c, 0x57, 0x85, 0x84, 0x90, - 0xf3, 0x1c, 0xdb, 0xa4, 0xb8, 0xca, 0x03, 0x3a, 0xd2, 0xff, 0x48, 0x62, - 0xa3, 0xae, 0x90, 0xbe, 0x17, 0xe4, 0xb6, 0x88, 0x05, 0x4e, 0x28, 0xd8, - 0x4a, 0x74, 0x5d, 0x13, 0x7b, 0x3c, 0xff, 0xb0, 0x20, 0x3b, 0x59, 0x40, - 0x74, 0xbc, 0x8e, 0xfb, 0x51, 0x66, 0xc2, 0x4d, 0x41, 0xe1, 0x8a, 0x3b, - 0x79, 0xa8, 0x13, 0x30, 0xf1, 0x01, 0x2b, 0x34, 0x80, 0x10, 0x56, 0xa2, - 0x0d, 0xb6, 0x5f, 0x06, 0x10, 0xff, 0x97, 0x86, 0x0e, 0xc7, 0xce, 0x58, - 0x0f, 0x2c, 0xc0, 0x1e, 0x27, 0xd8, 0x84, 0xb1, 0x69, 0xab, 0xe7, 0x27, - 0xa0, 0x9f, 0x45, 0x9a, 0x5f, 0xba, 0xd2, 0x75, 0x49, 0x7b, 0x54, 0x60, - 0xfd, 0x52, 0xcd, 0xda, 0x8f, 0x86, 0x09, 0xbc, 0x9e, 0x30, 0x37, 0x10, - 0x3d, 0x08, 0xfc, 0x03, 0xe1, 0xb3, 0x41, 0x7b, 0xd0, 0xcc, 0xa4, 0xbe, - 0x8a, 0x26, 0x7d, 0xc3, 0x10, 0x18, 0x4e, 0x08, 0x9e, 0x50, 0x5f, 0x3c, - 0x3c, 0x1a, 0x1e, 0x11, 0xbe, 0x41, 0x7b, 0x80, 0x3d, 0x4a, 0x8c, 0x27, - 0xaf, 0xc8, 0x52, 0x8c, 0x9e, 0xc8, 0x3d, 0xe9, 0x5a, 0xcc, 0xfe, 0x30, - 0xa4, 0xb8, 0xd5, 0x7b, 0x97, 0x9a, 0x10, 0x42, 0xf1, 0xc6, 0xba, 0x94, - 0x49, 0xf9, 0xb1, 0x21, 0xd1, 0xba, 0xa4, 0x7b, 0x41, 0xc4, 0xb9, 0xde, - 0x28, 0x39, 0xab, 0x6d, 0x43, 0x70, 0xe1, 0xa1, 0x6d, 0x69, 0x6a, 0x4c, - 0xea, 0x5c, 0xb6, 0xa3, 0x9a, 0xf1, 0xee, 0xad, 0x69, 0xeb, 0xea, 0x56, - 0x38, 0xd8, 0xc0, 0x2c, 0xfe, 0x4c, 0xae, 0xb0, 0xa1, 0xb8, 0x7c, 0xed, - 0x46, 0xf9, 0xd2, 0xf1, 0xbf, 0x5a, 0xb7, 0x12, 0xe9, 0x0c, 0xa8, 0x24, - 0xec, 0x1e, 0x8f, 0x56, 0xfd, 0xa6, 0x84, 0xc9, 0x7e, 0x51, 0xfd, 0x5b, - 0xa5, 0xed, 0x2d, 0x2e, 0x14, 0xb4, 0x1b, 0xe7, 0xa9, 0x5a, 0xf3, 0x4b, - 0x5c, 0xa2, 0x28, 0x09, 0xec, 0xe7, 0x10, 0xbf, 0xcc, 0x6f, 0x08, 0x93, - 0x06, 0x97, 0x8b, 0x34, 0x67, 0xc2, 0xa2, 0x90, 0x81, 0xc8, 0x8d, 0x1a, - 0x7b, 0x43, 0x1c, 0x16, 0x14, 0xea, 0x07, 0x2b, 0xab, 0x0c, 0x07, 0x68, - 0xdf, 0xf4, 0x9b, 0x71, 0x62, 0xec, 0x15, 0xe0, 0x08, 0x33, 0xc2, 0xac, - 0x79, 0x32, 0xcd, 0x74, 0x33, 0x90, 0x49, 0xca, 0x75, 0x67, 0xf0, 0xdc, - 0x5c, 0xa9, 0xe1, 0x0b, 0x88, 0xc0, 0x22, 0x6d, 0x09, 0x0d, 0x9d, 0x7f, - 0xb2, 0xf4, 0x4e, 0x07, 0xe4, 0xfe, 0xe9, 0x2f, 0xf3, 0xd4, 0x99, 0xe4, - 0x61, 0x32, 0xe2, 0x51, 0x39, 0x6e, 0x13, 0x94, 0x83, 0x8b, 0x12, 0x31, - 0xd6, 0x48, 0x76, 0xb1, 0x0e, 0x0b, 0x65, 0x33, 0xe5, 0x8b, 0xd3, 0xdb, - 0x88, 0xd5, 0xaf, 0x28, 0x0f, 0xa0, 0x56, 0x10, 0x68, 0x16, 0x90, 0x57, - 0xae, 0xec, 0xfc, 0x91, 0xcc, 0xe9, 0xe9, 0x9d, 0x57, 0xec, 0x12, 0x5d, - 0xf0, 0x35, 0x7b, 0x91, 0x83, 0xc7, 0xdc, 0x09, 0xeb, 0x4c, 0x12, 0x05, - 0x25, 0x40, 0x3d, 0xfe, 0xf6, 0xd4, 0x90, 0x84, 0x31, 0x9d, 0xa3, 0x49, - 0x18, 0xec, 0xca, 0x26, 0x58, 0x6c, 0xad, 0xfd, 0x47, 0x17, 0x5b, 0x80, - 0xfd, 0xdf, 0xfc, 0xec, 0xd2, 0x80, 0x81, 0x79, 0xa3, 0x53, 0x77, 0x59, - 0xc9, 0xeb, 0xe2, 0x05, 0xde, 0x12, 0xc0, 0x35, 0xb7, 0x11, 0xbc, 0xc2, - 0x5c, 0x53, 0x04, 0x00, 0x5c, 0x4f, 0x59, 0x76, 0x30, 0x72, 0xe7, 0x31, - 0x0b, 0x4e, 0x4b, 0xa0, 0x64, 0xdd, 0x09, 0x2a, 0xb6, 0x32, 0xd1, 0x50, - 0x93, 0x2f, 0x4f, 0x54, 0x5f, 0x56, 0x63, 0x82, 0x65, 0x15, 0xc9, 0x8a, - 0x23, 0x38, 0x41, 0xa0, 0xd2, 0x1b, 0x52, 0x58, 0x9f, 0x07, 0x6a, 0x00, - 0xff, 0xa1, 0xc0, 0x9a, 0x01, 0x1a, 0x87, 0xa2, 0x13, 0x0d, 0x1e, 0xb9, - 0x3b, 0xfa, 0x2c, 0x0a, 0xd5, 0xd9, 0x27, 0x07, 0x69, 0xf0, 0x76, 0x25, - 0x20, 0x06, 0x24, 0xb7, 0x65, 0x33, 0x2e, 0xe2, 0xd6, 0x5d, 0x85, 0x47, - 0xe3, 0xac, 0x8f, 0x79, 0xff, 0x81, 0x93, 0x0d, 0x4f, 0xb7, 0xa9, 0x93, - 0xc9, 0x2e, 0x14, 0xd4, 0xd9, 0x19, 0xef, 0xa7, 0xff, 0xd0, 0x19, 0x36, - 0xbc, 0x84, 0x6a, 0x98, 0x97, 0x34, 0xa8, 0x34, 0xf3, 0xb0, 0x22, 0x80, - 0x99, 0xab, 0xbf, 0x65, 0xab, 0x4f, 0x7e, 0x01, 0x86, 0x3c, 0x08, 0x37, - 0x7e, 0xe0, 0xb2, 0x24, 0x3d, 0x92, 0x01, 0xa3, 0x31, 0x80, 0x6a, 0x94, - 0x65, 0x11, 0xd5, 0x4f, 0xf4, 0xdd, 0x9c, 0x32, 0xeb, 0x54, 0xb5, 0x51, - 0x98, 0xcb, 0xfc, 0x8c, 0xdc, 0xb2, 0xbf, 0xa3, 0x43, 0xcd, 0x35, 0xd5, - 0x6c, 0x40, 0xf7, 0x0c, 0xce, 0x7f, 0x6b, 0x1b, 0xa7, 0xcf, 0x57, 0xa1, - 0x0a, 0x2c, 0x4d, 0xde, 0x7c, 0x6c, 0x94, 0xe9, 0xbb, 0x9d, 0x71, 0x06, - 0x2e, 0x8d, 0x93, 0xc6, 0x73, 0x4a, 0x45, 0x97, 0xfc, 0x65, 0xb6, 0xea, - 0x1c, 0xe5, 0xd7, 0x08, 0x93, 0x6d, 0x2e, 0x39, 0xb5, 0x95, 0x3e, 0xb4, - 0xea, 0xca, 0x05, 0x46, 0x69, 0x7c, 0xe2, 0xe7, 0x84, 0x3b, 0x81, 0x5d, - 0xfd, 0xaa, 0xe7, 0x09, 0xfc, 0x32, 0xf3, 0x3a, 0x7e, 0x9f, 0x23, 0x08, - 0x33, 0x8c, 0xa6, 0xf3, 0xec, 0x6a, 0xd5, 0x91, 0x5a, 0xd3, 0x7e, 0xd8, - 0xa8, 0x27, 0x69, 0xa8, 0xf0, 0x1d, 0xdc, 0xfa, 0x1c, 0xde, 0xb1, 0x00, - 0x9e, 0xcf, 0x24, 0x16, 0x23, 0x34, 0x7f, 0x3e, 0xf4, 0x95, 0x97, 0x81, - 0x17, 0xe0, 0xf4, 0xac, 0xba, 0x07, 0x8a, 0x5d, 0xd4, 0x06, 0x07, 0xfe, - 0x8f, 0x1b, 0x08, 0x5f, 0x12, 0x33, 0x93, 0x32, 0x6a, 0x63, 0x9e, 0x82, - 0x3d, 0xd3, 0x3c, 0x7c, 0x87, 0x9f, 0x9c, 0xf0, 0xc2, 0x88, 0xee, 0x48, - 0x4a, 0xcf, 0x6b, 0xe7, 0x36, 0x18, 0xae, 0x13, 0xce, 0x93, 0x96, 0x1a, - 0x0c, 0x83, 0xb0, 0x0f, 0xb4, 0x8a, 0x69, 0x3e, 0xdb, 0xa9, 0xca, 0x03, - 0xee, 0x2c, 0x09, 0xa3, 0xdd, 0xdd, 0x85, 0xa0, 0xd9, 0x4d, 0x56, 0x39, - 0xa3, 0xb9, 0xf7, 0x07, 0x79, 0xa3, 0x41, 0x8e, 0xb2, 0xc2, 0x47, 0xda, - 0xee, 0xeb, 0x8c, 0xc5, 0xbc, 0xfa, 0x9b, 0x87, 0xd5, 0xaa, 0x0b, 0xd2, - 0xe8, 0xc8, 0x6d, 0x8c, 0xe8, 0x85, 0xa3, 0x57, 0xa3, 0x3d, 0x40, 0x57, - 0x8c, 0x04, 0x4b, 0x93, 0xec, 0x90, 0x9a, 0xd0, 0xc9, 0x81, 0x05, 0xdc, - 0xee, 0xc8, 0xd2, 0x5f, 0xb6, 0x8e, 0xaa, 0xfd, 0xbe, 0x24, 0x09, 0x41, - 0x99, 0xff, 0x34, 0xc3, 0x25, 0x99, 0x65, 0x4b, 0xaa, 0xdb, 0x5a, 0x2d, - 0xbb, 0x03, 0xf7, 0x7f, 0x74, 0x50, 0xd7, 0x1d, 0xd5, 0xc9, 0x34, 0x11, - 0xa1, 0x22, 0x53, 0x54, 0xe7, 0xe9, 0xba, 0x1f, 0xcc, 0x36, 0xf8, 0x46, - 0xb3, 0x5c, 0x53, 0xa7, 0x6d, 0xba, 0xe7, 0xef, 0xef, 0xb4, 0xc7, 0x7f, - 0x5a, 0x75, 0xf4, 0x07, 0x25, 0x9c, 0x5d, 0xb6, 0xb3, 0x54, 0x11, 0x0a, - 0x12, 0xad, 0x80, 0xd5, 0xab, 0x17, 0x05, 0x62, 0x01, 0xac, 0x1a, 0xb5, - 0x0d, 0x17, 0xd6, 0x4d, 0xc8, 0xed, 0xb7, 0x19, 0xe1, 0x09, 0x31, 0x3d, - 0xd3, 0x34, 0xa1, 0xbd, 0x78, 0x21, 0xc2, 0xe3, 0xb8, 0x11, 0x3f, 0x45, - 0x86, 0xf2, 0x7a, 0x5f, 0x8b, 0x82, 0x66, 0x5a, 0xda, 0xe7, 0x36, 0x49, - 0xe5, 0xc3, 0x59, 0x1b, 0x2e, 0x58, 0x57, 0x9a, 0xac, 0x86, 0xa4, 0xa9, - 0x77, 0xfb, 0x97, 0xe9, 0x19, 0x0e, 0xdd, 0x68, 0xcf, 0x36, 0x28, 0xf9, - 0x66, 0x27, 0x36, 0xd4, 0x3d, 0xb9, 0xf3, 0xc3, 0x01, 0xb6, 0x50, 0xdf, - 0x59, 0x5f, 0x58, 0xf3, 0xb3, 0xd5, 0xb2, 0x69, 0x19, 0x3b, 0x8c, 0x01, - 0x0d, 0x30, 0x63, 0x9f, 0x7c, 0x0a, 0x8f, 0x85, 0x84, 0x12, 0x0a, 0x0a, - 0x93, 0x5a, 0xa0, 0xaf, 0xab, 0x83, 0x19, 0xf7, 0x1a, 0x78, 0xa8, 0x41, - 0xa3, 0x5c, 0xfa, 0x1b, 0x5c, 0x58, 0x04, 0x01, 0x73, 0xdf, 0x33, 0x90, - 0x53, 0x48, 0x55, 0x67, 0xfc, 0xe9, 0xe7, 0x20, 0x0e, 0x9e, 0x4c, 0x5b, - 0xd5, 0xf1, 0x16, 0xbb, 0xe7, 0x2a, 0x22, 0x9e, 0xd5, 0xae, 0x28, 0xbb, - 0xd9, 0xb6, 0xfc, 0xb4, 0xed, 0x87, 0x36, 0x19, 0x9f, 0x30, 0xd7, 0x52, - 0x44, 0x56, 0x74, 0x53, 0x03, 0x1b, 0x93, 0xb6, 0x72, 0x41, 0x91, 0x35, - 0x08, 0x78, 0x1b, 0xcb, 0x11, 0xbb, 0xe0, 0x43, 0xf9, 0x6e, 0xe7, 0xc7, - 0x6d, 0x01, 0x70, 0xb6, 0x90, 0x31, 0x50, 0xa7, 0xf4, 0x3e, 0x83, 0x8b, - 0x66, 0xb0, 0xdb, 0xd8, 0xd4, 0x3e, 0x75, 0xe0, 0xa6, 0xca, 0xc3, 0xec, - 0x0b, 0x98, 0x19, 0x39, 0x92, 0x34, 0x7e, 0x72, 0x82, 0xda, 0x50, 0x89, - 0x6a, 0xf2, 0xb7, 0x79, 0xbd, 0x0e, 0xe3, 0x49, 0x2d, 0x69, 0x48, 0x5b, - 0x50, 0x58, 0x81, 0x18, 0x01, 0x04, 0x34, 0x5f, 0x1b, 0x2b, 0x27, 0x9c, - 0xbe, 0xb4, 0xd4, 0x76, 0xe4, 0xa2, 0xf9, 0x18, 0x87, 0xd5, 0xe6, 0x7f, - 0x91, 0xba, 0x28, 0x58, 0x58, 0x28, 0x92, 0xe6, 0x37, 0xf7, 0xa2, 0x89, - 0x80, 0x56, 0x19, 0x4e, 0x39, 0x1f, 0xdb, 0x13, 0xd4, 0x2b, 0x0f, 0x05, - 0xf6, 0xd5, 0x4f, 0xdc, 0xb2, 0x22, 0xe7, 0x93, 0x27, 0x9b, 0xaa, 0x91, - 0x65, 0x96, 0x12, 0xbf, 0x46, 0xdd, 0x2a, 0xc1, 0x70, 0x0c, 0x11, 0x91, - 0x3f, 0xbd, 0x73, 0x91, 0x3b, 0xa3, 0x1c, 0x6b, 0x42, 0x1e, 0xb3, 0x81, - 0x2d, 0x37, 0x00, 0x5b, 0x71, 0x90, 0x8a, 0x7c, 0x60, 0x55, 0x12, 0xad, - 0xb6, 0x50, 0x51, 0x97, 0x01, 0x75, 0x2b, 0x19, 0x34, 0xe4, 0x33, 0x26, - 0x93, 0xf5, 0x98, 0xc7, 0x62, 0x72, 0x4b, 0x10, 0x8a, 0x7c, 0x71, 0xcf, - 0x4f, 0x94, 0x22, 0xbe, 0x49, 0xa0, 0x61, 0x95, 0xb3, 0x22, 0x50, 0xd3, - 0x00, 0x55, 0x2e, 0x1f, 0x90, 0x5e, 0xd7, 0x9c, 0xc6, 0xbc, 0x8e, 0x64, - 0x7f, 0x46, 0xf3, 0x55, 0xc5, 0x85, 0xa2, 0xcc, 0x7b, 0xac, 0x93, 0x6f, - 0x2e, 0x28, 0x34, 0xda, 0xb2, 0x9c, 0x2d, 0x3e, 0x89, 0xa2, 0x6e, 0x50, - 0xf5, 0x3f, 0xde, 0xe8, 0xc6, 0xd0, 0x2d, 0x77, 0x63, 0x20, 0x81, 0x94, - 0xa2, 0x6b, 0x22, 0xaa, 0xe0, 0x79, 0xd9, 0xfe, 0xf4, 0xde, 0x6f, 0x6c, - 0x2c, 0x32, 0xf4, 0xf9, 0x62, 0xe0, 0xf8, 0xdb, 0x33, 0xc2, 0x3c, 0xb3, - 0xbc, 0x9e, 0xe7, 0x76, 0x0d, 0x87, 0x54, 0x02, 0xff, 0x92, 0xbe, 0xfa, - 0x76, 0x52, 0x2e, 0x5a, 0xbc, 0x42, 0x91, 0x50, 0x38, 0xb4, 0x04, 0x27, - 0x43, 0x3c, 0xa0, 0xdf, 0x89, 0xe3, 0x9b, 0xf6, 0x79, 0xb3, 0xda, 0x3f, - 0x1a, 0xf5, 0xa4, 0x89, 0x60, 0xbc, 0x1d, 0x6f, 0x0f, 0x7f, 0xf2, 0x41, - 0x31, 0x51, 0xdd, 0x82, 0x78, 0x20, 0x92, 0x5d, 0x6d, 0x92, 0x07, 0x50, - 0xc4, 0xf6, 0x33, 0x79, 0x48, 0x4b, 0xd1, 0xb9, 0xeb, 0xa4, 0x6e, 0x27, - 0xb3, 0x52, 0x71, 0x6d, 0xa8, 0x18, 0x1d, 0x79, 0x1c, 0xa1, 0xbe, 0x27, - 0x7c, 0xd7, 0x4d, 0x62, 0xb7, 0xfc, 0x09, 0x88, 0xa0, 0x04, 0xe8, 0x9f, - 0x7f, 0x6f, 0x28, 0xbd, 0x0d, 0xba, 0xbd, 0x97, 0x8f, 0xf4, 0x87, 0x28, - 0x0d, 0x4b, 0xa2, 0x84, 0x31, 0x52, 0xfe, 0xd9, 0xe3, 0x54, 0x1b, 0x80, - 0x31, 0x1b, 0x56, 0x65, 0xf7, 0xf7, 0x32, 0x57, 0xe3, 0xdb, 0x36, 0xe4, - 0x38, 0xf0, 0xe8, 0xc8, 0xda, 0xea, 0x78, 0xad, 0x29, 0x67, 0x42, 0xb1, - 0xd9, 0xcf, 0x54, 0xe2, 0x7e, 0x78, 0xc3, 0x9a, 0x11, 0x6f, 0x59, 0x99, - 0x84, 0xa2, 0xe7, 0xae, 0xe8, 0xdd, 0x40, 0x23, 0xc0, 0xeb, 0x1b, 0xb7, - 0x20, 0x86, 0x89, 0x6b, 0xb6, 0x2a, 0x6b, 0x9b, 0x57, 0x76, 0x68, 0xff, - 0x13, 0x9e, 0x00, 0xa6, 0x48, 0xd7, 0xed, 0xa7, 0xb9, 0x28, 0xa4, 0xfa, - 0xf9, 0x64, 0xf4, 0x34, 0xaf, 0x5d, 0xa5, 0xb5, 0x4d, 0xc9, 0x6b, 0x2f, - 0xa3, 0x15, 0x46, 0x7f, 0xd0, 0xb2, 0x7d, 0x92, 0x13, 0xe9, 0x21, 0x13, - 0xca, 0xb9, 0xd1, 0xdf, 0x51, 0xb2, 0x42, 0x13, 0x44, 0x23, 0xfd, 0x81, - 0xae, 0x61, 0x2a, 0x7c, 0x63, 0x90, 0x7c, 0xfa, 0x4c, 0xe4, 0xd9, 0x27, - 0x70, 0xfc, 0x40, 0x4f, 0x90, 0x0d, 0x34, 0x32, 0xa3, 0x6b, 0x97, 0xa6, - 0xea, 0x68, 0x10, 0x57, 0x5b, 0xbd, 0xbc, 0x3b, 0x8c, 0x9e, 0x1f, 0x88, - 0xf4, 0xa1, 0x56, 0x0d, 0x31, 0xcf, 0x8d, 0x0f, 0xcf, 0x51, 0xb9, 0xc7, - 0xb1, 0x83, 0xa1, 0xd8, 0x40, 0x52, 0xe0, 0x0c, 0xe5, 0x23, 0x32, 0x8c, - 0x1c, 0x36, 0x3a, 0x76, 0xe9, 0x66, 0xb1, 0x4b, 0xc2, 0xeb, 0xe4, 0x6d, - 0x5a, 0x8a, 0xf3, 0xf1, 0x5a, 0x0e, 0x47, 0x59, 0x5f, 0xfc, 0x68, 0xc3, - 0xa6, 0x7f, 0xd3, 0xd8, 0x5b, 0x89, 0x6f, 0x3e, 0x22, 0xef, 0x09, 0xb6, - 0x1e, 0xc7, 0xfd, 0xa4, 0x0e, 0x2e, 0x07, 0xe3, 0xb6, 0xc9, 0x83, 0x4b, - 0xb4, 0x09, 0x25, 0xfa, 0x17, 0x40, 0x20, 0x41, 0xce, 0x11, 0xc2, 0xbf, - 0xaf, 0xf3, 0xd4, 0x9a, 0x2c, 0x5b, 0x46, 0x2d, 0xec, 0xc2, 0x88, 0x6a, - 0x26, 0x9c, 0x35, 0xfc, 0xd3, 0xaa, 0x16, 0xcc, 0x7a, 0xf3, 0x7a, 0x4d, - 0x17, 0xf1, 0x5d, 0x4f, 0x59, 0x87, 0xf6, 0x6f, 0xa0, 0xbd, 0x7b, 0xf6, - 0xdf, 0x3e, 0xe5, 0x05, 0x1a, 0xfa, 0x1c, 0x7f, 0x20, 0xc5, 0xe2, 0x6e, - 0x66, 0xc2, 0xc7, 0x2d, 0xe3, 0x53, 0x05, 0xcc, 0x69, 0xa9, 0x79, 0x2e, - 0x73, 0xb9, 0x00, 0xb4, 0xff, 0xb9, 0x16, 0x36, 0xae, 0xfd, 0x7b, 0x4b, - 0xce, 0xe5, 0xf0, 0x47, 0x42, 0x5c, 0xc8, 0x1a, 0x04, 0x3e, 0x9c, 0xd2, - 0xdc, 0x37, 0x11, 0x62, 0x71, 0xb2, 0x18, 0x51, 0xd4, 0x19, 0xc3, 0xab, - 0x49, 0xd8, 0x69, 0x40, 0xd8, 0x82, 0x24, 0x34, 0xb5, 0x18, 0xfb, 0x2a, - 0x31, 0x2d, 0xe4, 0x07, 0x2e, 0x0f, 0xfc, 0x5b, 0xef, 0x78, 0xe3, 0x91, - 0xfa, 0x30, 0x30, 0xe4, 0x40, 0x58, 0x6c, 0x41, 0x15, 0x09, 0x5a, 0x9f, - 0x71, 0x33, 0x6e, 0x9b, 0xe9, 0xab, 0x80, 0x96, 0x85, 0xe8, 0xfe, 0xcf, - 0xf9, 0x33, 0xc6, 0x00, 0x28, 0xc0, 0x5b, 0x56, 0xd0, 0x81, 0xf8, 0x2e, - 0x98, 0x21, 0x27, 0x24, 0x64, 0x84, 0xba, 0x21, 0xf8, 0x28, 0x6f, 0x8d, - 0xf7, 0x51, 0xd3, 0xc4, 0xc0, 0xe0, 0x61, 0xf5, 0x75, 0x00, 0x5f, 0x43, - 0x15, 0x7a, 0x8d, 0x9f, 0x43, 0xcf, 0xd3, 0x99, 0xde, 0x69, 0x44, 0xbb, - 0xb2, 0xc1, 0xa2, 0xea, 0xde, 0x10, 0x53, 0x27, 0xbd, 0xbc, 0x30, 0xe5, - 0x61, 0x92, 0x9d, 0x1d, 0xf5, 0xd6, 0x5b, 0xc9, 0x5b, 0x36, 0xef, 0xd7, - 0x4a, 0x6a, 0x5c, 0x0f, 0xe2, 0x31, 0xd3, 0xb4, 0x6f, 0xb1, 0x02, 0x7e, - 0x90, 0x59, 0x9b, 0xa9, 0xd0, 0xab, 0x65, 0xec, 0x5e, 0xcf, 0x5d, 0xa5, - 0x38, 0xaf, 0x6d, 0xe8, 0xbe, 0x71, 0x73, 0xc3, 0xc5, 0x4a, 0xbb, 0xbb, - 0xca, 0x12, 0x96, 0x18, 0x50, 0x4d, 0xa7, 0x14, 0x7e, 0x55, 0xa2, 0x28, - 0x09, 0xb9, 0xf6, 0xa7, 0x30, 0x95, 0x6e, 0x99, 0xff, 0x6d, 0x53, 0x0a, - 0x68, 0xf4, 0xfd, 0xaf, 0xfe, 0x67, 0x60, 0x52, 0x4d, 0xb7, 0x7d, 0xea, - 0xcd, 0x2d, 0x3c, 0x61, 0x9a, 0xd6, 0x4a, 0x5f, 0x72, 0x9b, 0xd1, 0x12, - 0x40, 0x64, 0x42, 0x72, 0x65, 0xa5, 0x89, 0xc0, 0xbb, 0x13, 0x30, 0xa0, - 0x14, 0x79, 0x23, 0x3f, 0x40, 0x5a, 0x85, 0x77, 0xb4, 0x95, 0x1b, 0x28, - 0xe9, 0x7f, 0x77, 0x43, 0x8b, 0x18, 0x2f, 0x77, 0xdd, 0xc4, 0x23, 0x5a, - 0xe3, 0xb4, 0xd3, 0x8f, 0x61, 0x3d, 0xc6, 0x1a, 0x10, 0xf6, 0xe3, 0x49, - 0x18, 0xee, 0x60, 0xa1, 0xf4, 0x78, 0x70, 0xb7, 0xa2, 0xb5, 0xd6, 0x7f, - 0xf3, 0xeb, 0xc7, 0x7f, 0xdb, 0x77, 0x4d, 0xca, 0x5a, 0x13, 0xa1, 0x29, - 0x80, 0x14, 0xa4, 0x51, 0xa9, 0x42, 0xc4, 0x2d, 0x77, 0x96, 0xbb, 0x6c, - 0x7a, 0xec, 0xf8, 0x8a, 0xb0, 0xec, 0xd5, 0x29, 0xce, 0x1c, 0x26, 0x51, - 0x15, 0x19, 0x5d, 0x52, 0xc5, 0xe5, 0x53, 0x30, 0x1d, 0xea, 0xbf, 0x7f, - 0xcd, 0xc8, 0xed, 0x9e, 0xea, 0x11, 0x0d, 0x7d, 0xd1, 0xb8, 0xea, 0x77, - 0x14, 0xba, 0xe4, 0xe9, 0x34, 0x74, 0x74, 0x0d, 0x11, 0xb7, 0xf4, 0xae, - 0x72, 0x43, 0xec, 0x7e, 0xff, 0x88, 0xd3, 0x94, 0xdf, 0xf8, 0xa0, 0xe7, - 0x05, 0x16, 0xc5, 0x8c, 0xfc, 0xdf, 0x79, 0x61, 0xc7, 0xe2, 0x99, 0x8e, - 0xc7, 0xb6, 0xd5, 0xed, 0x90, 0xbc, 0x41, 0x50, 0xf1, 0xf7, 0xa6, 0x6e, - 0x48, 0x47, 0xff, 0x27, 0x8c, 0xb3, 0xc4, 0xd6, 0x92, 0x47, 0xa2, 0x33, - 0x65, 0x14, 0xae, 0xfb, 0x7d, 0xe3, 0x81, 0xff, 0xb9, 0x61, 0x08, 0x91, - 0x9d, 0x19, 0x78, 0xfd, 0x11, 0x4e, 0x42, 0xf0, 0x04, 0xe0, 0xc0, 0x62, - 0x18, 0xdf, 0x8d, 0xec, 0x31, 0x4c, 0x97, 0x29, 0x74, 0x6f, 0x27, 0xf5, - 0xf8, 0x5d, 0xde, 0xcd, 0x33, 0xcd, 0x32, 0x56, 0xbc, 0xce, 0x01, 0x8f, - 0x21, 0x15, 0x3a, 0x6a, 0xac, 0x63, 0xb3, 0xfc, 0xa0, 0x0d, 0xc4, 0xee, - 0x91, 0x12, 0xe4, 0xb1, 0xc9, 0x1c, 0xeb, 0xb9, 0xf2, 0x60, 0x3e, 0x95, - 0x6b, 0x34, 0xbe, 0xa0, 0xc3, 0xbc, 0x17, 0x02, 0xab, 0xbe, 0x62, 0x4a, - 0x98, 0x3d, 0x9c, 0x6e, 0x68, 0x60, 0x13, 0xd9, 0xd0, 0x58, 0x97, 0x0a, - 0x73, 0x56, 0xdd, 0xc7, 0x2b, 0x40, 0xd1, 0xd1, 0x01, 0x6e, 0xf5, 0x2d, - 0x98, 0xc9, 0xce, 0x54, 0x33, 0x70, 0x41, 0xee, 0x9b, 0x70, 0xce, 0x95, - 0x20, 0xf6, 0x1a, 0xae, 0xbd, 0x20, 0xc1, 0xf4, 0x12, 0x37, 0xf6, 0x72, - 0x4a, 0xbd, 0x58, 0x52, 0x3f, 0x6e, 0xe5, 0x04, 0xd7, 0x08, 0xa9, 0x27, - 0x16, 0x1e, 0x19, 0x7b, 0x6d, 0xf8, 0x3f, 0xe4, 0x48, 0xef, 0xb5, 0xd2, - 0x0e, 0x98, 0xec, 0x4b, 0xa6, 0x9c, 0x3c, 0x35, 0x44, 0xae, 0x6a, 0x73, - 0x0e, 0x15, 0xff, 0x26, 0x38, 0x4f, 0xf1, 0xa6, 0xc4, 0x4a, 0x5c, 0x7c, - 0x4b, 0x2b, 0xd7, 0x4d, 0x64, 0x9d, 0x2e, 0x6a, 0x6d, 0xd5, 0xd1, 0x97, - 0x3f, 0x0a, 0x75, 0x44, 0x4e, 0x54, 0x75, 0xd8, 0x9c, 0x45, 0x05, 0xd9, - 0x2b, 0x5c, 0x36, 0x9a, 0x93, 0x6c, 0x5c, 0x1d, 0xe7, 0x59, 0x25, 0x4d, - 0xdd, 0xb5, 0x85, 0xa2, 0x66, 0xa5, 0xdc, 0x4d, 0x14, 0x47, 0xbb, 0x9b, - 0xef, 0x99, 0xf5, 0x05, 0x35, 0xae, 0x29, 0x42, 0xa1, 0x24, 0xc2, 0x0f, - 0xbc, 0x92, 0x32, 0xd6, 0x0e, 0x68, 0x32, 0x9e, 0xa1, 0xa0, 0x52, 0x17, - 0xd9, 0x87, 0x8d, 0x27, 0xbf, 0xec, 0x6a, 0x9b, 0xeb, 0x00, 0xc4, 0x3b, - 0xbb, 0xe5, 0xde, 0x17, 0x6b, 0x3e, 0x5f, 0x7e, 0xdc, 0x17, 0x2e, 0xc9, - 0x6b, 0xb9, 0xe8, 0x2a, 0xef, 0x89, 0x5a, 0x1d, 0xfc, 0x52, 0xee, 0xcf, - 0x72, 0x3e, 0x06, 0x50, 0xcc, 0xcd, 0x8b, 0xbb, 0x90, 0x95, 0xf2, 0x9d, - 0xd2, 0x19, 0x93, 0x96, 0xb8, 0x19, 0x6d, 0x88, 0xf1, 0xf6, 0x93, 0xf5, - 0x97, 0xad, 0x17, 0x0a, 0xae, 0x15, 0x16, 0xbd, 0xb2, 0xc9, 0xca, 0xcd, - 0x94, 0x49, 0x1f, 0xc1, 0xf4, 0xd0, 0xad, 0x17, 0x0c, 0xae, 0x4b, 0x72, - 0xd6, 0xe8, 0x9a, 0x67, 0x6a, 0x68, 0x8f, 0xfe, 0xe7, 0xdb, 0xe0, 0x5b, - 0x4e, 0x75, 0x50, 0x3b, 0x81, 0xfe, 0xff, 0xea, 0x60, 0x9f, 0x64, 0x1b, - 0xe9, 0x2b, 0x6f, 0x4c, 0x4f, 0xd6, 0x1e, 0x8c, 0xda, 0x21, 0xe7, 0x78, - 0x1e, 0xcf, 0xa3, 0xac, 0x5a, 0xd7, 0xc5, 0xb6, 0x01, 0x4a, 0x68, 0x1f, - 0x0d, 0xfb, 0xe6, 0x05, 0x7f, 0xe2, 0xb7, 0xf8, 0x4a, 0x3b, 0x6d, 0x91, - 0x60, 0x80, 0xe3, 0xb6, 0x3c, 0x91, 0x0d, 0xda, 0x1a, 0x2b, 0xfb, 0x2e, - 0x02, 0x64, 0xf2, 0x2c, 0xa7, 0xe1, 0x5b, 0x24, 0xe2, 0x4b, 0xfe, 0xf2, - 0xd7, 0x67, 0x06, 0xba, 0x8e, 0x6d, 0x68, 0xd6, 0x15, 0x1d, 0x72, 0xb8, - 0x92, 0x1a, 0x7a, 0x13, 0x2c, 0x8c, 0x46, 0x1e, 0x0d, 0x02, 0x53, 0xae, - 0x96, 0x71, 0x13, 0xe5, 0x69, 0xd0, 0x55, 0x35, 0x3c, 0x9a, 0x22, 0x66, - 0xce, 0x8b, 0x5e, 0x69, 0x82, 0x5b, 0x80, 0x13, 0xce, 0xf5, 0x77, 0xd2, - 0xa1, 0xe8, 0x55, 0x99, 0x90, 0x0c, 0x2e, 0x10, 0x1a, 0xa5, 0x1d, 0x36, - 0x8d, 0x77, 0x0e, 0xc3, 0x27, 0x87, 0x67, 0xee, 0xfa, 0xf3, 0x38, 0x19, - 0x5c, 0xaa, 0x2b, 0x99, 0xe3, 0x72, 0xff, 0x6a, 0x21, 0x96, 0x79, 0x5d, - 0xd3, 0x2e, 0x8c, 0x81, 0x10, 0x18, 0x18, 0x06, 0x7b, 0x2c, 0x90, 0xc3, - 0x4f, 0x5c, 0x3d, 0x6b, 0x03, 0x8c, 0x75, 0xc2, 0x14, 0xb7, 0x28, 0xe1, - 0xe5, 0x15, 0x73, 0x8c, 0x29, 0x10, 0x4c, 0xd3, 0xd5, 0xbe, 0xb2, 0x36, - 0x30, 0xa6, 0x79, 0x25, 0x7b, 0xac, 0x84, 0x28, 0x84, 0x45, 0xbc, 0x85, - 0xac, 0x5e, 0xfe, 0x56, 0x33, 0xa7, 0x02, 0xb3, 0xa1, 0x61, 0xa0, 0x3e, - 0x19, 0x1c, 0x71, 0xed, 0x9f, 0x27, 0xfd, 0x5c, 0x14, 0xfe, 0x96, 0xf8, - 0x00, 0x43, 0x21, 0xf4, 0x4e, 0xc5, 0x7d, 0xce, 0x12, 0x5e, 0x55, 0x47, - 0x80, 0x53, 0xfb, 0xb0, 0x5f, 0xa8, 0x4b, 0x98, 0xa9, 0x65, 0x8c, 0x3f, - 0xb6, 0xa5, 0xfd, 0x9b, 0x92, 0x20, 0x4e, 0x4c, 0x2a, 0x25, 0x09, 0x2f, - 0x58, 0x0a, 0xda, 0xc4, 0xd1, 0x8d, 0xaa, 0xd4, 0xa2, 0x08, 0x05, 0x4e, - 0x8f, 0xbd, 0x58, 0xd2, 0x92, 0x2c, 0x69, 0xaf, 0xb2, 0xf3, 0xd2, 0x08, - 0x80, 0x54, 0x45, 0x7a, 0x00, 0x1d, 0xd4, 0x97, 0xe8, 0xe1, 0xeb, 0x7e, - 0xfd, 0x74, 0xf3, 0xa6, 0xfc, 0x5f, 0x2a, 0x3d, 0x69, 0x3d, 0x6c, 0xd1, - 0x4a, 0xc4, 0x2d, 0xdf, 0xfc, 0x66, 0x47, 0x9a, 0x65, 0x86, 0xb1, 0x77, - 0xdc, 0x1d, 0x81, 0x94, 0x09, 0xec, 0x73, 0x33, 0xac, 0x3b, 0x75, 0x50, - 0xc4, 0x9e, 0x0f, 0x9b, 0xa9, 0xd4, 0x39, 0x50, 0xbc, 0x04, 0x51, 0x31, - 0xa0, 0x1e, 0x54, 0xc8, 0x88, 0x12, 0x79, 0xb3, 0x1a, 0x53, 0x7b, 0x92, - 0x31, 0x24, 0xf1, 0xa8, 0x4d, 0x8c, 0x92, 0xf7, 0xed, 0x8b, 0x82, 0xfa, - 0xf6, 0x13, 0x6d, 0x42, 0x17, 0xab, 0xbd, 0x59, 0x37, 0x2e, 0xf2, 0xde, - 0xff, 0x39, 0x0e, 0x69, 0x2a, 0x2c, 0xcb, 0x25, 0xee, 0x62, 0x80, 0x0f, - 0x05, 0xd0, 0xc8, 0xee, 0x6f, 0x1c, 0x05, 0x5e, 0xd1, 0xe9, 0xf1, 0x21, - 0x03, 0x3c, 0x00, 0xf2, 0x52, 0xe5, 0x53, 0xb1, 0xf3, 0x73, 0x2e, 0xdb, - 0x6b, 0x98, 0x02, 0x01, 0xff, 0xb6, 0xc8, 0x2c, 0xab, 0x51, 0xc5, 0x67, - 0x0b, 0x76, 0x80, 0x61, 0x4b, 0x7f, 0x25, 0x1d, 0x7d, 0xa9, 0xad, 0xc5, - 0x84, 0x92, 0xad, 0xa2, 0x24, 0x37, 0xef, 0xc1, 0xf2, 0x29, 0xcb, 0x30, - 0x26, 0x2b, 0x88, 0xe9, 0x9f, 0x6c, 0x58, 0x45, 0xf6, 0xf9, 0x32, 0x86, - 0x3b, 0x24, 0xc3, 0xa1, 0xba, 0x23, 0xcd, 0xd6, 0xe8, 0xaa, 0x63, 0xdc, - 0x2d, 0x5b, 0xe1, 0xaf, 0x50, 0x75, 0xfb, 0xae, 0x45, 0x6c, 0x66, 0xd4, - 0xad, 0x19, 0xf7, 0x1c, 0x22, 0x1d, 0x69, 0x67, 0xe6, 0xb1, 0x04, 0x10, - 0x9a, 0x0a, 0xda, 0x02, 0x38, 0x08, 0x71, 0x53, 0x0e, 0x79, 0x46, 0xf6, - 0xd8, 0x6b, 0xbf, 0x6d, 0x44, 0x02, 0xe2, 0xc7, 0xc8, 0xfe, 0x97, 0xaa, - 0x17, 0x82, 0x43, 0x39, 0x5e, 0x45, 0x7c, 0x2c, 0xb3, 0x3e, 0xd9, 0x12, - 0x69, 0x77, 0x11, 0xae, 0x76, 0x6c, 0x90, 0x21, 0x65, 0x9f, 0x56, 0x88, - 0xcc, 0x6e, 0xc6, 0x8a, 0xd7, 0x05, 0xc2, 0x16, 0x1e, 0x6f, 0x52, 0xb4, - 0xe7, 0x40, 0xb1, 0xd0, 0x72, 0xdd, 0x04, 0x4c, 0x06, 0xb4, 0x4b, 0x8b, - 0x5a, 0xce, 0x88, 0xe2, 0x9d, 0x45, 0x65, 0xff, 0x2c, 0x4f, 0x4f, 0xee, - 0x5f, 0x81, 0x7c, 0x7b, 0xe0, 0x73, 0x74, 0x40, 0x6f, 0xc0, 0xd1, 0xa5, - 0x7e, 0xe7, 0x56, 0xa8, 0x60, 0x21, 0xcc, 0xb6, 0x0b, 0x9f, 0xfc, 0x87, - 0xe8, 0x49, 0xb9, 0x69, 0xb8, 0x5c, 0x31, 0xae, 0x80, 0x7f, 0x77, 0xf6, - 0x1f, 0x56, 0xdb, 0x2d, 0x1e, 0xd6, 0x0a, 0x15, 0xc8, 0x70, 0x5d, 0x70, - 0xee, 0xde, 0x0c, 0x5b, 0x69, 0xb6, 0x6d, 0x93, 0x5b, 0x41, 0x16, 0x54, - 0xcc, 0x0b, 0xc2, 0xba, 0xef, 0x52, 0x1a, 0x11, 0xf8, 0x6e, 0x45, 0x03, - 0x9a, 0x17, 0x9c, 0xb3, 0xa6, 0x8a, 0xba, 0xcc, 0xa3, 0xd2, 0xca, 0x7e, - 0x0f, 0xb8, 0x83, 0x06, 0x92, 0xbb, 0x8c, 0x52, 0x1d, 0xe7, 0x6e, 0x4c, - 0xda, 0x5d, 0x1d, 0x1b, 0xb2, 0x50, 0x46, 0xeb, 0x44, 0xf5, 0x4c, 0xb1, - 0xf6, 0x34, 0x1d, 0xfb, 0x51, 0x44, 0x87, 0x36, 0x88, 0xd2, 0x34, 0xea, - 0x40, 0xc4, 0xf1, 0xd6, 0xb8, 0xdd, 0x79, 0x92, 0xae, 0x81, 0x49, 0x58, - 0x9c, 0x1d, 0xbd, 0x8b, 0x5a, 0x27, 0x1a, 0x2b, 0x77, 0x44, 0xfa, 0x56, - 0x21, 0xee, 0xa9, 0x64, 0xfe, 0xa7, 0xaa, 0x41, 0x82, 0x02, 0x86, 0x23, - 0x55, 0xc7, 0xea, 0xeb, 0x09, 0x58, 0x05, 0x87, 0xa8, 0x25, 0x02, 0x01, - 0x58, 0x10, 0x39, 0x18, 0xa7, 0x6a, 0xc8, 0x2f, 0xbe, 0xc2, 0x4f, 0x39, - 0x84, 0xb5, 0x4a, 0xec, 0xab, 0x2d, 0xf6, 0x30, 0x85, 0xb8, 0x22, 0xf5, - 0x25, 0x27, 0x16, 0xd4, 0x40, 0xaf, 0xc3, 0xee, 0xad, 0x6e, 0xe5, 0xcd, - 0xab, 0xa8, 0x7b, 0xc3, 0x8d, 0xe0, 0x7f, 0x80, 0xbb, 0x6a, 0x34, 0x06, - 0xe2, 0x74, 0x02, 0x46, 0xa2, 0x71, 0x27, 0x20, 0x01, 0x63, 0x59, 0x88, - 0xa0, 0xed, 0x77, 0xaa, 0x93, 0xba, 0xae, 0x38, 0x90, 0x9e, 0xb5, 0xda, - 0x54, 0x38, 0x88, 0x3c, 0x80, 0xc0, 0xb8, 0xca, 0x3e, 0x73, 0x01, 0xbd, - 0xf7, 0xdb, 0xc4, 0x1c, 0x50, 0x78, 0x78, 0xfd, 0x2a, 0x98, 0xd1, 0x06, - 0x03, 0x1f, 0xbb, 0xae, 0xa2, 0x33, 0x34, 0xe4, 0x20, 0x48, 0x09, 0x37, - 0x1d, 0xf4, 0x9e, 0xa3, 0x2c, 0xad, 0x35, 0xe2, 0x31, 0xd2, 0x6c, 0x6a, - 0x89, 0x58, 0xd7, 0x20, 0x71, 0x04, 0x80, 0xd9, 0x67, 0xa3, 0x35, 0xb9, - 0x0e, 0x3e, 0x52, 0xee, 0x10, 0x15, 0x95, 0x84, 0x70, 0x76, 0x1b, 0x72, - 0x0b, 0x49, 0xad, 0x19, 0x1c, 0xe0, 0x5c, 0x8c, 0x02, 0x13, 0x19, 0xfb, - 0xc5, 0xc6, 0x78, 0x77, 0x46, 0x57, 0xc2, 0x64, 0x0b, 0x8c, 0xd1, 0xca, - 0x00, 0x47, 0x34, 0xd1, 0xda, 0x76, 0xa3, 0x75, 0xad, 0x2f, 0x1f, 0x90, - 0xc2, 0x9b, 0xc2, 0xe2, 0x52, 0x5a, 0x5d, 0x7b, 0xb3, 0x32, 0xd7, 0x9b, - 0x08, 0x5b, 0x11, 0x7f, 0x35, 0xde, 0x3e, 0x90, 0x4f, 0xcc, 0x54, 0x2c, - 0x54, 0x89, 0xc5, 0x38, 0x92, 0x57, 0x7e, 0x04, 0xb8, 0x64, 0xb0, 0x7a, - 0x18, 0xdc, 0xa5, 0x7c, 0xf0, 0xcc, 0xd2, 0x1a, 0xa0, 0xe0, 0xaa, 0x84, - 0x42, 0xb4, 0x53, 0x50, 0x30, 0x68, 0x86, 0xf0, 0x7e, 0xc1, 0x54, 0xc8, - 0xe7, 0xcc, 0x1b, 0x7d, 0x8c, 0x43, 0x89, 0x8a, 0x7a, 0xc5, 0x0e, 0xf0, - 0x4b, 0x60, 0xbf, 0xe7, 0x04, 0xfe, 0x54, 0x56, 0xf7, 0x8a, 0x02, 0xb4, - 0xdf, 0x47, 0x9e, 0x9e, 0xc1, 0xf6, 0x24, 0xd3, 0xe4, 0x21, 0x5d, 0xcc, - 0x27, 0x34, 0xeb, 0xa1, 0xfa, 0x7d, 0xd5, 0x3e, 0xe3, 0x77, 0x8a, 0xcb, - 0xea, 0x1a, 0xe5, 0x97, 0x3a, 0xa0, 0x1d, 0xf0, 0x04, 0xcb, 0x19, 0x55, - 0xa3, 0x3d, 0xb5, 0x29, 0xa6, 0x2f, 0x5f, 0xbf, 0x04, 0xfd, 0xfa, 0x75, - 0xe9, 0x6b, 0x61, 0x68, 0x9c, 0xd1, 0x78, 0x56, 0x05, 0xa2, 0x05, 0x1b, - 0x47, 0xf5, 0xc5, 0xe6, 0x51, 0xb1, 0x74, 0xa0, 0x07, 0x91, 0x66, 0xfb, - 0x7a, 0x55, 0x65, 0x3c, 0xd3, 0x4a, 0x43, 0xb1, 0x16, 0xed, 0x22, 0xa0, - 0xbb, 0xa9, 0xb1, 0x8e, 0xad, 0xa5, 0xd4, 0xe7, 0x8e, 0x6f, 0x10, 0x6b, - 0xee, 0x81, 0xde, 0x9a, 0xb3, 0xa8, 0x9c, 0x64, 0xdd, 0x90, 0x7a, 0x7a, - 0x16, 0xbb, 0x46, 0xd8, 0xe0, 0xf2, 0x62, 0xc6, 0x4f, 0x2b, 0xd6, 0xfd, - 0xc2, 0x3f, 0xc5, 0xb2, 0xb6, 0x64, 0xbe, 0x16, 0x47, 0xbd, 0x84, 0xad, - 0x10, 0xd5, 0xca, 0x1e, 0xb8, 0x5f, 0xa9, 0x5d, 0x97, 0xd7, 0x2c, 0xbd, - 0x6a, 0x61, 0x59, 0xc9, 0x9a, 0x78, 0x13, 0x6c, 0x8d, 0x36, 0xb7, 0x6d, - 0xd2, 0x08, 0x93, 0xaf, 0x06, 0x72, 0xa6, 0x31, 0xfc, 0x71, 0x96, 0x89, - 0xff, 0x85, 0x6b, 0xa1, 0x35, 0x81, 0xc8, 0x2b, 0x51, 0x25, 0xdd, 0xdf, - 0x65, 0xc3, 0xb3, 0x0e, 0xe9, 0x6f, 0xba, 0x45, 0xde, 0x69, 0x8b, 0x14, - 0x77, 0x7f, 0xc6, 0x30, 0xd0, 0x2e, 0x10, 0x09, 0x6d, 0x07, 0x8b, 0x9f, - 0x18, 0x33, 0x9d, 0x18, 0x10, 0xb9, 0x74, 0xa6, 0x58, 0x8c, 0xfe, 0xde, - 0xfe, 0xff, 0x40, 0x78, 0xc0, 0xe4, 0x23, 0xb0, 0x67, 0xf3, 0x2a, 0x15, - 0xbe, 0xb7, 0xc1, 0x20, 0x6b, 0x8f, 0x5e, 0xcd, 0x91, 0x6a, 0xcc, 0xc3, - 0xa0, 0xd8, 0x06, 0x12, 0xb5, 0xde, 0xe2, 0x4f, 0x34, 0x81, 0x74, 0xbd, - 0x3e, 0x8e, 0xd3, 0xd2, 0x5b, 0xe2, 0x85, 0xdc, 0xa6, 0x25, 0x3c, 0xb8, - 0x45, 0x0f, 0x93, 0x3d, 0xcc, 0xfc, 0x37, 0x23, 0x1d, 0x07, 0x8a, 0x76, - 0x0b, 0x2e, 0x96, 0x61, 0xa2, 0x0e, 0xca, 0xa0, 0xd6, 0x63, 0x2b, 0xdf, - 0xb9, 0x26, 0x05, 0xc5, 0x65, 0x87, 0xe2, 0xc4, 0xc3, 0x7f, 0x9a, 0x68, - 0xc3, 0x06, 0x85, 0xa1, 0x7f, 0x78, 0xca, 0x66, 0x4b, 0x0a, 0x10, 0x24, - 0xdf, 0x55, 0x74, 0xfb, 0x50, 0x3c, 0x31, 0xaa, 0x9a, 0x65, 0xc6, 0xef, - 0xf5, 0xaf, 0xd3, 0xfb, 0x1b, 0x58, 0x8d, 0xde, 0x90, 0x16, 0x0f, 0x35, - 0xe8, 0xcc, 0x1e, 0x0e, 0xe7, 0xd5, 0x4f, 0xa6, 0xed, 0x0e, 0x1f, 0x2b, - 0x0b, 0x2d, 0x11, 0x2e, 0x9a, 0x54, 0x1f, 0x0a, 0xcc, 0x97, 0x2d, 0x81, - 0xb7, 0x54, 0xea, 0x53, 0xa1, 0xa4, 0x78, 0x99, 0x89, 0xbf, 0x71, 0x05, - 0xdb, 0xc7, 0xdf, 0x2d, 0x37, 0x4e, 0x48, 0xb2, 0x8b, 0xdf, 0xaa, 0x2e, - 0x50, 0x16, 0x10, 0x31, 0x03, 0x00, 0x95, 0xab, 0x6d, 0x68, 0xfb, 0xc3, - 0xf4, 0x36, 0xcb, 0xec, 0xce, 0xea, 0x6b, 0x72, 0x66, 0x65, 0x35, 0x21, - 0x0a, 0x87, 0xd0, 0xf6, 0x11, 0xab, 0x20, 0x30, 0xe5, 0xdc, 0x09, 0x8f, - 0x23, 0xe3, 0x0d, 0xe2, 0xac, 0xdc, 0x5f, 0x1f, 0x68, 0x58, 0xda, 0xf9, - 0x06, 0x4a, 0x2e, 0x99, 0x68, 0xfc, 0x82, 0x5c, 0xf1, 0xee, 0xbd, 0x0d, - 0x67, 0x0a, 0x9e, 0x10, 0x1d, 0xb9, 0xcf, 0xac, 0xff, 0x47, 0x7a, 0x14, - 0x13, 0x4c, 0x56, 0xe0, 0xbe, 0x8c, 0xfa, 0x19, 0xf9, 0x01, 0x79, 0x64, - 0xea, 0xc4, 0x09, 0x86, 0x79, 0x47, 0xe9, 0xe4, 0x57, 0x6e, 0x1c, 0x1c, - 0x5d, 0x45, 0x33, 0xa3, 0x20, 0xaf, 0xf7, 0x33, 0x82, 0x3f, 0xbf, 0xdb, - 0x08, 0xad, 0x32, 0xdb, 0x02, 0xbf, 0xff, 0x03, 0x58, 0xdb, 0x44, 0x62, - 0x96, 0xb4, 0x59, 0x4c, 0xb1, 0x40, 0xa7, 0x98, 0x0d, 0xb7, 0x6e, 0xfe, - 0x68, 0xa9, 0x3c, 0xe5, 0x05, 0x51, 0x14, 0xc2, 0xf1, 0x6d, 0x53, 0x50, - 0x47, 0x5b, 0xa1, 0x3d, 0x49, 0x1c, 0x2c, 0xde, 0x4b, 0x29, 0xa1, 0x07, - 0x2c, 0x51, 0x3e, 0x06, 0x2e, 0xdf, 0x86, 0xa2, 0x36, 0xd8, 0x5c, 0xa0, - 0x51, 0x98, 0x28, 0xfc, 0x01, 0x59, 0x99, 0xd1, 0x48, 0x29, 0xef, 0xa2, - 0x99, 0xa6, 0x2d, 0x5e, 0x83, 0xd3, 0x88, 0xa6, 0xd7, 0x2b, 0x38, 0xc9, - 0x58, 0x27, 0xcd, 0x9c, 0x44, 0xd8, 0x9e, 0xbd, 0x70, 0xb8, 0x74, 0x12, - 0x00, 0xb3, 0xa7, 0x63, 0x65, 0xac, 0x0f, 0xba, 0xd0, 0xc2, 0x19, 0x37, - 0x97, 0xd3, 0x3f, 0x58, 0x2b, 0x98, 0x17, 0x2d, 0x39, 0x3f, 0x35, 0xeb, - 0xae, 0x89, 0x8a, 0x50, 0x9f, 0x01, 0xf1, 0x10, 0x59, 0x32, 0x9e, 0x87, - 0x59, 0x9c, 0x11, 0xc1, 0x5c, 0x41, 0xad, 0x94, 0xe6, 0x98, 0x95, 0x30, - 0x8f, 0x6a, 0xf8, 0x6c, 0x78, 0x62, 0xc4, 0x6c, 0xca, 0x9b, 0xc5, 0xfb, - 0x2f, 0x84, 0x33, 0x89, 0xf1, 0x40, 0x2e, 0x8e, 0xe0, 0x91, 0xa0, 0x30, - 0x1a, 0x84, 0xe8, 0x47, 0x4e, 0xd1, 0xfb, 0xd2, 0xfb, 0x22, 0x8d, 0x33, - 0x2e, 0xa1, 0xe1, 0x73, 0x7c, 0x8b, 0x50, 0xa1, 0x7c, 0xcc, 0x4b, 0x09, - 0xc5, 0xaf, 0xb0, 0x39, 0xae, 0xe4, 0xa7, 0x04, 0x73, 0xcc, 0xab, 0xb2, - 0xd1, 0xee, 0xef, 0xfe, 0x3f, 0x6e, 0x13, 0xa2, 0xab, 0xf5, 0xaf, 0x4a, - 0x70, 0x74, 0x98, 0x37, 0xa3, 0x03, 0x03, 0x94, 0x10, 0x8b, 0x52, 0x39, - 0xed, 0xfd, 0x6c, 0x01, 0x4e, 0x53, 0x57, 0x8c, 0xc6, 0x2e, 0xeb, 0xac, - 0xe9, 0x3f, 0xff, 0x5e, 0x15, 0x52, 0xbe, 0x6a, 0xdb, 0xcf, 0xc7, 0x13, - 0x94, 0xe1, 0x1c, 0x26, 0x23, 0xab, 0x19, 0x35, 0xbe, 0x4c, 0x65, 0xbf, - 0x30, 0x2e, 0xf8, 0x17, 0x91, 0x2c, 0x3c, 0x81, 0xc7, 0x8f, 0x16, 0x3c, - 0x52, 0xd1, 0x6b, 0x38, 0xd4, 0xc6, 0xc7, 0x2e, 0xc6, 0x71, 0x57, 0x90, - 0x39, 0xaa, 0x1d, 0x68, 0xaf, 0xc1, 0x8a, 0x0e, 0xf2, 0x0c, 0xd1, 0x69, - 0xf0, 0x78, 0xd3, 0x70, 0x53, 0x1e, 0x06, 0xfc, 0x5c, 0xe9, 0x27, 0x9c, - 0x76, 0xf5, 0xde, 0x44, 0x4a, 0x24, 0x74, 0x00, 0xe4, 0x77, 0x9a, 0x5d, - 0xda, 0x3a, 0xad, 0x72, 0x0a, 0xb0, 0x82, 0x88, 0xd8, 0x3f, 0x5d, 0x0f, - 0xbe, 0x17, 0xd5, 0x40, 0xb4, 0xe9, 0x09, 0xc1, 0x3d, 0x66, 0xad, 0xa6, - 0x09, 0x93, 0xb7, 0xca, 0x28, 0x7f, 0x73, 0xb3, 0xdc, 0xad, 0xb9, 0x8d, - 0x69, 0x12, 0x2d, 0x9b, 0xfe, 0x3e, 0x5b, 0x4a, 0x3e, 0x5a, 0x92, 0xb2, - 0x92, 0x15, 0x1f, 0xed, 0x3a, 0x56, 0xc4, 0xcd, 0x45, 0x12, 0x0f, 0xa6, - 0x0e, 0xab, 0x7e, 0x37, 0x8e, 0x2b, 0x7d, 0x18, 0x2c, 0x36, 0x01, 0x50, - 0xdb, 0xf6, 0x5b, 0x4c, 0xfa, 0x9c, 0x51, 0xfa, 0x96, 0xd0, 0xa9, 0x9c, - 0x8f, 0x8b, 0xe8, 0xbc, 0x3d, 0x0f, 0x37, 0x8d, 0x58, 0xb5, 0xa5, 0x1f, - 0x1a, 0x5c, 0x5e, 0x17, 0x37, 0x90, 0x30, 0x44, 0xd3, 0x28, 0x39, 0x87, - 0xfb, 0x38, 0x1d, 0x6b, 0x93, 0x78, 0xff, 0xa9, 0x18, 0x95, 0xd1, 0xf2, - 0xc7, 0xd8, 0x86, 0x01, 0x9d, 0x4a, 0x8e, 0x60, 0x6a, 0x27, 0xd5, 0x01, - 0x77, 0x03, 0x66, 0x7f, 0x72, 0xc8, 0xf0, 0xb3, 0x5f, 0xb9, 0x95, 0x53, - 0xdc, 0x31, 0x44, 0x8d, 0xf5, 0x30, 0x52, 0x8d, 0x10, 0x2d, 0xa9, 0x1f, - 0x27, 0x62, 0x33, 0x11, 0x47, 0x99, 0xc3, 0x0d, 0x5c, 0xe4, 0x31, 0x3e, - 0x1c, 0x89, 0x9b, 0xcd, 0x3f, 0xf7, 0x51, 0x8b, 0xd5, 0x67, 0xb4, 0x80, - 0x7a, 0x0e, 0xbe, 0xa2, 0xe0, 0x3c, 0xe7, 0x03, 0xd0, 0x9e, 0x4d, 0xc9, - 0xbb, 0x5e, 0x5b, 0x31, 0x99, 0xa4, 0x60, 0x64, 0xa7, 0xf4, 0x1c, 0xee, - 0xe4, 0x42, 0xea, 0x17, 0xa5, 0xeb, 0xb6, 0x7b, 0xf0, 0x7b, 0x1a, 0xfd, - 0x22, 0x26, 0x71, 0xf6, 0x4c, 0x21, 0xdc, 0x50, 0xf0, 0x92, 0x70, 0x4b, - 0xa9, 0x17, 0xe3, 0x35, 0x7b, 0x99, 0x75, 0x40, 0x73, 0x46, 0x3d, 0x6b, - 0x00, 0x3a, 0x6e, 0x74, 0x9e, 0x26, 0x7f, 0x2a, 0x05, 0x8c, 0x59, 0x9b, - 0xe1, 0x41, 0x7a, 0xbc, 0x16, 0x74, 0x84, 0xda, 0x70, 0x1b, 0xb1, 0xc6, - 0x9d, 0x8f, 0xc3, 0x3b, 0x72, 0x76, 0xa8, 0x74, 0xe2, 0x34, 0x39, 0x10, - 0x46, 0xf3, 0xc0, 0xc0, 0xdd, 0x8f, 0x5c, 0xeb, 0xdd, 0x68, 0x85, 0xca, - 0x85, 0x83, 0x7f, 0xaa, 0xbb, 0x25, 0x0e, 0x62, 0x49, 0x0a, 0x81, 0x6a, - 0xe3, 0xc9, 0x32, 0x3a, 0x7e, 0x18, 0x96, 0xca, 0xc3, 0xb4, 0xe7, 0xec, - 0x40, 0x48, 0x0b, 0x30, 0xce, 0x14, 0x3c, 0x48, 0xd9, 0xfa, 0xb2, 0xc2, - 0x6b, 0x20, 0x9e, 0x05, 0x59, 0x80, 0xe8, 0x11, 0xcc, 0xf2, 0x69, 0xd4, - 0x57, 0x56, 0x1b, 0x55, 0x21, 0x7d, 0xa2, 0xe7, 0x23, 0x69, 0xf9, 0x05, - 0x57, 0x91, 0x4b, 0x17, 0x4c, 0x44, 0x13, 0x16, 0x7c, 0x86, 0x93, 0x64, - 0x3e, 0x7c, 0x25, 0xd3, 0x7e, 0x48, 0x34, 0x10, 0xb1, 0x06, 0x67, 0xdc, - 0xac, 0x29, 0xc9, 0x24, 0xa5, 0x09, 0xfd, 0xce, 0x40, 0xdf, 0x8e, 0xc8, - 0xa0, 0xf3, 0xd1, 0xc0, 0x76, 0x9c, 0x3c, 0xb5, 0x22, 0xf3, 0xd2, 0xc3, - 0xde, 0xed, 0x1f, 0x15, 0xfd, 0xe2, 0x47, 0xec, 0xd8, 0x5b, 0x3e, 0x41, - 0x1a, 0xa6, 0xa9, 0xef, 0x74, 0xd4, 0xb4, 0x40, 0x2a, 0xa9, 0x91, 0x03, - 0x09, 0x5e, 0x0c, 0xb3, 0xbc, 0xa8, 0x7a, 0x25, 0x7b, 0xc1, 0x7f, 0x91, - 0x4a, 0xb1, 0x4a, 0xf4, 0x71, 0xe0, 0x29, 0x62, 0x85, 0x98, 0x1f, 0x76, - 0x41, 0xa5, 0x7a, 0xd9, 0xe4, 0x3f, 0x5c, 0xd9, 0xa2, 0x03, 0xb0, 0x2e, - 0xd1, 0x70, 0x40, 0x46, 0x8d, 0x5c, 0x8e, 0x1e, 0xd9, 0x4f, 0xeb, 0x38, - 0x5b, 0xd9, 0x49, 0x95, 0xe4, 0xc9, 0x89, 0x94, 0x63, 0xf8, 0x5a, 0x10, - 0x00, 0xc9, 0xba, 0x2b, 0x1b, 0xb7, 0xe2, 0xfb, 0x4b, 0xf1, 0xf3, 0x0e, - 0x54, 0x3f, 0x4e, 0xe7, 0x79, 0xc9, 0x4f, 0x48, 0x73, 0xb1, 0xcf, 0x90, - 0x29, 0x1a, 0xb2, 0xd2, 0xa6, 0x8f, 0xc0, 0x4d, 0x8c, 0x2b, 0xb9, 0xc7, - 0x8e, 0xc8, 0x07, 0x23, 0x3e, 0x53, 0x13, 0xd9, 0x91, 0x2d, 0xff, 0x2e, - 0xa6, 0xab, 0x4f, 0x07, 0x40, 0xaa, 0x7d, 0xe8, 0xb6, 0x3e, 0x6f, 0x2a, - 0x41, 0xe3, 0x5d, 0x29, 0x8f, 0x3b, 0x78, 0x41, 0x84, 0x3e, 0xb1, 0x99, - 0x7b, 0xf3, 0x27, 0x4a, 0x03, 0x59, 0x8e, 0x11, 0x48, 0x49, 0x9f, 0xac, - 0x69, 0xfa, 0xd6, 0xa4, 0x6f, 0x89, 0x4f, 0xfa, 0xa4, 0xe4, 0xd8, 0x44, - 0x57, 0xcc, 0x46, 0xf9, 0x19, 0x8a, 0x0f, 0x83, 0xd1, 0x31, 0xc5, 0x87, - 0x83, 0x6b, 0x97, 0x22, 0x50, 0x6c, 0x29, 0x83, 0xdd, 0xc4, 0x3d, 0x7e, - 0x60, 0x5e, 0x71, 0x0c, 0x6f, 0x9a, 0x7c, 0x81, 0x21, 0x38, 0x8d, 0xad, - 0xd9, 0x3e, 0x86, 0xbe, 0x81, 0xe1, 0x24, 0x49, 0x50, 0xc3, 0xb6, 0x7f, - 0xf4, 0x5a, 0x84, 0xe5, 0xc1, 0x91, 0xb4, 0x42, 0xd0, 0x4f, 0xd7, 0xd2, - 0xb1, 0x57, 0x41, 0x03, 0x68, 0xa9, 0x0b, 0xc9, 0x4d, 0x3f, 0x01, 0xe6, - 0x2e, 0xab, 0xe2, 0x3b, 0x67, 0x54, 0x51, 0x9f, 0x24, 0x2f, 0xc3, 0x7c, - 0x7b, 0xd0, 0xf6, 0xf7, 0xad, 0x92, 0x16, 0x56, 0xe8, 0xa8, 0xea, 0xbf, - 0xa6, 0x18, 0x7e, 0xbd, 0x4a, 0xc6, 0x9b, 0x76, 0xda, 0x4f, 0x13, 0x04, - 0x63, 0xe8, 0xe0, 0x2f, 0x9f, 0x93, 0x65, 0x57, 0x8f, 0x4c, 0x84, 0x59, - 0xd6, 0x4c, 0x75, 0x91, 0x97, 0xc2, 0x95, 0x4c, 0x9f, 0xc6, 0xc4, 0x38, - 0x24, 0x4e, 0xe1, 0xea, 0x6b, 0x2f, 0x5e, 0xe3, 0x70, 0x6a, 0xc6, 0xa8, - 0x62, 0xc1, 0xe6, 0xa8, 0x72, 0x8c, 0xd9, 0x4b, 0x93, 0xfe, 0xf3, 0xcb, - 0x44, 0x45, 0xc1, 0x74, 0x5e, 0xb0, 0x6a, 0xbb, 0xfb, 0x36, 0xe6, 0xa9, - 0x38, 0xa8, 0xf3, 0x34, 0x56, 0x29, 0x88, 0xeb, 0x76, 0x73, 0x9c, 0x79, - 0x9b, 0xe5, 0xe7, 0xbc, 0x3e, 0x8c, 0xe9, 0x6d, 0x21, 0xaa, 0xd0, 0xde, - 0xf9, 0xed, 0xbd, 0xc1, 0x25, 0x13, 0x58, 0x43, 0x3d, 0x78, 0x2b, 0x67, - 0x3f, 0x89, 0x43, 0x4f, 0xb0, 0x5b, 0x84, 0x0c, 0x6b, 0x3c, 0x71, 0xc9, - 0x7f, 0xe8, 0xf1, 0x3e, 0x17, 0xcd, 0x55, 0xf2, 0x7b, 0x5f, 0x51, 0x52, - 0x52, 0xe8, 0xb1, 0x0f, 0xad, 0x35, 0x73, 0xfe, 0x08, 0xe7, 0xba, 0xda, - 0x79, 0x51, 0xec, 0x89, 0x7a, 0x08, 0x48, 0x96, 0xd9, 0x89, 0xf7, 0xa1, - 0x50, 0x8d, 0x30, 0x9a, 0x74, 0xb4, 0x2e, 0xbc, 0x0d, 0xa4, 0x6a, 0xba, - 0x06, 0x5a, 0x19, 0xc6, 0x01, 0x3e, 0x33, 0x85, 0xa4, 0xa4, 0x44, 0xe7, - 0x18, 0x4e, 0x01, 0xcb, 0xf0, 0xc7, 0xe3, 0xae, 0x9c, 0x88, 0xa2, 0xc0, - 0xd7, 0xc6, 0x9f, 0x54, 0x0c, 0xa4, 0xb3, 0xb1, 0xaf, 0x15, 0x21, 0xa6, - 0x5d, 0xe3, 0x60, 0xef, 0xec, 0x08, 0xcd, 0x08, 0xff, 0xd7, 0x6b, 0xa2, - 0x3d, 0x49, 0x5d, 0x71, 0xe9, 0x0f, 0xf4, 0xca, 0x4e, 0xd3, 0xfe, 0x9d, - 0x2f, 0xf4, 0x11, 0x28, 0xbf, 0xa4, 0xc2, 0x9d, 0xe8, 0xb1, 0x3e, 0xc5, - 0xfd, 0xe7, 0xa1, 0xb7, 0x0a, 0x45, 0xb9, 0xd7, 0x6a, 0x51, 0x91, 0x1f, - 0x68, 0xbf, 0xf9, 0xf9, 0xdd, 0x64, 0x3f, 0xf6, 0x50, 0x18, 0x72, 0xc2, - 0xc2, 0x17, 0x01, 0x50, 0x3f, 0x8a, 0x23, 0x3b, 0x3b, 0x54, 0x7a, 0x23, - 0xd4, 0x86, 0xe1, 0xc1, 0x0e, 0xdb, 0x8b, 0xcc, 0x34, 0xd2, 0x4c, 0x7b, - 0x76, 0xb1, 0x24, 0x65, 0x59, 0xc9, 0xa6, 0x08, 0x1f, 0x86, 0xb5, 0x50, - 0xdb, 0x67, 0xca, 0xa2, 0x7b, 0x9d, 0x6d, 0x53, 0x57, 0xca, 0x52, 0x67, - 0xf6, 0x4c, 0x15, 0xcf, 0x42, 0x63, 0x57, 0x54, 0x2e, 0xd6, 0xf1, 0x3f, - 0x70, 0x60, 0x85, 0xdf, 0x9a, 0xc7, 0x90, 0x98, 0x49, 0x08, 0x4c, 0x9b, - 0x5a, 0xb0, 0xc8, 0x5e, 0x5b, 0x35, 0xb4, 0x5a, 0x12, 0x49, 0x16, 0x6a, - 0x97, 0x12, 0x27, 0x0b, 0xf1, 0x2d, 0x47, 0x80, 0xe5, 0x51, 0x2b, 0x33, - 0x05, 0x98, 0xfc, 0xed, 0xfe, 0x7c, 0x74, 0xbb, 0xa0, 0xf1, 0x18, 0xa5, - 0xf2, 0x25, 0x17, 0xb0, 0x29, 0x77, 0x00, 0xfe, 0xaf, 0x28, 0x09, 0x00, - 0x57, 0x6b, 0x16, 0x20, 0x78, 0xa8, 0xf5, 0x79, 0x90, 0x8e, 0xc1, 0x24, - 0x7f, 0xba, 0x10, 0xf9, 0x00, 0xc0, 0x7b, 0xf9, 0xe2, 0x0b, 0x62, 0xb6, - 0xee, 0xd2, 0x70, 0xfb, 0x0d, 0xe7, 0x34, 0x47, 0xcf, 0x1a, 0xe5, 0x15, - 0x4e, 0x8e, 0xd9, 0xf8, 0xbe, 0x27, 0xf4, 0x92, 0x24, 0x45, 0xf8, 0xa2, - 0x10, 0x1d, 0x22, 0xaa, 0x12, 0x1a, 0xec, 0x0f, 0xf7, 0xcf, 0x52, 0xac, - 0xc5, 0x4c, 0xb7, 0x0e, 0xde, 0x1a, 0xc3, 0x3f, 0xe2, 0x94, 0x91, 0xbe, - 0x20, 0x3a, 0x34, 0xb7, 0xa2, 0x5f, 0x2e, 0x58, 0xaa, 0x10, 0xdd, 0x7b, - 0xb5, 0xf2, 0x2b, 0x8b, 0x26, 0x75, 0x67, 0xc8, 0x4a, 0xb8, 0xb1, 0x6f, - 0x96, 0x77, 0x8d, 0x4a, 0x6b, 0xf4, 0x81, 0x31, 0xa2, 0x4a, 0x2f, 0x2c, - 0x07, 0xdd, 0x13, 0x9e, 0xd4, 0x40, 0x49, 0x93, 0x41, 0x2b, 0x57, 0x12, - 0x4b, 0x15, 0xeb, 0x8c, 0x9e, 0xce, 0xf5, 0xe6, 0x14, 0xbb, 0x31, 0x54, - 0xcd, 0x14, 0xe2, 0x5b, 0xc1, 0x2e, 0xbf, 0xa1, 0x67, 0x53, 0xd2, 0x74, - 0x14, 0xd1, 0x24, 0xfe, 0x9d, 0xcd, 0x24, 0x9a, 0x5f, 0xa9, 0x86, 0x5c, - 0xff, 0xb1, 0xd6, 0x27, 0x47, 0x01, 0x36, 0xdf, 0x48, 0x7c, 0xc8, 0x71, - 0xfd, 0x3d, 0x60, 0xb8, 0xac, 0x02, 0xed, 0xb1, 0xdb, 0x42, 0xe8, 0x6a, - 0xd3, 0x17, 0xdc, 0x32, 0x79, 0x1b, 0xc4, 0x04, 0x89, 0xab, 0x18, 0xc5, - 0x3f, 0x23, 0xc1, 0x58, 0x08, 0x30, 0xc5, 0x7c, 0x4b, 0x6e, 0xd8, 0x06, - 0xc2, 0xa6, 0x1b, 0xe7, 0x21, 0xb4, 0x9c, 0x5c, 0xcf, 0x55, 0x28, 0x6e, - 0xa2, 0xd1, 0xda, 0x5a, 0xd6, 0x7c, 0x39, 0x11, 0x6f, 0x80, 0xd1, 0xab, - 0xe2, 0x09, 0x0f, 0xe4, 0x6e, 0xc2, 0x42, 0x2e, 0xa6, 0x46, 0x55, 0x2f, - 0x96, 0x65, 0xe7, 0x20, 0x9f, 0x28, 0xc7, 0x1b, 0xe7, 0x22, 0xc0, 0x6a, - 0x26, 0x90, 0x0f, 0x59, 0xd1, 0xc6, 0x6a, 0xef, 0xef, 0x9d, 0x7d, 0xb1, - 0x2c, 0xee, 0x4e, 0x87, 0x87, 0x28, 0x2e, 0x77, 0x37, 0xbc, 0xc6, 0x59, - 0xbc, 0x24, 0xe4, 0x58, 0xfc, 0x5b, 0x9d, 0xdf, 0x96, 0xf7, 0x90, 0x2e, - 0x41, 0x94, 0xdf, 0xf6, 0xe0, 0x23, 0x9d, 0xe0, 0x6c, 0xd4, 0xf2, 0x41, - 0x22, 0x98, 0x4b, 0xd9, 0xb0, 0x32, 0x09, 0xfa, 0xde, 0x9c, 0xbf, 0xea, - 0x10, 0x55, 0x14, 0x7c, 0x83, 0xa1, 0xc8, 0xd2, 0x41, 0x81, 0x5c, 0x0b, - 0xe5, 0xa0, 0x9d, 0x6e, 0x32, 0x91, 0x59, 0x80, 0x9f, 0x4c, 0xea, 0xf4, - 0x4d, 0x08, 0xd0, 0x69, 0x07, 0xd3, 0xa8, 0x9f, 0x91, 0x16, 0x6e, 0x7d, - 0xf4, 0xc5, 0xb1, 0xea, 0x51, 0xda, 0x33, 0x6c, 0xb2, 0xf2, 0x55, 0x5f, - 0xaa, 0x18, 0x28, 0x0f, 0xae, 0x27, 0x89, 0x9d, 0xf3, 0x64, 0x66, 0xe8, - 0xc8, 0xa2, 0x8e, 0xfc, 0xeb, 0x29, 0x85, 0x53, 0x14, 0x51, 0x18, 0x24, - 0x15, 0xd9, 0x50, 0x5d, 0x79, 0x62, 0x38, 0x87, 0xb8, 0x0f, 0xf5, 0xec, - 0x4e, 0xd8, 0x38, 0x62, 0x84, 0x26, 0x29, 0xcc, 0x12, 0x4b, 0xde, 0xf1, - 0x8f, 0xe4, 0xc3, 0xbc, 0x1f, 0xc0, 0xa5, 0x0b, 0x8b, 0x2d, 0xec, 0x56, - 0xa6, 0x2c, 0xe9, 0x6c, 0x0a, 0xf2, 0x26, 0x68, 0x27, 0xa5, 0xc7, 0xbd, - 0xb3, 0x73, 0x14, 0x1e, 0x08, 0xd0, 0x91, 0xda, 0x7b, 0x31, 0x0f, 0x9d, - 0x47, 0x1d, 0xc9, 0x5e, 0x28, 0x49, 0x40, 0xa7, 0xa6, 0x8c, 0x0f, 0x9e, - 0x5f, 0x7e, 0xbd, 0x79, 0x6d, 0x6d, 0x16, 0xb6, 0xd9, 0xca, 0xd8, 0xbc, - 0xf3, 0x77, 0x6b, 0xc1, 0xa1, 0x85, 0x35, 0x92, 0x92, 0xcf, 0x3d, 0xec, - 0x60, 0xf7, 0x70, 0x7c, 0x1b, 0x2d, 0xfa, 0x3d, 0x48, 0xf1, 0xae, 0xab, - 0x27, 0xe8, 0xcf, 0x85, 0x41, 0x46, 0x0c, 0xc8, 0x59, 0x23, 0xee, 0x4d, - 0xda, 0x19, 0x18, 0x6f, 0x83, 0x65, 0x18, 0x06, 0xe8, 0xf6, 0x19, 0x22, - 0xc9, 0x8e, 0x8a, 0xa0, 0xd4, 0x89, 0x93, 0xe2, 0x5a, 0x34, 0x0f, 0xc4, - 0xfe, 0x34, 0x8a, 0x29, 0xc3, 0x47, 0xf0, 0x1c, 0x2e, 0xf7, 0x61, 0xbf, - 0x04, 0x04, 0x51, 0x19, 0x57, 0x41, 0x50, 0x0f, 0xff, 0x57, 0x7c, 0x2a, - 0x0a, 0xd7, 0x51, 0x39, 0x0c, 0x98, 0x5f, 0xca, 0xe5, 0xd7, 0x8d, 0xe4, - 0x5f, 0x1b, 0x09, 0x8c, 0x1c, 0x7f, 0xf9, 0x74, 0x72, 0x40, 0xa7, 0x6d, - 0x74, 0x88, 0x82, 0xa9, 0xa7, 0xbe, 0x89, 0x26, 0xd5, 0x1e, 0x28, 0x91, - 0x13, 0x7c, 0x06, 0x3e, 0x3c, 0xc8, 0xe3, 0x95, 0x63, 0xee, 0xea, 0xe8, - 0xfc, 0x3b, 0x97, 0xba, 0xd9, 0x84, 0xc8, 0x0e, 0x5e, 0x4a, 0x62, 0x72, - 0x84, 0xed, 0x70, 0x8f, 0xd0, 0x26, 0x5f, 0x66, 0x0a, 0x36, 0x1b, 0xf1, - 0xf9, 0x98, 0x10, 0x0f, 0xac, 0xf5, 0x7f, 0xa6, 0xe7, 0x84, 0x06, 0xc2, - 0xdb, 0x94, 0xc2, 0x66, 0x4f, 0x27, 0xc2, 0xad, 0xe9, 0x44, 0xc7, 0x85, - 0x79, 0x9e, 0x85, 0x3b, 0x50, 0x72, 0x3f, 0xd3, 0xa4, 0x10, 0xe9, 0x06, - 0x2a, 0x5a, 0xe1, 0x40, 0x11, 0xa1, 0x0f, 0x3c, 0xca, 0x3a, 0x7c, 0x15, - 0xa2, 0xfe, 0x68, 0x6c, 0x3b, 0xfa, 0x4b, 0x04, 0x0e, 0xa2, 0x28, 0x52, - 0x2b, 0x3d, 0x26, 0x9c, 0xa5, 0x65, 0x4e, 0xbe, 0x59, 0xdc, 0x77, 0x9d, - 0x3c, 0xa7, 0xe2, 0xcb, 0x19, 0xf0, 0xb5, 0xa0, 0x63, 0x77, 0xa0, 0x9e, - 0x57, 0x3c, 0x1a, 0x9d, 0x98, 0x87, 0x0f, 0x3a, 0x23, 0x23, 0x82, 0x21, - 0xd3, 0x17, 0x70, 0x26, 0x48, 0x9b, 0x98, 0x05, 0x05, 0x46, 0x4a, 0xa5, - 0x12, 0x35, 0x80, 0x31, 0x84, 0xd7, 0x22, 0xa3, 0xb4, 0x02, 0xbe, 0x00, - 0x11, 0xfa, 0xf8, 0xc5, 0xa6, 0x5a, 0x73, 0x96, 0xb8, 0xd4, 0x28, 0x6e, - 0x5c, 0xd8, 0x77, 0x60, 0xa9, 0x17, 0xd2, 0xf9, 0x61, 0x0b, 0x08, 0x8c, - 0x0c, 0xfa, 0x54, 0x02, 0xfb, 0xad, 0xe5, 0x36, 0x00, 0x9a, 0x20, 0xa7, - 0x25, 0xcb, 0x7d, 0x51, 0x98, 0xbb, 0x66, 0x2a, 0x28, 0xe0, 0xb0, 0xfe, - 0xae, 0xe7, 0xca, 0x45, 0x5c, 0xd6, 0xfb, 0x63, 0x3b, 0x9a, 0x94, 0x8b, - 0x58, 0x99, 0x25, 0x09, 0xe2, 0x9a, 0x1e, 0xca, 0xc9, 0x9f, 0x05, 0x0b, - 0x9d, 0xff, 0xc8, 0x7c, 0xc0, 0x05, 0x85, 0x45, 0x14, 0x0f, 0xdc, 0x67, - 0x0d, 0xc2, 0x58, 0xbf, 0x38, 0x5a, 0x73, 0x3b, 0x14, 0x7f, 0xca, 0x09, - 0x17, 0x1d, 0xac, 0x25, 0x77, 0x92, 0x68, 0x49, 0x0e, 0x7a, 0x14, 0xaf, - 0x6e, 0x43, 0xaf, 0x08, 0xba, 0x29, 0xd9, 0x61, 0x78, 0x33, 0x87, 0x49, - 0xf9, 0x39, 0x0a, 0x0d, 0x51, 0x1a, 0x80, 0xf1, 0x2c, 0x69, 0x8d, 0x71, - 0x44, 0xf9, 0x5b, 0x43, 0xc1, 0x90, 0x35, 0xc4, 0x0b, 0x51, 0xd5, 0xc3, - 0x27, 0x77, 0xae, 0xc7, 0x8e, 0x4c, 0x43, 0x94, 0xf1, 0x82, 0x53, 0x74, - 0x80, 0xc4, 0xc3, 0xf6, 0xe5, 0xee, 0x87, 0x0f, 0xad, 0xe4, 0xfa, 0x2d, - 0x80, 0xc8, 0xf8, 0x5c, 0x67, 0x5b, 0xbb, 0x82, 0x0a, 0x4d, 0x0c, 0x73, - 0xea, 0xf9, 0x77, 0xde, 0x84, 0x3f, 0xd7, 0xa3, 0x80, 0x25, 0x7e, 0xfa, - 0xae, 0xd7, 0x2f, 0xa5, 0x7c, 0x1c, 0xdd, 0xcd, 0x62, 0x37, 0xdd, 0xe8, - 0x02, 0x6d, 0xd7, 0x43, 0x7b, 0x73, 0xea, 0x9f, 0xfe, 0xce, 0xf6, 0x18, - 0xbc, 0x16, 0xfb, 0xcb, 0x95, 0x78, 0x9f, 0x8d, 0x86, 0x70, 0xdd, 0x48, - 0x43, 0xe4, 0x11, 0xb9, 0x8c, 0xae, 0x7b, 0xc8, 0x52, 0xe9, 0xdc, 0xbf, - 0x3e, 0x3d, 0xc0, 0xcb, 0x4a, 0x1f, 0x03, 0x58, 0xe4, 0xec, 0x52, 0x66, - 0xcb, 0x1b, 0xcc, 0x55, 0x51, 0xed, 0xff, 0x57, 0x32, 0x94, 0x5f, 0x92, - 0xa4, 0x01, 0xa0, 0x7e, 0xe8, 0x59, 0x52, 0x85, 0xd8, 0x6b, 0x85, 0x7c, - 0xdd, 0x7a, 0x51, 0x24, 0x0b, 0x60, 0x8f, 0x6d, 0x36, 0xf6, 0x82, 0x19, - 0x04, 0xdb, 0xf0, 0x86, 0x11, 0x54, 0x9a, 0x2c, 0xed, 0x65, 0x98, 0xde, - 0x0e, 0x66, 0xfc, 0xa1, 0x6c, 0x7c, 0xa2, 0xba, 0x8d, 0x44, 0xca, 0xa8, - 0x57, 0x90, 0x6b, 0xc1, 0x93, 0xec, 0xf5, 0x81, 0x6f, 0xd9, 0x5b, 0x87, - 0x62, 0x59, 0x6d, 0xbe, 0x2b, 0xac, 0xd7, 0xdc, 0xd0, 0x1e, 0xfc, 0x84, - 0x73, 0x50, 0x45, 0x7d, 0x18, 0x56, 0x6f, 0xdb, 0xa7, 0xd9, 0x8a, 0x6e, - 0x8f, 0x64, 0xbd, 0x67, 0xe9, 0x7e, 0xec, 0x89, 0x69, 0x8b, 0x8f, 0x16, - 0x16, 0x22, 0x95, 0x67, 0x52, 0x64, 0xb3, 0x2b, 0x05, 0xa1, 0x5e, 0x9d, - 0x15, 0x6c, 0xc3, 0x9a, 0xff, 0x1e, 0xfa, 0x7f, 0x47, 0x04, 0x24, 0xee, - 0xf9, 0x47, 0x31, 0x4e, 0xe3, 0x3f, 0x2b, 0x32, 0x72, 0x4d, 0x77, 0xae, - 0xd4, 0x9d, 0x8a, 0x10, 0x1e, 0x58, 0x80, 0x9e, 0x47, 0x52, 0xa7, 0xff, - 0x2e, 0x8e, 0x8a, 0x16, 0x59, 0x25, 0xd9, 0x73, 0xb6, 0xf3, 0x78, 0x6c, - 0xe7, 0x83, 0x46, 0x45, 0xa1, 0x10, 0x11, 0xc1, 0x9b, 0xe4, 0xb4, 0x76, - 0x39, 0x3c, 0x0c, 0xdb, 0x49, 0x96, 0x62, 0x6c, 0xc4, 0x4a, 0xec, 0xee, - 0x6d, 0x6f, 0x50, 0xdf, 0xf1, 0x94, 0x75, 0xa3, 0x25, 0x93, 0xa0, 0x81, - 0xa8, 0xd4, 0xfb, 0xbe, 0xe3, 0xbd, 0x56, 0x86, 0x58, 0xcb, 0xa7, 0xd5, - 0x97, 0xff, 0x4c, 0xe1, 0xc1, 0x0f, 0x84, 0xb2, 0x96, 0x6e, 0x22, 0x29, - 0x2c, 0x73, 0xf2, 0x70, 0xc2, 0x0a, 0x26, 0x21, 0xb3, 0xf0, 0x7e, 0x3d, - 0xb3, 0x78, 0x34, 0x73, 0x3a, 0x33, 0x86, 0x71, 0x17, 0x6b, 0xd1, 0x63, - 0xb3, 0xa1, 0x34, 0x82, 0xee, 0xa1, 0x0a, 0xa1, 0x77, 0x87, 0xad, 0x2e, - 0x31, 0x0d, 0xb1, 0xdd, 0x6a, 0xe9, 0x2d, 0xec, 0x01, 0xc8, 0x13, 0xc7, - 0x7e, 0x59, 0xa0, 0xf9, 0x71, 0xab, 0xb7, 0x8b, 0xb7, 0x03, 0x42, 0xd2, - 0x05, 0x7a, 0x16, 0x27, 0x73, 0xc8, 0x8c, 0xfb, 0x3d, 0x43, 0x14, 0x76, - 0x89, 0xf9, 0x45, 0xf4, 0x33, 0x24, 0xa2, 0x65, 0xdd, 0xcf, 0x3d, 0x3c, - 0x0d, 0x80, 0xe9, 0x4f, 0x9b, 0xa8, 0x84, 0xc8, 0x63, 0x69, 0xf1, 0x97, - 0xe3, 0x3a, 0x25, 0x5a, 0x82, 0x38, 0xac, 0x00, 0x97, 0x0a, 0x7c, 0x02, - 0x73, 0x6c, 0xf5, 0xd7, 0xa4, 0x7b, 0x03, 0x49, 0x14, 0x75, 0x50, 0xa4, - 0x05, 0xcc, 0xa1, 0x31, 0xab, 0x3f, 0xec, 0xaa, 0x3d, 0x65, 0x83, 0x59, - 0x7b, 0x0d, 0x47, 0x15, 0xf4, 0x27, 0xca, 0x69, 0xad, 0xc0, 0xaf, 0x18, - 0xfe, 0x63, 0xbf, 0x67, 0xd7, 0xb2, 0x90, 0xcc, 0x0d, 0x9d, 0xb2, 0x8e, - 0x8c, 0x7c, 0xdb, 0x62, 0x14, 0xd1, 0xf3, 0x71, 0xb8, 0xb0, 0x62, 0xd2, - 0x9b, 0x48, 0xa2, 0x45, 0x54, 0x3e, 0x51, 0xb4, 0x97, 0x1d, 0x0e, 0xc9, - 0x46, 0x19, 0xbe, 0x12, 0xce, 0xa8, 0x73, 0x1e, 0x60, 0x7b, 0x0f, 0xb3, - 0x9d, 0x9a, 0x3a, 0x69, 0x73, 0x05, 0x5b, 0x77, 0xba, 0xd8, 0xeb, 0x32, - 0x31, 0xa7, 0x9b, 0x89, 0xf5, 0x28, 0x6a, 0xc1, 0x70, 0xdd, 0x38, 0xfc, - 0x87, 0x2d, 0xbc, 0xc8, 0x3b, 0xe4, 0x52, 0xcc, 0xe2, 0x48, 0x97, 0x48, - 0x94, 0x98, 0xa8, 0xd2, 0xd8, 0x60, 0x14, 0x71, 0xda, 0xb9, 0x5e, 0xd7, - 0x1a, 0x9b, 0xcc, 0x48, 0xf0, 0x3e, 0x5d, 0xe1, 0xe5, 0xd7, 0x79, 0x88, - 0x3f, 0xb3, 0xec, 0xa2, 0x6d, 0xc8, 0x5d, 0x3c, 0xe5, 0xf0, 0x26, 0xdc, - 0xad, 0x19, 0x76, 0xaa, 0xdf, 0x4b, 0xee, 0xe7, 0xd9, 0xdb, 0x41, 0x9f, - 0x4d, 0x50, 0xa9, 0x25, 0x72, 0x94, 0x0f, 0x60, 0x3c, 0x25, 0x54, 0x3f, - 0x89, 0xd2, 0x3b, 0x33, 0x45, 0x80, 0x5f, 0x77, 0x49, 0xd1, 0x22, 0x0a, - 0xc0, 0x32, 0xad, 0x64, 0xda, 0xba, 0xf6, 0xa4, 0xf8, 0x06, 0x5e, 0x50, - 0xd7, 0x5a, 0xea, 0x73, 0x14, 0x32, 0xb7, 0xc2, 0x24, 0x2f, 0x75, 0x39, - 0x19, 0xef, 0x48, 0x9c, 0x6e, 0x45, 0x4c, 0xf9, 0xc7, 0xf5, 0x0b, 0x2f, - 0xe7, 0x67, 0x81, 0x9d, 0x05, 0x9c, 0x26, 0x0f, 0x87, 0x24, 0x78, 0x68, - 0x4b, 0x5b, 0xb7, 0xe4, 0x28, 0x63, 0x2d, 0x4b, 0x0a, 0xff, 0x93, 0xda, - 0xe6, 0x3c, 0x59, 0xaa, 0x1c, 0xc5, 0x28, 0x9c, 0x1b, 0x41, 0xd5, 0x48, - 0x93, 0x5e, 0xa4, 0xf7, 0x64, 0x12, 0x54, 0x94, 0xd6, 0xb7, 0xcf, 0xd9, - 0x49, 0x4f, 0xda, 0x1e, 0xd0, 0x7b, 0x80, 0xb0, 0x6f, 0x83, 0xed, 0xc7, - 0x5d, 0x6e, 0x66, 0xb8, 0x7e, 0x04, 0xf8, 0x6d, 0xf5, 0xa4, 0xe0, 0x5c, - 0x4e, 0xa8, 0xa5, 0x91, 0xbe, 0x37, 0xd8, 0x70, 0xff, 0x4f, 0x6d, 0x26, - 0x0b, 0x1a, 0xb6, 0x07, 0x21, 0x6d, 0xee, 0x23, 0xd6, 0x2c, 0x87, 0xfb, - 0x62, 0xa9, 0xe5, 0xff, 0x65, 0x29, 0x54, 0x6d, 0x8c, 0xb1, 0x15, 0x4b, - 0xbd, 0xa7, 0xf9, 0x2f, 0xca, 0xb2, 0x3d, 0x8a, 0x5d, 0xe4, 0x46, 0x11, - 0xb3, 0x63, 0xb8, 0x44, 0x91, 0xfd, 0xbc, 0x33, 0x7d, 0xef, 0xc1, 0x4c, - 0x57, 0x78, 0x69, 0x03, 0x8b, 0x66, 0xa6, 0xf6, 0x93, 0x11, 0x7c, 0x77, - 0x90, 0x65, 0x51, 0xc9, 0xf4, 0xc7, 0x35, 0x6d, 0xa0, 0x63, 0xa4, 0xd5, - 0xaa, 0x92, 0xb1, 0x5e, 0x78, 0xf9, 0xbd, 0x1c, 0x2a, 0x47, 0x70, 0x0b, - 0xf6, 0x98, 0x0d, 0xb0, 0xaf, 0x7e, 0x30, 0x17, 0xf7, 0x5c, 0xe3, 0x77, - 0x1f, 0x52, 0x68, 0xf2, 0xdb, 0xb0, 0x7c, 0x92, 0x7d, 0xfe, 0x4f, 0x41, - 0xfe, 0x74, 0xe7, 0xf6, 0xc9, 0x29, 0x76, 0x9a, 0x69, 0xb2, 0x08, 0x22, - 0x7a, 0x1c, 0xdf, 0x1f, 0xd5, 0x35, 0xaf, 0x32, 0xe5, 0xd8, 0x00, 0xa7, - 0x2a, 0x79, 0xab, 0x16, 0x8c, 0xf3, 0xf2, 0x0a, 0xe4, 0x68, 0x22, 0x3f, - 0x50, 0x25, 0x22, 0x20, 0x06, 0x81, 0x2a, 0x83, 0x4e, 0xd3, 0x74, 0xc6, - 0xfa, 0xa9, 0xed, 0xa5, 0xb8, 0x78, 0x16, 0x50, 0x2d, 0x49, 0x95, 0x47, - 0x62, 0x6a, 0x67, 0x3b, 0x1c, 0x22, 0xb6, 0xb3, 0xed, 0xbc, 0xb2, 0xad, - 0x4f, 0xcd, 0xcf, 0x34, 0xbf, 0x1c, 0xad, 0xe5, 0x45, 0x3d, 0xfa, 0xe2, - 0xa3, 0x3a, 0x77, 0x80, 0x90, 0xfc, 0x47, 0xae, 0xf2, 0xde, 0x3f, 0x02, - 0xdd, 0x0c, 0xc6, 0xa8, 0x61, 0x6f, 0x85, 0xcf, 0x1f, 0xa8, 0xe7, 0x7f, - 0xe5, 0x7c, 0x4b, 0x17, 0xa4, 0x99, 0x28, 0x68, 0x2a, 0x33, 0x29, 0xe7, - 0xb6, 0x26, 0x61, 0x90, 0x47, 0x29, 0x4d, 0x94, 0xd5, 0xe9, 0x5b, 0x47, - 0x59, 0x84, 0x51, 0x39, 0xcd, 0x8b, 0x18, 0x31, 0x07, 0x45, 0xdb, 0x58, - 0xb6, 0x08, 0xd1, 0xd4, 0xc1, 0xbf, 0xfa, 0x31, 0x05, 0x6a, 0xf0, 0xde, - 0x36, 0x19, 0xc0, 0xf9, 0xee, 0xc3, 0xe7, 0x40, 0xfc, 0xb9, 0x09, 0x14, - 0xe1, 0x2d, 0x5e, 0xb8, 0x41, 0x8a, 0x37, 0xbe, 0xea, 0xb5, 0x61, 0xff, - 0xb7, 0x68, 0xe5, 0xa9, 0xde, 0xd2, 0x0c, 0xec, 0x51, 0xfa, 0xe4, 0xe6, - 0xe9, 0xb1, 0x5a, 0xd8, 0x64, 0xb4, 0xa4, 0xf9, 0x0c, 0x90, 0xcb, 0x53, - 0x78, 0x6c, 0x54, 0xa4, 0x29, 0x33, 0xb5, 0xc9, 0xd3, 0x31, 0xa8, 0x68, - 0x07, 0xc4, 0x97, 0x4e, 0x1b, 0x68, 0xe3, 0x64, 0x23, 0x26, 0x4c, 0x44, - 0x6a, 0x7c, 0x61, 0x7a, 0x9e, 0x53, 0x3c, 0x5e, 0x34, 0x6d, 0xb9, 0x91, - 0x12, 0xaa, 0x2d, 0xc3, 0x57, 0x41, 0x4c, 0x37, 0x37, 0xed, 0x17, 0xc3, - 0xf0, 0xc5, 0x74, 0xee, 0x48, 0x9a, 0x96, 0xe6, 0x55, 0xbf, 0x45, 0x86, - 0x2d, 0xf2, 0x8c, 0x5d, 0x2e, 0x5f, 0xf9, 0x7f, 0xdc, 0x3a, 0xe2, 0x14, - 0x9a, 0xc3, 0x9b, 0x68, 0xc8, 0x65, 0x37, 0x7c, 0xb0, 0x47, 0x4c, 0x09, - 0xcf, 0x5d, 0xcc, 0x69, 0x21, 0xbb, 0xaf, 0x3b, 0x6d, 0xe8, 0x64, 0x25, - 0x71, 0x6b, 0xd0, 0x10, 0xf4, 0xc1, 0x99, 0xe0, 0xa0, 0x71, 0x56, 0x78, - 0xdc, 0x79, 0x07, 0xec, 0xbd, 0x9e, 0x97, 0x0d, 0x2a, 0x77, 0x32, 0xd5, - 0x98, 0x50, 0x29, 0x2f, 0x45, 0x70, 0x48, 0x72, 0xa7, 0x4f, 0xcb, 0xd2, - 0x64, 0xf8, 0xda, 0xd9, 0x71, 0x12, 0xea, 0x35, 0xc2, 0x9a, 0xc5, 0x4b, - 0xbb, 0x3c, 0x6a, 0x24, 0x84, 0x16, 0x5a, 0x28, 0x6b, 0xdb, 0x93, 0xf9, - 0x2e, 0xa1, 0xa6, 0xc9, 0x39, 0x31, 0x86, 0xcf, 0x3c, 0x66, 0x68, 0x08, - 0xc8, 0x07, 0xa2, 0x59, 0x16, 0x14, 0x27, 0x8c, 0x78, 0x49, 0xd8, 0x25, - 0x98, 0x1e, 0x57, 0x23, 0x01, 0x93, 0x54, 0x17, 0x09, 0xf1, 0xf1, 0x96, - 0x1a, 0x0e, 0x82, 0x85, 0x5c, 0x32, 0xd0, 0x91, 0xca, 0x10, 0xbc, 0x65, - 0x31, 0x31, 0xb5, 0x6e, 0x62, 0x61, 0x2d, 0xb8, 0xf2, 0xf9, 0x97, 0xa9, - 0xf4, 0x7f, 0xe2, 0x8a, 0x48, 0x75, 0x45, 0xa0, 0x6e, 0x9a, 0x93, 0x6d, - 0x8b, 0x48, 0xc8, 0x4c, 0x56, 0x16, 0xae, 0x72, 0xed, 0xcf, 0x39, 0x99, - 0x30, 0xb9, 0x7d, 0x03, 0xb3, 0x01, 0x02, 0x2f, 0x63, 0x16, 0xd2, 0xbb, - 0x1e, 0xaa, 0x88, 0x88, 0x3c, 0xe0, 0x94, 0x45, 0x5f, 0xa3, 0x17, 0x82, - 0x14, 0x8d, 0x77, 0x12, 0xf4, 0x6d, 0xa6, 0xed, 0x43, 0x4f, 0x60, 0x46, - 0x85, 0x09, 0xd7, 0x00, 0x88, 0xf8, 0x4a, 0xea, 0x32, 0x8e, 0xb1, 0x21, - 0xe8, 0x5c, 0xe0, 0xc2, 0x34, 0xb0, 0xf4, 0x77, 0xd7, 0x5f, 0xbb, 0x93, - 0xd8, 0x8f, 0x1a, 0xef, 0x9f, 0x06, 0xed, 0x99, 0xee, 0xf2, 0xab, 0x15, - 0xc8, 0xed, 0xf0, 0x7d, 0xa1, 0xf0, 0xfc, 0x48, 0xf9, 0xc2, 0x55, 0x14, - 0x0a, 0xf2, 0xa1, 0x5d, 0x5a, 0xc4, 0x98, 0xe9, 0xa0, 0x21, 0xec, 0x61, - 0xe5, 0x64, 0x21, 0x7f, 0x79, 0x41, 0xf5, 0xc1, 0x10, 0x6a, 0xb9, 0x3d, - 0x71, 0x04, 0xa8, 0x21, 0x90, 0x80, 0x59, 0x51, 0x4b, 0x79, 0x4f, 0xbf, - 0x5f, 0xe4, 0xff, 0xa0, 0xb6, 0xb0, 0xf9, 0xe7, 0x7f, 0xc1, 0x27, 0x8f, - 0xaa, 0x5d, 0x3c, 0x47, 0x92, 0xf0, 0x96, 0xbd, 0x22, 0x1b, 0xe6, 0x9e, - 0xa2, 0x4e, 0xae, 0x12, 0x24, 0x30, 0x0a, 0x4d, 0x9b, 0xd4, 0x50, 0x85, - 0x26, 0x95, 0xbe, 0x8a, 0x71, 0x81, 0x88, 0x3c, 0x18, 0x0b, 0xf1, 0x74, - 0x19, 0xd4, 0x20, 0x01, 0x73, 0xd0, 0xb8, 0x86, 0x5d, 0x89, 0xc8, 0x35, - 0xc1, 0x18, 0xd7, 0x81, 0x6c, 0x87, 0x72, 0xa3, 0xe0, 0x05, 0x2d, 0x54, - 0x47, 0x3a, 0x9f, 0x51, 0x41, 0xa1, 0x79, 0x81, 0x8b, 0x7d, 0x38, 0x53, - 0xbc, 0xc2, 0x0d, 0x1b, 0x15, 0x82, 0xed, 0xde, 0x0d, 0xb6, 0x8e, 0x60, - 0x39, 0xe7, 0x19, 0x5b, 0x4b, 0x8e, 0xc3, 0x94, 0xd2, 0x16, 0x99, 0x41, - 0x0e, 0x15, 0x9d, 0x9b, 0xd2, 0x64, 0x21, 0x5f, 0xe0, 0x2f, 0x69, 0x7a, - 0x94, 0xd1, 0x3b, 0xda, 0x10, 0xdd, 0xcd, 0x1b, 0xf8, 0xb0, 0x04, 0xf1, - 0x16, 0x43, 0x8b, 0xa3, 0x97, 0x1a, 0xff, 0x42, 0x30, 0x0e, 0x91, 0xab, - 0x17, 0x71, 0x52, 0x5e, 0xee, 0xd9, 0x01, 0x76, 0x0d, 0x46, 0x75, 0x50, - 0x30, 0xdc, 0x02, 0xa5, 0x8a, 0x06, 0x0d, 0x88, 0xc8, 0x16, 0xce, 0x49, - 0x26, 0xf7, 0x8b, 0x1d, 0xf2, 0xdf, 0xef, 0x1b, 0xd2, 0x49, 0xa4, 0x28, - 0x5d, 0x23, 0xdf, 0x28, 0xb2, 0x11, 0x25, 0x43, 0xeb, 0xce, 0x89, 0x82, - 0x38, 0x35, 0xf8, 0x6b, 0xdb, 0x3d, 0x14, 0xa1, 0xb6, 0x31, 0x4c, 0x09, - 0xe3, 0xe1, 0x09, 0x71, 0xb4, 0xfb, 0xe3, 0xdf, 0xe9, 0x9e, 0xb5, 0x49, - 0x52, 0x6a, 0xb5, 0x69, 0x2a, 0xd7, 0x13, 0x28, 0x27, 0xd5, 0x03, 0x39, - 0x79, 0xd3, 0x1a, 0xfc, 0x52, 0x74, 0x1a, 0x58, 0x2c, 0x19, 0x28, 0xeb, - 0x9a, 0x9a, 0x34, 0xc1, 0xfb, 0x90, 0x7b, 0xe7, 0xb6, 0x8f, 0x72, 0x82, - 0x19, 0x55, 0x39, 0xf6, 0x5e, 0xd8, 0x6a, 0x1e, 0x95, 0x9f, 0x4b, 0xa8, - 0x98, 0x18, 0xac, 0xe8, 0x64, 0x56, 0xa5, 0x81, 0xb0, 0x02, 0x05, 0xcf, - 0x51, 0xf2, 0xc8, 0xca, 0x30, 0xaf, 0xe2, 0xa1, 0xd2, 0x55, 0xbe, 0xfc, - 0x8d, 0xa7, 0xff, 0xbd, 0x92, 0x3a, 0x85, 0xee, 0xf6, 0xc0, 0xcd, 0x0d, - 0x08, 0xaf, 0xc4, 0x0b, 0x6b, 0xe4, 0x5a, 0x12, 0x02, 0xad, 0xcc, 0xa6, - 0xcb, 0x24, 0xde, 0x2c, 0x6e, 0xa1, 0xf6, 0xe9, 0x98, 0x8e, 0x75, 0xf9, - 0x03, 0xa6, 0xa2, 0x87, 0x61, 0x68, 0x02, 0x00, 0x6e, 0x5e, 0x18, 0xe6, - 0x64, 0x0a, 0xc3, 0x2d, 0xb8, 0x61, 0x69, 0x47, 0x70, 0x84, 0x41, 0x29, - 0x29, 0xf0, 0xdf, 0x6c, 0x14, 0xbb, 0x3f, 0x83, 0x3d, 0x54, 0x19, 0x20, - 0xe9, 0x1e, 0xc6, 0x1d, 0xca, 0x3e, 0xcd, 0x14, 0x6f, 0xfc, 0xba, 0x7b, - 0x43, 0x8f, 0x1d, 0xf9, 0x83, 0xa4, 0x40, 0x34, 0x11, 0x26, 0x27, 0xd8, - 0xd8, 0xce, 0xf3, 0x6d, 0xa3, 0x4b, 0x7c, 0x6b, 0x89, 0x54, 0x07, 0x43, - 0xff, 0x9c, 0x0f, 0xa4, 0x9e, 0x39, 0x80, 0xa7, 0xc1, 0x64, 0xaa, 0x37, - 0x4b, 0x5f, 0xc8, 0x91, 0xe7, 0xda, 0xdd, 0x3b, 0x1b, 0x56, 0x42, 0xd5, - 0xbf, 0xdc, 0x1a, 0x44, 0x24, 0x2d, 0xba, 0x26, 0xb5, 0x22, 0x4b, 0x42, - 0x1b, 0x72, 0xcf, 0x95, 0xbb, 0x44, 0xba, 0xc5, 0xe6, 0xb6, 0x0d, 0x43, - 0x4d, 0x8a, 0x74, 0x55, 0x3e, 0x23, 0xf9, 0x47, 0x03, 0xd5, 0xf2, 0xcc, - 0xb4, 0xf3, 0x9a, 0xc3, 0x9d, 0x31, 0xf9, 0x27, 0x9e, 0x19, 0x63, 0x62, - 0x79, 0xb6, 0x1b, 0x9c, 0x94, 0x4e, 0x7b, 0x89, 0x80, 0xf2, 0x97, 0x9a, - 0xe1, 0x61, 0x8e, 0x32, 0x81, 0xcf, 0x0b, 0x79, 0xe6, 0x49, 0x5c, 0x2e, - 0xf2, 0xba, 0x66, 0x52, 0xcb, 0x29, 0xe8, 0xc8, 0x05, 0x9a, 0x97, 0x15, - 0x7d, 0x00, 0x84, 0x5c, 0xc1, 0x48, 0x83, 0xa4, 0x87, 0xa2, 0x68, 0x87, - 0x6b, 0xcd, 0xc2, 0xc6, 0x7e, 0x27, 0xe4, 0xd2, 0x12, 0x9a, 0xdc, 0x6d, - 0x18, 0x8b, 0x1a, 0x30, 0x89, 0xb4, 0x4a, 0x8f, 0x16, 0xf9, 0xcc, 0x24, - 0x7a, 0x0c, 0x40, 0xc3, 0x07, 0x19, 0xf6, 0x4d, 0x29, 0x3c, 0x84, 0xd1, - 0x19, 0xe1, 0x27, 0xcd, 0x55, 0x40, 0x43, 0xcc, 0x7d, 0xad, 0x74, 0x63, - 0x03, 0xe5, 0x02, 0x1c, 0x91, 0xc9, 0x30, 0x26, 0x73, 0xd3, 0x86, 0xbf, - 0x94, 0xc2, 0xd5, 0x7e, 0x08, 0xa5, 0xf0, 0xd9, 0x97, 0x45, 0x43, 0xfd, - 0x77, 0x26, 0x37, 0xea, 0x11, 0xcd, 0xe7, 0xdd, 0x37, 0x05, 0x5e, 0xe5, - 0x3a, 0x52, 0xe2, 0x6f, 0x5f, 0xbf, 0x15, 0x08, 0xf7, 0x5b, 0xe0, 0x55, - 0xeb, 0xb4, 0xa0, 0x02, 0xf4, 0xb7, 0x0e, 0xad, 0x84, 0xce, 0xb3, 0xaa, - 0xc5, 0x9a, 0xea, 0x20, 0x20, 0x94, 0x09, 0x16, 0x1f, 0x2e, 0xd4, 0xdf, - 0x8d, 0x3a, 0x39, 0xca, 0x9e, 0xbb, 0x11, 0xac, 0xdd, 0x94, 0x73, 0x05, - 0xd1, 0xcc, 0x8f, 0x2f, 0x50, 0xc6, 0xb5, 0x38, 0x4a, 0x78, 0x46, 0xd2, - 0xe1, 0x10, 0x0f, 0x52, 0x49, 0x1a, 0x75, 0xb4, 0xcd, 0x66, 0x8e, 0xad, - 0x22, 0xcc, 0x6b, 0xe9, 0x5e, 0xe8, 0x3d, 0x47, 0x97, 0xb5, 0x41, 0x6b, - 0x23, 0x2a, 0xb3, 0xc5, 0xe5, 0x90, 0xec, 0xca, 0x46, 0xbd, 0x49, 0xeb, - 0xed, 0x24, 0x7b, 0x31, 0x03, 0xfa, 0x29, 0xae, 0x55, 0x5f, 0x99, 0x68, - 0x08, 0x52, 0xa7, 0x53, 0xe1, 0x5b, 0x35, 0x44, 0xce, 0x0e, 0xe6, 0x93, - 0x9e, 0xd1, 0xa4, 0xb5, 0x76, 0x60, 0x51, 0x89, 0xbb, 0x34, 0xc9, 0xa3, - 0x81, 0xd7, 0xd9, 0x54, 0xd7, 0x59, 0x89, 0x77, 0x5c, 0x4e, 0x70, 0x8a, - 0xa2, 0x44, 0x14, 0xc1, 0x44, 0xb1, 0x5d, 0x8a, 0x74, 0x29, 0xf3, 0x8b, - 0xe3, 0xd5, 0x27, 0x54, 0x32, 0xf2, 0xfd, 0xa2, 0xa4, 0x0e, 0x1c, 0xb6, - 0xd3, 0xd4, 0x64, 0xf2, 0x2f, 0xc2, 0x98, 0xe3, 0x87, 0x03, 0xbf, 0x05, - 0x3e, 0xfa, 0xf7, 0x00, 0x16, 0x51, 0x5d, 0x4f, 0x50, 0x67, 0x05, 0xed, - 0xdc, 0x79, 0x10, 0xf6, 0xa1, 0xfe, 0x28, 0xb1, 0x75, 0x1b, 0x43, 0xae, - 0x16, 0xb0, 0x1b, 0x33, 0xfa, 0x49, 0x8e, 0xf4, 0x85, 0x1f, 0x43, 0xfe, - 0x09, 0x1c, 0x61, 0x53, 0xc0, 0x21, 0x11, 0x34, 0x55, 0x99, 0x7b, 0xc1, - 0xd3, 0x52, 0x56, 0x65, 0x33, 0xb3, 0xe3, 0xe9, 0x24, 0xa3, 0x61, 0x18, - 0x97, 0x3a, 0x46, 0x8e, 0x34, 0xed, 0xd4, 0x23, 0x3d, 0x61, 0xc5, 0x04, - 0xca, 0x7f, 0x4a, 0xc1, 0x00, 0x40, 0x50, 0x1f, 0xd8, 0x0f, 0x87, 0xe6, - 0xf1, 0xb8, 0x77, 0xe4, 0xbc, 0xa5, 0x3a, 0x44, 0x2c, 0xbc, 0x2b, 0x22, - 0x70, 0x0e, 0xd9, 0x6c, 0x10, 0xb6, 0xbf, 0x35, 0x19, 0x85, 0xec, 0x86, - 0xca, 0xd2, 0xf4, 0x1c, 0xf4, 0x6b, 0x8e, 0xac, 0x3d, 0x0b, 0xdb, 0xbb, - 0xa5, 0x49, 0xf3, 0xc0, 0x46, 0x62, 0x1a, 0xaf, 0xa0, 0xf4, 0xfe, 0x99, - 0x97, 0xfc, 0x02, 0x40, 0x5b, 0x99, 0x1e, 0x69, 0xe5, 0x7d, 0xbc, 0x93, - 0x4f, 0x90, 0xb4, 0x40, 0x95, 0xab, 0x48, 0xb0, 0x7a, 0xce, 0xdd, 0x59, - 0x5e, 0x69, 0x7f, 0xea, 0x2f, 0x11, 0xcd, 0x06, 0xff, 0xa1, 0xa0, 0xe5, - 0x93, 0x34, 0xa5, 0xb7, 0x2d, 0x27, 0xb4, 0x24, 0xbe, 0x77, 0x9e, 0x22, - 0xbb, 0xf9, 0x18, 0x8c, 0x0c, 0xcc, 0x8d, 0x9b, 0x96, 0x07, 0xbf, 0x35, - 0xe7, 0xfe, 0xd8, 0xa2, 0x1f, 0xf9, 0x8d, 0x22, 0xc3, 0x7a, 0x06, 0x19, - 0xe7, 0xb6, 0x52, 0x54, 0xd1, 0xee, 0x38, 0xf8, 0x97, 0x2c, 0x61, 0xd1, - 0x37, 0xac, 0x35, 0x2f, 0x1f, 0xfa, 0x78, 0x02, 0xdc, 0x0b, 0xf6, 0x82, - 0x31, 0xba, 0xf8, 0xeb, 0x2b, 0xd4, 0x50, 0xf0, 0x31, 0xf3, 0xf7, 0x3e, - 0x3e, 0x8c, 0x5d, 0xd7, 0x5b, 0xaf, 0xf0, 0xac, 0xd0, 0xc5, 0xcb, 0x10, - 0xf0, 0x16, 0x07, 0xce, 0xff, 0xf8, 0x69, 0x9b, 0xef, 0x89, 0x43, 0x4a, - 0xba, 0x0e, 0xdc, 0xde, 0xc9, 0x71, 0xc4, 0xfb, 0x28, 0xc7, 0x63, 0x5c, - 0xe2, 0xf4, 0x78, 0xf8, 0xb2, 0x64, 0x23, 0xbb, 0x77, 0xd3, 0xf8, 0xc8, - 0xa1, 0x30, 0x5e, 0xaf, 0x95, 0xfc, 0xaa, 0x87, 0xb3, 0x5a, 0x47, 0x49, - 0x0c, 0x00, 0x34, 0xf8, 0xa6, 0x2c, 0x0b, 0x8e, 0xa8, 0x1c, 0x84, 0xde, - 0x5c, 0x33, 0xa8, 0xf3, 0x9e, 0x8c, 0x1b, 0x10, 0x9a, 0x71, 0x00, 0x8a, - 0xdd, 0x9b, 0xc1, 0x7f, 0x2e, 0x81, 0xc3, 0x12, 0x03, 0x77, 0x47, 0xb6, - 0xfa, 0xc7, 0x05, 0xa9, 0x9c, 0x77, 0xec, 0x55, 0x92, 0xb8, 0xf2, 0xbd, - 0x78, 0x7c, 0x12, 0xc5, 0x6a, 0x50, 0x6e, 0x11, 0x7b, 0x58, 0x95, 0x26, - 0xfb, 0xee, 0x45, 0xbb, 0x6b, 0x51, 0x3c, 0x9a, 0x9c, 0x35, 0x8d, 0x81, - 0xd5, 0xad, 0xe1, 0x1e, 0x72, 0xcb, 0x65, 0x41, 0xc8, 0xb6, 0x5d, 0xfe, - 0xc7, 0xf7, 0x51, 0x60, 0x00, 0xc2, 0x88, 0xe2, 0x04, 0xc9, 0x31, 0xac, - 0xd9, 0x7c, 0x55, 0x0a, 0xd1, 0x36, 0x03, 0x05, 0x43, 0x68, 0xec, 0x44, - 0x66, 0xcb, 0xc8, 0x48, 0x00, 0x0f, 0x3b, 0x4d, 0xf7, 0xa5, 0xfc, 0x45, - 0x7d, 0x43, 0x89, 0xe6, 0xaf, 0xb2, 0x62, 0x72, 0x2b, 0xfa, 0x9b, 0xe6, - 0xe6, 0xbd, 0x7b, 0x47, 0x1d, 0x96, 0xf3, 0x6b, 0x26, 0x4c, 0xdc, 0x9f, - 0xcd, 0x31, 0x10, 0x16, 0x9d, 0x3e, 0x38, 0xaa, 0xe7, 0x35, 0xd1, 0xe6, - 0x45, 0xb8, 0x26, 0x75, 0xd0, 0xa7, 0xaf, 0x6a, 0xca, 0xa2, 0x9a, 0x5f, - 0xc1, 0x80, 0x9b, 0x20, 0xd8, 0xb8, 0xe1, 0x03, 0x81, 0x37, 0xa9, 0x82, - 0x95, 0x4e, 0x76, 0x64, 0x17, 0x8c, 0x2c, 0x55, 0xc7, 0x8d, 0x65, 0x25, - 0x86, 0x12, 0xa8, 0x1b, 0x17, 0x91, 0xbf, 0x80, 0xe0, 0xea, 0xa5, 0xc8, - 0xf9, 0x06, 0x44, 0x2e, 0x54, 0x37, 0xb8, 0x02, 0xef, 0xbb, 0x0d, 0xf9, - 0xa7, 0xc1, 0xc2, 0x49, 0xda, 0x42, 0xd3, 0x9e, 0x5d, 0xbf, 0xa6, 0x7f, - 0x5b, 0x1c, 0x25, 0x2e, 0xd6, 0xea, 0x25, 0xb5, 0x20, 0xe0, 0x53, 0x85, - 0x2d, 0x82, 0x09, 0x0d, 0xf9, 0xed, 0xf4, 0x3b, 0x1f, 0xb2, 0x87, 0x5a, - 0x37, 0x8d, 0x4e, 0xaf, 0xb5, 0xb2, 0xcb, 0x2b, 0xd3, 0xa9, 0x48, 0xf4, - 0x27, 0x61, 0xda, 0xc5, 0xaf, 0x56, 0xc1, 0x2a, 0xe4, 0xf9, 0xb7, 0xc8, - 0x19, 0xdc, 0x3d, 0x26, 0x8e, 0x4d, 0xd1, 0x03, 0xd4, 0x83, 0x00, 0x56, - 0xbf, 0xd2, 0x6b, 0x98, 0x3d, 0xee, 0x6a, 0x8e, 0x9d, 0x51, 0xe0, 0xba, - 0x66, 0x96, 0xeb, 0x0d, 0x8c, 0x4e, 0xf8, 0x64, 0xa8, 0xf7, 0xe7, 0x4c, - 0x43, 0xb7, 0xdf, 0x4a, 0x7c, 0xc8, 0x92, 0xc9, 0xfb, 0x14, 0x14, 0x5b, - 0xcc, 0x2c, 0x0b, 0xca, 0x70, 0x0a, 0x6a, 0x65, 0x37, 0x4b, 0x01, 0x73, - 0x7e, 0xad, 0xf5, 0xad, 0x00, 0xb0, 0xea, 0x46, 0x7b, 0x1d, 0xc8, 0xa6, - 0x69, 0xa9, 0xf7, 0xc9, 0x03, 0x86, 0x7c, 0xfc, 0x31, 0x1d, 0xdf, 0xa7, - 0xc8, 0x9a, 0x5f, 0xfb, 0x97, 0xd1, 0x2d, 0x56, 0x3b, 0x34, 0xaa, 0xa9, - 0xb6, 0xd3, 0xa9, 0xd3, 0x89, 0xad, 0x17, 0xcf, 0xc9, 0x63, 0x93, 0x34, - 0x56, 0x2d, 0xf4, 0xdb, 0xc3, 0x92, 0xcd, 0xb5, 0x16, 0x57, 0xd9, 0xb6, - 0x9c, 0xb7, 0x6d, 0x32, 0x14, 0x6e, 0x6c, 0x89, 0x9e, 0xdd, 0x0b, 0x4d, - 0xd0, 0xe4, 0x80, 0x6a, 0x87, 0xef, 0x33, 0x3a, 0x02, 0x68, 0xd0, 0x2a, - 0xdb, 0xa3, 0x0e, 0xa8, 0x08, 0xa6, 0x98, 0x76, 0xa2, 0x02, 0x2b, 0x10, - 0x9b, 0xd9, 0xba, 0x3d, 0xb3, 0xdf, 0xf4, 0x99, 0x19, 0x3a, 0xee, 0x41, - 0x7b, 0x15, 0x54, 0x70, 0xac, 0xa6, 0xc3, 0xdf, 0x29, 0x69, 0xe0, 0x9c, - 0x55, 0xfa, 0x67, 0xb8, 0x38, 0xab, 0xeb, 0xdf, 0xb3, 0x8c, 0x7b, 0x13, - 0xb8, 0x4d, 0x78, 0x0e, 0x7f, 0x72, 0x34, 0xd3, 0x82, 0xca, 0xb2, 0x37, - 0x3e, 0x70, 0x46, 0xe9, 0xf2, 0xb7, 0xdf, 0x12, 0xfd, 0x36, 0xd6, 0xf5, - 0x3c, 0x6e, 0xb5, 0xab, 0x8b, 0x60, 0x33, 0xed, 0x91, 0x14, 0xc9, 0xb5, - 0x25, 0x51, 0x53, 0x6b, 0x1b, 0x36, 0xb7, 0x81, 0x1e, 0x97, 0x8b, 0x69, - 0xd3, 0x1a, 0xe4, 0xd1, 0x3f, 0x1e, 0xb7, 0xbb, 0x25, 0x73, 0xe6, 0xe9, - 0xba, 0x05, 0xec, 0xef, 0x76, 0x84, 0xae, 0x33, 0x15, 0x76, 0x82, 0xfa, - 0xb1, 0x24, 0x1f, 0x7b, 0x62, 0x10, 0x64, 0xeb, 0xd2, 0x22, 0x15, 0x19, - 0x2f, 0x6c, 0x12, 0x57, 0xe2, 0xe9, 0x32, 0xb4, 0x61, 0x73, 0xb2, 0x4d, - 0x47, 0x1b, 0x92, 0xa7, 0xdf, 0x14, 0x28, 0xf1, 0xa1, 0x47, 0x42, 0x08, - 0xb2, 0x7a, 0x21, 0xa3, 0x24, 0x47, 0x19, 0x30, 0x54, 0xcd, 0xca, 0xe7, - 0x36, 0x8f, 0x4e, 0xe7, 0xaf, 0xcd, 0x9e, 0xca, 0x4c, 0xb4, 0xd6, 0xfe, - 0x26, 0xa5, 0xcf, 0x27, 0x63, 0x23, 0xaa, 0x21, 0xfc, 0x99, 0x96, 0xb2, - 0x41, 0xb6, 0xd3, 0xe7, 0x1f, 0xd2, 0x0c, 0xab, 0x51, 0xac, 0x4b, 0xfd, - 0xfc, 0xae, 0x9b, 0xa1, 0x8d, 0x39, 0x57, 0x5b, 0xe6, 0xad, 0x93, 0xe7, - 0x3b, 0x3e, 0x6a, 0xd5, 0x28, 0xd4, 0x9d, 0xd8, 0xab, 0xe0, 0x01, 0x25, - 0x21, 0xef, 0x34, 0xd1, 0xfd, 0xd9, 0xa6, 0x44, 0x99, 0x84, 0x3f, 0x64, - 0xf2, 0xf2, 0xc5, 0xb1, 0xd7, 0xf7, 0x6a, 0xb2, 0x6e, 0xbe, 0x06, 0x0a, - 0x21, 0x25, 0x41, 0x2f, 0x85, 0x79, 0x05, 0xd4, 0x0c, 0x43, 0xef, 0x1f, - 0x2c, 0x16, 0xc6, 0xb8, 0x31, 0xc3, 0xd7, 0x2c, 0xb5, 0xe0, 0xfd, 0x97, - 0x92, 0xbc, 0x04, 0x8b, 0xdc, 0x65, 0x22, 0x19, 0x9d, 0x32, 0x08, 0xd1, - 0x15, 0x0c, 0x08, 0x67, 0x9d, 0x05, 0x13, 0x1e, 0x2a, 0xb5, 0xa2, 0x85, - 0x77, 0x1b, 0x4e, 0x4d, 0x4f, 0xdc, 0xdd, 0xbb, 0xc3, 0x32, 0x80, 0x3b, - 0x91, 0x7c, 0xdd, 0xe1, 0xee, 0x07, 0x8f, 0x1c, 0x77, 0x37, 0xd6, 0xb8, - 0xa9, 0x7d, 0x99, 0x0c, 0xd5, 0x5b, 0x9c, 0xa3, 0x96, 0x92, 0xd0, 0x96, - 0x8c, 0xfe, 0xc2, 0x04, 0x93, 0x9d, 0xfe, 0x8e, 0xd5, 0xc7, 0x81, 0x87, - 0xd6, 0xe3, 0xfc, 0x5f, 0x88, 0x0b, 0xff, 0x45, 0xdb, 0x87, 0x51, 0x9d, - 0xe2, 0xae, 0x7b, 0x25, 0xfc, 0x26, 0xec, 0x84, 0xc5, 0x39, 0xf2, 0x3a, - 0x0c, 0xe9, 0xe6, 0x9a, 0xef, 0x66, 0x72, 0x12, 0x3d, 0x1f, 0x3b, 0xa1, - 0x48, 0x6d, 0xbf, 0xcd, 0xfc, 0xd4, 0x14, 0x47, 0xdb, 0x72, 0x3c, 0x14, - 0x4d, 0xf0, 0xa0, 0xe9, 0x9e, 0xd2, 0xb3, 0x92, 0x75, 0xfd, 0x68, 0x5e, - 0xe6, 0x9a, 0x92, 0x89, 0x45, 0xcf, 0x20, 0xff, 0x06, 0x68, 0x0a, 0x36, - 0xf9, 0x00, 0x31, 0x43, 0xa4, 0x16, 0xe8, 0x20, 0x56, 0x88, 0x76, 0x81, - 0x77, 0xb4, 0xfb, 0x8a, 0xd4, 0x9e, 0xce, 0x72, 0x6f, 0x55, 0xef, 0x55, - 0x80, 0x18, 0x7f, 0x29, 0xa7, 0xd9, 0xee, 0x3f, 0xa2, 0xb3, 0x06, 0xf2, - 0xb4, 0x93, 0x67, 0x6f, 0x38, 0x78, 0x02, 0xe6, 0x58, 0x5e, 0x1a, 0x18, - 0x86, 0xb7, 0x86, 0x5f, 0xdf, 0x6d, 0x2d, 0x5e, 0x74, 0x89, 0x61, 0x46, - 0x22, 0x21, 0xad, 0xf5, 0x5a, 0x49, 0xae, 0x85, 0x61, 0xdb, 0xfe, 0xd7, - 0x19, 0xed, 0x7d, 0x9c, 0x44, 0x05, 0xec, 0xbb, 0x06, 0x96, 0xdc, 0xfc, - 0x45, 0x79, 0x23, 0x89, 0x35, 0xfa, 0x6e, 0x3d, 0x5f, 0x1b, 0x10, 0xf7, - 0x45, 0xe6, 0x55, 0xb8, 0x2b, 0x7c, 0x62, 0xab, 0xfe, 0x08, 0xf5, 0xf1, - 0xd0, 0xfb, 0x94, 0x75, 0x26, 0x08, 0x33, 0x7c, 0x7e, 0x11, 0x94, 0x2c, - 0x2d, 0x5e, 0xac, 0x49, 0xa0, 0xdb, 0x0b, 0x34, 0xb4, 0xf0, 0xd5, 0xf1, - 0x9d, 0x4a, 0x5d, 0xa7, 0x87, 0xb8, 0x9e, 0x7d, 0x96, 0x74, 0x66, 0x94, - 0x75, 0x23, 0x81, 0xb9, 0x0f, 0xf2, 0x2b, 0x9f, 0xde, 0x4b, 0x7c, 0x7d, - 0xc6, 0x3c, 0x55, 0xd1, 0x67, 0x0c, 0x70, 0x56, 0x9e, 0x32, 0x80, 0x3e, - 0xce, 0x79, 0xa7, 0xea, 0xcf, 0x3a, 0x59, 0x46, 0x1c, 0x0d, 0x5f, 0x0c, - 0x19, 0xce, 0x0e, 0x71, 0xec, 0x25, 0xaa, 0x7e, 0x9c, 0x69, 0x4f, 0xf1, - 0xb4, 0xb3, 0x8f, 0x56, 0xfb, 0x72, 0xa3, 0x86, 0xe0, 0xf7, 0xdb, 0x46, - 0x50, 0xd3, 0x9f, 0x3c, 0xe4, 0x93, 0xcf, 0xbf, 0xb4, 0x98, 0x19, 0xcf, - 0x9c, 0x8b, 0xb0, 0xe4, 0xd4, 0x89, 0x3d, 0x00, 0x85, 0xa8, 0xc4, 0xc4, - 0x83, 0x5c, 0x3a, 0xbd, 0x46, 0x50, 0x03, 0x0f, 0xb0, 0x40, 0xaf, 0x77, - 0x0c, 0x23, 0x26, 0x90, 0x2e, 0x82, 0x92, 0xc3, 0x8c, 0x56, 0x55, 0xd3, - 0xc1, 0x20, 0x9d, 0xa6, 0x33, 0x75, 0x39, 0x65, 0x92, 0xad, 0x95, 0x04, - 0x05, 0x74, 0x85, 0xd3, 0xe8, 0x9f, 0x56, 0x0c, 0xe2, 0x74, 0x3e, 0x29, - 0x81, 0x29, 0x3f, 0x05, 0x6b, 0xd4, 0x68, 0xb5, 0x14, 0x74, 0xe8, 0xb6, - 0x33, 0xe5, 0xef, 0x1e, 0xf9, 0x2c, 0xcc, 0x4c, 0x6a, 0x52, 0x78, 0x73, - 0x5e, 0x77, 0xee, 0x4a, 0x5b, 0x0f, 0x62, 0xb0, 0x11, 0xfb, 0x26, 0x57, - 0x8f, 0xfe, 0x83, 0xfd, 0xa1, 0x53, 0xb9, 0x5c, 0x46, 0x38, 0x48, 0x65, - 0xe0, 0x9a, 0x99, 0x67, 0xe3, 0x3a, 0x76, 0xc3, 0x2d, 0x8c, 0xea, 0xd4, - 0xac, 0x28, 0xfd, 0xd1, 0x91, 0x53, 0x04, 0x2a, 0x74, 0xe2, 0x5d, 0x82, - 0x72, 0xf1, 0xb6, 0x45, 0x13, 0x07, 0xb9, 0xa6, 0x33, 0x83, 0xaa, 0x70, - 0x4b, 0xb6, 0x87, 0x7f, 0xb6, 0x03, 0xd3, 0x11, 0x6c, 0x15, 0x7e, 0x88, - 0x88, 0x95, 0x55, 0x6d, 0x92, 0xcd, 0x7f, 0x4e, 0xef, 0x4f, 0xe9, 0x28, - 0xd0, 0x6b, 0x36, 0x35, 0x51, 0xd6, 0x52, 0xb1, 0x6b, 0xd8, 0xa3, 0x39, - 0xbd, 0xcd, 0x9f, 0x27, 0xe4, 0x3e, 0x31, 0x6b, 0x31, 0x76, 0x24, 0xde, - 0xa4, 0x53, 0xbb, 0xfb, 0x36, 0xcc, 0xf6, 0x80, 0x1b, 0xa0, 0xbc, 0xf2, - 0x2b, 0xcc, 0x57, 0x24, 0x4a, 0x7e, 0x4d, 0xa0, 0x87, 0x31, 0xca, 0x1a, - 0xbf, 0x6a, 0x1f, 0xf8, 0x14, 0x76, 0x80, 0x99, 0x05, 0x20, 0x5c, 0x36, - 0xbc, 0x4f, 0x28, 0x9c, 0x7e, 0x94, 0x53, 0xaa, 0xd8, 0xda, 0x0f, 0x16, - 0x12, 0x31, 0xff, 0x97, 0x27, 0x85, 0x44, 0x60, 0x34, 0x95, 0x7d, 0x6e, - 0x39, 0xd0, 0x66, 0x7b, 0x3b, 0xf1, 0x02, 0xb4, 0xcf, 0x98, 0xd1, 0xf7, - 0xbb, 0x27, 0x02, 0xa9, 0x8d, 0x36, 0xe4, 0x0e, 0x77, 0x9a, 0x79, 0x8e, - 0x71, 0xc2, 0x11, 0x00, 0x53, 0x6a, 0x44, 0xda, 0x58, 0x0b, 0x23, 0x72, - 0x6a, 0x77, 0xba, 0x07, 0x82, 0x59, 0x68, 0x2b, 0xe0, 0x29, 0x8c, 0x0a, - 0x18, 0x4e, 0x43, 0xbe, 0x8d, 0x92, 0x26, 0x05, 0x91, 0xc1, 0xa0, 0x44, - 0xe3, 0xe5, 0xdd, 0xfc, 0xdd, 0x9a, 0x91, 0x08, 0x2a, 0xd5, 0xf3, 0x3a, - 0x28, 0x56, 0xcd, 0x62, 0x52, 0x5d, 0xd9, 0x51, 0xf1, 0xa8, 0x49, 0xfd, - 0xec, 0x6e, 0x37, 0xf2, 0x07, 0x30, 0x11, 0x23, 0xbe, 0xff, 0x9c, 0x88, - 0x6b, 0x93, 0xa7, 0xc1, 0x58, 0x49, 0x00, 0xb4, 0xf3, 0xba, 0x57, 0x73, - 0x86, 0xe3, 0xb7, 0xfc, 0x68, 0x11, 0x27, 0x72, 0xf0, 0x31, 0xc7, 0x99, - 0xc4, 0x68, 0xdc, 0xed, 0x2b, 0xad, 0x19, 0x2f, 0x05, 0xfc, 0xc9, 0x7e, - 0xf8, 0x16, 0x8d, 0x20, 0xe6, 0x99, 0x57, 0xe1, 0x28, 0x84, 0x69, 0xf0, - 0xec, 0x66, 0x7a, 0x8f, 0xf8, 0x14, 0x13, 0xb5, 0xb2, 0xce, 0xea, 0xe0, - 0x15, 0xe9, 0xb5, 0xee, 0x14, 0x9a, 0x04, 0x07, 0xbc, 0x19, 0x96, 0xa2, - 0xe7, 0x0c, 0x2f, 0xb2, 0x16, 0x22, 0x8f, 0x20, 0xea, 0x3d, 0x67, 0x6f, - 0x31, 0x8b, 0x0a, 0x94, 0x44, 0x0c, 0x5e, 0x38, 0xec, 0xe7, 0x68, 0x5f, - 0xfb, 0xea, 0xb3, 0x22, 0x93, 0x88, 0x53, 0xec, 0xb7, 0x54, 0x2e, 0x4f, - 0x85, 0x55, 0xb1, 0xa1, 0x02, 0x91, 0xe4, 0x52, 0x9e, 0xb0, 0xc8, 0x50, - 0x7b, 0x02, 0xba, 0x9c, 0x06, 0xa3, 0x0d, 0x25, 0xf5, 0x59, 0x13, 0x78, - 0xd4, 0xfd, 0x34, 0xa2, 0xb6, 0xe9, 0xf3, 0xef, 0x8e, 0xf1, 0x1a, 0xfe, - 0x57, 0x32, 0xbe, 0x55, 0xfa, 0x59, 0x4b, 0x92, 0x3a, 0x05, 0x10, 0x83, - 0xd4, 0x63, 0x84, 0x31, 0x87, 0x29, 0xe7, 0x10, 0x3e, 0x39, 0xd9, 0xbf, - 0xf8, 0x91, 0x47, 0x01, 0xe6, 0xab, 0x12, 0xc0, 0xe8, 0xc4, 0x65, 0xe1, - 0x51, 0x3f, 0x5e, 0xe8, 0x65, 0xff, 0x8d, 0xb7, 0x72, 0x70, 0x18, 0x85, - 0x7a, 0x65, 0xf0, 0xaa, 0x50, 0x3a, 0x9a, 0x41, 0xc9, 0x51, 0x69, 0xad, - 0xe9, 0x4b, 0xe5, 0x1d, 0xb4, 0x02, 0x5a, 0x6a, 0xce, 0x90, 0x40, 0x00, - 0x2a, 0x3c, 0x31, 0x5a, 0x4c, 0xfb, 0x54, 0xa9, 0x8c, 0x5b, 0xc3, 0x8f, - 0xb9, 0x4d, 0x1a, 0x00, 0x85, 0xbe, 0x23, 0x6f, 0x0e, 0x23, 0x2c, 0x61, - 0x57, 0x6b, 0x68, 0xe7, 0x17, 0x5b, 0x27, 0x95, 0x2c, 0xe5, 0x86, 0x2c, - 0x9a, 0xae, 0xf0, 0x44, 0x96, 0xb8, 0xfd, 0x8e, 0xf6, 0xc8, 0x58, 0x70, - 0x5d, 0x80, 0x8e, 0xc8, 0xb5, 0x38, 0xf4, 0x9e, 0x48, 0xcf, 0x7b, 0x1a, - 0xff, 0xc4, 0xfa, 0xf0, 0x32, 0xb9, 0x79, 0x8f, 0x2f, 0x94, 0x29, 0xd3, - 0x48, 0x60, 0xc1, 0xf4, 0x7e, 0xa0, 0x24, 0x05, 0x86, 0x57, 0x8a, 0x3f, - 0xc7, 0x3d, 0x7e, 0xbc, 0xe3, 0x3f, 0x10, 0x1b, 0x0d, 0x0d, 0x74, 0x53, - 0x41, 0xb2, 0xa7, 0xcb, 0x12, 0xed, 0x32, 0x02, 0x39, 0x35, 0xbe, 0x56, - 0x4c, 0xf3, 0x28, 0x07, 0x82, 0xc8, 0xdd, 0xb6, 0xb0, 0x8c, 0xce, 0x7f, - 0x7a, 0x3b, 0xa1, 0xc3, 0x00, 0xf4, 0xf0, 0xd6, 0x4a, 0xb0, 0x4a, 0x79, - 0xba, 0x0d, 0xeb, 0xf3, 0x5d, 0x05, 0x7f, 0x69, 0x29, 0xc9, 0x57, 0x41, - 0x8a, 0x7f, 0xb0, 0x5d, 0xf2, 0xfe, 0x75, 0x7d, 0x1a, 0x21, 0x46, 0x42, - 0xb9, 0x17, 0xfe, 0xb7, 0x60, 0xf4, 0x23, 0x81, 0xe8, 0x5b, 0x4e, 0x36, - 0x21, 0x38, 0x76, 0x85, 0x0e, 0xcc, 0xb2, 0xd9, 0xb7, 0x23, 0x6e, 0x69, - 0x80, 0x52, 0x2c, 0x9d, 0xa4, 0x10, 0xaa, 0xce, 0xc2, 0x0c, 0x86, 0x6f, - 0xfa, 0x22, 0xc0, 0x32, 0x3e, 0x40, 0xb1, 0x1d, 0x57, 0xf8, 0x52, 0x84, - 0x6a, 0x3c, 0xc7, 0xe9, 0x4c, 0xf8, 0x9d, 0x60, 0xb6, 0x03, 0x15, 0x34, - 0xd5, 0x4c, 0x1f, 0x3e, 0xe4, 0xdb, 0x17, 0x24, 0xa9, 0xd5, 0xe9, 0x64, - 0x84, 0x01, 0x7b, 0x72, 0x55, 0x8f, 0xfa, 0xc1, 0x36, 0xf9, 0xf5, 0x50, - 0xc1, 0x11, 0x52, 0xf1, 0x14, 0xc6, 0x2a, 0x5f, 0xff, 0x1a, 0x13, 0xd3, - 0xdf, 0x1b, 0x14, 0x00, 0x7b, 0x92, 0x63, 0x1d, 0x3b, 0xeb, 0xae, 0xd0, - 0x1c, 0x09, 0x8a, 0x61, 0xa6, 0xc7, 0x67, 0x39, 0x99, 0xbb, 0xd9, 0x35, - 0x81, 0xff, 0xc8, 0xfa, 0x37, 0x4e, 0x6f, 0x9c, 0xac, 0x72, 0xb5, 0xfd, - 0x57, 0xe9, 0x47, 0x52, 0x77, 0x2a, 0x89, 0x91, 0xdd, 0x36, 0xf0, 0xa3, - 0x2f, 0x65, 0xdf, 0xff, 0xde, 0x0b, 0xb1, 0x14, 0x02, 0x79, 0xe7, 0x87, - 0x17, 0x16, 0xf8, 0x6b, 0x87, 0x4f, 0xb8, 0x93, 0xd5, 0x00, 0xf5, 0x06, - 0x14, 0x30, 0x7f, 0xd7, 0xd2, 0x2e, 0xf3, 0xa0, 0x8b, 0xd4, 0xc8, 0x31, - 0x5b, 0x59, 0xb4, 0xf2, 0xb5, 0xeb, 0x9c, 0xa2, 0xde, 0xa1, 0xd0, 0xa3, - 0x37, 0x3d, 0xc0, 0xdc, 0x9c, 0x77, 0x9d, 0xf0, 0x72, 0x68, 0x98, 0xc9, - 0xd4, 0xfb, 0x10, 0xd8, 0xf7, 0x0e, 0x27, 0x74, 0xff, 0x54, 0x7e, 0x12, - 0x37, 0x6e, 0xa1, 0x80, 0x53, 0x6f, 0x07, 0x30, 0x75, 0x37, 0xd8, 0x52, - 0xa8, 0xde, 0xfc, 0xb7, 0xbd, 0xe4, 0xbc, 0x4d, 0xfc, 0x91, 0xa0, 0x46, - 0x43, 0x5b, 0xf8, 0x72, 0xb5, 0x2e, 0x5d, 0x9d, 0x20, 0x91, 0x0d, 0x54, - 0x96, 0x69, 0x2d, 0x23, 0x06, 0x79, 0x9a, 0xe1, 0xe4, 0xb5, 0xe3, 0x3e, - 0x42, 0x71, 0x03, 0x9e, 0x46, 0x59, 0xb7, 0xb2, 0x08, 0xbf, 0x4d, 0xe3, - 0x3b, 0xe8, 0x6c, 0x61, 0x2e, 0xdb, 0x7d, 0x8f, 0x6e, 0x20, 0x73, 0x5b, - 0xb8, 0xba, 0xa7, 0xac, 0x72, 0x65, 0xf0, 0x64, 0xc3, 0x85, 0xb9, 0xa1, - 0x60, 0x61, 0x79, 0xb8, 0x08, 0xb2, 0x6c, 0xab, 0xf9, 0x21, 0x7b, 0x70, - 0xce, 0x0c, 0x12, 0x2f, 0x1f, 0xb9, 0xa5, 0x04, 0x94, 0xf6, 0x17, 0xc7, - 0x22, 0xa6, 0xb0, 0x1d, 0xdb, 0x31, 0x55, 0xa8, 0xc6, 0x70, 0x59, 0x0b, - 0xd8, 0x29, 0xd0, 0xd2, 0x35, 0x3b, 0x45, 0x56, 0x0e, 0xff, 0xe3, 0x93, - 0xd0, 0xf5, 0xa1, 0x8d, 0x1f, 0xe0, 0x83, 0x5d, 0x5f, 0x20, 0x49, 0x69, - 0xef, 0x0e, 0x5a, 0x42, 0x8c, 0x03, 0x34, 0x22, 0x5e, 0xc2, 0x13, 0x3c, - 0x13, 0x80, 0xc4, 0x63, 0x6b, 0x98, 0xc4, 0x2c, 0xa9, 0x50, 0xae, 0xce, - 0x18, 0xd4, 0x96, 0x40, 0x26, 0x10, 0x84, 0x0f, 0xe7, 0x85, 0xc1, 0x41, - 0xd0, 0x8e, 0xf8, 0x38, 0x2b, 0xd9, 0x7c, 0xe6, 0xd9, 0x0b, 0xfd, 0xd1, - 0xe6, 0x34, 0xbf, 0x15, 0x1c, 0x73, 0x96, 0xde, 0xc0, 0xbc, 0x92, 0xa7, - 0x14, 0xb2, 0x34, 0x4a, 0xbf, 0x92, 0xcb, 0xa8, 0xca, 0xcb, 0xbb, 0xf3, - 0xb5, 0x61, 0xb2, 0xcc, 0x78, 0x4e, 0x82, 0x4e, 0x31, 0x66, 0x4b, 0xc2, - 0x8e, 0x1e, 0x00, 0x50, 0x96, 0x81, 0xc8, 0x7f, 0xec, 0x2c, 0xeb, 0x4c, - 0xf9, 0xad, 0xb3, 0xe4, 0x5f, 0x66, 0x45, 0xe3, 0xb3, 0xf5, 0xca, 0x61, - 0xec, 0x90, 0xa7, 0xbc, 0x87, 0xcd, 0x2a, 0xcf, 0x3c, 0x7e, 0x18, 0xe2, - 0x05, 0xe8, 0x5d, 0x4d, 0x2b, 0x48, 0x6b, 0x17, 0x9f, 0xeb, 0xb9, 0xbd, - 0xba, 0x16, 0xe7, 0x4c, 0x30, 0x30, 0xc3, 0xe7, 0x2b, 0x71, 0x80, 0xde, - 0x93, 0x52, 0xe0, 0x97, 0x80, 0xb5, 0xf2, 0xc0, 0x0e, 0x26, 0x16, 0x49, - 0x4b, 0x50, 0x60, 0x37, 0x94, 0x29, 0xd4, 0x37, 0x6a, 0x36, 0x7b, 0xaf, - 0x47, 0x58, 0x0f, 0x31, 0x43, 0xde, 0xba, 0x43, 0x74, 0x8d, 0xe8, 0x4a, - 0x43, 0xa5, 0x23, 0xd5, 0x19, 0x5b, 0x99, 0x7f, 0x49, 0x1d, 0x86, 0x09, - 0xa7, 0x88, 0xed, 0x23, 0x24, 0xb4, 0xf3, 0xd6, 0xbd, 0xb2, 0xe6, 0x49, - 0x4a, 0x03, 0x8c, 0x3c, 0xef, 0x18, 0xe5, 0x33, 0xb4, 0x82, 0x63, 0x2d, - 0x30, 0xed, 0xb5, 0xe7, 0x01, 0xd2, 0x51, 0x12, 0x21, 0x45, 0x44, 0x68, - 0xdc, 0x34, 0xd7, 0x9c, 0xf3, 0xda, 0xa2, 0xed, 0x55, 0xbc, 0xfa, 0x95, - 0xd2, 0x2e, 0x6d, 0x48, 0x3f, 0x0b, 0x1a, 0x79, 0x7b, 0xcd, 0x64, 0x7f, - 0x05, 0xf8, 0xea, 0x63, 0xa3, 0x24, 0xf5, 0x44, 0x4e, 0x81, 0x42, 0x66, - 0xfc, 0x5c, 0x05, 0xe1, 0x9f, 0xca, 0xe5, 0xf5, 0x14, 0xe1, 0x57, 0x8d, - 0x50, 0x77, 0x38, 0x9c, 0xae, 0xb1, 0xe8, 0x8c, 0x38, 0x84, 0x39, 0x87, - 0xad, 0x3b, 0xa4, 0x04, 0x50, 0x7e, 0x00, 0x86, 0x87, 0x54, 0x18, 0x31, - 0xd5, 0x04, 0xb8, 0xad, 0x4a, 0x5c, 0xff, 0xb5, 0x89, 0x50, 0x93, 0x48, - 0xd3, 0xd8, 0x61, 0xc6, 0x8d, 0xda, 0x8c, 0x67, 0xbc, 0x86, 0xa4, 0x51, - 0x88, 0xf9, 0x54, 0x78, 0xcf, 0x58, 0x11, 0x00, 0x72, 0x21, 0x8a, 0x6a, - 0xe5, 0xa0, 0x54, 0xb0, 0x84, 0x77, 0xfc, 0xa3, 0x39, 0x23, 0xb6, 0x07, - 0x03, 0x33, 0x6f, 0xf3, 0x28, 0x85, 0xa2, 0xa0, 0xa1, 0x70, 0x52, 0x16, - 0x3e, 0x1f, 0x44, 0xe1, 0xe1, 0xc7, 0x45, 0x0f, 0x00, 0x75, 0x04, 0xec, - 0xc6, 0x98, 0xb7, 0x05, 0x85, 0xfb, 0xc9, 0xb3, 0x08, 0xb3, 0x74, 0x0b, - 0xa8, 0x0c, 0x1e, 0x7e, 0xef, 0x21, 0x26, 0xf0, 0x7d, 0x63, 0xdf, 0x9c, - 0x4d, 0xb4, 0xc3, 0x03, 0xbc, 0x36, 0x6a, 0xa8, 0x3d, 0xca, 0x6f, 0x74, - 0x21, 0x92, 0x2c, 0x09, 0x2c, 0xc1, 0x0d, 0x6d, 0x9e, 0xa5, 0x04, 0x47, - 0xc3, 0x8b, 0xa1, 0x53, 0xc4, 0x4f, 0xef, 0x85, 0xf3, 0xe5, 0x76, 0xfb, - 0x21, 0xc0, 0x6b, 0x16, 0xf9, 0x29, 0x90, 0xf2, 0x33, 0x06, 0x66, 0x35, - 0x95, 0xac, 0x7a, 0xe8, 0xc3, 0xc2, 0x64, 0x32, 0x87, 0xbc, 0xb7, 0x72, - 0x7c, 0x35, 0x20, 0x97, 0x1a, 0x15, 0x63, 0x10, 0x2e, 0x5f, 0x6b, 0xf6, - 0x41, 0x9b, 0x04, 0xad, 0x9a, 0x29, 0x25, 0xba, 0xc6, 0xe6, 0xb8, 0xf6, - 0xf4, 0xae, 0x02, 0xd3, 0x30, 0xfa, 0x4b, 0x3d, 0xb6, 0xd3, 0xad, 0xac, - 0xfe, 0x4c, 0x1d, 0x30, 0xe7, 0xfc, 0xe4, 0x41, 0x33, 0xc8, 0x6e, 0xf8, - 0x56, 0x66, 0xa9, 0x04, 0x7c, 0x1b, 0xa2, 0x74, 0x8f, 0x3b, 0xb7, 0x23, - 0xdd, 0xfe, 0x10, 0x24, 0x17, 0x90, 0x53, 0xbb, 0x1d, 0xc4, 0x57, 0x54, - 0x83, 0x33, 0xa0, 0xa8, 0x56, 0xc3, 0xb7, 0xf8, 0xc0, 0x7f, 0xcc, 0xbe, - 0x94, 0xe5, 0x8c, 0x6e, 0x54, 0x3c, 0x2c, 0x8c, 0x8b, 0xbe, 0x03, 0xe4, - 0x1d, 0x8d, 0xfd, 0x12, 0x29, 0xcf, 0x76, 0xcf, 0xcd, 0x84, 0x23, 0x52, - 0x3a, 0x07, 0xaa, 0x52, 0x30, 0x54, 0x09, 0x21, 0x60, 0x29, 0xbd, 0xc8, - 0xe5, 0x62, 0x49, 0xf0, 0xfa, 0x08, 0xaf, 0x63, 0x2f, 0xb7, 0x77, 0x53, - 0x8f, 0xe1, 0x4f, 0x9f, 0xbf, 0x21, 0x4c, 0x13, 0xd7, 0x87, 0xf9, 0x5a, - 0x34, 0x42, 0xf7, 0xe2, 0x0a, 0x4a, 0xca, 0x80, 0xc5, 0x8b, 0xaa, 0x38, - 0x17, 0x20, 0x20, 0xb8, 0x7f, 0x7f, 0x7e, 0x82, 0x4f, 0xc6, 0xbf, 0x5c, - 0x35, 0xa2, 0x96, 0xf0, 0x8e, 0x7b, 0x04, 0x76, 0x3c, 0x35, 0x49, 0x37, - 0x0d, 0x1d, 0x31, 0xa0, 0x62, 0x73, 0x90, 0xad, 0xc2, 0x43, 0x8c, 0xce, - 0xd8, 0x1c, 0xbd, 0xfc, 0x70, 0xea, 0x8d, 0x18, 0x66, 0x72, 0x6e, 0x00, - 0x2b, 0x47, 0xf8, 0x6d, 0x6e, 0x57, 0x8f, 0xee, 0xac, 0x8e, 0x35, 0x70, - 0x86, 0x25, 0xc6, 0x87, 0x22, 0xda, 0x22, 0x2c, 0x3c, 0xf8, 0x0e, 0xa7, - 0xe1, 0x77, 0x7b, 0x76, 0x37, 0x9d, 0x2d, 0xc5, 0xfa, 0xe3, 0x9c, 0x57, - 0x56, 0xcb, 0x9d, 0x8b, 0xc2, 0x4a, 0x0b, 0x85, 0x69, 0x30, 0x0d, 0x62, - 0x40, 0x90, 0x51, 0xd5, 0x9a, 0xda, 0x34, 0x1d, 0x8f, 0x4a, 0x90, 0xd5, - 0xc5, 0xbf, 0xab, 0xe8, 0x81, 0x6b, 0x48, 0x92, 0xd0, 0x45, 0x0d, 0xae, - 0xdc, 0x5c, 0x9b, 0x4a, 0xe0, 0x7d, 0xfb, 0x87, 0x8d, 0x06, 0x41, 0x99, - 0x6b, 0x8c, 0x89, 0x97, 0xe2, 0x95, 0x54, 0xe1, 0xab, 0x75, 0x46, 0x83, - 0x93, 0x31, 0x6d, 0x38, 0xf5, 0x49, 0xf0, 0x88, 0xfb, 0xbe, 0x8b, 0xba, - 0xa9, 0x1e, 0x72, 0x33, 0x07, 0x34, 0xba, 0xcb, 0x3c, 0xcd, 0x27, 0xb2, - 0x0e, 0x94, 0xf9, 0x05, 0x19, 0xc7, 0xcd, 0xd2, 0x0c, 0x1a, 0x6c, 0x45, - 0x1a, 0x0b, 0x3e, 0x8e, 0xaf, 0x91, 0x29, 0x38, 0x91, 0xc3, 0xb2, 0x6d, - 0x1a, 0xde, 0xdb, 0x2b, 0x1e, 0xde, 0x1e, 0x97, 0xd6, 0x73, 0x90, 0x2c, - 0x3f, 0x86, 0x20, 0xc8, 0x69, 0x31, 0x18, 0xfa, 0xa8, 0x73, 0xa1, 0x33, - 0x04, 0x46, 0x12, 0xe0, 0xb2, 0xdc, 0x21, 0x4a, 0x81, 0x2d, 0xa8, 0x1c, - 0x26, 0xfa, 0xbb, 0x6f, 0xf7, 0x70, 0x81, 0xf0, 0xe4, 0x57, 0x90, 0x33, - 0x3d, 0xf3, 0x79, 0xa3, 0x38, 0xbb, 0x8c, 0x7a, 0x32, 0x8b, 0xa6, 0xaf, - 0x8b, 0xd6, 0x12, 0x46, 0xa6, 0x7b, 0xa1, 0x0b, 0x3c, 0x7d, 0x13, 0xcd, - 0x0a, 0xb0, 0xb7, 0xf7, 0x82, 0x67, 0x86, 0x0a, 0xc7, 0x20, 0x81, 0x1d, - 0x94, 0x78, 0x54, 0xe5, 0x92, 0xb6, 0x04, 0x71, 0xad, 0xca, 0xc8, 0x1f, - 0xcd, 0xb0, 0xd0, 0x6e, 0x2a, 0x8f, 0x18, 0x9f, 0xb5, 0xb3, 0xca, 0x05, - 0x68, 0xdd, 0x61, 0x95, 0x61, 0x71, 0xdf, 0x70, 0xb6, 0x59, 0xc8, 0x27, - 0xf2, 0x2d, 0x52, 0xdd, 0xa3, 0x1b, 0x54, 0x63, 0x47, 0xd8, 0x12, 0xa0, - 0x57, 0x0e, 0x10, 0x8c, 0x3a, 0x0d, 0xc4, 0x7f, 0x75, 0xe0, 0x66, 0x57, - 0x33, 0x4e, 0xc0, 0x33, 0xc9, 0x14, 0x1d, 0x5f, 0xe3, 0x0b, 0xb0, 0xe4, - 0x6f, 0x0f, 0xa8, 0x4a, 0x20, 0x37, 0x5d, 0xd0, 0x9b, 0xf7, 0x91, 0x84, - 0xec, 0x96, 0x0d, 0xf6, 0x5f, 0x7b, 0x82, 0x95, 0x8d, 0x3f, 0xd9, 0xfd, - 0x49, 0xc4, 0x6e, 0x8c, 0x70, 0x84, 0x0b, 0x80, 0xda, 0x52, 0x51, 0x34, - 0xb5, 0x5b, 0xdb, 0xdf, 0x85, 0x7a, 0x99, 0x52, 0x4b, 0x6b, 0x67, 0x8b, - 0x3e, 0x74, 0xf1, 0xe4, 0xf0, 0xd3, 0xca, 0x6a, 0x6e, 0x35, 0x26, 0x9d, - 0xe3, 0xf2, 0x90, 0xfa, 0x58, 0xe2, 0x0e, 0xf5, 0x9e, 0x2a, 0x5d, 0x19, - 0x3e, 0xed, 0x5c, 0xda, 0x16, 0xe0, 0xa0, 0xec, 0x0d, 0x9e, 0x29, 0x21, - 0x8f, 0x75, 0x28, 0xc1, 0xb8, 0x84, 0x06, 0xa5, 0x99, 0xe2, 0x67, 0xf3, - 0x6e, 0x75, 0xc3, 0x1d, 0xe9, 0xda, 0x8a, 0x31, 0x0d, 0x1b, 0xf5, 0xeb, - 0x01, 0x99, 0xa2, 0x9d, 0xd2, 0xc0, 0x5e, 0xca, 0x09, 0x64, 0x89, 0x79, - 0xe8, 0x5b, 0xed, 0x19, 0x47, 0x5e, 0xfa, 0xa3, 0x99, 0x50, 0x0d, 0x87, - 0x65, 0x20, 0xa5, 0x79, 0x9c, 0x8a, 0x49, 0x48, 0x89, 0x42, 0x91, 0x1a, - 0xb7, 0xbc, 0x42, 0x8c, 0x35, 0x0f, 0x24, 0x86, 0xcc, 0xec, 0x79, 0x67, - 0x2f, 0xbb, 0xf8, 0x30, 0x9f, 0x78, 0xde, 0x18, 0x53, 0x57, 0x1d, 0x80, - 0x84, 0x6d, 0x4e, 0x69, 0xf0, 0x02, 0x34, 0x74, 0x60, 0x32, 0xc6, 0x7a, - 0x65, 0xea, 0x3f, 0x0d, 0xbc, 0x12, 0x8f, 0xf9, 0xca, 0xf3, 0xf4, 0x5e, - 0x1d, 0xc9, 0x3e, 0x11, 0xff, 0x90, 0x02, 0xfe, 0x44, 0xa6, 0xb0, 0x4a, - 0xb9, 0x90, 0xa7, 0x07, 0xc6, 0x5c, 0x84, 0x68, 0xa5, 0x09, 0x82, 0x7f, - 0xf7, 0x8c, 0x91, 0xef, 0x02, 0x61, 0x80, 0xfb, 0x9a, 0x09, 0x9a, 0xf2, - 0xce, 0x57, 0x9f, 0xcb, 0xcd, 0xd9, 0x00, 0xce, 0x0b, 0x73, 0x84, 0x10, - 0x25, 0x61, 0x61, 0x53, 0x42, 0x37, 0xc1, 0x8c, 0x25, 0x5c, 0xd6, 0x7f, - 0xa8, 0xeb, 0xba, 0x74, 0x42, 0xc9, 0xd6, 0x72, 0x47, 0xff, 0xed, 0xb1, - 0x34, 0x8c, 0xbb, 0xae, 0xa9, 0xbd, 0x8c, 0xd8, 0x6c, 0xef, 0xb1, 0xc2, - 0x92, 0x6f, 0xff, 0x36, 0x45, 0xfd, 0x18, 0x20, 0x5c, 0x1b, 0x0a, 0xb6, - 0x34, 0x37, 0x68, 0xcd, 0xd1, 0x61, 0xfe, 0xc8, 0xe5, 0x7b, 0x86, 0xed, - 0x57, 0xc7, 0xfd, 0x72, 0x81, 0x20, 0x4e, 0xec, 0x48, 0xe0, 0xa5, 0x6d, - 0x93, 0x3e, 0xa9, 0x88, 0x30, 0x2a, 0x83, 0x3e, 0x98, 0x83, 0x7e, 0xf1, - 0x8b, 0x5f, 0x46, 0x42, 0xe1, 0x91, 0x5c, 0x28, 0xaf, 0xc3, 0xd4, 0x65, - 0xbf, 0xb3, 0xf0, 0x34, 0x81, 0x46, 0xe5, 0x3a, 0xdf, 0xa6, 0x55, 0x9c, - 0x8a, 0x6f, 0x0e, 0xba, 0xda, 0xf0, 0x2b, 0xb4, 0x1e, 0x7b, 0x78, 0xf2, - 0xa9, 0x8a, 0xdd, 0x6c, 0x09, 0x1c, 0xdd, 0xf6, 0x3c, 0xd9, 0xea, 0x78, - 0xab, 0x55, 0x7f, 0x65, 0xb4, 0x90, 0x95, 0x1c, 0xbb, 0xb8, 0x45, 0xf5, - 0xfe, 0x01, 0xaa, 0x8c, 0x58, 0x65, 0x3b, 0x5b, 0x56, 0x45, 0xa8, 0xaf, - 0x4c, 0x56, 0x0c, 0x99, 0x06, 0x9d, 0xb9, 0x57, 0xd3, 0x79, 0xe5, 0x57, - 0xe7, 0x4f, 0x89, 0xa1, 0xef, 0x92, 0x47, 0x4d, 0x83, 0x21, 0xb9, 0x83, - 0xdc, 0x4d, 0x7b, 0x65, 0x05, 0xa3, 0xbf, 0xc7, 0x78, 0x35, 0xe7, 0xbd, - 0xa2, 0xbd, 0x8f, 0xe8, 0x70, 0x7a, 0x31, 0xc6, 0xf7, 0x14, 0xee, 0xba, - 0xa3, 0x81, 0xa0, 0x5c, 0x16, 0xc4, 0x8c, 0x5e, 0xac, 0x7e, 0x7f, 0x2a, - 0x13, 0x18, 0xb5, 0x7b, 0x60, 0x62, 0xc7, 0xfe, 0xb2, 0x04, 0xe6, 0x60, - 0xac, 0x46, 0x6f, 0x4e, 0xdd, 0x5a, 0xf3, 0xe8, 0x15, 0x35, 0x6d, 0x36, - 0x0d, 0xfc, 0xe4, 0x5c, 0x99, 0xda, 0x82, 0x45, 0xcb, 0x71, 0xb9, 0x7d, - 0xfc, 0x75, 0x5b, 0x5f, 0x72, 0xbe, 0xc1, 0x44, 0x91, 0xe4, 0xa8, 0x5f, - 0x07, 0x31, 0x54, 0xb8, 0x44, 0xfc, 0xa4, 0xa3, 0x8d, 0x5d, 0x56, 0x43, - 0x3f, 0x23, 0xe2, 0x75, 0xf3, 0xbc, 0xbe, 0xc2, 0x5a, 0xe5, 0x32, 0xa9, - 0x5c, 0x86, 0x99, 0x69, 0x38, 0xee, 0x8d, 0xcc, 0x86, 0x7b, 0x25, 0xac, - 0x33, 0x41, 0xa8, 0xc7, 0x64, 0xd0, 0x21, 0x91, 0xd8, 0xeb, 0x0b, 0x9e, - 0xfd, 0x06, 0x8f, 0x54, 0x58, 0x8e, 0xf1, 0xa8, 0x2e, 0xf5, 0x0f, 0xc5, - 0x23, 0x60, 0xc5, 0x44, 0xf5, 0x72, 0x84, 0x44, 0x83, 0x26, 0x1f, 0x13, - 0x97, 0x00, 0xad, 0xc8, 0x61, 0xd8, 0x82, 0x68, 0x32, 0x2a, 0x03, 0xec, - 0x0f, 0x97, 0x30, 0x0b, 0x1d, 0x81, 0x8b, 0xed, 0x99, 0x65, 0xe5, 0x23, - 0xe4, 0x65, 0xc7, 0x8b, 0xdc, 0x6b, 0x78, 0x9d, 0xf8, 0xdd, 0x50, 0xd0, - 0xd8, 0x20, 0x7d, 0xc1, 0x55, 0x37, 0x3e, 0x72, 0x25, 0xc9, 0x2a, 0x3c, - 0xd6, 0x42, 0xd5, 0x83, 0x5e, 0x7d, 0xa2, 0xdf, 0x3c, 0xfe, 0x77, 0x2a, - 0xd1, 0xe7, 0x7a, 0x76, 0xff, 0x6e, 0x06, 0x24, 0xa1, 0x56, 0x5b, 0xfc, - 0xfb, 0xae, 0x79, 0x5e, 0x91, 0x57, 0xb9, 0xc6, 0x3e, 0xd8, 0x33, 0x28, - 0x75, 0x82, 0xef, 0xd2, 0x26, 0x5f, 0xb6, 0xd7, 0xc6, 0xde, 0x1e, 0x6a, - 0x67, 0x0e, 0x7d, 0xed, 0x40, 0xd5, 0x8f, 0xd1, 0x33, 0xc6, 0x9f, 0xf6, - 0xcc, 0xe7, 0x42, 0xb1, 0x92, 0xdc, 0x35, 0x96, 0x4f, 0x15, 0xfa, 0x1c, - 0x6b, 0xf3, 0x4e, 0xe2, 0xaa, 0xff, 0x68, 0x21, 0x5e, 0x0b, 0xd1, 0x8d, - 0xf4, 0xfa, 0xb5, 0x19, 0xa0, 0xe5, 0xb2, 0xce, 0x0a, 0x6b, 0x9c, 0x2f, - 0xa5, 0x96, 0x52, 0xcc, 0x89, 0x49, 0x77, 0xa5, 0x44, 0x55, 0x7c, 0xa5, - 0x57, 0x3e, 0x25, 0xac, 0x96, 0x6c, 0x50, 0xfd, 0x81, 0x57, 0x36, 0xab, - 0xbc, 0x00, 0x11, 0x7b, 0xac, 0xc9, 0x1c, 0x37, 0xf8, 0xd7, 0xb7, 0xf2, - 0x4b, 0xf3, 0x98, 0x9a, 0xd5, 0xfe, 0x89, 0xe3, 0x39, 0x23, 0xe6, 0x9f, - 0x97, 0xb1, 0xfd, 0xd0, 0xcf, 0x3d, 0xb2, 0xee, 0x82, 0xd3, 0xe7, 0x73, - 0xd7, 0x2f, 0x52, 0x16, 0xf5, 0x2d, 0x5e, 0xd7, 0x01, 0xf5, 0xd4, 0x6c, - 0x6d, 0xda, 0x46, 0x12, 0x9c, 0xfb, 0xf8, 0x1c, 0xe0, 0x3e, 0x19, 0x02, - 0x39, 0xb0, 0x98, 0x0e, 0x1e, 0x74, 0xce, 0x8d, 0x4a, 0x50, 0xc2, 0xf8, - 0x49, 0x08, 0x11, 0x3f, 0x22, 0xf3, 0x58, 0xaa, 0x5c, 0xdb, 0x56, 0x07, - 0x4f, 0x98, 0xc6, 0x42, 0x7f, 0xbf, 0x5a, 0x00, 0x84, 0x54, 0x14, 0xd5, - 0xf3, 0x55, 0x69, 0xdc, 0x6c, 0xe9, 0x87, 0xdb, 0xc9, 0xd8, 0x1d, 0x85, - 0x34, 0xc7, 0xc5, 0x32, 0x97, 0xf8, 0xbe, 0x3b, 0x90, 0xd5, 0xcd, 0x02, - 0x22, 0xf1, 0x6b, 0x9c, 0x93, 0xd8, 0x07, 0x61, 0x7b, 0xbb, 0x57, 0x0f, - 0x92, 0x89, 0xe4, 0x78, 0xe6, 0xf0, 0x1f, 0xea, 0x1f, 0x9e, 0x4f, 0x4d, - 0xfc, 0xf2, 0x27, 0x89, 0x48, 0x09, 0x32, 0x3d, 0x7a, 0xe5, 0x0f, 0xff, - 0x80, 0x36, 0x47, 0x16, 0xbe, 0xae, 0x5a, 0xa0, 0xf8, 0x75, 0x75, 0x17, - 0x9f, 0x92, 0x0f, 0x12, 0x4b, 0xc9, 0xf4, 0xd0, 0x80, 0xac, 0x95, 0x3a, - 0x2e, 0x0f, 0x28, 0x89, 0x37, 0x86, 0x30, 0x57, 0x66, 0x28, 0xef, 0x67, - 0x87, 0xa0, 0xb4, 0x33, 0xed, 0xbf, 0xd3, 0x6a, 0x55, 0x76, 0x52, 0xcc, - 0xb0, 0xbb, 0x08, 0x86, 0xa5, 0xeb, 0xa0, 0x81, 0x52, 0xd1, 0x86, 0x17, - 0xd3, 0x1b, 0x40, 0xa7, 0x4e, 0xf3, 0x59, 0x03, 0x49, 0x1d, 0x28, 0x33, - 0x6e, 0x26, 0x63, 0x1c, 0xdd, 0x57, 0x37, 0x3b, 0xed, 0xe9, 0xf1, 0x11, - 0x09, 0xd3, 0xb8, 0x4f, 0x72, 0xb2, 0xa3, 0xfa, 0x85, 0x61, 0x0e, 0x28, - 0x63, 0x22, 0x47, 0x17, 0x0d, 0xae, 0x09, 0x41, 0x28, 0x2b, 0x87, 0x93, - 0x0d, 0xb0, 0x39, 0xfc, 0xfd, 0xc7, 0x8c, 0xff, 0x48, 0x93, 0xc2, 0xdb, - 0x06, 0x37, 0x19, 0xfa, 0xe8, 0xfe, 0xaf, 0x55, 0x7c, 0x70, 0x9b, 0xdc, - 0x80, 0xcd, 0x14, 0x00, 0x5c, 0xe0, 0x99, 0x17, 0x71, 0xc1, 0x53, 0x3b, - 0x91, 0xf2, 0xd0, 0x36, 0x88, 0x2d, 0x4b, 0xc1, 0xe0, 0x17, 0x83, 0x84, - 0xcc, 0xcd, 0x69, 0xe1, 0xa1, 0x12, 0xda, 0x44, 0x7b, 0x89, 0x28, 0x46, - 0xa6, 0xaf, 0x83, 0x3a, 0xc6, 0x06, 0x00, 0x52, 0xd1, 0x61, 0x28, 0xd2, - 0x1c, 0x44, 0x2a, 0x36, 0x3d, 0xae, 0x21, 0x3e, 0xb4, 0x15, 0x96, 0xb5, - 0x88, 0xe3, 0x16, 0xa3, 0x3b, 0xa6, 0xbd, 0x32, 0x85, 0x76, 0x21, 0xa6, - 0xd4, 0x6a, 0xd0, 0x5f, 0x9b, 0x73, 0x17, 0x86, 0x1e, 0xa8, 0xbe, 0xd2, - 0x9b, 0xe0, 0x43, 0x64, 0x32, 0x95, 0xa1, 0xd0, 0xe0, 0x5e, 0x1a, 0xe4, - 0x9b, 0x46, 0x09, 0x0b, 0x9a, 0x68, 0x85, 0x09, 0x8f, 0xce, 0xcd, 0x18, - 0x9a, 0x19, 0x58, 0x40, 0x0b, 0x66, 0x99, 0x3e, 0x59, 0x8a, 0x08, 0x27, - 0x72, 0xa0, 0x72, 0x5c, 0x3c, 0xb9, 0xff, 0xac, 0xa9, 0x7c, 0x43, 0x65, - 0xca, 0x70, 0x2e, 0xd1, 0x6a, 0xac, 0xad, 0xf8, 0x63, 0x27, 0x9a, 0xa9, - 0xb7, 0x34, 0xa0, 0xc6, 0x85, 0x43, 0x54, 0x3e, 0xe5, 0x00, 0x96, 0xeb, - 0xe4, 0x56, 0xe1, 0x50, 0x14, 0x9c, 0xdd, 0x9d, 0x0a, 0x3c, 0x55, 0x6a, - 0x62, 0x80, 0xa6, 0xaa, 0x7f, 0xab, 0xfc, 0x0e, 0xfb, 0x9e, 0xeb, 0xd7, - 0xbd, 0xf9, 0xb2, 0x3d, 0xc9, 0x1e, 0x8b, 0x35, 0x6e, 0xe8, 0x31, 0x78, - 0xc6, 0x69, 0xdc, 0x52, 0x10, 0xbb, 0xca, 0x60, 0x43, 0x7a, 0x0b, 0xb1, - 0xf6, 0xe9, 0x85, 0x2c, 0x0e, 0xf9, 0x8c, 0x92, 0xde, 0x84, 0x95, 0xab, - 0x9d, 0x44, 0x65, 0xd2, 0x49, 0xc6, 0x81, 0xe3, 0x50, 0x24, 0x9e, 0x3d, - 0xeb, 0x68, 0xcb, 0xcd, 0xda, 0x9f, 0x61, 0xcc, 0x0a, 0x88, 0xcf, 0x2c, - 0x95, 0x39, 0xe8, 0xef, 0x6b, 0x33, 0x21, 0x91, 0x5e, 0x52, 0x33, 0xd2, - 0xb5, 0x51, 0x26, 0xba, 0xd7, 0x05, 0xa2, 0x4e, 0xd7, 0x0b, 0x56, 0x09, - 0x0e, 0x2a, 0xc5, 0xd7, 0x86, 0x35, 0xcf, 0x26, 0x66, 0xbf, 0x4e, 0xd2, - 0xa9, 0xa5, 0xe8, 0x7e, 0x95, 0xb6, 0x21, 0x4d, 0x95, 0xc7, 0x4f, 0x81, - 0x75, 0xb6, 0xeb, 0xaa, 0x42, 0xbe, 0x63, 0x1c, 0x24, 0x67, 0x46, 0xf6, - 0xee, 0xc8, 0x36, 0x3b, 0xda, 0xd9, 0x34, 0x17, 0x11, 0xce, 0xef, 0x70, - 0xaf, 0x89, 0xae, 0xa4, 0x94, 0xa2, 0x34, 0x57, 0x2c, 0x87, 0x34, 0x13, - 0x58, 0xe7, 0x2f, 0xdf, 0x6d, 0xd7, 0x5d, 0xdc, 0x2a, 0x0a, 0x5c, 0x12, - 0x48, 0xae, 0xfb, 0x18, 0x5b, 0x17, 0x24, 0x4c, 0xf9, 0x1b, 0x46, 0x7a, - 0xd7, 0x3b, 0xe8, 0xee, 0x1f, 0x02, 0x00, 0x0f, 0x71, 0xbc, 0x39, 0x06, - 0x94, 0x3d, 0x04, 0x25, 0x47, 0x88, 0x5c, 0x8b, 0x4f, 0x3b, 0xeb, 0xa9, - 0xce, 0xa3, 0x29, 0x5c, 0x1b, 0xc6, 0x61, 0x3f, 0x53, 0x49, 0x55, 0x9e, - 0x39, 0xa2, 0x05, 0x68, 0xb4, 0xb0, 0x07, 0x42, 0x1d, 0x04, 0x4a, 0xda, - 0x5b, 0xe8, 0x70, 0xc4, 0x49, 0xfb, 0x23, 0xd3, 0xa5, 0x5c, 0x85, 0x1b, - 0x0a, 0xfa, 0x41, 0xc5, 0x30, 0xbe, 0x02, 0xbd, 0x48, 0x5c, 0x60, 0x3a, - 0x04, 0xa5, 0xc0, 0x71, 0xa6, 0xc1, 0x58, 0xe8, 0x27, 0x09, 0x64, 0x4a, - 0x82, 0x18, 0xc3, 0x62, 0x88, 0xc4, 0xe5, 0x3a, 0xd6, 0x09, 0x1f, 0xe4, - 0x09, 0x40, 0xd7, 0x4e, 0xfc, 0x67, 0xc5, 0x01, 0x98, 0x47, 0x48, 0xce, - 0xcf, 0x54, 0x4d, 0x38, 0xea, 0x46, 0x84, 0x48, 0xa7, 0xae, 0xcf, 0xd6, - 0xe2, 0x7d, 0x64, 0x59, 0xd7, 0x71, 0xf1, 0xb2, 0x94, 0x89, 0x87, 0xcc, - 0x0b, 0x9d, 0x0f, 0x3a, 0xa8, 0x7f, 0x25, 0xb1, 0x25, 0x9c, 0x3a, 0x1f, - 0x5c, 0xb7, 0xd4, 0xef, 0x0f, 0xdb, 0x03, 0x3a, 0xbb, 0xd5, 0x74, 0xdc, - 0xa2, 0x2c, 0x04, 0xa3, 0x06, 0x49, 0x52, 0xfb, 0x5e, 0x3b, 0x03, 0x99, - 0x2d, 0xb3, 0xd0, 0x15, 0xcf, 0x14, 0xa0, 0xc1, 0x3f, 0x78, 0x7b, 0xcc, - 0x87, 0x25, 0xb8, 0x61, 0xf5, 0x10, 0x0d, 0x90, 0xb3, 0x5a, 0x63, 0x9a, - 0x14, 0x8a, 0x33, 0x74, 0x0d, 0x84, 0x86, 0xda, 0xae, 0x03, 0x79, 0x85, - 0x14, 0x23, 0xb0, 0x66, 0x19, 0x54, 0x09, 0xed, 0xad, 0x08, 0xf5, 0x30, - 0x31, 0xa7, 0xf9, 0xa1, 0xe7, 0xd9, 0xbc, 0xf6, 0x11, 0xe8, 0x13, 0xb8, - 0xcc, 0xc6, 0x0d, 0xc1, 0xb8, 0x96, 0x41, 0x15, 0x3b, 0x39, 0x81, 0xf2, - 0x3f, 0x8b, 0xf8, 0x9f, 0x22, 0xb3, 0xe8, 0xac, 0xda, 0x91, 0x70, 0x46, - 0x0e, 0x74, 0x9b, 0xd9, 0xfb, 0x57, 0x67, 0x9f, 0x28, 0x32, 0x4f, 0xc6, - 0xc1, 0x17, 0x9d, 0x78, 0xd8, 0x6d, 0xc9, 0x47, 0xe2, 0xe1, 0x7e, 0x84, - 0x69, 0xdd, 0x0d, 0xe8, 0x64, 0x1c, 0x27, 0x44, 0x80, 0xd8, 0xf2, 0x92, - 0x6b, 0x80, 0x3f, 0xe4, 0x5b, 0x42, 0xa4, 0x0e, 0x82, 0x74, 0xb2, 0x2f, - 0x19, 0x9a, 0xfc, 0xf1, 0xf1, 0x25, 0x97, 0xca, 0x0c, 0xd1, 0xa9, 0x0c, - 0x93, 0x09, 0x0d, 0xcf, 0xbb, 0x43, 0xcb, 0xff, 0x1a, 0x20, 0xe1, 0xeb, - 0x0d, 0xce, 0x21, 0xb6, 0xec, 0xa5, 0x0d, 0x16, 0xb3, 0xe9, 0xde, 0x2a, - 0x71, 0x26, 0xc9, 0x2f, 0x20, 0xc3, 0x39, 0x1f, 0x67, 0x0f, 0xd3, 0xa0, - 0xc6, 0xe5, 0x67, 0x6b, 0xc7, 0xd5, 0xf2, 0x44, 0xac, 0x17, 0xd8, 0x8b, - 0xb5, 0xe0, 0xea, 0x0f, 0xc8, 0x98, 0x2f, 0x65, 0xf0, 0x89, 0x3a, 0x60, - 0xe8, 0x73, 0x1c, 0x4b, 0xcc, 0xe1, 0xfa, 0xea, 0x46, 0xfe, 0x44, 0x8d, - 0xea, 0x91, 0x3e, 0x06, 0xf2, 0x08, 0x5c, 0xe3, 0x7c, 0x8a, 0xf8, 0x04, - 0x21, 0x3d, 0x3a, 0x90, 0xeb, 0x55, 0xa9, 0x26, 0xf7, 0xb6, 0x77, 0xca, - 0xed, 0x00, 0xdd, 0xce, 0x1e, 0x7c, 0x1b, 0xe4, 0xdd, 0x7f, 0x12, 0x9e, - 0xc1, 0x1e, 0x58, 0xfa, 0x62, 0xa6, 0x33, 0x72, 0x71, 0xb8, 0x5e, 0x72, - 0x87, 0x9b, 0x75, 0x16, 0xd6, 0x2d, 0x12, 0xf4, 0xa9, 0xa9, 0x7f, 0xe6, - 0x1f, 0xaf, 0xb7, 0x99, 0x8d, 0x36, 0x56, 0xeb, 0x81, 0x36, 0x1e, 0x72, - 0xe9, 0x1e, 0xb8, 0xcf, 0xec, 0x1d, 0xe1, 0x2e, 0x39, 0x3a, 0x9c, 0x92, - 0x7f, 0xac, 0x8d, 0x13, 0x22, 0x89, 0xfd, 0xf5, 0x3d, 0x21, 0x08, 0x21, - 0x5b, 0x12, 0x84, 0x8a, 0xbe, 0x00, 0x2b, 0x06, 0x39, 0x48, 0x63, 0x98, - 0x1b, 0xd0, 0xd8, 0x7e, 0xd4, 0x32, 0x71, 0x81, 0xa9, 0xe8, 0x63, 0xd8, - 0x15, 0xb5, 0xb1, 0xc4, 0x85, 0x52, 0xc0, 0x4e, 0x30, 0x6e, 0xdf, 0x5f, - 0x2d, 0xfc, 0x9c, 0xa9, 0xa3, 0xf7, 0x56, 0xe3, 0x79, 0x9f, 0xa9, 0x73, - 0x7a, 0xfe, 0x22, 0xde, 0x50, 0x8c, 0x2f, 0xa6, 0x0d, 0xfd, 0xb3, 0x19, - 0x74, 0x2d, 0xb0, 0x44, 0xe3, 0x7c, 0xe7, 0xb1, 0x45, 0x5a, 0xf4, 0xa2, - 0x60, 0xe3, 0x37, 0x7c, 0x1f, 0x9e, 0x37, 0x9a, 0x38, 0x66, 0xee, 0x3e, - 0xe7, 0x78, 0x7d, 0xfe, 0xf2, 0x95, 0x74, 0x11, 0x38, 0x74, 0xf4, 0x5f, - 0x16, 0x46, 0x55, 0x66, 0x5d, 0x57, 0x40, 0xd9, 0x99, 0x9f, 0xa6, 0x08, - 0xc0, 0x6e, 0x6d, 0xde, 0xd5, 0xd5, 0x03, 0xad, 0xd3, 0xee, 0xbf, 0x64, - 0xd1, 0x4b, 0xc0, 0x39, 0x2c, 0xbf, 0x41, 0xe9, 0x8c, 0x72, 0x38, 0xf8, - 0x55, 0x08, 0x42, 0x50, 0x9b, 0xb6, 0xe1, 0x8d, 0x02, 0x83, 0xb7, 0xe4, - 0xf3, 0x7a, 0x5c, 0x8d, 0x21, 0x22, 0xda, 0xc5, 0xb2, 0x7c, 0xea, 0x59, - 0x56, 0xd5, 0xdc, 0xb6, 0x18, 0x62, 0x25, 0xfc, 0xb6, 0x19, 0xf6, 0x6a, - 0x93, 0x99, 0xfe, 0xbf, 0xc4, 0xdf, 0x8c, 0xc5, 0x5b, 0x55, 0xfd, 0xd8, - 0x95, 0x36, 0x2d, 0x12, 0x5e, 0xe4, 0xc1, 0xde, 0xc4, 0x49, 0x0d, 0x33, - 0x04, 0x83, 0xb9, 0x90, 0x6d, 0x64, 0x9d, 0x01, 0x05, 0xe9, 0xad, 0xb8, - 0x5d, 0x51, 0x82, 0xb7, 0xa4, 0xad, 0x5e, 0x27, 0xd3, 0xa7, 0xcd, 0x01, - 0xb3, 0xe9, 0xbe, 0x38, 0xb8, 0x61, 0x1a, 0xa3, 0x02, 0xd7, 0x1c, 0x0e, - 0x80, 0xc7, 0x21, 0xb0, 0xcd, 0x63, 0x88, 0xf6, 0x47, 0x08, 0x4d, 0x9e, - 0xfa, 0x00, 0xd0, 0xfb, 0xc3, 0x09, 0x0f, 0xde, 0x19, 0x22, 0x2e, 0x42, - 0x9c, 0x2d, 0xfe, 0x3e, 0xed, 0x09, 0x04, 0xb8, 0xf9, 0x53, 0xad, 0xe5, - 0x22, 0x8c, 0xfb, 0xaf, 0xe8, 0x0e, 0x8a, 0x9a, 0x15, 0x05, 0xea, 0x17, - 0x9f, 0x36, 0x5e, 0x49, 0x84, 0xcb, 0x5e, 0xc7, 0x41, 0x38, 0x9e, 0xb9, - 0xa1, 0xac, 0x3a, 0xa2, 0xaf, 0x66, 0x46, 0xb7, 0x4c, 0x02, 0x8a, 0xb7, - 0x83, 0x49, 0x34, 0x39, 0x2e, 0xbe, 0x0e, 0x4e, 0x98, 0x0c, 0x58, 0xc8, - 0x2d, 0x71, 0x61, 0xc2, 0x77, 0x97, 0xa3, 0x40, 0xc0, 0x24, 0x5b, 0x6e, - 0x5d, 0xc5, 0x33, 0x4c, 0xdb, 0x4f, 0xbc, 0x79, 0x01, 0xc0, 0x81, 0x9f, - 0x35, 0x89, 0xcf, 0x19, 0x90, 0x1f, 0x8d, 0xcf, 0x0b, 0x81, 0x0c, 0xfc, - 0x53, 0x80, 0xc8, 0x5c, 0x57, 0x1c, 0x51, 0xd9, 0x90, 0x62, 0xba, 0xd6, - 0x41, 0xc5, 0x02, 0x30, 0xdf, 0x29, 0x2f, 0x3d, 0xf2, 0xf8, 0x59, 0xb0, - 0x0f, 0x72, 0x22, 0xda, 0x6c, 0x55, 0x37, 0x02, 0xda, 0x56, 0x0a, 0x58, - 0xb1, 0xe9, 0x6f, 0x35, 0x18, 0xee, 0x5e, 0xf4, 0xce, 0xfd, 0xec, 0x88, - 0x9c, 0x1a, 0x2a, 0xb2, 0x7e, 0xd9, 0x0d, 0xa6, 0x53, 0xbf, 0x77, 0x4f, - 0x10, 0x3c, 0x5b, 0x1c, 0x12, 0x18, 0xa6, 0xf2, 0xc4, 0xcc, 0x80, 0xeb, - 0xb1, 0xe4, 0xd8, 0x99, 0x22, 0x39, 0xf7, 0x88, 0xe4, 0x56, 0x34, 0x04, - 0x43, 0x21, 0x19, 0xf9, 0x2d, 0xa1, 0x35, 0x0e, 0x1d, 0x95, 0xf0, 0x67, - 0xcc, 0x4c, 0x38, 0x40, 0x5b, 0xf6, 0x43, 0x0e, 0xb0, 0x30, 0x64, 0x6c, - 0x77, 0x79, 0xed, 0xe4, 0x5c, 0x1a, 0x0e, 0x46, 0x4f, 0xa8, 0x84, 0xfc, - 0xa6, 0x2d, 0x33, 0xc2, 0xed, 0xf3, 0x82, 0xeb, 0xfc, 0x2c, 0x3f, 0x0e, - 0x05, 0xa1, 0x2c, 0x61, 0x02, 0x72, 0xd4, 0x81, 0x85, 0x9e, 0xd8, 0xf4, - 0x2b, 0xf9, 0x4f, 0xb3, 0xc4, 0x97, 0x79, 0x7f, 0x3e, 0x55, 0xc8, 0xb2, - 0xf1, 0xda, 0x22, 0x1b, 0xaf, 0x67, 0x05, 0xb6, 0x67, 0x11, 0xc0, 0x4b, - 0xaf, 0x93, 0x47, 0x52, 0x5e, 0xac, 0x00, 0x39, 0xf9, 0xaf, 0xfd, 0x69, - 0xc0, 0xb6, 0xc3, 0x6a, 0x45, 0x6a, 0x8f, 0x75, 0x11, 0x7f, 0x80, 0xba, - 0xfa, 0xe4, 0x0e, 0xa7, 0x08, 0x9b, 0xbf, 0x7b, 0x4f, 0x15, 0x12, 0xe5, - 0xd5, 0x55, 0xc4, 0xf3, 0x52, 0x39, 0xe6, 0xc1, 0x78, 0xcd, 0xc2, 0x38, - 0xa0, 0x7e, 0x66, 0xc5, 0xc3, 0x94, 0x3d, 0x1b, 0xaa, 0x65, 0xa2, 0xb5, - 0x99, 0x86, 0x80, 0x80, 0xe6, 0xb7, 0x64, 0x54, 0x71, 0x00, 0x95, 0x80, - 0x9f, 0x0b, 0x46, 0xd1, 0x7c, 0xb2, 0x9c, 0x98, 0xb6, 0x88, 0x4e, 0xe4, - 0xaf, 0x32, 0x1d, 0x8a, 0x4f, 0x9f, 0xc3, 0xc7, 0xe4, 0x13, 0x25, 0x8e, - 0x2e, 0x00, 0x97, 0x2a, 0x6f, 0xc9, 0xff, 0x21, 0x10, 0xfe, 0xe9, 0x1a, - 0xcc, 0xee, 0x90, 0x58, 0xba, 0x5c, 0xf0, 0x8c, 0xd9, 0xfd, 0x91, 0x09, - 0xb9, 0xae, 0x4e, 0x7e, 0x99, 0x67, 0x96, 0x97, 0x9e, 0x7d, 0x4a, 0x05, - 0xc9, 0x8a, 0x52, 0xec, 0x70, 0x53, 0x24, 0xef, 0x65, 0xf5, 0xad, 0x85, - 0x0d, 0xd0, 0xbf, 0x86, 0x8a, 0x9d, 0x75, 0x3e, 0x1f, 0xc2, 0xd4, 0xfb, - 0xf5, 0x8f, 0x3c, 0xf3, 0xe5, 0x50, 0x79, 0xf6, 0xea, 0x4e, 0xa3, 0x55, - 0xd4, 0x58, 0x8c, 0x5c, 0x21, 0xfc, 0x06, 0x93, 0xb8, 0x81, 0xd3, 0x63, - 0x05, 0xa2, 0x81, 0xb3, 0x9e, 0x89, 0x85, 0xeb, 0xed, 0x53, 0x41, 0x16, - 0xd3, 0x28, 0x5b, 0x75, 0x69, 0xdb, 0xc5, 0x94, 0xf8, 0x58, 0xb2, 0xbb, - 0x0d, 0xba, 0x4b, 0xcb, 0x8f, 0xa9, 0x89, 0xd7, 0xf5, 0x71, 0x89, 0xe0, - 0x05, 0x1c, 0xa1, 0x98, 0xaf, 0x83, 0x79, 0x75, 0x8f, 0xf8, 0x1e, 0xe2, - 0xec, 0x9d, 0x01, 0xc8, 0x8f, 0x03, 0x54, 0x0d, 0x74, 0x44, 0xb7, 0xa8, - 0xe5, 0xa2, 0x68, 0x0c, 0x13, 0x39, 0x76, 0x72, 0x86, 0x08, 0x9a, 0xb5, - 0x20, 0x10, 0xda, 0x80, 0x58, 0xd9, 0x5e, 0xa5, 0xaf, 0x01, 0x68, 0x76, - 0x61, 0xf4, 0xcb, 0xd0, 0x2e, 0xb8, 0x4a, 0xb5, 0x95, 0xf0, 0xe4, 0x49, - 0x53, 0x31, 0xb4, 0x0c, 0xd0, 0xcc, 0x2b, 0x35, 0x32, 0xfa, 0xf8, 0xba, - 0xa9, 0x33, 0xec, 0xd2, 0x50, 0x6a, 0x33, 0x3b, 0x87, 0xc4, 0xf9, 0xbb, - 0x9c, 0x04, 0x1f, 0x7b, 0x35, 0x89, 0x7e, 0xab, 0x66, 0x93, 0x8d, 0x7d, - 0x58, 0x13, 0xf3, 0xf1, 0xba, 0xad, 0xd1, 0x8d, 0x4c, 0x29, 0xc1, 0x85, - 0x52, 0x53, 0x65, 0x0e, 0xb4, 0x2c, 0x93, 0x06, 0xb4, 0xdf, 0xae, 0x04, - 0x22, 0x6e, 0xeb, 0xf9, 0xcf, 0x27, 0xc6, 0xd2, 0x50, 0x78, 0xb7, 0x08, - 0x67, 0xb8, 0xe2, 0x75, 0x5c, 0x3b, 0x8c, 0x57, 0xf0, 0x6f, 0xe9, 0xde, - 0xef, 0x70, 0xf2, 0xa6, 0x91, 0x7b, 0xee, 0x5b, 0x01, 0x28, 0x28, 0x78, - 0x76, 0x7d, 0x0d, 0xa9, 0x36, 0xda, 0xf3, 0xeb, 0x04, 0x61, 0xaf, 0x34, - 0xe0, 0xd2, 0xcd, 0x10, 0x31, 0x2c, 0xb2, 0x32, 0xab, 0x2d, 0x94, 0x0b, - 0xa4, 0x68, 0x72, 0x83, 0xa7, 0xcc, 0x62, 0xe1, 0x29, 0x72, 0xe9, 0x06, - 0x3e, 0x38, 0x70, 0xe5, 0xd3, 0x8a, 0xda, 0x38, 0x7d, 0x54, 0x3d, 0x90, - 0xd5, 0xdf, 0xc8, 0x32, 0x63, 0xaa, 0x63, 0x3b, 0x8e, 0xb1, 0x4c, 0x6c, - 0x75, 0x9d, 0xe0, 0xb7, 0xb5, 0x32, 0xa8, 0x3b, 0xe8, 0xa9, 0x0a, 0xcf, - 0xc7, 0xc9, 0xc8, 0x85, 0x00, 0x80, 0x94, 0xd7, 0xd3, 0x96, 0x57, 0x21, - 0xa8, 0x75, 0xa6, 0x24, 0xf8, 0x42, 0xa9, 0x37, 0x8a, 0x4c, 0xb9, 0xe6, - 0x90, 0x06, 0x5b, 0x0c, 0xa0, 0x53, 0x9e, 0x8a, 0xd3, 0x6f, 0x23, 0x51, - 0xd6, 0xad, 0x57, 0x8d, 0x01, 0x8e, 0x70, 0x0b, 0x20, 0xd7, 0x7d, 0xf4, - 0xff, 0x92, 0xd3, 0xd1, 0x62, 0xf8, 0x3b, 0x82, 0xc0, 0xf9, 0x5f, 0xce, - 0xc3, 0x78, 0x01, 0x84, 0x55, 0x5c, 0xdc, 0xc9, 0xc5, 0xcd, 0xd1, 0x1a, - 0x60, 0xe5, 0x14, 0x9f, 0x1b, 0xa2, 0xf9, 0x6b, 0x4d, 0xfa, 0xa2, 0x36, - 0xab, 0xb6, 0x6b, 0x3b, 0xc9, 0x8d, 0x28, 0xae, 0x71, 0x95, 0x2c, 0x02, - 0xe9, 0x2b, 0x6b, 0x64, 0xe4, 0x62, 0xaf, 0x01, 0xd5, 0x90, 0xfa, 0xfd, - 0x06, 0xde, 0x4f, 0x7d, 0x4e, 0xd0, 0x16, 0x6f, 0x3e, 0x4f, 0x53, 0x2c, - 0xa0, 0x72, 0xcd, 0xcb, 0x87, 0xb9, 0x3a, 0x60, 0xef, 0xb9, 0xf9, 0x33, - 0xcd, 0x1b, 0x02, 0x95, 0x30, 0xdf, 0xb3, 0xbb, 0xc4, 0x87, 0x02, 0x02, - 0x85, 0xbd, 0x30, 0x57, 0x03, 0x82, 0x4e, 0x92, 0x02, 0x7e, 0x63, 0x27, - 0xaf, 0x09, 0xdb, 0x38, 0x0f, 0x13, 0x00, 0x6f, 0x55, 0x97, 0x2b, 0x93, - 0x80, 0x7f, 0x38, 0xdc, 0x69, 0xbc, 0xfe, 0x45, 0xc1, 0x2d, 0x2a, 0x5a, - 0x1d, 0x5e, 0x8b, 0xb2, 0xac, 0x6b, 0x11, 0x19, 0x9f, 0x45, 0xa0, 0x8f, - 0xbd, 0x2a, 0x11, 0x5d, 0x97, 0x95, 0x14, 0xac, 0x62, 0x21, 0xef, 0x76, - 0x9e, 0xc6, 0x89, 0x34, 0xae, 0xa5, 0xf3, 0xff, 0x44, 0x9f, 0x7e, 0xda, - 0xa7, 0xa9, 0xc1, 0x50, 0xeb, 0x59, 0xf9, 0x3d, 0xf9, 0xbd, 0x73, 0xee, - 0x15, 0xe0, 0x8c, 0x67, 0xa8, 0x04, 0x69, 0xb8, 0x80, 0x0d, 0x8f, 0xa4, - 0x48, 0x8b, 0xf0, 0xeb, 0x87, 0x5b, 0x24, 0xc0, 0x5c, 0xcd, 0x4b, 0x79, - 0x4e, 0xcc, 0xb4, 0x44, 0xea, 0x1e, 0xb7, 0x05, 0xd5, 0x76, 0x29, 0x8d, - 0x48, 0x7e, 0x9e, 0xc0, 0x6a, 0x77, 0x06, 0xe5, 0xc3, 0x0d, 0x83, 0xbb, - 0x5a, 0x47, 0xa0, 0x73, 0x49, 0x65, 0x63, 0x4e, 0xc0, 0x4e, 0x77, 0xe9, - 0xd9, 0x47, 0xdb, 0x6a, 0xd2, 0xea, 0x01, 0x3d, 0x87, 0xf9, 0x5d, 0x4f, - 0x89, 0x92, 0xc4, 0x64, 0xd2, 0x95, 0x74, 0x86, 0x39, 0x75, 0xe3, 0xb1, - 0xae, 0xf4, 0x9f, 0x56, 0x2d, 0x68, 0x34, 0x69, 0xe0, 0x8a, 0x93, 0xc3, - 0xf6, 0xfa, 0x5e, 0xa2, 0x86, 0x3f, 0x61, 0xdb, 0xa5, 0x84, 0x44, 0xec, - 0xed, 0x41, 0xb3, 0x2a, 0xa6, 0xb2, 0x17, 0xaf, 0x65, 0x1e, 0xc8, 0x7d, - 0x34, 0x15, 0x84, 0x91, 0x47, 0x02, 0x05, 0x5c, 0xe1, 0x94, 0x3e, 0xbe, - 0x4c, 0x00, 0x58, 0xcd, 0x59, 0x3e, 0x66, 0x45, 0xd3, 0xab, 0xb1, 0xd1, - 0xa9, 0x0c, 0x8e, 0x1d, 0xa0, 0xbb, 0xd2, 0xa7, 0x35, 0x77, 0x1c, 0xb0, - 0x8a, 0xbd, 0xfc, 0x03, 0x20, 0x4c, 0x74, 0x51, 0xcb, 0x80, 0x4e, 0x58, - 0x9e, 0x3b, 0x97, 0xd1, 0x12, 0x97, 0xb2, 0x90, 0xb5, 0x52, 0x15, 0x81, - 0x87, 0x7d, 0x9f, 0xad, 0x5c, 0x67, 0xd9, 0xd9, 0x14, 0xa9, 0xf9, 0xa9, - 0x3c, 0x0d, 0xfa, 0xae, 0xae, 0xec, 0xb1, 0xa6, 0x70, 0xd4, 0xf7, 0x09, - 0x68, 0x1f, 0x9a, 0x4b, 0x7e, 0x5a, 0xc7, 0x99, 0xf4, 0x87, 0x89, 0x21, - 0x2d, 0x3b, 0x53, 0xc7, 0x34, 0x6a, 0xbd, 0xd5, 0xbf, 0x91, 0xd6, 0xdc, - 0x27, 0x67, 0xba, 0x83, 0x95, 0xf5, 0xf5, 0x78, 0x8d, 0xa2, 0xa3, 0x86, - 0x5a, 0x8e, 0x22, 0x34, 0xc1, 0xb7, 0x5d, 0xc8, 0xbc, 0x10, 0x1c, 0x62, - 0xe5, 0x2c, 0x51, 0x07, 0xa7, 0x78, 0x68, 0x2b, 0x64, 0x74, 0xaa, 0x8b, - 0xe8, 0x82, 0x3b, 0xd8, 0x54, 0x03, 0x86, 0xe8, 0x18, 0x45, 0xd2, 0xa0, - 0xd9, 0x65, 0xb1, 0x23, 0x61, 0xd8, 0x29, 0x14, 0x00, 0xff, 0x6c, 0xb8, - 0xba, 0xd3, 0x73, 0xe8, 0x37, 0x11, 0x5c, 0xb4, 0x36, 0x1c, 0x15, 0xfa, - 0x9e, 0x3c, 0x41, 0xa8, 0x56, 0xfa, 0x45, 0x2c, 0x3b, 0xc0, 0x2f, 0x9d, - 0x8d, 0xcf, 0xf4, 0xce, 0x99, 0x37, 0x16, 0xed, 0x04, 0x6e, 0x11, 0xc7, - 0x1e, 0x44, 0x67, 0x8d, 0x84, 0xf6, 0xb6, 0x78, 0x4e, 0x7b, 0x68, 0x89, - 0xd2, 0xdc, 0x1a, 0x99, 0x31, 0x67, 0xf0, 0xf9, 0x2b, 0xa3, 0x2e, 0xec, - 0xe9, 0x73, 0x04, 0xae, 0x34, 0x54, 0xf9, 0x38, 0xa3, 0x9e, 0x44, 0x20, - 0x91, 0xbb, 0x0e, 0xe9, 0x4b, 0x04, 0x7a, 0xbf, 0xca, 0x63, 0xad, 0xc5, - 0xd7, 0x83, 0x60, 0xe6, 0x65, 0xd4, 0x23, 0xf8, 0x02, 0xc8, 0xc6, 0x89, - 0xd1, 0x21, 0x69, 0x62, 0x0a, 0x0e, 0x7f, 0x25, 0x7c, 0x2e, 0x82, 0x3b, - 0xca, 0x80, 0x2f, 0x33, 0x4e, 0xa9, 0x0c, 0x57, 0x7a, 0x59, 0x13, 0x78, - 0x8b, 0x8d, 0x82, 0xff, 0x14, 0x77, 0x25, 0x9f, 0xe5, 0x48, 0x3b, 0xbf, - 0xeb, 0x0c, 0x64, 0x79, 0x61, 0x2a, 0x11, 0x7a, 0x41, 0xd1, 0x1b, 0x47, - 0x26, 0x96, 0x96, 0x40, 0xe8, 0x94, 0x70, 0x6f, 0x48, 0x94, 0x9d, 0x5b, - 0x77, 0x7b, 0x65, 0x99, 0x74, 0x23, 0x37, 0xf7, 0x90, 0x0f, 0xa7, 0x0f, - 0xf0, 0x06, 0x99, 0x13, 0x98, 0x94, 0xb8, 0x9e, 0x4d, 0xd1, 0x50, 0x49, - 0xb6, 0xc5, 0xbe, 0xef, 0x2c, 0xb2, 0x4e, 0x2e, 0x86, 0xfb, 0x79, 0xd1, - 0x6e, 0xf1, 0xfd, 0x52, 0x26, 0x55, 0x92, 0x0c, 0xa9, 0xff, 0x12, 0xec, - 0x05, 0x9b, 0x39, 0xc0, 0x7a, 0x0b, 0x37, 0x82, 0xe2, 0xa4, 0xab, 0xff, - 0x6e, 0x6d, 0x4b, 0x1c, 0x21, 0xd5, 0xc1, 0x33, 0xe9, 0x6e, 0x9f, 0xfc, - 0x3e, 0xdf, 0x4f, 0xa6, 0xa0, 0xaa, 0x7a, 0x2c, 0xa3, 0xc5, 0xbe, 0xf0, - 0xd7, 0xbc, 0xbb, 0xbf, 0xdd, 0x77, 0xd4, 0x82, 0x20, 0x83, 0xd4, 0x9e, - 0xfd, 0x30, 0x64, 0xbc, 0x00, 0xf2, 0x7a, 0xf9, 0x27, 0x6c, 0xd8, 0xb7, - 0x2b, 0xaa, 0xd7, 0x21, 0x78, 0x11, 0xe9, 0x73, 0x6c, 0x38, 0x9f, 0xe5, - 0x47, 0x05, 0x5b, 0x1c, 0x4d, 0x19, 0x68, 0x18, 0x44, 0xa2, 0xa5, 0x4e, - 0x2e, 0x82, 0xe8, 0xcd, 0xaf, 0xd8, 0x41, 0x33, 0x9e, 0x2a, 0xfd, 0x90, - 0x9c, 0xa5, 0xfb, 0xd1, 0xbb, 0xba, 0x2e, 0x9a, 0xf5, 0xa5, 0x85, 0xab, - 0xed, 0x41, 0xeb, 0xa3, 0x56, 0x06, 0x82, 0xaa, 0xc1, 0x7e, 0x36, 0x24, - 0xbb, 0xf6, 0xef, 0x2c, 0x36, 0x6e, 0xc5, 0x69, 0xaf, 0x37, 0x58, 0x9f, - 0xcd, 0xc5, 0x2c, 0xb1, 0xc6, 0x3c, 0xb2, 0x27, 0xb7, 0xe3, 0xe9, 0xbf, - 0x7a, 0xd0, 0xd3, 0x40, 0x9c, 0x54, 0x5d, 0xe6, 0x3b, 0x9d, 0xe8, 0x82, - 0x81, 0x81, 0xc3, 0x16, 0xb2, 0xaa, 0x2c, 0x97, 0xe9, 0x52, 0x16, 0x7c, - 0x67, 0xd4, 0xce, 0xd1, 0x53, 0x4c, 0xa6, 0x93, 0x7e, 0xa7, 0x6e, 0xb0, - 0x44, 0x0e, 0x80, 0xf6, 0xf1, 0x9d, 0x28, 0xfd, 0x90, 0xf0, 0xb2, 0x98, - 0x2b, 0x79, 0xd6, 0x93, 0x6d, 0x8b, 0xfe, 0x60, 0x74, 0xb2, 0x91, 0x9c, - 0x2d, 0x94, 0x56, 0xed, 0x20, 0x05, 0xa5, 0x5d, 0xcb, 0xa0, 0xce, 0x49, - 0xab, 0x56, 0xb3, 0x48, 0xca, 0xd0, 0xba, 0x8a, 0x03, 0x0a, 0x94, 0xda, - 0x06, 0xff, 0x46, 0xdd, 0x20, 0x89, 0x8e, 0x1e, 0x18, 0x2c, 0x74, 0xd4, - 0xc7, 0x8b, 0x23, 0x93, 0x93, 0x61, 0x5f, 0xf3, 0x00, 0x78, 0xa5, 0xa7, - 0x76, 0x91, 0x09, 0xdc, 0x32, 0xa0, 0xae, 0x68, 0xb0, 0x63, 0x38, 0x0d, - 0xa1, 0x75, 0xe8, 0x75, 0x0f, 0xa8, 0x1d, 0x4d, 0x6f, 0x1a, 0x6b, 0xf2, - 0x13, 0x0c, 0x1a, 0xb5, 0x90, 0xb1, 0xe1, 0x5e, 0x70, 0xc6, 0x29, 0x64, - 0x95, 0xae, 0x06, 0xf3, 0x7e, 0x33, 0x36, 0xf3, 0xa0, 0xb7, 0x29, 0xbb, - 0x33, 0x5a, 0xb5, 0x34, 0x12, 0x98, 0x6e, 0x15, 0x04, 0xdc, 0xb3, 0xae, - 0xa6, 0x67, 0xdc, 0xe1, 0x76, 0x66, 0x1d, 0x79, 0x46, 0x99, 0xf2, 0x17, - 0xf5, 0x69, 0x36, 0xe1, 0x68, 0xdd, 0x95, 0x41, 0xb1, 0x68, 0x7e, 0xe4, - 0xaf, 0x9a, 0x76, 0x48, 0x14, 0x07, 0x28, 0xc5, 0xb9, 0x6a, 0xcb, 0x75, - 0xbe, 0x54, 0xae, 0x82, 0x25, 0x63, 0xa4, 0x9d, 0x6e, 0x0c, 0x31, 0xb7, - 0x2d, 0x2f, 0x06, 0x39, 0x7d, 0x5a, 0x65, 0x9d, 0x55, 0xa8, 0xfa, 0x47, - 0x8b, 0x06, 0x81, 0xb2, 0x93, 0xa2, 0x75, 0x96, 0xdf, 0xe5, 0x9d, 0x70, - 0xa9, 0x43, 0x99, 0xbb, 0xe8, 0xd0, 0xf8, 0xb4, 0x3d, 0x24, 0x61, 0xcf, - 0x2c, 0x07, 0x39, 0x3b, 0x13, 0x1c, 0x35, 0x5a, 0xc8, 0xdf, 0x33, 0x02, - 0xa0, 0x10, 0x85, 0x54, 0xe2, 0x2c, 0x86, 0x8c, 0xc2, 0x01, 0xaa, 0xe7, - 0xff, 0x44, 0x30, 0x5a, 0xf8, 0xc8, 0xa4, 0xe4, 0x7b, 0x89, 0xa4, 0x2c, - 0xf4, 0xf8, 0x92, 0x73, 0xe4, 0x4c, 0x2a, 0xba, 0xce, 0xff, 0x07, 0xc3, - 0xd3, 0xfc, 0x36, 0x21, 0x29, 0x79, 0x23, 0xfd, 0x2a, 0x5f, 0xc7, 0x91, - 0x0b, 0xa3, 0x1e, 0x90, 0xb2, 0xbe, 0xca, 0x56, 0xcf, 0x60, 0x72, 0x51, - 0x3a, 0x9b, 0x8e, 0x05, 0xf4, 0x73, 0xc0, 0x90, 0x57, 0x29, 0x23, 0x6c, - 0x44, 0x53, 0xbe, 0x82, 0xcd, 0xff, 0x67, 0xe3, 0x9c, 0x81, 0xde, 0x7e, - 0x64, 0x74, 0x23, 0x95, 0x72, 0x66, 0xcd, 0x00, 0x12, 0x7d, 0xe5, 0x53, - 0xb9, 0x6c, 0x05, 0x24, 0xfd, 0x36, 0xa9, 0x9c, 0x20, 0xca, 0xc2, 0xcf, - 0x10, 0x4f, 0xec, 0xac, 0xc2, 0xa1, 0xe1, 0xaf, 0xdc, 0xa4, 0x2f, 0x1f, - 0x22, 0xd9, 0x26, 0xb8, 0xbd, 0x4d, 0x0c, 0xdb, 0xfe, 0x92, 0x78, 0x94, - 0xe1, 0xe6, 0xdd, 0x42, 0x75, 0x10, 0xaa, 0xb2, 0x5f, 0x70, 0xfe, 0xb6, - 0x74, 0xf6, 0xfa, 0x07, 0x49, 0xb1, 0xf5, 0x18, 0x72, 0xa9, 0x32, 0x71, - 0xaa, 0x21, 0xaf, 0x48, 0x8f, 0xb8, 0x17, 0x71, 0x03, 0xac, 0x47, 0xf1, - 0x23, 0x04, 0xab, 0x9c, 0x75, 0xa6, 0xb8, 0xe1, 0xb3, 0x85, 0xe0, 0xdf, - 0xfc, 0x44, 0x73, 0xab, 0xe7, 0x70, 0xc3, 0xb1, 0x27, 0x88, 0x4a, 0x55, - 0xdc, 0x68, 0xca, 0xea, 0xfe, 0xbd, 0x0f, 0x67, 0x64, 0x25, 0xe0, 0xe2, - 0xde, 0x99, 0xf4, 0x73, 0x90, 0x8d, 0xcb, 0x31, 0x56, 0xf7, 0x86, 0xcd, - 0x9d, 0x16, 0x4a, 0x4b, 0xba, 0xd9, 0xa5, 0x21, 0x29, 0x62, 0x9e, 0x1d, - 0x42, 0x47, 0x04, 0xc5, 0x11, 0x94, 0x4e, 0x31, 0x57, 0xea, 0xfb, 0x35, - 0x1c, 0x48, 0xe5, 0x90, 0x8c, 0x01, 0x2c, 0x56, 0x83, 0xbd, 0xbb, 0xe5, - 0xec, 0x2f, 0x4a, 0x39, 0x76, 0xaf, 0xe7, 0x0e, 0xa2, 0xc8, 0x45, 0x10, - 0x0d, 0x14, 0x92, 0x1c, 0x0c, 0x9b, 0xab, 0x38, 0x47, 0xde, 0xfb, 0x6a, - 0x7a, 0x3f, 0x09, 0x9a, 0x28, 0x28, 0x05, 0x3a, 0x4b, 0xf9, 0x1a, 0xe6, - 0x89, 0x5c, 0x60, 0x44, 0xc5, 0xfe, 0x5a, 0x48, 0x5c, 0xdc, 0x64, 0x6e, - 0xf5, 0x02, 0xf7, 0x9d, 0x09, 0x9e, 0x11, 0x69, 0x58, 0x07, 0xb6, 0x0b, - 0x29, 0x0d, 0x29, 0xa2, 0x47, 0xd1, 0x8c, 0xad, 0x94, 0x49, 0x00, 0x6e, - 0x53, 0x60, 0x1d, 0x43, 0x65, 0x02, 0x3c, 0xe6, 0x7e, 0x74, 0xcf, 0x7a, - 0x95, 0x25, 0x6a, 0x53, 0xc4, 0xb4, 0xe6, 0xd5, 0xe5, 0x08, 0xd9, 0xa4, - 0x0b, 0x98, 0x82, 0xd9, 0x50, 0x54, 0xa5, 0x13, 0x84, 0x01, 0x6a, 0x4f, - 0x65, 0xc7, 0x27, 0x61, 0x5e, 0xbb, 0xb3, 0x3c, 0xe3, 0x11, 0xfc, 0x23, - 0xef, 0xbd, 0xe8, 0x30, 0xb3, 0xcd, 0x4d, 0xd1, 0x55, 0xb6, 0x70, 0x1d, - 0x1f, 0x1c, 0x2d, 0x3c, 0x95, 0xb0, 0x13, 0x5f, 0x04, 0xc1, 0x04, 0x03, - 0xaf, 0xa4, 0x80, 0x36, 0xee, 0x93, 0x9f, 0x82, 0xa3, 0x8c, 0x9a, 0x5d, - 0xd2, 0xec, 0x34, 0xe1, 0xce, 0x51, 0x58, 0xd8, 0xb4, 0x27, 0xc9, 0xf9, - 0xc2, 0xe5, 0xc9, 0x9b, 0x14, 0x26, 0x71, 0x16, 0xf2, 0xbf, 0xd3, 0x1d, - 0x37, 0x03, 0xbc, 0xef, 0xcf, 0x05, 0x49, 0x7c, 0x54, 0xb4, 0xaa, 0xba, - 0x08, 0x36, 0xb4, 0x33, 0x91, 0xa5, 0xba, 0xb2, 0xd7, 0x79, 0xd2, 0x14, - 0x8d, 0xfb, 0xf3, 0xac, 0xe9, 0xb7, 0xb7, 0xd4, 0xe1, 0xf1, 0xc6, 0x1e, - 0xd6, 0x77, 0x05, 0x2a, 0x43, 0xbe, 0x9f, 0x80, 0xba, 0x6a, 0x5c, 0xc2, - 0x29, 0x5b, 0x28, 0x7e, 0x58, 0x40, 0x44, 0x0b, 0x8f, 0x01, 0x50, 0xaf, - 0x04, 0x5f, 0xdf, 0x29, 0x3a, 0x11, 0x51, 0xc5, 0x06, 0x11, 0x81, 0x51, - 0xb2, 0x65, 0x55, 0x79, 0x08, 0xb8, 0xea, 0x7e, 0x4e, 0xb0, 0x08, 0xa3, - 0xa0, 0x78, 0xae, 0x17, 0x1b, 0xec, 0x12, 0xfe, 0xc9, 0x29, 0x9f, 0xdc, - 0x8d, 0xa6, 0x98, 0x18, 0x78, 0xcd, 0xed, 0x5d, 0x41, 0xd2, 0x69, 0x0d, - 0x0c, 0x13, 0x0d, 0xe0, 0x6e, 0xfb, 0x43, 0xf6, 0x6d, 0x2b, 0x12, 0xb0, - 0x0c, 0x04, 0xb8, 0x68, 0xcd, 0x1e, 0x92, 0x53, 0x15, 0x1c, 0x52, 0x8c, - 0xf7, 0xe6, 0xa3, 0x3d, 0x99, 0x30, 0x73, 0x09, 0xb8, 0xa7, 0x8a, 0x54, - 0xf6, 0xf2, 0x0f, 0xca, 0x0a, 0x85, 0x59, 0xed, 0xd1, 0xbd, 0xca, 0x47, - 0x1b, 0x99, 0x90, 0x02, 0x75, 0xc8, 0xf6, 0xc7, 0x99, 0x2c, 0xa3, 0xf2, - 0x69, 0x22, 0x31, 0xce, 0xd8, 0x12, 0xf2, 0x6a, 0x5d, 0x98, 0x73, 0xbd, - 0x96, 0xe0, 0x90, 0x64, 0xbb, 0x90, 0x00, 0xb5, 0x0e, 0xf4, 0x9f, 0x18, - 0x58, 0xb8, 0x03, 0xa3, 0xe1, 0xab, 0xc1, 0xe7, 0xd5, 0x67, 0x3f, 0xdf, - 0x65, 0x2d, 0x07, 0x7f, 0x30, 0xc2, 0x08, 0xb9, 0x15, 0x15, 0x36, 0x6e, - 0x9b, 0xba, 0x57, 0x1c, 0xfe, 0xc1, 0xf4, 0xec, 0x67, 0xd8, 0x5f, 0x59, - 0x25, 0x1e, 0x48, 0x0c, 0x23, 0x81, 0xe1, 0x54, 0xac, 0x4c, 0x63, 0xce, - 0x7c, 0x7d, 0x05, 0x65, 0x72, 0x89, 0x13, 0x65, 0x47, 0xbd, 0x03, 0x0d, - 0xbb, 0xea, 0xdb, 0x16, 0x20, 0xdb, 0x7b, 0x7e, 0x48, 0xa5, 0x97, 0x06, - 0xef, 0x0a, 0x66, 0x25, 0x94, 0x36, 0x7d, 0xee, 0xd1, 0x78, 0xc7, 0x5e, - 0x06, 0xe0, 0x81, 0xed, 0xcb, 0x2c, 0xb2, 0xdc, 0x21, 0x41, 0x14, 0x7e, - 0x45, 0x28, 0x14, 0x06, 0x78, 0x81, 0x3b, 0x51, 0x6b, 0x6c, 0x08, 0x46, - 0xa8, 0x8c, 0xbb, 0xf3, 0xe1, 0x7e, 0x06, 0x24, 0x76, 0xdc, 0x04, 0x7f, - 0x76, 0x7f, 0xa5, 0xd6, 0x2b, 0x5d, 0x70, 0x43, 0xc2, 0x4b, 0x34, 0x88, - 0xca, 0xb3, 0xb0, 0x19, 0x98, 0x91, 0x86, 0x7d, 0x1f, 0x30, 0xb0, 0x84, - 0x75, 0x93, 0x62, 0x8f, 0x28, 0xbf, 0xba, 0x77, 0xfb, 0x43, 0xb9, 0xb7, - 0x7d, 0x6e, 0x32, 0xc2, 0xa0, 0xde, 0xbd, 0x39, 0x38, 0x0e, 0x6c, 0x92, - 0xf9, 0xb5, 0xab, 0x2a, 0x4a, 0x4b, 0xa2, 0x03, 0x20, 0x69, 0x70, 0x12, - 0x58, 0x4d, 0xc4, 0x7a, 0x92, 0x8d, 0x67, 0xd0, 0xa6, 0x20, 0xa1, 0x0e, - 0x06, 0xa1, 0x52, 0xce, 0xaf, 0xd2, 0x5c, 0xf0, 0xb5, 0x83, 0x5a, 0x90, - 0x81, 0xcf, 0x17, 0xba, 0x6f, 0x2d, 0xa6, 0x23, 0x2c, 0x37, 0xf4, 0xbb, - 0x0a, 0x3d, 0xfb, 0x73, 0x5a, 0xf2, 0xa5, 0x84, 0x7b, 0x0b, 0x5f, 0xca, - 0xf3, 0x44, 0x1a, 0x2e, 0x4c, 0x07, 0xe2, 0xe7, 0x98, 0xc8, 0xbc, 0x47, - 0xd5, 0xb5, 0x83, 0x9f, 0x6b, 0xc2, 0xae, 0xd9, 0x57, 0x4f, 0x03, 0x7e, - 0xfe, 0x08, 0x6d, 0xab, 0x2a, 0xc7, 0xd7, 0x1c, 0x08, 0x31, 0xb7, 0x5d, - 0xc7, 0x13, 0x67, 0xfd, 0x85, 0x0e, 0x04, 0xad, 0x73, 0xb1, 0x36, 0xaa, - 0xbd, 0x3d, 0x9f, 0x4f, 0x54, 0x84, 0xbe, 0x1c, 0x83, 0x53, 0xfa, 0x0e, - 0xc3, 0x72, 0x5a, 0xfd, 0xa0, 0x9b, 0xec, 0x07, 0xdd, 0x03, 0x86, 0x64, - 0x89, 0xee, 0x30, 0x32, 0xe6, 0xef, 0x0a, 0xb0, 0x65, 0x3e, 0xe7, 0x76, - 0x21, 0x60, 0x26, 0x49, 0x01, 0xe9, 0x53, 0xd4, 0xb4, 0x7d, 0xa6, 0x3d, - 0x3b, 0x8d, 0x33, 0x1e, 0x10, 0x16, 0x31, 0x69, 0x4e, 0x89, 0x61, 0x78, - 0x08, 0xf8, 0x02, 0x6c, 0x95, 0xb0, 0xda, 0xe3, 0xaf, 0xc4, 0x4b, 0x78, - 0x33, 0x32, 0xc4, 0xf6, 0xba, 0xa6, 0x2c, 0xdd, 0xd8, 0x74, 0x8d, 0x7e, - 0xde, 0x51, 0xb8, 0x23, 0x57, 0xf0, 0x9e, 0x2e, 0xdc, 0xe6, 0xef, 0x50, - 0x96, 0x9a, 0xeb, 0xea, 0x49, 0xf4, 0x57, 0x52, 0x9a, 0x69, 0x71, 0x12, - 0xf4, 0xad, 0x47, 0x83, 0xee, 0x1f, 0x9e, 0x3d, 0x40, 0xf5, 0xd3, 0x89, - 0xe5, 0x6a, 0xbf, 0x6e, 0xb9, 0x52, 0xc8, 0x54, 0xc3, 0x27, 0x96, 0xb5, - 0xcd, 0x3e, 0x4e, 0x0f, 0x04, 0xd7, 0xaa, 0x22, 0x61, 0x61, 0xe1, 0x0b, - 0x1b, 0x2a, 0x7b, 0x7e, 0xdb, 0x8c, 0x0a, 0x36, 0x3b, 0x88, 0xea, 0x4a, - 0xf1, 0x5a, 0x61, 0xe6, 0xd9, 0x4a, 0x6a, 0x00, 0x7b, 0x0a, 0x98, 0x32, - 0x7a, 0x77, 0x3a, 0x87, 0x8e, 0x64, 0xb4, 0x5c, 0x63, 0x8b, 0x0a, 0x56, - 0x1f, 0xd1, 0x41, 0xd7, 0xe7, 0xbc, 0x1e, 0xb9, 0x48, 0x94, 0x59, 0x2b, - 0x9d, 0xa8, 0x61, 0xbf, 0x55, 0xb7, 0x93, 0x12, 0xd2, 0xa2, 0x40, 0x52, - 0x48, 0xfe, 0xcc, 0x41, 0xf2, 0xc3, 0xaf, 0x32, 0xa6, 0xae, 0x10, 0xe8, - 0x0f, 0x99, 0x38, 0x8a, 0x15, 0x23, 0x8e, 0x5c, 0xec, 0x51, 0x92, 0x2a, - 0x1a, 0x8f, 0xad, 0x1b, 0x5d, 0xdb, 0x9c, 0x3f, 0x94, 0x70, 0x4a, 0x61, - 0x8a, 0x16, 0x37, 0x3f, 0x07, 0xf6, 0xa7, 0xfb, 0x3a, 0xcf, 0x67, 0xdc, - 0xd7, 0x96, 0x0a, 0xe2, 0x87, 0xb4, 0x61, 0xa1, 0x71, 0x6c, 0x28, 0xf1, - 0xe7, 0x5c, 0x05, 0xf5, 0xf5, 0xcb, 0x9e, 0xf3, 0x95, 0xac, 0x14, 0x34, - 0xe8, 0x0f, 0xe7, 0x43, 0x97, 0x67, 0x58, 0x45, 0x78, 0x78, 0x8c, 0xf0, - 0xab, 0xbd, 0xd5, 0x91, 0x76, 0x9e, 0xdf, 0xf0, 0x44, 0xfb, 0x9c, 0x7b, - 0x7d, 0x40, 0x0f, 0xa0, 0xdc, 0xa0, 0x0f, 0x29, 0xf7, 0x73, 0x14, 0xcf, - 0x87, 0x96, 0x3c, 0xf4, 0x8e, 0x57, 0xd2, 0x18, 0xf8, 0x02, 0xeb, 0x14, - 0x8b, 0x33, 0x2a, 0x10, 0x26, 0x39, 0xf0, 0x83, 0x45, 0x58, 0x6d, 0x86, - 0x1f, 0x84, 0x99, 0xfa, 0x72, 0xe5, 0x8a, 0x89, 0xde, 0x18, 0xed, 0xc3, - 0x79, 0x0c, 0x5f, 0x96, 0x86, 0x79, 0x88, 0x1a, 0xff, 0x68, 0x5d, 0x2f, - 0xff, 0xbd, 0xa2, 0xba, 0xa9, 0x29, 0xcd, 0xc4, 0x14, 0xda, 0x41, 0x3e, - 0xe4, 0xf9, 0x0d, 0x44, 0xe1, 0xad, 0x2a, 0xb5, 0x09, 0x71, 0x7a, 0x4e, - 0x60, 0x57, 0x61, 0xd2, 0x08, 0x1c, 0x0d, 0x0d, 0xb8, 0x60, 0x18, 0xb5, - 0xeb, 0xa5, 0xe7, 0x89, 0x73, 0x23, 0x55, 0x85, 0x9b, 0xec, 0x70, 0xa6, - 0x79, 0xf9, 0xe5, 0xb2, 0xa5, 0x62, 0x26, 0xeb, 0x62, 0x5f, 0x15, 0x9c, - 0x8b, 0x92, 0x25, 0xc2, 0x66, 0xcb, 0xc6, 0x12, 0x74, 0x4c, 0x58, 0x05, - 0xdd, 0xbd, 0xd1, 0x8c, 0x03, 0x47, 0x8c, 0x33, 0x0f, 0xc2, 0x9e, 0xcf, - 0x7d, 0x1c, 0x60, 0xfb, 0x61, 0x54, 0x0d, 0x3f, 0x73, 0x78, 0x3c, 0x84, - 0x89, 0x10, 0x76, 0xb7, 0xa6, 0x5e, 0x45, 0xe7, 0x18, 0x71, 0x82, 0xfd, - 0xaf, 0x3a, 0xd3, 0xc8, 0xa2, 0x66, 0x99, 0x0d, 0x58, 0x6c, 0xdb, 0x40, - 0xf1, 0x45, 0x21, 0xfd, 0xc3, 0x54, 0x8a, 0xa3, 0x64, 0x7a, 0xbf, 0x30, - 0x55, 0xc5, 0x22, 0xf8, 0x27, 0x74, 0x70, 0x89, 0x12, 0x72, 0xa5, 0xa6, - 0x5b, 0x0f, 0xd6, 0x50, 0x16, 0x14, 0x30, 0x75, 0x28, 0x5b, 0x79, 0x23, - 0x9f, 0x9d, 0xb4, 0xd9, 0x5b, 0xc4, 0x24, 0xf5, 0x0b, 0xc6, 0xd0, 0xc3, - 0x5d, 0xf3, 0x83, 0x45, 0x73, 0x49, 0x41, 0xdc, 0xac, 0x2e, 0x11, 0xc1, - 0x87, 0xe4, 0x02, 0x80, 0xd7, 0x4e, 0x53, 0x86, 0xca, 0x8f, 0x0b, 0xf4, - 0x02, 0xd8, 0xe7, 0x18, 0x47, 0x65, 0x5e, 0x35, 0x78, 0x8a, 0xea, 0x1f, - 0x5b, 0x9b, 0x91, 0xb0, 0x52, 0x1f, 0x3e, 0xe9, 0x2e, 0xbb, 0x09, 0x29, - 0xc2, 0xd2, 0x8a, 0x4e, 0x00, 0x5f, 0xab, 0xe8, 0x17, 0x83, 0x90, 0x44, - 0x47, 0xcb, 0x7e, 0x1d, 0x3c, 0xfa, 0xec, 0x62, 0xd0, 0x1a, 0x33, 0x87, - 0xdb, 0x5e, 0xd1, 0x59, 0x2f, 0x80, 0x2d, 0xde, 0x21, 0x6f, 0x80, 0xf0, - 0x0b, 0xe2, 0x3d, 0x2d, 0x03, 0x58, 0x9e, 0x1d, 0xc9, 0xa5, 0xa0, 0x4f, - 0x4b, 0xa8, 0x58, 0x75, 0xfd, 0x17, 0x1e, 0xdf, 0x60, 0xf0, 0x5c, 0x77, - 0xa1, 0x13, 0xfc, 0x37, 0xde, 0x05, 0xd7, 0x04, 0x3a, 0x1f, 0x43, 0xea, - 0x5e, 0x17, 0x74, 0x02, 0xe0, 0x4d, 0x9d, 0x1b, 0x4a, 0xf6, 0x03, 0xf1, - 0x16, 0xd6, 0x96, 0x82, 0xce, 0x5e, 0x59, 0xfe, 0xe1, 0x2d, 0x01, 0xde, - 0x7b, 0x1c, 0xd9, 0x3b, 0xe3, 0xba, 0x20, 0x6c, 0xe6, 0x80, 0x16, 0x3c, - 0xfe, 0x38, 0x42, 0x01, 0xbc, 0xdb, 0xe8, 0xfb, 0xda, 0xac, 0x40, 0xc3, - 0xd5, 0xc0, 0xe8, 0xdd, 0xd7, 0x90, 0xd0, 0x6a, 0x3e, 0xfa, 0x7e, 0xb5, - 0x7b, 0x49, 0x3a, 0xa4, 0xfa, 0xd3, 0xfe, 0x80, 0x21, 0x04, 0x5b, 0x18, - 0x7c, 0xf4, 0xeb, 0x26, 0xd5, 0x18, 0x33, 0x49, 0xdc, 0x4d, 0x8c, 0x4e, - 0xe8, 0x08, 0x1b, 0x7f, 0xcf, 0xe0, 0x4b, 0x09, 0xb5, 0xaa, 0x21, 0x8e, - 0xcf, 0x85, 0x9d, 0xb2, 0x3a, 0x5e, 0x6d, 0xba, 0x08, 0x30, 0x74, 0xef, - 0x2f, 0x4a, 0x60, 0xb1, 0x41, 0xd3, 0xe9, 0xf0, 0xe8, 0x04, 0xe8, 0xe1, - 0x38, 0x6f, 0xfe, 0x7c, 0xdb, 0x23, 0x4f, 0xd3, 0x2f, 0x8e, 0xd2, 0xa7, - 0xdc, 0xd5, 0xcf, 0x4e, 0x7e, 0xfd, 0x86, 0x63, 0x2c, 0x39, 0x71, 0x71, - 0x5c, 0xc3, 0x91, 0x72, 0xdd, 0xce, 0xd3, 0xee, 0xf3, 0x05, 0x36, 0x96, - 0xfd, 0x0a, 0x2a, 0xee, 0x1b, 0x5d, 0x9f, 0x61, 0xc9, 0x81, 0xda, 0xd7, - 0x7f, 0x69, 0x25, 0xce, 0xaa, 0x61, 0xa1, 0x83, 0x38, 0x0f, 0x2b, 0x44, - 0xed, 0x0e, 0x26, 0x66, 0x10, 0x99, 0xff, 0x7a, 0xff, 0x80, 0x37, 0xca, - 0xc5, 0x6e, 0x19, 0xca, 0x67, 0x2e, 0x24, 0xad, 0xd1, 0x3c, 0xb5, 0xb2, - 0xc7, 0x9e, 0x93, 0x12, 0x97, 0x87, 0xa3, 0xfa, 0x69, 0x6c, 0x2b, 0x32, - 0x6a, 0x2c, 0xa6, 0x3b, 0xec, 0x04, 0x8e, 0xe0, 0x49, 0xa3, 0xb0, 0xb8, - 0x5a, 0xd7, 0x3f, 0x44, 0x3a, 0xdf, 0x71, 0x6f, 0xae, 0x16, 0x19, 0xfc, - 0xeb, 0xbd, 0x85, 0x41, 0x62, 0x6e, 0x17, 0x96, 0x91, 0x6e, 0x53, 0xfe, - 0x52, 0xab, 0xec, 0x46, 0x1d, 0xde, 0xc8, 0x3c, 0xa2, 0x4f, 0xe7, 0x5a, - 0xfa, 0x25, 0x8e, 0x28, 0x8b, 0x2c, 0xdc, 0xaf, 0x08, 0xed, 0x0a, 0x0c, - 0x32, 0xe5, 0xfc, 0xb0, 0xd4, 0xc4, 0xa5, 0x68, 0x75, 0xec, 0xe3, 0x61, - 0x8c, 0xc0, 0x50, 0x4f, 0x9c, 0xba, 0x0a, 0x4a, 0x9e, 0xa1, 0x55, 0x03, - 0xd6, 0xeb, 0xaf, 0xd3, 0x73, 0xaf, 0xc4, 0x7d, 0xa2, 0x0c, 0x66, 0xae, - 0xfc, 0x13, 0x23, 0x2c, 0xe9, 0x3d, 0xfb, 0x79, 0x9a, 0x6d, 0x0e, 0x1d, - 0x68, 0x9d, 0x54, 0xe3, 0x69, 0xe4, 0x9f, 0x35, 0x19, 0xec, 0x09, 0x5a, - 0xad, 0xb2, 0xeb, 0xba, 0x7b, 0x2f, 0x1a, 0x49, 0x26, 0x75, 0x77, 0xf3, - 0x7a, 0x46, 0x06, 0x30, 0x95, 0xd5, 0x54, 0xcc, 0x59, 0xb1, 0x15, 0x6f, - 0x7f, 0xb7, 0xfb, 0xa1, 0x84, 0xfd, 0x32, 0x0d, 0x43, 0x83, 0xbf, 0x0b, - 0x6c, 0x5c, 0x14, 0x08, 0xb7, 0x9f, 0xf1, 0x54, 0x3d, 0x50, 0x0e, 0x69, - 0x74, 0x81, 0xca, 0x09, 0x34, 0x49, 0x6a, 0x62, 0xd2, 0x88, 0xa9, 0xaf, - 0xdf, 0x6f, 0x63, 0x7b, 0x77, 0xbf, 0x33, 0x45, 0x4e, 0x25, 0x1e, 0x13, - 0x32, 0xf1, 0x4e, 0x28, 0x67, 0x39, 0x4a, 0xd5, 0xd6, 0x57, 0x51, 0xfe, - 0xb9, 0x85, 0xa9, 0x4a, 0x87, 0xc2, 0xe4, 0x32, 0xcf, 0xc6, 0x9d, 0x7d, - 0x2d, 0x25, 0xb8, 0x3c, 0x9c, 0xe4, 0xde, 0xcc, 0x07, 0x61, 0x13, 0xcf, - 0x57, 0x29, 0xa1, 0x0a, 0x89, 0xef, 0x81, 0x43, 0xb8, 0xa9, 0x1b, 0xc6, - 0xa6, 0x17, 0x89, 0x9e, 0x00, 0x46, 0x63, 0x5e, 0xe4, 0xb1, 0xd7, 0xba, - 0x4d, 0x70, 0x1a, 0xa5, 0x0e, 0x0d, 0xa1, 0xff, 0x52, 0x10, 0xc4, 0x07, - 0x08, 0x0f, 0xe8, 0x96, 0xf8, 0x65, 0x42, 0x3c, 0x74, 0x31, 0x35, 0x29, - 0xa1, 0xb0, 0xa6, 0x38, 0xac, 0xcd, 0x4b, 0xd0, 0x1c, 0x31, 0x58, 0x23, - 0x82, 0xe2, 0xac, 0x91, 0x93, 0xe0, 0xa5, 0x97, 0x58, 0xb3, 0x97, 0x71, - 0xf3, 0x80, 0x63, 0x25, 0x30, 0x11, 0x7b, 0xed, 0x07, 0x82, 0x2f, 0xcc, - 0x38, 0xa7, 0xd1, 0x9c, 0xbd, 0x6b, 0x14, 0xfd, 0x94, 0x83, 0xdc, 0x40, - 0x3d, 0x46, 0xa1, 0x57, 0x57, 0xb3, 0xe4, 0xec, 0xe3, 0x23, 0xf0, 0xa1, - 0xac, 0x04, 0x05, 0xca, 0xc8, 0x40, 0xc5, 0xdc, 0xbb, 0xae, 0x46, 0x7a, - 0xf1, 0x94, 0xee, 0x29, 0x96, 0x41, 0xcb, 0x0a, 0xb0, 0x29, 0x3e, 0xf9, - 0xff, 0x03, 0x50, 0x57, 0xd8, 0xda, 0x37, 0x7a, 0x45, 0x97, 0x26, 0xef, - 0x16, 0x61, 0x91, 0xe0, 0x13, 0x13, 0x88, 0x63, 0xa8, 0xd2, 0x22, 0x9d, - 0x8d, 0x7c, 0xc3, 0x75, 0x5c, 0xd3, 0xa6, 0xd6, 0xc0, 0xba, 0xba, 0x3a, - 0x15, 0x66, 0x1f, 0x67, 0x06, 0x3a, 0x43, 0x56, 0x4a, 0xdb, 0xb8, 0x6c, - 0xbc, 0xf8, 0x43, 0xa6, 0xbe, 0x9c, 0xfd, 0x9b, 0x24, 0x3b, 0x2d, 0x98, - 0xcd, 0x7a, 0xb0, 0xa9, 0xf1, 0xb9, 0x5c, 0x2d, 0x69, 0x7e, 0x3b, 0x38, - 0x98, 0xe1, 0x2e, 0xc1, 0xdc, 0x5f, 0x0c, 0x22, 0xca, 0x7d, 0xe4, 0x9c, - 0xa9, 0x50, 0xff, 0x1f, 0x26, 0x87, 0xbf, 0x81, 0xbd, 0x99, 0x23, 0xb0, - 0xeb, 0x77, 0x53, 0x5c, 0x7a, 0x23, 0xb0, 0x20, 0x72, 0xab, 0x1d, 0xcc, - 0x32, 0xc8, 0x1a, 0x08, 0x6a, 0xc2, 0xf5, 0x42, 0xfe, 0x18, 0x81, 0x2a, - 0xf1, 0xd0, 0x6b, 0xda, 0x5f, 0x43, 0x02, 0x9b, 0xe5, 0x44, 0x5b, 0x90, - 0xd0, 0xc4, 0x0a, 0x25, 0xa3, 0x44, 0x34, 0x25, 0x1c, 0xab, 0xcc, 0xa2, - 0xa4, 0x81, 0xcd, 0x60, 0x31, 0x3b, 0xc6, 0x16, 0xee, 0x75, 0x59, 0x73, - 0xbd, 0x4d, 0x01, 0x2a, 0xb8, 0xf1, 0x22, 0xcf, 0x9d, 0x3b, 0x20, 0x13, - 0xa4, 0x7d, 0x63, 0x57, 0x3f, 0xe2, 0x7c, 0x56, 0x72, 0x00, 0xc3, 0x0f, - 0x4c, 0x6d, 0xcb, 0x40, 0x78, 0xc1, 0xc8, 0x7d, 0x1a, 0x49, 0x3e, 0xb8, - 0xf6, 0xa2, 0xef, 0x0c, 0xba, 0x57, 0xc4, 0x1c, 0x65, 0xe0, 0x8d, 0x5f, - 0x81, 0x5e, 0x85, 0xa5, 0x31, 0xd8, 0xb7, 0x56, 0xe9, 0xb9, 0xc8, 0x0d, - 0x02, 0x68, 0x75, 0xed, 0xf3, 0xd5, 0x83, 0x2e, 0x2a, 0x4b, 0x87, 0x3a, - 0x7f, 0xc5, 0x4b, 0x11, 0xa4, 0x00, 0x53, 0x9c, 0xbd, 0x1f, 0xf5, 0x0a, - 0x4c, 0x9d, 0x6c, 0x05, 0xb6, 0xe9, 0x32, 0xcb, 0x5c, 0x7b, 0xfc, 0xf0, - 0xff, 0x84, 0x9d, 0xf5, 0x99, 0x14, 0x4a, 0x99, 0x80, 0x3d, 0x47, 0x20, - 0x19, 0x8b, 0xa3, 0x89, 0xd3, 0x79, 0x5e, 0xfc, 0x7c, 0xb0, 0x2f, 0x5f, - 0xdd, 0xde, 0x47, 0x6c, 0xd8, 0xa1, 0x09, 0xbf, 0xac, 0x95, 0x89, 0x2a, - 0x5e, 0x0a, 0x7c, 0xdd, 0xd0, 0x0c, 0x5d, 0xf1, 0xe6, 0x89, 0x5d, 0x4d, - 0x72, 0xbf, 0xc7, 0x18, 0x3c, 0x27, 0x1d, 0x7e, 0x37, 0xc0, 0x43, 0xa3, - 0xaa, 0x03, 0xc9, 0x47, 0x15, 0x74, 0x06, 0xf3, 0xa3, 0xd8, 0x05, 0x60, - 0xa2, 0xd8, 0x42, 0x0f, 0xec, 0xd8, 0x83, 0x2a, 0xad, 0x2d, 0x72, 0x50, - 0xe4, 0xa0, 0xab, 0x82, 0x6b, 0x13, 0x59, 0x7b, 0x9f, 0xbf, 0xfd, 0x34, - 0xbe, 0x44, 0xfc, 0x03, 0x0c, 0xe3, 0x24, 0x0d, 0x1f, 0xbd, 0x96, 0xc4, - 0x98, 0xd5, 0x11, 0xac, 0x42, 0xde, 0xba, 0xa1, 0x94, 0x20, 0xbb, 0xf0, - 0x14, 0x1b, 0x7f, 0x91, 0x25, 0x50, 0x68, 0x7d, 0x9f, 0x5d, 0xf6, 0x35, - 0xd0, 0x36, 0x8f, 0x14, 0x9e, 0xab, 0xc9, 0x9f, 0x4f, 0x9b, 0xd4, 0xe3, - 0x97, 0xcc, 0xa9, 0x45, 0xa8, 0x9e, 0x71, 0x3b, 0x90, 0x4a, 0x15, 0x35, - 0x1a, 0xc4, 0xec, 0xb0, 0xb3, 0x4c, 0xec, 0x64, 0x18, 0xf6, 0x42, 0x67, - 0xd0, 0x7c, 0x91, 0x55, 0x68, 0x44, 0xd9, 0xcd, 0xe9, 0x23, 0xb0, 0xcb, - 0x7a, 0x4b, 0x53, 0xa4, 0x83, 0x77, 0x7e, 0x62, 0x5b, 0x1b, 0xd9, 0x5d, - 0x2b, 0xec, 0xf4, 0x00, 0x2e, 0x42, 0x09, 0x50, 0xb0, 0x31, 0x18, 0x09, - 0x2f, 0xdc, 0x75, 0xcd, 0x1c, 0x3e, 0x2e, 0xb6, 0x3d, 0x26, 0xd5, 0x4c, - 0x35, 0x67, 0x27, 0x95, 0x25, 0x33, 0xf5, 0x8a, 0xf5, 0x88, 0x40, 0xb6, - 0x76, 0x4d, 0xb2, 0x02, 0x53, 0xaa, 0xd2, 0x8d, 0x15, 0xbf, 0x8d, 0x82, - 0xe5, 0xfb, 0x77, 0x73, 0xd0, 0xe4, 0x58, 0xcf, 0x70, 0x0e, 0x5c, 0xa3, - 0x7e, 0x6a, 0xb4, 0xe6, 0xf0, 0xd0, 0xa8, 0xc8, 0x83, 0xa8, 0x40, 0xda, - 0x80, 0xac, 0x38, 0xde, 0x45, 0x0b, 0xd2, 0x6a, 0xe2, 0x42, 0xd2, 0x6c, - 0xa6, 0xec, 0x83, 0xc7, 0x90, 0x2e, 0xf6, 0x3e, 0x9d, 0x02, 0x83, 0xe2, - 0x19, 0x9e, 0xf4, 0xb1, 0xb2, 0xee, 0x76, 0xd3, 0x80, 0x6d, 0x25, 0xaf, - 0x63, 0x61, 0xeb, 0x10, 0x88, 0x72, 0xd3, 0x39, 0x28, 0x98, 0xdf, 0xb4, - 0x43, 0x36, 0x64, 0x9d, 0x49, 0x02, 0x46, 0x1c, 0xb2, 0xa1, 0x5b, 0x25, - 0xc0, 0xfa, 0x9b, 0x15, 0x96, 0x5b, 0x4c, 0x1c, 0xf7, 0x5b, 0x0f, 0xd9, - 0x9c, 0x51, 0x3b, 0xa2, 0x84, 0x80, 0x87, 0xa5, 0xfe, 0x8b, 0x1e, 0xf1, - 0x78, 0xcd, 0xa9, 0x6a, 0x13, 0x46, 0x79, 0x24, 0xb3, 0xf4, 0x0e, 0xf5, - 0xee, 0xdd, 0x0d, 0xd6, 0xfb, 0xc1, 0xec, 0xb7, 0x1b, 0x0b, 0x2a, 0xa4, - 0x09, 0x00, 0x63, 0x65, 0x30, 0x1d, 0x01, 0xdf, 0x83, 0x3a, 0x58, 0x29, - 0x1b, 0xc6, 0x95, 0x1d, 0x21, 0x72, 0xcc, 0x60, 0xac, 0x86, 0xe8, 0x1d, - 0x27, 0x2b, 0x59, 0xcb, 0x35, 0xbc, 0xcb, 0x60, 0x62, 0xe7, 0xf7, 0xf4, - 0x02, 0xc2, 0x3a, 0x77, 0xf2, 0x92, 0x73, 0xce, 0x1d, 0xdf, 0xf9, 0x02, - 0x13, 0x9a, 0x0e, 0x66, 0x9b, 0x4b, 0xb6, 0x4f, 0x26, 0x80, 0x7a, 0x08, - 0xfd, 0xfe, 0x61, 0x84, 0xe2, 0x49, 0x51, 0x8e, 0x8b, 0x52, 0xed, 0x65, - 0xd6, 0xf2, 0xea, 0x71, 0xe6, 0x5d, 0x77, 0x33, 0x2c, 0xd2, 0xf0, 0xb4, - 0xf6, 0xad, 0xc4, 0xc5, 0xe7, 0x16, 0xc3, 0xd5, 0xc7, 0xf1, 0x0d, 0x3d, - 0x4b, 0xfd, 0x57, 0xfe, 0xfc, 0x2c, 0x76, 0x25, 0x77, 0x20, 0xf4, 0x2d, - 0xa6, 0xb9, 0x8f, 0x61, 0x5a, 0x95, 0x15, 0x39, 0x22, 0xc2, 0x1c, 0xdc, - 0x9f, 0x5e, 0x71, 0x84, 0xa3, 0x00, 0x49, 0x46, 0x5e, 0x66, 0x31, 0x36, - 0x9a, 0x3e, 0xad, 0xd9, 0x0d, 0x8c, 0x5e, 0x8a, 0xb1, 0xaa, 0x9d, 0xd7, - 0x79, 0x8b, 0x58, 0xc3, 0xf9, 0x0e, 0xcc, 0x80, 0xfd, 0x5e, 0x59, 0xbb, - 0x28, 0x49, 0x3a, 0xbe, 0x73, 0x78, 0xa7, 0x0e, 0xa3, 0x2f, 0x40, 0xa5, - 0x3a, 0x59, 0x89, 0x03, 0x36, 0xdc, 0xc1, 0xb6, 0x60, 0x80, 0x8d, 0xb3, - 0x93, 0x4b, 0x15, 0x5f, 0xca, 0x89, 0x6e, 0x47, 0x7a, 0x91, 0xac, 0x33, - 0xdd, 0xf6, 0x9f, 0x2a, 0x33, 0xc1, 0x86, 0xe0, 0x1b, 0x2b, 0xd5, 0x0d, - 0x3b, 0x33, 0x4d, 0x02, 0xc6, 0xb8, 0xd0, 0x14, 0x4f, 0x1d, 0xcc, 0x0c, - 0xd8, 0xff, 0xcc, 0x25, 0x14, 0x4a, 0x87, 0x65, 0x0b, 0x50, 0xa5, 0x07, - 0xfc, 0xdd, 0x8e, 0x0f, 0x03, 0x78, 0xa9, 0x32, 0x29, 0x8a, 0xef, 0x97, - 0x67, 0xc1, 0x22, 0x37, 0x8f, 0x2e, 0xbe, 0xab, 0xca, 0x6b, 0xa3, 0xe3, - 0x6b, 0x39, 0xd2, 0xfd, 0xa2, 0x52, 0x61, 0x1f, 0xfd, 0x9a, 0x64, 0x44, - 0x44, 0x73, 0x2b, 0x74, 0x72, 0x7c, 0x8c, 0xe2, 0x51, 0x35, 0x53, 0x9c, - 0x19, 0xd7, 0x1f, 0x96, 0xf6, 0xf3, 0xe3, 0x71, 0x42, 0xaf, 0xec, 0x74, - 0xa4, 0x5b, 0x82, 0x5b, 0x88, 0xbd, 0xb2, 0xf4, 0x99, 0x73, 0xdc, 0x57, - 0xc9, 0x3e, 0x3a, 0xf1, 0x2e, 0x32, 0x24, 0xee, 0x99, 0x32, 0xee, 0x96, - 0x43, 0xe7, 0x45, 0x55, 0xab, 0xa8, 0x29, 0x6b, 0x97, 0xc3, 0x15, 0x83, - 0xdd, 0x6d, 0x52, 0x7e, 0x25, 0x80, 0xee, 0x2b, 0x02, 0x7c, 0xa3, 0xe3, - 0x2e, 0x8f, 0x12, 0x3d, 0xe0, 0x3a, 0xea, 0xf9, 0x8e, 0x06, 0x6c, 0xb4, - 0xb9, 0xc4, 0x98, 0x9e, 0x7b, 0x7b, 0x36, 0xfa, 0xf6, 0xfc, 0xf7, 0xbf, - 0xad, 0xb1, 0xf2, 0xb7, 0xef, 0xfe, 0x5a, 0xe9, 0xcc, 0x06, 0xd9, 0xe5, - 0x64, 0xad, 0x40, 0xcf, 0x17, 0x48, 0x72, 0xae, 0x87, 0xf8, 0xc6, 0x78, - 0x9f, 0xb3, 0xac, 0x6b, 0x07, 0x38, 0x6c, 0xb3, 0xfc, 0xc9, 0x1b, 0x6e, - 0x47, 0x02, 0xdf, 0xd5, 0xf7, 0xc9, 0xa8, 0x9b, 0x18, 0x0a, 0x4e, 0x43, - 0xb6, 0xc7, 0xdc, 0x1d, 0xea, 0x26, 0x27, 0x94, 0xda, 0xf7, 0x87, 0x6d, - 0xe0, 0x4d, 0x5a, 0xdc, 0x0c, 0x69, 0xa3, 0xca, 0x27, 0x57, 0x08, 0x39, - 0xbb, 0xf9, 0x02, 0xaa, 0xdc, 0xcf, 0xab, 0xe2, 0x60, 0xc9, 0x79, 0x58, - 0x00, 0x78, 0xbe, 0x9c, 0x2a, 0x68, 0x5d, 0x9f, 0xa9, 0x17, 0x40, 0x5d, - 0xf2, 0xe5, 0x24, 0x2d, 0xd7, 0x2d, 0xc5, 0x38, 0x59, 0x94, 0x47, 0x8e, - 0xc0, 0x1f, 0x33, 0x28, 0xd2, 0xe8, 0x5c, 0xc9, 0xbe, 0xaf, 0x10, 0x7f, - 0x87, 0x4b, 0x65, 0xfb, 0xe2, 0x91, 0xa9, 0x61, 0x74, 0x6f, 0x1d, 0x36, - 0xfd, 0x85, 0x80, 0x21, 0xb4, 0xc4, 0xa1, 0x1a, 0x93, 0x66, 0xe9, 0x9b, - 0xa0, 0xf5, 0x7c, 0x4f, 0x2a, 0xdc, 0x37, 0xe3, 0x5b, 0xe2, 0x7e, 0xf1, - 0x49, 0x3c, 0x87, 0x8c, 0x55, 0xc7, 0x18, 0x6f, 0x4e, 0x73, 0x76, 0x52, - 0x71, 0x82, 0x9f, 0xf2, 0xd5, 0x80, 0xb9, 0x64, 0x05, 0x16, 0xe5, 0x23, - 0x0e, 0x08, 0xde, 0x75, 0x90, 0x85, 0x83, 0x0e, 0xfc, 0x4c, 0x19, 0x27, - 0x34, 0xfd, 0xc1, 0x8d, 0xc4, 0x8f, 0xf3, 0x6e, 0x3f, 0xaa, 0xdd, 0x16, - 0xed, 0xb6, 0x6c, 0x4e, 0x08, 0x63, 0x77, 0x45, 0x63, 0x97, 0x0d, 0xde, - 0x43, 0xa4, 0x5c, 0xa1, 0x24, 0x85, 0x12, 0xd1, 0x2d, 0xa7, 0x8b, 0xb2, - 0xcd, 0x34, 0x29, 0xc3, 0xc9, 0x95, 0x22, 0x25, 0x5d, 0x12, 0x25, 0xa1, - 0x0e, 0xf6, 0x32, 0x88, 0xa9, 0x87, 0x6e, 0x65, 0xfd, 0x02, 0x91, 0x9b, - 0x23, 0x6a, 0xda, 0x61, 0x32, 0xe8, 0x15, 0x16, 0x4e, 0xe4, 0x21, 0x93, - 0x56, 0x4b, 0x78, 0xfc, 0xd1, 0x93, 0x33, 0x0a, 0xb0, 0x75, 0x97, 0x2d, - 0x52, 0xb1, 0xc5, 0xd0, 0x54, 0x54, 0x43, 0x1e, 0x7b, 0x87, 0x88, 0xd3, - 0xe3, 0xeb, 0x49, 0x26, 0xfb, 0xb1, 0xa9, 0xb6, 0x42, 0xf6, 0xde, 0xca, - 0x81, 0xf4, 0x7c, 0x85, 0x26, 0x63, 0x61, 0xc8, 0xcd, 0x60, 0xea, 0x17, - 0xdf, 0xe6, 0x1a, 0x4a, 0x25, 0xc5, 0xb8, 0xb4, 0x14, 0x99, 0x24, 0xfa, - 0x3c, 0x19, 0x63, 0x7e, 0x3e, 0x36, 0x83, 0x0e, 0x0d, 0x8a, 0xf3, 0x37, - 0x05, 0xdf, 0x1b, 0xa1, 0xc2, 0x49, 0xbb, 0xf9, 0x5d, 0x85, 0xdf, 0xa7, - 0xc7, 0xf7, 0xd1, 0x51, 0xd8, 0xf3, 0x81, 0x0e, 0x75, 0xe9, 0x5b, 0x46, - 0x4d, 0xa5, 0x14, 0x96, 0xc4, 0x9c, 0x74, 0xe4, 0x6c, 0xa5, 0xb4, 0x56, - 0xa3, 0x05, 0x69, 0x42, 0x16, 0x52, 0x13, 0xbc, 0xc3, 0xea, 0x26, 0x65, - 0xf3, 0xd9, 0x3f, 0x6d, 0x8a, 0x92, 0x12, 0x6f, 0x25, 0x54, 0x00, 0x40, - 0xe7, 0x67, 0x3d, 0x59, 0xcd, 0x98, 0x56, 0x56, 0x24, 0x3d, 0xc1, 0x4d, - 0x73, 0xbb, 0x1e, 0x15, 0x86, 0x44, 0x3f, 0xd9, 0x94, 0xba, 0x75, 0x5a, - 0x63, 0xc6, 0x27, 0x20, 0xe2, 0xb4, 0x6a, 0x71, 0x0f, 0x38, 0xaa, 0x1e, - 0x6c, 0xee, 0x5c, 0x68, 0xbb, 0x41, 0x22, 0x3a, 0x85, 0x4a, 0x1f, 0x5b, - 0xcb, 0xa0, 0x26, 0xfe, 0x15, 0x18, 0x41, 0x71, 0xf5, 0x59, 0xf0, 0x91, - 0xed, 0xeb, 0x55, 0x8e, 0xb1, 0xa7, 0xbf, 0xa7, 0x42, 0xd4, 0x68, 0xca, - 0x09, 0xa2, 0x13, 0x60, 0x5d, 0x56, 0x94, 0x0d, 0xec, 0x94, 0x1f, 0x6a, - 0x1b, 0x50, 0xaa, 0x07, 0x62, 0x0a, 0x67, 0xe6, 0x77, 0x8d, 0xe0, 0xbd, - 0x85, 0x8d, 0x2e, 0x88, 0x13, 0xde, 0x14, 0x9c, 0x5a, 0xba, 0x82, 0xd4, - 0xdb, 0x04, 0xcd, 0xc8, 0xb6, 0xbc, 0x6b, 0x67, 0xb7, 0x9d, 0x1c, 0x65, - 0xca, 0x17, 0x0f, 0xfa, 0x1d, 0x7e, 0x1a, 0xb3, 0x17, 0x52, 0x00, 0x58, - 0x32, 0x7b, 0xf3, 0x58, 0x39, 0x48, 0xe4, 0x77, 0xdd, 0x1d, 0x13, 0xda, - 0x29, 0xfb, 0xbe, 0xda, 0xfe, 0x5d, 0xcc, 0x9b, 0x69, 0xb4, 0xd0, 0xfa, - 0x9b, 0x2f, 0xa1, 0xff, 0x9a, 0x88, 0x12, 0x4b, 0x36, 0x4a, 0x75, 0x4f, - 0x89, 0x04, 0x1f, 0xc7, 0x39, 0x77, 0xf7, 0xbd, 0x44, 0xc0, 0x06, 0xa9, - 0xe0, 0x49, 0x3e, 0x2a, 0xae, 0x59, 0x12, 0x3f, 0x69, 0x10, 0x1d, 0xaf, - 0xdc, 0x5c, 0x03, 0xd7, 0xca, 0x9a, 0xc1, 0x9b, 0x5f, 0x89, 0x95, 0x03, - 0xb6, 0x0d, 0xd4, 0xc0, 0x45, 0xd2, 0x52, 0xb5, 0xb8, 0xe9, 0xe4, 0xee, - 0x03, 0xc2, 0x1e, 0x34, 0xd5, 0x50, 0x0d, 0x66, 0xd7, 0x1c, 0xb0, 0x8b, - 0x7c, 0x52, 0xca, 0x89, 0x3f, 0x85, 0xb6, 0xf7, 0xf1, 0xfd, 0x54, 0x40, - 0x22, 0xb4, 0x7b, 0x42, 0x8f, 0x82, 0x92, 0x1b, 0x7d, 0xd4, 0x8c, 0x6e, - 0x53, 0x29, 0x57, 0x7a, 0x28, 0x64, 0x18, 0x48, 0x0a, 0xaf, 0x1e, 0x3d, - 0xdb, 0xc7, 0x67, 0x85, 0x85, 0x32, 0x77, 0xd6, 0x66, 0x0b, 0x12, 0x10, - 0xe7, 0xb5, 0x55, 0x48, 0x27, 0x48, 0x80, 0xbe, 0xce, 0x85, 0xc2, 0x3c, - 0x6b, 0xb1, 0x41, 0x33, 0x58, 0x9c, 0xea, 0x72, 0xdc, 0x6c, 0x1d, 0xcb, - 0xd9, 0x9e, 0xac, 0xa4, 0x53, 0x68, 0x6e, 0x19, 0x8e, 0x87, 0x57, 0x47, - 0x9a, 0x0e, 0x42, 0xa4, 0xc8, 0xc9, 0xe8, 0x21, 0xb0, 0x9e, 0xd7, 0x30, - 0xc7, 0x09, 0x33, 0xce, 0xa5, 0xca, 0xf1, 0x99, 0x8d, 0x84, 0xec, 0x39, - 0x92, 0xaa, 0x61, 0xad, 0x21, 0x2a, 0xe1, 0x16, 0x57, 0xd7, 0x38, 0x19, - 0xc7, 0x32, 0xc4, 0x3a, 0x38, 0x20, 0x15, 0x6c, 0x79, 0xcf, 0x93, 0xfc, - 0x7b, 0x13, 0xc4, 0x6c, 0x45, 0x91, 0xeb, 0xaa, 0x51, 0x0e, 0x76, 0xb0, - 0x19, 0xd7, 0xbc, 0xd1, 0x5d, 0x58, 0xe3, 0x45, 0xc2, 0x28, 0x49, 0xbb, - 0x27, 0x9a, 0x68, 0xb7, 0xfa, 0xca, 0x05, 0x9c, 0x0a, 0xea, 0xcb, 0x8b, - 0xbe, 0x96, 0xb3, 0x7f, 0x64, 0xad, 0xc3, 0x41, 0x5c, 0x81, 0xa0, 0x58, - 0x90, 0x16, 0xc9, 0xb1, 0x04, 0x47, 0x41, 0x92, 0x3d, 0xea, 0xde, 0xa9, - 0x7c, 0x36, 0x7c, 0x8e, 0x09, 0x1c, 0x60, 0xe0, 0xc3, 0x11, 0xe8, 0xe0, - 0xff, 0x69, 0x34, 0xab, 0xbe, 0xed, 0x4a, 0x1a, 0x50, 0x53, 0x22, 0x68, - 0x6f, 0x90, 0x9f, 0xbc, 0x52, 0x1b, 0x12, 0xf4, 0xfb, 0x89, 0x88, 0xb8, - 0x32, 0x23, 0x2b, 0xf9, 0x36, 0x15, 0xff, 0xf2, 0xc5, 0xbe, 0x6d, 0x6c, - 0xa3, 0x25, 0x23, 0xb2, 0x7e, 0xe4, 0x1b, 0xa6, 0x2b, 0x46, 0x71, 0xb5, - 0x30, 0x46, 0xbc, 0xcd, 0xf0, 0xe9, 0xfe, 0x88, 0xa3, 0x0f, 0xd7, 0x78, - 0x0a, 0x23, 0x04, 0xda, 0x8a, 0x62, 0x09, 0x26, 0x3a, 0x79, 0x51, 0x54, - 0x9a, 0xc6, 0xd4, 0xa4, 0xad, 0x9a, 0x61, 0xd3, 0x8c, 0x60, 0xe7, 0xdf, - 0xeb, 0x02, 0x87, 0x34, 0x78, 0xab, 0xeb, 0xd7, 0xb4, 0x6d, 0x62, 0x4c, - 0xab, 0x1b, 0xe9, 0xc6, 0xb3, 0x4d, 0x63, 0x6b, 0x4c, 0x51, 0x20, 0xd0, - 0xf5, 0xb3, 0xcf, 0x3e, 0x2c, 0x6e, 0x33, 0x00, 0xcb, 0x36, 0xf9, 0x41, - 0x9f, 0xab, 0x0c, 0xd5, 0xf5, 0xbb, 0xe1, 0xb6, 0x0e, 0x78, 0x10, 0xb8, - 0x47, 0x6f, 0x9e, 0xd2, 0x3e, 0x35, 0xb2, 0x7e, 0x13, 0x1d, 0x36, 0xfb, - 0x86, 0xdf, 0x2a, 0xb8, 0xcc, 0x36, 0x3c, 0x82, 0xbd, 0x6e, 0x5f, 0xf2, - 0xad, 0x44, 0x55, 0x4c, 0x44, 0x91, 0x20, 0xa8, 0x97, 0x00, 0x37, 0xac, - 0xa8, 0xe7, 0xc9, 0xa9, 0xd7, 0x15, 0x46, 0x05, 0x21, 0x94, 0x59, 0xd5, - 0xa7, 0x83, 0x62, 0xaa, 0x8b, 0x4f, 0x66, 0x24, 0x30, 0x64, 0x6b, 0xd6, - 0xc5, 0xcc, 0x3a, 0x75, 0xa3, 0x18, 0x0e, 0x59, 0x01, 0x25, 0xe5, 0x26, - 0x88, 0x48, 0xa2, 0x0d, 0xe8, 0x34, 0x95, 0x70, 0xac, 0xc8, 0x28, 0xdb, - 0x0b, 0x01, 0x39, 0x60, 0x63, 0xac, 0xa5, 0xdd, 0xd5, 0x20, 0xc0, 0xed, - 0xbd, 0x83, 0x67, 0xae, 0x7c, 0x12, 0x1b, 0x80, 0x5e, 0x43, 0x11, 0x08, - 0x55, 0xc0, 0x51, 0x38, 0x55, 0x17, 0xc1, 0x0f, 0xa8, 0xb3, 0xf5, 0x40, - 0x03, 0x90, 0x84, 0x22, 0x1e, 0x12, 0xc4, 0xa9, 0xbd, 0x61, 0x74, 0x13, - 0x90, 0x7a, 0x9f, 0x8b, 0x0a, 0x80, 0x4c, 0x6d, 0xd1, 0x88, 0xa8, 0x23, - 0x8a, 0x6d, 0x19, 0x18, 0x88, 0x78, 0xe4, 0x07, 0xa4, 0x11, 0x27, 0xbb, - 0xcd, 0x0e, 0x4a, 0x20, 0x23, 0x6d, 0xc1, 0x94, 0x90, 0xcd, 0x7f, 0x89, - 0xfc, 0x6d, 0x43, 0xe2, 0x28, 0x86, 0x72, 0xa5, 0x06, 0x67, 0x1e, 0xef, - 0xf7, 0x85, 0x2c, 0x66, 0xa9, 0x34, 0x34, 0x33, 0x82, 0x36, 0x9a, 0x88, - 0xa6, 0xcf, 0x07, 0xa4, 0x77, 0x6e, 0x2c, 0x43, 0x05, 0x05, 0x32, 0x1f, - 0x7b, 0xa5, 0xa8, 0x07, 0x63, 0x3c, 0xa0, 0x5a, 0x5c, 0xc9, 0xd3, 0x95, - 0x4a, 0x6f, 0x58, 0xaa, 0x87, 0xee, 0xe0, 0xb5, 0x0d, 0x6b, 0x2a, 0x6d, - 0x03, 0x92, 0x25, 0x4d, 0x81, 0xa9, 0xe0, 0xc5, 0xf0, 0x7d, 0x5d, 0xaa, - 0x60, 0xe8, 0xcd, 0xb4, 0x1e, 0xfd, 0x92, 0x83, 0x47, 0x8a, 0x43, 0x00, - 0x9a, 0x2c, 0x77, 0x25, 0xb6, 0x9f, 0xa1, 0xe1, 0xf1, 0x7f, 0xd5, 0x8f, - 0xe3, 0x4f, 0xe1, 0x4d, 0x0a, 0xe4, 0x6c, 0x9b, 0x60, 0xbf, 0xa6, 0xb0, - 0xfd, 0x68, 0x18, 0xac, 0x5b, 0x5f, 0xe0, 0xa0, 0x24, 0x08, 0x06, 0x57, - 0x79, 0xc9, 0x5d, 0xf1, 0xb1, 0xe7, 0x19, 0x09, 0xc3, 0xa1, 0xe7, 0x19, - 0xa0, 0x8a, 0x17, 0xf5, 0x55, 0x23, 0xcc, 0x89, 0xc4, 0x31, 0xca, 0x87, - 0xef, 0x9f, 0x18, 0xd6, 0x4f, 0x1f, 0x98, 0x63, 0xd8, 0x85, 0x97, 0x6a, - 0xd1, 0xb6, 0x2c, 0xeb, 0x76, 0x49, 0x95, 0xa1, 0xa6, 0x4f, 0x19, 0x58, - 0x1a, 0xc0, 0x0d, 0xbc, 0x5e, 0xee, 0xbd, 0xe0, 0xa3, 0x8b, 0xc4, 0xd1, - 0xd1, 0x0b, 0x2d, 0xec, 0x54, 0x6a, 0x1b, 0x4c, 0x9f, 0x3e, 0x17, 0x14, - 0x47, 0xab, 0x9c, 0x67, 0xc0, 0xb9, 0xdf, 0x27, 0xdb, 0x37, 0x7b, 0x80, - 0xf9, 0xac, 0x72, 0x73, 0x7a, 0xa5, 0x29, 0xed, 0x5b, 0x98, 0x55, 0x61, - 0x24, 0xa4, 0x1a, 0xd2, 0xd7, 0x3c, 0xfd, 0x07, 0xbd, 0xcb, 0x59, 0x01, - 0x9d, 0xb9, 0xe5, 0x60, 0x8b, 0x43, 0xda, 0x6a, 0xba, 0x03, 0x1b, 0xd9, - 0x95, 0xf9, 0xe9, 0x5e, 0xac, 0x65, 0x8f, 0x33, 0xe3, 0xa7, 0x1f, 0xb9, - 0xb0, 0xa6, 0xc0, 0x88, 0x9d, 0x9e, 0xac, 0x7f, 0x38, 0xd6, 0x13, 0x6c, - 0x05, 0x3b, 0xe6, 0x08, 0x94, 0x43, 0x3f, 0x78, 0xe4, 0x0f, 0x71, 0x33, - 0x40, 0xb1, 0xfd, 0xcf, 0x5c, 0xb5, 0x42, 0xc5, 0xf1, 0x7c, 0x74, 0x90, - 0x57, 0x3b, 0x72, 0xa2, 0x30, 0x7e, 0x4c, 0x59, 0x6c, 0xcd, 0x2f, 0x35, - 0x5b, 0x0a, 0x87, 0xd9, 0xea, 0xf1, 0x87, 0xbe, 0xa8, 0x18, 0xeb, 0xbb, - 0x72, 0xbe, 0x89, 0x76, 0xae, 0xe9, 0xc5, 0x04, 0xf3, 0x6b, 0x03, 0x27, - 0x45, 0x18, 0x29, 0x0b, 0xb5, 0xf4, 0xcb, 0xa2, 0x6d, 0xbd, 0x21, 0x49, - 0x6d, 0x63, 0x31, 0xd1, 0xd9, 0xfa, 0x4a, 0x3b, 0xe9, 0x7e, 0x81, 0x0f, - 0x3e, 0x9c, 0xb4, 0xcf, 0xae, 0x0a, 0x08, 0x26, 0x89, 0xa6, 0x04, 0x89, - 0x8d, 0xed, 0xfe, 0xfc, 0xf5, 0x21, 0x48, 0xbf, 0x7a, 0xe0, 0x45, 0x88, - 0x42, 0xe2, 0xbc, 0xf6, 0xd9, 0xcf, 0x45, 0x22, 0x46, 0xdd, 0xa9, 0x18, - 0xf0, 0x31, 0x28, 0xd2, 0x09, 0xf3, 0x74, 0x03, 0xac, 0x69, 0x79, 0x41, - 0x7e, 0x52, 0xfd, 0xe0, 0xf9, 0x1e, 0xdd, 0x6f, 0xb2, 0xea, 0xa4, 0x4e, - 0xa1, 0x75, 0x96, 0x3a, 0x18, 0x31, 0x63, 0x5e, 0xb8, 0xf3, 0xd7, 0xd3, - 0xd5, 0x67, 0xb5, 0xfa, 0x71, 0x16, 0xdc, 0xac, 0xbb, 0xc7, 0x09, 0x34, - 0x62, 0x43, 0xc9, 0xf7, 0x0f, 0x9e, 0xae, 0xe6, 0xdc, 0x26, 0xf6, 0x0d, - 0x8d, 0xf6, 0xde, 0x9b, 0x06, 0xda, 0x70, 0x48, 0xd0, 0x24, 0xce, 0x81, - 0x57, 0xf5, 0x67, 0xfa, 0xe6, 0x58, 0x95, 0xd6, 0x02, 0x15, 0x4a, 0xb3, - 0xd4, 0x51, 0xea, 0x64, 0x44, 0xf8, 0x9b, 0x4a, 0x9a, 0x9e, 0xda, 0xfe, - 0x59, 0x09, 0x1c, 0xa3, 0xb4, 0x73, 0x35, 0x08, 0x89, 0x34, 0xe1, 0x3c, - 0xec, 0x8a, 0xe3, 0xe1, 0xf8, 0x9a, 0xc7, 0x37, 0xd8, 0xf9, 0x65, 0x28, - 0xf9, 0x8a, 0xee, 0x76, 0x93, 0xd7, 0x1b, 0xa9, 0x36, 0x36, 0x02, 0xe8, - 0xa2, 0x4f, 0x19, 0x43, 0x63, 0x6d, 0x6e, 0xc1, 0x05, 0xd3, 0x01, 0xd8, - 0x9f, 0x0a, 0x93, 0xe9, 0x50, 0x95, 0xbf, 0x03, 0x9d, 0x00, 0x0b, 0xd4, - 0x64, 0x28, 0xa9, 0x46, 0xcd, 0xab, 0x7e, 0xc7, 0x58, 0x02, 0x81, 0x68, - 0xd0, 0x71, 0x44, 0x59, 0x65, 0x4d, 0x62, 0x6f, 0x31, 0xe4, 0xed, 0x80, - 0x94, 0x75, 0x25, 0x39, 0xa3, 0x33, 0x13, 0xf3, 0xb8, 0x07, 0xe6, 0x63, - 0xb4, 0x3b, 0x60, 0xe3, 0x75, 0x35, 0xeb, 0xc4, 0xf5, 0xe0, 0x32, 0x71, - 0x65, 0xac, 0x72, 0x0b, 0x20, 0x97, 0xad, 0x90, 0x7e, 0xa1, 0x89, 0x51, - 0xe6, 0xd3, 0xdd, 0xb6, 0x27, 0x98, 0x6d, 0xb0, 0xf9, 0x8e, 0x16, 0x04, - 0x29, 0x4f, 0x4c, 0x67, 0x4a, 0xc1, 0xf8, 0x80, 0xd2, 0xb1, 0x0a, 0xe7, - 0xb1, 0x3b, 0x89, 0x70, 0xe9, 0x3b, 0xae, 0xac, 0xf3, 0xe9, 0xf4, 0x5f, - 0x45, 0x14, 0x8e, 0xaf, 0xa1, 0x5d, 0xbc, 0x26, 0xdc, 0xfa, 0xbb, 0xab, - 0xf9, 0xa5, 0x5e, 0x49, 0x10, 0x41, 0xc5, 0x1a, 0x8b, 0xf2, 0xff, 0x45, - 0x97, 0x75, 0xfb, 0x87, 0xa8, 0x47, 0x64, 0xa0, 0xe4, 0x00, 0xbe, 0x03, - 0xce, 0x94, 0xcc, 0x7a, 0x11, 0x08, 0x76, 0xf9, 0xbe, 0x43, 0x38, 0x53, - 0x23, 0x97, 0xb5, 0x3c, 0x8b, 0x33, 0x26, 0x0e, 0xd5, 0x87, 0x78, 0x93, - 0xb6, 0xff, 0x8b, 0x0e, 0x22, 0x2b, 0x0c, 0xc0, 0x79, 0x8d, 0xfc, 0x98, - 0xcf, 0x30, 0xcf, 0x88, 0xe3, 0x3d, 0x1b, 0x41, 0x4f, 0x2e, 0xcc, 0x6b, - 0x5a, 0x5c, 0x91, 0x02, 0x69, 0x2f, 0x8d, 0x94, 0x7a, 0x44, 0x2d, 0xd5, - 0x2a, 0x88, 0x64, 0xa5, 0xf0, 0x4a, 0xf8, 0x57, 0xb6, 0x2d, 0x5c, 0x21, - 0x1f, 0x9b, 0xcd, 0x83, 0x27, 0x17, 0xd6, 0xf0, 0x2b, 0x8c, 0x25, 0xfe, - 0xa3, 0x16, 0x3e, 0xa0, 0xe8, 0x83, 0x6b, 0xbe, 0x4d, 0x7b, 0x18, 0x51, - 0xd2, 0xbb, 0x2c, 0x01, 0x06, 0xcf, 0x0c, 0x14, 0xd5, 0x46, 0x11, 0x8c, - 0x17, 0xca, 0xaf, 0x05, 0xad, 0x20, 0x75, 0x7b, 0xa0, 0xef, 0x90, 0xc3, - 0x33, 0xda, 0x28, 0x6b, 0xd1, 0x58, 0xb3, 0x49, 0xc9, 0x09, 0xdd, 0xcc, - 0x79, 0xae, 0xdd, 0x9a, 0x53, 0x67, 0x5f, 0x39, 0xcf, 0x28, 0x41, 0x30, - 0x23, 0x46, 0xec, 0x48, 0xa9, 0xf7, 0x04, 0x8b, 0xa0, 0x18, 0xb9, 0xd5, - 0xde, 0xb6, 0xc4, 0x20, 0x94, 0x84, 0x04, 0xa9, 0x94, 0x1a, 0x03, 0x33, - 0x4f, 0xf4, 0x03, 0x09, 0x96, 0x43, 0x83, 0xe7, 0x8b, 0xd1, 0xfc, 0xea, - 0x6b, 0x74, 0x62, 0xc6, 0x92, 0x2a, 0x3d, 0xb2, 0xf8, 0xfb, 0xcc, 0xbb, - 0x62, 0x8a, 0xb3, 0xad, 0x4b, 0xca, 0x3a, 0xc9, 0x09, 0x49, 0xb5, 0x09, - 0xa5, 0x36, 0x7a, 0x87, 0x1c, 0xec, 0x6d, 0xc3, 0x41, 0x79, 0xce, 0x43, - 0xfe, 0x37, 0x01, 0x55, 0x44, 0x4d, 0xe6, 0x76, 0xe1, 0xa9, 0xae, 0xaa, - 0x2b, 0xc7, 0x30, 0xe4, 0xaf, 0x98, 0x8b, 0x4a, 0x48, 0x7f, 0xce, 0x02, - 0x4f, 0xef, 0x82, 0xbe, 0x25, 0xcf, 0x84, 0x04, 0x3e, 0xbb, 0xa1, 0x52, - 0xef, 0xdd, 0xb3, 0x57, 0xdf, 0xfa, 0x8f, 0xc7, 0x65, 0x1f, 0xc8, 0x34, - 0x3a, 0x36, 0xe2, 0xf0, 0x94, 0xdb, 0x6b, 0x3a, 0x57, 0xb6, 0xd1, 0x81, - 0x35, 0x65, 0x9f, 0x30, 0xb9, 0x7e, 0xa1, 0xc8, 0x41, 0x67, 0xd1, 0xdb, - 0xf5, 0x8c, 0xaa, 0xe3, 0x9e, 0xa9, 0x73, 0x40, 0x5a, 0x30, 0xc9, 0x02, - 0x8f, 0xe1, 0x10, 0x93, 0xd4, 0xff, 0x0d, 0xf0, 0xa9, 0x64, 0x35, 0x95, - 0x67, 0x4d, 0x44, 0xc9, 0x9b, 0x17, 0xf0, 0x42, 0x9a, 0xfe, 0x84, 0x84, - 0xe3, 0x30, 0xa8, 0x0d, 0x30, 0x13, 0xd7, 0x12, 0xa1, 0x2a, 0xc5, 0xdd, - 0x39, 0x52, 0xe0, 0x18, 0x26, 0xc2, 0xe9, 0x69, 0xf8, 0x2d, 0xcb, 0xab, - 0x58, 0x4f, 0x06, 0x09, 0x6d, 0x8e, 0x2e, 0xb6, 0xac, 0xe9, 0x3b, 0x5c, - 0xb9, 0xa7, 0xb2, 0x61, 0x45, 0x3e, 0x98, 0x64, 0x73, 0xc8, 0x51, 0xb1, - 0x3b, 0xdd, 0x75, 0xe5, 0xa5, 0xd5, 0x83, 0x1a, 0x24, 0x8d, 0xb5, 0x2d, - 0x58, 0x96, 0xbc, 0x87, 0xbd, 0xf6, 0xdf, 0x2d, 0x4c, 0x30, 0x4e, 0x25, - 0x09, 0x24, 0x02, 0x24, 0x1f, 0x24, 0x8c, 0x29, 0x11, 0xc3, 0xe8, 0x69, - 0xdd, 0x31, 0x2b, 0x7d, 0x5d, 0xff, 0x41, 0x56, 0xdf, 0xfb, 0x76, 0x72, - 0x92, 0x82, 0xdd, 0x56, 0x3e, 0x0a, 0x6e, 0x35, 0x9e, 0xd9, 0x04, 0xb4, - 0x64, 0x29, 0x32, 0xac, 0xcd, 0xbe, 0x8f, 0x5e, 0xea, 0x41, 0xb4, 0x00, - 0x2e, 0x29, 0x59, 0x79, 0x64, 0x6d, 0xed, 0x5c, 0x37, 0x9d, 0x27, 0x7e, - 0xea, 0x59, 0x65, 0x35, 0xc3, 0x72, 0x60, 0xe1, 0x4a, 0xcf, 0x06, 0x40, - 0x84, 0xf1, 0x0b, 0x80, 0x9e, 0xc9, 0xb4, 0x3f, 0x4a, 0xc0, 0x85, 0x7e, - 0x58, 0x0e, 0x99, 0x86, 0x56, 0x72, 0x88, 0x95, 0xd3, 0x1f, 0x62, 0xd3, - 0xdc, 0xc2, 0x32, 0xe1, 0x32, 0xba, 0x56, 0x53, 0x1d, 0xd1, 0xe7, 0x7a, - 0x71, 0xab, 0xb7, 0x9a, 0x2b, 0x85, 0x7d, 0x8b, 0x78, 0xe2, 0x9b, 0x02, - 0x4c, 0x1e, 0x16, 0x54, 0x85, 0xd5, 0x8e, 0x02, 0x11, 0x6a, 0x07, 0x0a, - 0xa8, 0x62, 0x4a, 0xbe, 0xde, 0x34, 0x9c, 0x50, 0x16, 0x2c, 0x89, 0x88, - 0x7c, 0x44, 0x65, 0x04, 0x68, 0xfc, 0x97, 0xd2, 0xd4, 0x43, 0x30, 0x6a, - 0x6e, 0xe5, 0xb9, 0xcb, 0x37, 0xf7, 0x1f, 0xa3, 0x8e, 0xfc, 0xdb, 0x4f, - 0xe5, 0x7d, 0xf6, 0xee, 0xd4, 0xe4, 0x59, 0xf9, 0x18, 0x38, 0xb6, 0x7b, - 0x57, 0xde, 0xb4, 0x90, 0x2c, 0x76, 0x0f, 0xaf, 0x57, 0xa2, 0x4c, 0xb4, - 0x46, 0x5e, 0xf2, 0x27, 0xd1, 0x02, 0xde, 0xd5, 0x5b, 0x33, 0x34, 0xdc, - 0xa2, 0xb7, 0x62, 0x24, 0x29, 0xe7, 0x1c, 0xb7, 0xa3, 0x6f, 0xc1, 0x41, - 0x19, 0x8b, 0xff, 0x52, 0x13, 0x23, 0x88, 0x64, 0xec, 0x87, 0xe0, 0x69, - 0xf2, 0x8e, 0x08, 0x13, 0x57, 0xbc, 0x79, 0x37, 0xe6, 0x08, 0x91, 0x5e, - 0x28, 0x14, 0x2f, 0x57, 0x06, 0x63, 0xd2, 0x34, 0x37, 0x4b, 0xdb, 0xca, - 0x2f, 0xaf, 0x79, 0xb7, 0xbe, 0x53, 0x31, 0x10, 0x89, 0x43, 0x85, 0xaa, - 0xe5, 0x22, 0x12, 0x49, 0x39, 0xa3, 0x51, 0xb1, 0x02, 0x6d, 0x34, 0x1c, - 0x4e, 0x47, 0x9a, 0x5a, 0x2c, 0x9d, 0xf2, 0x70, 0xad, 0xa0, 0xa8, 0xa6, - 0x9f, 0x4f, 0x71, 0x20, 0x8a, 0x5a, 0xd5, 0x70, 0x95, 0x27, 0x4a, 0x32, - 0xc6, 0xd6, 0x4c, 0x94, 0x8f, 0x37, 0x25, 0x1c, 0x66, 0x48, 0x79, 0x50, - 0x8d, 0x1d, 0x67, 0x1a, 0x17, 0x6d, 0x4b, 0x63, 0xdc, 0x1f, 0x4a, 0x0f, - 0x45, 0x82, 0x59, 0xf6, 0xf4, 0x19, 0x17, 0xbe, 0xf8, 0x66, 0xb5, 0x76, - 0x26, 0xf9, 0xc6, 0x74, 0xc7, 0xed, 0x50, 0x64, 0xfd, 0x46, 0xb9, 0xd9, - 0x7c, 0x37, 0xbb, 0xfd, 0xa9, 0xc3, 0xbb, 0xb1, 0x8e, 0x7b, 0xd7, 0xff, - 0xad, 0x24, 0x3b, 0x4e, 0x52, 0xc7, 0xb8, 0x1e, 0xa4, 0xf5, 0x6d, 0x06, - 0x8a, 0x5d, 0x73, 0x67, 0x11, 0x2d, 0x2e, 0xb4, 0xab, 0x92, 0x81, 0x99, - 0xd4, 0xde, 0x58, 0xd0, 0x3b, 0xd8, 0x08, 0x72, 0x7a, 0x56, 0x76, 0xae, - 0xf7, 0xd3, 0xc4, 0x89, 0xd5, 0x6a, 0x46, 0xaa, 0xba, 0x21, 0x76, 0x65, - 0xf0, 0xcc, 0x69, 0xf2, 0x69, 0x6c, 0x82, 0x49, 0xe1, 0x90, 0x22, 0xef, - 0x4d, 0x50, 0x3c, 0x9e, 0x5d, 0x83, 0xd4, 0x47, 0x65, 0x46, 0x0c, 0xdd, - 0xeb, 0x00, 0xef, 0x85, 0x50, 0xc8, 0x43, 0xa8, 0x2c, 0x61, 0xb7, 0xc2, - 0xd7, 0x65, 0x64, 0x02, 0x52, 0xc5, 0x5e, 0x7d, 0x01, 0xbd, 0xf6, 0xe9, - 0x71, 0xb7, 0x2f, 0x1a, 0x18, 0x36, 0x8b, 0xd6, 0xd2, 0xc9, 0x9e, 0xd0, - 0x41, 0xc4, 0x7b, 0x94, 0x5c, 0xff, 0x6f, 0xb4, 0x4a, 0x21, 0xd5, 0x8f, - 0x51, 0x4d, 0x2f, 0x28, 0x2f, 0x55, 0x30, 0xfa, 0x64, 0x26, 0xa3, 0xb5, - 0x28, 0xa0, 0xcf, 0x71, 0xe9, 0xc9, 0xe7, 0x84, 0x14, 0x2d, 0x62, 0xfc, - 0x35, 0xe0, 0xd3, 0x30, 0x21, 0xf9, 0x54, 0xd6, 0x09, 0x32, 0xd9, 0xba, - 0x78, 0x8b, 0x18, 0x5f, 0x27, 0xd1, 0x0c, 0xa2, 0x00, 0xab, 0x68, 0x44, - 0xff, 0xd4, 0x3c, 0x63, 0x8f, 0xae, 0x2e, 0xc4, 0x99, 0xa8, 0x56, 0x6e, - 0x42, 0xe3, 0xd0, 0xa6, 0x15, 0xa4, 0x8f, 0xdb, 0x84, 0x41, 0xb1, 0x9a, - 0x6a, 0x6d, 0x0a, 0x13, 0x57, 0xd2, 0x6f, 0x45, 0xb2, 0xcd, 0x9d, 0xd1, - 0xbb, 0x90, 0xf5, 0x7c, 0xf3, 0x92, 0xa6, 0xcf, 0x5f, 0x6d, 0x68, 0x45, - 0x01, 0x17, 0xe2, 0xd2, 0x7e, 0xdb, 0xe3, 0x2c, 0x3a, 0x34, 0x91, 0xdf, - 0x83, 0xed, 0x2f, 0xe0, 0x6f, 0x42, 0x50, 0xbb, 0x02, 0x17, 0xa4, 0xc8, - 0xe6, 0x04, 0xd2, 0xae, 0xe2, 0xfa, 0x6d, 0x2d, 0x9f, 0xc3, 0xe6, 0x70, - 0xbc, 0xb4, 0x06, 0x1b, 0xdc, 0x09, 0xcc, 0x44, 0x4d, 0x39, 0x3b, 0xda, - 0x43, 0x8d, 0x5f, 0x5f, 0xc7, 0xeb, 0x77, 0x58, 0x05, 0xff, 0x46, 0x18, - 0x36, 0xbc, 0x57, 0x3e, 0x54, 0x4f, 0xd9, 0x84, 0x4d, 0xf5, 0x41, 0x35, - 0x27, 0x54, 0x32, 0xd2, 0x40, 0x19, 0x8b, 0x8a, 0x02, 0xd8, 0x96, 0xd4, - 0x6c, 0xd0, 0x2d, 0x64, 0x94, 0xa2, 0x1d, 0xe0, 0x29, 0x14, 0xd8, 0x95, - 0x20, 0x52, 0x01, 0xff, 0x24, 0x1f, 0xd5, 0x9b, 0xcb, 0x33, 0x16, 0x75, - 0x21, 0xdf, 0xb3, 0x22, 0x13, 0x93, 0x21, 0xf1, 0xa4, 0xf5, 0x40, 0xa5, - 0x52, 0xf7, 0xe0, 0xd0, 0xe8, 0x90, 0x6e, 0xf5, 0xd6, 0xb1, 0x8c, 0x61, - 0x0f, 0x3d, 0xa9, 0xc4, 0x55, 0x3e, 0x34, 0x1d, 0xfc, 0xab, 0xf0, 0x6a, - 0x51, 0xc3, 0xec, 0x7f, 0x0e, 0x5a, 0xcb, 0x44, 0x41, 0x87, 0x87, 0x8a, - 0x95, 0xf7, 0x7c, 0xb6, 0xb5, 0xef, 0xc2, 0x1a, 0x1e, 0x3f, 0x74, 0x4e, - 0x29, 0xed, 0x09, 0xd5, 0x8d, 0x99, 0xf0, 0x5d, 0xca, 0xbf, 0x5d, 0x4b, - 0x6c, 0x3c, 0x9a, 0xf4, 0xa6, 0xd2, 0x23, 0xc7, 0x2d, 0xe5, 0x6e, 0x6a, - 0xb5, 0x93, 0xae, 0x90, 0xe4, 0x24, 0x31, 0x9c, 0x16, 0x8c, 0xa9, 0xb1, - 0x1a, 0x5d, 0xd4, 0x25, 0xa4, 0x9a, 0x0d, 0x42, 0x20, 0x5f, 0x74, 0x61, - 0x97, 0xbb, 0x81, 0x6c, 0xa5, 0x48, 0xaa, 0x7f, 0xea, 0x79, 0xb6, 0xa7, - 0x9d, 0xc2, 0x63, 0xb7, 0x77, 0xe6, 0x09, 0x17, 0x5c, 0x87, 0xf2, 0xea, - 0x8b, 0xb4, 0x5b, 0xbd, 0x38, 0x34, 0x0e, 0x1c, 0x21, 0x28, 0xf8, 0x94, - 0x51, 0x90, 0xf3, 0x2c, 0x13, 0x2b, 0xc3, 0x2f, 0xbc, 0xa6, 0xef, 0x98, - 0x4e, 0x12, 0x4f, 0xfb, 0xaa, 0x8b, 0xcb, 0xa8, 0x63, 0x04, 0x06, 0x16, - 0x2a, 0x15, 0x10, 0xae, 0xed, 0xad, 0x28, 0x43, 0x3c, 0x5d, 0xf4, 0x6d, - 0xd7, 0x8f, 0x09, 0x11, 0xe8, 0xa2, 0x58, 0xee, 0x7f, 0xfb, 0xa1, 0x84, - 0x0e, 0x8d, 0x16, 0x84, 0x6f, 0xe3, 0x21, 0x8d, 0xcd, 0x3c, 0xab, 0xd0, - 0x4a, 0x88, 0x2f, 0x88, 0x3b, 0x82, 0x4d, 0x33, 0x84, 0x69, 0x85, 0x83, - 0x23, 0xa3, 0x33, 0x22, 0x64, 0xeb, 0x68, 0x55, 0x65, 0x84, 0x25, 0xb2, - 0x77, 0x1e, 0x7e, 0x87, 0x11, 0x03, 0xa0, 0x25, 0x4b, 0x0a, 0xd2, 0xc7, - 0x27, 0xe7, 0x62, 0x80, 0xec, 0xc2, 0x3c, 0x98, 0x64, 0x54, 0xf5, 0x22, - 0x4f, 0x87, 0xe9, 0xc5, 0xc4, 0xd8, 0x7f, 0xf4, 0xd2, 0x78, 0x79, 0x6e, - 0xa0, 0x74, 0x35, 0xa5, 0x85, 0x13, 0x30, 0x43, 0xee, 0xd3, 0xb8, 0x61, - 0x32, 0x02, 0x77, 0xec, 0xe7, 0xeb, 0xe9, 0xc6, 0x23, 0xf4, 0xe5, 0x03, - 0x02, 0x01, 0xdb, 0xb3, 0x10, 0x41, 0x29, 0x23, 0x75, 0x5c, 0xd2, 0x20, - 0xd9, 0xe0, 0xdc, 0xfb, 0xbb, 0x76, 0x4f, 0xd0, 0x49, 0x76, 0x67, 0x1d, - 0x82, 0x9a, 0x68, 0xe9, 0x90, 0xae, 0x80, 0x99, 0x24, 0x60, 0xa1, 0xfd, - 0xc5, 0x45, 0x96, 0x3d, 0x38, 0x5d, 0x5e, 0x11, 0xb2, 0x7c, 0xb3, 0x4f, - 0x71, 0x95, 0x89, 0x1c, 0xc9, 0x44, 0x31, 0x1b, 0x69, 0x82, 0x8f, 0x42, - 0x37, 0x33, 0xd1, 0x8a, 0x31, 0xa5, 0x4e, 0xf8, 0x3a, 0x55, 0x62, 0x00, - 0x17, 0x4f, 0x5c, 0xcb, 0xea, 0x6b, 0xc9, 0xb1, 0xd6, 0x53, 0x61, 0x44, - 0xb2, 0x7d, 0xa2, 0xfd, 0xbf, 0xcc, 0xbb, 0xd0, 0x5a, 0xb9, 0xce, 0xcd, - 0x8c, 0xd8, 0xa2, 0x04, 0x84, 0x1a, 0x15, 0xd0, 0x34, 0x3d, 0x7d, 0xd6, - 0xa7, 0xc1, 0x9a, 0x34, 0x62, 0x5a, 0xbd, 0xd9, 0x74, 0x8b, 0xcb, 0x36, - 0xc9, 0x39, 0xfd, 0xc6, 0xc2, 0xd3, 0x6b, 0x33, 0xff, 0x92, 0xac, 0x45, - 0xda, 0x53, 0xc4, 0xee, 0x68, 0xa8, 0x2c, 0x43, 0x9d, 0xbb, 0xdb, 0x1c, - 0xc9, 0x51, 0xfb, 0x11, 0x99, 0x72, 0xf1, 0xc6, 0x7f, 0x37, 0x82, 0xb9, - 0xd9, 0xcb, 0xdc, 0x34, 0x2a, 0x3a, 0xed, 0xba, 0x74, 0xf8, 0x87, 0x7d, - 0x61, 0x73, 0x76, 0xf4, 0x0f, 0x9d, 0xfe, 0xe6, 0xc8, 0x39, 0x67, 0x34, - 0x00, 0x35, 0x37, 0x26, 0xd1, 0x19, 0xb2, 0x40, 0xa2, 0xfd, 0x52, 0x37, - 0xda, 0xbf, 0xc0, 0xb2, 0x90, 0x44, 0xad, 0x45, 0x97, 0x07, 0xfa, 0x38, - 0xfe, 0x90, 0xae, 0xc3, 0x10, 0x7b, 0x12, 0x68, 0x57, 0x41, 0x60, 0x91, - 0xbc, 0xc8, 0xb2, 0xc3, 0xef, 0xf1, 0x8c, 0x32, 0x7d, 0xb9, 0x33, 0x5f, - 0xea, 0x6f, 0xe7, 0x2f, 0xcc, 0x20, 0xe7, 0x56, 0xb7, 0xe1, 0xc2, 0xe2, - 0x16, 0xc2, 0xda, 0x4d, 0x5d, 0x35, 0xb4, 0x6a, 0x54, 0x41, 0x69, 0x3e, - 0xc3, 0x27, 0x8f, 0x82, 0x97, 0x3e, 0xab, 0xe4, 0xb3, 0xad, 0xd6, 0x39, - 0x32, 0x75, 0x8f, 0x3c, 0x61, 0xcd, 0x5c, 0x7b, 0x1e, 0xb9, 0xe4, 0x70, - 0xc1, 0x05, 0xc8, 0xf5, 0x90, 0x17, 0x17, 0xc8, 0x85, 0xdb, 0x20, 0xea, - 0xa3, 0x10, 0x33, 0x16, 0xcd, 0x96, 0x18, 0xd0, 0xa9, 0xb1, 0xef, 0x41, - 0x29, 0x69, 0x2d, 0xa9, 0xce, 0x61, 0x6a, 0xd1, 0xc9, 0x46, 0xd2, 0x7b, - 0x79, 0xc3, 0xc4, 0x1d, 0xf1, 0x1f, 0x59, 0x77, 0x56, 0x8b, 0x88, 0x40, - 0xbc, 0xf1, 0xa9, 0xd0, 0x08, 0x25, 0xe2, 0x33, 0x93, 0xf7, 0x98, 0x49, - 0x41, 0x20, 0xca, 0xaf, 0xd2, 0x9b, 0x4c, 0x1c, 0x26, 0xf8, 0xa8, 0xca, - 0x58, 0xe5, 0xa4, 0x21, 0x7b, 0x06, 0xe5, 0xcd, 0xd2, 0x32, 0xf9, 0x1f, - 0xa3, 0x0f, 0xbd, 0xd6, 0x26, 0x59, 0x2f, 0x31, 0xc4, 0xf9, 0x95, 0x85, - 0x5d, 0xfc, 0xda, 0xc6, 0x2d, 0x12, 0xcf, 0x75, 0x80, 0x79, 0x6a, 0x3a, - 0x75, 0x22, 0x4f, 0x3a, 0x1b, 0xe0, 0xe8, 0x54, 0x1e, 0x34, 0xb0, 0x20, - 0x38, 0x97, 0x2e, 0x51, 0x5e, 0xbb, 0x2a, 0xda, 0xa1, 0x8c, 0x37, 0xe6, - 0x3c, 0x0e, 0x0a, 0x6a, 0x32, 0xb7, 0x21, 0x44, 0x9e, 0x5b, 0x3e, 0x2d, - 0x08, 0x78, 0xb7, 0x87, 0x7a, 0x02, 0x0c, 0xe3, 0xc9, 0x13, 0x62, 0x7a, - 0xc5, 0x65, 0xdc, 0x12, 0xb4, 0xa2, 0x85, 0x4b, 0x63, 0xfd, 0x98, 0x9e, - 0xfa, 0xfa, 0x49, 0xe4, 0xe8, 0xb4, 0xa0, 0xe4, 0x73, 0x8d, 0x43, 0x16, - 0xfc, 0x50, 0xe5, 0xa3, 0xa2, 0xd7, 0x7f, 0x71, 0x69, 0x19, 0x9c, 0x89, - 0x3d, 0x35, 0x44, 0x76, 0x9e, 0x65, 0x81, 0xbf, 0x13, 0x69, 0xd9, 0xce, - 0xea, 0xf9, 0xa6, 0x28, 0x92, 0xd9, 0x6f, 0x86, 0x8e, 0x44, 0x98, 0x83, - 0xd2, 0x0f, 0xa2, 0xcd, 0x73, 0x04, 0xc9, 0x6b, 0xd2, 0xcd, 0x7e, 0xda, - 0x68, 0x47, 0xe4, 0x36, 0x11, 0xf6, 0xe8, 0xec, 0xb9, 0x09, 0xa8, 0x7c, - 0xcc, 0x26, 0x27, 0x32, 0x7c, 0x29, 0x82, 0x8b, 0x95, 0xc7, 0x1e, 0xd6, - 0xd8, 0xa1, 0x39, 0xcf, 0xee, 0x70, 0x01, 0x1d, 0x4e, 0xbe, 0xee, 0x43, - 0x8c, 0xa8, 0x56, 0x05, 0x70, 0x80, 0x57, 0x0e, 0xf4, 0x28, 0xa1, 0xec, - 0x10, 0xf2, 0xf7, 0xf7, 0x4b, 0x2f, 0x38, 0xae, 0x38, 0x57, 0x78, 0xd2, - 0x6f, 0x76, 0x4e, 0xe3, 0xdc, 0x8e, 0xbb, 0x33, 0x82, 0x02, 0x4f, 0xf1, - 0xe9, 0x8c, 0xf1, 0xa6, 0x50, 0x73, 0xff, 0x58, 0x4a, 0x15, 0x1d, 0xf0, - 0xb4, 0x5d, 0xd8, 0x44, 0xd7, 0x1a, 0x26, 0x1f, 0x99, 0x28, 0x07, 0xa2, - 0x5a, 0x91, 0xf1, 0x6a, 0xeb, 0x2d, 0x80, 0x3d, 0x2c, 0xc9, 0x3b, 0xe3, - 0xd7, 0x0c, 0x2e, 0xb1, 0x34, 0xca, 0x58, 0x31, 0xa0, 0x8d, 0xc0, 0x20, - 0x3f, 0xc8, 0xa1, 0x70, 0xa0, 0x43, 0x5e, 0x01, 0x7a, 0x91, 0x21, 0xf9, - 0x49, 0x64, 0x55, 0xfd, 0xed, 0xd9, 0x07, 0xc2, 0x78, 0xc4, 0xdc, 0x1b, - 0x78, 0x62, 0xbd, 0x1c, 0x9c, 0x05, 0xab, 0xf9, 0x60, 0x50, 0x24, 0xb8, - 0x99, 0x13, 0xde, 0xbb, 0xd9, 0xf1, 0xbb, 0x83, 0xca, 0x57, 0xc2, 0xfd, - 0xf4, 0x68, 0xea, 0x96, 0x83, 0x06, 0x6c, 0x2e, 0xd6, 0x12, 0xec, 0x1b, - 0x51, 0xf9, 0x71, 0xa3, 0x85, 0x41, 0x0d, 0xe5, 0x8b, 0xfb, 0x4f, 0x34, - 0xaa, 0x03, 0xe8, 0x96, 0x78, 0x7d, 0xae, 0x05, 0x43, 0xd9, 0xc9, 0x71, - 0x76, 0x49, 0x92, 0x49, 0x44, 0xbf, 0x36, 0x0c, 0x22, 0x94, 0x3b, 0x36, - 0xa3, 0xb2, 0x1c, 0xc1, 0x33, 0xfd, 0xef, 0x26, 0xfb, 0xeb, 0x0f, 0x4c, - 0xb6, 0x26, 0xe9, 0x6c, 0x59, 0x6b, 0xcd, 0x36, 0x40, 0xce, 0x83, 0xc5, - 0xb7, 0x53, 0x41, 0xa3, 0xfd, 0xb3, 0x15, 0x75, 0xe9, 0x33, 0xef, 0xfb, - 0x3f, 0x0d, 0xfd, 0x43, 0xfe, 0xe0, 0x9e, 0xcd, 0x60, 0xb9, 0x2b, 0x1b, - 0x2d, 0x7c, 0xd3, 0xef, 0xa5, 0xa8, 0xb5, 0x67, 0x42, 0xfd, 0xaf, 0x1d, - 0xdd, 0x99, 0x78, 0x72, 0x62, 0x95, 0x5f, 0x34, 0x74, 0x60, 0x83, 0x3d, - 0x67, 0x48, 0xbc, 0x88, 0x59, 0xee, 0x62, 0x0e, 0x8b, 0x65, 0xbb, 0x29, - 0x98, 0xb8, 0x4b, 0x05, 0xe1, 0xe0, 0x62, 0xc4, 0x0c, 0x78, 0x70, 0xb5, - 0x74, 0x13, 0x10, 0xc7, 0xa4, 0x69, 0x62, 0x87, 0x25, 0x50, 0xc0, 0xaa, - 0xbc, 0xd2, 0x0b, 0x6c, 0x6f, 0x99, 0xfc, 0xfd, 0xa9, 0x28, 0x97, 0xdd, - 0xe7, 0xc2, 0xdc, 0x37, 0xf1, 0xa4, 0xc3, 0x44, 0xbd, 0x92, 0xf1, 0xe8, - 0x26, 0x63, 0x9c, 0x62, 0x91, 0x04, 0x36, 0x09, 0xb3, 0xfe, 0x5e, 0x5f, - 0x76, 0xe2, 0x97, 0x9a, 0x4e, 0x1a, 0x66, 0xd9, 0xbd, 0x13, 0x75, 0x4a, - 0x06, 0x51, 0x38, 0x9c, 0x3a, 0x56, 0x6d, 0x18, 0x5b, 0x00, 0x82, 0xa4, - 0x6f, 0xde, 0x16, 0x76, 0x65, 0x9b, 0x0c, 0x13, 0x2a, 0x4c, 0x9e, 0x0e, - 0x62, 0x3e, 0xf6, 0xb8, 0xdb, 0xae, 0xf7, 0xf5, 0x2a, 0x24, 0x61, 0x70, - 0x82, 0x30, 0xd5, 0x4a, 0x77, 0x87, 0x68, 0x56, 0x19, 0x5d, 0xb1, 0xcd, - 0x7f, 0xee, 0x4b, 0xd8, 0x8a, 0x51, 0xf5, 0xdc, 0x08, 0x8b, 0xe0, 0xc8, - 0x8a, 0xce, 0x54, 0x0e, 0x20, 0x7c, 0xef, 0xc4, 0xab, 0xdd, 0x17, 0xb3, - 0xf4, 0x3f, 0x76, 0x5d, 0xd9, 0x0d, 0xd9, 0xa0, 0x12, 0xc5, 0x68, 0x60, - 0x64, 0x4b, 0x9e, 0xcb, 0x41, 0x1a, 0x0e, 0x1c, 0x65, 0x49, 0xfa, 0xd4, - 0x55, 0xe0, 0xb6, 0x5c, 0x00, 0x40, 0x59, 0x02, 0xb9, 0xc3, 0x9b, 0x47, - 0x54, 0xf5, 0xaa, 0xe1, 0x78, 0x81, 0x78, 0xeb, 0x7c, 0x62, 0x86, 0xfb, - 0x60, 0x06, 0x67, 0xbe, 0x3c, 0x83, 0xb5, 0x27, 0x43, 0x2d, 0x40, 0xb5, - 0xd6, 0xc4, 0xe1, 0xb9, 0x2e, 0xe7, 0xd9, 0x60, 0xcd, 0xd1, 0x29, 0xf7, - 0x5e, 0x76, 0xcd, 0x55, 0x3a, 0x6b, 0x30, 0xc0, 0x07, 0x1c, 0x8b, 0x91, - 0x93, 0x83, 0x5a, 0x54, 0x2c, 0xad, 0x7b, 0x8f, 0x26, 0xb2, 0x00, 0x3c, - 0xce, 0xdf, 0x01, 0x55, 0x61, 0x02, 0xb7, 0xeb, 0x8e, 0x7b, 0x22, 0x4f, - 0x9f, 0x7b, 0x8b, 0x68, 0x29, 0xac, 0xcb, 0xb4, 0x38, 0x6c, 0x45, 0x4e, - 0x78, 0x20, 0xac, 0x61, 0x23, 0xe1, 0xcb, 0x22, 0x2d, 0x8d, 0x12, 0xe2, - 0x44, 0x12, 0x6a, 0x23, 0xf4, 0xae, 0x4a, 0xe9, 0x9a, 0x19, 0x28, 0x8a, - 0x59, 0x10, 0x7d, 0x88, 0x3b, 0xad, 0x88, 0x66, 0x71, 0x27, 0x21, 0xa6, - 0x13, 0xbc, 0x13, 0xbf, 0xcf, 0x5b, 0x03, 0x87, 0xeb, 0x9e, 0x6b, 0x8c, - 0xf6, 0xb4, 0xaa, 0x17, 0xa1, 0x65, 0xfb, 0x2b, 0xe8, 0x3a, 0xb2, 0x01, - 0xaf, 0x16, 0xa4, 0x7c, 0xc7, 0x53, 0x22, 0xc8, 0x60, 0xe8, 0x22, 0xa4, - 0x51, 0x4c, 0x6a, 0xd7, 0x91, 0x19, 0x5d, 0xea, 0x92, 0xaa, 0x64, 0x4c, - 0x4a, 0x38, 0x3b, 0xd4, 0x0d, 0xde, 0xc8, 0x18, 0x91, 0xf8, 0xa5, 0x9e, - 0x47, 0x2f, 0x83, 0xa3, 0xce, 0x7b, 0xeb, 0xcf, 0x33, 0x22, 0x0c, 0x8f, - 0x4b, 0xe1, 0x00, 0xa3, 0x41, 0x5d, 0x51, 0x49, 0xd5, 0x36, 0xaf, 0x8b, - 0x73, 0xad, 0xf7, 0xe6, 0x2a, 0x7b, 0xc4, 0xe7, 0x7a, 0x46, 0xcd, 0xc7, - 0xd7, 0x13, 0xf8, 0x14, 0x68, 0x32, 0xc8, 0x33, 0x6b, 0x46, 0xbd, 0x75, - 0x8a, 0xa3, 0x0e, 0xb3, 0xbe, 0x04, 0x6a, 0xac, 0x58, 0xfe, 0xf2, 0x6a, - 0x4c, 0x5d, 0xc8, 0xdf, 0x2c, 0x17, 0x0e, 0xf0, 0xe5, 0xfd, 0x1e, 0x6c, - 0xb7, 0xc4, 0xa8, 0xa8, 0x21, 0x3e, 0xc6, 0x2f, 0x5e, 0x3a, 0x92, 0x43, - 0xdf, 0x2e, 0xe1, 0x0c, 0x86, 0x5d, 0xb0, 0x9d, 0xb4, 0xf2, 0x7a, 0x15, - 0x7b, 0xf2, 0x97, 0x7c, 0x70, 0x60, 0xb1, 0x22, 0x8c, 0xc8, 0xde, 0x7e, - 0x26, 0x34, 0x57, 0x02, 0xe2, 0xc7, 0xca, 0x6a, 0xc6, 0xe7, 0x69, 0x66, - 0x59, 0x52, 0xfc, 0x45, 0x4a, 0x2c, 0x56, 0x15, 0xbc, 0xa6, 0xbf, 0xf3, - 0x75, 0xe3, 0xdb, 0x93, 0xfb, 0xb2, 0xb0, 0x8d, 0x83, 0x3d, 0x97, 0x0b, - 0x0c, 0xd1, 0x5a, 0xcc, 0xc0, 0xf4, 0x3e, 0x12, 0x19, 0x76, 0x92, 0xf1, - 0xd2, 0x11, 0x46, 0x9a, 0x80, 0xbe, 0xe9, 0xf4, 0x59, 0x91, 0x31, 0x56, - 0xb1, 0xff, 0xda, 0x9b, 0x19, 0xa2, 0x56, 0x08, 0x8d, 0x78, 0x65, 0xd4, - 0x77, 0xa7, 0xc8, 0x75, 0x10, 0x73, 0x46, 0xb4, 0xc2, 0x5b, 0x69, 0xd0, - 0x54, 0x66, 0xa1, 0xe1, 0x09, 0x00, 0x0c, 0xad, 0x86, 0x71, 0x30, 0x42, - 0x54, 0x57, 0xbf, 0xa7, 0x84, 0x59, 0x16, 0xac, 0x68, 0xd3, 0x22, 0x19, - 0x45, 0x7f, 0x62, 0xc3, 0x89, 0x52, 0x5d, 0x5a, 0x09, 0x97, 0x7e, 0xfd, - 0xf6, 0x89, 0xba, 0x39, 0xa5, 0xe9, 0x1f, 0x35, 0xc2, 0xd6, 0x53, 0x91, - 0x5f, 0xc8, 0xeb, 0x5b, 0x75, 0xdc, 0x68, 0x65, 0x35, 0x97, 0x10, 0x14, - 0x1d, 0x22, 0x67, 0x08, 0x24, 0xfe, 0x3b, 0xed, 0xfa, 0x77, 0xab, 0x98, - 0xe5, 0x32, 0x67, 0x1b, 0x24, 0xe7, 0x85, 0x2b, 0x50, 0x81, 0xb8, 0x1c, - 0x7b, 0xb0, 0x6c, 0xcf, 0x9c, 0x5d, 0x2e, 0xf8, 0xc3, 0xf8, 0xdd, 0x11, - 0x85, 0x2d, 0x14, 0xd6, 0x30, 0xa3, 0xd4, 0x06, 0x87, 0xff, 0x4e, 0x38, - 0xb9, 0xd1, 0x47, 0xfd, 0x0d, 0xbc, 0x74, 0xf9, 0x1c, 0x1f, 0x6e, 0x54, - 0x9a, 0xf9, 0xf1, 0xa9, 0x3d, 0xfe, 0x8e, 0x03, 0x43, 0x2c, 0x38, 0xcc, - 0xbf, 0x52, 0x7c, 0xe7, 0x6f, 0xea, 0xea, 0x8e, 0x22, 0x91, 0x88, 0xd7, - 0xf2, 0xe8, 0x16, 0x33, 0xdc, 0x65, 0x23, 0x3d, 0xe6, 0xb4, 0xbd, 0xcd, - 0xc9, 0x24, 0xb9, 0x0b, 0xcf, 0x20, 0x45, 0xea, 0x16, 0xbf, 0x92, 0xa7, - 0x59, 0x12, 0xa1, 0x67, 0xc7, 0x2b, 0xb0, 0x3e, 0xa4, 0xd8, 0x7b, 0x19, - 0xe6, 0xf9, 0xaf, 0xeb, 0x8f, 0xce, 0xd6, 0x6b, 0xe1, 0x99, 0x11, 0xca, - 0x64, 0xde, 0x66, 0x16, 0x4c, 0x42, 0x20, 0x9d, 0xa4, 0x8f, 0xe7, 0x2d, - 0x68, 0x17, 0xbd, 0xe9, 0x33, 0xc8, 0xee, 0xaa, 0x67, 0xea, 0xa5, 0xff, - 0x54, 0x47, 0xc4, 0x82, 0x81, 0x7e, 0x05, 0xde, 0xab, 0x07, 0x60, 0x3c, - 0xf6, 0xd5, 0x12, 0x22, 0x7b, 0x9e, 0x6f, 0xf2, 0x4b, 0x1d, 0x3c, 0x80, - 0xa7, 0x11, 0xc9, 0xee, 0x0e, 0xc9, 0xf6, 0xd4, 0xd7, 0x7b, 0x81, 0x4a, - 0x13, 0x25, 0x32, 0x24, 0x0b, 0x29, 0xfc, 0x8b, 0x96, 0xa4, 0x75, 0xaf, - 0xe9, 0x43, 0x35, 0x5f, 0x0f, 0xbd, 0x46, 0xd3, 0x0c, 0x4f, 0xa7, 0x05, - 0x7b, 0xb7, 0x21, 0x09, 0xce, 0x8e, 0x7d, 0x69, 0x9a, 0xf0, 0x14, 0x00, - 0xf7, 0x70, 0x2c, 0xd6, 0xb0, 0xed, 0x55, 0xdb, 0x4b, 0xb6, 0x0a, 0xa9, - 0x99, 0xb3, 0xe7, 0x22, 0xd2, 0xe6, 0x37, 0xf4, 0xa3, 0x22, 0x44, 0x43, - 0xa4, 0x0e, 0x32, 0xf6, 0x47, 0x0d, 0xa6, 0x44, 0x23, 0x5c, 0x0e, 0xbb, - 0x49, 0x89, 0xf1, 0x80, 0x20, 0xba, 0x2f, 0xf1, 0x7f, 0x64, 0xe3, 0x19, - 0xed, 0x0f, 0x7e, 0x18, 0xe1, 0x49, 0xad, 0x5d, 0x50, 0xc9, 0xfe, 0x8d, - 0x79, 0xea, 0x06, 0x2c, 0x42, 0xf6, 0x22, 0x04, 0x84, 0x69, 0xd0, 0xbd, - 0xae, 0xf3, 0x06, 0x93, 0x47, 0x12, 0x58, 0x92, 0x6f, 0x6d, 0xcd, 0xc3, - 0xb5, 0xaa, 0x45, 0x7f, 0x7f, 0x99, 0x27, 0x48, 0x61, 0x14, 0x6c, 0x10, - 0x40, 0xe1, 0x08, 0xc4, 0x84, 0x22, 0xcb, 0x2f, 0xc9, 0xb0, 0x56, 0xdf, - 0xf5, 0x22, 0x27, 0x4e, 0x6e, 0x4c, 0x1d, 0x06, 0xc8, 0x45, 0xfc, 0x88, - 0xdf, 0x38, 0x82, 0xb9, 0x59, 0x68, 0x74, 0x00, 0xcb, 0x67, 0x10, 0x7c, - 0x00, 0xa9, 0x1a, 0x6d, 0xf8, 0x68, 0xd8, 0xe0, 0x78, 0x23, 0xd0, 0x18, - 0xb2, 0x8c, 0x62, 0x73, 0x0e, 0x4b, 0xf9, 0xf2, 0xc8, 0x8b, 0x78, 0xdd, - 0x17, 0xce, 0x10, 0xc3, 0xda, 0xd2, 0xee, 0x48, 0x68, 0x49, 0x91, 0x0a, - 0x01, 0x8c, 0xee, 0x03, 0xf5, 0xbb, 0xf4, 0xbb, 0x0d, 0x86, 0xde, 0x7c, - 0xb0, 0x01, 0x11, 0x82, 0xbe, 0xfb, 0x73, 0x36, 0xe0, 0x37, 0xc4, 0x5d, - 0x4a, 0x1d, 0x63, 0xae, 0xd3, 0x56, 0x24, 0x68, 0x65, 0x67, 0x79, 0xac, - 0xdf, 0x0a, 0xf0, 0x4b, 0xb6, 0x11, 0x1d, 0xc9, 0x0c, 0x0c, 0xa2, 0xc4, - 0x60, 0xfe, 0xc9, 0xec, 0xf4, 0x97, 0xd7, 0xd6, 0x93, 0x8f, 0x5e, 0xc6, - 0xfd, 0x37, 0xa7, 0xd7, 0xb5, 0xd6, 0x21, 0x31, 0x51, 0x03, 0x50, 0x24, - 0x86, 0x42, 0xa2, 0xdf, 0xca, 0x09, 0xfa, 0xfb, 0x92, 0x26, 0xc9, 0xbd, - 0x5e, 0xf5, 0x5f, 0xfd, 0x52, 0xa4, 0x91, 0x03, 0x70, 0xb5, 0x52, 0xcf, - 0x64, 0xd5, 0x68, 0x1b, 0x08, 0x35, 0x06, 0x47, 0x79, 0x82, 0xf2, 0x70, - 0xdd, 0xc7, 0x6e, 0x1f, 0x36, 0x43, 0xce, 0x8a, 0xda, 0x9d, 0x88, 0xdf, - 0xc8, 0x55, 0xf9, 0xc9, 0xd4, 0x75, 0xd9, 0x5b, 0xe2, 0x64, 0x6a, 0xf8, - 0x2b, 0x2b, 0x5f, 0x29, 0x09, 0x6f, 0x95, 0x7a, 0xb3, 0xd0, 0x05, 0x2f, - 0x79, 0xa8, 0xb9, 0x11, 0x2e, 0x3c, 0x01, 0x86, 0x26, 0xdb, 0x21, 0x17, - 0x57, 0xaa, 0x3f, 0xf6, 0x29, 0xf7, 0x14, 0x5f, 0x81, 0x5e, 0x17, 0xe5, - 0xcf, 0x19, 0x7e, 0x25, 0x84, 0xa3, 0xa2, 0x28, 0x35, 0x41, 0xd1, 0x65, - 0x9e, 0x2e, 0x29, 0xf4, 0x53, 0x76, 0xed, 0x30, 0x88, 0x5a, 0x17, 0xf9, - 0xc0, 0xdd, 0x8f, 0x01, 0x2a, 0x62, 0xb8, 0x80, 0xcf, 0x39, 0xf5, 0x52, - 0x23, 0xa6, 0xe9, 0xdf, 0x85, 0xaa, 0x54, 0xdc, 0x58, 0x81, 0x31, 0x4d, - 0x07, 0x75, 0xb6, 0x8b, 0x90, 0xb4, 0x0d, 0xf5, 0x43, 0x1b, 0x7d, 0xb3, - 0xc6, 0x11, 0xb3, 0x21, 0x05, 0x7a, 0x53, 0xd6, 0xf9, 0xd0, 0x84, 0x74, - 0x46, 0xf3, 0x5a, 0xed, 0x75, 0x74, 0x92, 0xe4, 0x26, 0xab, 0x2d, 0x41, - 0xbf, 0xcf, 0xf8, 0xe7, 0xde, 0x89, 0x27, 0xf3, 0xe3, 0x15, 0x2b, 0xdd, - 0x97, 0x05, 0xb5, 0xa0, 0xe0, 0x07, 0x6c, 0x5c, 0x14, 0xbd, 0x2a, 0x29, - 0x78, 0x5f, 0xce, 0xee, 0xf6, 0x45, 0x24, 0x81, 0x9a, 0x73, 0x4e, 0xe4, - 0xb7, 0x07, 0xce, 0xbd, 0xcf, 0x24, 0x05, 0xfc, 0x7f, 0xc9, 0x3f, 0x5a, - 0xee, 0xfc, 0xa1, 0x59, 0x37, 0xb2, 0xd1, 0x4f, 0x6d, 0xd5, 0x6f, 0xbd, - 0x78, 0x23, 0xbb, 0x6f, 0x1b, 0x0e, 0xad, 0xd7, 0x97, 0x4a, 0xce, 0x49, - 0x36, 0x5e, 0x51, 0xdb, 0x57, 0x35, 0xf9, 0x9e, 0xe4, 0x8e, 0xbf, 0xd7, - 0x9c, 0x6d, 0x6e, 0xcb, 0x52, 0x4e, 0xe8, 0xc6, 0xd7, 0xdf, 0xb6, 0xf9, - 0x64, 0x5a, 0x26, 0xa8, 0x69, 0xb1, 0xd9, 0x5b, 0xd4, 0xed, 0x8a, 0x03, - 0x2d, 0x82, 0xc9, 0x5c, 0x35, 0x99, 0x65, 0x81, 0xd8, 0x48, 0xa8, 0xac, - 0x37, 0xef, 0xf4, 0x8e, 0x49, 0x39, 0x26, 0xcb, 0x6c, 0x1e, 0x1f, 0xa4, - 0x26, 0x28, 0x51, 0x20, 0xed, 0x96, 0x5d, 0xf2, 0xdd, 0x65, 0xd1, 0x9e, - 0xd9, 0x9d, 0x4c, 0xdb, 0x45, 0xa7, 0xb8, 0xaf, 0xa1, 0xca, 0xde, 0xb3, - 0x83, 0x4a, 0xc8, 0x32, 0xe5, 0xf6, 0x9f, 0xb4, 0x23, 0xf4, 0x8e, 0x0c, - 0x76, 0x44, 0x19, 0x7c, 0xaa, 0xe8, 0x48, 0x73, 0xdd, 0x8d, 0x6a, 0x47, - 0xe4, 0x57, 0x4f, 0x02, 0x71, 0x95, 0xc7, 0xca, 0x96, 0x72, 0xde, 0x3a, - 0x58, 0xc7, 0x71, 0x00, 0x5c, 0xcc, 0xcb, 0x3b, 0x84, 0x33, 0xc5, 0x0c, - 0xd6, 0x80, 0xc6, 0x2f, 0x83, 0x8c, 0x59, 0x56, 0xef, 0x2e, 0x4e, 0x2b, - 0x07, 0x53, 0x83, 0x89, 0x31, 0x8a, 0x91, 0xe5, 0x31, 0xee, 0xc8, 0x62, - 0x1b, 0xb7, 0x21, 0xf3, 0x62, 0xd1, 0x2c, 0xeb, 0x29, 0x78, 0x69, 0x1c, - 0x74, 0xcb, 0xbc, 0xc5, 0x65, 0x31, 0x78, 0x9b, 0x2e, 0xf5, 0x2f, 0xc6, - 0x13, 0x0c, 0x4e, 0x08, 0x27, 0xe6, 0x3b, 0x41, 0xe0, 0x36, 0x19, 0x52, - 0xe6, 0xe5, 0x9a, 0xda, 0x62, 0xd8, 0x11, 0x0b, 0x0f, 0x20, 0x6a, 0x7c, - 0xdc, 0xcf, 0x59, 0xa8, 0x7c, 0xc6, 0x85, 0xc6, 0x65, 0xd9, 0x62, 0xe8, - 0x74, 0xec, 0x54, 0x6f, 0x57, 0x13, 0xe1, 0xef, 0x66, 0xe5, 0x85, 0x2e, - 0x7b, 0x18, 0xd8, 0xbc, 0x06, 0xd8, 0x42, 0x36, 0x26, 0xd6, 0x0c, 0xb4, - 0xcb, 0xf9, 0x1b, 0x76, 0x4e, 0x2e, 0x7c, 0x0d, 0x52, 0xb8, 0x31, 0xad, - 0x5a, 0x77, 0xfc, 0xe4, 0x21, 0xae, 0x35, 0xb3, 0xf1, 0xd0, 0x42, 0x94, - 0x32, 0x74, 0x99, 0xc8, 0x52, 0x58, 0x56, 0xb8, 0x4f, 0xeb, 0xb5, 0x1f, - 0xca, 0x95, 0xb3, 0xd5, 0xe0, 0xb7, 0xe7, 0xa2, 0x7d, 0xad, 0x0d, 0x9f, - 0x27, 0xee, 0x5c, 0x2c, 0x87, 0x67, 0xaf, 0x50, 0xe5, 0x40, 0x89, 0x2c, - 0x5c, 0x1f, 0x96, 0x14, 0x15, 0x28, 0x0f, 0x92, 0x52, 0xba, 0x3c, 0xa2, - 0x6d, 0x77, 0x75, 0x7c, 0x74, 0x85, 0x45, 0x11, 0x39, 0xc9, 0xc6, 0x70, - 0x29, 0xb5, 0x7c, 0x47, 0x9a, 0xba, 0xc8, 0x29, 0x36, 0xc6, 0x5a, 0x75, - 0xce, 0xb2, 0xd0, 0xce, 0xdd, 0x3b, 0xd6, 0xd6, 0x3b, 0x36, 0x5e, 0xd1, - 0xdc, 0xf5, 0xac, 0xe4, 0xb0, 0x69, 0x00, 0xc6, 0x75, 0x87, 0x3c, 0x9b, - 0x94, 0x30, 0xd6, 0xde, 0xd9, 0xdb, 0x80, 0x1d, 0xff, 0x6f, 0xce, 0xf9, - 0x23, 0xa6, 0x46, 0xf9, 0x2f, 0x06, 0x45, 0x57, 0x77, 0x38, 0xa6, 0xd6, - 0x75, 0x16, 0x14, 0x02, 0x58, 0x8a, 0x85, 0x3c, 0xd8, 0x26, 0x2c, 0xd0, - 0x66, 0xe8, 0x1f, 0xea, 0x51, 0x92, 0x58, 0x78, 0x23, 0x16, 0x0e, 0x6c, - 0x9a, 0xc3, 0x1f, 0x5f, 0xf0, 0x76, 0x31, 0xb4, 0x73, 0xdc, 0x30, 0x5b, - 0xcf, 0x65, 0x1d, 0x39, 0xfc, 0xa4, 0x1b, 0x8b, 0xd2, 0xdf, 0x8b, 0x38, - 0xdf, 0x6f, 0x83, 0x74, 0x82, 0x1d, 0xcd, 0xaa, 0xc7, 0x6d, 0xe0, 0x1d, - 0xb4, 0x63, 0xc4, 0xce, 0xa2, 0x04, 0xa1, 0x67, 0xc1, 0x8f, 0x18, 0x79, - 0xa0, 0xd2, 0x4c, 0x0c, 0xaa, 0x3d, 0x2e, 0x84, 0x82, 0x70, 0x24, 0x3f, - 0x14, 0xa9, 0x76, 0xd7, 0xed, 0xd5, 0x58, 0xe6, 0x1a, 0xc6, 0x19, 0xcc, - 0xcf, 0x8a, 0x0c, 0x63, 0xb7, 0xc7, 0x41, 0x35, 0x4f, 0x49, 0xdb, 0xc2, - 0xde, 0x39, 0x62, 0x02, 0x86, 0xc8, 0xe1, 0xa4, 0x7f, 0xf1, 0x77, 0xce, - 0xdb, 0x1f, 0x7d, 0xab, 0x09, 0x12, 0x2b, 0x65, 0x6b, 0xc4, 0x9d, 0x3e, - 0x1d, 0xa5, 0x64, 0xb9, 0x09, 0xa6, 0x6b, 0x5a, 0x3a, 0xa6, 0x6a, 0x0a, - 0x04, 0xe9, 0x11, 0x57, 0x4d, 0x57, 0x1a, 0x8e, 0x0f, 0x84, 0x9f, 0x2f, - 0x97, 0x07, 0xf9, 0x0b, 0xcf, 0x56, 0x9f, 0x60, 0x11, 0x18, 0x1f, 0xb7, - 0x59, 0xac, 0xce, 0xf3, 0x04, 0x3c, 0x85, 0x84, 0xaf, 0x20, 0x33, 0x0c, - 0xe1, 0xc8, 0x0b, 0x31, 0x2c, 0xa7, 0x81, 0x3d, 0xc2, 0x75, 0xce, 0x12, - 0x94, 0xb6, 0xd1, 0x69, 0xf4, 0x9b, 0x57, 0xcd, 0x4b, 0x9d, 0xe7, 0xe6, - 0x1e, 0x78, 0x11, 0xbb, 0x69, 0xd2, 0x02, 0x3f, 0xe4, 0xc8, 0x4f, 0x3e, - 0xfc, 0xcd, 0xe4, 0xd1, 0x10, 0xfb, 0x29, 0xc7, 0x33, 0x52, 0xda, 0x01, - 0xbb, 0xdf, 0xac, 0x2a, 0xea, 0x7a, 0x6d, 0x41, 0x27, 0x90, 0xb3, 0xae, - 0xc0, 0xc5, 0x92, 0x83, 0xe7, 0xfe, 0xbc, 0x89, 0x5b, 0xfb, 0x22, 0x26, - 0x36, 0xa2, 0x80, 0x64, 0xc6, 0x40, 0x49, 0x2c, 0xbb, 0x2e, 0x13, 0x8c, - 0x59, 0x4f, 0x1f, 0x4d, 0x55, 0x6b, 0x1e, 0xd1, 0x81, 0x5a, 0x99, 0xda, - 0xac, 0xdd, 0x4e, 0xe5, 0xb7, 0x73, 0x96, 0x27, 0xcc, 0x27, 0x19, 0x8e, - 0x90, 0x2e, 0x25, 0xbb, 0xa1, 0x27, 0x60, 0xba, 0x52, 0x43, 0x4a, 0x67, - 0x39, 0x7a, 0xfa, 0x94, 0xb2, 0xcd, 0x4a, 0x48, 0x7e, 0x3e, 0x96, 0x43, - 0x37, 0xe3, 0xfc, 0x7c, 0x09, 0x40, 0x70, 0x02, 0x71, 0xf4, 0x93, 0xbf, - 0x86, 0xf2, 0x1d, 0xbc, 0xb6, 0x9a, 0xd8, 0x44, 0x1c, 0xdd, 0x1c, 0x2f, - 0x59, 0x79, 0x71, 0x50, 0x10, 0xbe, 0x43, 0x05, 0x8a, 0xb6, 0xba, 0xf4, - 0xf6, 0xf1, 0xfe, 0xf8, 0xca, 0xd6, 0xf3, 0xe3, 0xe6, 0x6b, 0xfe, 0x65, - 0xfd, 0xac, 0x6d, 0x32, 0xc1, 0xcc, 0x9d, 0xd0, 0x2b, 0x2e, 0x39, 0x49, - 0x47, 0x06, 0x0b, 0x80, 0x2c, 0x83, 0x4f, 0xdf, 0xbb, 0x3e, 0x86, 0xea, - 0x15, 0x57, 0x5d, 0xc1, 0x1a, 0xe2, 0x0c, 0xd8, 0x94, 0xca, 0x01, 0xef, - 0x85, 0xc6, 0x38, 0xd4, 0xfd, 0x57, 0x83, 0xd1, 0x2d, 0x21, 0xe1, 0xda, - 0x66, 0xa3, 0x93, 0x2b, 0x5e, 0x8d, 0xc3, 0x52, 0xb8, 0x66, 0x3a, 0x99, - 0x3a, 0x6a, 0x59, 0x19, 0x42, 0x79, 0xb6, 0x42, 0xd3, 0x64, 0x31, 0x3a, - 0xaa, 0xbe, 0xc6, 0x41, 0xe5, 0xd8, 0xc1, 0x84, 0x3b, 0xcc, 0xb9, 0xf1, - 0xbf, 0x54, 0x84, 0x91, 0xf1, 0x68, 0x34, 0x14, 0x7e, 0x29, 0x66, 0x00, - 0xe4, 0x16, 0xa7, 0x25, 0x92, 0xd3, 0x1d, 0x92, 0xab, 0xf6, 0x57, 0x19, - 0xaf, 0xae, 0xe7, 0x95, 0xdb, 0x19, 0x26, 0x68, 0x5c, 0x29, 0x2e, 0x17, - 0x67, 0x6d, 0xc3, 0x09, 0x42, 0x0b, 0x31, 0x11, 0x96, 0x82, 0x8c, 0x4e, - 0x3a, 0x26, 0x7f, 0xd0, 0x90, 0xcc, 0x99, 0x88, 0xa3, 0xa2, 0x36, 0xb5, - 0x9c, 0xb4, 0x40, 0x6b, 0x7c, 0xb5, 0xd7, 0x58, 0xdb, 0x2d, 0x20, 0x52, - 0x3e, 0x29, 0x61, 0x36, 0x6e, 0x07, 0xd9, 0xdc, 0x6e, 0xc2, 0x08, 0x1a, - 0x79, 0x24, 0xc3, 0x45, 0x6c, 0xd8, 0xdf, 0xe5, 0xa2, 0x70, 0xf9, 0xce, - 0x9d, 0xe2, 0x40, 0x7b, 0x11, 0xd4, 0x8b, 0x26, 0xd9, 0x99, 0xae, 0xa3, - 0x3e, 0x8d, 0x46, 0x3f, 0x08, 0xd3, 0x89, 0x02, 0x39, 0x70, 0x60, 0x25, - 0x42, 0xdf, 0xe0, 0x5a, 0x08, 0xfc, 0xe8, 0x03, 0x37, 0xa9, 0x84, 0xe3, - 0xe0, 0x19, 0x6a, 0x8b, 0x2d, 0xcf, 0xa8, 0xc4, 0xa0, 0xdb, 0x83, 0x68, - 0xc2, 0x3e, 0x5e, 0xf7, 0x14, 0xc9, 0xab, 0x1b, 0x4b, 0x64, 0x01, 0x2f, - 0xf7, 0xc3, 0x0c, 0x8f, 0x1f, 0x98, 0x60, 0x71, 0x73, 0xcb, 0x1a, 0x45, - 0x31, 0xf9, 0x61, 0xea, 0x26, 0x61, 0x8f, 0x2a, 0x1b, 0xb3, 0xbc, 0xcc, - 0x1c, 0x12, 0x2e, 0x6e, 0x1d, 0x7e, 0xff, 0xe0, 0xca, 0x0a, 0xaf, 0xb2, - 0x36, 0xbe, 0x87, 0x8d, 0xae, 0xb8, 0xf5, 0xbf, 0x6f, 0x3e, 0x32, 0x7a, - 0x99, 0xa5, 0xf9, 0x9e, 0xd4, 0x23, 0x48, 0x79, 0xda, 0x06, 0x99, 0x3c, - 0x96, 0x74, 0x38, 0xac, 0xe9, 0xee, 0xe0, 0x2b, 0x0b, 0xe9, 0xff, 0x8a, - 0x2f, 0xf9, 0xa5, 0xc2, 0xb6, 0x79, 0xe2, 0x8d, 0xee, 0x35, 0x7a, 0xd8, - 0x94, 0x42, 0x06, 0x1d, 0xc9, 0xe0, 0xc3, 0xc7, 0xbd, 0x91, 0xd5, 0x98, - 0x01, 0xe7, 0x1c, 0xca, 0xd5, 0xd0, 0x5d, 0x8b, 0x56, 0xcb, 0xc7, 0xc3, - 0xb8, 0xca, 0xad, 0x26, 0x9f, 0x75, 0x37, 0x1e, 0x9a, 0xcf, 0x26, 0x26, - 0x17, 0x86, 0x51, 0xd1, 0x6a, 0x95, 0x9f, 0xc0, 0xaa, 0xc7, 0xdb, 0x13, - 0x61, 0x40, 0x02, 0xb5, 0x0d, 0xf3, 0x6e, 0x4b, 0x9d, 0xb3, 0x11, 0x48, - 0x9f, 0x4a, 0x3b, 0x8e, 0xbc, 0xb3, 0x42, 0xb7, 0x63, 0x9a, 0xff, 0x0e, - 0x9b, 0xf6, 0x48, 0x49, 0x38, 0x6f, 0x6b, 0xfd, 0x4f, 0x67, 0x63, 0x55, - 0x89, 0x03, 0xc6, 0xee, 0x12, 0x81, 0x3a, 0x22, 0x7d, 0xae, 0x1e, 0x23, - 0x8b, 0xea, 0xe8, 0x5d, 0xcc, 0x3f, 0xe8, 0x2d, 0x23, 0xe7, 0x08, 0xf9, - 0x3c, 0x67, 0xe2, 0x96, 0x5a, 0xf2, 0x4c, 0x50, 0x6e, 0xa1, 0x64, 0xdf, - 0x11, 0x5d, 0xeb, 0x56, 0x16, 0x9b, 0xd3, 0xbc, 0x64, 0xa4, 0x75, 0x75, - 0xfa, 0xbe, 0xce, 0x45, 0x87, 0xdc, 0xe0, 0x30, 0x5b, 0x35, 0x07, 0x45, - 0x95, 0x77, 0xfb, 0xc1, 0x19, 0xb6, 0x50, 0x5e, 0xe2, 0x2a, 0xfc, 0xb4, - 0x9d, 0xec, 0x5b, 0xc7, 0xca, 0x40, 0x51, 0xce, 0xc4, 0xf6, 0x1c, 0x94, - 0xd3, 0xb9, 0xeb, 0x8f, 0x91, 0x21, 0xdb, 0xe1, 0x78, 0xd3, 0x1b, 0x09, - 0x6e, 0xa3, 0x9e, 0x5d, 0x93, 0x42, 0xff, 0x8f, 0x30, 0xe2, 0x7f, 0xa1, - 0x62, 0xf4, 0xb2, 0x08, 0x2a, 0x0e, 0x34, 0x9c, 0x36, 0x49, 0x46, 0xf6, - 0x05, 0x85, 0x85, 0xae, 0x8e, 0x72, 0x2d, 0x5e, 0x4d, 0x93, 0xc2, 0x00, - 0xc6, 0xd2, 0xdf, 0xc1, 0xf3, 0x2d, 0xf6, 0xbc, 0x82, 0xbf, 0x93, 0x06, - 0x9a, 0xf7, 0x0d, 0x42, 0xc1, 0xb2, 0xaa, 0x7c, 0xd4, 0x58, 0x21, 0x0c, - 0xc8, 0x1a, 0x30, 0xeb, 0xbf, 0xc4, 0x2e, 0x4a, 0xfa, 0x72, 0x49, 0x75, - 0x83, 0xc4, 0xed, 0x4f, 0x93, 0x18, 0x93, 0x06, 0x11, 0xb3, 0x0a, 0x30, - 0xc5, 0xbc, 0xd4, 0xa3, 0x56, 0xe4, 0xf2, 0x05, 0x90, 0x34, 0x1b, 0x5e, - 0xc5, 0xd4, 0x53, 0xee, 0x50, 0x9b, 0xdd, 0xc5, 0xb8, 0xb0, 0xbf, 0x95, - 0x4e, 0x58, 0x57, 0x57, 0xbd, 0xde, 0xae, 0x8f, 0x95, 0x51, 0x90, 0x48, - 0x91, 0x12, 0x65, 0xe9, 0x38, 0x5f, 0x4a, 0x8f, 0x31, 0xd0, 0x5f, 0x75, - 0x86, 0x02, 0x97, 0x84, 0xb2, 0xd0, 0xde, 0x95, 0xee, 0xbd, 0xa9, 0x33, - 0x0a, 0xc6, 0x82, 0x7c, 0xf7, 0x5d, 0x97, 0x4c, 0x25, 0xe9, 0xed, 0xd0, - 0x6b, 0x78, 0x5c, 0x3b, 0xdd, 0x93, 0xbd, 0xbb, 0xe4, 0x57, 0xc0, 0xe5, - 0x38, 0xd4, 0xd7, 0xc1, 0x83, 0x92, 0x1b, 0x08, 0x9f, 0x50, 0xac, 0x72, - 0x4e, 0xb4, 0x72, 0x73, 0x29, 0xc1, 0x7e, 0xe9, 0x1b, 0x46, 0xdb, 0x51, - 0x68, 0x75, 0x4c, 0xae, 0xc8, 0x30, 0x5d, 0x85, 0x9f, 0x27, 0x92, 0x3a, - 0xdf, 0xed, 0x3a, 0xe5, 0x5d, 0x11, 0xb6, 0x04, 0x1d, 0x3f, 0x7e, 0xd5, - 0x3e, 0x25, 0xfe, 0x5b, 0xc6, 0x98, 0x40, 0x7f, 0x99, 0x3f, 0xa4, 0x0b, - 0x19, 0x1a, 0xe0, 0x3f, 0x51, 0x30, 0xcf, 0x30, 0x29, 0x39, 0xd9, 0x94, - 0x6c, 0x00, 0x20, 0xf2, 0x82, 0x18, 0x54, 0x34, 0x47, 0xa0, 0x23, 0xff, - 0xfc, 0x59, 0x12, 0xbc, 0xc8, 0x71, 0x45, 0xb6, 0xac, 0x02, 0x45, 0x7c, - 0x49, 0x2a, 0x75, 0xa3, 0x70, 0x1a, 0x8f, 0x6f, 0x40, 0x7f, 0x9d, 0x19, - 0xd3, 0x31, 0xf9, 0x0c, 0xa1, 0xa9, 0x1c, 0xdd, 0x79, 0x66, 0xbf, 0xc3, - 0xec, 0xb2, 0x3a, 0x55, 0x6b, 0x14, 0xe6, 0xab, 0x15, 0x44, 0x11, 0x42, - 0x34, 0xea, 0x4a, 0xc0, 0xb5, 0x11, 0x19, 0x59, 0xf4, 0xc9, 0x25, 0x40, - 0x9f, 0xaa, 0xeb, 0xa7, 0xd0, 0x63, 0xb4, 0xf1, 0x60, 0x6d, 0x61, 0xd4, - 0x5f, 0xf6, 0xd2, 0xde, 0x93, 0x7b, 0x1b, 0xe4, 0x2f, 0x82, 0xa3, 0xae, - 0x6b, 0xf5, 0xdc, 0xae, 0xfc, 0x8d, 0x45, 0xc6, 0x7a, 0xaf, 0xdf, 0x9d, - 0xec, 0xec, 0xd8, 0xb3, 0xfb, 0x04, 0x12, 0xc5, 0xcb, 0x15, 0xbf, 0xf1, - 0x65, 0xb9, 0x3d, 0x77, 0x56, 0x18, 0x77, 0x11, 0x18, 0xfe, 0x75, 0x44, - 0x19, 0x26, 0x2e, 0xc1, 0xab, 0xce, 0x70, 0x85, 0x06, 0xd3, 0xb6, 0xe9, - 0x52, 0xca, 0x52, 0xef, 0xcd, 0x61, 0x54, 0x43, 0x95, 0xde, 0x4c, 0x69, - 0xf8, 0x3a, 0x1b, 0x10, 0xcf, 0x7d, 0x73, 0x3e, 0x9e, 0xcc, 0x6b, 0x5a, - 0x24, 0x87, 0xc7, 0x16, 0x7f, 0xd2, 0x27, 0x66, 0xe4, 0x23, 0x23, 0xf9, - 0x3e, 0x90, 0x36, 0x26, 0xe3, 0xc0, 0xd3, 0x5d, 0xbe, 0x41, 0x3f, 0xe9, - 0x93, 0xc4, 0x97, 0xc4, 0x0a, 0x23, 0x61, 0x32, 0x2d, 0xb9, 0x35, 0xfe, - 0x96, 0x2a, 0xd7, 0x4d, 0x3f, 0x73, 0x34, 0xd3, 0xff, 0xa8, 0x45, 0x37, - 0x89, 0x63, 0xaf, 0xcb, 0x6b, 0x62, 0x1a, 0x20, 0x00, 0x04, 0xf7, 0x9e, - 0x6d, 0xb6, 0xc4, 0xeb, 0xff, 0x63, 0xb5, 0xa4, 0x34, 0x82, 0x4d, 0x8f, - 0x47, 0xab, 0xba, 0x41, 0xcc, 0x65, 0x75, 0xca, 0xc1, 0xc3, 0x91, 0xef, - 0x9a, 0x6d, 0x88, 0x6b, 0x29, 0x0f, 0x4c, 0x0d, 0xb8, 0xe8, 0x7c, 0xe6, - 0x7b, 0x6d, 0x2d, 0x78, 0x62, 0x74, 0xaa, 0xde, 0x12, 0x5d, 0x46, 0x43, - 0x22, 0x4b, 0x7e, 0xe0, 0x3b, 0x47, 0x34, 0x54, 0x45, 0x73, 0x38, 0x02, - 0xbe, 0x9c, 0x6e, 0x6c, 0xd1, 0x7e, 0xaa, 0xbc, 0xab, 0xa8, 0x61, 0x67, - 0xf4, 0xd7, 0xfc, 0x6d, 0x69, 0x17, 0x29, 0xea, 0xf2, 0x22, 0xc9, 0x65, - 0x27, 0x70, 0xe1, 0x60, 0xb1, 0x5d, 0x9d, 0x34, 0x46, 0x6c, 0xa7, 0x03, - 0xe9, 0x0e, 0xd2, 0x78, 0xaa, 0x1e, 0x23, 0x58, 0xaf, 0x3d, 0xfc, 0xec, - 0x15, 0xdf, 0xe1, 0x50, 0x55, 0x95, 0xc2, 0xe0, 0x41, 0xab, 0x9b, 0x3b, - 0xa3, 0xbd, 0x78, 0x75, 0x2a, 0xec, 0x1a, 0x78, 0x4b, 0xa7, 0x2a, 0x16, - 0xc8, 0x29, 0xf6, 0xda, 0x06, 0x8b, 0x5e, 0x6d, 0x1f, 0x5f, 0xff, 0xb4, - 0x85, 0xd3, 0x14, 0x89, 0xd8, 0xf7, 0x48, 0xd7, 0xc3, 0xfd, 0x79, 0x6d, - 0xe4, 0x96, 0xf0, 0xc0, 0xbc, 0x26, 0x01, 0x83, 0x17, 0x2b, 0x9e, 0x0d, - 0x2a, 0x7a, 0x1c, 0x27, 0x0e, 0x92, 0xb1, 0x17, 0xcf, 0x98, 0x99, 0x7b, - 0x27, 0xcd, 0x35, 0xed, 0x5c, 0xf0, 0x14, 0x6f, 0x1d, 0xfa, 0x78, 0xac, - 0x28, 0xc5, 0x5a, 0x0b, 0xdb, 0x97, 0x95, 0x72, 0x83, 0xc5, 0x1b, 0x51, - 0xe0, 0x9d, 0x26, 0x1d, 0xe5, 0x34, 0x49, 0x21, 0x35, 0xce, 0x82, 0xe2, - 0x38, 0x31, 0x73, 0xad, 0xe5, 0xc5, 0x03, 0xaf, 0x22, 0xc4, 0x6e, 0x9e, - 0x63, 0x33, 0x4a, 0x87, 0x6d, 0xe1, 0xf6, 0x07, 0xe0, 0x66, 0xf6, 0xc3, - 0xd9, 0x42, 0x64, 0xb8, 0x21, 0x2e, 0x89, 0x10, 0xff, 0x51, 0xf1, 0x3d, - 0x48, 0x5e, 0x20, 0xc6, 0x49, 0x32, 0x91, 0x42, 0xf4, 0x93, 0x2a, 0x64, - 0x3c, 0xe7, 0x38, 0x37, 0x00, 0x1b, 0x50, 0xaa, 0x74, 0x97, 0x9b, 0xde, - 0x40, 0xe9, 0xa0, 0x00, 0xd9, 0x28, 0xc1, 0xbf, 0x4d, 0xe3, 0x4d, 0x2d, - 0xf3, 0xba, 0x4c, 0xbd, 0x03, 0xd1, 0x09, 0x7f, 0x79, 0x0a, 0x63, 0x74, - 0xea, 0xb4, 0x8c, 0x49, 0x0b, 0x18, 0x77, 0x5d, 0x56, 0x0e, 0x00, 0xee, - 0x3b, 0xc6, 0xc7, 0x0d, 0xf0, 0x5b, 0x83, 0xcb, 0xde, 0x18, 0xa2, 0x76, - 0xd8, 0xeb, 0x9d, 0xdf, 0x6a, 0xb6, 0xd5, 0x19, 0x46, 0xcc, 0xa9, 0x5b, - 0x45, 0x8e, 0x6c, 0x2d, 0xdc, 0x23, 0x84, 0x00, 0x74, 0x07, 0x33, 0x32, - 0x62, 0xae, 0x16, 0x62, 0x5a, 0x0b, 0xae, 0xf0, 0xbb, 0xb3, 0x60, 0x67, - 0xbb, 0x3c, 0x0c, 0xfd, 0xa9, 0x21, 0x01, 0x2e, 0x8d, 0x68, 0x40, 0x8b, - 0x11, 0x9d, 0xe8, 0x32, 0x02, 0xb3, 0x75, 0xdb, 0x92, 0xf3, 0x77, 0x15, - 0x35, 0xc0, 0x3e, 0x61, 0xaa, 0x76, 0x76, 0x75, 0x22, 0x24, 0xa6, 0x8f, - 0xec, 0xe9, 0xb1, 0x8a, 0x11, 0xb1, 0x3f, 0x64, 0xe2, 0xa3, 0x78, 0xce, - 0x7c, 0x61, 0x76, 0x6e, 0x25, 0x4c, 0x32, 0x03, 0xca, 0x7f, 0x1e, 0xf0, - 0x74, 0x0a, 0x78, 0x25, 0x81, 0xfa, 0x55, 0x71, 0xf0, 0x35, 0xea, 0x5b, - 0xf0, 0xe5, 0x13, 0x87, 0xcc, 0xf6, 0xc3, 0xf3, 0x83, 0xbf, 0xb0, 0xe0, - 0x64, 0xb5, 0xeb, 0x7f, 0x99, 0x34, 0xd6, 0xf6, 0x9d, 0xb0, 0xad, 0xa4, - 0x51, 0x4a, 0x65, 0xc5, 0xcf, 0xe5, 0x52, 0x83, 0x7c, 0x7a, 0x05, 0x09, - 0x54, 0x6c, 0x52, 0xfe, 0xb8, 0x21, 0xa8, 0xda, 0x6e, 0x57, 0x0f, 0xe6, - 0x45, 0x08, 0x9a, 0xe1, 0x46, 0xac, 0xf5, 0xb4, 0x80, 0x48, 0xe1, 0x81, - 0x7b, 0xc2, 0x63, 0xca, 0x0a, 0xc1, 0x0a, 0x83, 0xac, 0xf6, 0x89, 0xad, - 0x81, 0x09, 0x3a, 0x15, 0xd4, 0x59, 0x00, 0x3c, 0xf9, 0xf1, 0x2c, 0x36, - 0xcd, 0xe3, 0xe7, 0x6d, 0xf1, 0xf0, 0x14, 0x52, 0x7b, 0xf2, 0x20, 0xf8, - 0x7d, 0xd4, 0x03, 0xee, 0xf5, 0xd0, 0xac, 0xa6, 0x92, 0x68, 0xe6, 0xe1, - 0x29, 0x59, 0x8e, 0xae, 0xfe, 0xae, 0xbd, 0x43, 0x69, 0x21, 0x45, 0xbb, - 0x42, 0xf1, 0x0f, 0x4e, 0x9e, 0x32, 0x1b, 0xd1, 0x59, 0x2e, 0xe0, 0x26, - 0x37, 0xc7, 0x22, 0xd2, 0xd6, 0xf4, 0xdf, 0x00, 0x9e, 0x92, 0x9f, 0x20, - 0x2b, 0xc6, 0x2e, 0x55, 0x31, 0x69, 0x11, 0x85, 0xe5, 0x3d, 0xbe, 0xda, - 0x6d, 0x1b, 0x4f, 0x98, 0xff, 0x4a, 0x47, 0xf3, 0x31, 0x7c, 0xaf, 0x54, - 0x7e, 0xe1, 0x38, 0x26, 0xfc, 0x16, 0x1f, 0x39, 0x71, 0x52, 0xe0, 0x81, - 0x40, 0x2d, 0x02, 0x51, 0x26, 0xd6, 0x79, 0xa8, 0x80, 0x46, 0x59, 0xb6, - 0xed, 0xc6, 0x3c, 0x12, 0x3b, 0x86, 0x5d, 0x0c, 0x5e, 0x3c, 0x28, 0x62, - 0x3c, 0x0a, 0xd2, 0x42, 0x14, 0xa7, 0x96, 0x39, 0xcf, 0x19, 0x4f, 0x71, - 0x63, 0x37, 0x96, 0x91, 0x97, 0x54, 0xce, 0x54, 0x1d, 0x24, 0x20, 0x52, - 0x80, 0x51, 0xdf, 0xbe, 0xe8, 0xa8, 0x3c, 0xae, 0x5c, 0x69, 0xb7, 0x82, - 0x96, 0xa0, 0x9f, 0xe4, 0xdb, 0x14, 0xed, 0xaa, 0xc6, 0xda, 0x7a, 0x70, - 0x7a, 0xa1, 0xc9, 0x09, 0xd7, 0x5c, 0x1e, 0x49, 0x53, 0xd7, 0xdd, 0x7b, - 0xa9, 0x1d, 0x69, 0xd5, 0x27, 0xb6, 0xda, 0xee, 0x4b, 0xd8, 0xa7, 0xdf, - 0x82, 0xec, 0x0a, 0x83, 0x4d, 0xcd, 0x01, 0x90, 0x4c, 0xca, 0x54, 0x6a, - 0xc9, 0x3a, 0xb1, 0x84, 0x47, 0xdf, 0x8b, 0xdf, 0xde, 0xfc, 0x50, 0xde, - 0x1e, 0xa0, 0x0c, 0x4a, 0x46, 0x9f, 0xc1, 0xef, 0x5c, 0xf8, 0xef, 0x04, - 0x01, 0x6a, 0xe2, 0xc6, 0xff, 0xe4, 0x33, 0xfa, 0x12, 0x27, 0x0b, 0xba, - 0xe5, 0xe8, 0x15, 0x19, 0xae, 0x48, 0x72, 0x57, 0xac, 0x26, 0xf4, 0x12, - 0x52, 0x36, 0x34, 0x33, 0xc1, 0x11, 0x08, 0xe7, 0x8d, 0x2b, 0x08, 0x4b, - 0xd6, 0x49, 0x23, 0xde, 0x01, 0xc0, 0x4d, 0x19, 0xe7, 0x61, 0x4a, 0x4e, - 0x14, 0x3b, 0x12, 0x2b, 0x92, 0x85, 0xe4, 0xd6, 0xc9, 0x2c, 0x52, 0x93, - 0x82, 0xac, 0x99, 0xd7, 0x88, 0x8e, 0x8d, 0x5b, 0xe4, 0xee, 0x30, 0xcb, - 0x75, 0x8c, 0x53, 0xbd, 0xd7, 0x37, 0xca, 0xed, 0xeb, 0x10, 0xfe, 0x75, - 0x5c, 0x9f, 0x37, 0xd0, 0x2a, 0x73, 0xc7, 0x39, 0xe4, 0xa4, 0x03, 0x01, - 0xb3, 0xd1, 0x3c, 0x07, 0x16, 0xe0, 0x36, 0xdf, 0x91, 0x96, 0x5d, 0x0c, - 0x77, 0xf1, 0xb3, 0xdb, 0x6b, 0x68, 0xee, 0xdd, 0x02, 0xfd, 0x0a, 0x9f, - 0x24, 0x3b, 0x5b, 0x18, 0x01, 0xe1, 0x1e, 0x8b, 0x9d, 0x27, 0xe1, 0xcc, - 0x5c, 0x47, 0x2e, 0xeb, 0x9e, 0xa5, 0x13, 0x37, 0x43, 0x5b, 0x4c, 0x39, - 0xbd, 0x32, 0x01, 0xc6, 0x3a, 0xf1, 0xe1, 0x1a, 0x6c, 0x47, 0xb0, 0xb9, - 0x73, 0xd8, 0x37, 0xd3, 0x5e, 0xad, 0x37, 0x38, 0x76, 0xb8, 0x09, 0xd8, - 0x33, 0xd7, 0xb9, 0xec, 0xc5, 0x74, 0x41, 0x10, 0x6b, 0x7e, 0x1c, 0x3d, - 0x42, 0x22, 0x90, 0x86, 0x5e, 0x71, 0x7e, 0x76, 0xfa, 0x84, 0x5a, 0x87, - 0x32, 0xc6, 0x62, 0xef, 0xf8, 0xbb, 0xb0, 0x03, 0xa4, 0xfa, 0xa4, 0x4b, - 0xf0, 0x42, 0x59, 0xe2, 0x7d, 0xcb, 0xd8, 0x82, 0x44, 0x7c, 0x84, 0x00, - 0x51, 0x19, 0xbb, 0x6a, 0xda, 0x68, 0x9a, 0x09, 0xc3, 0x64, 0x53, 0xc5, - 0xd9, 0x0b, 0x4e, 0x4b, 0x07, 0xaa, 0x51, 0xb1, 0x4f, 0x85, 0x6e, 0x73, - 0xee, 0x82, 0x80, 0x62, 0x85, 0xd4, 0x25, 0x81, 0x2d, 0x2e, 0x66, 0x64, - 0x79, 0x5e, 0x1b, 0x75, 0xc1, 0xc1, 0x38, 0x9a, 0xd9, 0x55, 0xbb, 0x1c, - 0xc2, 0xc1, 0x4f, 0xbe, 0x3c, 0xe9, 0x7d, 0x5d, 0x9d, 0x81, 0x40, 0xf2, - 0xae, 0xc7, 0xc7, 0xb5, 0x33, 0xe5, 0xd4, 0x87, 0x2b, 0xe5, 0xcb, 0x20, - 0x6e, 0x4e, 0x53, 0x27, 0xa5, 0x8e, 0xd9, 0xb2, 0xd7, 0x37, 0x15, 0xc7, - 0xd3, 0x2b, 0x9a, 0x30, 0xbe, 0xa2, 0xc7, 0x30, 0x58, 0xfd, 0x50, 0x68, - 0x71, 0x2d, 0xfc, 0xb3, 0xf3, 0x63, 0x27, 0x4f, 0xfd, 0x3f, 0xbb, 0x9d, - 0xc5, 0x86, 0xe5, 0x24, 0x36, 0x2f, 0x32, 0x5f, 0x16, 0x06, 0xcc, 0xf3, - 0xe2, 0x54, 0x57, 0x8a, 0x69, 0xad, 0xa3, 0xee, 0x56, 0x51, 0xaf, 0xd4, - 0xbc, 0x93, 0xac, 0x4d, 0x05, 0x78, 0xab, 0xad, 0x00, 0x7f, 0xad, 0xc2, - 0xc1, 0xae, 0x74, 0x77, 0xf7, 0xb9, 0x2d, 0x8e, 0x49, 0xd5, 0xbf, 0x84, - 0xa3, 0x28, 0xf3, 0x4f, 0x14, 0x44, 0x78, 0x87, 0x50, 0x90, 0x0c, 0x4c, - 0xea, 0x27, 0x73, 0xf1, 0x07, 0xa0, 0xfb, 0xdf, 0xa7, 0xe4, 0xa7, 0x25, - 0x3d, 0x9c, 0xd7, 0x97, 0x99, 0xd5, 0x12, 0x2e, 0x31, 0x6b, 0x9d, 0x7c, - 0x1f, 0x5a, 0x80, 0x6a, 0xe9, 0xee, 0x88, 0xee, 0xd0, 0x26, 0x04, 0x5f, - 0x56, 0x05, 0xcb, 0xa8, 0xf2, 0x8c, 0xbc, 0x7d, 0xff, 0xa2, 0x1e, 0x17, - 0x2f, 0xe8, 0xf3, 0xe6, 0x45, 0xd8, 0x0b, 0x34, 0x2e, 0xa3, 0x72, 0xaa, - 0x8d, 0x1e, 0xa6, 0x92, 0xa0, 0x29, 0x9b, 0x6b, 0x5b, 0x1d, 0xd8, 0xdb, - 0x21, 0xcb, 0x20, 0x46, 0x90, 0x58, 0xb5, 0xe9, 0xfa, 0x13, 0x2a, 0x6e, - 0xce, 0xbf, 0xbe, 0x75, 0xe4, 0x6f, 0x4b, 0xce, 0xa2, 0xcd, 0x76, 0xbc, - 0xe2, 0x93, 0xa7, 0x6b, 0x0f, 0xb2, 0x17, 0x13, 0x37, 0x95, 0x83, 0xd8, - 0x9e, 0xb0, 0x80, 0xf4, 0x12, 0xe1, 0x93, 0x29, 0x6c, 0x0f, 0xbd, 0x22, - 0x82, 0x45, 0x5a, 0x78, 0xd7, 0xfe, 0xf0, 0x35, 0xce, 0x25, 0xdb, 0xfc, - 0xed, 0x13, 0x81, 0x26, 0x3a, 0x35, 0x68, 0xb4, 0x5a, 0xc6, 0xee, 0xb3, - 0x86, 0x58, 0x6f, 0xaf, 0x5a, 0xea, 0x32, 0x28, 0x23, 0x64, 0x5f, 0xa1, - 0x99, 0x27, 0x20, 0x4a, 0x5d, 0xb7, 0x74, 0x0e, 0xf5, 0x73, 0xc5, 0xd6, - 0x66, 0xb4, 0x77, 0x2e, 0xf9, 0x0d, 0x96, 0xb5, 0xd3, 0x4b, 0x15, 0x51, - 0xdc, 0xc9, 0x69, 0x68, 0x21, 0x71, 0x6a, 0x22, 0xcd, 0x4a, 0xb5, 0xb0, - 0xb2, 0x61, 0x51, 0x4a, 0x6c, 0x88, 0xd0, 0xf8, 0x67, 0x9f, 0x97, 0xab, - 0x96, 0x6a, 0x6d, 0xee, 0x31, 0xfb, 0xf9, 0x42, 0x18, 0x3d, 0x32, 0x74, - 0xcf, 0x64, 0xfb, 0xba, 0x12, 0xcb, 0xc4, 0x71, 0x75, 0x78, 0x1e, 0xc4, - 0xc0, 0xcd, 0xf3, 0xd9, 0xd8, 0xef, 0x0a, 0xc9, 0x61, 0x33, 0x0a, 0x33, - 0x8a, 0x12, 0xff, 0x1c, 0x4e, 0xff, 0xb0, 0xc6, 0x30, 0x84, 0x99, 0x11, - 0x7c, 0xb0, 0xb1, 0x19, 0xf2, 0xc7, 0x12, 0x36, 0x92, 0xe8, 0x54, 0x8f, - 0xd4, 0xc1, 0xf8, 0x7a, 0x09, 0x70, 0x7f, 0xa8, 0xde, 0x5a, 0xd6, 0xd0, - 0xcc, 0x13, 0xed, 0x39, 0x05, 0x51, 0xb2, 0xeb, 0x28, 0x04, 0x9c, 0x5b, - 0x81, 0x8e, 0x86, 0x91, 0xc1, 0xd9, 0x5e, 0x84, 0x71, 0x70, 0x36, 0xae, - 0x93, 0x08, 0xee, 0xcf, 0x68, 0xac, 0xbc, 0xd8, 0xed, 0xbc, 0x73, 0xc1, - 0x87, 0x1f, 0xbd, 0xf3, 0x25, 0x58, 0x74, 0x12, 0xda, 0x27, 0xd0, 0x3b, - 0x3e, 0x0e, 0x2d, 0x4b, 0x0f, 0x02, 0xd5, 0x7a, 0xdf, 0xe2, 0x3b, 0xf5, - 0xa2, 0x9e, 0x9e, 0xb8, 0x0b, 0x30, 0x2b, 0x7a, 0x87, 0xba, 0xb9, 0x3b, - 0x0b, 0xbd, 0x69, 0x39, 0x94, 0xfe, 0x72, 0x17, 0xa7, 0xe5, 0x90, 0xa4, - 0x79, 0x4a, 0x02, 0x5e, 0xb3, 0x94, 0xaf, 0xc8, 0x00, 0x40, 0x01, 0x28, - 0xb2, 0x5e, 0x5c, 0x0f, 0xe2, 0x45, 0x58, 0x03, 0xff, 0xa5, 0x79, 0x7e, - 0x50, 0xda, 0x20, 0xa3, 0x12, 0x62, 0x9f, 0xdc, 0x0b, 0x7d, 0xc7, 0xea, - 0x4c, 0x29, 0x8b, 0x64, 0x84, 0x26, 0x0a, 0x48, 0xf9, 0xa3, 0x59, 0xfb, - 0x52, 0x17, 0xad, 0xfc, 0x08, 0xf4, 0xa9, 0xee, 0x19, 0x29, 0x9c, 0xda, - 0x21, 0x8c, 0x41, 0x7a, 0xe8, 0x38, 0x0a, 0x2a, 0x5e, 0xcf, 0x3d, 0xc0, - 0x30, 0x6e, 0x41, 0x5c, 0x32, 0xc4, 0xec, 0xe4, 0xa8, 0x02, 0x0f, 0x9d, - 0xcd, 0x2c, 0x16, 0x95, 0xb1, 0x9b, 0x84, 0x1d, 0x35, 0x51, 0xfd, 0xdb, - 0x62, 0x7b, 0x5b, 0xa0, 0x8f, 0xc2, 0xee, 0x1a, 0xb7, 0xbf, 0x02, 0x5e, - 0x8e, 0xae, 0xfc, 0xcc, 0xb7, 0x1a, 0x92, 0xcd, 0x73, 0xc6, 0x1e, 0xc9, - 0x22, 0x7f, 0x2e, 0xb1, 0x9e, 0x93, 0x97, 0x38, 0xa0, 0x4f, 0x7f, 0xdf, - 0x3a, 0xaf, 0xe2, 0xf4, 0x00, 0xe4, 0xb7, 0xae, 0x41, 0xdf, 0xa1, 0xa1, - 0xd9, 0x9c, 0xb6, 0x7a, 0x1f, 0x63, 0xfd, 0x07, 0x31, 0xd4, 0x3a, 0xd0, - 0x1d, 0xb7, 0x33, 0xb1, 0x7c, 0xef, 0x16, 0xea, 0xc5, 0x33, 0xa1, 0x85, - 0xfd, 0xb2, 0x43, 0x25, 0xf9, 0xe5, 0xc4, 0x0f, 0x72, 0xae, 0xbd, 0xc6, - 0x9d, 0x64, 0xa7, 0x15, 0xf0, 0x8f, 0x18, 0xeb, 0x91, 0xde, 0x4d, 0x34, - 0x8f, 0x4f, 0x1d, 0xd4, 0xb9, 0xa7, 0xae, 0x8d, 0x4c, 0xd2, 0x87, 0xb5, - 0xba, 0xcb, 0x1f, 0xab, 0x19, 0x76, 0x00, 0x41, 0x40, 0x71, 0x1a, 0xfd, - 0xd6, 0x89, 0xb4, 0x55, 0xf5, 0xc9, 0x6f, 0x76, 0x07, 0xa9, 0x44, 0xd5, - 0x1c, 0xc1, 0x62, 0x81, 0x86, 0xe9, 0xf4, 0x82, 0xa8, 0xcb, 0x42, 0xbb, - 0xb5, 0x75, 0x2e, 0xf3, 0x4d, 0x7c, 0x73, 0xc3, 0x6a, 0x88, 0x79, 0xd6, - 0xc4, 0xac, 0x4b, 0x1a, 0x68, 0x85, 0xd4, 0xbc, 0x96, 0x0e, 0xd5, 0x82, - 0x69, 0xbe, 0xec, 0x20, 0xc4, 0x91, 0xe3, 0x93, 0xcd, 0xfa, 0x62, 0x4a, - 0x2e, 0x9b, 0x16, 0x10, 0x78, 0x02, 0xee, 0x67, 0x78, 0xc2, 0xed, 0x76, - 0x49, 0xac, 0xb4, 0xd1, 0x4d, 0xff, 0xf7, 0xe6, 0x74, 0x50, 0x88, 0x83, - 0x24, 0x58, 0xf3, 0x68, 0x38, 0x3d, 0x74, 0xb1, 0xec, 0x13, 0xe1, 0xf6, - 0x0b, 0x50, 0xb5, 0x5c, 0x94, 0xd9, 0xee, 0x1e, 0xe8, 0xc7, 0x11, 0x54, - 0x48, 0xda, 0xb3, 0x2d, 0xee, 0x64, 0x0c, 0x06, 0xbd, 0x2a, 0xa3, 0x57, - 0xed, 0x2b, 0x89, 0x50, 0xe6, 0x3e, 0xe6, 0x6b, 0x06, 0x2e, 0x7a, 0x34, - 0xed, 0xd5, 0xe9, 0x6f, 0x33, 0xb8, 0xb3, 0x7d, 0x34, 0x76, 0xa3, 0x23, - 0xa1, 0x17, 0x30, 0x80, 0x44, 0x30, 0x52, 0xf3, 0x6c, 0x80, 0x8e, 0x32, - 0xc5, 0xdb, 0x8e, 0x2f, 0xd3, 0xf0, 0xfd, 0x69, 0x66, 0xc2, 0xfc, 0x18, - 0xb1, 0x01, 0x07, 0x1e, 0x1d, 0x0c, 0xe7, 0xfd, 0xbd, 0x0e, 0x8e, 0x06, - 0xb3, 0xfa, 0xd9, 0xcb, 0x48, 0xff, 0x96, 0xea, 0x63, 0x4f, 0x8d, 0xd6, - 0x8d, 0xc6, 0xe4, 0x69, 0x23, 0xa2, 0x59, 0x50, 0x5f, 0x16, 0xb9, 0x6c, - 0xce, 0x66, 0x5c, 0x55, 0xf7, 0x47, 0xeb, 0x75, 0x4b, 0xfb, 0x90, 0xf5, - 0xfd, 0x10, 0x1a, 0x71, 0xfe, 0xa9, 0xf7, 0x23, 0xdf, 0xe5, 0x69, 0x13, - 0x87, 0xd2, 0xa0, 0xf1, 0xc7, 0x7c, 0xde, 0xfe, 0x46, 0x75, 0x4d, 0x4a, - 0xd9, 0x2c, 0xd4, 0x37, 0xc8, 0xb1, 0x2c, 0xb4, 0xa1, 0x7f, 0xfc, 0x9d, - 0x1d, 0x4d, 0x2e, 0xdd, 0xd6, 0xb8, 0x96, 0x04, 0xca, 0xa4, 0xee, 0xe6, - 0xc5, 0x9c, 0x88, 0x8d, 0x62, 0xc9, 0xec, 0x54, 0xae, 0xcd, 0xee, 0x2b, - 0xf0, 0x40, 0xf3, 0x4e, 0x46, 0xf1, 0x7d, 0xdb, 0x9c, 0xbe, 0xd0, 0x16, - 0x21, 0x8a, 0x0f, 0xa0, 0xd0, 0xc1, 0x11, 0xc0, 0x54, 0xdf, 0xd1, 0xf7, - 0xde, 0x93, 0x90, 0x6e, 0x5c, 0x33, 0x43, 0xe6, 0x0d, 0x0c, 0x7b, 0x2d, - 0xb5, 0xaa, 0x92, 0x86, 0x32, 0x9f, 0xc8, 0x4d, 0xc7, 0x3c, 0xfc, 0xdf, - 0x58, 0x93, 0x6c, 0xb0, 0x8f, 0x55, 0x83, 0x3e, 0x87, 0xca, 0xd8, 0x0f, - 0x9e, 0xfe, 0xf3, 0x48, 0x55, 0x00, 0x34, 0xce, 0x1f, 0xc9, 0x50, 0xac, - 0x60, 0x7a, 0xe5, 0x38, 0x68, 0xc1, 0xf4, 0x1d, 0x6e, 0x0b, 0xcf, 0xcd, - 0x74, 0xe1, 0x60, 0x09, 0x3b, 0x07, 0x8f, 0xe5, 0x3d, 0xe7, 0xbf, 0x32, - 0x41, 0xbe, 0x7e, 0x0d, 0xdf, 0x90, 0x24, 0x7b, 0x80, 0x6a, 0x6b, 0xb5, - 0xb6, 0x53, 0xf2, 0x90, 0x17, 0xbb, 0xff, 0x7e, 0x2c, 0x4c, 0xc9, 0xd5, - 0xfa, 0x04, 0x24, 0x7c, 0x58, 0x92, 0x3d, 0x3d, 0x31, 0x0c, 0x04, 0x8b, - 0xfc, 0x89, 0xba, 0xc1, 0x86, 0x17, 0x61, 0xf4, 0x05, 0xda, 0xe3, 0x53, - 0xf9, 0x65, 0xcd, 0x44, 0x6a, 0xa3, 0x21, 0xde, 0x3a, 0xa3, 0x80, 0x45, - 0x36, 0xc1, 0x18, 0xc8, 0x0e, 0xd3, 0x3b, 0x5d, 0xe0, 0x0f, 0x6b, 0x6d, - 0x33, 0x8f, 0xe0, 0x7b, 0xd0, 0x8e, 0x87, 0xcd, 0x9b, 0xc2, 0x23, 0x94, - 0x2e, 0xb0, 0xee, 0xf0, 0x21, 0xe5, 0x67, 0x33, 0xd3, 0xd9, 0xd6, 0xf4, - 0xbf, 0xa2, 0xce, 0x16, 0x75, 0xa4, 0xd1, 0x6a, 0x76, 0x80, 0x9f, 0x47, - 0x7f, 0x47, 0xd8, 0x77, 0x88, 0x33, 0x88, 0xd8, 0x43, 0x8a, 0xb0, 0xa5, - 0x64, 0x45, 0xd1, 0x69, 0x6f, 0x7c, 0x35, 0xdc, 0xea, 0xb6, 0xdd, 0xff, - 0xae, 0x54, 0x23, 0xf2, 0xce, 0xf7, 0x79, 0x0e, 0x8e, 0xa8, 0xb5, 0x70, - 0x3f, 0xcb, 0xf6, 0x5f, 0xc0, 0x40, 0xa3, 0xfe, 0x13, 0xd8, 0x20, 0x62, - 0xf7, 0x4e, 0xc9, 0xa1, 0x51, 0x28, 0xc3, 0x39, 0xc8, 0x07, 0x8a, 0x4c, - 0xc0, 0xff, 0x0a, 0x3d, 0x69, 0x00, 0x38, 0x76, 0xc3, 0xb7, 0x94, 0xee, - 0x24, 0xbe, 0xa6, 0x9b, 0x4c, 0x19, 0xd8, 0xd1, 0xa4, 0xd1, 0xc6, 0xac, - 0x6d, 0x0f, 0x5e, 0x80, 0xd5, 0xeb, 0xb3, 0x0c, 0xdc, 0x62, 0x21, 0x65, - 0x60, 0xc6, 0x5a, 0xb3, 0x4e, 0xe7, 0x34, 0xf1, 0xad, 0xd7, 0x78, 0xca, - 0xf6, 0xc5, 0x98, 0x4b, 0x64, 0xa5, 0xb2, 0x32, 0xad, 0x4b, 0x1e, 0x1e, - 0x4e, 0xaf, 0x64, 0x82, 0x82, 0xb6, 0x71, 0x44, 0x14, 0x09, 0x01, 0x92, - 0xa0, 0x73, 0xf1, 0x8b, 0x98, 0xef, 0xa1, 0x0d, 0x06, 0xb6, 0x9a, 0x63, - 0x1f, 0x97, 0x8c, 0xc7, 0x29, 0xda, 0x67, 0x70, 0xf2, 0x7b, 0x2d, 0x67, - 0xba, 0xae, 0x54, 0x6f, 0xfe, 0x4d, 0x44, 0xe6, 0x7c, 0xb9, 0x23, 0x52, - 0xa6, 0x38, 0x22, 0xfe, 0xec, 0xd9, 0x5a, 0xe7, 0x7d, 0x16, 0x45, 0xa3, - 0x18, 0x1c, 0xf7, 0xaf, 0xde, 0x78, 0x4e, 0xfb, 0xc5, 0x30, 0xa0, 0x66, - 0xae, 0x62, 0x4a, 0xa2, 0x76, 0x74, 0xb7, 0xb1, 0xbf, 0x68, 0x16, 0xe5, - 0x06, 0xc1, 0x8a, 0x82, 0xcf, 0x41, 0x42, 0x33, 0x44, 0x59, 0xdb, 0xa4, - 0xa7, 0x69, 0x2e, 0x9d, 0xb9, 0x15, 0xce, 0x42, 0xfa, 0x15, 0x35, 0x97, - 0xfc, 0xd9, 0xcb, 0xc8, 0x42, 0x54, 0xd3, 0xf1, 0xbe, 0xcf, 0x37, 0x2a, - 0x13, 0x03, 0x15, 0x64, 0x87, 0x3a, 0xce, 0xd5, 0x37, 0xb9, 0xcb, 0x72, - 0x30, 0xbc, 0xec, 0x6e, 0xc0, 0x06, 0x92, 0x48, 0xad, 0xfe, 0xf5, 0x8c, - 0x9d, 0x49, 0x2b, 0x62, 0x7c, 0x79, 0xcf, 0xc4, 0xfa, 0x78, 0x17, 0x86, - 0xe5, 0x4d, 0x7f, 0x8d, 0x74, 0xcb, 0x81, 0x42, 0xe8, 0xe0, 0xa4, 0x57, - 0x79, 0x8e, 0x42, 0xa6, 0x28, 0x10, 0x86, 0xb6, 0x40, 0xbc, 0xfe, 0x33, - 0xeb, 0x17, 0xdb, 0xc0, 0x03, 0x68, 0xf1, 0xfa, 0x90, 0xd7, 0x59, 0x5c, - 0xae, 0xcb, 0x78, 0x13, 0x45, 0x56, 0x5b, 0x41, 0x6d, 0xa6, 0xc9, 0x28, - 0x50, 0x46, 0x3a, 0xca, 0x4e, 0x03, 0xa3, 0x2c, 0x31, 0xf6, 0x32, 0x44, - 0x5e, 0xee, 0x07, 0x51, 0x9c, 0x67, 0x3a, 0x5d, 0xb1, 0x8b, 0x6e, 0x2b, - 0x71, 0x84, 0x03, 0xf0, 0x31, 0x5b, 0x36, 0x9f, 0x9f, 0xe5, 0x11, 0x0e, - 0xa4, 0xda, 0xbf, 0xb0, 0x50, 0xed, 0x33, 0x4e, 0x51, 0xc0, 0xb8, 0x73, - 0xc7, 0x3b, 0x8d, 0xbe, 0x14, 0x63, 0x71, 0x5c, 0xdf, 0xbb, 0x9f, 0x16, - 0xf6, 0x96, 0x61, 0x97, 0x44, 0xdf, 0x68, 0xca, 0x75, 0x3c, 0x6f, 0xdc, - 0x44, 0xce, 0x60, 0x7e, 0xda, 0x95, 0x55, 0xa4, 0x6e, 0xff, 0xb9, 0x41, - 0x63, 0x03, 0xf8, 0x9f, 0xd7, 0xb2, 0x8f, 0xe7, 0x12, 0x06, 0x37, 0xe0, - 0x63, 0xfc, 0x7f, 0x90, 0x12, 0x62, 0x06, 0x71, 0x74, 0x28, 0xac, 0x06, - 0x60, 0xdf, 0x33, 0x59, 0x77, 0xd6, 0xfa, 0x1f, 0x73, 0xb1, 0x67, 0x72, - 0x1a, 0x58, 0x42, 0xad, 0xff, 0x18, 0xed, 0x7b, 0xc2, 0x58, 0xa5, 0x67, - 0x31, 0x39, 0x74, 0xac, 0xbe, 0xf7, 0x24, 0xb0, 0xdf, 0xe2, 0x99, 0xa7, - 0xaf, 0x58, 0x91, 0xdc, 0x2c, 0xf5, 0xed, 0xc9, 0x1a, 0x28, 0x44, 0x3f, - 0xce, 0x76, 0xc4, 0x6c, 0x40, 0x27, 0x02, 0xe9, 0xed, 0x5f, 0x42, 0xfe, - 0x6d, 0x24, 0xe9, 0x09, 0xaf, 0x19, 0x54, 0xd5, 0x38, 0x8e, 0x58, 0x67, - 0xb4, 0x64, 0xe1, 0xf1, 0x63, 0x13, 0x64, 0xd0, 0xbd, 0x4a, 0xf5, 0x44, - 0xe4, 0x9c, 0x78, 0xbe, 0x11, 0x7d, 0x80, 0x18, 0xd4, 0xa5, 0x7b, 0x20, - 0xde, 0x53, 0x2f, 0x98, 0x53, 0x6e, 0x91, 0x2e, 0x77, 0xb8, 0x29, 0x43, - 0xb9, 0xa0, 0x00, 0xc9, 0x2b, 0x44, 0xb2, 0xbd, 0xbf, 0x35, 0xf3, 0xa5, - 0xdb, 0x6b, 0x27, 0x2b, 0xcb, 0xfc, 0xe6, 0xab, 0xc2, 0x46, 0xd1, 0xfd, - 0x86, 0x77, 0x93, 0x02, 0xab, 0x48, 0x96, 0xc2, 0xe6, 0x26, 0x78, 0x8f, - 0x88, 0xb0, 0xad, 0x94, 0xba, 0x58, 0xd9, 0x8e, 0x34, 0xab, 0x57, 0xe4, - 0x84, 0xc7, 0x71, 0x79, 0x14, 0xac, 0x6e, 0x56, 0xe2, 0x78, 0xb3, 0x35, - 0x0e, 0xe9, 0x8d, 0xa3, 0x59, 0xd3, 0xef, 0xfe, 0x1c, 0xe1, 0x56, 0x27, - 0xfc, 0x24, 0x65, 0x7d, 0xb1, 0x37, 0x29, 0x01, 0x2a, 0x02, 0xa4, 0x79, - 0x12, 0x8b, 0xce, 0x06, 0xd1, 0xe5, 0x9c, 0x79, 0x5f, 0x13, 0xa6, 0x84, - 0x43, 0x9e, 0xf3, 0xc9, 0x7a, 0xe5, 0xc1, 0xf3, 0xc9, 0xa2, 0x3d, 0xb4, - 0xe0, 0xcf, 0xc5, 0xed, 0xec, 0xd1, 0x1d, 0xf8, 0x75, 0x8a, 0x64, 0xe4, - 0x8a, 0x62, 0xbc, 0x7a, 0xda, 0xca, 0x4e, 0x9a, 0x0b, 0xe5, 0x00, 0x3e, - 0x67, 0x19, 0x97, 0x00, 0xb3, 0x7f, 0x20, 0x43, 0xfe, 0xe6, 0x5b, 0x68, - 0x92, 0xaa, 0x1d, 0x21, 0x07, 0x37, 0x8a, 0x33, 0xe4, 0x0b, 0x2e, 0x21, - 0x9d, 0x7f, 0xff, 0x75, 0xe8, 0xb4, 0x50, 0xb9, 0x3a, 0xad, 0xa4, 0xae, - 0x73, 0x01, 0x64, 0xb3, 0xe3, 0x55, 0x2d, 0x8a, 0x9b, 0x59, 0xec, 0x48, - 0x1a, 0x3a, 0x3e, 0xcd, 0x62, 0xce, 0xce, 0xbd, 0xe8, 0xb4, 0x70, 0x49, - 0xdc, 0x2f, 0x87, 0x3e, 0x2e, 0xf2, 0xd4, 0x58, 0x4f, 0xbd, 0x05, 0x04, - 0x07, 0x6f, 0x6c, 0x43, 0xe4, 0x09, 0xea, 0x6b, 0x77, 0x9d, 0xed, 0xf6, - 0xd2, 0xe0, 0x41, 0x2d, 0xd6, 0x11, 0xfb, 0xb4, 0xf4, 0xde, 0xbd, 0x0a, - 0x39, 0x73, 0xa7, 0x0b, 0x5e, 0xd8, 0x0f, 0x1e, 0x19, 0x5d, 0x6d, 0xa4, - 0xfd, 0x96, 0x35, 0x57, 0xfa, 0x8e, 0xf8, 0xd2, 0x6b, 0x2c, 0x2f, 0x97, - 0xb8, 0x96, 0xa6, 0x9e, 0xeb, 0x16, 0x37, 0x73, 0x88, 0x0c, 0xf9, 0xce, - 0x3b, 0xb9, 0x03, 0x6a, 0xff, 0x7a, 0x5c, 0x41, 0x86, 0x6e, 0xa1, 0x0b, - 0x9b, 0x7c, 0x41, 0xda, 0x22, 0x07, 0xe3, 0xc8, 0x97, 0x36, 0xa5, 0x27, - 0xd1, 0x5d, 0xb3, 0x74, 0x5c, 0xc6, 0x65, 0x40, 0x68, 0x29, 0xa0, 0xf6, - 0xb1, 0x12, 0x2c, 0xa3, 0x0c, 0xbd, 0x3b, 0xfe, 0x1d, 0xdb, 0x89, 0x3e, - 0x82, 0xe7, 0x33, 0x31, 0xa3, 0x71, 0x49, 0x44, 0x91, 0x5c, 0xcf, 0xc4, - 0x41, 0x70, 0xd9, 0x1f, 0x4d, 0xd8, 0x58, 0x8a, 0x4b, 0x51, 0x1d, 0x47, - 0xe9, 0x1a, 0x15, 0xbf, 0x30, 0xf9, 0x39, 0x79, 0x90, 0x89, 0xff, 0xde, - 0xf5, 0xbc, 0x69, 0x8e, 0x0b, 0xa4, 0x71, 0x96, 0x87, 0x8b, 0x73, 0x51, - 0x31, 0xf7, 0x2c, 0x85, 0x24, 0xc3, 0xb6, 0x72, 0x47, 0x09, 0x54, 0xb9, - 0x60, 0x53, 0x91, 0x91, 0x05, 0xb4, 0x10, 0x2e, 0x26, 0x5d, 0x3f, 0x35, - 0xb4, 0x76, 0x21, 0xd9, 0x46, 0xb6, 0x7b, 0xcc, 0x7a, 0x5b, 0xb1, 0x03, - 0xc2, 0xc6, 0xc3, 0xe8, 0x9b, 0x13, 0x25, 0xde, 0xee, 0x62, 0x55, 0xbf, - 0x51, 0xb2, 0x59, 0x1a, 0x83, 0x80, 0x82, 0x05, 0x3e, 0xd4, 0x5a, 0xeb, - 0x91, 0x5f, 0xec, 0xf1, 0x1d, 0x59, 0xa8, 0xda, 0xf3, 0x57, 0x0c, 0x59, - 0x27, 0xd9, 0x7a, 0xff, 0x19, 0x37, 0x77, 0x82, 0x1e, 0xa6, 0x00, 0x1a, - 0x42, 0x0b, 0x78, 0x96, 0xd1, 0x99, 0x1d, 0x19, 0x2c, 0xcf, 0x8f, 0xf3, - 0x01, 0xca, 0x5f, 0x41, 0x99, 0xc1, 0xff, 0xb8, 0xcb, 0xd6, 0x85, 0x5e, - 0xbd, 0xc2, 0x1f, 0xe7, 0xa6, 0xdf, 0x9b, 0x2b, 0xb3, 0xb9, 0x28, 0x78, - 0x28, 0x0c, 0xd3, 0x82, 0x6c, 0xc6, 0xc5, 0xba, 0xd8, 0x53, 0x20, 0x97, - 0xf6, 0xe0, 0xc9, 0x91, 0x24, 0xbb, 0xcd, 0xae, 0xa6, 0x55, 0x25, 0x2d, - 0x18, 0xdd, 0xed, 0x91, 0xe3, 0xbb, 0xcf, 0xbe, 0xd2, 0x03, 0xc8, 0x15, - 0xaa, 0x6f, 0x75, 0xd8, 0x00, 0xe5, 0x53, 0x6e, 0x5a, 0xaa, 0x1b, 0x2f, - 0x7d, 0x94, 0x4b, 0xc7, 0xfa, 0x2f, 0xeb, 0xb2, 0x48, 0xf2, 0x36, 0x12, - 0x5f, 0xc0, 0x8f, 0xfe, 0x14, 0xb6, 0x49, 0x1c, 0xeb, 0x91, 0x1f, 0xeb, - 0x2a, 0x80, 0xb5, 0x5d, 0xd5, 0xf9, 0xbd, 0xa5, 0xaf, 0x39, 0xfd, 0xdb, - 0x5a, 0x0f, 0x60, 0xb1, 0xe3, 0x2f, 0x6c, 0x3c, 0x8b, 0x86, 0xe3, 0xde, - 0x49, 0x21, 0xc7, 0x15, 0x73, 0x49, 0x37, 0xf7, 0xd7, 0x32, 0xb8, 0xfd, - 0xff, 0xe3, 0x08, 0x76, 0x36, 0x67, 0x22, 0x3f, 0x24, 0x81, 0xce, 0x03, - 0x78, 0x74, 0x04, 0xbe, 0xda, 0x9b, 0x7e, 0x30, 0x78, 0xd5, 0xfd, 0xb2, - 0x40, 0x48, 0xe9, 0x1e, 0x74, 0x48, 0xe1, 0xc3, 0xd9, 0xe7, 0x7f, 0xf1, - 0xe4, 0x67, 0xe7, 0x64, 0xc9, 0x24, 0x37, 0xb9, 0x67, 0x8d, 0xb7, 0x23, - 0xf8, 0xc7, 0x57, 0xf4, 0xff, 0x7b, 0x81, 0xc7, 0x42, 0xc9, 0x80, 0xa3, - 0xb8, 0x7a, 0x1d, 0xb7, 0x09, 0x2a, 0x9b, 0x82, 0x2b, 0x79, 0x3e, 0x52, - 0x48, 0x07, 0xef, 0x78, 0x57, 0x75, 0xff, 0x94, 0x8b, 0xf5, 0xe9, 0xf3, - 0x5c, 0x6a, 0x8a, 0xb0, 0xd2, 0xe5, 0x91, 0x8e, 0xbb, 0x29, 0x13, 0xcb, - 0x3a, 0x08, 0xcb, 0xae, 0x91, 0x02, 0xf5, 0x84, 0x79, 0x8b, 0x81, 0xa6, - 0xdf, 0x8e, 0x15, 0xaf, 0x9e, 0xd0, 0xb5, 0x4b, 0xe0, 0x58, 0x4e, 0xd7, - 0x4f, 0xc2, 0x06, 0xc9, 0x8c, 0xc3, 0xf1, 0xca, 0x15, 0xbe, 0x1e, 0xaa, - 0x6a, 0x80, 0xe4, 0xae, 0x3d, 0x9a, 0x7c, 0x0f, 0x9a, 0xf4, 0x84, 0x53, - 0x68, 0x87, 0xa1, 0xd6, 0xf8, 0xda, 0xdf, 0x7e, 0x52, 0xdb, 0xe0, 0xd2, - 0x3a, 0x13, 0x4b, 0xd0, 0xbc, 0x73, 0x5b, 0x99, 0xb3, 0x5f, 0xff, 0xba, - 0xa3, 0xc4, 0x9b, 0xeb, 0xb3, 0xb1, 0xd6, 0x62, 0x45, 0xb1, 0x17, 0x40, - 0x69, 0x0c, 0xd3, 0x82, 0xbe, 0x98, 0xb2, 0x5a, 0xf2, 0x34, 0xd4, 0x0a, - 0x04, 0xd5, 0x05, 0x64, 0x45, 0x1f, 0x0a, 0x8d, 0x24, 0xf6, 0xac, 0xad, - 0x46, 0x46, 0x0d, 0xa1, 0x75, 0x9b, 0xdd, 0xa7, 0xdd, 0x96, 0xb7, 0x61, - 0xb7, 0x78, 0x72, 0x49, 0x24, 0x5c, 0x78, 0x4a, 0x2c, 0x2b, 0x5c, 0x27, - 0x11, 0x85, 0x1f, 0xf3, 0xb4, 0x40, 0x13, 0x33, 0xa7, 0x46, 0xc4, 0x99, - 0x76, 0x14, 0x5f, 0x17, 0x8c, 0x92, 0xe9, 0x1a, 0x0c, 0x2c, 0xeb, 0x88, - 0xcc, 0x30, 0x7f, 0x07, 0x38, 0xf6, 0x43, 0x55, 0xf1, 0x55, 0xf1, 0xa0, - 0x74, 0xdc, 0xa6, 0xd6, 0xb0, 0x67, 0x28, 0xef, 0x68, 0x5c, 0xf1, 0x02, - 0xca, 0xf9, 0x50, 0xde, 0xf9, 0x30, 0xca, 0x92, 0xa6, 0xec, 0xb5, 0xa2, - 0x68, 0x8c, 0x4a, 0x89, 0xf5, 0x7b, 0xd5, 0x72, 0x6b, 0xb6, 0x43, 0x8c, - 0x27, 0x79, 0xf2, 0x60, 0x14, 0x0b, 0x13, 0xae, 0x83, 0x34, 0x99, 0x1a, - 0x80, 0xe3, 0xac, 0x04, 0xfe, 0xc0, 0xec, 0x82, 0x01, 0xb1, 0x77, 0x31, - 0xae, 0x93, 0x1b, 0x10, 0x4f, 0x21, 0xb8, 0xb5, 0xdb, 0x72, 0x49, 0xeb, - 0x72, 0xa7, 0x4d, 0x0d, 0x54, 0x0c, 0x97, 0xee, 0x5f, 0xc8, 0x0a, 0x49, - 0x79, 0xaf, 0xb4, 0xb2, 0x0d, 0x88, 0x71, 0x40, 0x88, 0x21, 0x67, 0x61, - 0x12, 0xf8, 0x11, 0xe7, 0x5d, 0xc5, 0x30, 0xd1, 0x0a, 0x7b, 0xda, 0x4f, - 0x25, 0x14, 0x35, 0x36, 0xb7, 0x96, 0x60, 0x6d, 0x6f, 0x7e, 0xce, 0x24, - 0x0c, 0x89, 0xf6, 0xd0, 0x76, 0xeb, 0xb5, 0x4d, 0x32, 0x73, 0x9a, 0xc5, - 0xd4, 0x59, 0x04, 0xfa, 0x05, 0xdf, 0xec, 0x50, 0xf9, 0xb2, 0x31, 0x8e, - 0x10, 0x30, 0x1e, 0xcd, 0x00, 0xbc, 0x66, 0xf1, 0xe6, 0x78, 0x20, 0x3f, - 0x1a, 0x4e, 0x3e, 0x00, 0x7e, 0x68, 0xa2, 0xe1, 0x90, 0xac, 0x2b, 0x62, - 0x22, 0x84, 0xcc, 0x32, 0xc5, 0x0d, 0xad, 0xf2, 0x85, 0xa8, 0x4b, 0xf2, - 0x5c, 0x26, 0x8f, 0x2d, 0x99, 0xf6, 0x49, 0x68, 0x56, 0x3f, 0x47, 0xe0, - 0xf5, 0x7b, 0x61, 0xe6, 0xaa, 0x24, 0x60, 0x93, 0x5f, 0xcb, 0x9f, 0xe8, - 0x32, 0x77, 0xc5, 0xef, 0x7e, 0xd7, 0xf3, 0xab, 0xe0, 0xd2, 0xcb, 0x22, - 0x45, 0x30, 0x4d, 0xc2, 0x58, 0xe3, 0x93, 0xc5, 0x2d, 0xdb, 0xfc, 0x58, - 0xed, 0x78, 0x04, 0x0f, 0xe9, 0xed, 0x94, 0xaf, 0xe6, 0xce, 0x91, 0x91, - 0x78, 0xeb, 0x3e, 0xa2, 0xc2, 0xc3, 0xa0, 0xf4, 0x97, 0xfe, 0xef, 0x9a, - 0x0f, 0x8c, 0x83, 0x33, 0x29, 0x82, 0x01, 0x25, 0x6d, 0xc4, 0x68, 0xb7, - 0xce, 0xba, 0x3a, 0x2e, 0x9b, 0x88, 0x3c, 0x08, 0xde, 0x9a, 0x35, 0xf2, - 0xfc, 0x34, 0x63, 0xfb, 0xdb, 0x36, 0x97, 0x30, 0xb9, 0xcc, 0x1f, 0x90, - 0x6a, 0xe8, 0x4c, 0x26, 0x0d, 0xa9, 0x0a, 0xc3, 0x69, 0x19, 0x1b, 0x14, - 0xf5, 0xdd, 0x42, 0xc0, 0xec, 0x4a, 0x42, 0x36, 0xc1, 0x99, 0xd5, 0x03, - 0x12, 0x94, 0x83, 0x28, 0x74, 0xb5, 0x46, 0x3c, 0x52, 0x53, 0xdd, 0x99, - 0xb3, 0x32, 0x29, 0x3e, 0x64, 0xd0, 0xa2, 0xe3, 0x95, 0x10, 0xc7, 0x6f, - 0x47, 0x1c, 0xa7, 0x00, 0xe9, 0x46, 0x34, 0x7c, 0x59, 0x15, 0x8d, 0x01, - 0x21, 0x66, 0xd7, 0x0e, 0x83, 0x2c, 0x03, 0x2c, 0x34, 0x25, 0x35, 0x6b, - 0x13, 0x09, 0x16, 0xab, 0x15, 0xc3, 0x68, 0x11, 0xfd, 0xca, 0xc5, 0x14, - 0xad, 0xd8, 0xa0, 0x57, 0x7c, 0xaf, 0x90, 0x22, 0x6a, 0x5d, 0xca, 0x6c, - 0xc9, 0x41, 0xff, 0x8b, 0xad, 0xb6, 0x9d, 0xd0, 0x7c, 0xbe, 0xc1, 0x1b, - 0x73, 0x48, 0x93, 0x35, 0x97, 0x49, 0x2e, 0xc1, 0x38, 0x99, 0x33, 0xb4, - 0x65, 0xf1, 0x24, 0x5e, 0x68, 0xde, 0x84, 0x7b, 0x92, 0x68, 0x27, 0xed, - 0x73, 0xec, 0xf3, 0x27, 0x07, 0x2e, 0x2c, 0x74, 0x64, 0xed, 0xfa, 0xeb, - 0x54, 0xc7, 0x35, 0xc7, 0xdb, 0xf3, 0x70, 0xf2, 0x22, 0xc8, 0x88, 0xc4, - 0xe8, 0xcb, 0xfa, 0x2f, 0x2a, 0x30, 0x3f, 0x50, 0x54, 0x61, 0xe5, 0x76, - 0xd7, 0xbf, 0xb4, 0x26, 0x5b, 0x5f, 0xb4, 0xca, 0x71, 0x10, 0x2d, 0x91, - 0x9e, 0x8c, 0xd1, 0x2a, 0xcc, 0x5f, 0x7e, 0x9e, 0x9a, 0xd1, 0x1e, 0xe7, - 0x56, 0xc7, 0x43, 0x09, 0x5f, 0x6b, 0x85, 0x92, 0x9b, 0x5a, 0xf9, 0x25, - 0x48, 0xdc, 0x72, 0x4c, 0x59, 0x62, 0x0c, 0xf5, 0xbe, 0xe3, 0x1e, 0x41, - 0xba, 0x03, 0xcd, 0xaf, 0xdf, 0x50, 0x1a, 0x2d, 0x31, 0xef, 0x33, 0x9c, - 0x27, 0xd6, 0x7c, 0x6d, 0xc6, 0xa1, 0x8a, 0x9f, 0x52, 0xd0, 0x8a, 0xf1, - 0xac, 0x63, 0x5e, 0x4a, 0x06, 0x3f, 0x80, 0xeb, 0x5f, 0x17, 0x6e, 0x16, - 0xa3, 0x56, 0x2e, 0x3f, 0x8b, 0x8f, 0xd6, 0x99, 0x5e, 0x92, 0x9c, 0xf0, - 0x11, 0xb0, 0x18, 0xdf, 0xb6, 0x0e, 0x4c, 0x87, 0x95, 0x5f, 0x22, 0x1a, - 0xc4, 0xb5, 0x05, 0x3d, 0x24, 0x13, 0x18, 0xaf, 0x17, 0x4e, 0x30, 0x7e, - 0x64, 0xf5, 0xb3, 0xce, 0x46, 0x41, 0x7b, 0x3a, 0xc7, 0x3e, 0x2e, 0x3b, - 0x97, 0x3e, 0x57, 0xc3, 0x74, 0xd5, 0xca, 0xe9, 0xbe, 0x25, 0xa2, 0xf3, - 0xe3, 0x23, 0xb4, 0x82, 0x8c, 0x0a, 0xcc, 0x32, 0xbe, 0xc3, 0xdb, 0x0f, - 0x60, 0xd7, 0x05, 0x0f, 0x12, 0x97, 0xd3, 0x54, 0x5f, 0x00, 0x87, 0x1f, - 0xee, 0x47, 0xb5, 0xd4, 0x86, 0xbe, 0x9c, 0xb1, 0x39, 0x39, 0x40, 0xa5, - 0xf0, 0x08, 0xbc, 0x22, 0x98, 0xee, 0xef, 0x7d, 0x9d, 0x4f, 0x88, 0x09, - 0x43, 0x7a, 0x1a, 0x2d, 0xa3, 0x92, 0xcf, 0xec, 0x6e, 0xd9, 0xb3, 0xd7, - 0xa9, 0x35, 0xc9, 0xd5, 0x98, 0x5a, 0x12, 0xb4, 0x50, 0xad, 0xf7, 0x7e, - 0x16, 0x49, 0x9e, 0x41, 0xcd, 0x67, 0x8c, 0x8c, 0x71, 0x26, 0x5a, 0x9f, - 0x43, 0x49, 0xe9, 0x01, 0x65, 0x0d, 0x0b, 0xdb, 0x47, 0x63, 0x4a, 0x3b, - 0xd5, 0xef, 0xc2, 0xbf, 0xca, 0xd8, 0x61, 0x65, 0x71, 0x13, 0x3d, 0xc2, - 0x32, 0x97, 0xb9, 0x21, 0x8d, 0x41, 0x4e, 0x31, 0xa4, 0xfb, 0x5b, 0xe8, - 0xeb, 0xbe, 0x7c, 0xd9, 0xc7, 0x8c, 0x78, 0x5b, 0x35, 0x39, 0x15, 0xb3, - 0x1a, 0xa8, 0xcc, 0x07, 0x1f, 0x9e, 0x3c, 0x08, 0x94, 0x26, 0x94, 0x5b, - 0x67, 0x69, 0x44, 0x9b, 0x9f, 0xac, 0x67, 0x6d, 0x5a, 0xfb, 0x43, 0xa0, - 0x9e, 0x69, 0xb5, 0x5c, 0xfe, 0x1c, 0x5e, 0xb6, 0x26, 0xb5, 0x7a, 0x68, - 0x9e, 0x39, 0xd1, 0x5d, 0xe8, 0x74, 0x6f, 0x1f, 0xc0, 0x73, 0xba, 0x0b, - 0x9a, 0x8e, 0xf2, 0xd9, 0x81, 0xfd, 0x70, 0xcb, 0x61, 0xad, 0x5f, 0x42, - 0x43, 0x7c, 0x2b, 0x6e, 0x47, 0x39, 0x97, 0x43, 0xae, 0xa0, 0xaa, 0x97, - 0xb2, 0x40, 0x4b, 0x62, 0xfe, 0x20, 0xc6, 0xda, 0xb6, 0xfb, 0xcb, 0x9e, - 0x8a, 0x8b, 0x97, 0xc6, 0xd4, 0x59, 0xe8, 0xdf, 0x55, 0x96, 0xe2, 0x1f, - 0x1a, 0xe2, 0x16, 0x1b, 0x6e, 0xd6, 0xd7, 0x68, 0x60, 0x9a, 0xa2, 0x9d, - 0x79, 0xcf, 0x90, 0xf1, 0xc4, 0xfe, 0xc6, 0xab, 0x30, 0x49, 0x36, 0x9e, - 0x1b, 0xeb, 0x8a, 0x86, 0xd1, 0x5c, 0xac, 0x2b, 0xa1, 0xc3, 0xcc, 0xa0, - 0x64, 0xc8, 0xb8, 0xdb, 0x6b, 0x78, 0x4e, 0x8d, 0x6a, 0x3f, 0x19, 0x59, - 0xba, 0x6c, 0xd7, 0x2c, 0x6b, 0x8c, 0x0f, 0x6c, 0x10, 0xb8, 0xd8, 0x66, - 0x48, 0xaf, 0x5d, 0xfd, 0x4e, 0x5f, 0xd3, 0x68, 0xfd, 0x87, 0x79, 0x70, - 0x7c, 0x25, 0xf0, 0xe8, 0x0d, 0x24, 0xac, 0xe0, 0x86, 0x3b, 0x78, 0xbf, - 0xa4, 0x08, 0xbc, 0xb1, 0x88, 0x92, 0x7a, 0x6e, 0xcc, 0x7d, 0x82, 0x0b, - 0x5a, 0x96, 0x9e, 0x65, 0x5c, 0x9e, 0x52, 0x3e, 0xa2, 0x5d, 0x89, 0x43, - 0x8c, 0x20, 0xa0, 0xc4, 0x98, 0x0d, 0x2e, 0x4f, 0xa1, 0x6e, 0xd8, 0x2b, - 0xe2, 0x41, 0x41, 0xa4, 0xda, 0x01, 0x9e, 0x22, 0x8e, 0x75, 0xe4, 0xd0, - 0x63, 0x88, 0x40, 0xe7, 0x19, 0x41, 0x17, 0xa5, 0x66, 0x42, 0x0e, 0x75, - 0x7b, 0xf4, 0x7b, 0xf0, 0x8c, 0x03, 0xa4, 0x55, 0x1f, 0xdf, 0x45, 0x37, - 0xaf, 0x57, 0x1a, 0xce, 0xa2, 0x95, 0x98, 0xd6, 0xd1, 0x8b, 0x8f, 0xff, - 0xd6, 0xc9, 0x1e, 0x42, 0xb9, 0x5f, 0x2b, 0x30, 0xef, 0x43, 0xf1, 0x4b, - 0x44, 0x09, 0x69, 0x20, 0x95, 0x3f, 0x85, 0x7d, 0x97, 0x48, 0x6b, 0x29, - 0x15, 0x9a, 0xe3, 0x37, 0x7e, 0x36, 0xb2, 0x76, 0x52, 0x0c, 0xae, 0x3a, - 0xf6, 0xbe, 0x51, 0x1f, 0xa2, 0x1b, 0x8b, 0xcf, 0xbc, 0x93, 0x43, 0x36, - 0x8f, 0x95, 0xee, 0x97, 0xd7, 0x52, 0x0f, 0x49, 0x7c, 0x9b, 0x6f, 0xe2, - 0x9a, 0x10, 0x3d, 0x46, 0xf6, 0xf2, 0x78, 0xb9, 0xdd, 0x5c, 0x14, 0xef, - 0x57, 0x03, 0x86, 0x2a, 0xa7, 0x40, 0x50, 0xe6, 0xe5, 0x01, 0xa5, 0xbd, - 0x1b, 0xa5, 0xc4, 0x3f, 0xb6, 0x77, 0x11, 0xca, 0x29, 0x43, 0x27, 0x16, - 0xb7, 0x48, 0x4a, 0x42, 0x4d, 0x79, 0xbb, 0xa8, 0x1f, 0x00, 0xc7, 0xcd, - 0x56, 0x69, 0x41, 0xc9, 0xf9, 0x4a, 0x81, 0xc6, 0xde, 0xbe, 0x25, 0x9a, - 0x00, 0x72, 0x8a, 0x51, 0xae, 0xe8, 0x74, 0xdf, 0xd2, 0xad, 0x97, 0xde, - 0x1a, 0xc9, 0x4e, 0x1b, 0x9d, 0xf4, 0x1a, 0x04, 0x04, 0x04, 0xd8, 0x93, - 0x6f, 0xf3, 0x12, 0x8d, 0x50, 0x09, 0x88, 0x47, 0x12, 0x76, 0x82, 0x09, - 0x86, 0x73, 0x75, 0xbc, 0x7a, 0xa9, 0xde, 0x84, 0x58, 0x31, 0x8a, 0xb9, - 0x80, 0x11, 0x5a, 0x53, 0xed, 0xca, 0xa2, 0xbc, 0x52, 0xa3, 0x52, 0xa6, - 0x6b, 0xcd, 0x71, 0x7b, 0x35, 0x92, 0x73, 0x5a, 0x70, 0xc6, 0xa1, 0xe1, - 0x52, 0x42, 0x78, 0x67, 0x53, 0xd0, 0x67, 0xc8, 0x4d, 0xe6, 0x45, 0x74, - 0x14, 0x30, 0x73, 0x35, 0x1f, 0xc0, 0x1b, 0x33, 0x4e, 0xf4, 0xb5, 0x1f, - 0x48, 0x7c, 0x9f, 0xfe, 0x52, 0xb6, 0x67, 0xe4, 0x69, 0xdd, 0xb1, 0x09, - 0xbc, 0xee, 0xcd, 0xe0, 0x5f, 0x05, 0x67, 0xa0, 0x50, 0x1c, 0x67, 0xc0, - 0xae, 0xc7, 0xa8, 0x30, 0x0e, 0x05, 0x23, 0x30, 0xf7, 0xab, 0x94, 0x10, - 0xb2, 0xfb, 0x8f, 0x82, 0xe3, 0xef, 0xa2, 0x06, 0xe8, 0x58, 0xaa, 0x88, - 0x4c, 0xfa, 0xf3, 0xe3, 0xf7, 0x6b, 0x38, 0x6a, 0x9b, 0x70, 0x2c, 0xb5, - 0x9f, 0xa4, 0x03, 0xd4, 0x02, 0xfc, 0xa8, 0x5c, 0xbd, 0x67, 0xb2, 0xbb, - 0x35, 0x39, 0x93, 0xb8, 0x82, 0x58, 0x50, 0x88, 0x4c, 0x9f, 0x1f, 0x8d, - 0x8c, 0xa8, 0x40, 0x35, 0xe2, 0x54, 0xbb, 0x59, 0x07, 0x6d, 0x97, 0x1a, - 0xb7, 0xc8, 0x3d, 0x88, 0x3f, 0xbc, 0x3c, 0x6c, 0xcf, 0x22, 0x25, 0xd4, - 0xaf, 0xeb, 0xfa, 0xb8, 0x5d, 0x0c, 0x67, 0x38, 0x54, 0xef, 0x52, 0x3b, - 0x80, 0x3a, 0xb4, 0xbc, 0xc5, 0xbc, 0x3e, 0x9d, 0x64, 0x8b, 0xdc, 0x8f, - 0x1b, 0x9a, 0x02, 0x46, 0x2c, 0xdb, 0x26, 0x62, 0x0a, 0x92, 0x95, 0xbd, - 0x1f, 0x6f, 0x94, 0x72, 0xb9, 0x43, 0x42, 0x79, 0x64, 0xa0, 0xe5, 0x5c, - 0x06, 0xa2, 0xbc, 0xeb, 0x3d, 0x75, 0x53, 0xbb, 0xce, 0x1a, 0x97, 0xb5, - 0x08, 0x77, 0xd9, 0xf8, 0xd7, 0x60, 0x7b, 0x1f, 0x98, 0xf3, 0x74, 0xe5, - 0x15, 0xb8, 0xa9, 0x82, 0x61, 0x3a, 0xec, 0x2a, 0x1d, 0x77, 0x90, 0x3c, - 0x1a, 0xeb, 0x55, 0x85, 0x7e, 0x3f, 0x15, 0x98, 0xff, 0x7d, 0x40, 0x3e, - 0x40, 0xe2, 0x1b, 0xcf, 0x14, 0xd1, 0x93, 0x19, 0xb7, 0x39, 0x8e, 0x64, - 0xb9, 0xd1, 0x21, 0xef, 0x72, 0x38, 0x99, 0x48, 0x4e, 0x58, 0xf0, 0x05, - 0xf5, 0x5e, 0xed, 0x0f, 0x66, 0x20, 0xec, 0x78, 0x6d, 0xcb, 0x3e, 0xba, - 0x18, 0xd7, 0xb9, 0x23, 0x43, 0xa3, 0xa8, 0x7b, 0xd9, 0xb5, 0x28, 0x48, - 0x04, 0x4a, 0xca, 0xd2, 0xab, 0xd4, 0x38, 0xf5, 0x76, 0x31, 0xf2, 0x28, - 0xee, 0xa8, 0x26, 0xd6, 0x4e, 0xe3, 0x97, 0x2e, 0x01, 0x0c, 0x9b, 0xe7, - 0x52, 0x4f, 0x08, 0x66, 0xdf, 0xb8, 0x1f, 0x0f, 0x47, 0x7f, 0xda, 0x2e, - 0x80, 0xde, 0xbc, 0x15, 0x72, 0x43, 0x84, 0x68, 0xee, 0x71, 0x36, 0x48, - 0xeb, 0x22, 0x15, 0xe3, 0x56, 0xa9, 0xbb, 0x5a, 0x55, 0x6e, 0xa6, 0x20, - 0xff, 0x0e, 0x8f, 0x5d, 0xbf, 0x6e, 0xcf, 0xeb, 0x8d, 0xf3, 0xa7, 0xfd, - 0xc8, 0xce, 0x9c, 0xd2, 0x3a, 0x50, 0x0a, 0x85, 0x13, 0x94, 0xee, 0x46, - 0x35, 0xbe, 0xdc, 0x9f, 0x2b, 0x98, 0x5d, 0xc1, 0x20, 0xac, 0xda, 0x2f, - 0x67, 0x11, 0xd5, 0x9a, 0x7e, 0x4f, 0x77, 0xbf, 0x33, 0xc9, 0x51, 0xae, - 0xd5, 0xa9, 0x3a, 0xaa, 0xaa, 0x08, 0xfa, 0x49, 0x3d, 0x06, 0x57, 0x0f, - 0x06, 0x83, 0x18, 0x77, 0xfc, 0x6c, 0x65, 0x07, 0x11, 0xcf, 0x11, 0x00, - 0x7c, 0xf7, 0x3e, 0xed, 0xb7, 0x42, 0x76, 0xe1, 0x19, 0xb5, 0xf0, 0x72, - 0x93, 0x31, 0x99, 0xb0, 0xcc, 0x87, 0x38, 0x1a, 0xb2, 0xc1, 0x59, 0x4d, - 0xeb, 0x08, 0xe8, 0xec, 0x0c, 0x73, 0x85, 0x9b, 0x5c, 0x11, 0x18, 0x98, - 0x06, 0xe6, 0x9a, 0x8a, 0x42, 0xad, 0x0a, 0x0e, 0x97, 0x53, 0x1d, 0xff, - 0xca, 0x1f, 0x16, 0xd8, 0xab, 0x38, 0x90, 0x0e, 0xfa, 0x1e, 0xbf, 0x8b, - 0x3e, 0xbb, 0x25, 0x4f, 0x67, 0x67, 0x2a, 0x4c, 0xc7, 0xe5, 0x67, 0x90, - 0xaf, 0xe9, 0xb7, 0xba, 0x2d, 0x93, 0x36, 0xec, 0xce, 0x44, 0xa3, 0x66, - 0xc0, 0xe4, 0xd2, 0x95, 0xfd, 0x00, 0xdd, 0xd9, 0x86, 0x43, 0x33, 0x48, - 0x4c, 0x7d, 0x6e, 0x70, 0x3e, 0xd9, 0x96, 0x84, 0x37, 0x00, 0x44, 0x59, - 0xf1, 0xe6, 0x61, 0x9a, 0x2a, 0xb5, 0x1c, 0x59, 0xa6, 0x62, 0x44, 0xd6, - 0x5f, 0x24, 0xa8, 0x05, 0x16, 0x60, 0x7b, 0x3f, 0xe8, 0x4e, 0x31, 0x7c, - 0x90, 0x98, 0x7a, 0xc4, 0xb7, 0x46, 0xdf, 0xd9, 0xf2, 0x74, 0x90, 0x52, - 0x4f, 0x8e, 0x38, 0x3a, 0xfd, 0xbb, 0x81, 0xcc, 0x86, 0xd2, 0x11, 0x7b, - 0x0b, 0xca, 0x30, 0xce, 0x1b, 0xb3, 0x46, 0x86, 0x34, 0xf9, 0x18, 0x4a, - 0x5d, 0xbe, 0x40, 0x44, 0x3e, 0xe7, 0x9e, 0xb5, 0x26, 0xca, 0xee, 0x9f, - 0x2f, 0x27, 0xa1, 0x77, 0x23, 0x59, 0xc1, 0xca, 0xaa, 0x77, 0xc6, 0x4e, - 0x51, 0xec, 0x64, 0xbd, 0x97, 0xed, 0xd6, 0x8b, 0xc3, 0x0a, 0xd8, 0x09, - 0x76, 0x31, 0x4a, 0x7a, 0xc6, 0x28, 0x3e, 0xa6, 0x07, 0x87, 0x3d, 0xab, - 0x38, 0xc7, 0xf5, 0x53, 0x6c, 0x17, 0xc4, 0xf2, 0x40, 0xb3, 0x45, 0x9b, - 0x64, 0x32, 0x9e, 0x5f, 0x3f, 0xba, 0x77, 0x4a, 0xec, 0x21, 0x15, 0x56, - 0xd2, 0x67, 0x07, 0xb6, 0xd5, 0x1e, 0x30, 0xc4, 0x37, 0x4d, 0xd7, 0x6f, - 0x96, 0xe1, 0xf9, 0x58, 0x75, 0xec, 0xea, 0x24, 0x8a, 0xa6, 0xe8, 0xde, - 0x1b, 0x60, 0xc5, 0x85, 0xfc, 0xd3, 0xbd, 0xfe, 0x05, 0x1a, 0x9c, 0x15, - 0xd4, 0x11, 0x54, 0xed, 0xc5, 0x29, 0x3f, 0x93, 0x2d, 0x3c, 0x46, 0xd6, - 0x65, 0xca, 0x2b, 0x3b, 0x35, 0x27, 0x65, 0x92, 0x01, 0x56, 0x21, 0xaa, - 0x67, 0xb2, 0x30, 0x93, 0x79, 0xb7, 0x3b, 0x1f, 0x74, 0x79, 0xd3, 0xb7, - 0x7c, 0xcf, 0x6e, 0xd1, 0x18, 0x8c, 0x06, 0x2a, 0x88, 0x9d, 0x3d, 0x5e, - 0xd4, 0xfd, 0xac, 0xa4, 0x4f, 0x8c, 0x44, 0xe2, 0x22, 0xae, 0x1e, 0x3b, - 0x2f, 0x53, 0xfe, 0x43, 0x99, 0xa2, 0x6e, 0x32, 0xb7, 0x2b, 0x30, 0x1d, - 0x2d, 0xe2, 0xdd, 0xc5, 0x8d, 0x07, 0x52, 0xd6, 0x68, 0x58, 0x6e, 0x20, - 0xcf, 0xdb, 0xc1, 0x24, 0xeb, 0xeb, 0x5f, 0xfa, 0xa4, 0xbf, 0x35, 0x92, - 0x59, 0x38, 0x94, 0x54, 0xb9, 0xea, 0xe1, 0xff, 0xe9, 0xa6, 0x26, 0xb6, - 0x30, 0xa6, 0xe8, 0x4d, 0x11, 0x86, 0x1b, 0x29, 0x6f, 0xcd, 0x66, 0x15, - 0xe0, 0xd7, 0xb1, 0x78, 0x5d, 0x10, 0x8f, 0x61, 0xb6, 0xdc, 0x4e, 0xb3, - 0x8c, 0x41, 0xd0, 0xd2, 0x10, 0xc6, 0xf2, 0x29, 0x9a, 0x65, 0xd2, 0xb9, - 0x8f, 0x8d, 0xaf, 0xd8, 0x65, 0x9b, 0xf1, 0x6c, 0x0b, 0xbc, 0x37, 0x0e, - 0x15, 0x42, 0xf3, 0xd7, 0xec, 0xec, 0xdb, 0xb2, 0xa0, 0xd4, 0x05, 0xd2, - 0x8b, 0x2c, 0x2a, 0xdc, 0xc4, 0xb2, 0x8d, 0x55, 0xeb, 0xc9, 0xd6, 0x13, - 0xe0, 0x48, 0x7a, 0x27, 0x5b, 0x4f, 0xee, 0xe6, 0xf6, 0x83, 0xe9, 0xb9, - 0x47, 0x3b, 0x74, 0xb8, 0xa6, 0x1d, 0xaa, 0x3d, 0xeb, 0xa9, 0xca, 0x33, - 0xd2, 0xe5, 0x2f, 0xe2, 0x7e, 0x1f, 0x88, 0x83, 0xc8, 0x87, 0x5c, 0xfc, - 0x22, 0x18, 0xd4, 0x30, 0x44, 0x15, 0xb9, 0x31, 0x6e, 0x79, 0xfc, 0xfc, - 0xdd, 0x1a, 0xe0, 0x87, 0x14, 0x35, 0x97, 0x79, 0x42, 0x65, 0x7c, 0x8a, - 0x7a, 0x96, 0x9f, 0xe8, 0xbf, 0xb2, 0x60, 0x26, 0xeb, 0xb9, 0x6c, 0xb8, - 0xdb, 0xe3, 0x93, 0x21, 0xad, 0xc2, 0x99, 0x0d, 0x68, 0xc4, 0x4c, 0xeb, - 0x03, 0x5b, 0x11, 0x1c, 0xdb, 0xb6, 0xc0, 0xe8, 0x96, 0x92, 0xc0, 0xf2, - 0x30, 0x7d, 0x88, 0x9a, 0xd4, 0xf8, 0xab, 0x3c, 0xa5, 0x5c, 0x3c, 0xd9, - 0xf2, 0x5a, 0x84, 0x3a, 0xbf, 0xa0, 0x4f, 0xd5, 0x10, 0xcb, 0xdb, 0xc1, - 0xff, 0x79, 0x97, 0x59, 0x6a, 0x42, 0x82, 0xf8, 0x68, 0x17, 0x0c, 0xd9, - 0x60, 0x8f, 0xb1, 0x5b, 0xd5, 0xc8, 0x8f, 0x67, 0x40, 0xeb, 0xdb, 0xcf, - 0x1b, 0xe1, 0x08, 0x36, 0x2b, 0x6a, 0x52, 0x1e, 0x7a, 0xa3, 0x8f, 0x73, - 0x7f, 0x90, 0xc4, 0x0c, 0x52, 0xcc, 0x81, 0xa0, 0x54, 0xa9, 0x0e, 0xe7, - 0x66, 0x8e, 0x44, 0x02, 0x5d, 0xa7, 0xec, 0xc8, 0x27, 0xc9, 0x10, 0xa2, - 0xb3, 0xc0, 0x8c, 0x34, 0xaf, 0x97, 0x59, 0xc2, 0xae, 0x1b, 0x35, 0xc0, - 0x56, 0x97, 0xc2, 0x2b, 0xa8, 0x56, 0x85, 0x45, 0xda, 0x8b, 0x02, 0xb0, - 0xd7, 0xfd, 0x88, 0x5f, 0x26, 0x35, 0x51, 0x4c, 0xf6, 0x20, 0xce, 0xe2, - 0x30, 0xc2, 0x79, 0xa2, 0xfe, 0x77, 0x33, 0xcb, 0xa5, 0x30, 0x3d, 0xce, - 0x00, 0x2d, 0xb0, 0x25, 0x48, 0xfe, 0x88, 0xc1, 0x5a, 0x93, 0x6d, 0xc9, - 0x68, 0x8c, 0x44, 0xe7, 0x5c, 0x88, 0x2f, 0xa8, 0x04, 0xb9, 0xaa, 0xf9, - 0x11, 0xc5, 0x77, 0x6a, 0xfb, 0x3d, 0xe1, 0xf4, 0x9d, 0xac, 0xcb, 0x9c, - 0xe1, 0x98, 0xaa, 0xb6, 0x17, 0xe7, 0xf2, 0xcf, 0xcf, 0xb4, 0x21, 0x07, - 0x7a, 0xaf, 0xd5, 0x0e, 0xd8, 0xed, 0xeb, 0x60, 0x06, 0xd2, 0xef, 0xcf, - 0x30, 0xba, 0xa6, 0xa1, 0xaf, 0xee, 0x93, 0xc3, 0x58, 0xcf, 0xe5, 0xa2, - 0x9b, 0xe2, 0x1b, 0x21, 0x94, 0x93, 0x64, 0xbf, 0x19, 0x66, 0xec, 0x33, - 0x3c, 0x43, 0x95, 0xd3, 0x47, 0x87, 0xab, 0xe4, 0x68, 0x0a, 0x20, 0x0d, - 0x31, 0x09, 0xe8, 0x9a, 0x5b, 0x52, 0x5d, 0xb4, 0x47, 0xbd, 0xcc, 0xcd, - 0x24, 0x49, 0xbd, 0x73, 0x72, 0x38, 0xed, 0x5e, 0x0b, 0x5e, 0x56, 0x2e, - 0x96, 0xce, 0x24, 0x79, 0x05, 0xbd, 0x41, 0x02, 0x78, 0x72, 0x65, 0x27, - 0xee, 0x10, 0xf5, 0xbc, 0x9c, 0x2e, 0x25, 0xae, 0xaa, 0x23, 0x72, 0xce, - 0x76, 0x87, 0xdc, 0xa8, 0xd3, 0xc1, 0xf2, 0xb0, 0x51, 0x8e, 0xfa, 0x2d, - 0x77, 0x96, 0x26, 0x6c, 0x83, 0x22, 0x66, 0xe5, 0xfb, 0x72, 0x1c, 0x06, - 0x1b, 0x67, 0x5e, 0x50, 0x87, 0xab, 0x28, 0xd5, 0xd5, 0x34, 0x9b, 0x4a, - 0x88, 0xf0, 0x62, 0xd2, 0x15, 0xe9, 0x43, 0xc9, 0xc3, 0x70, 0x07, 0x85, - 0x73, 0xf2, 0x69, 0x90, 0xbc, 0xf1, 0x63, 0xf8, 0x63, 0xc5, 0xff, 0xde, - 0x13, 0x55, 0x65, 0x3f, 0xf1, 0xae, 0xc6, 0x61, 0xf3, 0x89, 0x03, 0x47, - 0xcb, 0x8f, 0x3c, 0xa9, 0x85, 0x01, 0x5d, 0x3e, 0x00, 0x64, 0x96, 0xca, - 0x86, 0x66, 0x24, 0x95, 0xdd, 0xf4, 0x86, 0x6a, 0x66, 0x1d, 0x43, 0xff, - 0x77, 0x5e, 0x35, 0x36, 0x49, 0x70, 0xe6, 0x45, 0x75, 0x87, 0xd7, 0xe6, - 0x81, 0xb5, 0xb7, 0xd6, 0x68, 0x04, 0x99, 0x3c, 0x0b, 0xcd, 0x8f, 0x2a, - 0x32, 0x61, 0xc6, 0xca, 0xe8, 0x22, 0x32, 0xe7, 0x8f, 0x5e, 0xf0, 0xa3, - 0x30, 0xb0, 0x9c, 0x26, 0x6c, 0x34, 0xd6, 0xb3, 0x7f, 0x81, 0x03, 0xf0, - 0xfc, 0x63, 0x4b, 0x0e, 0x03, 0xfc, 0x21, 0x12, 0x78, 0x90, 0x83, 0xd0, - 0x1a, 0xb0, 0xc2, 0x72, 0xd2, 0xf9, 0x5e, 0x21, 0xf3, 0xf3, 0xe6, 0xd5, - 0x00, 0x97, 0x74, 0x1d, 0x74, 0xc9, 0x80, 0xd8, 0xfd, 0x28, 0x63, 0xd0, - 0x81, 0x28, 0x8a, 0x79, 0x5a, 0xfc, 0x19, 0xca, 0x6b, 0x23, 0x95, 0x17, - 0x73, 0x19, 0x8e, 0x5e, 0x82, 0x06, 0x20, 0xa3, 0x84, 0x26, 0x06, 0xc0, - 0x83, 0xd5, 0xe1, 0xe5, 0x27, 0xb3, 0xe9, 0xb4, 0xc4, 0x56, 0xb5, 0x70, - 0x11, 0x90, 0xcc, 0x67, 0x24, 0x77, 0xe8, 0xdf, 0xa5, 0x86, 0x51, 0xa7, - 0xc5, 0x37, 0x21, 0x44, 0xc2, 0x4a, 0x69, 0x92, 0xfa, 0xcf, 0xb7, 0xad, - 0xcb, 0x14, 0xa8, 0x66, 0xf1, 0xbe, 0x9e, 0xf6, 0x69, 0x85, 0x6f, 0xc6, - 0x5e, 0xc0, 0x05, 0x0b, 0x20, 0xcd, 0xb6, 0xfe, 0xf9, 0xdb, 0x02, 0xab, - 0x32, 0xcc, 0x30, 0xa2, 0x99, 0x45, 0x9a, 0xf2, 0x0a, 0x3c, 0xd9, 0x91, - 0x38, 0xcd, 0xb4, 0x8b, 0x01, 0x8a, 0xcb, 0x7a, 0x74, 0x65, 0x90, 0xed, - 0x0e, 0xcb, 0x46, 0x1f, 0xfd, 0x08, 0x52, 0x97, 0x70, 0x4a, 0x4a, 0x53, - 0x30, 0xb8, 0x24, 0x3c, 0xd7, 0x2c, 0x0d, 0xe8, 0xb7, 0xba, 0x09, 0xe2, - 0x80, 0x35, 0x27, 0xcc, 0xf1, 0xef, 0xfc, 0x8f, 0xa2, 0x65, 0x77, 0xf8, - 0x8f, 0xbc, 0xaa, 0x0e, 0xa1, 0xc7, 0x19, 0x3a, 0x0b, 0x43, 0x02, 0xa1, - 0x7d, 0x9c, 0x4e, 0x73, 0xb1, 0x80, 0x5a, 0x76, 0x4d, 0x5a, 0x4a, 0xd0, - 0xa6, 0xa6, 0x99, 0x37, 0x19, 0x27, 0x33, 0xd1, 0xb3, 0x3b, 0xa3, 0x23, - 0x59, 0x6f, 0x4a, 0x38, 0xab, 0x18, 0x87, 0xdf, 0x07, 0xc2, 0x25, 0x43, - 0xb6, 0x5c, 0x4c, 0x4a, 0x0c, 0xa8, 0xcd, 0x22, 0xf2, 0xa2, 0x8b, 0x80, - 0x92, 0x08, 0xa0, 0x95, 0x17, 0x0b, 0x3b, 0x00, 0x1c, 0xaf, 0x28, 0x33, - 0x49, 0x26, 0x6a, 0x65, 0x50, 0x76, 0x78, 0x2b, 0x37, 0x7c, 0x9e, 0x83, - 0x72, 0x53, 0xaf, 0xee, 0x36, 0x39, 0xda, 0x59, 0xc6, 0x8a, 0xa9, 0x4e, - 0xb3, 0x85, 0xcd, 0xf9, 0xd3, 0xd8, 0xea, 0x91, 0x6d, 0xf7, 0x17, 0xbf, - 0xe5, 0x0c, 0xf4, 0x8a, 0x75, 0x55, 0x46, 0x2d, 0x58, 0xa1, 0x5f, 0x35, - 0xf6, 0x81, 0xf9, 0xe0, 0x49, 0xa8, 0x25, 0x2a, 0x89, 0xfa, 0xa0, 0xb0, - 0xce, 0x33, 0x6d, 0x18, 0x01, 0xca, 0x69, 0xe9, 0x6b, 0xf2, 0xcd, 0x74, - 0xb5, 0x9a, 0xd5, 0xca, 0x1f, 0x4b, 0xfd, 0xaf, 0xa0, 0x4f, 0x47, 0x8b, - 0x12, 0x8d, 0x09, 0x45, 0xdb, 0x42, 0xf3, 0xbb, 0x82, 0xa3, 0xab, 0x04, - 0xee, 0x82, 0xe0, 0x45, 0x00, 0x13, 0x62, 0x7a, 0xb4, 0x05, 0x48, 0x35, - 0x4d, 0x3d, 0xf3, 0x41, 0x0b, 0x61, 0xca, 0x72, 0x63, 0x50, 0x5b, 0x07, - 0x1d, 0xc7, 0x7a, 0xc1, 0x74, 0x6a, 0xc0, 0x74, 0x25, 0x50, 0xe4, 0x74, - 0x10, 0xf7, 0xa8, 0xf6, 0x2e, 0x24, 0x67, 0x10, 0xe7, 0xc8, 0x3b, 0x80, - 0x62, 0x3b, 0xc6, 0x85, 0x97, 0x37, 0xdb, 0x0b, 0x3f, 0x39, 0x54, 0xbf, - 0xa3, 0x6c, 0x1f, 0xd2, 0x45, 0x0d, 0x99, 0x10, 0xa8, 0xb1, 0xba, 0x12, - 0xef, 0x9c, 0x53, 0xc0, 0xf0, 0x93, 0x2e, 0x25, 0xc2, 0xba, 0x73, 0x92, - 0x79, 0x25, 0xa5, 0x9f, 0x98, 0xda, 0x40, 0x0b, 0x19, 0xda, 0x26, 0x45, - 0xe0, 0xb1, 0x59, 0xf6, 0xec, 0x43, 0xc3, 0x37, 0x1b, 0x1c, 0x9e, 0x45, - 0x40, 0x19, 0xb8, 0xd1, 0xd9, 0x55, 0x8f, 0xd3, 0xa9, 0x53, 0x5f, 0x12, - 0xca, 0x0a, 0x93, 0x11, 0x0b, 0xf0, 0xed, 0x72, 0xa7, 0x9a, 0x72, 0x34, - 0x01, 0xb3, 0xf3, 0xa6, 0xee, 0x08, 0x40, 0x0f, 0xa6, 0x96, 0x3c, 0x87, - 0x16, 0x94, 0x6d, 0x21, 0x27, 0xe3, 0x76, 0xfc, 0x84, 0xce, 0xb4, 0x30, - 0x4f, 0x86, 0xa9, 0xc7, 0x7a, 0x16, 0x54, 0x04, 0x91, 0x29, 0x69, 0xaf, - 0xf8, 0x3e, 0x0b, 0xb5, 0xac, 0xcd, 0xb7, 0x22, 0x10, 0xbe, 0xbc, 0x1a, - 0x4f, 0x21, 0x41, 0xf2, 0x3a, 0x01, 0x13, 0x6e, 0xe2, 0x06, 0x23, 0xfa, - 0xf0, 0xed, 0x52, 0xf1, 0x29, 0x06, 0xec, 0x86, 0x2d, 0xdf, 0xf9, 0x1e, - 0x78, 0x3a, 0x93, 0x8e, 0x85, 0xd9, 0x21, 0xc4, 0xf4, 0x0b, 0x33, 0x74, - 0x37, 0x58, 0x94, 0xaf, 0x5a, 0xf8, 0x77, 0xb3, 0x18, 0xe7, 0x5c, 0x56, - 0x84, 0x7d, 0xf6, 0xc9, 0xc5, 0x48, 0xc7, 0x95, 0x3d, 0xed, 0x1a, 0x4e, - 0x1c, 0x4a, 0x84, 0x06, 0xee, 0x38, 0x9f, 0x84, 0x98, 0x28, 0x11, 0x5e, - 0x44, 0x8b, 0x9e, 0xe7, 0x50, 0x8f, 0xe7, 0x84, 0x16, 0x78, 0xe6, 0xf3, - 0x88, 0xe2, 0x34, 0x1c, 0x60, 0xd0, 0x57, 0xc0, 0x4b, 0xe4, 0xc8, 0xaa, - 0x63, 0x2e, 0xfa, 0xe7, 0x49, 0x28, 0x8a, 0xae, 0xed, 0x65, 0xf7, 0x64, - 0xb2, 0x49, 0x46, 0x09, 0xc5, 0xae, 0x62, 0x8b, 0xbb, 0xbd, 0x19, 0xc6, - 0x56, 0x4a, 0xac, 0x89, 0x3b, 0x0a, 0x63, 0x1d, 0x13, 0xe5, 0xbf, 0xa8, - 0x2f, 0xd4, 0xfa, 0x26, 0x5d, 0x87, 0xe7, 0x33, 0x1f, 0x82, 0x68, 0x86, - 0xf3, 0x8e, 0x27, 0xcc, 0x82, 0xf0, 0xe5, 0xba, 0xd7, 0xfc, 0x35, 0x71, - 0x47, 0x8a, 0xe5, 0xf2, 0x23, 0xd5, 0xfa, 0xa9, 0xd0, 0x05, 0x9c, 0xc6, - 0xac, 0x90, 0xf6, 0x49, 0x2d, 0x03, 0xe3, 0xc1, 0x00, 0x0e, 0x6b, 0xa4, - 0x8a, 0x38, 0xd7, 0xec, 0x6d, 0xff, 0x14, 0xa7, 0x85, 0x2f, 0x42, 0x30, - 0x13, 0x64, 0x63, 0xee, 0x08, 0x4b, 0xe2, 0xb5, 0x9e, 0xc3, 0x98, 0x60, - 0x73, 0xea, 0x52, 0xe2, 0x5f, 0x43, 0xd9, 0x9d, 0xe4, 0x84, 0xe7, 0x28, - 0xe8, 0x88, 0x46, 0x17, 0x19, 0xce, 0x58, 0xf2, 0x56, 0xa5, 0x70, 0x44, - 0x77, 0x2f, 0x89, 0x98, 0x29, 0x47, 0xd7, 0xc2, 0x1b, 0x13, 0x42, 0xb3, - 0xec, 0xda, 0x03, 0xd1, 0xaa, 0xcc, 0x1a, 0xa5, 0x90, 0xcf, 0xe6, 0x6b, - 0x65, 0xa1, 0x5c, 0xe5, 0x75, 0x08, 0xf7, 0xa7, 0x19, 0x8a, 0x0c, 0x36, - 0x43, 0xae, 0xda, 0x13, 0x2e, 0xeb, 0x94, 0x03, 0xd3, 0x4d, 0xb3, 0x3b, - 0xaa, 0xed, 0x72, 0xee, 0x9c, 0x01, 0x53, 0x3d, 0xe2, 0xe2, 0xc5, 0x05, - 0x2c, 0x6d, 0x5f, 0x36, 0xab, 0xe1, 0x46, 0xe3, 0xc8, 0xa8, 0x69, 0x21, - 0xe1, 0x1d, 0x82, 0xd5, 0xa0, 0x88, 0xd3, 0x3e, 0xf4, 0x70, 0x19, 0x55, - 0x11, 0x1b, 0xa3, 0x69, 0x98, 0x78, 0x33, 0x9d, 0x1a, 0xc1, 0x83, 0x92, - 0x86, 0xfa, 0x02, 0xa0, 0xc7, 0xfb, 0xa3, 0x46, 0x47, 0xfa, 0x17, 0x7e, - 0x66, 0x4e, 0x61, 0x3e, 0x9d, 0x38, 0x55, 0x2e, 0xb7, 0xcf, 0x93, 0x3e, - 0x01, 0xbf, 0x32, 0xa6, 0xf2, 0x17, 0x1f, 0x9f, 0x50, 0xa2, 0xb5, 0x14, - 0xb3, 0x68, 0x44, 0xfb, 0xfc, 0x44, 0xab, 0x31, 0x0b, 0xd5, 0xc3, 0x40, - 0x5b, 0xee, 0xa7, 0xe6, 0x26, 0x50, 0x9f, 0xf0, 0x4c, 0x51, 0xaf, 0xcd, - 0xfc, 0x08, 0x1a, 0xef, 0x67, 0xcd, 0xd2, 0xea, 0x38, 0x75, 0xc0, 0xec, - 0xf7, 0x21, 0x3c, 0x18, 0x82, 0x7a, 0xc1, 0xe3, 0xd6, 0x7c, 0xaa, 0x1a, - 0xbe, 0x82, 0x97, 0x68, 0xeb, 0x33, 0x82, 0xe6, 0x42, 0xdd, 0x93, 0xfc, - 0xb5, 0x1e, 0x6a, 0x2f, 0x91, 0x80, 0xd2, 0xd9, 0xe4, 0xf1, 0x1e, 0x28, - 0x87, 0xc3, 0xe2, 0x80, 0x2c, 0x07, 0x58, 0xdc, 0x1f, 0x93, 0x80, 0xef, - 0xb1, 0xf1, 0x46, 0x44, 0x03, 0xf5, 0x5f, 0x3d, 0xa8, 0xc7, 0x15, 0xd3, - 0x0e, 0x84, 0xd7, 0xe0, 0x2b, 0xa6, 0xf5, 0x87, 0xa6, 0x3c, 0x9d, 0x4e, - 0xae, 0x58, 0xdf, 0xb8, 0x87, 0xfb, 0x17, 0x13, 0x38, 0x6b, 0xaa, 0x56, - 0x70, 0x0d, 0x16, 0x01, 0x40, 0xc1, 0xe4, 0xb5, 0x8b, 0x7b, 0x8f, 0xf6, - 0x7d, 0x92, 0xe1, 0xf5, 0x38, 0x31, 0x3a, 0x98, 0x5a, 0xde, 0x3f, 0xa8, - 0xc4, 0xa8, 0x9f, 0xdc, 0xda, 0xa1, 0xae, 0xc8, 0x8b, 0xf4, 0x97, 0x9d, - 0x68, 0xc5, 0x0d, 0xb6, 0x08, 0x54, 0x97, 0x07, 0x40, 0x1c, 0xa6, 0xc5, - 0xfc, 0x75, 0xd0, 0x2d, 0x18, 0xd2, 0xc3, 0xdd, 0xf3, 0x5f, 0x9a, 0xe5, - 0xa3, 0x88, 0x2a, 0x1f, 0xeb, 0x9a, 0x0c, 0x30, 0x1e, 0xa6, 0x9c, 0x96, - 0x3a, 0xcf, 0xc9, 0xee, 0x0d, 0x5c, 0x07, 0x85, 0x36, 0x66, 0x65, 0xb6, - 0x62, 0x92, 0x19, 0xa5, 0xec, 0xbf, 0x48, 0xab, 0x12, 0x7f, 0x51, 0xc1, - 0xcf, 0x15, 0x49, 0x40, 0xbe, 0xc8, 0x98, 0x65, 0x3b, 0x9c, 0xb6, 0xc9, - 0xa8, 0xfa, 0x6c, 0xd2, 0x81, 0x96, 0x8e, 0x6e, 0x56, 0xce, 0xd3, 0xa2, - 0x8c, 0xe2, 0x89, 0x55, 0x60, 0x22, 0x17, 0x13, 0xed, 0x09, 0x20, 0x67, - 0xb6, 0xee, 0x07, 0xc8, 0x49, 0xb0, 0x03, 0x58, 0x23, 0x87, 0xa0, 0xf9, - 0xd6, 0xee, 0xd7, 0x05, 0x94, 0x58, 0x09, 0x7b, 0xc9, 0x80, 0xd4, 0x3d, - 0x3e, 0xd3, 0x82, 0xcf, 0x65, 0x2a, 0x46, 0x64, 0xe7, 0x05, 0x27, 0xea, - 0x0d, 0xca, 0xa6, 0x67, 0x34, 0x20, 0x74, 0x42, 0x89, 0xfd, 0xe3, 0x56, - 0x92, 0x21, 0x20, 0xbc, 0x23, 0x79, 0x8d, 0x66, 0x6c, 0x8d, 0x53, 0x2a, - 0xb3, 0x24, 0x64, 0x6c, 0xf1, 0x97, 0xa0, 0x7b, 0xb6, 0xe0, 0xd1, 0xee, - 0xd4, 0x40, 0x30, 0x79, 0xee, 0x4c, 0xa0, 0xb8, 0x7c, 0x8e, 0x44, 0x82, - 0x88, 0x6d, 0x40, 0x49, 0x1d, 0xf6, 0x05, 0xec, 0xae, 0x45, 0x30, 0x10, - 0x7d, 0x45, 0x43, 0x23, 0xad, 0x45, 0xa4, 0x2a, 0x01, 0xe4, 0xd4, 0x5d, - 0x6d, 0x18, 0xe5, 0x2d, 0x15, 0x0a, 0x92, 0xff, 0xf0, 0xa0, 0xbb, 0xc8, - 0x0d, 0x1b, 0xca, 0xa7, 0x1d, 0x78, 0x78, 0xd1, 0x4b, 0x7d, 0x78, 0x4e, - 0x41, 0x31, 0x6e, 0xbe, 0x57, 0xb3, 0xde, 0xd7, 0x1e, 0x4c, 0xe7, 0x00, - 0x7e, 0x02, 0x4b, 0x2d, 0x7d, 0x76, 0xf8, 0x96, 0xbd, 0xd1, 0xd5, 0xbf, - 0x0c, 0x86, 0xa1, 0xb4, 0xfd, 0x91, 0xfa, 0xcc, 0x8a, 0xb1, 0xdd, 0x29, - 0xac, 0xe0, 0xbf, 0xed, 0xfc, 0x88, 0xe5, 0xd5, 0x86, 0xdf, 0xc8, 0x0f, - 0x17, 0x72, 0x99, 0x90, 0x85, 0x4d, 0xde, 0x39, 0x5b, 0x51, 0xcd, 0xaa, - 0xc1, 0xe7, 0x8c, 0xa4, 0xe7, 0xa1, 0xf8, 0xa6, 0xd3, 0x94, 0xc5, 0x97, - 0x92, 0xd6, 0xe4, 0x4d, 0x7b, 0xe0, 0x47, 0x6f, 0x91, 0x99, 0x69, 0xbd, - 0xbf, 0xbf, 0xaa, 0x50, 0x73, 0x86, 0x00, 0xe9, 0x88, 0x99, 0x31, 0x5c, - 0x2d, 0x17, 0x1f, 0x77, 0xeb, 0x8f, 0x6b, 0x8e, 0x0c, 0x6e, 0x26, 0xb9, - 0x80, 0x34, 0xab, 0xb4, 0x1c, 0x40, 0xb5, 0xb9, 0xeb, 0xe9, 0x5c, 0x4c, - 0xc6, 0xd4, 0x64, 0x7d, 0xd5, 0x86, 0xbd, 0x7f, 0x6b, 0xfc, 0x83, 0x66, - 0xb8, 0x50, 0x5f, 0xaa, 0xf5, 0xa8, 0xac, 0x07, 0x3c, 0x0e, 0x30, 0x2f, - 0x34, 0x8c, 0x51, 0x19, 0xee, 0x31, 0x19, 0xde, 0x9a, 0x77, 0x87, 0x69, - 0xa9, 0xc7, 0x22, 0x97, 0x8f, 0xca, 0xe8, 0x99, 0x61, 0x55, 0xa0, 0x6a, - 0xa3, 0x62, 0x2d, 0x37, 0xca, 0x7f, 0x0d, 0xe0, 0xdb, 0x38, 0x66, 0x3c, - 0xb8, 0x25, 0xef, 0x96, 0x46, 0xd9, 0x01, 0x2b, 0x04, 0x89, 0x14, 0xec, - 0x23, 0xe5, 0x4d, 0x2c, 0x5c, 0x4a, 0x61, 0xbe, 0x83, 0x18, 0x91, 0x3a, - 0x96, 0x0d, 0xa4, 0xcc, 0x50, 0x47, 0x89, 0xad, 0x33, 0x1a, 0xe6, 0x53, - 0xa5, 0xa0, 0x2a, 0xec, 0x41, 0x99, 0xee, 0x95, 0x53, 0x8e, 0xf9, 0x16, - 0x42, 0x0e, 0x0f, 0x7e, 0x76, 0x77, 0xd6, 0xbe, 0x5e, 0x38, 0x08, 0xad, - 0xf3, 0x5e, 0x85, 0x51, 0x65, 0x1e, 0x08, 0x81, 0x54, 0x04, 0xcf, 0x63, - 0x3f, 0xf0, 0x36, 0x20, 0xeb, 0xf8, 0x82, 0xa4, 0xe0, 0xab, 0x13, 0x48, - 0xb5, 0x8a, 0xd1, 0x06, 0x43, 0xd3, 0x4e, 0x1b, 0x20, 0xf1, 0xcc, 0xff, - 0x9e, 0x44, 0x97, 0x29, 0x32, 0x0b, 0xcb, 0x65, 0x9e, 0xd6, 0xc4, 0xb8, - 0xb0, 0xb3, 0x38, 0xfc, 0x7a, 0x89, 0x16, 0x08, 0xca, 0xa1, 0x38, 0x55, - 0x0d, 0x03, 0x7f, 0xf6, 0x70, 0x9f, 0xb3, 0x09, 0xd8, 0x3a, 0xfc, 0x57, - 0x53, 0xeb, 0x2b, 0x49, 0x1e, 0x9f, 0x49, 0x8e, 0x18, 0xa2, 0xe3, 0x8f, - 0xc9, 0x3b, 0xb4, 0x2e, 0x5d, 0x1c, 0x17, 0x94, 0x8e, 0xc6, 0x7b, 0xc2, - 0xf0, 0xb8, 0x10, 0x6c, 0xfe, 0x34, 0x78, 0xe3, 0x19, 0x50, 0xe3, 0x0b, - 0xe5, 0x56, 0x3c, 0x60, 0x82, 0x94, 0x12, 0x55, 0xb5, 0x31, 0x66, 0xd1, - 0x31, 0xb5, 0x3c, 0x9b, 0xd6, 0x12, 0xd1, 0x7f, 0xf4, 0x78, 0xa7, 0x4e, - 0x9d, 0xee, 0x04, 0xd0, 0x0a, 0xbe, 0xc7, 0x77, 0xde, 0x23, 0x95, 0xbb, - 0xf8, 0x01, 0xbb, 0x53, 0xa5, 0x46, 0x7b, 0xde, 0xad, 0xdc, 0xf8, 0x9a, - 0xfd, 0x53, 0x4f, 0xf4, 0x70, 0x72, 0x0a, 0xfc, 0x3a, 0x29, 0xd3, 0xb8, - 0x7a, 0xdf, 0xd1, 0xcc, 0x78, 0x6c, 0xdd, 0x48, 0x39, 0x6d, 0xe6, 0x5a, - 0x3e, 0x2f, 0x93, 0x02, 0x57, 0x41, 0x79, 0xd9, 0x11, 0x78, 0xec, 0xc5, - 0xe6, 0xa7, 0x55, 0x01, 0x2e, 0x06, 0x17, 0xf9, 0x59, 0xec, 0xce, 0x2c, - 0x8f, 0xd8, 0x0f, 0xcb, 0x76, 0xfa, 0xda, 0xc0, 0x74, 0x8d, 0x94, 0xe5, - 0xb5, 0x83, 0x0c, 0x91, 0x23, 0x19, 0x69, 0x0e, 0x81, 0x95, 0x71, 0x9a, - 0x97, 0x06, 0xbc, 0x90, 0xb3, 0xc2, 0x93, 0xe1, 0x17, 0xa2, 0x54, 0xe9, - 0x9c, 0xcc, 0xd4, 0xa9, 0x21, 0x52, 0xdc, 0xfc, 0x75, 0x84, 0x28, 0x41, - 0x99, 0xff, 0xdd, 0xdb, 0x7d, 0x95, 0x3c, 0x02, 0x6d, 0xc5, 0xf4, 0xdd, - 0x5f, 0x19, 0xd3, 0x65, 0x5e, 0xcb, 0xe0, 0x30, 0xc7, 0x02, 0x4a, 0x65, - 0x4e, 0x15, 0xdf, 0x20, 0xb0, 0x00, 0xfb, 0x4f, 0x8e, 0xe5, 0x6e, 0x66, - 0x04, 0x96, 0x78, 0x6a, 0x9a, 0x44, 0xdd, 0xd7, 0xca, 0x78, 0xbf, 0x31, - 0x79, 0x56, 0x6e, 0x98, 0x80, 0x9d, 0x38, 0xac, 0xa5, 0xf3, 0xa7, 0x1b, - 0x77, 0xc6, 0xe3, 0xd9, 0xf1, 0xf3, 0x57, 0xa6, 0x0c, 0x04, 0x65, 0x61, - 0x27, 0x03, 0xb4, 0x25, 0x7f, 0xec, 0x83, 0x61, 0xd4, 0x27, 0x97, 0xbd, - 0x9c, 0x4e, 0x6d, 0x8f, 0x0e, 0xb3, 0x35, 0xe9, 0xfa, 0xc6, 0x85, 0x90, - 0x5e, 0xc9, 0xbe, 0xe1, 0xea, 0x28, 0xce, 0x93, 0xbd, 0xda, 0x78, 0x33, - 0xa3, 0x1b, 0xf0, 0x51, 0x60, 0x1f, 0xce, 0xb2, 0x21, 0x0e, 0xd3, 0x88, - 0x0a, 0x56, 0x4b, 0x9b, 0x8c, 0xf7, 0x8e, 0xea, 0x11, 0x57, 0x01, 0x2c, - 0x4f, 0x9e, 0x16, 0x8a, 0xb6, 0xae, 0xb6, 0x10, 0x96, 0x29, 0x21, 0x5a, - 0x1a, 0xfd, 0x24, 0x83, 0x17, 0x82, 0xc0, 0xc8, 0xde, 0x02, 0x1e, 0x9a, - 0x22, 0xcc, 0x86, 0xc6, 0xfa, 0x1b, 0x3a, 0x75, 0xea, 0xfa, 0xc0, 0x79, - 0x9a, 0x26, 0x18, 0x72, 0xb4, 0x3f, 0x6d, 0x93, 0x82, 0xc4, 0x95, 0x02, - 0x91, 0x3c, 0x85, 0x52, 0xba, 0x33, 0x42, 0x07, 0x44, 0xac, 0xf5, 0xf1, - 0xcc, 0xdd, 0x6f, 0x72, 0x4f, 0xe3, 0x2b, 0x11, 0xa3, 0xbc, 0xf3, 0xb2, - 0x88, 0xf1, 0x4b, 0x05, 0x38, 0xdf, 0x7f, 0xb1, 0xe2, 0x1c, 0x5d, 0x7e, - 0x37, 0x4f, 0x06, 0x12, 0x15, 0x52, 0xda, 0x8d, 0x3e, 0xd5, 0x5c, 0xec, - 0xcb, 0x60, 0x9d, 0xd9, 0xee, 0x87, 0xe3, 0x5b, 0x11, 0x48, 0x7f, 0xcb, - 0x63, 0x3f, 0x37, 0x78, 0xbb, 0x9c, 0xbf, 0xd2, 0x70, 0xc0, 0x06, 0xbc, - 0xf1, 0xca, 0x4c, 0x58, 0xe1, 0xed, 0x0f, 0x71, 0xd7, 0xf9, 0xb0, 0x25, - 0xe6, 0xf2, 0x56, 0x85, 0xb7, 0x21, 0x85, 0x62, 0x82, 0x05, 0xbd, 0x94, - 0x5a, 0x94, 0x3b, 0x85, 0xfd, 0xc1, 0xc0, 0x63, 0x57, 0xc1, 0xf1, 0xb4, - 0x27, 0x10, 0xc7, 0x3c, 0x22, 0x23, 0x0e, 0x5d, 0x81, 0xca, 0x2b, 0x83, - 0x38, 0x5c, 0x60, 0x8a, 0x8c, 0xf2, 0xf0, 0x83, 0x4c, 0xbe, 0x50, 0x7b, - 0xe1, 0xe9, 0xe6, 0x0d, 0xf5, 0x00, 0x78, 0x52, 0x91, 0x9c, 0xee, 0xd6, - 0x0d, 0x6f, 0x82, 0x5f, 0x0b, 0xda, 0x66, 0xe0, 0x10, 0xa4, 0x26, 0x97, - 0xa6, 0x63, 0x46, 0xfc, 0x22, 0x81, 0x4a, 0xa4, 0xf4, 0x4f, 0x4c, 0x78, - 0xad, 0xae, 0xd6, 0x8c, 0x6e, 0xef, 0x38, 0xfe, 0x3c, 0xa7, 0x16, 0x7d, - 0xa5, 0x88, 0xe1, 0xaf, 0x7a, 0xbe, 0x96, 0x74, 0xe1, 0x4e, 0xca, 0x61, - 0x0a, 0x11, 0x58, 0x6b, 0xc7, 0x93, 0x4f, 0xa7, 0xc5, 0x78, 0xe3, 0x11, - 0x86, 0x71, 0x31, 0x89, 0xa6, 0x69, 0x2c, 0x50, 0x57, 0xb7, 0x3d, 0x01, - 0xeb, 0x42, 0x97, 0xc9, 0xfc, 0x52, 0x64, 0x08, 0x4c, 0x49, 0x59, 0xb4, - 0x6a, 0xb8, 0xa4, 0xb2, 0x58, 0x8b, 0x1e, 0x3f, 0x97, 0xb6, 0xa2, 0x8e, - 0x8e, 0x00, 0x48, 0x6d, 0x28, 0xb2, 0xd6, 0x92, 0x36, 0xe1, 0x13, 0x7d, - 0xe8, 0xda, 0xf9, 0xa5, 0x94, 0x71, 0xa8, 0xe5, 0x1d, 0x5f, 0x42, 0xe1, - 0x97, 0xd2, 0xdd, 0x2d, 0x8a, 0xb8, 0xb1, 0xe1, 0x43, 0x50, 0xe1, 0x25, - 0x8e, 0xc8, 0xc0, 0x11, 0x73, 0xd6, 0x75, 0x94, 0x7e, 0xd6, 0x12, 0x7b, - 0xe9, 0x52, 0x38, 0xe4, 0x62, 0x0b, 0x97, 0x7e, 0xc5, 0x26, 0x65, 0xb4, - 0x86, 0x5b, 0x3e, 0x7b, 0x87, 0xb5, 0x92, 0x78, 0xc1, 0xde, 0x32, 0x8b, - 0x22, 0x50, 0xbd, 0x83, 0xcc, 0x9a, 0xca, 0x39, 0xd7, 0x5f, 0x72, 0x3a, - 0xdd, 0x54, 0xe0, 0x11, 0x4d, 0x22, 0x9a, 0xbc, 0x30, 0x89, 0xcd, 0x78, - 0x20, 0x83, 0xb8, 0x4e, 0xd2, 0x85, 0xd8, 0x77, 0x12, 0xb5, 0x15, 0x27, - 0xdf, 0xe2, 0xb0, 0x63, 0x47, 0x92, 0xf1, 0x4e, 0x50, 0xff, 0x87, 0x41, - 0x66, 0xf1, 0xab, 0x32, 0xa2, 0x3c, 0x15, 0x83, 0x0b, 0x3c, 0xc4, 0x38, - 0xba, 0x4f, 0xdb, 0xcc, 0x06, 0xdf, 0xf2, 0x7d, 0x98, 0x64, 0x61, 0x73, - 0xfc, 0x4f, 0xcd, 0x30, 0xda, 0x92, 0xdc, 0xc7, 0x8c, 0x6a, 0xda, 0xd5, - 0x1b, 0xee, 0x65, 0x00, 0xb8, 0x89, 0x11, 0xcf, 0x34, 0x07, 0xb7, 0x56, - 0xfb, 0xe8, 0x80, 0x81, 0x7f, 0xe2, 0xbe, 0x99, 0xf1, 0x67, 0x93, 0x66, - 0x9b, 0xde, 0x2a, 0xc0, 0xa4, 0xd5, 0x2c, 0x0d, 0x41, 0x4f, 0xcd, 0x11, - 0x85, 0x3e, 0xbc, 0x9e, 0x92, 0xdf, 0x4c, 0x04, 0xbd, 0x4b, 0x04, 0x9e, - 0xb4, 0xb2, 0x6a, 0xed, 0x93, 0x86, 0xb5, 0x4b, 0x5b, 0x21, 0x10, 0x14, - 0xa0, 0x4d, 0xa0, 0xa9, 0xa3, 0x5a, 0x21, 0x72, 0x93, 0xe3, 0x58, 0xd3, - 0xc4, 0x1a, 0xe3, 0xbf, 0x9e, 0x5e, 0xdd, 0xdc, 0x59, 0x78, 0x7d, 0x4e, - 0x61, 0xbe, 0xa1, 0xcb, 0x88, 0x50, 0xd7, 0x44, 0x7a, 0x78, 0x53, 0xb8, - 0x58, 0xd0, 0x4f, 0xe7, 0x85, 0x91, 0x56, 0xec, 0x97, 0xed, 0x60, 0x60, - 0x11, 0xf8, 0xf2, 0x07, 0x4d, 0x7e, 0xa5, 0xe6, 0xc7, 0x13, 0x25, 0x5e, - 0xd8, 0xaf, 0x08, 0xb9, 0x94, 0xa4, 0x5c, 0x3e, 0x78, 0xb7, 0x11, 0xdd, - 0x5c, 0xd4, 0x06, 0x51, 0x20, 0x4d, 0x25, 0x74, 0x64, 0x6e, 0x27, 0x73, - 0x56, 0x60, 0x46, 0x27, 0x01, 0xf6, 0xfd, 0x56, 0xd8, 0x97, 0x09, 0x8e, - 0x89, 0xfc, 0xfd, 0xcc, 0xa6, 0x04, 0xf3, 0x00, 0xc8, 0xf0, 0x70, 0x1e, - 0xea, 0xab, 0x0f, 0x0a, 0x75, 0x29, 0xb2, 0xcb, 0xaa, 0x53, 0x14, 0x42, - 0x43, 0x14, 0xa6, 0x75, 0xef, 0xde, 0xee, 0x3b, 0xfe, 0x03, 0xb4, 0xbc, - 0x5d, 0x1b, 0x1b, 0x46, 0x99, 0x73, 0x3f, 0x4d, 0x66, 0x2d, 0xfa, 0xfa, - 0xc8, 0xe1, 0x44, 0x85, 0xe8, 0x56, 0x50, 0xfb, 0x31, 0x9d, 0xf3, 0x74, - 0xa2, 0x3d, 0xca, 0xc8, 0xde, 0xa6, 0x32, 0x30, 0x38, 0x02, 0x3c, 0xc0, - 0xba, 0xf1, 0x12, 0x7c, 0xc3, 0x22, 0x0c, 0x78, 0x0a, 0x35, 0x5a, 0x8f, - 0x4a, 0xf5, 0x29, 0x60, 0x6e, 0x94, 0x43, 0xe7, 0x29, 0x3b, 0x3c, 0xfe, - 0xab, 0x85, 0x6d, 0x50, 0x98, 0x1e, 0xe9, 0x6e, 0x58, 0x3a, 0xf2, 0x4c, - 0x6a, 0x64, 0x01, 0xf6, 0xeb, 0x13, 0x27, 0x21, 0xad, 0x14, 0xb4, 0x65, - 0x39, 0xa3, 0xb7, 0xb6, 0x66, 0xd9, 0x89, 0x09, 0x0a, 0xf1, 0xde, 0xa9, - 0xc2, 0xe7, 0x0d, 0x3b, 0x7b, 0xc5, 0x82, 0xa6, 0x05, 0x86, 0xeb, 0x9c, - 0xaa, 0x4f, 0xc9, 0x81, 0xae, 0xee, 0x6c, 0x6c, 0xff, 0xda, 0xee, 0xf9, - 0x2e, 0xbc, 0x71, 0xbb, 0xf9, 0x28, 0xd4, 0xd9, 0x64, 0x3c, 0xe9, 0x42, - 0xc4, 0xc6, 0x25, 0x54, 0x01, 0x1e, 0x1f, 0x87, 0x4e, 0x96, 0x4f, 0xf9, - 0xa1, 0x73, 0xe4, 0xeb, 0x76, 0x48, 0x7c, 0xa9, 0x90, 0x42, 0xc6, 0x90, - 0x28, 0x22, 0x33, 0xf3, 0x50, 0xe2, 0xd6, 0xe0, 0x69, 0x49, 0x48, 0x80, - 0xab, 0x62, 0xbd, 0xab, 0xf9, 0x91, 0x66, 0xfb, 0x7f, 0xbd, 0x55, 0x38, - 0xd2, 0xdd, 0x47, 0x51, 0x36, 0x6d, 0x54, 0x34, 0x68, 0xf7, 0x2c, 0x14, - 0x60, 0x29, 0x48, 0x06, 0xf1, 0x9d, 0xa7, 0x77, 0xa8, 0xb8, 0xfd, 0x36, - 0x48, 0xab, 0xfb, 0x1c, 0xe4, 0x46, 0x54, 0x90, 0xc1, 0x2c, 0x39, 0xc0, - 0x65, 0x6b, 0xe8, 0x54, 0x18, 0xc1, 0x40, 0x72, 0xcc, 0x3c, 0xcb, 0xbe, - 0x95, 0x38, 0xcf, 0x15, 0x4a, 0x29, 0xdb, 0x3b, 0x00, 0x23, 0x2d, 0x93, - 0xad, 0x10, 0xe7, 0x1b, 0x1f, 0x33, 0x41, 0x11, 0x87, 0x28, 0x87, 0xc9, - 0xa8, 0xaa, 0x15, 0x7a, 0x06, 0xa8, 0x92, 0x6b, 0x14, 0xd6, 0x20, 0xa7, - 0x45, 0x8e, 0x9d, 0xb1, 0xc1, 0x9a, 0x35, 0xe5, 0x45, 0x18, 0xb3, 0x0e, - 0x15, 0x9f, 0xac, 0x49, 0x36, 0xd4, 0x39, 0x9c, 0x59, 0x95, 0x28, 0xe3, - 0x25, 0x0a, 0x76, 0x78, 0x81, 0xa0, 0x94, 0xc2, 0x2e, 0x04, 0xa6, 0x8d, - 0xfd, 0xa6, 0x94, 0x91, 0x74, 0x8d, 0xae, 0x61, 0x9f, 0xaf, 0xa4, 0xfc, - 0x25, 0x85, 0xb8, 0x36, 0xf9, 0x1f, 0x2e, 0x68, 0x23, 0xb0, 0x9c, 0x58, - 0x4f, 0x7f, 0xc7, 0x82, 0xc4, 0x0b, 0xf0, 0xfb, 0x3f, 0x9b, 0x0b, 0xb2, - 0x0b, 0x5e, 0x67, 0xfa, 0x8e, 0x88, 0xae, 0xdd, 0xad, 0x90, 0xb5, 0xc8, - 0xe6, 0xb6, 0xee, 0xa7, 0xea, 0x28, 0x56, 0x43, 0xe0, 0x0f, 0x82, 0x4a, - 0xdc, 0xb3, 0x90, 0xcf, 0x17, 0x5b, 0x2c, 0x00, 0xb5, 0x7c, 0x1a, 0x62, - 0x2f, 0x12, 0x74, 0x44, 0x04, 0xe8, 0xd2, 0x62, 0x22, 0x2e, 0x2e, 0x9c, - 0xc6, 0xf8, 0x3c, 0x31, 0x3d, 0x2c, 0xc7, 0xbb, 0x14, 0x97, 0x5d, 0x21, - 0x39, 0xf9, 0xf7, 0xa1, 0x7c, 0x8b, 0x70, 0xfd, 0x01, 0x5a, 0x18, 0x10, - 0x9e, 0x1d, 0xdb, 0xc4, 0xbd, 0x91, 0xd5, 0x86, 0x33, 0x92, 0x66, 0x99, - 0x79, 0x91, 0x14, 0x4a, 0xc7, 0x3a, 0xe4, 0xc7, 0x0e, 0x58, 0xa3, 0xfe, - 0x1c, 0x80, 0xfe, 0x36, 0x71, 0x3b, 0xd1, 0x50, 0xf6, 0xf9, 0xd1, 0x1d, - 0x86, 0xcd, 0xa3, 0x04, 0x6c, 0x8d, 0xee, 0x54, 0xc6, 0x20, 0x57, 0x29, - 0xa4, 0xb4, 0xec, 0xd6, 0x3a, 0x1b, 0xde, 0xe0, 0x8a, 0x8f, 0xec, 0x3b, - 0x9a, 0x02, 0x93, 0x70, 0x63, 0xfd, 0xa2, 0x79, 0x1b, 0xde, 0xfe, 0xe1, - 0x9a, 0x1f, 0x52, 0xbf, 0x77, 0x80, 0x29, 0xd6, 0x7f, 0x8b, 0xde, 0xc6, - 0xb0, 0x8f, 0x94, 0x2e, 0xbb, 0x19, 0x4f, 0x0a, 0x41, 0x13, 0xc4, 0x4f, - 0x66, 0x57, 0x21, 0x1e, 0x06, 0x4d, 0xca, 0x08, 0xd5, 0x09, 0x74, 0x95, - 0x68, 0xe0, 0x51, 0xc2, 0xb6, 0x52, 0xe1, 0x52, 0x5e, 0xa1, 0x0d, 0xcb, - 0xaa, 0x37, 0xaa, 0xc3, 0x98, 0x41, 0x86, 0x90, 0x85, 0x81, 0x11, 0x11, - 0x7b, 0xb0, 0xb0, 0xa8, 0x9a, 0x83, 0xb9, 0xd9, 0xa8, 0x42, 0xd7, 0x7e, - 0x08, 0x5a, 0x37, 0x13, 0x64, 0x2f, 0xec, 0x2a, 0x75, 0x85, 0xcf, 0x10, - 0x7b, 0xb2, 0xe4, 0x74, 0x2f, 0x34, 0x20, 0x32, 0x2b, 0x86, 0xe7, 0x7b, - 0xad, 0xda, 0x51, 0xe2, 0x61, 0x7d, 0xef, 0x78, 0x9d, 0xbe, 0x4b, 0x1b, - 0xac, 0xf9, 0x30, 0xe3, 0xf5, 0x90, 0x71, 0xcd, 0x3a, 0x28, 0xca, 0x87, - 0xec, 0xc7, 0xef, 0xba, 0x44, 0x89, 0x7d, 0x15, 0x89, 0xd1, 0x71, 0xe3, - 0x5c, 0x4e, 0x0c, 0x14, 0x87, 0x48, 0x1a, 0x42, 0x5e, 0x2e, 0x5b, 0x16, - 0x5d, 0x49, 0x08, 0x3d, 0x6b, 0x8b, 0xdd, 0x29, 0x3e, 0x7a, 0x9c, 0xfe, - 0xde, 0xf7, 0x49, 0x80, 0x10, 0x59, 0x99, 0x2c, 0xb6, 0xa1, 0xcf, 0xb0, - 0x35, 0x9f, 0xcd, 0xdb, 0xf1, 0xb5, 0x88, 0xc2, 0x90, 0x25, 0x94, 0x14, - 0x5d, 0xc4, 0xff, 0xfa, 0x0d, 0xc5, 0xcb, 0x3d, 0xeb, 0xb0, 0xb6, 0xbc, - 0x9f, 0x63, 0xf9, 0x77, 0xb6, 0xd2, 0x14, 0xfb, 0x48, 0x06, 0x72, 0x28, - 0xaa, 0x4b, 0x58, 0xac, 0x9b, 0x7d, 0xd8, 0x37, 0x85, 0x7f, 0x40, 0x72, - 0xc4, 0x2e, 0xbe, 0xeb, 0x8a, 0x67, 0x5e, 0xf1, 0x89, 0xbe, 0x78, 0x10, - 0x4b, 0xb3, 0xb2, 0xa3, 0x70, 0x49, 0x85, 0xef, 0xd3, 0x6a, 0x60, 0xf4, - 0x91, 0xcd, 0x83, 0xdc, 0xec, 0x75, 0x99, 0xc3, 0x26, 0x94, 0xdb, 0xc1, - 0x69, 0x7f, 0x09, 0x18, 0xa9, 0xce, 0x11, 0xd7, 0x4e, 0x28, 0x92, 0x89, - 0x26, 0x87, 0x41, 0x2b, 0x4e, 0xc7, 0x28, 0xfd, 0x31, 0x93, 0x93, 0xdc, - 0xd0, 0x21, 0x43, 0xaa, 0x92, 0x98, 0x6a, 0x0b, 0xc3, 0x83, 0x66, 0xd6, - 0xe0, 0x37, 0x3c, 0x92, 0x94, 0xcd, 0x94, 0x31, 0x5e, 0xea, 0x4e, 0x71, - 0x7c, 0x09, 0x1b, 0xbb, 0x05, 0x6a, 0x9b, 0xb8, 0xa3, 0xaa, 0xc7, 0x5c, - 0xfe, 0x2e, 0x05, 0x06, 0xe1, 0xcc, 0x52, 0x0e, 0x0e, 0xca, 0x49, 0x79, - 0x47, 0x4f, 0x73, 0xd3, 0xec, 0x6b, 0xc1, 0xa8, 0x58, 0x85, 0x44, 0xe3, - 0x79, 0x2f, 0x03, 0x63, 0x38, 0x9f, 0x1a, 0xdd, 0x86, 0xe3, 0xc2, 0xda, - 0x21, 0x4e, 0x83, 0x17, 0x96, 0xef, 0x7c, 0xd3, 0xba, 0x6c, 0xef, 0x2b, - 0x4d, 0xc9, 0xbf, 0x8c, 0xea, 0x0e, 0x9d, 0x8d, 0x71, 0xcd, 0x91, 0xbf, - 0x97, 0xba, 0xb3, 0x7d, 0xd6, 0x73, 0x2e, 0xc8, 0x27, 0x22, 0x3c, 0x3c, - 0x8f, 0x18, 0xe1, 0x62, 0xca, 0x0b, 0xe8, 0x38, 0x21, 0x2b, 0x43, 0x8e, - 0x5a, 0x26, 0x4e, 0x2a, 0xc8, 0xee, 0xd8, 0x9c, 0xe2, 0x04, 0xea, 0x1b, - 0xfe, 0xf3, 0xab, 0x0f, 0x08, 0x70, 0x60, 0x51, 0x32, 0xf3, 0xfd, 0x31, - 0xac, 0x7f, 0xa8, 0x0c, 0x4b, 0x4b, 0xce, 0xe4, 0xc2, 0x0c, 0x8f, 0xeb, - 0x0d, 0xad, 0xfb, 0xc3, 0x0e, 0x66, 0x43, 0xa3, 0xf0, 0x7c, 0xd2, 0x94, - 0x5b, 0xb6, 0xca, 0xa0, 0xda, 0x3e, 0x09, 0xb2, 0x38, 0x76, 0x7f, 0x40, - 0x7f, 0x2f, 0x4f, 0x06, 0x01, 0x62, 0xf4, 0x0c, 0x83, 0xd1, 0xc7, 0x12, - 0xc3, 0x40, 0xd7, 0x1a, 0xdd, 0xf9, 0xc7, 0x1a, 0x5c, 0x2c, 0x36, 0x58, - 0xdd, 0x0d, 0x59, 0xd9, 0xb2, 0x96, 0x73, 0x8d, 0xde, 0xcb, 0xd0, 0xc4, - 0x24, 0x80, 0x9b, 0xc2, 0xcd, 0xb4, 0xd7, 0xd9, 0x19, 0x02, 0x43, 0x3e, - 0x14, 0x70, 0x65, 0x1a, 0xf1, 0x74, 0xf3, 0xad, 0xf8, 0xcb, 0x7d, 0xf7, - 0xf8, 0x9d, 0x70, 0x22, 0x7a, 0x84, 0xe6, 0xd7, 0x54, 0x8c, 0xdc, 0x9e, - 0x8d, 0x58, 0x46, 0x5b, 0x1d, 0x88, 0x76, 0xd8, 0x03, 0xcd, 0xaa, 0x60, - 0xed, 0x9f, 0x43, 0x4d, 0x3b, 0x7e, 0xe6, 0x19, 0x21, 0x8c, 0xc8, 0x00, - 0x50, 0xc9, 0x7c, 0x4a, 0xa5, 0xa3, 0xe4, 0xc0, 0x0e, 0xac, 0x60, 0xe2, - 0xd6, 0x8a, 0xb6, 0xbf, 0x14, 0xa7, 0x6e, 0x0c, 0x13, 0xe8, 0x71, 0x9c, - 0x73, 0x52, 0xe7, 0x44, 0xf9, 0x96, 0xcc, 0x8f, 0x32, 0x42, 0x0d, 0x54, - 0x68, 0x41, 0x8d, 0x9b, 0x73, 0x8a, 0x02, 0xe9, 0x31, 0xc7, 0xf4, 0xf0, - 0x5c, 0xc6, 0xba, 0x23, 0x5a, 0x7a, 0xc5, 0x8b, 0x72, 0x41, 0xd5, 0xfd, - 0xaf, 0x2e, 0xbe, 0x0e, 0xfe, 0x12, 0x91, 0x78, 0xa8, 0x3b, 0x44, 0x8d, - 0x6d, 0x20, 0xec, 0x19, 0x01, 0xd2, 0x75, 0xcc, 0x41, 0xd1, 0x4c, 0x8e, - 0xf4, 0x0a, 0x6a, 0x46, 0x86, 0x82, 0x4b, 0x9e, 0x2a, 0x7b, 0xb9, 0xa7, - 0x04, 0x20, 0xfa, 0xa2, 0xbc, 0xea, 0x60, 0x62, 0xea, 0x12, 0x74, 0x32, - 0x52, 0x50, 0x82, 0xb8, 0xf7, 0x16, 0x9c, 0x88, 0x7a, 0xe7, 0x5b, 0xb3, - 0x91, 0x7e, 0x48, 0xc5, 0xd8, 0x40, 0x9e, 0xd2, 0x12, 0xc4, 0x66, 0x00, - 0xd7, 0x3a, 0x65, 0xc7, 0xd6, 0xe0, 0xd6, 0x78, 0x45, 0xce, 0x0d, 0xb6, - 0x6f, 0xa3, 0xed, 0x3b, 0xfc, 0x98, 0xb7, 0x27, 0x6e, 0x5b, 0xdd, 0x25, - 0xc8, 0xc6, 0x5c, 0xab, 0xb2, 0x61, 0x0d, 0x44, 0xa6, 0xd3, 0xd4, 0xcb, - 0xbd, 0xc5, 0xd9, 0x5d, 0x33, 0x29, 0x13, 0x02, 0x18, 0x18, 0x54, 0x5c, - 0xa9, 0xa0, 0x1c, 0x82, 0x84, 0xb6, 0x7e, 0xc3, 0x60, 0xd0, 0x6d, 0x8b, - 0x64, 0x3d, 0x38, 0x86, 0x78, 0x23, 0x15, 0x90, 0x4d, 0x00, 0xc3, 0x79, - 0xa8, 0xaf, 0x29, 0xa5, 0xef, 0xf2, 0xc2, 0x95, 0x51, 0xb0, 0xed, 0x28, - 0x75, 0x93, 0x6a, 0x63, 0x32, 0xd2, 0x46, 0xc6, 0x89, 0x1c, 0xf0, 0x85, - 0x9d, 0xc0, 0xae, 0x60, 0x23, 0x11, 0x55, 0x27, 0xc4, 0x72, 0xc3, 0x38, - 0x1f, 0x34, 0xad, 0xdb, 0xd9, 0x28, 0x79, 0xb7, 0x7e, 0xfa, 0xd7, 0x30, - 0x19, 0x4a, 0x64, 0xf5, 0x47, 0xff, 0xcd, 0x5e, 0x5d, 0x93, 0x91, 0x1e, - 0x07, 0xfe, 0x0a, 0x24, 0xa2, 0xfa, 0xe9, 0x13, 0xeb, 0xc9, 0xad, 0x0f, - 0xf2, 0x90, 0x83, 0x47, 0x22, 0x44, 0x48, 0x6f, 0x0f, 0xa5, 0x34, 0xc2, - 0x69, 0x4e, 0x20, 0x82, 0x69, 0x92, 0x35, 0xac, 0xe7, 0xca, 0x14, 0x9e, - 0xf1, 0xa8, 0x4f, 0x45, 0x60, 0x3c, 0x73, 0xbe, 0xd1, 0x41, 0xdf, 0xba, - 0x26, 0x9c, 0x5b, 0x41, 0x8b, 0x9e, 0x97, 0x48, 0xbd, 0xef, 0xc1, 0x56, - 0x96, 0xba, 0x84, 0x1e, 0xfb, 0x82, 0xb9, 0xde, 0xca, 0xfa, 0x85, 0x19, - 0xc9, 0x90, 0x87, 0x65, 0x03, 0x21, 0x17, 0x1a, 0x33, 0x8c, 0x2b, 0x33, - 0xa0, 0xba, 0x7d, 0x11, 0x0b, 0x9a, 0x92, 0xcf, 0x8a, 0xed, 0x30, 0x3e, - 0x8c, 0x79, 0x33, 0x6e, 0xec, 0xbc, 0x79, 0x7c, 0x90, 0xde, 0x61, 0x38, - 0x53, 0x41, 0x8f, 0x21, 0xe3, 0x7d, 0xd5, 0xe2, 0x1c, 0xc2, 0x99, 0xd2, - 0xdb, 0x89, 0x76, 0x5f, 0x59, 0xfe, 0x65, 0x99, 0x4b, 0x2a, 0x57, 0x51, - 0xd8, 0xfd, 0xbf, 0xd9, 0xaf, 0xc1, 0x19, 0x9d, 0xa1, 0x3e, 0x4f, 0x83, - 0x42, 0x0f, 0xfb, 0xa9, 0x8c, 0x84, 0x85, 0x4a, 0x97, 0x69, 0x48, 0x34, - 0x0c, 0xe8, 0x57, 0xa2, 0x3f, 0x64, 0x04, 0x99, 0x44, 0x38, 0x20, 0x0c, - 0x02, 0x1c, 0x4a, 0xc6, 0xd5, 0xc1, 0x96, 0x67, 0x16, 0x77, 0xd1, 0x83, - 0xf2, 0x11, 0x7f, 0xb9, 0x99, 0x9b, 0x79, 0x00, 0x8d, 0xc0, 0x99, 0x7c, - 0xed, 0x56, 0x76, 0x5c, 0xe8, 0x28, 0x22, 0x2c, 0xfb, 0x55, 0x2d, 0x5f, - 0xef, 0xae, 0x05, 0x56, 0x77, 0x5f, 0xec, 0x5b, 0x8f, 0xf1, 0x5b, 0xc8, - 0x9d, 0x44, 0x4e, 0x1b, 0xce, 0xe7, 0x40, 0x44, 0x6e, 0xda, 0xf4, 0x28, - 0x0f, 0xac, 0x54, 0x48, 0xdd, 0x77, 0x89, 0x1e, 0xc6, 0x0b, 0x2e, 0x2b, - 0xe3, 0xe9, 0xdc, 0x78, 0x7d, 0xf2, 0x5a, 0xa6, 0x3e, 0x94, 0x96, 0x31, - 0xa0, 0xc8, 0xc4, 0xdc, 0xba, 0x9e, 0xfa, 0xfd, 0x57, 0xff, 0xa1, 0xe8, - 0x11, 0x5d, 0x8f, 0x08, 0xfb, 0x21, 0x61, 0xcf, 0x74, 0x2a, 0xc9, 0x50, - 0x28, 0xb5, 0x04, 0xb3, 0xad, 0xf0, 0x7a, 0x67, 0x25, 0x8e, 0xa3, 0x6d, - 0xa5, 0x0f, 0x67, 0xe0, 0x0e, 0x44, 0x76, 0xc4, 0x87, 0xf5, 0x61, 0x32, - 0xef, 0x28, 0x82, 0x4f, 0x49, 0x50, 0xfb, 0x34, 0x1f, 0xae, 0x02, 0x1f, - 0xc1, 0xf3, 0x82, 0xd6, 0x56, 0x0d, 0xca, 0xe0, 0x80, 0xc6, 0x8e, 0x89, - 0xd8, 0x3b, 0x64, 0xb4, 0x1b, 0x46, 0x76, 0x3a, 0x6e, 0x44, 0x8a, 0x42, - 0x88, 0x93, 0x11, 0x7c, 0x24, 0xae, 0xc8, 0x1d, 0x7f, 0x9b, 0x04, 0xc0, - 0x7b, 0x45, 0x23, 0x6f, 0xa0, 0x35, 0x78, 0xad, 0x33, 0xb8, 0xda, 0x3c, - 0xf6, 0xd5, 0x14, 0x60, 0xb0, 0x73, 0x74, 0xf6, 0xb8, 0x98, 0xee, 0x0f, - 0xfe, 0x27, 0x5f, 0x04, 0x1a, 0x27, 0x67, 0xbb, 0x54, 0x93, 0xa0, 0xad, - 0x3f, 0xf7, 0xc1, 0x77, 0xe2, 0x7d, 0x57, 0xa8, 0x49, 0x68, 0x13, 0xf0, - 0xb2, 0x17, 0x04, 0xdd, 0x56, 0x9b, 0x73, 0xed, 0x36, 0xae, 0x6d, 0xc8, - 0x06, 0x25, 0xd6, 0x2d, 0xdc, 0x67, 0x4e, 0x6c, 0xcb, 0x39, 0x33, 0x0b, - 0x3e, 0x6d, 0xd8, 0xdb, 0x7a, 0x0f, 0x78, 0x2e, 0xd1, 0xd6, 0x6c, 0xc9, - 0xb2, 0xbf, 0xce, 0xf3, 0xe3, 0x32, 0xce, 0x9f, 0xec, 0x1d, 0x06, 0x6e, - 0xfe, 0xd9, 0x91, 0x5e, 0x64, 0xc0, 0x47, 0x7f, 0x1f, 0xd0, 0x29, 0x2e, - 0x52, 0x43, 0x25, 0x84, 0x2a, 0x77, 0xd4, 0xb9, 0x67, 0x9b, 0x7d, 0x99, - 0x73, 0x15, 0x0e, 0xd5, 0x6f, 0x06, 0x4b, 0xbc, 0x3a, 0xcf, 0x1b, 0xd9, - 0xe4, 0x81, 0xec, 0x1d, 0xb6, 0xc7, 0x3d, 0xaa, 0x0d, 0x18, 0x81, 0x0f, - 0x37, 0xcb, 0x95, 0x18, 0xff, 0x44, 0xb6, 0x81, 0x64, 0xb2, 0x8b, 0x82, - 0x4c, 0x4e, 0x89, 0x95, 0x4c, 0x50, 0x67, 0xb3, 0x09, 0xba, 0x06, 0xcc, - 0x19, 0xb8, 0xf2, 0x5a, 0xec, 0xcb, 0xdb, 0x09, 0x2e, 0x83, 0x64, 0xf4, - 0x1f, 0x67, 0x19, 0x49, 0x42, 0xec, 0x9d, 0xef, 0xe4, 0x85, 0x78, 0xca, - 0x88, 0xfb, 0xeb, 0xa8, 0x2c, 0xed, 0x2f, 0xaa, 0xad, 0xc3, 0xa3, 0x9d, - 0x2b, 0x2a, 0x2f, 0xd9, 0x72, 0x3f, 0x20, 0x0a, 0xcb, 0xb6, 0x01, 0x17, - 0xd7, 0xd4, 0x13, 0x7c, 0xf2, 0x7b, 0x37, 0x8f, 0xd0, 0x6c, 0x00, 0xf3, - 0xc8, 0xcf, 0xca, 0x22, 0x35, 0x36, 0x29, 0xdd, 0x22, 0xc6, 0x45, 0x78, - 0x5b, 0x52, 0x56, 0x3b, 0xe5, 0x7a, 0x6f, 0x3c, 0xbc, 0xa9, 0x04, 0xb9, - 0x19, 0x46, 0xa2, 0xcc, 0xd0, 0x42, 0x31, 0xf8, 0xcb, 0x72, 0x9b, 0x52, - 0x72, 0xce, 0xf5, 0xa7, 0x81, 0xa2, 0x14, 0xea, 0x2d, 0x30, 0x7f, 0x0d, - 0xc9, 0xc6, 0xd7, 0xe7, 0x45, 0x84, 0x94, 0x98, 0xb7, 0x8d, 0xdc, 0x19, - 0x65, 0x5b, 0xe1, 0x80, 0x98, 0x89, 0xbd, 0xb9, 0x65, 0x64, 0x1b, 0x7e, - 0xdd, 0x4d, 0x43, 0x4a, 0x1d, 0x3b, 0x18, 0x4f, 0x9b, 0x8d, 0x54, 0xab, - 0xd2, 0x7c, 0xd5, 0xf0, 0x09, 0xd0, 0xf9, 0xf1, 0xad, 0x5e, 0x64, 0x7d, - 0x7b, 0x11, 0xf3, 0xe4, 0x5f, 0x67, 0x7c, 0x50, 0x6d, 0x85, 0x2d, 0x1a, - 0xfa, 0x1b, 0x61, 0xd1, 0xf5, 0xdd, 0x60, 0x38, 0xc9, 0x35, 0xc1, 0xfe, - 0x8d, 0x77, 0x2e, 0xa6, 0x00, 0x54, 0x95, 0xe2, 0xa7, 0x04, 0xe8, 0xef, - 0xf3, 0x5a, 0x42, 0xa0, 0xb2, 0xe3, 0xa0, 0x1f, 0x71, 0xf8, 0xfe, 0x03, - 0x5e, 0x99, 0xf5, 0xfd, 0x73, 0x12, 0x96, 0x46, 0x4f, 0x9f, 0x0b, 0x93, - 0xc6, 0x04, 0x7d, 0xba, 0xba, 0xc9, 0x7b, 0xec, 0x56, 0x60, 0x5e, 0x71, - 0x8a, 0x4e, 0x9a, 0xcd, 0x6a, 0x03, 0xc2, 0xce, 0xc5, 0x18, 0x3f, 0x6a, - 0x74, 0xe0, 0x31, 0xb4, 0xcb, 0x27, 0x84, 0xe4, 0x17, 0x91, 0xa3, 0xdc, - 0x3c, 0x19, 0xd0, 0xb1, 0x22, 0x58, 0x89, 0x11, 0x88, 0xb1, 0x47, 0x5c, - 0xf9, 0xe5, 0x33, 0xb8, 0xb9, 0x53, 0x3e, 0x60, 0xee, 0xc1, 0x48, 0x5a, - 0xa9, 0xa5, 0x47, 0x12, 0xa3, 0xa2, 0x19, 0x0d, 0xaa, 0xa3, 0xca, 0xe9, - 0x55, 0xd6, 0x23, 0xfe, 0x27, 0xf7, 0x1d, 0x84, 0xbc, 0xd7, 0x68, 0x87, - 0xba, 0xaf, 0xd0, 0x01, 0x8f, 0xf6, 0xa0, 0x18, 0xaa, 0xdf, 0x88, 0x3d, - 0x33, 0xf8, 0x15, 0x61, 0x5d, 0xa5, 0xf9, 0x28, 0x35, 0xab, 0x28, 0xf9, - 0xf4, 0xe0, 0x9a, 0x34, 0xa5, 0x6d, 0xa1, 0x94, 0x66, 0xa8, 0xe5, 0x21, - 0xee, 0x33, 0xbf, 0xb1, 0xcb, 0xda, 0x40, 0x42, 0x0d, 0xea, 0xac, 0x2a, - 0x4f, 0xd4, 0x9c, 0x16, 0xe0, 0x05, 0xcf, 0xb1, 0x9a, 0x34, 0x77, 0x95, - 0x9b, 0xba, 0x2a, 0xfc, 0x76, 0xe9, 0x06, 0x51, 0xca, 0xcc, 0x64, 0x93, - 0xd5, 0x23, 0x1a, 0x34, 0x64, 0x3e, 0x2f, 0xdd, 0xfb, 0xb9, 0xff, 0xdd, - 0xdd, 0xff, 0xbe, 0xf3, 0x15, 0x92, 0x1c, 0x96, 0xb1, 0x8c, 0xab, 0xf6, - 0x3e, 0xf3, 0x32, 0x39, 0x26, 0xfe, 0xc6, 0x40, 0x6b, 0xbf, 0xc1, 0xa5, - 0x33, 0x03, 0x50, 0x3b, 0x2f, 0xd1, 0x11, 0xe3, 0x15, 0xc6, 0xb3, 0x69, - 0x35, 0x2a, 0xad, 0xd1, 0xf8, 0xb6, 0x8f, 0x18, 0x82, 0x96, 0xb3, 0x53, - 0x2a, 0xf1, 0xa5, 0xac, 0x72, 0x3e, 0x60, 0xc1, 0x69, 0xca, 0x45, 0x3a, - 0x0d, 0xaa, 0x4a, 0x67, 0xe9, 0x1d, 0x4a, 0xba, 0xb3, 0xcf, 0xbf, 0x5c, - 0xa5, 0x0a, 0x11, 0x36, 0xf4, 0x08, 0x49, 0x93, 0xd0, 0xa1, 0x19, 0x0d, - 0x9b, 0x21, 0xb6, 0x90, 0x1c, 0x84, 0xac, 0x0b, 0xd5, 0xd7, 0x2c, 0x08, - 0x79, 0x18, 0x7b, 0x06, 0xfb, 0xeb, 0x47, 0x1b, 0xbe, 0x4c, 0xef, 0x09, - 0x74, 0x71, 0xe3, 0xf1, 0x2e, 0x0c, 0x50, 0x8d, 0xcb, 0x3b, 0x48, 0xb7, - 0x6a, 0x05, 0x5f, 0xb7, 0x7f, 0xab, 0x11, 0xf9, 0x8e, 0x1d, 0x9d, 0x62, - 0xf8, 0x61, 0x40, 0x9f, 0xfe, 0x2c, 0x7d, 0xf9, 0x2a, 0xf7, 0x6b, 0xcf, - 0x7a, 0x08, 0x1b, 0x4a, 0x58, 0xcd, 0x6b, 0x75, 0x4e, 0x5e, 0xe5, 0x12, - 0xf0, 0xe0, 0x6f, 0x90, 0x9d, 0x9e, 0xd8, 0x46, 0x27, 0xc1, 0x9b, 0xe7, - 0x7b, 0xc7, 0x58, 0xe5, 0x29, 0x24, 0xda, 0xab, 0x3d, 0xaa, 0x26, 0xd0, - 0x75, 0x40, 0x22, 0xc2, 0x08, 0x69, 0x41, 0x0a, 0xe5, 0x25, 0xb6, 0xdf, - 0x81, 0x31, 0x81, 0x04, 0xee, 0x3f, 0x48, 0x1a, 0x55, 0x60, 0xb6, 0xb1, - 0x68, 0xab, 0xd0, 0x6d, 0xc0, 0xd0, 0xbb, 0xef, 0x4e, 0xb9, 0xfe, 0x61, - 0xfd, 0x00, 0xbf, 0x58, 0x33, 0x0e, 0x62, 0x4e, 0xb2, 0xa7, 0x61, 0x0b, - 0x98, 0xaf, 0xb8, 0xa3, 0x12, 0x5f, 0xc2, 0x73, 0x2c, 0x72, 0x0b, 0x74, - 0x3b, 0x7f, 0xdf, 0x97, 0xca, 0x88, 0x8a, 0x5a, 0xb6, 0x1b, 0x17, 0xbf, - 0xbc, 0xb8, 0xe8, 0x72, 0x19, 0xcc, 0x8c, 0x82, 0xb2, 0x36, 0xec, 0x4c, - 0x5f, 0xca, 0xde, 0x17, 0x6e, 0xd0, 0x6c, 0x3d, 0x29, 0x6a, 0x58, 0x1e, - 0x4a, 0x3d, 0xf7, 0xff, 0x0f, 0x7f, 0x20, 0x04, 0xf6, 0x58, 0x95, 0x00, - 0xb2, 0x46, 0x1e, 0x90, 0x08, 0x46, 0x15, 0x70, 0x6e, 0x52, 0xc1, 0x96, - 0x6f, 0x35, 0xb8, 0x74, 0x36, 0xf5, 0x00, 0xe1, 0xbd, 0xad, 0x69, 0x0e, - 0xc0, 0xc6, 0x3c, 0x07, 0x28, 0xd6, 0x7c, 0xd8, 0xaa, 0x70, 0xea, 0x3e, - 0x0c, 0x57, 0x4c, 0x4d, 0xa0, 0x5c, 0x7e, 0x15, 0x44, 0xdd, 0xf7, 0x09, - 0x82, 0xec, 0xc8, 0x30, 0x1c, 0xc6, 0x19, 0x8b, 0xb5, 0x21, 0x32, 0x16, - 0xda, 0x69, 0x72, 0x75, 0x0d, 0x96, 0x66, 0xf1, 0x7d, 0x86, 0x1d, 0xda, - 0x4c, 0x3e, 0xeb, 0x29, 0x7c, 0x3d, 0x31, 0x6c, 0x3a, 0x62, 0x92, 0x09, - 0xab, 0xa9, 0xd6, 0x38, 0xf6, 0x25, 0x4c, 0x2f, 0x1c, 0xbb, 0x3f, 0x62, - 0x46, 0x0a, 0x80, 0x55, 0x20, 0x2d, 0x7f, 0xd8, 0x0e, 0x7c, 0xe5, 0xdc, - 0x13, 0xfd, 0x5f, 0x27, 0x52, 0xd2, 0xe0, 0x93, 0x4b, 0x06, 0x47, 0x20, - 0xc4, 0xb3, 0x82, 0xc2, 0x20, 0x79, 0x25, 0xe0, 0x06, 0x23, 0x89, 0x82, - 0xd2, 0xa3, 0x52, 0xe8, 0xc7, 0xbb, 0x5f, 0xb2, 0x94, 0x0a, 0xa3, 0x5d, - 0x91, 0xd3, 0x63, 0x59, 0x97, 0x7a, 0xa1, 0xb7, 0x20, 0x2e, 0xb2, 0x70, - 0x1e, 0x34, 0x16, 0x92, 0xdd, 0xf0, 0x3b, 0x20, 0xa6, 0x48, 0x26, 0x27, - 0x8c, 0xfc, 0xda, 0xfb, 0x96, 0xda, 0x1c, 0x41, 0x78, 0xc1, 0xf3, 0x5e, - 0x09, 0x29, 0x61, 0x5b, 0x23, 0xc1, 0xaf, 0xa3, 0x8d, 0xb4, 0xe0, 0x76, - 0x63, 0x55, 0x4b, 0x93, 0xa4, 0xa8, 0xad, 0x3f, 0xbb, 0xd0, 0x16, 0xf6, - 0x7e, 0x0a, 0x4d, 0xbb, 0x61, 0xac, 0xab, 0x47, 0xc4, 0x95, 0xb3, 0xf9, - 0x4a, 0x60, 0xfc, 0x47, 0x6d, 0x42, 0x20, 0x1f, 0xc5, 0x29, 0x8e, 0x62, - 0x4e, 0x8e, 0xf4, 0xe9, 0x3b, 0x8c, 0x90, 0xff, 0x98, 0x15, 0xc5, 0x79, - 0xd0, 0xb7, 0x98, 0xa4, 0xff, 0x7f, 0x60, 0x1e, 0xc5, 0x61, 0x3f, 0x7d, - 0x29, 0xbc, 0xb5, 0x9a, 0xd9, 0x95, 0x91, 0xca, 0x99, 0x57, 0xae, 0x95, - 0x4e, 0x50, 0x6b, 0x3f, 0x0a, 0x41, 0x65, 0x95, 0xf3, 0x09, 0x65, 0x4e, - 0x44, 0x39, 0xc5, 0x19, 0x2a, 0x74, 0x5a, 0x5c, 0x42, 0x66, 0x95, 0x13, - 0x2e, 0xe9, 0x12, 0x80, 0x01, 0x22, 0xe4, 0xec, 0xfd, 0x3b, 0x6e, 0x61, - 0x07, 0xb0, 0x3d, 0x40, 0xc7, 0xd6, 0x6e, 0xd6, 0xa3, 0xc3, 0x09, 0xeb, - 0x72, 0xe5, 0xe2, 0x31, 0x0f, 0xef, 0x5b, 0x46, 0xaa, 0xa5, 0xf1, 0x91, - 0x58, 0x0b, 0x07, 0x29, 0x72, 0xdc, 0x98, 0xb9, 0x9d, 0x6a, 0x1e, 0x2c, - 0x66, 0xc3, 0x05, 0x51, 0xd7, 0x92, 0x02, 0xcc, 0x9f, 0xc7, 0xdf, 0x44, - 0x53, 0xf5, 0x07, 0x97, 0xf5, 0xa5, 0x57, 0xa4, 0x17, 0x29, 0xa1, 0x3f, - 0x8e, 0xb9, 0x43, 0xcc, 0x78, 0xba, 0x1d, 0x97, 0xba, 0x0b, 0x4c, 0x38, - 0x66, 0x52, 0x92, 0x15, 0xfc, 0x95, 0xe4, 0xb5, 0x00, 0x0f, 0xeb, 0xaa, - 0x27, 0x4e, 0x4f, 0x9c, 0x44, 0x5b, 0x26, 0x56, 0x26, 0xe9, 0xb2, 0x6a, - 0x20, 0x1e, 0xf0, 0x8a, 0x40, 0xcd, 0x1e, 0xb1, 0xd2, 0x90, 0xb2, 0xf6, - 0xe7, 0x36, 0x62, 0x1c, 0x4c, 0xa4, 0x36, 0xec, 0x29, 0xd7, 0x28, 0xf4, - 0xb0, 0x02, 0xdf, 0x27, 0x7f, 0x48, 0xee, 0xd0, 0x6f, 0x24, 0x3b, 0x22, - 0x6c, 0x9a, 0xe1, 0xcf, 0x6d, 0x40, 0x30, 0x09, 0x73, 0xd5, 0x19, 0xcb, - 0x63, 0xdc, 0x2c, 0x10, 0xd4, 0x61, 0xdf, 0x12, 0xc1, 0x4c, 0xd8, 0x2e, - 0x0e, 0xf0, 0x2b, 0x30, 0xec, 0x6c, 0x6b, 0xa4, 0x65, 0x47, 0xbd, 0x99, - 0x56, 0x3d, 0xcd, 0xc8, 0x3b, 0xec, 0x3b, 0x35, 0x45, 0x32, 0x5a, 0x34, - 0x4e, 0xd3, 0x7d, 0x21, 0xf8, 0xa9, 0xb3, 0x98, 0x7f, 0x9a, 0xc8, 0x2d, - 0xf0, 0x4e, 0xb1, 0x90, 0x9c, 0x8a, 0xbe, 0x5f, 0x96, 0x44, 0xa9, 0xb3, - 0xfe, 0x6e, 0x4a, 0x2c, 0x03, 0x1b, 0xeb, 0xb8, 0x40, 0x8c, 0x04, 0xdf, - 0x2a, 0xc9, 0x3c, 0xca, 0x80, 0x2d, 0xe0, 0x3d, 0x79, 0x08, 0x36, 0x63, - 0xf3, 0x56, 0xd3, 0xd0, 0xfe, 0xc2, 0x66, 0xa8, 0x6a, 0xb8, 0x75, 0x52, - 0xb7, 0xb8, 0xd1, 0xaa, 0x16, 0x11, 0xba, 0x9f, 0x40, 0xb9, 0xdd, 0xac, - 0x7b, 0x3a, 0xd5, 0xfa, 0x6b, 0xb1, 0x05, 0x85, 0x6d, 0x9a, 0xda, 0x84, - 0xd0, 0xdf, 0x52, 0x22, 0xa7, 0xe4, 0x3e, 0x43, 0x54, 0x75, 0xa2, 0x4b, - 0xce, 0x95, 0xc9, 0xbc, 0xeb, 0xd4, 0x2a, 0xa1, 0x34, 0x4e, 0xf5, 0xb4, - 0x7d, 0x7a, 0xbd, 0x41, 0x0c, 0xc8, 0x71, 0x36, 0xf2, 0x15, 0xdb, 0x3e, - 0x99, 0x8b, 0x6c, 0x7f, 0x5b, 0x5a, 0x0d, 0x6a, 0x45, 0xb5, 0xc1, 0xbf, - 0x45, 0xe8, 0x2c, 0x15, 0x34, 0x2f, 0x1b, 0x86, 0x68, 0x29, 0xad, 0xa1, - 0x65, 0xc6, 0x47, 0x1a, 0xd4, 0x20, 0xe2, 0x31, 0x7f, 0xf4, 0x50, 0x0d, - 0x46, 0x87, 0x19, 0xcf, 0x18, 0x68, 0x03, 0x45, 0xeb, 0xf8, 0xd6, 0xb5, - 0x1e, 0x48, 0xd8, 0x9d, 0x11, 0x38, 0xb1, 0x6f, 0x8c, 0xc7, 0x0c, 0x4f, - 0x0e, 0x35, 0x99, 0xc2, 0x98, 0x5a, 0xb7, 0x94, 0xfd, 0xa9, 0xda, 0xcc, - 0x9d, 0x70, 0xde, 0x00, 0x94, 0x95, 0x00, 0x53, 0xe9, 0x04, 0xce, 0xcd, - 0x61, 0xb2, 0xa9, 0x2a, 0x02, 0x05, 0xbf, 0x19, 0x3d, 0x89, 0x42, 0x7c, - 0x37, 0xa7, 0x30, 0x6b, 0x0f, 0x50, 0xce, 0x54, 0xa8, 0x8e, 0x66, 0xa2, - 0x43, 0x4f, 0x42, 0x53, 0x7a, 0x79, 0x87, 0xd1, 0x8d, 0xf5, 0xd9, 0xe7, - 0xc5, 0x70, 0x8c, 0x2d, 0xcc, 0xf8, 0xc0, 0x77, 0x84, 0x4c, 0x37, 0x65, - 0x74, 0x50, 0xbb, 0xca, 0xcd, 0xbe, 0xd6, 0xf5, 0x33, 0xe5, 0xa8, 0x4b, - 0x2c, 0xaa, 0x44, 0xd9, 0xa8, 0x4a, 0xe6, 0x0e, 0x7d, 0xe7, 0x37, 0x0e, - 0x9f, 0x2b, 0xff, 0x7f, 0x65, 0xed, 0x0a, 0x21, 0xf6, 0x33, 0xce, 0xac, - 0xad, 0xd5, 0xcb, 0x29, 0xf9, 0x2a, 0xa8, 0x9f, 0xd7, 0x83, 0xc3, 0x5a, - 0xe4, 0xfa, 0x65, 0x36, 0x6d, 0x41, 0xe7, 0xb1, 0x96, 0x15, 0xde, 0x6f, - 0x4e, 0x87, 0xff, 0x74, 0xab, 0xf2, 0x6e, 0x35, 0xd7, 0x1f, 0x03, 0x23, - 0xbd, 0x48, 0x17, 0xb5, 0xb0, 0x29, 0x5e, 0x14, 0x45, 0x8e, 0x83, 0x1a, - 0xab, 0xd2, 0xc1, 0xa3, 0x0b, 0xbd, 0xb1, 0x58, 0x7e, 0x98, 0x5d, 0x3e, - 0x43, 0x5b, 0xf8, 0x46, 0xad, 0xb1, 0x35, 0x21, 0x0c, 0xd8, 0x92, 0x4a, - 0x14, 0x8b, 0x85, 0xbe, 0x83, 0x46, 0x10, 0x34, 0xe8, 0xe1, 0x79, 0x89, - 0x7b, 0x0b, 0xc2, 0x9f, 0xe7, 0x1a, 0x5f, 0x14, 0x64, 0x49, 0x80, 0x64, - 0xb5, 0xe4, 0x1d, 0x72, 0x7f, 0x83, 0xd5, 0xbc, 0xaf, 0x5c, 0x7c, 0x84, - 0x5a, 0x0b, 0x3f, 0xd9, 0xd8, 0x14, 0xea, 0x62, 0x84, 0x1c, 0x09, 0x73, - 0x37, 0x0e, 0xc8, 0xd6, 0xfd, 0x7c, 0xc7, 0xed, 0x96, 0xf2, 0x9b, 0x8f, - 0x93, 0xf7, 0xdc, 0xba, 0x8e, 0x28, 0x7a, 0x4c, 0xeb, 0xd1, 0xb3, 0xd2, - 0x64, 0x40, 0x87, 0x4f, 0xf5, 0x8b, 0x77, 0x44, 0x20, 0x70, 0xed, 0x2b, - 0xe9, 0xac, 0x38, 0x16, 0x8f, 0x0b, 0xf5, 0xe5, 0x8c, 0xec, 0x19, 0x4e, - 0x8f, 0xae, 0x04, 0xbd, 0xeb, 0x8a, 0x64, 0xa3, 0x8f, 0x98, 0xe0, 0x7a, - 0xed, 0xe7, 0x54, 0x44, 0x90, 0x5d, 0xd5, 0x4a, 0x5b, 0x89, 0xfc, 0x59, - 0x62, 0x34, 0xa7, 0x78, 0x3e, 0x5c, 0x00, 0x68, 0xe7, 0x72, 0x82, 0xe8, - 0x61, 0xf0, 0xe6, 0xa9, 0x65, 0xc7, 0xa6, 0x09, 0x97, 0x4e, 0x39, 0x31, - 0x68, 0x51, 0x22, 0xa6, 0x3c, 0x53, 0x7b, 0x3e, 0x54, 0x96, 0xba, 0x50, - 0xd5, 0x89, 0x24, 0x60, 0x6d, 0xf3, 0xba, 0x06, 0x14, 0x24, 0x21, 0xb8, - 0xc0, 0x38, 0x92, 0x4a, 0x19, 0x3a, 0x37, 0xe5, 0xfe, 0x29, 0x9b, 0x3c, - 0xc7, 0x0d, 0x12, 0x84, 0x40, 0xa0, 0x0f, 0x44, 0x77, 0x35, 0x94, 0x75, - 0x4a, 0x77, 0xcf, 0xb5, 0x5e, 0xde, 0x26, 0x08, 0x58, 0x9e, 0x2c, 0x14, - 0x39, 0x53, 0x2b, 0xcb, 0x89, 0x31, 0xd5, 0xba, 0x17, 0x10, 0x39, 0x20, - 0xe7, 0xc6, 0x1a, 0x83, 0x58, 0xb1, 0x22, 0x87, 0xeb, 0x37, 0xb3, 0xf4, - 0xc4, 0x22, 0xb5, 0xd0, 0x29, 0xaa, 0x0f, 0xca, 0x5d, 0x09, 0xd9, 0xfa, - 0x08, 0xa2, 0x42, 0xcf, 0x68, 0xa1, 0x06, 0xf9, 0x22, 0x41, 0xf2, 0xf4, - 0x8a, 0xb8, 0x53, 0x52, 0xca, 0xf9, 0x88, 0xa4, 0xb5, 0x5c, 0x8d, 0x84, - 0x1a, 0xcc, 0x6f, 0xa2, 0x32, 0xac, 0x9f, 0xc5, 0x19, 0x27, 0x6a, 0xfc, - 0x8b, 0xe0, 0x18, 0x73, 0xd8, 0xac, 0x8b, 0x9a, 0xa3, 0x8f, 0xa3, 0x60, - 0xda, 0x5e, 0xbd, 0xce, 0xe9, 0xd0, 0x82, 0xaa, 0xb4, 0x8e, 0xab, 0xd4, - 0x2a, 0x01, 0x25, 0x93, 0xa2, 0x60, 0xb8, 0xa5, 0x6a, 0x4a, 0xee, 0xc2, - 0x7d, 0x0a, 0x10, 0xc8, 0x8b, 0xa1, 0x49, 0xdd, 0x15, 0x85, 0xff, 0x5f, - 0x56, 0x89, 0x25, 0x7f, 0x91, 0xe7, 0x87, 0xc6, 0x35, 0x41, 0xfc, 0x54, - 0x2b, 0x6a, 0xe9, 0xcd, 0x25, 0xbb, 0xea, 0x77, 0x74, 0x14, 0xb6, 0x2d, - 0x80, 0x31, 0x24, 0x1a, 0x44, 0x97, 0xb9, 0x9d, 0xf2, 0xd8, 0x32, 0x08, - 0x4b, 0x33, 0x5c, 0x40, 0xf2, 0xf0, 0xc8, 0xa9, 0xa5, 0xe3, 0x33, 0x1c, - 0x0c, 0x1d, 0x17, 0x45, 0xb3, 0x41, 0x17, 0xad, 0xee, 0x25, 0x86, 0x71, - 0xc0, 0x57, 0x26, 0x25, 0x50, 0x8d, 0x77, 0x4e, 0x9a, 0xe1, 0xb8, 0xc9, - 0xac, 0x84, 0xa9, 0x67, 0xf1, 0xb4, 0xdd, 0xfb, 0x3c, 0x32, 0xbf, 0x7f, - 0xa2, 0xba, 0x88, 0x2c, 0xb6, 0xb0, 0x2f, 0x57, 0xc9, 0x65, 0x51, 0xaf, - 0x1e, 0x23, 0x04, 0x4f, 0xcf, 0x0e, 0xdd, 0x83, 0xce, 0x52, 0x04, 0x2c, - 0x4d, 0x11, 0x16, 0x6a, 0x83, 0x75, 0x8e, 0xcc, 0x1e, 0xf9, 0x44, 0x34, - 0x09, 0xc7, 0x73, 0x4c, 0x4d, 0x33, 0xcb, 0x43, 0x44, 0x3e, 0xff, 0x00, - 0x40, 0xa9, 0x5e, 0xc2, 0xec, 0x7e, 0x9b, 0x7d, 0xf7, 0x64, 0xaa, 0x68, - 0xab, 0x23, 0xf2, 0xa1, 0x76, 0x2a, 0x64, 0xd2, 0xb8, 0xc2, 0x06, 0x09, - 0x78, 0x24, 0x02, 0x52, 0xaa, 0xcf, 0x6d, 0x1e, 0x4d, 0xd8, 0x2f, 0x9e, - 0x2c, 0x98, 0xcb, 0x0a, 0x05, 0xf1, 0xb7, 0xe7, 0x68, 0xea, 0x84, 0x1d, - 0x7e, 0xb2, 0x6d, 0xd2, 0xa8, 0xae, 0xff, 0xcd, 0xc1, 0x29, 0x58, 0x2b, - 0x82, 0x6c, 0x05, 0x1e, 0xbe, 0x6c, 0xf6, 0x2b, 0xa3, 0xce, 0xa1, 0x35, - 0xa9, 0x3a, 0x74, 0x1c, 0x92, 0xa0, 0x59, 0x07, 0x6f, 0x75, 0xbb, 0xa2, - 0xa3, 0x6f, 0x25, 0x56, 0xb1, 0x81, 0x56, 0x90, 0x20, 0xd4, 0xec, 0x77, - 0xbc, 0x7c, 0x6f, 0x14, 0xdd, 0xbd, 0x5c, 0xae, 0x5e, 0xa7, 0x2a, 0x91, - 0x49, 0x89, 0x0e, 0x12, 0x73, 0x72, 0xc4, 0x79, 0x40, 0x94, 0xda, 0xa9, - 0xce, 0x2c, 0xc9, 0xfc, 0x93, 0xc4, 0xd3, 0x17, 0x5c, 0xf2, 0x70, 0x6a, - 0xb3, 0xd3, 0xdb, 0x34, 0xc5, 0x20, 0xea, 0xfd, 0xa2, 0xd3, 0xad, 0x52, - 0x3d, 0x26, 0xc8, 0x12, 0xf4, 0x53, 0xb0, 0x6a, 0x54, 0x35, 0x8b, 0x62, - 0xef, 0x30, 0xd9, 0x83, 0x0e, 0xa4, 0xd6, 0xe7, 0xe0, 0xf3, 0xd0, 0xf5, - 0xb4, 0xb1, 0x1a, 0x64, 0x77, 0xc4, 0xfe, 0xdc, 0xa4, 0xa2, 0x99, 0xb6, - 0x7d, 0x3d, 0xbc, 0x65, 0x0b, 0x1b, 0x71, 0xd4, 0x43, 0x1a, 0x01, 0x7a, - 0xe9, 0x87, 0xb0, 0x83, 0xf4, 0x7f, 0xc7, 0x08, 0xdc, 0x7d, 0x01, 0xe9, - 0x92, 0x47, 0xea, 0x01, 0x38, 0xa3, 0x31, 0xe6, 0xdc, 0xd6, 0xec, 0x52, - 0x61, 0x22, 0x63, 0x07, 0x9c, 0xd4, 0x0f, 0x35, 0x90, 0xb3, 0x27, 0xaf, - 0x9c, 0x6e, 0xf5, 0x62, 0x5c, 0xea, 0xb1, 0x91, 0x40, 0xa6, 0x45, 0xe7, - 0x66, 0x29, 0xee, 0xee, 0x36, 0xde, 0x65, 0xfd, 0x6a, 0x71, 0xa6, 0xfc, - 0xe1, 0x57, 0xeb, 0x05, 0xa2, 0x98, 0x99, 0x01, 0xcb, 0x17, 0x04, 0xdd, - 0xdb, 0x71, 0x14, 0xcb, 0xb4, 0xbd, 0x30, 0x9e, 0xa3, 0xe5, 0x4f, 0x77, - 0x3e, 0x97, 0x0e, 0x75, 0x00, 0x01, 0x4b, 0x86, 0xcb, 0xe0, 0xda, 0xf2, - 0x95, 0xc8, 0xc4, 0x1a, 0x20, 0xe2, 0x33, 0x26, 0xd5, 0xc7, 0xe4, 0x0c, - 0xac, 0x92, 0x71, 0x5d, 0xc9, 0xfe, 0x08, 0xef, 0x9c, 0x70, 0x73, 0x3c, - 0xb8, 0x1d, 0x63, 0x89, 0xea, 0xc2, 0xe8, 0x98, 0x8e, 0x7b, 0x84, 0x97, - 0xf6, 0xd3, 0xcb, 0x3a, 0x0f, 0x14, 0xc6, 0x19, 0xd1, 0xad, 0x0b, 0x5d, - 0x64, 0x35, 0xd9, 0xa0, 0xcd, 0xc7, 0x66, 0xfe, 0x86, 0x91, 0xe8, 0x44, - 0x1f, 0x7a, 0xa9, 0xa2, 0xd8, 0xdd, 0xad, 0x48, 0x37, 0x20, 0x6f, 0xba, - 0x57, 0xed, 0x40, 0x1b, 0xb6, 0x39, 0x1c, 0x0f, 0x1a, 0xa1, 0x37, 0x4d, - 0x12, 0xf8, 0x97, 0x5e, 0x5d, 0xbd, 0x6b, 0xd5, 0x26, 0x6e, 0x69, 0x4c, - 0xaa, 0x5d, 0x67, 0x9b, 0x07, 0x4f, 0xc4, 0xee, 0xb8, 0xbf, 0xc7, 0x93, - 0x1c, 0xf9, 0x30, 0x32, 0xf5, 0xf4, 0xf0, 0x99, 0x00, 0xea, 0x0a, 0x24, - 0x0c, 0x41, 0x4c, 0xfc, 0x50, 0x7f, 0xc8, 0xde, 0xf3, 0xaf, 0xb5, 0x9c, - 0x13, 0x45, 0x88, 0xb3, 0x46, 0x4c, 0x72, 0x5d, 0xf1, 0xdd, 0xe8, 0x04, - 0x16, 0x4a, 0xd9, 0xf5, 0x27, 0x94, 0x15, 0xc5, 0xe3, 0x9e, 0xa0, 0x26, - 0x91, 0xca, 0x38, 0xd3, 0x62, 0x2f, 0xc2, 0x11, 0x0d, 0xed, 0x23, 0x68, - 0xbf, 0xd7, 0xed, 0x8c, 0x95, 0xa1, 0xae, 0xc2, 0x97, 0xf3, 0x64, 0xbd, - 0xe6, 0x48, 0x97, 0x84, 0x04, 0x3b, 0x1b, 0x70, 0xb9, 0x0f, 0xd9, 0x44, - 0xe4, 0x26, 0xa5, 0x7e, 0x57, 0x8e, 0x3c, 0x1f, 0xe9, 0x04, 0x7e, 0xe0, - 0xb5, 0x66, 0x4c, 0xb1, 0x0a, 0xa2, 0x36, 0xcf, 0x18, 0x7f, 0x10, 0xa4, - 0x6b, 0x29, 0xf0, 0x41, 0x39, 0x0b, 0x84, 0x3f, 0x32, 0xad, 0x1f, 0x6c, - 0x83, 0x99, 0xff, 0xa1, 0x4d, 0x67, 0x32, 0x37, 0x6c, 0xa5, 0xa6, 0x8a, - 0x1c, 0xc0, 0x2a, 0x40, 0xbb, 0xa1, 0x20, 0xb0, 0xaa, 0xd8, 0xb5, 0xa8, - 0xde, 0x81, 0xef, 0xe1, 0xf1, 0x11, 0x39, 0xec, 0xe2, 0x2d, 0x40, 0xc8, - 0x5e, 0xfb, 0x9a, 0x65, 0x93, 0x49, 0x0a, 0x27, 0xfd, 0x99, 0x05, 0x1e, - 0xc0, 0x89, 0x64, 0xe7, 0x57, 0x6c, 0x9e, 0xbd, 0x86, 0x6a, 0x91, 0xdf, - 0x98, 0x90, 0x85, 0xb2, 0xde, 0x91, 0x50, 0xa0, 0xb1, 0x69, 0x09, 0x09, - 0xd8, 0x73, 0xa4, 0x46, 0x9a, 0xc2, 0x4e, 0x04, 0x46, 0xc1, 0x2b, 0x21, - 0x62, 0x0d, 0xe1, 0x3c, 0xeb, 0xb0, 0xaf, 0x18, 0x4a, 0xe2, 0xf2, 0x24, - 0x33, 0x02, 0xde, 0xdf, 0x6f, 0x63, 0x26, 0x45, 0xb1, 0xe0, 0xf2, 0xe9, - 0x53, 0x67, 0x2f, 0xd7, 0x2e, 0xa9, 0x50, 0x5c, 0x0b, 0x71, 0x0b, 0xd6, - 0x04, 0xcf, 0x6d, 0xa1, 0x49, 0x29, 0xca, 0xb1, 0x84, 0xe0, 0x3a, 0xbe, - 0x04, 0xbd, 0xd3, 0x9d, 0x89, 0x6c, 0x5e, 0xb9, 0xfd, 0xa9, 0xb7, 0xd4, - 0xca, 0xbc, 0x9a, 0x94, 0xf3, 0xbd, 0x3e, 0xfc, 0xe3, 0xc2, 0x26, 0xcc, - 0x6c, 0x08, 0xa5, 0xb1, 0xb1, 0xb9, 0x21, 0xbf, 0x39, 0xe2, 0xb9, 0x6d, - 0x7b, 0xce, 0xd9, 0x0b, 0xe2, 0x5e, 0x66, 0x11, 0x99, 0xca, 0x6a, 0x76, - 0x13, 0xe9, 0x42, 0xb8, 0x67, 0x92, 0x7e, 0xeb, 0x5a, 0x0f, 0xc4, 0x64, - 0xe8, 0x2a, 0x08, 0x6c, 0x1e, 0xad, 0x5e, 0xf4, 0x15, 0xaf, 0xf3, 0xa6, - 0x53, 0xb3, 0xcc, 0xea, 0x4a, 0x20, 0x9b, 0xad, 0x56, 0xdd, 0x45, 0x7b, - 0x3e, 0xb1, 0xa2, 0x07, 0x67, 0x4e, 0x65, 0x60, 0xf8, 0x02, 0xe6, 0x8f, - 0x3b, 0x96, 0x11, 0xc4, 0x49, 0x91, 0x37, 0xe0, 0xdf, 0x50, 0xd2, 0x3e, - 0x84, 0x40, 0xf8, 0x7f, 0xc1, 0x86, 0x31, 0x04, 0x41, 0x24, 0x3e, 0xe2, - 0x79, 0x81, 0x65, 0xa0, 0xfe, 0xe8, 0x25, 0x2d, 0xc0, 0xad, 0x9d, 0x03, - 0x3e, 0x3d, 0x2e, 0xa8, 0xd5, 0xbf, 0x19, 0xb0, 0x44, 0x36, 0x66, 0xa9, - 0x38, 0xf5, 0x27, 0xfd, 0x05, 0xd3, 0x46, 0x83, 0x45, 0xf9, 0xa1, 0x4f, - 0x0d, 0xf5, 0x49, 0x2f, 0x9f, 0x9c, 0x98, 0xb3, 0x0b, 0x61, 0xab, 0xd4, - 0x36, 0xb7, 0x7f, 0xec, 0xc0, 0x0b, 0xed, 0xc1, 0xc0, 0xa8, 0x20, 0x12, - 0xf2, 0x5c, 0xc4, 0x40, 0x48, 0x4e, 0xfb, 0xb7, 0xf3, 0x1d, 0x33, 0x7e, - 0x4f, 0x8e, 0xe5, 0x0b, 0x2e, 0x46, 0xc4, 0xfd, 0x57, 0x3c, 0x5a, 0x5b, - 0xe3, 0x87, 0x40, 0xbd, 0xea, 0xce, 0xf4, 0x82, 0x53, 0x63, 0x56, 0x66, - 0x09, 0xe4, 0x94, 0xaa, 0x64, 0xe2, 0x26, 0xa2, 0x80, 0xe4, 0x48, 0x29, - 0xd9, 0x20, 0x57, 0xd3, 0xa3, 0xc3, 0x90, 0xbe, 0x05, 0x82, 0xd8, 0x1e, - 0x6c, 0xca, 0x1d, 0xd7, 0x23, 0xaf, 0x52, 0x03, 0x25, 0x5d, 0xdc, 0x3e, - 0x24, 0x43, 0x65, 0x38, 0xf5, 0x5f, 0x17, 0x3a, 0xc6, 0x2b, 0x34, 0xb0, - 0xf9, 0xd2, 0x49, 0x47, 0x89, 0xcd, 0xc8, 0xef, 0x42, 0x0f, 0xa8, 0x54, - 0xe3, 0x8a, 0x0b, 0x63, 0x31, 0xac, 0xa9, 0x45, 0xad, 0x11, 0xd8, 0x58, - 0x0f, 0x0d, 0xa2, 0xe5, 0x73, 0xb9, 0xcc, 0xa2, 0x94, 0x56, 0x98, 0x16, - 0x3d, 0xdf, 0xd7, 0x63, 0x14, 0xbe, 0xa5, 0x45, 0x46, 0x47, 0x55, 0x66, - 0x5e, 0xfd, 0x4f, 0x13, 0x68, 0x5b, 0x3e, 0xe9, 0x90, 0xa4, 0x79, 0x12, - 0xef, 0xbb, 0x3f, 0x83, 0x18, 0xf0, 0x63, 0x0d, 0x93, 0x5b, 0x92, 0xa7, - 0x34, 0x55, 0x1c, 0x00, 0xd4, 0x01, 0x08, 0x98, 0x8f, 0xcf, 0x42, 0xc6, - 0x14, 0xcd, 0xf0, 0x47, 0x77, 0x8d, 0xcd, 0x07, 0xd6, 0x16, 0x36, 0x2e, - 0x5c, 0x94, 0x26, 0x50, 0x18, 0x75, 0xad, 0x1c, 0xfc, 0x07, 0xae, 0x00, - 0xa0, 0x27, 0xb1, 0xfc, 0xb8, 0x17, 0x93, 0x0d, 0x24, 0x61, 0x6b, 0xad, - 0xcb, 0xce, 0x97, 0x15, 0xc2, 0xea, 0x0a, 0xfb, 0x83, 0x70, 0xc7, 0x40, - 0x67, 0x46, 0x43, 0xe9, 0xc9, 0xa6, 0xd2, 0x28, 0x25, 0x5c, 0x0a, 0x7d, - 0xd6, 0xbc, 0xe3, 0x83, 0x4a, 0x61, 0xfc, 0x37, 0x9f, 0x61, 0x52, 0x69, - 0x5a, 0x5d, 0x6f, 0x69, 0x1b, 0xec, 0xe3, 0xab, 0x40, 0x3d, 0x31, 0xbb, - 0x55, 0x3e, 0x89, 0x89, 0xb6, 0x2f, 0x97, 0xae, 0x77, 0xd9, 0xb6, 0x1b, - 0x19, 0x04, 0xf2, 0xae, 0x10, 0x91, 0xf0, 0xf1, 0xae, 0xec, 0x02, 0x72, - 0x4c, 0x8a, 0x41, 0x58, 0xa2, 0xe0, 0x79, 0x92, 0x5a, 0x2e, 0x13, 0x26, - 0x9d, 0x9c, 0x0b, 0x7f, 0xdb, 0xb2, 0x8d, 0xd6, 0x26, 0xea, 0x6f, 0xc8, - 0xf1, 0x96, 0x37, 0xb7, 0xd9, 0x9c, 0xef, 0x5e, 0xc3, 0xc0, 0xa2, 0x97, - 0x93, 0x79, 0xd9, 0x12, 0x17, 0xed, 0xb0, 0xaf, 0x83, 0x50, 0xa3, 0xf3, - 0x1d, 0xf8, 0xc8, 0xae, 0x47, 0x7c, 0x33, 0x92, 0x27, 0x98, 0x82, 0x51, - 0x33, 0x9c, 0x7c, 0xa8, 0xae, 0x88, 0xea, 0x18, 0x52, 0x40, 0x05, 0x6a, - 0x74, 0xe9, 0x73, 0x88, 0x37, 0xf1, 0x99, 0x31, 0xf6, 0xe7, 0x0e, 0x73, - 0xb1, 0xc0, 0x81, 0x03, 0xa5, 0xd3, 0x93, 0xf4, 0xb2, 0x24, 0x13, 0x5a, - 0x16, 0xa8, 0xa5, 0x39, 0x2e, 0x9e, 0x98, 0x41, 0x29, 0x89, 0x4b, 0x34, - 0x3e, 0xf3, 0x85, 0xa7, 0x02, 0x90, 0xc4, 0x82, 0xc9, 0xc3, 0x4f, 0xc1, - 0xf9, 0x80, 0xfb, 0x1c, 0x0d, 0xae, 0x94, 0x9d, 0xb8, 0x1c, 0x78, 0xb3, - 0x18, 0x37, 0xe8, 0x4b, 0x15, 0xe5, 0x6b, 0x80, 0xf7, 0x66, 0xb9, 0xa2, - 0xf7, 0x9d, 0x9a, 0xbd, 0x88, 0x39, 0x79, 0xe7, 0x79, 0xba, 0x51, 0x37, - 0x35, 0xe4, 0x22, 0xfe, 0xc6, 0x72, 0x42, 0xe1, 0x0b, 0x27, 0xaf, 0xd6, - 0x84, 0xf0, 0xb9, 0xbe, 0x13, 0xdb, 0x0d, 0xe5, 0x3a, 0x3f, 0xd9, 0x4b, - 0xa4, 0x0f, 0x4f, 0xb6, 0xc9, 0xaf, 0xac, 0xeb, 0xec, 0x68, 0x9e, 0xc2, - 0x1f, 0x32, 0xce, 0xe9, 0xb5, 0xcb, 0xb2, 0x04, 0x12, 0xf5, 0x8d, 0x99, - 0xa6, 0x9a, 0x11, 0x31, 0xba, 0x9b, 0xd6, 0x03, 0x4a, 0xdb, 0xb6, 0xf4, - 0x1c, 0xc1, 0x0c, 0x0e, 0xee, 0x43, 0xc4, 0x79, 0x72, 0x7e, 0x72, 0x0c, - 0x2b, 0x51, 0xf5, 0xca, 0xaa, 0x1c, 0xda, 0x2a, 0x12, 0x96, 0x63, 0x87, - 0x0d, 0x42, 0x88, 0x91, 0xf7, 0x8d, 0x4d, 0x18, 0xd7, 0xe7, 0xf5, 0x5a, - 0xd6, 0xb5, 0x9d, 0x8f, 0x37, 0xfc, 0xf2, 0xd5, 0x10, 0x63, 0x04, 0xfd, - 0x91, 0x12, 0xa1, 0x4a, 0x8b, 0x76, 0xdf, 0x81, 0xee, 0xfc, 0xc4, 0x89, - 0x9c, 0xa5, 0x79, 0xee, 0x9b, 0xba, 0x59, 0x12, 0x59, 0xd0, 0xae, 0x5e, - 0xe5, 0x21, 0xcf, 0x4d, 0x23, 0x37, 0xd3, 0x54, 0xe6, 0xb9, 0xb4, 0x0c, - 0xd4, 0xf8, 0x68, 0xd8, 0x7a, 0x27, 0xbd, 0xa4, 0x0c, 0x98, 0xe2, 0x95, - 0xad, 0x23, 0x3f, 0x80, 0x73, 0x1c, 0x3c, 0x06, 0x3d, 0x3f, 0x2d, 0x4e, - 0x16, 0xbc, 0xd2, 0xb3, 0xcd, 0xf3, 0x0c, 0x8e, 0x12, 0x39, 0x05, 0x8e, - 0x67, 0xeb, 0xd8, 0x9c, 0x97, 0xdb, 0xe9, 0x33, 0x47, 0xdd, 0x88, 0x05, - 0x39, 0xeb, 0x91, 0x47, 0x61, 0x25, 0x5e, 0x1c, 0x5e, 0x69, 0xc9, 0x9f, - 0xc1, 0x08, 0xd1, 0xec, 0x3f, 0x0a, 0x6a, 0xe6, 0xef, 0xb8, 0x2e, 0x37, - 0x3a, 0x01, 0x26, 0x7a, 0xaa, 0x90, 0x2f, 0xe1, 0x0c, 0x39, 0x32, 0xd0, - 0x40, 0xf4, 0x89, 0x16, 0xcd, 0x40, 0xda, 0x83, 0xc7, 0x61, 0x36, 0x08, - 0x7b, 0xd5, 0xc9, 0xa2, 0xd4, 0xc5, 0x0d, 0xfb, 0x96, 0xcf, 0xdb, 0x62, - 0x71, 0x0c, 0x7c, 0x56, 0x0a, 0xb7, 0x53, 0x89, 0x5c, 0x9b, 0x29, 0xd3, - 0x82, 0x48, 0x47, 0x3a, 0x98, 0x25, 0x2b, 0x09, 0x41, 0xbc, 0x6a, 0x6c, - 0x4b, 0xa1, 0xcb, 0x1e, 0x2d, 0x08, 0xa2, 0x43, 0x8d, 0x97, 0xc8, 0x91, - 0x45, 0xb8, 0xd5, 0xe9, 0x8d, 0xe4, 0x8b, 0x4b, 0x07, 0xe6, 0xb6, 0x0c, - 0x0a, 0x9d, 0x50, 0xc7, 0x62, 0x19, 0x20, 0x7b, 0xff, 0x8e, 0x00, 0x12, - 0x6d, 0x1c, 0xc2, 0xda, 0xcb, 0xc1, 0x46, 0x6f, 0x64, 0x9b, 0x6d, 0x95, - 0x7b, 0x90, 0xb6, 0x12, 0x63, 0x02, 0x32, 0x0a, 0x16, 0x9c, 0x5f, 0xc2, - 0x9e, 0x5a, 0x7b, 0x9c, 0x9c, 0x18, 0x1e, 0xcf, 0x7e, 0x22, 0x02, 0x8c, - 0x20, 0x5e, 0x71, 0xf3, 0x9a, 0xe0, 0xe5, 0x06, 0xd7, 0xab, 0xcc, 0xf4, - 0x08, 0x0b, 0xb7, 0x1e, 0x4d, 0xaf, 0xd5, 0x50, 0x6c, 0xe4, 0x35, 0x56, - 0x39, 0x33, 0xc1, 0x59, 0xe1, 0x38, 0x1d, 0x1a, 0xdf, 0x24, 0xa4, 0x5b, - 0xd4, 0x95, 0xee, 0x04, 0xc0, 0xba, 0xa5, 0x65, 0x77, 0x72, 0x6b, 0xef, - 0x69, 0x78, 0xf0, 0xcd, 0x17, 0xea, 0x35, 0xf3, 0x11, 0x39, 0xbc, 0xe6, - 0xfb, 0xd8, 0x84, 0x85, 0xaa, 0x1f, 0x1b, 0x3d, 0x8b, 0xe1, 0xb0, 0x05, - 0x32, 0xa8, 0x85, 0xa6, 0x4a, 0x1f, 0x08, 0xba, 0x58, 0x75, 0x3e, 0xe0, - 0xa8, 0x9e, 0xb2, 0x3b, 0xfe, 0xf2, 0xad, 0x8e, 0xcc, 0x23, 0x3b, 0x26, - 0x7b, 0xa3, 0x2f, 0x2d, 0x73, 0x5a, 0x4f, 0xa3, 0xcc, 0x9b, 0x76, 0xa3, - 0x08, 0xe6, 0xa1, 0xba, 0x24, 0xed, 0xa1, 0x89, 0x50, 0xc7, 0x12, 0xa9, - 0x57, 0x48, 0x67, 0x6d, 0xd1, 0xd8, 0xf4, 0xa4, 0xc4, 0xbf, 0xba, 0x3c, - 0xd8, 0x12, 0xcb, 0x6a, 0x23, 0xef, 0x70, 0x45, 0xc5, 0x43, 0xb1, 0xca, - 0x50, 0xd1, 0x54, 0x09, 0xbd, 0x1f, 0xcb, 0x8a, 0xfc, 0x07, 0xbb, 0xc9, - 0xb1, 0xf2, 0xda, 0x20, 0xcc, 0xbf, 0xdd, 0x9d, 0x72, 0x31, 0x03, 0x85, - 0xef, 0x75, 0x64, 0x7b, 0xdc, 0x48, 0x78, 0x56, 0x45, 0x6d, 0x4e, 0xd6, - 0x68, 0xa0, 0xc4, 0xca, 0xdc, 0x62, 0x82, 0xa7, 0xd3, 0x37, 0x14, 0xb4, - 0xf3, 0x97, 0xb2, 0x76, 0x9f, 0x8b, 0xda, 0xee, 0xbc, 0x60, 0xe3, 0x2a, - 0xac, 0xd0, 0x4e, 0x90, 0xdd, 0x7e, 0x2e, 0x48, 0x7e, 0xdf, 0x97, 0x88, - 0xbc, 0xc9, 0x3a, 0xd1, 0x1f, 0x33, 0x9b, 0x8c, 0x85, 0x45, 0x3a, 0x29, - 0xd9, 0x72, 0x05, 0xca, 0x8f, 0xcd, 0xf1, 0x21, 0x4c, 0x26, 0xb2, 0xe8, - 0x74, 0x4d, 0xc6, 0xd0, 0x39, 0x44, 0x75, 0x6e, 0xa1, 0xa2, 0x7c, 0x01, - 0xdd, 0xe6, 0xe4, 0x7b, 0xb9, 0xf4, 0xf9, 0x0f, 0xe1, 0xba, 0xff, 0x89, - 0xad, 0x76, 0xfc, 0xd2, 0x00, 0x39, 0x8d, 0x16, 0xf5, 0xbe, 0xcb, 0x6e, - 0x24, 0xbf, 0xbf, 0x28, 0x40, 0x25, 0xfe, 0x5e, 0x98, 0x92, 0x91, 0x08, - 0x25, 0x38, 0x26, 0xd1, 0x04, 0x85, 0xff, 0x15, 0x16, 0xe4, 0x0c, 0xb3, - 0x72, 0x26, 0xca, 0xd4, 0x47, 0xd8, 0x0b, 0xde, 0xef, 0x43, 0x85, 0xf5, - 0xd4, 0xc9, 0xe2, 0x58, 0x09, 0x23, 0x58, 0x72, 0xc3, 0x8e, 0x39, 0x70, - 0xa3, 0xe4, 0xe5, 0x06, 0x29, 0x8c, 0xa4, 0x01, 0xd9, 0x73, 0x45, 0xb0, - 0x90, 0x2b, 0x1d, 0x42, 0xbf, 0x4b, 0x04, 0x79, 0xbf, 0xdd, 0x37, 0x7d, - 0xea, 0xa1, 0xbf, 0x6f, 0xab, 0x15, 0xf1, 0x61, 0xbb, 0xde, 0xc6, 0xd5, - 0xcd, 0x18, 0x51, 0xf7, 0xc0, 0x48, 0x19, 0x16, 0xbb, 0x1e, 0xea, 0x93, - 0xfb, 0x7b, 0x4e, 0xca, 0xa7, 0x5d, 0xbe, 0xab, 0xfa, 0xc6, 0xbb, 0x4c, - 0x41, 0x49, 0x1f, 0x9b, 0xc7, 0x8b, 0x34, 0x8a, 0x4a, 0x8f, 0x23, 0xe5, - 0xf7, 0xd9, 0x9b, 0x23, 0x35, 0xcb, 0xe9, 0x4a, 0x48, 0xfb, 0x84, 0x8e, - 0x0d, 0xb5, 0x94, 0x72, 0xb5, 0x13, 0x8f, 0xdb, 0xff, 0xfa, 0xfa, 0x34, - 0x2a, 0x6a, 0xa2, 0x03, 0xb2, 0xba, 0x5d, 0x48, 0x7d, 0xa5, 0x6a, 0x0a, - 0x03, 0x3a, 0x06, 0xff, 0x79, 0x93, 0x3a, 0x2d, 0x17, 0x6c, 0xbf, 0x64, - 0x6c, 0x25, 0x57, 0xab, 0xf7, 0x60, 0x6c, 0xcb, 0x62, 0x1f, 0x6a, 0x13, - 0xba, 0x98, 0x26, 0x9f, 0xc8, 0x50, 0xbe, 0xb3, 0x37, 0x6a, 0x58, 0x62, - 0xd3, 0x78, 0xe5, 0x8f, 0x54, 0x68, 0xba, 0x9c, 0xc3, 0x79, 0xbd, 0xab, - 0x8c, 0x52, 0x98, 0xf9, 0x39, 0xf0, 0x05, 0xbd, 0x56, 0x86, 0x7b, 0x1f, - 0x09, 0x04, 0xe7, 0xc0, 0xc9, 0x0a, 0x8c, 0x85, 0x09, 0x82, 0xbc, 0x1f, - 0xfd, 0x53, 0x54, 0x57, 0xf2, 0xa9, 0x80, 0xad, 0x83, 0x57, 0x50, 0x44, - 0x8c, 0xd5, 0xac, 0x0f, 0x02, 0xe5, 0x8c, 0x28, 0xec, 0x5d, 0x73, 0x68, - 0xc8, 0x43, 0xa6, 0x3e, 0xa2, 0x02, 0x2c, 0x30, 0x6f, 0xb0, 0x11, 0xe3, - 0x1a, 0x94, 0x2b, 0x96, 0x56, 0x9f, 0x5a, 0x1b, 0x17, 0xe2, 0x85, 0xd5, - 0xed, 0x86, 0xa3, 0x7c, 0xe6, 0x98, 0x6e, 0x24, 0x21, 0x94, 0xd5, 0x0b, - 0x6c, 0xd8, 0xc0, 0xd1, 0xe6, 0x7d, 0x0d, 0x32, 0x11, 0x0b, 0x3a, 0x83, - 0x3f, 0x2c, 0x97, 0x35, 0xc3, 0xd9, 0xff, 0xe4, 0x7f, 0x21, 0xf0, 0x92, - 0x91, 0xa6, 0xaf, 0x35, 0xa5, 0xd1, 0xca, 0x85, 0x38, 0x43, 0x39, 0xd4, - 0xfc, 0x07, 0xf7, 0xc4, 0x13, 0xa4, 0xa8, 0xb1, 0x9d, 0xc7, 0xe8, 0xd5, - 0xaa, 0x93, 0xa3, 0xfd, 0xef, 0x53, 0x3e, 0xf6, 0xd5, 0xd9, 0x57, 0x94, - 0xbd, 0xba, 0xbe, 0xd6, 0xa8, 0x56, 0xd5, 0x7e, 0x80, 0x9e, 0xcb, 0xb5, - 0x69, 0xbe, 0x2e, 0x80, 0x7c, 0xc2, 0xed, 0x9b, 0xe7, 0x29, 0x9f, 0x98, - 0xb5, 0x88, 0x2e, 0x9b, 0x82, 0x06, 0x7b, 0xc5, 0xc8, 0xdb, 0xc7, 0x0d, - 0xb7, 0x27, 0x27, 0x40, 0x21, 0xc7, 0x86, 0x9c, 0x20, 0xac, 0xf3, 0x3e, - 0xa7, 0x4d, 0x8b, 0x4b, 0x3a, 0x0a, 0x67, 0x99, 0x43, 0x89, 0xb5, 0x47, - 0x8b, 0xc2, 0xa2, 0x65, 0x7f, 0xb1, 0x0c, 0xd6, 0x94, 0x92, 0x6a, 0xde, - 0x16, 0x92, 0x82, 0xd2, 0x90, 0xcf, 0x10, 0x2a, 0x1f, 0x51, 0x45, 0x1d, - 0xa1, 0x5e, 0x29, 0x1f, 0x91, 0x86, 0x60, 0x62, 0x2d, 0x60, 0x9e, 0x9c, - 0x8a, 0x19, 0x72, 0x3d, 0x79, 0xcf, 0x4d, 0x00, 0x2e, 0x40, 0x77, 0xc6, - 0xb0, 0x72, 0x2e, 0xdb, 0x37, 0xe2, 0x08, 0x33, 0x3b, 0xca, 0x67, 0x8d, - 0x11, 0x20, 0x2b, 0xd1, 0xbd, 0xac, 0x76, 0xee, 0xcc, 0xcd, 0xdf, 0xf8, - 0x60, 0xfc, 0x22, 0x94, 0xb8, 0x51, 0x21, 0xe3, 0xd3, 0x2d, 0x63, 0x4d, - 0x44, 0x62, 0xc2, 0xe5, 0x04, 0x21, 0x69, 0x00, 0x36, 0x85, 0xe3, 0x9a, - 0xc8, 0xe7, 0xf3, 0xa0, 0x62, 0xe2, 0x30, 0xb6, 0x69, 0x9b, 0xa8, 0xd3, - 0x37, 0x08, 0xcb, 0xe9, 0x86, 0x6a, 0x34, 0x74, 0xcf, 0x6c, 0x33, 0x72, - 0x74, 0x8c, 0xb4, 0x4d, 0x5a, 0xf2, 0xab, 0xf1, 0x92, 0x95, 0xba, 0xa4, - 0xf0, 0x87, 0x93, 0xff, 0x02, 0x4d, 0x6c, 0xe0, 0x79, 0x44, 0xdc, 0x37, - 0xb0, 0xc9, 0xcd, 0x1a, 0x29, 0x93, 0x32, 0x01, 0xed, 0xac, 0x2b, 0x0c, - 0x70, 0x42, 0x44, 0x33, 0x44, 0x47, 0xb9, 0x93, 0x35, 0x78, 0xb7, 0x63, - 0x8b, 0xec, 0xb5, 0xb9, 0x45, 0xeb, 0x7e, 0xbb, 0x81, 0x6a, 0xb9, 0x37, - 0x34, 0xa2, 0xe1, 0x76, 0x57, 0x5b, 0x93, 0x66, 0xe9, 0x81, 0x63, 0xf2, - 0x89, 0x7b, 0x68, 0x58, 0x23, 0x8a, 0x23, 0xc6, 0x16, 0x02, 0xd1, 0xc6, - 0xe5, 0xed, 0x34, 0xd3, 0x88, 0x8c, 0xee, 0x0e, 0xd1, 0x91, 0x7f, 0x11, - 0x2b, 0x69, 0x52, 0x10, 0x71, 0xb0, 0xdb, 0x21, 0xd4, 0x1c, 0x0e, 0xaf, - 0x24, 0x09, 0x48, 0x08, 0x0a, 0x54, 0xe9, 0xdf, 0xe4, 0x76, 0xe4, 0xfb, - 0xa6, 0x73, 0xc0, 0xcf, 0x3c, 0x39, 0xa7, 0x62, 0xc1, 0xa2, 0xfe, 0x40, - 0x47, 0xae, 0xf1, 0x9e, 0x44, 0x37, 0x13, 0x1a, 0x8e, 0xbb, 0x27, 0x60, - 0xa6, 0xee, 0xa0, 0x04, 0x1a, 0xb2, 0x1e, 0xf8, 0xc3, 0x6c, 0x9b, 0xdc, - 0xa4, 0x3b, 0x70, 0xc4, 0x39, 0x38, 0xbc, 0x71, 0x0a, 0xad, 0xd6, 0x88, - 0xa2, 0xa1, 0x7f, 0x88, 0x35, 0x8b, 0x1c, 0x57, 0x7f, 0x10, 0x26, 0x16, - 0x32, 0x60, 0xb9, 0xcf, 0x64, 0xb0, 0x14, 0xf4, 0x3a, 0xb1, 0x01, 0x3f, - 0x99, 0xd1, 0xac, 0xd8, 0xfd, 0xd0, 0xb5, 0x74, 0x0b, 0x5e, 0xc6, 0x46, - 0xa3, 0x0c, 0x8e, 0x3b, 0xdd, 0x4a, 0xfd, 0x70, 0x24, 0xd3, 0xaa, 0xa6, - 0xe4, 0x87, 0x24, 0xd7, 0xe4, 0xa2, 0x95, 0x63, 0x14, 0x46, 0x00, 0x20, - 0xf0, 0xdd, 0x21, 0x4a, 0x36, 0x69, 0x4e, 0x6f, 0x76, 0xd9, 0xb9, 0x10, - 0xd1, 0x13, 0x85, 0xf1, 0x12, 0x5e, 0xe0, 0x6e, 0x62, 0xe1, 0xf2, 0x46, - 0x6d, 0x5c, 0x7f, 0xf8, 0x50, 0x3a, 0x0d, 0x33, 0x14, 0x3b, 0xc7, 0xdc, - 0x36, 0x78, 0x6a, 0x27, 0x87, 0xf4, 0x74, 0xbd, 0x53, 0xd3, 0xe9, 0x1b, - 0xe9, 0x63, 0x85, 0x8a, 0x42, 0x08, 0x5a, 0x54, 0x64, 0x32, 0xbe, 0x4e, - 0x8d, 0x26, 0x75, 0xb5, 0x97, 0xd8, 0xc5, 0x80, 0x81, 0xe4, 0x1e, 0x66, - 0x5c, 0x2c, 0x1c, 0x01, 0xe7, 0xc0, 0xdb, 0x99, 0x35, 0x3c, 0xab, 0x68, - 0x8c, 0x76, 0x73, 0x5c, 0x10, 0xf3, 0x97, 0x9e, 0x69, 0xeb, 0x80, 0x97, - 0x12, 0xe9, 0x16, 0x31, 0x68, 0xba, 0x1e, 0x70, 0x23, 0x8f, 0xb2, 0x3b, - 0xe1, 0x01, 0x15, 0x01, 0x0d, 0x1f, 0x16, 0x59, 0x67, 0x42, 0xc6, 0x5b, - 0x68, 0xe1, 0x52, 0xc2, 0x37, 0xbc, 0x69, 0x2a, 0xa6, 0xd0, 0x7f, 0x2c, - 0x10, 0x09, 0x5b, 0x2c, 0x69, 0x2d, 0x6d, 0x00, 0x69, 0x00, 0xcc, 0x7a, - 0x35, 0x01, 0x94, 0x6f, 0x65, 0x8c, 0x4b, 0x4f, 0x12, 0xab, 0x8f, 0x35, - 0x8d, 0xf4, 0x1f, 0x70, 0xed, 0xf5, 0x03, 0x87, 0x28, 0x0b, 0x0b, 0xe1, - 0x9b, 0x2d, 0xc4, 0xce, 0xc1, 0x55, 0x5e, 0x3a, 0x25, 0xc8, 0x41, 0xdc, - 0x84, 0x51, 0xd5, 0x1d, 0x0b, 0x1b, 0x4c, 0x48, 0x0f, 0x42, 0x4b, 0x59, - 0x4c, 0xd7, 0x1a, 0x8d, 0xc6, 0x45, 0x2b, 0xc6, 0x92, 0x2d, 0xab, 0x88, - 0xef, 0xce, 0x99, 0xd6, 0x97, 0x5d, 0xaf, 0x2c, 0x79, 0x82, 0xaf, 0x06, - 0x73, 0xf4, 0x96, 0xe4, 0x89, 0x12, 0x37, 0x08, 0x6a, 0x79, 0x2a, 0x44, - 0xfb, 0x72, 0xde, 0x53, 0xe8, 0x5c, 0xe9, 0x12, 0xe3, 0x47, 0xc1, 0xfe, - 0x37, 0x2e, 0x43, 0x6a, 0x89, 0xd0, 0x1b, 0x0a, 0x6d, 0xe4, 0xe8, 0x9e, - 0x8a, 0x25, 0x46, 0x3f, 0x6d, 0x03, 0xad, 0xf1, 0x50, 0x9b, 0xc7, 0xf2, - 0xbf, 0xb5, 0x79, 0x80, 0xf8, 0xc2, 0xe2, 0x42, 0x33, 0x12, 0xd1, 0xfc, - 0xa7, 0x40, 0x8f, 0x77, 0xe0, 0xed, 0x6d, 0x2d, 0x4a, 0x9e, 0x6b, 0x6b, - 0x34, 0xd2, 0xc1, 0x41, 0x57, 0x33, 0xf4, 0xb0, 0xa5, 0xb5, 0x35, 0x22, - 0x17, 0xd9, 0xd2, 0x72, 0x26, 0x1c, 0xb4, 0xfc, 0x6d, 0x87, 0x5a, 0xba, - 0x13, 0x10, 0xe6, 0xdb, 0x6f, 0xbf, 0xa5, 0x6c, 0x7f, 0x53, 0x76, 0x09, - 0x03, 0x53, 0x99, 0x80, 0xb9, 0xc2, 0xa0, 0x8a, 0xb7, 0xe3, 0xd4, 0x6c, - 0xa5, 0x5f, 0x93, 0x08, 0xc9, 0xd9, 0xdb, 0xdc, 0x23, 0x62, 0x10, 0xf2, - 0x74, 0xf2, 0xd6, 0x04, 0x0e, 0x1a, 0xf7, 0x85, 0xcd, 0xe0, 0xca, 0x1d, - 0xd3, 0x54, 0x26, 0x04, 0x9a, 0x88, 0xdd, 0x7a, 0xb5, 0x63, 0xa3, 0x79, - 0xa2, 0xa1, 0xe8, 0x54, 0xee, 0x6e, 0x19, 0xe2, 0x42, 0x66, 0xf2, 0x13, - 0x1b, 0xd5, 0x47, 0xdd, 0xc8, 0x3f, 0x58, 0x95, 0x2c, 0x16, 0x1b, 0xb1, - 0x6b, 0xfb, 0xcc, 0x4b, 0x52, 0x60, 0xc6, 0x36, 0x47, 0x7e, 0x1a, 0xe8, - 0xbc, 0x9a, 0x6e, 0x58, 0xd9, 0x43, 0xf3, 0xe3, 0xa6, 0x12, 0x42, 0x92, - 0x62, 0x5c, 0x4e, 0x7a, 0x04, 0x6e, 0x97, 0xfe, 0xf3, 0xff, 0xc5, 0xbb, - 0x14, 0xcd, 0x5b, 0xc0, 0x6b, 0x48, 0xa5, 0xaf, 0xc4, 0x34, 0x12, 0xb7, - 0x76, 0x61, 0x15, 0x4e, 0x83, 0x38, 0x98, 0x16, 0x81, 0x0e, 0x87, 0xf9, - 0x08, 0x72, 0x7e, 0x65, 0x1c, 0x3e, 0x09, 0xb5, 0xe5, 0x04, 0x12, 0x51, - 0xcd, 0x78, 0xf4, 0x72, 0xbc, 0xab, 0x0b, 0xb9, 0x35, 0xe8, 0x47, 0x70, - 0x06, 0x02, 0xcf, 0x46, 0xe5, 0x06, 0x8f, 0xe9, 0xbd, 0xdf, 0x60, 0x62, - 0x1c, 0x42, 0x03, 0x4b, 0x2d, 0x7d, 0x66, 0x30, 0x00, 0xbe, 0xb9, 0x65, - 0x17, 0xa5, 0xee, 0x16, 0xa9, 0x07, 0x2e, 0x6a, 0xf5, 0x90, 0x9f, 0xe2, - 0x08, 0x64, 0x34, 0x2c, 0x2c, 0x7d, 0x5a, 0x59, 0xeb, 0xaa, 0x56, 0x84, - 0xdc, 0xad, 0xeb, 0x2e, 0x7b, 0x7b, 0x13, 0xd5, 0x2f, 0x3e, 0xed, 0xb2, - 0x00, 0xaa, 0xd4, 0x33, 0xbc, 0x8f, 0x5e, 0x73, 0x6d, 0x2b, 0x03, 0x9f, - 0x82, 0x9b, 0xfe, 0x0d, 0xbf, 0xd1, 0xe4, 0x06, 0x74, 0x0a, 0x09, 0xdf, - 0xe1, 0x03, 0xe8, 0xf0, 0xcd, 0x6d, 0xf8, 0x7c, 0xfc, 0xad, 0x1b, 0x8e, - 0x63, 0xb3, 0x8c, 0x27, 0x94, 0x22, 0xd8, 0x1f, 0x98, 0x3e, 0x9d, 0xf0, - 0xc5, 0x1d, 0xe7, 0x30, 0xeb, 0x63, 0xb2, 0xd1, 0xc1, 0x8e, 0xdb, 0xff, - 0xfd, 0xe0, 0x24, 0x16, 0x83, 0x6f, 0x82, 0x1f, 0x78, 0x59, 0xef, 0x88, - 0xcd, 0x24, 0x1c, 0x93, 0x74, 0x44, 0xd6, 0xde, 0xc8, 0x06, 0x74, 0xfb, - 0x65, 0x64, 0x1b, 0x76, 0x7f, 0x7d, 0x30, 0xf8, 0x59, 0xb5, 0x97, 0x48, - 0x82, 0xd3, 0x99, 0x3a, 0x3f, 0xf7, 0xe3, 0x06, 0x7f, 0xa4, 0x94, 0x93, - 0xc6, 0x78, 0xe6, 0x5e, 0x55, 0xad, 0x19, 0xab, 0x1a, 0xbf, 0x16, 0xfc, - 0xd8, 0x43, 0x3d, 0x75, 0x6b, 0xbb, 0xaf, 0x24, 0xf9, 0x3f, 0x9e, 0x35, - 0x75, 0x63, 0xa4, 0x1e, 0x59, 0xee, 0xdd, 0x99, 0x65, 0x25, 0x9f, 0x49, - 0xde, 0xb4, 0xe1, 0x63, 0x72, 0xa5, 0xcb, 0xb9, 0x2d, 0x5a, 0x4e, 0xe3, - 0xb4, 0x49, 0xf1, 0xc5, 0x62, 0x0c, 0x36, 0x88, 0x38, 0x24, 0x61, 0x7d, - 0x28, 0x75, 0xd7, 0x73, 0xcb, 0x69, 0x03, 0xf4, 0x9f, 0x21, 0x03, 0x15, - 0xed, 0xed, 0x94, 0x97, 0x37, 0xf8, 0x8c, 0x69, 0x0b, 0x1f, 0x33, 0x5c, - 0x1e, 0xe6, 0xbc, 0x9a, 0x79, 0xad, 0xa0, 0x4e, 0x77, 0xfa, 0x53, 0xce, - 0xcd, 0x5c, 0x09, 0x11, 0x90, 0x07, 0x4b, 0x41, 0xac, 0xe1, 0x9d, 0xae, - 0xbc, 0x84, 0x8d, 0xef, 0x89, 0x4c, 0xcd, 0x63, 0x81, 0x48, 0xed, 0x09, - 0x59, 0x76, 0xde, 0xa4, 0x9c, 0x80, 0x22, 0x16, 0xc8, 0x35, 0x45, 0x10, - 0x43, 0xe5, 0x7a, 0x3e, 0x1d, 0x7f, 0x89, 0x08, 0x2c, 0x58, 0x52, 0xce, - 0xd5, 0xf2, 0xcc, 0xf4, 0xfd, 0xe1, 0x0a, 0xca, 0x88, 0x9a, 0x33, 0x99, - 0xf0, 0xe4, 0x09, 0xe7, 0xec, 0xe1, 0xc8, 0x6d, 0x23, 0x44, 0xe4, 0x13, - 0x87, 0xb0, 0x33, 0x66, 0x34, 0xa7, 0x93, 0x13, 0xe5, 0x86, 0xee, 0x83, - 0x30, 0x61, 0x26, 0x28, 0xa9, 0x2b, 0x05, 0x49, 0x66, 0x1e, 0xe0, 0x26, - 0xa6, 0xff, 0x17, 0xca, 0x2c, 0xdb, 0xd9, 0x1b, 0x59, 0x81, 0x73, 0x36, - 0x94, 0xdf, 0x69, 0x2e, 0xab, 0x41, 0x24, 0x1e, 0x26, 0x2d, 0x8d, 0x1f, - 0xf8, 0x10, 0xd1, 0xcd, 0x19, 0x02, 0x5a, 0xc0, 0x6e, 0x15, 0x66, 0xdd, - 0xda, 0x3f, 0x9e, 0x78, 0x61, 0x39, 0xdd, 0x66, 0xcb, 0xa6, 0xc3, 0x1a, - 0x0e, 0x07, 0xdb, 0x2d, 0x3e, 0x9f, 0x1a, 0x37, 0x4c, 0xd6, 0x81, 0x67, - 0xf7, 0x68, 0x41, 0x11, 0x2a, 0x37, 0x36, 0x7b, 0xee, 0xb6, 0xa9, 0x44, - 0x5a, 0xea, 0xbc, 0xdb, 0x46, 0xad, 0xcd, 0x0a, 0xab, 0x13, 0x9e, 0x2e, - 0x6a, 0xe4, 0xf6, 0x5b, 0xbb, 0x64, 0x44, 0xa4, 0x16, 0x44, 0x50, 0xd4, - 0x4a, 0xe3, 0xc9, 0xa8, 0x66, 0xc2, 0xd0, 0xde, 0x51, 0xcd, 0x4f, 0x76, - 0x83, 0x9f, 0x7f, 0x98, 0x5b, 0xce, 0xea, 0x7b, 0x37, 0xa8, 0xaa, 0x97, - 0x84, 0x24, 0x73, 0x58, 0x56, 0x21, 0x54, 0x5e, 0xf0, 0xed, 0x4a, 0x78, - 0xa4, 0x71, 0x15, 0x4a, 0xed, 0xfb, 0xfb, 0x3e, 0x7d, 0xf6, 0xe3, 0xc1, - 0x65, 0xf5, 0xca, 0x81, 0x7b, 0xd8, 0x51, 0x04, 0x93, 0x12, 0x01, 0x77, - 0x12, 0xc9, 0xb1, 0x2a, 0x43, 0xff, 0xc6, 0x41, 0x45, 0x30, 0x01, 0x1d, - 0xe2, 0xaf, 0x5e, 0x06, 0xb9, 0xde, 0xe6, 0x28, 0xb7, 0x65, 0xfd, 0x5d, - 0xeb, 0xb3, 0xd8, 0xbe, 0x50, 0x3a, 0xf3, 0x87, 0x11, 0xfe, 0xd2, 0x53, - 0x95, 0x09, 0x79, 0x8f, 0x86, 0x41, 0xd3, 0x81, 0x25, 0x8b, 0x75, 0x17, - 0x33, 0x9c, 0xb7, 0xfc, 0xba, 0x53, 0x89, 0x8f, 0x5f, 0x83, 0xe3, 0x38, - 0x55, 0x0b, 0x45, 0x91, 0x18, 0xcf, 0x6f, 0x9e, 0x80, 0xb1, 0xe2, 0xfa, - 0x2b, 0xc2, 0x91, 0x73, 0x9d, 0x4a, 0x7a, 0x01, 0x62, 0x40, 0xa9, 0xe9, - 0xa7, 0x2b, 0x27, 0xd5, 0x4c, 0x7e, 0x70, 0xed, 0xa0, 0xf6, 0x8c, 0xce, - 0x54, 0xd2, 0xde, 0xfa, 0xf2, 0x00, 0xe4, 0xa1, 0x0b, 0x71, 0x55, 0x35, - 0xc3, 0x64, 0x06, 0x56, 0xf7, 0x84, 0xdc, 0x8a, 0x36, 0x1c, 0xe7, 0xc3, - 0xd1, 0xb4, 0x21, 0xb1, 0x0e, 0x5b, 0x8e, 0x28, 0xe7, 0x7b, 0x15, 0x08, - 0x87, 0x19, 0xb4, 0x69, 0xa4, 0xde, 0xfd, 0x69, 0x31, 0x6f, 0x23, 0x15, - 0x4f, 0x60, 0x04, 0xe0, 0xf0, 0x0a, 0x1e, 0x8d, 0x87, 0xb5, 0x42, 0x04, - 0xe4, 0xd5, 0xd6, 0x13, 0x58, 0x54, 0xaf, 0x5f, 0x27, 0xcd, 0x61, 0x0d, - 0x5e, 0xa3, 0x7a, 0x62, 0x16, 0x06, 0x38, 0x97, 0x98, 0x23, 0xa0, 0x1e, - 0xb2, 0x83, 0x88, 0x27, 0xd3, 0x37, 0x0f, 0x64, 0xa0, 0x71, 0x2a, 0xf1, - 0x18, 0x3b, 0x76, 0x76, 0x2d, 0x34, 0x3f, 0xe3, 0xdf, 0x00, 0x1a, 0xbe, - 0x8a, 0x21, 0xe9, 0x8d, 0x88, 0xb1, 0xdd, 0xba, 0x23, 0xea, 0x41, 0xcd, - 0x58, 0x4f, 0x38, 0xd2, 0x7f, 0x21, 0x77, 0xe4, 0xb5, 0xbc, 0xb4, 0x29, - 0xf4, 0xcd, 0x93, 0xf6, 0x7e, 0xf0, 0x3c, 0x03, 0x09, 0x47, 0x51, 0xc6, - 0x32, 0xd8, 0x4d, 0x62, 0x55, 0x44, 0x2f, 0x6e, 0xb2, 0x1b, 0xfa, 0x73, - 0x88, 0x6b, 0x3e, 0x44, 0x1d, 0x80, 0x5b, 0xcb, 0x7a, 0x88, 0xec, 0xe4, - 0xa2, 0xe5, 0x81, 0x0a, 0x18, 0xa5, 0xcf, 0x3c, 0x2f, 0x80, 0x88, 0x99, - 0x5f, 0x70, 0xbc, 0x79, 0x7d, 0x98, 0x81, 0x8f, 0x99, 0x99, 0x62, 0xe1, - 0x22, 0xa3, 0xf3, 0xa9, 0x4e, 0xdd, 0xb1, 0x0a, 0x80, 0x3e, 0x7a, 0xab, - 0xf3, 0x92, 0x4e, 0x15, 0xba, 0x17, 0x4f, 0x11, 0x5f, 0x36, 0x6f, 0xec, - 0x00, 0x63, 0x20, 0x84, 0xd3, 0x44, 0x49, 0x07, 0xfd, 0xfd, 0x5a, 0xd1, - 0xb7, 0x68, 0x57, 0xf3, 0x39, 0x52, 0x56, 0xaa, 0x88, 0xf2, 0x00, 0x75, - 0xcf, 0x8b, 0x1e, 0xa7, 0xd0, 0xb0, 0x15, 0x36, 0xb8, 0x7c, 0x10, 0x69, - 0x17, 0xb8, 0xf3, 0xa2, 0x15, 0xa1, 0xc6, 0x60, 0xa0, 0x41, 0x52, 0x54, - 0x06, 0x24, 0xba, 0xe3, 0x17, 0x0c, 0xec, 0xda, 0xa7, 0x6a, 0x87, 0x52, - 0x9b, 0x3f, 0xfd, 0x8e, 0xa2, 0x29, 0xff, 0x03, 0x85, 0x18, 0x32, 0x81, - 0x55, 0xf8, 0x89, 0x76, 0x3d, 0xb7, 0xba, 0x5a, 0x43, 0x2f, 0x55, 0x30, - 0x47, 0x63, 0x7c, 0x72, 0x02, 0xb2, 0x03, 0xa2, 0x17, 0x5a, 0x61, 0x72, - 0xdd, 0xd8, 0xb9, 0xab, 0xec, 0x3a, 0x3c, 0x2f, 0xc8, 0x41, 0xc7, 0xd9, - 0x0e, 0xf0, 0x66, 0x54, 0xca, 0x53, 0xa2, 0x65, 0xd4, 0x2e, 0xe5, 0x83, - 0x1e, 0xd3, 0x35, 0xf1, 0x3a, 0x11, 0xc0, 0x8e, 0x1e, 0x4d, 0x96, 0xe6, - 0xde, 0x61, 0xda, 0x16, 0x26, 0x04, 0x67, 0x0e, 0xc8, 0x5b, 0x65, 0x37, - 0xf9, 0xbd, 0xe1, 0xa0, 0x7a, 0x90, 0xcc, 0x2b, 0x9d, 0xa6, 0x75, 0x2f, - 0x62, 0x6e, 0x99, 0xdf, 0x4e, 0x81, 0x07, 0x3c, 0x33, 0x17, 0xc9, 0x34, - 0xb5, 0xb1, 0x63, 0xf0, 0x52, 0x50, 0xce, 0xca, 0x0d, 0x59, 0x0d, 0xac, - 0x72, 0x5b, 0x4a, 0xad, 0xcd, 0xde, 0x7d, 0x56, 0xe7, 0x64, 0xdd, 0xb2, - 0xc0, 0x8b, 0xa5, 0xfa, 0x82, 0xc7, 0xfe, 0x8d, 0xe5, 0xa4, 0xaa, 0x9f, - 0xb7, 0x8c, 0xeb, 0x21, 0x7d, 0xd9, 0x7b, 0x3f, 0xac, 0x56, 0xcc, 0x1f, - 0x60, 0x16, 0x0f, 0xc0, 0x16, 0x2a, 0x55, 0xf1, 0x7d, 0x72, 0x62, 0xf9, - 0x64, 0xaf, 0xec, 0xa2, 0x2e, 0x02, 0xf4, 0x36, 0x77, 0xf2, 0x6e, 0xac, - 0xff, 0x84, 0x39, 0x9e, 0x49, 0x96, 0xa3, 0x1b, 0x2f, 0x1a, 0x6f, 0xbe, - 0x91, 0x44, 0x3b, 0x89, 0x08, 0x31, 0xcf, 0x6b, 0xcc, 0x08, 0xb8, 0x3f, - 0x42, 0x77, 0xfe, 0xfc, 0xae, 0x03, 0x12, 0xc8, 0xc7, 0x64, 0x3d, 0x26, - 0x6c, 0x39, 0xee, 0x28, 0xcf, 0x8d, 0xef, 0x13, 0x32, 0x24, 0x8b, 0xcd, - 0x02, 0xd2, 0x59, 0xff, 0x2c, 0x26, 0x67, 0x02, 0xe4, 0xa7, 0xa4, 0x65, - 0x17, 0x6a, 0x5a, 0xf1, 0x8d, 0x02, 0xd6, 0xe6, 0xda, 0x46, 0xbb, 0x20, - 0x08, 0x0e, 0x52, 0x36, 0xcb, 0x29, 0xa3, 0x53, 0xde, 0xbe, 0xbf, 0x7d, - 0x8e, 0xb5, 0x08, 0x02, 0x1b, 0x06, 0x00, 0xd3, 0x1c, 0x00, 0x09, 0x8c, - 0x6e, 0x09, 0x98, 0xe9, 0x41, 0xd2, 0x66, 0x38, 0xee, 0x7a, 0xfd, 0xb8, - 0x2c, 0xb1, 0xe4, 0x38, 0x1d, 0xae, 0xc5, 0xb5, 0x6a, 0x72, 0x68, 0x52, - 0x27, 0x21, 0x3e, 0x64, 0x5c, 0xed, 0x98, 0x65, 0x03, 0xe3, 0x45, 0x33, - 0x48, 0x7f, 0x69, 0x25, 0x5b, 0x0a, 0x51, 0x32, 0xc3, 0xfe, 0xea, 0xc4, - 0x87, 0x1c, 0xf3, 0x2a, 0x0c, 0x96, 0x79, 0xe7, 0x85, 0x2d, 0xc8, 0x2d, - 0x78, 0xc9, 0xa3, 0xb6, 0xf6, 0x33, 0xde, 0xd0, 0xb6, 0xa5, 0xb5, 0x4d, - 0x92, 0x38, 0x30, 0xa4, 0xee, 0xa2, 0x18, 0x9e, 0xfe, 0x1c, 0xa3, 0xa9, - 0x09, 0xe0, 0xac, 0x52, 0xd9, 0x1b, 0x47, 0x51, 0x6c, 0x9a, 0x84, 0xd8, - 0xb7, 0x53, 0x70, 0xf5, 0x79, 0x36, 0x75, 0xbc, 0x40, 0x60, 0x60, 0x55, - 0x99, 0xe1, 0xf9, 0x83, 0x60, 0x86, 0x13, 0xac, 0x30, 0x07, 0xf2, 0x13, - 0xcf, 0x8b, 0xa4, 0x8d, 0x7d, 0xeb, 0x13, 0x60, 0xeb, 0x61, 0x96, 0x6d, - 0xdf, 0x1f, 0xa9, 0xfe, 0xd6, 0x17, 0x42, 0xa4, 0x27, 0x8a, 0x64, 0x9a, - 0x98, 0xfa, 0xe5, 0x91, 0xdf, 0xca, 0xfd, 0xf3, 0x42, 0xba, 0x95, 0x69, - 0x39, 0xc1, 0x2b, 0xaa, 0x53, 0xa9, 0x80, 0x88, 0x39, 0x02, 0x46, 0x52, - 0x27, 0x4d, 0x39, 0x49, 0xf2, 0x4a, 0xfb, 0x86, 0xd6, 0x75, 0x54, 0xd5, - 0x72, 0x9a, 0x69, 0x2a, 0xb2, 0x8c, 0xe9, 0x52, 0x4a, 0x4d, 0xd6, 0xd5, - 0xd6, 0xbb, 0x88, 0x36, 0xc1, 0x99, 0x7d, 0x67, 0xa3, 0xea, 0xcc, 0x81, - 0x39, 0x59, 0x5e, 0x79, 0x55, 0x58, 0x43, 0x12, 0xff, 0x91, 0xd9, 0xed, - 0xc1, 0x2e, 0x35, 0x9a, 0xee, 0x94, 0xd3, 0x51, 0xab, 0x22, 0xec, 0x67, - 0xcc, 0x65, 0x46, 0x2b, 0x6b, 0x20, 0x6d, 0xf5, 0xb0, 0x22, 0x29, 0x72, - 0x23, 0x11, 0xb2, 0x75, 0xc5, 0xaf, 0x71, 0x24, 0xb8, 0x80, 0xd9, 0x2a, - 0x52, 0xef, 0x22, 0x34, 0x94, 0xeb, 0x99, 0x79, 0xe5, 0xfd, 0xcf, 0x68, - 0x91, 0x51, 0x90, 0x4f, 0xd9, 0x3b, 0xac, 0x80, 0xe0, 0xdf, 0xc2, 0xa3, - 0xfd, 0xc4, 0x18, 0xf3, 0x9b, 0x26, 0x4e, 0xe1, 0xdc, 0x8f, 0x70, 0x29, - 0xbe, 0x6c, 0xc3, 0xd0, 0x34, 0xa7, 0x2c, 0xee, 0xd7, 0x22, 0xc9, 0x8c, - 0xd4, 0xf0, 0x44, 0xe5, 0x85, 0xfb, 0xc9, 0x00, 0xd7, 0x7a, 0x04, 0x46, - 0xdd, 0x92, 0x2a, 0xc7, 0x58, 0x28, 0xcb, 0xff, 0xeb, 0xe1, 0x0d, 0x8a, - 0x0a, 0x15, 0xa2, 0x54, 0x75, 0xc1, 0x94, 0x1b, 0xdc, 0xb0, 0x3e, 0x2d, - 0x7d, 0x0a, 0x14, 0xc6, 0xc6, 0xfd, 0x1d, 0x85, 0x53, 0x94, 0x2f, 0xb1, - 0xc8, 0x78, 0x8c, 0x25, 0xb5, 0xc0, 0x7c, 0xff, 0x0f, 0x7a, 0x67, 0xde, - 0x86, 0x00, 0xed, 0x42, 0xc9, 0xc1, 0xea, 0x1b, 0x45, 0x61, 0x58, 0x4b, - 0xe2, 0x36, 0xaa, 0x6d, 0xdc, 0x14, 0xaf, 0x4e, 0x5b, 0x6e, 0x6d, 0x48, - 0xe0, 0x5a, 0xd8, 0xed, 0xe0, 0x4d, 0xc0, 0xec, 0xdd, 0x00, 0xbf, 0xae, - 0x16, 0x35, 0x80, 0x6b, 0xd7, 0x3d, 0x12, 0xea, 0x65, 0xef, 0x5a, 0x78, - 0xe6, 0x12, 0x71, 0xa6, 0xc1, 0x02, 0x83, 0x16, 0x44, 0x23, 0x38, 0xdf, - 0xe7, 0x52, 0x8e, 0xd8, 0xc6, 0xff, 0xd7, 0x34, 0x99, 0x78, 0xe7, 0x06, - 0x8a, 0xaf, 0xb8, 0x0b, 0xbc, 0x42, 0x86, 0x23, 0x0d, 0x3d, 0xfd, 0x00, - 0x2f, 0xd8, 0x86, 0xc1, 0x58, 0xce, 0xe6, 0xf1, 0x38, 0x53, 0xf0, 0x24, - 0x15, 0xbd, 0x67, 0x9e, 0xad, 0x4b, 0xf7, 0xec, 0xbb, 0x0e, 0x7c, 0xa6, - 0x8e, 0x01, 0x18, 0x7a, 0x7f, 0xe6, 0x58, 0x28, 0x4f, 0x04, 0x17, 0xc0, - 0x47, 0x7e, 0x4b, 0xf6, 0x9a, 0xc1, 0x37, 0x94, 0x65, 0xb9, 0xb5, 0x96, - 0x32, 0x39, 0xc9, 0xfc, 0xa9, 0xa8, 0x22, 0xb5, 0xa2, 0x1e, 0x55, 0xc2, - 0xfb, 0x63, 0x52, 0x3e, 0x09, 0xfd, 0x84, 0x33, 0x1e, 0x30, 0x1a, 0x3d, - 0x87, 0x09, 0x6c, 0xc6, 0x04, 0x2a, 0x73, 0x78, 0x7e, 0xee, 0x08, 0x54, - 0xef, 0xc4, 0xad, 0x87, 0xe5, 0x32, 0x44, 0x8d, 0x4a, 0xfc, 0xe0, 0xef, - 0x2a, 0x82, 0x7a, 0x69, 0x31, 0x25, 0xca, 0xb6, 0x8d, 0xe0, 0x2e, 0xa2, - 0x20, 0x1b, 0x9e, 0xd7, 0xe0, 0x68, 0x39, 0x46, 0xf3, 0xcb, 0xf0, 0x5e, - 0x5d, 0xe2, 0x6b, 0xb6, 0x29, 0xeb, 0xb9, 0x53, 0x0e, 0xd3, 0xd7, 0x13, - 0x56, 0x84, 0x4e, 0x14, 0x46, 0xf8, 0x4e, 0x5f, 0x1f, 0xe4, 0xd1, 0x9d, - 0xf5, 0x1f, 0x11, 0x51, 0xcb, 0x88, 0xee, 0x8c, 0x19, 0x72, 0x49, 0xd8, - 0x9d, 0xeb, 0xb9, 0x03, 0xe8, 0xf7, 0x7f, 0xa8, 0x1d, 0xfe, 0x29, 0x47, - 0x4b, 0x7b, 0xaa, 0x25, 0x7d, 0x5a, 0x69, 0xa0, 0xc5, 0x90, 0x59, 0xe1, - 0x4c, 0x77, 0x21, 0xa7, 0x76, 0xea, 0x89, 0x37, 0xb2, 0xfa, 0xe9, 0x02, - 0x74, 0x22, 0xc5, 0x4e, 0xa6, 0x36, 0x8f, 0x72, 0x9d, 0x0b, 0xe0, 0xe8, - 0x15, 0x6d, 0x9e, 0xb3, 0xe4, 0x88, 0xb5, 0x88, 0x0b, 0x50, 0x33, 0x7d, - 0x4a, 0xb7, 0x28, 0xda, 0xba, 0xdf, 0x5e, 0xe7, 0x26, 0x25, 0xd2, 0x53, - 0xe6, 0xd9, 0xfa, 0x89, 0x82, 0x7a, 0x61, 0xe0, 0xba, 0xf3, 0xc1, 0xf6, - 0x54, 0x59, 0x0e, 0x74, 0x80, 0xa2, 0xc4, 0x12, 0x6c, 0x25, 0xc4, 0xc1, - 0x3b, 0x83, 0x03, 0x27, 0x2e, 0x7f, 0x7c, 0xd5, 0xe1, 0x8f, 0xcd, 0xe6, - 0x96, 0x2e, 0xbf, 0x37, 0x00, 0x5e, 0xb8, 0xf4, 0x9a, 0xfb, 0x68, 0x07, - 0xc8, 0xd4, 0x38, 0x76, 0x17, 0xc0, 0x5d, 0x5d, 0xd5, 0x5e, 0x39, 0x0c, - 0x6d, 0x2d, 0xce, 0xbd, 0xf9, 0xea, 0x5d, 0x89, 0x41, 0xb4, 0x32, 0x7a, - 0xda, 0xce, 0x2a, 0x0c, 0x95, 0x68, 0xf8, 0x7d, 0x1b, 0xae, 0x4b, 0xf1, - 0xe0, 0xaf, 0x44, 0x04, 0x7d, 0xe9, 0x0a, 0x52, 0x08, 0x56, 0x6a, 0x42, - 0xc8, 0xc1, 0xe9, 0xb9, 0x78, 0x16, 0x21, 0x16, 0x1f, 0x2c, 0x12, 0x26, - 0xc2, 0x5a, 0x3e, 0xc4, 0xa8, 0xcb, 0x69, 0xe9, 0x0f, 0xed, 0xdb, 0x3e, - 0xf3, 0x4d, 0x9a, 0xc7, 0x95, 0x8e, 0x42, 0x23, 0x50, 0x8f, 0x58, 0x53, - 0x23, 0xab, 0x5b, 0xc7, 0x11, 0xd8, 0xb8, 0xb5, 0x2b, 0xa7, 0xc5, 0xaf, - 0x34, 0x3b, 0x1a, 0x25, 0xe0, 0xef, 0xb3, 0x9c, 0x7c, 0x99, 0xdb, 0x72, - 0x69, 0x81, 0x11, 0x77, 0xae, 0xdb, 0x8a, 0x57, 0xa9, 0xa0, 0x2c, 0xe1, - 0xba, 0x74, 0x65, 0x58, 0x01, 0x2d, 0xb7, 0x76, 0x5c, 0xee, 0xf3, 0x18, - 0x2f, 0x7a, 0xe1, 0x59, 0xa8, 0x46, 0xac, 0x9e, 0x18, 0x71, 0xde, 0xc4, - 0xe9, 0x8a, 0x28, 0x28, 0xe8, 0x6b, 0x54, 0x23, 0x10, 0x5e, 0x9d, 0xd0, - 0xa4, 0x22, 0x9b, 0x18, 0x6b, 0xd3, 0xfc, 0x5f, 0xaf, 0x98, 0x5c, 0x02, - 0xc7, 0x96, 0x91, 0x64, 0xbd, 0x65, 0xa0, 0x6c, 0x78, 0xdc, 0x25, 0x63, - 0x49, 0x63, 0x2d, 0x79, 0x1e, 0x40, 0x9a, 0x40, 0xb1, 0xbf, 0x6b, 0x50, - 0x01, 0xeb, 0xbc, 0x4b, 0xd5, 0x00, 0x07, 0xbb, 0x2e, 0xfa, 0x23, 0x27, - 0x9b, 0x25, 0x68, 0x1e, 0x6f, 0x41, 0x2d, 0xda, 0xd6, 0x6b, 0x6f, 0xd7, - 0x9e, 0x90, 0x05, 0x24, 0xe5, 0xce, 0xee, 0x0a, 0x7f, 0x27, 0x19, 0x0c, - 0xc2, 0x28, 0xb2, 0x04, 0x37, 0x0b, 0xb5, 0x64, 0x8a, 0x35, 0x4e, 0xc5, - 0x2a, 0x69, 0xf4, 0x61, 0x4f, 0x31, 0x50, 0x3e, 0x44, 0x67, 0xfa, 0xbc, - 0x50, 0xfd, 0xc3, 0x91, 0x17, 0x45, 0xa8, 0x3e, 0x0d, 0x18, 0x5c, 0xe3, - 0x0a, 0x88, 0x6a, 0x42, 0x84, 0xd8, 0x42, 0x52, 0x05, 0x4b, 0x1c, 0x06, - 0xce, 0x27, 0xbc, 0xa5, 0x45, 0xec, 0xd2, 0x9d, 0xda, 0xd6, 0x88, 0xfd, - 0xf4, 0x2c, 0xd5, 0x3e, 0x3d, 0x74, 0xca, 0x56, 0x54, 0x7f, 0xfd, 0xa6, - 0xdc, 0xb2, 0x76, 0xfb, 0x7f, 0x5b, 0xd8, 0x22, 0x2c, 0x7b, 0xae, 0x15, - 0x37, 0x38, 0x46, 0xd8, 0x77, 0x02, 0x49, 0xd2, 0x69, 0xf3, 0x29, 0x65, - 0xe9, 0x82, 0xcf, 0x3a, 0x2c, 0x50, 0xb1, 0xea, 0x22, 0x79, 0x1d, 0x95, - 0xb4, 0x10, 0xbe, 0x87, 0x15, 0xc9, 0x86, 0x2f, 0x43, 0x62, 0x4d, 0x65, - 0xce, 0xa9, 0x8b, 0x2c, 0xf3, 0xbe, 0xa2, 0x17, 0x77, 0x49, 0x1b, 0xfa, - 0x5d, 0xf7, 0x8c, 0xf7, 0xe8, 0xc9, 0x69, 0xc4, 0x83, 0x9e, 0xd5, 0x1b, - 0x8a, 0x94, 0xdc, 0x20, 0x6f, 0x40, 0xb5, 0x17, 0x57, 0xaf, 0x95, 0xc7, - 0xd1, 0x2d, 0x77, 0xee, 0xc8, 0x9e, 0x08, 0x6f, 0x35, 0xe7, 0x1f, 0xaa, - 0x22, 0x26, 0x00, 0xe2, 0x1d, 0x79, 0xd8, 0xe5, 0xb3, 0x8a, 0x6b, 0xeb, - 0x5a, 0xe4, 0xa3, 0x3c, 0x5b, 0x83, 0xdd, 0x2b, 0xdd, 0x44, 0xc7, 0x1e, - 0xbd, 0x1e, 0x9f, 0x96, 0x8f, 0x0c, 0xce, 0x72, 0x54, 0xad, 0xf7, 0x70, - 0xba, 0x7d, 0x35, 0x0c, 0xdc, 0x3b, 0x0f, 0xda, 0x22, 0xe4, 0x17, 0x9f, - 0x8e, 0x19, 0xe3, 0xb1, 0x85, 0xf7, 0x75, 0x4a, 0x98, 0xf5, 0x78, 0xd1, - 0x8c, 0xf6, 0xac, 0xed, 0x66, 0x01, 0x7a, 0x62, 0xc7, 0x6e, 0x17, 0xac, - 0xf3, 0xba, 0xa6, 0x21, 0x8a, 0xed, 0x85, 0x1f, 0x5d, 0x40, 0x14, 0xaa, - 0x21, 0x18, 0x33, 0xaa, 0xc5, 0x92, 0x8f, 0x90, 0x05, 0xcc, 0xa1, 0x57, - 0xc9, 0x64, 0x10, 0xd7, 0x04, 0xdb, 0x94, 0xeb, 0x81, 0x42, 0xf4, 0x8c, - 0x51, 0x92, 0x44, 0x14, 0x85, 0x5b, 0x9e, 0xa8, 0x32, 0xd5, 0x8b, 0x26, - 0x36, 0x8b, 0x27, 0x9d, 0x77, 0x32, 0x2e, 0x2f, 0x2f, 0xf2, 0xf9, 0x65, - 0x13, 0xdb, 0xc0, 0x3e, 0xf7, 0xc7, 0x5b, 0x1b, 0x3f, 0xc1, 0x4b, 0xdd, - 0x7b, 0x71, 0xbe, 0xc4, 0xab, 0xe1, 0x53, 0xbf, 0x84, 0xde, 0xb3, 0x17, - 0xc3, 0x71, 0x6d, 0x61, 0x31, 0x52, 0x9b, 0x24, 0xd3, 0x3b, 0xf6, 0x9c, - 0xd1, 0x93, 0x60, 0xfc, 0xc7, 0x94, 0xc1, 0xc5, 0x49, 0x22, 0xa1, 0xa8, - 0x50, 0xce, 0xdd, 0x90, 0x2d, 0xed, 0xc2, 0x7e, 0x95, 0x43, 0xb5, 0x8f, - 0xae, 0x0d, 0x16, 0xe3, 0xac, 0x92, 0x86, 0x10, 0xa3, 0xb4, 0x06, 0xb7, - 0x58, 0x41, 0x50, 0x4c, 0xa5, 0xe1, 0x8f, 0xfb, 0x31, 0xff, 0x33, 0x82, - 0x15, 0x09, 0x1a, 0x1e, 0x2d, 0x7f, 0x00, 0x10, 0x97, 0x04, 0xc2, 0xfd, - 0xb9, 0xf1, 0x2c, 0x10, 0x0e, 0x2c, 0xe8, 0x19, 0x69, 0xf4, 0x38, 0xce, - 0xdf, 0xff, 0x2d, 0x80, 0x97, 0xbb, 0xe1, 0x0a, 0xa1, 0x6a, 0x15, 0xaa, - 0x8e, 0x97, 0x0e, 0x98, 0x5e, 0x44, 0x48, 0xd3, 0x01, 0xd2, 0xcc, 0x89, - 0x92, 0x13, 0x82, 0xd3, 0x62, 0xe3, 0x30, 0xdd, 0x25, 0xbe, 0x37, 0xed, - 0x34, 0x7f, 0xbc, 0x1f, 0x07, 0x07, 0xde, 0x80, 0x8b, 0xfc, 0x11, 0x4c, - 0x7f, 0x17, 0x37, 0xeb, 0x5f, 0x48, 0x21, 0xbc, 0x75, 0x7e, 0x44, 0xec, - 0xb8, 0x9a, 0x59, 0x5e, 0x72, 0x8a, 0x5f, 0x9d, 0x70, 0xb5, 0xa2, 0x12, - 0xdd, 0x09, 0x0b, 0x85, 0xd8, 0xdb, 0x60, 0x06, 0x3d, 0x10, 0xf3, 0x8a, - 0xc2, 0x61, 0xe5, 0x47, 0x46, 0x2b, 0xb1, 0x54, 0xa8, 0xfd, 0xf0, 0x0b, - 0xde, 0x83, 0xc5, 0x43, 0x98, 0x00, 0x25, 0xc5, 0x3c, 0xf0, 0x8a, 0xd7, - 0xd0, 0xe0, 0x4a, 0x43, 0x30, 0x38, 0x89, 0xbb, 0x43, 0x5d, 0x7e, 0xbc, - 0x83, 0x33, 0x03, 0x37, 0xe4, 0x58, 0x90, 0x2e, 0x41, 0x8f, 0x7d, 0xc6, - 0x1a, 0x05, 0x3b, 0xe5, 0x98, 0x9a, 0x19, 0x35, 0x48, 0x53, 0xb0, 0x55, - 0xdd, 0xe8, 0x46, 0xfb, 0x78, 0x3e, 0xd7, 0x8e, 0xda, 0xe3, 0x92, 0x94, - 0x6d, 0x73, 0x3b, 0x4c, 0xea, 0x1f, 0x7c, 0xeb, 0x23, 0xcf, 0x27, 0x38, - 0x15, 0xd1, 0x8d, 0x71, 0xd8, 0x5e, 0x36, 0x9b, 0x33, 0xf8, 0xae, 0x3b, - 0x3b, 0x8c, 0xc0, 0x4d, 0xd8, 0xb6, 0x31, 0x37, 0x1a, 0x43, 0xdc, 0x4b, - 0x97, 0xe8, 0x9f, 0x09, 0x26, 0xf5, 0x68, 0x17, 0x4c, 0x3b, 0x55, 0x67, - 0x7e, 0xac, 0x49, 0xe8, 0xd7, 0x23, 0x04, 0x5b, 0x16, 0xb2, 0x3c, 0xb0, - 0x36, 0x57, 0x29, 0x8b, 0x12, 0x53, 0xfd, 0x95, 0x14, 0x06, 0x2a, 0x5b, - 0x7b, 0x6b, 0x3b, 0x3d, 0xba, 0xa4, 0xa1, 0xf1, 0xfd, 0xf7, 0xc4, 0xc9, - 0xc9, 0x5c, 0xd5, 0xf4, 0x79, 0xd3, 0x31, 0x3c, 0x97, 0x1b, 0x14, 0x45, - 0x5e, 0x3e, 0x4e, 0x66, 0x4f, 0xb5, 0x21, 0x04, 0xf2, 0xb3, 0x25, 0xaf, - 0x40, 0xe4, 0xaa, 0x02, 0xea, 0x8c, 0x0f, 0xa3, 0xd5, 0x4c, 0x22, 0xcb, - 0x12, 0x5f, 0x53, 0x76, 0x7a, 0x8f, 0x9f, 0xc0, 0x0c, 0x3b, 0x04, 0xb2, - 0xb4, 0x74, 0x6e, 0xb8, 0x28, 0x10, 0x41, 0x33, 0xec, 0x2b, 0xc2, 0x36, - 0x04, 0xdb, 0x4b, 0x62, 0xbe, 0x54, 0x21, 0xb5, 0x9b, 0x60, 0x56, 0xd9, - 0x10, 0x6a, 0xe1, 0xc8, 0x7c, 0x07, 0xe2, 0x3e, 0x1b, 0xc2, 0x86, 0xdc, - 0x9a, 0x09, 0xe4, 0xab, 0x74, 0x5c, 0x57, 0x3c, 0x6d, 0x1b, 0x9d, 0xe6, - 0xf2, 0x28, 0x21, 0xd8, 0x8e, 0xd7, 0x0d, 0xad, 0x33, 0x28, 0x27, 0x79, - 0xae, 0x70, 0x36, 0x83, 0x88, 0xb3, 0x47, 0x63, 0x79, 0xb7, 0xa6, 0xd1, - 0xf8, 0x96, 0x79, 0x2e, 0x21, 0xcd, 0x09, 0x6a, 0x14, 0x83, 0xa9, 0x03, - 0x3d, 0x87, 0x7b, 0x68, 0x78, 0xef, 0x4c, 0x8c, 0x23, 0xaa, 0xa2, 0xd8, - 0x70, 0x3e, 0x3f, 0xf3, 0x50, 0xfb, 0x16, 0xfe, 0x40, 0x5b, 0x74, 0xe1, - 0x8f, 0x1c, 0xeb, 0x57, 0xb2, 0xfd, 0x37, 0x4a, 0x75, 0xfc, 0x21, 0xc4, - 0x50, 0x69, 0x2d, 0x91, 0xda, 0x2d, 0xec, 0x9c, 0xd1, 0x86, 0x2f, 0xeb, - 0x63, 0xd0, 0xf8, 0x37, 0x06, 0x8b, 0x8c, 0x4a, 0xc7, 0x18, 0x1e, 0x2c, - 0xcf, 0x36, 0x93, 0x2a, 0x8f, 0xa2, 0xdd, 0x72, 0x71, 0x50, 0xeb, 0x79, - 0x20, 0xd1, 0x95, 0xbc, 0x81, 0x77, 0x79, 0x4a, 0x29, 0x4d, 0x15, 0x59, - 0x49, 0x83, 0x3e, 0xbc, 0x7f, 0x33, 0x90, 0x6a, 0x3f, 0xd0, 0xea, 0x7e, - 0x97, 0x8a, 0x40, 0x17, 0x71, 0xc1, 0xce, 0x3e, 0xc7, 0xae, 0x10, 0xa6, - 0x72, 0xf8, 0xec, 0x69, 0xf6, 0x41, 0xa9, 0xa8, 0xe4, 0x81, 0x6d, 0x41, - 0xc6, 0x63, 0x97, 0xda, 0x03, 0xaf, 0xba, 0x0b, 0xe9, 0x1e, 0xd5, 0x8d, - 0x8d, 0x28, 0xd4, 0x0e, 0xfc, 0x80, 0xb3, 0x6d, 0xf7, 0x7c, 0xa2, 0x00, - 0x39, 0x9e, 0x8d, 0x65, 0x3d, 0x96, 0xa6, 0x79, 0x97, 0xe2, 0x23, 0xee, - 0x98, 0xf7, 0x0c, 0xc2, 0xe9, 0xc7, 0x87, 0xab, 0x6e, 0xcf, 0xbe, 0xbb, - 0xc2, 0x8b, 0x34, 0x25, 0x33, 0x99, 0x40, 0xfd, 0x1b, 0x55, 0x3b, 0xf8, - 0x9e, 0x49, 0x45, 0xf9, 0x31, 0x48, 0x54, 0x15, 0x7d, 0xbf, 0x48, 0x85, - 0x0a, 0x6d, 0xf5, 0xd1, 0xe3, 0x63, 0x8d, 0xe1, 0xca, 0xa3, 0x14, 0xe1, - 0xe6, 0xa5, 0x27, 0x61, 0x08, 0xe2, 0x27, 0xdf, 0xfe, 0xb1, 0xb5, 0x82, - 0x77, 0xb8, 0xe3, 0x6e, 0x4a, 0x7a, 0x98, 0x4f, 0x0d, 0x1e, 0x6b, 0xf2, - 0x9e, 0x54, 0x88, 0xd1, 0xce, 0x14, 0xa7, 0xde, 0xa4, 0x89, 0x50, 0xe1, - 0xc7, 0x0a, 0xef, 0xec, 0x6a, 0xd5, 0x85, 0x9c, 0x70, 0xda, 0x9d, 0x7e, - 0x27, 0x31, 0x80, 0xfc, 0xd1, 0x23, 0x5e, 0xb7, 0xf7, 0x5d, 0x0a, 0x8b, - 0x64, 0x83, 0xd4, 0x31, 0xcd, 0x45, 0xf4, 0xd8, 0xcf, 0xc2, 0xe1, 0x96, - 0xad, 0xc7, 0x57, 0x7d, 0x6e, 0x50, 0xe6, 0xbb, 0x3f, 0xbe, 0xc3, 0x69, - 0x0a, 0x58, 0x7b, 0x27, 0x3c, 0x3b, 0xdd, 0xf5, 0xbd, 0xa7, 0x4d, 0x08, - 0xf9, 0xe1, 0xff, 0x73, 0xee, 0x5e, 0x1f, 0x98, 0x5a, 0x75, 0xca, 0xf3, - 0x13, 0xd5, 0x7a, 0x2a, 0xfc, 0xc3, 0x09, 0x5d, 0xda, 0x24, 0xb6, 0xdc, - 0x70, 0xd2, 0xd9, 0x00, 0xfd, 0xce, 0xf3, 0xc4, 0x23, 0x2c, 0xf7, 0xf7, - 0x7f, 0x2a, 0x3a, 0xad, 0x22, 0xb0, 0x71, 0x1f, 0x0e, 0x67, 0x93, 0x33, - 0x05, 0x75, 0x70, 0x01, 0xca, 0xae, 0x88, 0xfa, 0xec, 0xd3, 0x57, 0x21, - 0x88, 0x75, 0x00, 0x6b, 0x5e, 0x99, 0x4c, 0xba, 0x22, 0x11, 0xa0, 0x95, - 0xfa, 0xfe, 0x8c, 0x2c, 0xda, 0xef, 0x85, 0x0a, 0xeb, 0x76, 0xe8, 0x50, - 0x18, 0xa5, 0x0c, 0x07, 0x0a, 0x0a, 0xe4, 0x13, 0x84, 0x88, 0x97, 0x6e, - 0xff, 0x13, 0x31, 0x9a, 0x0f, 0xb4, 0x4a, 0xd0, 0x90, 0x43, 0xa2, 0x4a, - 0x8a, 0x60, 0xa8, 0x6a, 0x02, 0xbf, 0x52, 0x44, 0xb7, 0xb6, 0x80, 0xd3, - 0x48, 0xb7, 0x9d, 0x65, 0xde, 0xb2, 0x4b, 0x75, 0x76, 0xb5, 0xf1, 0x81, - 0x3d, 0x85, 0xbc, 0xad, 0xd6, 0x5d, 0x7b, 0xea, 0xc5, 0x47, 0x61, 0x6e, - 0x9e, 0x41, 0x2a, 0xbd, 0xe8, 0xd4, 0xfe, 0x4d, 0x4f, 0xe2, 0x49, 0x0d, - 0x5d, 0xf5, 0x83, 0x51, 0x44, 0x81, 0x87, 0x42, 0x06, 0xc9, 0xe8, 0xdc, - 0x21, 0xff, 0xdc, 0x61, 0xe1, 0xc2, 0x11, 0x65, 0x98, 0x24, 0xde, 0x2d, - 0x75, 0x39, 0xe2, 0xac, 0xb8, 0x88, 0x1f, 0x79, 0x21, 0xa1, 0xfd, 0xd3, - 0x74, 0x17, 0xe8, 0x0d, 0x1f, 0x88, 0x57, 0x6e, 0xd8, 0xf0, 0x22, 0x5b, - 0x0a, 0x3a, 0xff, 0xb2, 0x2a, 0xcb, 0x8b, 0x16, 0x97, 0xf2, 0xdb, 0xb1, - 0xed, 0x70, 0xb4, 0xeb, 0xac, 0x59, 0x32, 0x62, 0xf3, 0xc6, 0x69, 0x8c, - 0xbb, 0x82, 0x71, 0x3e, 0xff, 0xfc, 0x6a, 0x12, 0xe6, 0xd9, 0x58, 0x32, - 0x91, 0x39, 0x81, 0xad, 0x59, 0x70, 0x63, 0xf7, 0xdc, 0x76, 0xbf, 0xa3, - 0xdd, 0xc8, 0x54, 0x94, 0x10, 0x62, 0xce, 0x20, 0x38, 0x64, 0x9f, 0x7a, - 0x5f, 0xfb, 0x67, 0x34, 0x61, 0xed, 0xc4, 0x4d, 0x1c, 0x5b, 0x67, 0xbb, - 0x4c, 0x26, 0x25, 0x72, 0x81, 0xbf, 0x4a, 0xfc, 0x79, 0x52, 0xf9, 0x1d, - 0xbf, 0x22, 0xc4, 0x1c, 0xa1, 0x42, 0xe4, 0x90, 0x7a, 0x35, 0xd5, 0xaf, - 0x05, 0x13, 0xcc, 0x04, 0xbb, 0xbc, 0xb0, 0x89, 0x2e, 0x12, 0x0a, 0x84, - 0xeb, 0x84, 0xf8, 0x88, 0x10, 0x02, 0xaf, 0x9a, 0x62, 0x50, 0x01, 0x08, - 0x1c, 0xb0, 0x0f, 0x22, 0x5f, 0x7b, 0xc9, 0xf2, 0x7c, 0xb5, 0x6e, 0x17, - 0xbc, 0x8b, 0xda, 0x4b, 0x38, 0x0e, 0x3e, 0xf8, 0xa1, 0x8d, 0x9f, 0x59, - 0x45, 0x11, 0x8c, 0x8e, 0x99, 0x93, 0x81, 0x5a, 0xc7, 0xc6, 0x83, 0x9a, - 0x65, 0xa8, 0x12, 0xdb, 0xb5, 0x11, 0x6a, 0xa7, 0x4e, 0xa3, 0x63, 0xe4, - 0x4b, 0xd2, 0x7c, 0x6e, 0xfd, 0x65, 0xcb, 0x8a, 0x7c, 0x9e, 0x0f, 0x65, - 0x54, 0xe8, 0x3d, 0xca, 0xf9, 0x79, 0xbf, 0xc0, 0x39, 0xb9, 0x5c, 0x21, - 0x2f, 0x84, 0x19, 0x76, 0xc7, 0xdd, 0xcb, 0xb7, 0xb5, 0xfa, 0xdc, 0x80, - 0x11, 0x21, 0xb8, 0xac, 0x27, 0x07, 0xbb, 0xe0, 0xdd, 0x44, 0x07, 0x49, - 0x39, 0x38, 0x02, 0x32, 0xe0, 0x95, 0xbc, 0x28, 0x08, 0x06, 0x5b, 0xcc, - 0xcb, 0x64, 0xd5, 0x8b, 0xa0, 0x19, 0xe9, 0xa8, 0x63, 0xf0, 0x40, 0x41, - 0x51, 0x04, 0x81, 0x7a, 0xbf, 0x78, 0x27, 0x9c, 0x55, 0x0a, 0x56, 0x3b, - 0xc2, 0xd0, 0x43, 0xe4, 0xc8, 0x98, 0x40, 0x93, 0xf8, 0x10, 0xdb, 0x8a, - 0x1d, 0x1f, 0x80, 0x3f, 0x05, 0x9c, 0xa7, 0xfb, 0x4b, 0xef, 0x98, 0xfa, - 0x72, 0x6d, 0x92, 0xa7, 0x06, 0xb3, 0xa2, 0x4d, 0x55, 0x74, 0xc1, 0x12, - 0xbe, 0x1d, 0x9b, 0xee, 0x34, 0xd9, 0x3f, 0x53, 0x92, 0xcc, 0x77, 0x74, - 0x33, 0x82, 0x64, 0x42, 0xee, 0xea, 0xa0, 0x06, 0xec, 0x9a, 0x66, 0xab, - 0x38, 0x48, 0x33, 0x21, 0x9a, 0x84, 0x57, 0x34, 0x3e, 0xef, 0x41, 0x5b, - 0xc7, 0xf8, 0x0b, 0x56, 0xf4, 0x20, 0x37, 0xde, 0x88, 0xce, 0xf5, 0x50, - 0x2a, 0x2d, 0x48, 0x30, 0xc3, 0x91, 0x96, 0x98, 0xb6, 0x77, 0x8f, 0xf1, - 0x72, 0xa2, 0x44, 0x36, 0xf3, 0x6e, 0xa6, 0x0d, 0x8f, 0x6f, 0xda, 0x57, - 0x85, 0x43, 0x84, 0x08, 0x4b, 0xa7, 0xb8, 0xe5, 0x9b, 0x30, 0xd1, 0x77, - 0xd1, 0x30, 0xe8, 0x3f, 0x10, 0x43, 0x04, 0x43, 0xed, 0x90, 0xcb, 0x64, - 0x28, 0x11, 0x66, 0xed, 0x54, 0xa4, 0xee, 0xd1, 0xdc, 0xc2, 0xb5, 0x31, - 0xba, 0x4a, 0x03, 0x11, 0x4d, 0x3c, 0xa3, 0x3b, 0x06, 0xeb, 0x99, 0xc9, - 0xdd, 0x72, 0x2b, 0xb0, 0x6e, 0x96, 0x21, 0x28, 0x45, 0xf8, 0x8a, 0x5f, - 0x17, 0x32, 0x05, 0xfd, 0xd8, 0x30, 0xda, 0x63, 0x59, 0x84, 0x8b, 0xad, - 0xf0, 0x3e, 0x35, 0xd7, 0x12, 0x08, 0xc2, 0xcf, 0x46, 0x24, 0xfd, 0x62, - 0xc6, 0xf3, 0x22, 0x2c, 0xb4, 0xf1, 0xb4, 0x92, 0x73, 0x25, 0x99, 0xed, - 0xd7, 0x6d, 0x20, 0xaa, 0x8c, 0x59, 0x1a, 0x81, 0x66, 0xbe, 0x30, 0x9b, - 0x06, 0x97, 0xb1, 0xb1, 0xb4, 0xc4, 0x75, 0x7b, 0xd0, 0x19, 0xa1, 0xb2, - 0x67, 0x96, 0xd2, 0xf5, 0x0b, 0x4a, 0xaf, 0x6e, 0xd8, 0x11, 0x27, 0x92, - 0x70, 0xd3, 0xc6, 0x92, 0xcd, 0xc7, 0xdd, 0x18, 0xc5, 0xed, 0xf2, 0x3c, - 0x9c, 0x91, 0x5e, 0x3e, 0xa2, 0x69, 0x59, 0x90, 0x7b, 0x16, 0x80, 0x1c, - 0xf7, 0x4b, 0x64, 0xd1, 0xdd, 0xc1, 0xd6, 0x84, 0xe7, 0x27, 0x27, 0x6b, - 0x6e, 0x2c, 0x71, 0x03, 0x22, 0x14, 0xb0, 0x4d, 0x83, 0x43, 0x70, 0x75, - 0x8b, 0x12, 0xff, 0x66, 0x7e, 0xa7, 0x61, 0x52, 0x9e, 0x43, 0x6b, 0x52, - 0xe2, 0x44, 0xc7, 0x02, 0x9f, 0x4e, 0x29, 0xe4, 0x7e, 0x25, 0x38, 0x94, - 0xc3, 0x54, 0xad, 0x85, 0xf5, 0xbc, 0xb0, 0xe1, 0x85, 0x53, 0x41, 0x0f, - 0x78, 0x48, 0xd7, 0xdc, 0x02, 0xd3, 0x3b, 0xd2, 0x5e, 0x6f, 0x75, 0x9c, - 0xc0, 0x32, 0x55, 0x70, 0x64, 0x8a, 0x97, 0x63, 0xdb, 0x0b, 0xba, 0xd4, - 0x8f, 0x74, 0xe6, 0x64, 0x87, 0x58, 0x08, 0x87, 0x71, 0xf7, 0x1b, 0x51, - 0x04, 0x5a, 0x5e, 0x7c, 0x41, 0x5b, 0xbe, 0x14, 0x73, 0x45, 0x66, 0xb3, - 0x59, 0xd6, 0x98, 0xac, 0x57, 0x71, 0x8d, 0x33, 0xeb, 0x4b, 0x3a, 0x17, - 0x31, 0xa2, 0x30, 0xe8, 0x4e, 0x40, 0x51, 0x76, 0xcc, 0xdd, 0x10, 0x62, - 0xb6, 0xdb, 0x3b, 0x7b, 0xe0, 0x09, 0x15, 0x13, 0xfb, 0x18, 0x07, 0x1f, - 0x6d, 0xe9, 0xb5, 0x48, 0x3f, 0x4d, 0x74, 0x18, 0x51, 0xff, 0xca, 0xcf, - 0xb4, 0x77, 0xc7, 0xf2, 0xbe, 0x1a, 0xcd, 0x01, 0x1b, 0x63, 0x79, 0x8b, - 0xc2, 0xe9, 0x2d, 0x24, 0x91, 0xbc, 0xd7, 0xbe, 0x28, 0x67, 0x5a, 0x70, - 0x2c, 0x64, 0xaa, 0x3c, 0x8d, 0x48, 0x6f, 0x31, 0x34, 0x2c, 0x4b, 0x8f, - 0xa4, 0xc5, 0x4a, 0x28, 0x23, 0x5d, 0xb4, 0x57, 0x55, 0xb0, 0x27, 0xc7, - 0x09, 0xf1, 0x61, 0xa7, 0xde, 0x19, 0xac, 0x3e, 0x37, 0xd8, 0x7d, 0xdc, - 0x06, 0x35, 0x6d, 0xa9, 0xe7, 0xc6, 0xfa, 0x19, 0x67, 0xfa, 0x3e, 0xfc, - 0x93, 0x98, 0xcf, 0x9a, 0x2a, 0xc8, 0xe4, 0x3e, 0x53, 0x05, 0xe2, 0x8d, - 0xf0, 0xcf, 0x7e, 0x9a, 0x4c, 0x7a, 0x28, 0xfd, 0xc1, 0xca, 0x37, 0xe5, - 0x61, 0x3a, 0x0f, 0x91, 0x55, 0xf0, 0xee, 0xaa, 0x1a, 0xc5, 0x31, 0x0b, - 0xb7, 0x2b, 0xb8, 0x22, 0xfb, 0xad, 0xde, 0xe2, 0x09, 0xaa, 0x78, 0x43, - 0x44, 0xf6, 0x67, 0x08, 0x9e, 0x3e, 0x3c, 0xef, 0x82, 0x32, 0x4e, 0x7d, - 0x7f, 0x95, 0xea, 0x79, 0x5c, 0x91, 0x26, 0x60, 0xbf, 0xf7, 0x95, 0xc3, - 0xdc, 0xd9, 0xc7, 0xdd, 0x76, 0x26, 0xb1, 0x1f, 0xd3, 0xb6, 0x55, 0xf1, - 0x8d, 0x25, 0x5c, 0x50, 0x45, 0x12, 0xa4, 0x1f, 0x94, 0x95, 0x83, 0x23, - 0xa2, 0x50, 0x0b, 0x0d, 0xbc, 0x05, 0xc4, 0xe0, 0x84, 0x78, 0xb9, 0x8d, - 0x25, 0x91, 0xd8, 0xef, 0x02, 0xb5, 0xd2, 0x1c, 0x7d, 0x63, 0x11, 0x8a, - 0x06, 0x94, 0xde, 0xec, 0xab, 0x4a, 0xee, 0x0c, 0x97, 0xb4, 0xdd, 0xc4, - 0x92, 0x97, 0x6f, 0x48, 0x58, 0x8c, 0x4c, 0xa3, 0x69, 0xc4, 0x58, 0xda, - 0x42, 0xfb, 0x9b, 0x50, 0xf5, 0xde, 0x44, 0x10, 0xc5, 0xb4, 0x6b, 0xe3, - 0x24, 0x0a, 0x16, 0xc9, 0xf8, 0x6a, 0x70, 0x9e, 0x30, 0xb7, 0x22, 0xab, - 0xd6, 0xe5, 0x46, 0xfb, 0x8e, 0xf9, 0xe8, 0x41, 0x25, 0x15, 0x4b, 0x6d, - 0x9b, 0x1b, 0xc5, 0xc0, 0x8e, 0xbd, 0x21, 0xd2, 0x61, 0xb0, 0x9c, 0xdf, - 0xa0, 0xcb, 0xe4, 0x67, 0xa7, 0x4d, 0x30, 0xa1, 0x06, 0x35, 0x7e, 0xb9, - 0x5c, 0xbc, 0x8d, 0x5a, 0x8f, 0x0e, 0xc3, 0xf9, 0x1f, 0xd8, 0x41, 0x39, - 0xee, 0xd3, 0xb4, 0x2a, 0x11, 0xa0, 0x96, 0xe7, 0x12, 0xc6, 0x3c, 0xd2, - 0x02, 0xc6, 0xe8, 0x43, 0xd6, 0xdd, 0x24, 0xd5, 0x0f, 0xa2, 0xbf, 0x65, - 0xdc, 0x98, 0x63, 0xb8, 0x08, 0x5a, 0x0f, 0xe6, 0x41, 0xaf, 0x74, 0xc3, - 0x1d, 0x8b, 0xa6, 0x19, 0xb8, 0x18, 0x44, 0x8b, 0x1c, 0xc7, 0x4d, 0xb7, - 0x76, 0xe3, 0x14, 0x34, 0x5e, 0x72, 0xfd, 0x12, 0x0d, 0x39, 0x03, 0xdd, - 0x7c, 0x62, 0x77, 0x4c, 0xac, 0xca, 0x01, 0xc6, 0x56, 0x28, 0x25, 0x19, - 0x97, 0x8c, 0x27, 0x5e, 0xd8, 0x27, 0x77, 0x44, 0x52, 0x4f, 0x1b, 0xc4, - 0x23, 0x77, 0xe4, 0xf7, 0x61, 0x50, 0x20, 0xc8, 0x02, 0xa0, 0x42, 0xb2, - 0x98, 0xc7, 0x20, 0xbf, 0xc0, 0x4e, 0xb4, 0xd4, 0xd0, 0x68, 0xc2, 0x89, - 0xa0, 0x76, 0xf3, 0x9d, 0x8f, 0x34, 0x34, 0x80, 0x3c, 0x98, 0xf5, 0x62, - 0x73, 0x6c, 0xf3, 0x4c, 0x05, 0xfa, 0x45, 0xac, 0x23, 0xc2, 0xaf, 0xd6, - 0xfa, 0x55, 0xb5, 0x51, 0xcd, 0x04, 0x6c, 0x02, 0x01, 0x2f, 0xec, 0xf0, - 0x5f, 0xec, 0x5b, 0x56, 0x52, 0xe0, 0x64, 0x1b, 0xcb, 0xd6, 0x33, 0x1c, - 0xf7, 0xde, 0xbb, 0x31, 0x08, 0xce, 0x46, 0x94, 0x6d, 0x8e, 0x30, 0xe9, - 0x53, 0x7b, 0x66, 0x97, 0x59, 0xc1, 0x1f, 0x07, 0x3d, 0x92, 0xbd, 0xf2, - 0xc1, 0xee, 0x98, 0x5f, 0x50, 0x44, 0xc3, 0x10, 0xa3, 0xb8, 0x84, 0x8e, - 0xba, 0xeb, 0x78, 0x32, 0x64, 0x37, 0x01, 0xbb, 0xa8, 0x42, 0x02, 0x58, - 0x20, 0x74, 0xa9, 0x54, 0xae, 0x2e, 0xc7, 0x63, 0x44, 0xe4, 0x26, 0x0e, - 0x0d, 0xb5, 0x97, 0xa9, 0x46, 0x85, 0x11, 0x80, 0x90, 0xdb, 0xcf, 0xcd, - 0xb5, 0x35, 0x6c, 0x4d, 0x52, 0x36, 0x56, 0xa5, 0xaf, 0xc0, 0xd0, 0xfa, - 0xd9, 0x06, 0xfd, 0xb1, 0x44, 0x6b, 0xf2, 0xaf, 0xcd, 0xe3, 0x8d, 0x8f, - 0xe4, 0x5f, 0xbe, 0x65, 0x51, 0x7f, 0x78, 0x0f, 0x53, 0xcf, 0x45, 0x7a, - 0x47, 0x78, 0x9b, 0x1b, 0x35, 0x6c, 0x9a, 0x0b, 0xee, 0x60, 0x9e, 0x10, - 0xfe, 0x1d, 0x8d, 0x3d, 0xda, 0x63, 0x63, 0x42, 0x1c, 0xfe, 0xfd, 0xd5, - 0x88, 0x90, 0x41, 0x55, 0xbc, 0x89, 0xe5, 0xdf, 0xc5, 0x1b, 0x3d, 0x89, - 0xca, 0x55, 0x52, 0x89, 0x3c, 0xdd, 0x52, 0xff, 0x51, 0xc4, 0x9c, 0x2b, - 0x19, 0xd7, 0x67, 0x3c, 0x68, 0x51, 0xc4, 0xfd, 0xa0, 0x9d, 0x36, 0x1b, - 0xe3, 0x5d, 0xbe, 0x55, 0x0b, 0x81, 0x49, 0xdb, 0x58, 0x59, 0x00, 0xfa, - 0x1b, 0xd2, 0xe7, 0x25, 0xc4, 0x4f, 0xa3, 0x64, 0x6a, 0x22, 0xf8, 0x2f, - 0x89, 0xb4, 0x15, 0x09, 0x4c, 0x53, 0xa7, 0x6d, 0xb7, 0x96, 0xf5, 0x69, - 0x50, 0x43, 0xc8, 0x81, 0xc4, 0xf2, 0xc7, 0xc3, 0x40, 0x8b, 0x8b, 0xcc, - 0x08, 0x14, 0x49, 0x3e, 0x60, 0x35, 0x4f, 0xdf, 0x40, 0x53, 0x06, 0xf0, - 0x76, 0xd1, 0xd5, 0x12, 0x51, 0x0c, 0x04, 0xe3, 0x21, 0xdd, 0x51, 0x25, - 0x0c, 0x75, 0x57, 0x3c, 0x5a, 0xbb, 0xda, 0x1f, 0xe8, 0x79, 0x51, 0x3b, - 0xef, 0x2b, 0x55, 0xdc, 0x97, 0xc9, 0x3e, 0x85, 0xe7, 0x92, 0x70, 0xe5, - 0x45, 0x5a, 0x2b, 0xd5, 0xdb, 0xdd, 0x42, 0x9c, 0x90, 0x97, 0xdc, 0xfa, - 0xad, 0x62, 0xf0, 0x16, 0x36, 0x21, 0xdf, 0xce, 0xa9, 0xa1, 0xc8, 0x0a, - 0x07, 0x6c, 0x4e, 0x00, 0xc1, 0x59, 0xea, 0xb8, 0x66, 0xe6, 0xff, 0x19, - 0x6c, 0xcd, 0x24, 0x1f, 0x3c, 0x9d, 0x1e, 0x06, 0x79, 0x48, 0x14, 0x5d, - 0x86, 0x70, 0x94, 0xbb, 0x9a, 0xf8, 0xc1, 0xba, 0xaa, 0x5e, 0x39, 0x6b, - 0xcd, 0xd5, 0x43, 0xdc, 0x33, 0x9a, 0xc8, 0x55, 0x5a, 0x25, 0x61, 0x93, - 0x92, 0x70, 0x68, 0x2f, 0xbd, 0xc0, 0x45, 0x6d, 0x82, 0xe9, 0x49, 0xd0, - 0xb9, 0xec, 0xfa, 0xe9, 0x9a, 0x85, 0x03, 0x5c, 0x58, 0x1d, 0x6d, 0xc5, - 0x1a, 0x38, 0x50, 0x2b, 0x2c, 0xbd, 0x28, 0xa5, 0xb9, 0xa4, 0xdc, 0x13, - 0xae, 0xcc, 0x9d, 0x30, 0x1d, 0x8e, 0x57, 0x86, 0xb9, 0xa0, 0x64, 0xe3, - 0x85, 0x4d, 0x9d, 0xec, 0x7e, 0x19, 0xea, 0x8c, 0xeb, 0x73, 0xbc, 0xbf, - 0x98, 0xe4, 0x6a, 0x3c, 0x96, 0x8c, 0x50, 0xff, 0x65, 0x9d, 0xd5, 0xbd, - 0xf6, 0x4c, 0xbb, 0x19, 0x32, 0x22, 0x0d, 0xa0, 0xdb, 0x7e, 0x5e, 0xd0, - 0xca, 0x35, 0x00, 0x16, 0x31, 0x72, 0x0c, 0xf3, 0x3c, 0xd1, 0x3a, 0xb2, - 0x52, 0x46, 0x34, 0x5b, 0xd3, 0xa7, 0x20, 0xe7, 0xab, 0xb3, 0x35, 0x66, - 0xd1, 0x54, 0x19, 0x4a, 0x80, 0x7e, 0xe4, 0xe6, 0x1a, 0x37, 0xb2, 0x20, - 0x6d, 0x25, 0x12, 0x49, 0xae, 0xff, 0x56, 0x9d, 0xfc, 0x85, 0xbb, 0x3e, - 0xcf, 0x8b, 0x6a, 0x3d, 0xa6, 0x28, 0x1e, 0x68, 0xde, 0x44, 0xbf, 0x2c, - 0xd2, 0xd1, 0x33, 0xfe, 0x1c, 0x05, 0x54, 0x6c, 0x80, 0xad, 0x37, 0x62, - 0xaa, 0x4f, 0x86, 0xc0, 0xea, 0xa2, 0x47, 0x4c, 0x4b, 0xcf, 0xbf, 0x26, - 0x0d, 0xdc, 0x24, 0x63, 0x20, 0x4d, 0x09, 0x25, 0x27, 0xe3, 0xd4, 0x3a, - 0x90, 0xd5, 0x1c, 0xce, 0x58, 0xb2, 0x9f, 0x0e, 0xac, 0x53, 0x8a, 0xc0, - 0xa3, 0x01, 0xc8, 0x56, 0x4a, 0x59, 0x3d, 0x8a, 0x04, 0xa4, 0xc4, 0x6f, - 0x82, 0x7e, 0x7a, 0xec, 0xf4, 0xef, 0xa1, 0x2e, 0x13, 0xb8, 0xbe, 0x67, - 0x04, 0x54, 0x57, 0x74, 0x7c, 0x1f, 0x21, 0xfc, 0x1a, 0x85, 0xb6, 0x97, - 0x11, 0xfa, 0x6a, 0xc4, 0x33, 0xdd, 0x7c, 0x61, 0xa1, 0x10, 0x7e, 0xba, - 0x07, 0x5b, 0x95, 0xc6, 0x0e, 0xcb, 0x14, 0x60, 0x32, 0x6f, 0xf4, 0x31, - 0xa9, 0x21, 0xa3, 0x3f, 0x1b, 0xf2, 0x48, 0xe4, 0x03, 0x3f, 0x59, 0xc8, - 0x1e, 0xca, 0xb2, 0x0f, 0xa4, 0x0e, 0x47, 0x0b, 0x49, 0x1e, 0x1a, 0x75, - 0x89, 0x11, 0xf9, 0xf3, 0xe4, 0x4e, 0xca, 0xec, 0xd6, 0x70, 0x55, 0x4b, - 0x72, 0x3b, 0x00, 0x76, 0x0d, 0xf8, 0x6a, 0x02, 0xfe, 0x5e, 0x31, 0xae, - 0x2f, 0xee, 0xdf, 0x9c, 0xad, 0xb0, 0xba, 0x3f, 0x6f, 0x08, 0x14, 0x8a, - 0x48, 0xe6, 0xe7, 0xfd, 0x2d, 0x2e, 0x77, 0xbe, 0xd9, 0x00, 0x0a, 0x41, - 0xfc, 0xbb, 0xa6, 0x96, 0x87, 0x7f, 0xb9, 0x63, 0x2a, 0x67, 0x35, 0x57, - 0xb3, 0x97, 0xa2, 0xc1, 0xd5, 0x8a, 0x68, 0xc9, 0xe8, 0x2e, 0x0d, 0x34, - 0x39, 0x61, 0xc1, 0xad, 0xac, 0x4a, 0x13, 0xaf, 0xbd, 0x7b, 0x5f, 0xc1, - 0x20, 0xe3, 0x91, 0xad, 0x80, 0xca, 0xff, 0xad, 0x0c, 0xb0, 0x43, 0x6a, - 0xf9, 0xe1, 0xcc, 0xa7, 0x33, 0x3f, 0x04, 0x00, 0x50, 0x3c, 0x7a, 0x1e, - 0x49, 0x42, 0xda, 0x26, 0x9d, 0x1e, 0x57, 0x6d, 0x2d, 0xcd, 0x9e, 0xae, - 0x15, 0x42, 0x04, 0x8f, 0x1d, 0x23, 0xc9, 0x4d, 0xca, 0xe9, 0x11, 0xfd, - 0x05, 0xfe, 0x67, 0xbb, 0xe5, 0x09, 0x83, 0x16, 0x9b, 0x14, 0x0c, 0x2c, - 0x07, 0x4a, 0xe6, 0xc0, 0x46, 0x60, 0x90, 0x50, 0x4a, 0xcd, 0x92, 0x55, - 0xd0, 0x74, 0x4e, 0xeb, 0x18, 0x00, 0x2d, 0xd3, 0xca, 0x17, 0x83, 0x91, - 0xbd, 0x4c, 0x07, 0x03, 0x14, 0x42, 0xd1, 0xdf, 0x49, 0x51, 0x07, 0x27, - 0x48, 0x0b, 0x5a, 0x35, 0x01, 0x41, 0x3d, 0xcb, 0xbf, 0x0d, 0xd0, 0x7d, - 0x9f, 0x65, 0x9b, 0xf7, 0x00, 0x70, 0x38, 0x89, 0x85, 0xf0, 0x51, 0x73, - 0x83, 0xe1, 0x51, 0xc2, 0x19, 0xff, 0xac, 0xd0, 0xc4, 0x67, 0xb7, 0x9a, - 0x68, 0x83, 0x43, 0x46, 0xb7, 0x2a, 0x9d, 0xc8, 0x0e, 0x78, 0x42, 0x70, - 0x63, 0x9c, 0x02, 0x55, 0xb1, 0x65, 0x75, 0xb7, 0x65, 0xb7, 0x74, 0xfa, - 0x59, 0x81, 0x51, 0xcb, 0xe2, 0x5c, 0xce, 0x13, 0xd7, 0xcf, 0x17, 0x04, - 0x74, 0x09, 0xb5, 0x54, 0xb1, 0x72, 0x68, 0xf9, 0x1b, 0x9d, 0x04, 0xab, - 0x0d, 0x7f, 0x9f, 0x6c, 0x28, 0xd8, 0x5d, 0x3c, 0x3c, 0xd4, 0x05, 0x2e, - 0x71, 0x3f, 0xc5, 0x00, 0x00, 0x6b, 0x54, 0x63, 0xc8, 0x24, 0x4b, 0x8e, - 0xd4, 0x3d, 0x2a, 0x70, 0x37, 0xa9, 0x86, 0xda, 0x54, 0x1c, 0x6d, 0xc2, - 0xc0, 0x6e, 0x3c, 0xd6, 0x06, 0x87, 0x8d, 0xdd, 0xe7, 0xe4, 0x31, 0x4b, - 0x71, 0xcf, 0x41, 0x75, 0x6b, 0x1a, 0x58, 0xe5, 0x5e, 0x81, 0x9a, 0x4f, - 0x75, 0x08, 0x8e, 0xa9, 0xc7, 0x95, 0x8e, 0xfb, 0x02, 0xad, 0x2d, 0x00, - 0x9b, 0x5d, 0x6d, 0x34, 0x42, 0x56, 0xf9, 0xbe, 0x58, 0x50, 0x21, 0x87, - 0xdd, 0x2f, 0x89, 0xea, 0xac, 0xcd, 0x3f, 0x63, 0xf2, 0xd3, 0xc7, 0x5e, - 0x78, 0xda, 0x91, 0xdb, 0xbd, 0x56, 0x0a, 0x65, 0x21, 0xa8, 0x3b, 0x92, - 0xc2, 0xd8, 0xfb, 0xa5, 0xa7, 0xc9, 0x6e, 0xc6, 0xfc, 0x72, 0x35, 0x24, - 0x63, 0x9a, 0x8e, 0xd9, 0xe7, 0x5d, 0xc1, 0xe3, 0xc9, 0xad, 0xe2, 0x44, - 0xc5, 0x50, 0x3c, 0x78, 0x5d, 0x13, 0x6f, 0x79, 0xcc, 0xea, 0x12, 0xed, - 0xbd, 0x45, 0xa5, 0x67, 0x19, 0xd9, 0xb0, 0xd0, 0xe8, 0xa4, 0xe8, 0x0d, - 0xe0, 0x18, 0xcd, 0x47, 0x68, 0x75, 0xac, 0xbb, 0x6d, 0xad, 0x72, 0x2e, - 0x52, 0x30, 0x1d, 0x1a, 0x1c, 0x70, 0x12, 0x18, 0x94, 0x76, 0x6f, 0x86, - 0x1c, 0xea, 0x0b, 0x59, 0xbf, 0x49, 0xa8, 0x31, 0xe8, 0x24, 0x2a, 0x1d, - 0x9c, 0x64, 0x5c, 0x84, 0x8e, 0x01, 0x24, 0xda, 0x80, 0x41, 0xdd, 0x3b, - 0x11, 0xd7, 0x1c, 0xe8, 0x88, 0x11, 0x06, 0x3c, 0x96, 0x91, 0xe1, 0x24, - 0x75, 0xea, 0x43, 0xd6, 0x74, 0xce, 0x09, 0x5e, 0x75, 0x15, 0x43, 0x1f, - 0x90, 0x26, 0xf0, 0xff, 0xb2, 0x13, 0xf9, 0xbe, 0xf6, 0xc8, 0xec, 0xc6, - 0x5a, 0x0f, 0x6f, 0x39, 0x38, 0x08, 0xf2, 0xbe, 0x61, 0xfc, 0xc7, 0xd9, - 0xf7, 0x27, 0x21, 0xb0, 0x7d, 0xfa, 0x21, 0x7f, 0x81, 0xfc, 0xdf, 0x9a, - 0x32, 0xa7, 0x12, 0xf1, 0xc0, 0xed, 0x2b, 0x3e, 0x64, 0x9c, 0x63, 0x2f, - 0x36, 0xc5, 0xd0, 0x56, 0x0e, 0xd6, 0xa9, 0x09, 0x96, 0xc6, 0xb9, 0xc0, - 0x49, 0x10, 0xd3, 0xcc, 0xd6, 0x55, 0x01, 0xee, 0xd4, 0xe6, 0xd3, 0x72, - 0x18, 0xd5, 0xc7, 0x98, 0xd9, 0x7e, 0xa7, 0xfe, 0x54, 0xab, 0x14, 0x7b, - 0x60, 0x6f, 0xdf, 0x0a, 0x63, 0x7a, 0xca, 0xf8, 0x8e, 0xa4, 0xee, 0xc1, - 0xdc, 0x00, 0x5b, 0x1a, 0x20, 0x6d, 0xe0, 0x18, 0x4a, 0x22, 0x96, 0x66, - 0xc6, 0x55, 0xe1, 0x53, 0xac, 0x27, 0xaf, 0x6a, 0x43, 0x49, 0xf1, 0x62, - 0x39, 0x58, 0xb1, 0x33, 0xf8, 0x23, 0x82, 0x14, 0xa1, 0x7e, 0x58, 0x07, - 0xf5, 0xef, 0x0c, 0x43, 0xfe, 0xb8, 0xe6, 0x12, 0x55, 0x99, 0x64, 0xde, - 0xc4, 0x25, 0xf7, 0x8f, 0x39, 0xd2, 0x94, 0x00, 0xc2, 0x76, 0x1c, 0xa3, - 0x9f, 0x5a, 0x55, 0x57, 0xd4, 0xea, 0x27, 0xbe, 0xe9, 0xd3, 0x0f, 0x9e, - 0x06, 0x1a, 0x32, 0x8b, 0x07, 0x20, 0xb3, 0x35, 0x99, 0xe1, 0xfd, 0x68, - 0x36, 0x0f, 0xf6, 0xa0, 0x17, 0xe1, 0x6f, 0x4b, 0x35, 0x58, 0x1d, 0x88, - 0x22, 0x6c, 0xde, 0x53, 0x49, 0x61, 0xd1, 0x8e, 0x0e, 0xca, 0x96, 0xab, - 0xf5, 0xc8, 0x5c, 0xfc, 0x1e, 0xa9, 0x50, 0x0a, 0xbb, 0x47, 0xf2, 0x2a, - 0x9e, 0x6d, 0x37, 0x9d, 0x16, 0xf5, 0xaa, 0x22, 0x81, 0xa4, 0xdf, 0xf1, - 0x15, 0xff, 0x96, 0x79, 0x88, 0x01, 0x2c, 0x51, 0xf3, 0xfa, 0x94, 0xa1, - 0x0e, 0xf5, 0x8f, 0x6a, 0xe7, 0x8f, 0xe5, 0x8b, 0x40, 0xc5, 0xde, 0xe9, - 0x61, 0x91, 0x24, 0x95, 0x50, 0xf8, 0x5b, 0xa2, 0x16, 0x3c, 0x63, 0x64, - 0xec, 0x96, 0xdf, 0xdc, 0xd6, 0xc5, 0xb4, 0xe4, 0xb6, 0x65, 0x18, 0x22, - 0xe7, 0xe8, 0xbb, 0x3c, 0x4e, 0x0a, 0x88, 0x44, 0x74, 0x69, 0xf9, 0xea, - 0x5c, 0xc6, 0x2d, 0xea, 0xba, 0xf7, 0x2f, 0xe0, 0x3d, 0xdb, 0x60, 0xe9, - 0x56, 0x9b, 0x89, 0x71, 0x3e, 0x69, 0x8c, 0xe7, 0xb0, 0xb2, 0x08, 0xe3, - 0x66, 0x94, 0xcf, 0x6f, 0xd6, 0x28, 0xec, 0x8a, 0x2f, 0xa6, 0xc9, 0x64, - 0x68, 0x17, 0x0a, 0x4e, 0x58, 0x80, 0x8a, 0xd0, 0x6b, 0x46, 0x4d, 0xf5, - 0x65, 0x2c, 0x15, 0xbf, 0x39, 0x5e, 0xb1, 0x70, 0x7d, 0x11, 0x85, 0x48, - 0x4e, 0x68, 0x3e, 0xc4, 0x0d, 0xd0, 0x1e, 0xde, 0x81, 0x1a, 0x41, 0x8a, - 0xc8, 0x1d, 0x84, 0xa2, 0x93, 0xf9, 0x20, 0xc7, 0x47, 0x2c, 0xb9, 0xdf, - 0x54, 0x9a, 0x79, 0xb9, 0x6b, 0xb7, 0xa5, 0x02, 0x65, 0x46, 0x3e, 0x82, - 0x21, 0xbc, 0x66, 0x1f, 0xbc, 0xd6, 0xe2, 0xc1, 0x39, 0xf9, 0x28, 0xc6, - 0xdf, 0x86, 0x54, 0xee, 0x99, 0x48, 0xa2, 0xc0, 0xac, 0x51, 0x87, 0xb5, - 0xa0, 0x6b, 0x68, 0x76, 0x00, 0xbf, 0xe4, 0x46, 0xbf, 0x7f, 0xe2, 0x09, - 0xff, 0xd7, 0x3d, 0x43, 0xfa, 0xd4, 0xd0, 0x1f, 0x9a, 0xa4, 0x05, 0x6e, - 0x05, 0x2a, 0xf3, 0x41, 0x8e, 0xd2, 0xab, 0x87, 0xd6, 0x9c, 0x6b, 0x3c, - 0x47, 0xa9, 0x7f, 0xde, 0xc9, 0x3b, 0xd1, 0x66, 0x9a, 0x79, 0x0b, 0x03, - 0x1a, 0x46, 0x32, 0x0a, 0xf2, 0x44, 0xee, 0xec, 0xd4, 0x41, 0xb3, 0xc1, - 0x52, 0x08, 0x17, 0x0e, 0xd5, 0xbf, 0xa6, 0xd8, 0xa2, 0xd1, 0x18, 0x69, - 0x14, 0x0f, 0xfb, 0x0f, 0x74, 0x09, 0x6a, 0x0f, 0x04, 0x9d, 0x12, 0xc4, - 0x1f, 0xe3, 0xb7, 0xfe, 0x4f, 0xdc, 0xba, 0x54, 0xbf, 0x6d, 0x21, 0x13, - 0x91, 0x70, 0x1f, 0x68, 0x7e, 0x22, 0x85, 0x18, 0xa2, 0x16, 0x4a, 0xa2, - 0xc0, 0xb0, 0x1c, 0x53, 0xd6, 0xa7, 0x5e, 0x48, 0x71, 0xe2, 0xc4, 0x3b, - 0x83, 0xe7, 0x51, 0x67, 0x4b, 0x83, 0x5d, 0x74, 0xe5, 0x1e, 0xe2, 0xb8, - 0x7f, 0x7d, 0x02, 0x71, 0x81, 0x34, 0x4b, 0xcb, 0x38, 0x6e, 0x5d, 0xc2, - 0x8f, 0xd9, 0xf0, 0x2a, 0x76, 0xbe, 0xfc, 0x1d, 0x8b, 0x65, 0x11, 0x99, - 0x62, 0xe2, 0xda, 0x63, 0xf1, 0x09, 0x98, 0xd0, 0x91, 0x0f, 0x93, 0x20, - 0x91, 0xd5, 0x5a, 0x5e, 0xd8, 0x76, 0xcc, 0xcf, 0xb3, 0x98, 0x5d, 0x1a, - 0xfb, 0x7b, 0xe0, 0xf7, 0x99, 0xf7, 0x75, 0xc8, 0xef, 0x54, 0xe8, 0x1d, - 0xe0, 0x6a, 0x16, 0xbe, 0x5f, 0x6b, 0xc3, 0x10, 0x6d, 0x35, 0x8c, 0x85, - 0x03, 0x34, 0x1a, 0xd4, 0x3c, 0x75, 0xab, 0x37, 0x11, 0x7c, 0x4b, 0x12, - 0xe7, 0x77, 0x48, 0x68, 0x47, 0x0e, 0x18, 0x5d, 0xbb, 0xc0, 0x97, 0x22, - 0x8e, 0x2c, 0x34, 0xb0, 0xe0, 0xe7, 0xc1, 0xac, 0xae, 0x2e, 0x9d, 0x7d, - 0xb4, 0x04, 0x23, 0xe7, 0xa4, 0xe8, 0xb2, 0x6c, 0x51, 0x28, 0x0c, 0x6a, - 0x80, 0x1f, 0xeb, 0xc5, 0x33, 0x8c, 0x1f, 0x84, 0xd3, 0x2c, 0xe2, 0xf6, - 0xd8, 0x8d, 0xd7, 0x3d, 0x30, 0xc0, 0x9e, 0xc4, 0x6a, 0x82, 0xf2, 0xbd, - 0x3f, 0xca, 0xe0, 0x72, 0xcc, 0x1f, 0x8c, 0x3d, 0x5f, 0x99, 0xf4, 0xd2, - 0xcf, 0x6f, 0x98, 0x37, 0x95, 0x58, 0x78, 0x47, 0xd4, 0x8f, 0x00, 0x57, - 0xac, 0x0f, 0xbf, 0x3e, 0x5a, 0x4f, 0x88, 0x86, 0xde, 0x8b, 0x00, 0x97, - 0x54, 0x92, 0x18, 0x8f, 0xd5, 0x64, 0x9c, 0xdb, 0x56, 0xa9, 0xd1, 0xf8, - 0x1c, 0x1d, 0x11, 0xa1, 0xf6, 0x1f, 0xb9, 0x02, 0xa9, 0xa0, 0xa0, 0xfb, - 0x33, 0x93, 0x8e, 0x85, 0xf6, 0xcb, 0x92, 0x1d, 0x60, 0xbe, 0x54, 0x9d, - 0x0d, 0x0a, 0xe8, 0xb0, 0x48, 0x10, 0xe0, 0x52, 0xf5, 0x3d, 0xe1, 0x74, - 0xc3, 0x20, 0x23, 0x69, 0x5c, 0xe7, 0x61, 0xf4, 0x95, 0xd3, 0x04, 0x3b, - 0x73, 0x8b, 0x16, 0x82, 0xe6, 0x77, 0x39, 0xc1, 0xb1, 0x83, 0x72, 0x1b, - 0xe6, 0x32, 0xca, 0x35, 0x75, 0xf6, 0xdb, 0x6a, 0x00, 0x4a, 0x6b, 0x8a, - 0x07, 0xb3, 0x99, 0x3b, 0xa6, 0x87, 0xb9, 0xa0, 0xf8, 0x16, 0xa0, 0xac, - 0x55, 0x57, 0x66, 0x66, 0x69, 0x29, 0x82, 0x3a, 0xcc, 0xf3, 0x6a, 0x80, - 0xa0, 0x20, 0x1c, 0x4d, 0x66, 0x4d, 0x57, 0x57, 0x31, 0x92, 0xde, 0xc4, - 0xc5, 0xdd, 0xef, 0xc3, 0x35, 0xd5, 0xb1, 0x46, 0xf3, 0xc9, 0x8c, 0x63, - 0x02, 0xd0, 0x49, 0xdc, 0xf7, 0xa2, 0xcf, 0x20, 0x22, 0xbd, 0x84, 0xf2, - 0xd8, 0x06, 0x7e, 0x88, 0xa3, 0x87, 0xfb, 0x69, 0xa7, 0x2a, 0x68, 0x1b, - 0xe6, 0x73, 0x35, 0x8c, 0x65, 0xa0, 0xf8, 0xcd, 0x4e, 0xed, 0x36, 0x1e, - 0x08, 0x76, 0xa4, 0xb0, 0x41, 0xbe, 0x19, 0x37, 0x9c, 0xd1, 0x9a, 0x9b, - 0x59, 0x62, 0x30, 0x49, 0xc1, 0xd1, 0xdd, 0xa4, 0xe6, 0xbe, 0xdc, 0x9d, - 0x00, 0x6c, 0xcb, 0xcf, 0x3f, 0xbf, 0x5c, 0x78, 0x1c, 0x1e, 0x0e, 0xbe, - 0x9e, 0x4f, 0x90, 0xeb, 0x9b, 0x70, 0x17, 0x23, 0xda, 0x90, 0x37, 0x06, - 0xab, 0x30, 0x21, 0xfb, 0xfc, 0x38, 0xae, 0x9b, 0xcc, 0xb1, 0x5f, 0xc9, - 0x42, 0xd6, 0xdd, 0x36, 0xe3, 0xd7, 0xdc, 0xfb, 0x3f, 0xba, 0x34, 0xbd, - 0x37, 0x5d, 0xa4, 0xbf, 0x6a, 0x70, 0xe6, 0xb0, 0x6c, 0xc1, 0x95, 0xdb, - 0xda, 0x88, 0x23, 0x88, 0x84, 0xb5, 0x37, 0x2d, 0xbd, 0xeb, 0xca, 0x16, - 0x87, 0xf8, 0x53, 0x1d, 0xff, 0xab, 0x8d, 0xf2, 0xd4, 0xe8, 0x9d, 0x4e, - 0x7b, 0x7c, 0xe6, 0xc8, 0xa9, 0xed, 0xa9, 0x32, 0x99, 0x76, 0x6a, 0x4a, - 0xbd, 0xd2, 0x08, 0x44, 0xad, 0x26, 0x95, 0xbc, 0xd0, 0x29, 0x4b, 0xc7, - 0x0b, 0xdc, 0x3a, 0x69, 0x69, 0x48, 0x85, 0x49, 0xc4, 0xa8, 0x54, 0x0a, - 0xbb, 0x54, 0xea, 0x9f, 0x8c, 0xf1, 0x79, 0x5b, 0xd5, 0x8a, 0x3a, 0xf5, - 0xac, 0x9d, 0x00, 0xf2, 0x03, 0x08, 0x3c, 0x03, 0xc2, 0xc1, 0x0f, 0x85, - 0xad, 0xab, 0x57, 0xa7, 0xda, 0x9c, 0x24, 0x5f, 0x07, 0x7a, 0x81, 0xdc, - 0xea, 0xab, 0x5c, 0x71, 0x4a, 0x1b, 0x59, 0xdb, 0x89, 0x12, 0x47, 0x6b, - 0xee, 0x80, 0xee, 0x03, 0x78, 0xbb, 0x3b, 0xf3, 0x0f, 0xe5, 0x5c, 0x72, - 0x15, 0x86, 0xa6, 0xfd, 0xb9, 0x6f, 0x09, 0xc0, 0x5a, 0x5d, 0x88, 0x74, - 0x86, 0x2d, 0x79, 0xb0, 0x4c, 0x78, 0xe6, 0x14, 0x94, 0x90, 0x64, 0x7a, - 0xeb, 0x34, 0x04, 0x7c, 0x18, 0x85, 0x84, 0x60, 0xfe, 0x4d, 0x24, 0x1a, - 0xb0, 0xe3, 0xa9, 0x85, 0x0b, 0xfe, 0xdf, 0x57, 0xc6, 0x83, 0x77, 0x71, - 0xc5, 0x71, 0x51, 0x94, 0x87, 0x6c, 0xb7, 0x45, 0xf4, 0x7d, 0xd4, 0xc3, - 0xdb, 0x53, 0x85, 0x02, 0x62, 0x68, 0xf2, 0x49, 0xf9, 0x0a, 0x31, 0x76, - 0xba, 0xa4, 0x7e, 0x9c, 0xef, 0xd7, 0x01, 0xb5, 0x9a, 0x71, 0x10, 0x10, - 0x44, 0x13, 0x24, 0x99, 0x5d, 0xcf, 0x43, 0xde, 0x78, 0x3a, 0x06, 0x0f, - 0x92, 0xe8, 0x01, 0xe7, 0x3a, 0x84, 0xf0, 0x92, 0xba, 0x8e, 0x68, 0x93, - 0x48, 0xf1, 0x3c, 0x38, 0x8c, 0xf7, 0xf1, 0xeb, 0xdc, 0xba, 0x6f, 0x9a, - 0x90, 0x38, 0x42, 0xa4, 0xf8, 0xb1, 0xfe, 0xab, 0x0c, 0x40, 0x95, 0x2a, - 0x9a, 0x5c, 0x84, 0xb0, 0x9e, 0x39, 0x31, 0x3c, 0x77, 0x76, 0xe6, 0x8f, - 0x3a, 0x84, 0xd5, 0x34, 0x7b, 0x4b, 0x6d, 0x01, 0xdd, 0x1c, 0x57, 0x0f, - 0xea, 0x3b, 0x2a, 0xf3, 0x40, 0x27, 0xa6, 0xa0, 0xaf, 0x57, 0x5c, 0x8c, - 0xea, 0x49, 0xcc, 0x5f, 0x0a, 0xda, 0x15, 0xcf, 0xd5, 0x48, 0x7a, 0x1c, - 0x41, 0x85, 0x83, 0x0e, 0xe8, 0x7b, 0x79, 0x04, 0xc7, 0x24, 0xd8, 0x5f, - 0x10, 0x65, 0x78, 0x21, 0xea, 0xef, 0xfe, 0x13, 0xed, 0x1e, 0xed, 0x29, - 0x04, 0xc9, 0xee, 0xdd, 0x4c, 0x47, 0x53, 0x4c, 0x5a, 0x78, 0xa6, 0xb2, - 0xc0, 0xe6, 0xea, 0x3c, 0x48, 0x5b, 0xbd, 0x07, 0x09, 0x9a, 0xf1, 0xca, - 0x5c, 0xcf, 0xbc, 0x32, 0xfc, 0xac, 0x26, 0xe3, 0x19, 0xaa, 0x49, 0xea, - 0x8a, 0x4f, 0x32, 0xbb, 0xe8, 0xb1, 0x18, 0x1e, 0x25, 0x3a, 0x83, 0x69, - 0xc1, 0x24, 0x92, 0xb5, 0xc0, 0x13, 0x6f, 0xe5, 0x27, 0xeb, 0x88, 0x71, - 0x52, 0x3d, 0x50, 0xe7, 0x2b, 0x93, 0xd1, 0xcc, 0x9b, 0x4f, 0xfb, 0x95, - 0x73, 0xbe, 0x16, 0xd7, 0x60, 0xc8, 0xeb, 0x98, 0x21, 0xd4, 0xa5, 0xad, - 0xce, 0xfd, 0x8d, 0x67, 0x6a, 0x0e, 0x82, 0x52, 0x32, 0x7a, 0x57, 0x20, - 0x9f, 0x02, 0x8a, 0x03, 0x25, 0xde, 0x79, 0x9f, 0x4c, 0x67, 0x12, 0x71, - 0x22, 0x9d, 0x29, 0x1c, 0x36, 0x7c, 0xcb, 0x5b, 0x48, 0x59, 0xdc, 0x16, - 0x5d, 0x22, 0xec, 0x84, 0x10, 0x85, 0x73, 0xfe, 0x47, 0xc1, 0xdb, 0xdc, - 0x67, 0xb6, 0xaf, 0x97, 0x22, 0xe3, 0x28, 0x74, 0xb5, 0xb5, 0x7c, 0x87, - 0x73, 0x57, 0x92, 0xa8, 0x71, 0x3e, 0xa4, 0x37, 0x41, 0xd0, 0xf4, 0xfd, - 0x29, 0x2a, 0x0b, 0xb4, 0x6a, 0x3d, 0x83, 0x25, 0xda, 0x0f, 0xd3, 0xf7, - 0x52, 0x4b, 0xcd, 0xde, 0x4e, 0x02, 0x53, 0x3f, 0x6d, 0x1c, 0xf1, 0x97, - 0x4e, 0x43, 0xde, 0x22, 0xd7, 0x51, 0x77, 0x20, 0xb4, 0x88, 0x99, 0x25, - 0xb5, 0xd0, 0xdf, 0xf7, 0xb2, 0x98, 0xd8, 0x2f, 0xb5, 0x23, 0x4d, 0x62, - 0x1f, 0x1a, 0x82, 0x7c, 0x10, 0xa4, 0xce, 0xc8, 0xa8, 0x16, 0x6a, 0x60, - 0xdc, 0xc2, 0x12, 0x7c, 0x36, 0xdf, 0x20, 0xfd, 0x9f, 0x28, 0xa2, 0x80, - 0x2c, 0x99, 0xf9, 0x57, 0x11, 0x89, 0x00, 0xdc, 0xa3, 0x98, 0x63, 0xbf, - 0x60, 0x95, 0x40, 0x17, 0xbb, 0xc7, 0xa4, 0x51, 0x55, 0xdd, 0x7b, 0x6d, - 0x08, 0x32, 0xa5, 0x28, 0xc3, 0x6e, 0xf9, 0x6d, 0xb2, 0x3f, 0x4e, 0x17, - 0x3a, 0x2d, 0x3c, 0xc6, 0x87, 0xa4, 0x6b, 0xdb, 0xa2, 0xc7, 0xb8, 0xd6, - 0x1d, 0x5e, 0xbd, 0x6c, 0x5a, 0xc6, 0xf6, 0x16, 0x4c, 0xc2, 0x8d, 0x8c, - 0x5e, 0x97, 0x5e, 0xcf, 0x41, 0xfc, 0x63, 0xb5, 0x65, 0x13, 0x29, 0x2f, - 0xa5, 0x93, 0xca, 0x3c, 0xaf, 0xf6, 0x08, 0x6a, 0x12, 0x3b, 0x5e, 0x01, - 0x43, 0x66, 0xc3, 0xc5, 0x4c, 0x28, 0xc7, 0x92, 0xb6, 0x57, 0x6f, 0x66, - 0x5f, 0x92, 0x92, 0xf0, 0xda, 0xcc, 0x3d, 0xa6, 0xe7, 0xdb, 0xde, 0x26, - 0x64, 0xd5, 0x94, 0x8a, 0x66, 0xdf, 0xcb, 0xfe, 0x8a, 0xb6, 0xe7, 0xc2, - 0x46, 0x00, 0x50, 0x1c, 0x67, 0xbe, 0xa8, 0x84, 0xa1, 0xe4, 0xda, 0x4c, - 0x96, 0x77, 0xe7, 0x4a, 0x2d, 0xaa, 0xe9, 0xd4, 0x75, 0x20, 0xff, 0x3f, - 0x6c, 0xe8, 0x14, 0xdd, 0xbe, 0xa2, 0x67, 0x73, 0x88, 0x0c, 0xa8, 0x5d, - 0xe8, 0xdd, 0x91, 0xe1, 0xfa, 0x60, 0x5f, 0x70, 0x89, 0xa8, 0x2c, 0x29, - 0x76, 0x7d, 0xfe, 0x90, 0x88, 0x40, 0xc1, 0x41, 0xa1, 0xee, 0x5f, 0x47, - 0x47, 0x2f, 0x43, 0x5b, 0x92, 0x1b, 0xd1, 0xdd, 0xdb, 0x46, 0xb1, 0xba, - 0xc8, 0x71, 0x30, 0x06, 0x24, 0x59, 0xd4, 0x9d, 0x0c, 0x5e, 0x48, 0x9a, - 0x63, 0xfc, 0xb0, 0x40, 0xdf, 0xca, 0xea, 0xda, 0x6b, 0x84, 0x66, 0xc2, - 0x32, 0x56, 0x03, 0x3e, 0xaf, 0x3f, 0xc1, 0x5a, 0x7d, 0x54, 0xc3, 0xa8, - 0x79, 0x28, 0x41, 0x48, 0x34, 0xf5, 0xc9, 0x18, 0x41, 0x68, 0x14, 0x2d, - 0x15, 0x59, 0xc5, 0x2d, 0x3e, 0x23, 0x12, 0xd4, 0x63, 0x1c, 0x82, 0x63, - 0x07, 0xed, 0xd5, 0x42, 0x18, 0xa4, 0x30, 0x0c, 0xa7, 0x16, 0x21, 0x4e, - 0x4b, 0xc2, 0x6f, 0x24, 0xfd, 0x57, 0xc9, 0xb0, 0xc0, 0x48, 0xc4, 0xd8, - 0xb6, 0x53, 0x15, 0x9a, 0x3d, 0x7f, 0x35, 0xa0, 0x17, 0x08, 0x57, 0x96, - 0xab, 0x43, 0xef, 0xbb, 0x86, 0xaf, 0x27, 0x5e, 0x80, 0x40, 0x9c, 0x93, - 0xc3, 0x00, 0x38, 0x19, 0x4f, 0x03, 0xda, 0xa4, 0x0d, 0xae, 0x32, 0xae, - 0x39, 0xe7, 0x21, 0x03, 0x0b, 0x54, 0x76, 0x2c, 0x31, 0x4d, 0x38, 0xc1, - 0x85, 0x26, 0x6e, 0xfa, 0x90, 0x86, 0x53, 0xcb, 0x8d, 0xe1, 0x3a, 0x10, - 0x6a, 0x7e, 0x58, 0xed, 0x3c, 0x62, 0x5f, 0x24, 0xb8, 0x5c, 0x1f, 0xa2, - 0x67, 0x73, 0xb0, 0x4a, 0xf7, 0x15, 0xb0, 0xd2, 0xdf, 0x3f, 0x65, 0x67, - 0x4e, 0x4d, 0xfd, 0xf2, 0x78, 0x12, 0x0b, 0x56, 0xf8, 0x2f, 0xa0, 0x43, - 0xd8, 0xca, 0x24, 0xc7, 0x36, 0x91, 0xd5, 0xe8, 0x9f, 0x97, 0xd3, 0x04, - 0x5e, 0x00, 0x75, 0xce, 0x4a, 0xd8, 0x74, 0xf3, 0x32, 0x83, 0xff, 0xd8, - 0x98, 0x5c, 0x05, 0x3b, 0x5c, 0x76, 0x3c, 0xc8, 0x0f, 0xc6, 0x23, 0xc3, - 0x47, 0xa6, 0xee, 0x3a, 0x0c, 0x9c, 0x22, 0xe7, 0x9c, 0xd4, 0x67, 0x4e, - 0x2e, 0x51, 0x9d, 0x44, 0xb0, 0x4d, 0x2c, 0x56, 0xb3, 0xc9, 0x12, 0xe0, - 0xa1, 0x67, 0x02, 0xdd, 0x3a, 0x33, 0xb0, 0xe5, 0x78, 0x30, 0x84, 0x69, - 0xe6, 0x11, 0xca, 0x3e, 0xbb, 0x63, 0x07, 0xf7, 0xf2, 0x70, 0xda, 0x79, - 0x27, 0x34, 0x82, 0x24, 0x9c, 0xb7, 0x5a, 0x41, 0x84, 0xa4, 0xa2, 0x5f, - 0x19, 0xec, 0x55, 0xcf, 0x6a, 0x2f, 0x9f, 0x3c, 0x4a, 0x44, 0x41, 0x42, - 0xc9, 0x46, 0x91, 0x2a, 0x4d, 0x25, 0xd5, 0x41, 0x97, 0x87, 0xfb, 0xfa, - 0x42, 0x93, 0x69, 0x6f, 0x80, 0x24, 0xba, 0xeb, 0x93, 0xd3, 0x61, 0xd2, - 0xdd, 0x09, 0x43, 0x8f, 0xd6, 0x95, 0x71, 0x81, 0x6e, 0x26, 0x50, 0x4b, - 0x5a, 0x8f, 0x8d, 0x72, 0xa8, 0x46, 0x2a, 0x4b, 0x27, 0x20, 0x28, 0xb5, - 0xc0, 0x14, 0x3c, 0x82, 0xa5, 0x86, 0x34, 0x65, 0x44, 0x6e, 0x8e, 0xd9, - 0x35, 0x79, 0xab, 0xfa, 0x2f, 0xfa, 0x20, 0xcd, 0x91, 0xca, 0x47, 0xc2, - 0xe7, 0x31, 0x34, 0x81, 0x3e, 0xbb, 0xc6, 0x76, 0x3d, 0x08, 0xa5, 0xa3, - 0x7e, 0xc5, 0xdb, 0x31, 0xf4, 0x16, 0x6c, 0x52, 0x19, 0x91, 0xe1, 0xa6, - 0xff, 0x4f, 0x31, 0x3e, 0xcf, 0x8d, 0xc6, 0xea, 0x22, 0x56, 0x63, 0x07, - 0x38, 0x5d, 0xfb, 0x96, 0x28, 0x60, 0x25, 0xaf, 0xf5, 0x3c, 0xae, 0xfc, - 0x73, 0x1b, 0x41, 0x84, 0xf5, 0xe9, 0x3e, 0x82, 0xcb, 0xde, 0xd5, 0x9f, - 0x9d, 0x46, 0xda, 0x9e, 0xff, 0x63, 0x3c, 0x24, 0xaf, 0x46, 0x50, 0xd3, - 0x98, 0x73, 0x0e, 0x5d, 0x2b, 0xe9, 0xf3, 0xf0, 0xb9, 0x9f, 0x22, 0x40, - 0xec, 0xf9, 0x3e, 0xfb, 0xd5, 0xdf, 0x35, 0x5a, 0x41, 0xfa, 0x99, 0x02, - 0xb5, 0xaf, 0xbb, 0x2a, 0x2e, 0x7e, 0x91, 0x1b, 0x3f, 0x48, 0x3e, 0xee, - 0x25, 0x56, 0x7f, 0xda, 0xe9, 0x6f, 0xf9, 0xa4, 0x30, 0x8e, 0xe3, 0x24, - 0x94, 0x52, 0xdc, 0x6c, 0x9e, 0x34, 0x01, 0x58, 0xe2, 0x59, 0xca, 0xd6, - 0x61, 0x2b, 0x5c, 0x0d, 0x7a, 0xc9, 0x12, 0x58, 0x2b, 0xa7, 0x83, 0xdb, - 0x72, 0x84, 0x5b, 0xc2, 0x0b, 0x5a, 0x8f, 0x66, 0xdf, 0x07, 0xd3, 0xb4, - 0xa1, 0x63, 0x2a, 0x1c, 0xb8, 0x1e, 0x3f, 0xd4, 0xce, 0xae, 0x29, 0x82, - 0x07, 0x2f, 0xe5, 0x50, 0x3b, 0xf7, 0xce, 0x24, 0xfc, 0x6a, 0xb8, 0x6f, - 0xfc, 0x6c, 0xa1, 0xa4, 0x5e, 0x1f, 0x55, 0x29, 0x1b, 0x21, 0x43, 0x1b, - 0xee, 0x06, 0x2b, 0x42, 0x8f, 0x39, 0x3b, 0x38, 0xd1, 0x82, 0x8b, 0x7c, - 0x4c, 0xbc, 0xf8, 0x05, 0xed, 0xba, 0x9f, 0xad, 0x71, 0x48, 0xab, 0x13, - 0x2c, 0x9d, 0x02, 0x98, 0x8c, 0x4c, 0xa1, 0x00, 0x6a, 0x40, 0x76, 0x86, - 0xb8, 0x23, 0xcd, 0x54, 0x6c, 0x3c, 0x1f, 0xee, 0x2c, 0x7a, 0x43, 0x0f, - 0x0e, 0x7b, 0xc3, 0x39, 0xf6, 0xe7, 0x44, 0x7b, 0x87, 0x5e, 0x42, 0x1b, - 0xda, 0xcf, 0xd2, 0x57, 0xee, 0x0e, 0x47, 0x08, 0x58, 0x45, 0x34, 0x1c, - 0x1f, 0xe8, 0x53, 0xdf, 0x7a, 0x79, 0x1d, 0xae, 0x94, 0xb4, 0x75, 0xff, - 0x18, 0xdf, 0xd5, 0xa3, 0xc8, 0xef, 0x26, 0x94, 0xcc, 0x3f, 0x2c, 0x57, - 0xc5, 0x3e, 0xda, 0xda, 0xcd, 0x16, 0x7e, 0x5c, 0x81, 0x70, 0x74, 0x1b, - 0x19, 0xc4, 0xb6, 0x2d, 0x3b, 0xc7, 0xda, 0x0e, 0x08, 0x9e, 0xfc, 0x83, - 0x6a, 0x1c, 0x6d, 0xca, 0x71, 0x1f, 0x79, 0x8f, 0x83, 0x32, 0xed, 0x99, - 0x7f, 0x12, 0xb6, 0x8a, 0x46, 0xbe, 0xc9, 0x92, 0x7d, 0xf5, 0xc0, 0xbe, - 0x56, 0x71, 0xbf, 0x14, 0xb0, 0xaf, 0x05, 0x74, 0xd9, 0x5a, 0x81, 0xb6, - 0xda, 0x88, 0x59, 0xad, 0x0b, 0xae, 0x4a, 0x05, 0x7f, 0x44, 0x8a, 0x38, - 0x62, 0x97, 0xf4, 0x88, 0x3b, 0x08, 0x80, 0x4e, 0xb1, 0xeb, 0x1c, 0x22, - 0x0a, 0x0e, 0x23, 0xb0, 0x72, 0xc3, 0x2f, 0x83, 0x84, 0x77, 0xa0, 0xc7, - 0xf6, 0xb3, 0x04, 0x07, 0x74, 0x84, 0xcd, 0xbc, 0xdd, 0xff, 0x43, 0x33, - 0x9e, 0x42, 0x88, 0x4c, 0x41, 0x8e, 0xfe, 0xb2, 0x3f, 0x4e, 0x86, 0xd2, - 0xb3, 0x17, 0x59, 0x97, 0xf1, 0xda, 0xcc, 0x1e, 0xf9, 0x54, 0x9b, 0x1c, - 0x15, 0x16, 0x89, 0x0c, 0x59, 0x10, 0x3f, 0xb1, 0x2e, 0xa4, 0x19, 0x04, - 0xdd, 0xbc, 0x6a, 0x19, 0x18, 0x60, 0x03, 0x2e, 0x6b, 0xfc, 0xf8, 0x09, - 0x07, 0xac, 0x1e, 0xcf, 0xfd, 0x64, 0x00, 0xef, 0x8e, 0xd2, 0x70, 0x1f, - 0x51, 0xd1, 0x8d, 0x38, 0x80, 0xb4, 0xc2, 0x0a, 0x03, 0x7c, 0x1d, 0x73, - 0x77, 0xdd, 0xe6, 0x90, 0x33, 0xd4, 0x58, 0x7b, 0x7f, 0x31, 0xab, 0x7f, - 0x46, 0x0d, 0xd4, 0xe8, 0x5e, 0xdf, 0xdf, 0x8f, 0xdd, 0x50, 0x3f, 0x17, - 0xd0, 0x1a, 0xe1, 0x16, 0xcc, 0xab, 0x5e, 0x13, 0xc2, 0xf2, 0x63, 0x0e, - 0x79, 0xdc, 0xae, 0x5c, 0x0c, 0xf8, 0x99, 0x6a, 0xa9, 0x8c, 0xf5, 0xdd, - 0x1e, 0x04, 0x41, 0xc2, 0x8b, 0xca, 0x46, 0xaf, 0x46, 0xd9, 0xa1, 0xe5, - 0x71, 0x9e, 0x4b, 0xa3, 0x2c, 0x69, 0x3f, 0xe8, 0x4d, 0x04, 0x6d, 0xd2, - 0x23, 0xe7, 0x5d, 0x26, 0xcb, 0xce, 0x41, 0x9c, 0x7b, 0x6e, 0x91, 0x1c, - 0x3f, 0x2c, 0xe9, 0x4d, 0x98, 0x9b, 0x62, 0x7a, 0x57, 0x6c, 0x33, 0xc5, - 0xea, 0x7a, 0xdb, 0xdc, 0xa1, 0xd4, 0xf0, 0xf9, 0x15, 0xc3, 0x1d, 0x27, - 0x8f, 0xa5, 0x0c, 0xa0, 0x61, 0x5b, 0xa8, 0x64, 0xf4, 0x56, 0x12, 0x3c, - 0x60, 0xb9, 0xbe, 0xe2, 0x48, 0x56, 0xc4, 0x46, 0x6b, 0xaa, 0xd2, 0x46, - 0x96, 0xf8, 0x20, 0x22, 0xab, 0xea, 0xfa, 0x44, 0x72, 0xe0, 0x87, 0x83, - 0x0b, 0x53, 0x49, 0x78, 0x09, 0x81, 0x4f, 0x53, 0xcd, 0x99, 0x51, 0xa5, - 0xf0, 0xb6, 0x90, 0x03, 0x9b, 0x79, 0xf2, 0xf8, 0xde, 0x9f, 0xee, 0x97, - 0xf4, 0x57, 0x94, 0x12, 0x83, 0xf4, 0xb9, 0xe7, 0x1e, 0x36, 0x13, 0x05, - 0x9f, 0x8f, 0x98, 0x94, 0xab, 0x32, 0x87, 0x15, 0xb7, 0x22, 0x85, 0x47, - 0x79, 0x06, 0x4f, 0x50, 0xdf, 0x8d, 0x81, 0xfd, 0xee, 0x9b, 0x1e, 0x07, - 0xf6, 0x5f, 0xf5, 0xdf, 0x8c, 0x6c, 0xff, 0x80, 0x2a, 0x52, 0x2f, 0x6c, - 0x8a, 0xad, 0xdd, 0x1f, 0xae, 0x67, 0xa7, 0x6b, 0xe4, 0xca, 0xad, 0xd3, - 0xd3, 0x48, 0x02, 0xd4, 0xc5, 0x08, 0x0b, 0x1c, 0x64, 0x8c, 0x94, 0xfe, - 0xd3, 0xea, 0xcc, 0x32, 0xcc, 0xad, 0xbd, 0x93, 0x98, 0x87, 0x21, 0xc7, - 0xa8, 0x66, 0x17, 0x6a, 0x6d, 0xd2, 0xad, 0x2f, 0x04, 0x91, 0xf1, 0x69, - 0xd7, 0x60, 0xdc, 0xc9, 0x0d, 0x63, 0x83, 0xa6, 0x47, 0x53, 0xd5, 0xb0, - 0xa3, 0x7f, 0x8c, 0x00, 0xb8, 0x4d, 0xd2, 0x51, 0x3d, 0x0a, 0xff, 0x9d, - 0xf9, 0x7c, 0x6e, 0x18, 0x5d, 0xbf, 0x36, 0x13, 0xce, 0x9d, 0x2b, 0xf7, - 0x50, 0x24, 0xcf, 0x4a, 0xc3, 0x1e, 0x7b, 0xa7, 0x4a, 0xaa, 0xbc, 0x1e, - 0xcf, 0x21, 0x62, 0xed, 0xe4, 0x94, 0xc7, 0x09, 0x3a, 0x1e, 0x86, 0x15, - 0xa2, 0x48, 0x69, 0xea, 0x6f, 0x3c, 0xf4, 0x22, 0x71, 0xfb, 0xe1, 0x4c, - 0x36, 0x5c, 0x93, 0xe9, 0xda, 0xa9, 0x60, 0xf2, 0xe0, 0x34, 0x46, 0x5e, - 0x0e, 0xa4, 0x14, 0xc5, 0x91, 0x49, 0x0f, 0x8f, 0xad, 0x1b, 0xee, 0x87, - 0xe4, 0x69, 0xcd, 0x20, 0x2c, 0x3f, 0xfd, 0xa1, 0x8d, 0x83, 0x0a, 0x05, - 0xf0, 0xb7, 0xac, 0x03, 0x69, 0x66, 0x0c, 0x8a, 0x2b, 0xd1, 0xcb, 0x4d, - 0x50, 0xcc, 0x89, 0x8b, 0xe3, 0xb6, 0x06, 0xe9, 0xd8, 0xf5, 0xa6, 0x7e, - 0x4b, 0x92, 0x40, 0xef, 0xf4, 0x59, 0x49, 0xa7, 0x09, 0x31, 0x32, 0x8e, - 0xce, 0x3d, 0x32, 0x6d, 0x58, 0x1e, 0x19, 0x2f, 0x14, 0x43, 0xff, 0x2b, - 0xd9, 0x09, 0xf1, 0x34, 0xe2, 0xfc, 0x6d, 0x28, 0x3b, 0xfe, 0xeb, 0x28, - 0xfe, 0xf1, 0x53, 0x30, 0x32, 0xbe, 0x43, 0xa8, 0xd9, 0xe3, 0xf1, 0x65, - 0xa7, 0xaf, 0x6e, 0x81, 0x95, 0x99, 0xa9, 0x90, 0x08, 0x84, 0x80, 0xbc, - 0x87, 0x27, 0x16, 0xdc, 0xd8, 0xed, 0x23, 0x44, 0x03, 0x84, 0x5a, 0xd8, - 0xd1, 0x40, 0xa4, 0xc9, 0x0c, 0xa5, 0x6a, 0x6a, 0x55, 0x71, 0x70, 0xd5, - 0x3e, 0xff, 0xb0, 0xed, 0x6b, 0x19, 0x63, 0x6b, 0xaa, 0x03, 0x47, 0x69, - 0x57, 0x53, 0x7e, 0xd8, 0xdd, 0x09, 0xb9, 0x24, 0x37, 0xa8, 0xb9, 0xa2, - 0xa2, 0x82, 0x11, 0xa0, 0x46, 0xce, 0x60, 0x8a, 0xae, 0x40, 0x55, 0x1f, - 0xcf, 0x42, 0x8b, 0xfd, 0x30, 0x5f, 0xba, 0xdc, 0xe1, 0xc8, 0x1d, 0x6b, - 0xdd, 0x19, 0x06, 0x88, 0xac, 0x03, 0xf5, 0x38, 0x36, 0x33, 0x4f, 0xa3, - 0xf9, 0x9d, 0x57, 0x5d, 0x55, 0x2c, 0x31, 0x1d, 0x93, 0x29, 0xcb, 0x4a, - 0x8e, 0x59, 0x01, 0xd9, 0x08, 0x3e, 0x43, 0x57, 0x35, 0x8d, 0x7c, 0x70, - 0xab, 0xed, 0xfc, 0x25, 0x27, 0xc4, 0xef, 0xd8, 0x23, 0xab, 0x48, 0xdf, - 0x92, 0x70, 0xe1, 0xe8, 0x46, 0xc7, 0x66, 0x91, 0x7c, 0x25, 0x6a, 0x0b, - 0x9e, 0x62, 0xb4, 0x25, 0xd0, 0x56, 0x0e, 0xe5, 0xec, 0x62, 0x8e, 0x20, - 0xcc, 0x57, 0xd9, 0x06, 0x43, 0x81, 0xa4, 0x25, 0xb3, 0x08, 0xfa, 0xa4, - 0x99, 0x94, 0xb9, 0xce, 0x5c, 0xd6, 0x63, 0xc5, 0x0c, 0x51, 0x87, 0xce, - 0xdb, 0x9b, 0x88, 0xea, 0x36, 0x12, 0x9c, 0x70, 0xa5, 0x9d, 0x82, 0xa6, - 0x34, 0xcb, 0x38, 0x34, 0x67, 0x40, 0x75, 0x04, 0x39, 0xdc, 0x53, 0x28, - 0x54, 0xfe, 0xa8, 0x7c, 0x2f, 0xce, 0xa6, 0x8a, 0xed, 0xa5, 0xfa, 0x90, - 0xb4, 0xc6, 0x01, 0xe9, 0x60, 0x4e, 0x39, 0xaa, 0xfb, 0x1b, 0x10, 0x42, - 0x84, 0xcb, 0x8f, 0x21, 0xfb, 0x5f, 0xcc, 0x4c, 0x55, 0xf1, 0xae, 0x7a, - 0x69, 0x00, 0xa5, 0x3e, 0xc3, 0x2e, 0xad, 0x8f, 0x06, 0xdf, 0x45, 0x33, - 0x1d, 0x93, 0x83, 0xf8, 0x12, 0x1d, 0xaa, 0x12, 0xd5, 0x0d, 0xc5, 0x40, - 0x8b, 0x07, 0xc7, 0x53, 0x96, 0x5f, 0xec, 0xf8, 0x02, 0xb7, 0x9d, 0xa2, - 0xec, 0xae, 0x19, 0x1b, 0x14, 0xbd, 0x73, 0xc1, 0x27, 0xd7, 0x02, 0x85, - 0xe3, 0xf8, 0x80, 0x67, 0x00, 0x4c, 0xac, 0x51, 0x86, 0x14, 0x4d, 0x3c, - 0xd5, 0x83, 0xde, 0x43, 0x7f, 0x2d, 0x4f, 0x8c, 0xdf, 0x5e, 0x48, 0x3d, - 0x1b, 0x93, 0x29, 0x69, 0x4f, 0x70, 0xe2, 0xe1, 0x28, 0x6c, 0x5b, 0x44, - 0xfb, 0xc3, 0xa8, 0x6b, 0xb1, 0x32, 0x0c, 0x4b, 0x73, 0x5e, 0xc0, 0xf9, - 0xd3, 0x3b, 0xee, 0x5c, 0x93, 0xc9, 0xdc, 0xce, 0xf0, 0xed, 0xf4, 0x0f, - 0xfc, 0x8c, 0xa5, 0x90, 0x0e, 0xd1, 0x0b, 0x2f, 0xaa, 0x1f, 0x41, 0xc1, - 0x09, 0xdc, 0x8b, 0x85, 0x8f, 0x6e, 0x84, 0x60, 0x89, 0xcf, 0x83, 0x68, - 0x08, 0xc0, 0x40, 0x5e, 0x83, 0x2e, 0x5d, 0x61, 0xc5, 0x52, 0xb7, 0x22, - 0xb1, 0x26, 0x04, 0x54, 0x6e, 0xb5, 0x57, 0x98, 0x0e, 0xaf, 0xf9, 0xf2, - 0xeb, 0x94, 0x3d, 0x68, 0x16, 0x02, 0x1f, 0x95, 0x5a, 0xc8, 0xc1, 0x07, - 0x72, 0xba, 0x51, 0x54, 0xe9, 0x18, 0xe1, 0xe3, 0x5f, 0x83, 0xce, 0x4c, - 0x9c, 0x54, 0x46, 0x21, 0x28, 0x73, 0x27, 0x14, 0x9e, 0xeb, 0x9c, 0x3a, - 0x3a, 0x8e, 0x5d, 0x35, 0xd4, 0x1b, 0xea, 0xcf, 0x0e, 0xdd, 0xd5, 0x3b, - 0x56, 0x24, 0x11, 0x7a, 0xe9, 0x97, 0xb5, 0x3b, 0x2e, 0x5d, 0xe2, 0x9d, - 0xfc, 0x8a, 0xb3, 0x36, 0xda, 0xa5, 0x21, 0xd8, 0xf3, 0x3d, 0x1c, 0xf2, - 0xea, 0xb3, 0x96, 0xf0, 0x6b, 0x27, 0x1c, 0x66, 0x9b, 0x71, 0x4d, 0x13, - 0x6a, 0xd0, 0x15, 0xdf, 0xd2, 0x82, 0x36, 0x92, 0xc6, 0xc0, 0xa2, 0x7f, - 0x46, 0x48, 0x32, 0x9a, 0xde, 0xb7, 0x5d, 0x05, 0x1f, 0x27, 0x33, 0xca, - 0xe3, 0x4a, 0xda, 0x28, 0x11, 0x45, 0xb4, 0xac, 0xef, 0x32, 0x24, 0x5b, - 0x25, 0xd7, 0x34, 0x29, 0x85, 0x0b, 0x19, 0x57, 0xac, 0xa6, 0x1b, 0x3b, - 0xb9, 0x77, 0xbc, 0x50, 0x67, 0xfb, 0x4e, 0x76, 0x0c, 0x58, 0x9f, 0xbc, - 0xf4, 0x84, 0xa9, 0xa8, 0x1d, 0x24, 0x6b, 0xcf, 0x28, 0x01, 0xbd, 0x52, - 0x81, 0x64, 0x38, 0x03, 0x18, 0xf1, 0xfc, 0xa3, 0xeb, 0xc5, 0xb5, 0x76, - 0x6f, 0x70, 0x20, 0xdc, 0x61, 0x6e, 0x35, 0xde, 0x1c, 0x3c, 0x83, 0x38, - 0x97, 0x97, 0x19, 0x6d, 0xf2, 0xd3, 0x72, 0xb7, 0xf1, 0x57, 0x3b, 0xc4, - 0x78, 0x6c, 0x7b, 0x7f, 0xd2, 0xef, 0x7d, 0x23, 0xc7, 0x45, 0xb4, 0x01, - 0xf5, 0x1e, 0x29, 0x08, 0x76, 0x95, 0x86, 0x27, 0x41, 0xc8, 0xbb, 0x2a, - 0x78, 0x81, 0x8b, 0x5c, 0x66, 0x02, 0xa9, 0xf6, 0x55, 0xe1, 0x6e, 0x04, - 0xb9, 0xe2, 0xfd, 0xdc, 0xb0, 0x8e, 0x44, 0x75, 0x25, 0xeb, 0x0a, 0x6a, - 0x85, 0xc1, 0x1f, 0x38, 0x0f, 0x33, 0xd0, 0x9e, 0x17, 0xe9, 0x92, 0x45, - 0x08, 0xcc, 0x0b, 0x13, 0xd0, 0x27, 0xbf, 0x28, 0xec, 0x9e, 0x15, 0x06, - 0x66, 0x1c, 0x54, 0xae, 0x97, 0xf2, 0x8d, 0xe2, 0xdd, 0x5f, 0x3b, 0x23, - 0x7c, 0xeb, 0xd5, 0xca, 0xc9, 0x4e, 0xf8, 0xc7, 0x07, 0xee, 0x81, 0x8b, - 0x16, 0x17, 0xe3, 0xdc, 0xbc, 0x1a, 0x3c, 0xcb, 0xf7, 0xd2, 0xc2, 0xf6, - 0x01, 0x5a, 0x12, 0x1e, 0x29, 0x2f, 0xcd, 0x18, 0x2b, 0x7c, 0x97, 0x9e, - 0x33, 0x85, 0xcf, 0x8d, 0xe5, 0x7e, 0x68, 0x2b, 0xa6, 0x0d, 0x10, 0x64, - 0xed, 0xc1, 0xf4, 0xdc, 0x2c, 0xf2, 0x21, 0x1d, 0x37, 0x28, 0x3b, 0x8a, - 0xf5, 0x7a, 0xd4, 0xdf, 0x88, 0x0e, 0xe8, 0x00, 0xa5, 0x29, 0x70, 0xf9, - 0x9d, 0x5c, 0xdd, 0x80, 0xe0, 0xbb, 0x7e, 0x19, 0x0e, 0x51, 0xda, 0x7f, - 0xbc, 0xd8, 0xcf, 0xf7, 0x44, 0xd0, 0x36, 0x3a, 0x96, 0x16, 0xb0, 0x9f, - 0xbc, 0xd8, 0x93, 0xbd, 0x9f, 0x9e, 0x58, 0x34, 0x6b, 0x12, 0x8d, 0x47, - 0x35, 0xf0, 0x6b, 0x7d, 0xb1, 0xbe, 0xcd, 0x68, 0x3b, 0x6d, 0x74, 0x9b, - 0xcd, 0x5b, 0x89, 0xbf, 0x71, 0xa3, 0xd0, 0x4a, 0xd4, 0xfa, 0x4e, 0x7e, - 0xee, 0x3a, 0xb2, 0x19, 0xf3, 0xf3, 0x19, 0x23, 0x9f, 0x33, 0x75, 0x58, - 0x70, 0x88, 0xdd, 0x4a, 0x0d, 0x2b, 0x35, 0xa2, 0x77, 0x56, 0x77, 0x8f, - 0xe2, 0x71, 0x1a, 0xaa, 0xe0, 0x17, 0x4b, 0x98, 0x24, 0x0e, 0xa6, 0x99, - 0x2a, 0x3b, 0xdc, 0xef, 0x97, 0xac, 0x15, 0x42, 0xfe, 0x77, 0x92, 0x08, - 0xb1, 0xf4, 0xf1, 0x81, 0xd0, 0x8a, 0x4c, 0xd7, 0xab, 0xc0, 0x1b, 0xbc, - 0xa3, 0xd6, 0x4a, 0xf0, 0x0e, 0xaa, 0x6d, 0x7a, 0x53, 0x18, 0x15, 0xcb, - 0xb8, 0xaf, 0x75, 0x21, 0x0b, 0x69, 0x56, 0x44, 0x84, 0x73, 0x43, 0x97, - 0x64, 0x8c, 0xe4, 0x45, 0x75, 0xd2, 0x46, 0x4c, 0xf3, 0x24, 0xda, 0x0d, - 0x13, 0x15, 0xee, 0x5b, 0xad, 0x02, 0xc6, 0x77, 0xff, 0xb6, 0xf5, 0x6c, - 0xdd, 0xb3, 0xa4, 0x45, 0xad, 0x7c, 0xf6, 0x23, 0xf2, 0xc5, 0xe9, 0x4e, - 0xda, 0x37, 0x85, 0xed, 0xfb, 0xf7, 0x47, 0x12, 0x2c, 0x48, 0xc4, 0xc5, - 0x75, 0x98, 0x35, 0xfb, 0xb3, 0x58, 0x47, 0x47, 0x76, 0x97, 0xb3, 0xa6, - 0xa6, 0x04, 0x92, 0xb4, 0x04, 0xcd, 0x4d, 0xc1, 0x5f, 0x12, 0x90, 0x81, - 0x85, 0xe1, 0x68, 0x93, 0x5e, 0x66, 0x68, 0xed, 0xfe, 0x1b, 0x39, 0x26, - 0xc7, 0x98, 0x8f, 0x6b, 0x3e, 0xa2, 0x35, 0xdd, 0x9c, 0x5b, 0x7d, 0xa0, - 0x01, 0xff, 0x59, 0xc3, 0xf2, 0x88, 0x18, 0x6f, 0x4e, 0x7e, 0xc7, 0xaf, - 0x31, 0x79, 0xea, 0xd0, 0xc0, 0x80, 0x1b, 0xab, 0x34, 0x09, 0xe0, 0x0b, - 0xd3, 0x01, 0x4a, 0xe3, 0x1b, 0x12, 0x8d, 0x8d, 0x9c, 0x6a, 0x37, 0x0f, - 0x54, 0xd7, 0xfe, 0x0c, 0xe0, 0x05, 0x6f, 0xf5, 0x5c, 0x77, 0x80, 0xcd, - 0xb6, 0x22, 0x66, 0xe4, 0x64, 0x2b, 0xc2, 0xeb, 0x13, 0xdc, 0xcb, 0xb9, - 0xd6, 0xa4, 0x81, 0xa6, 0xfa, 0x45, 0x9d, 0xa7, 0xc2, 0xeb, 0x68, 0xfa, - 0xdc, 0xc1, 0x57, 0xd7, 0xe9, 0x03, 0xdd, 0xe9, 0x31, 0x5e, 0x17, 0x89, - 0xd8, 0x5c, 0xc0, 0x3b, 0xe8, 0x0d, 0x9f, 0xda, 0x72, 0xea, 0xba, 0xb9, - 0xb4, 0x82, 0xb4, 0xa6, 0xef, 0xfe, 0xc5, 0x66, 0xae, 0xaf, 0x7d, 0x46, - 0x8e, 0xab, 0xea, 0xbe, 0x7f, 0x65, 0x56, 0xcd, 0x08, 0xd6, 0x76, 0x39, - 0xb3, 0x52, 0x8b, 0x53, 0xae, 0xff, 0x14, 0xb6, 0x64, 0x6d, 0xed, 0x8e, - 0x28, 0x61, 0x63, 0xf8, 0x49, 0x2e, 0xd7, 0xa8, 0xa9, 0xd3, 0xff, 0x36, - 0x5d, 0xa7, 0xbe, 0x8d, 0x9a, 0x26, 0x8f, 0xde, 0x1e, 0x6f, 0x74, 0x57, - 0xcb, 0xbd, 0xc6, 0x34, 0xdc, 0x67, 0xb4, 0xeb, 0xf9, 0x61, 0x76, 0xbf, - 0x91, 0xa2, 0x60, 0xcd, 0xe1, 0xc2, 0x77, 0xd4, 0x3d, 0xeb, 0x9f, 0xe3, - 0x49, 0x64, 0x59, 0x87, 0xcb, 0x01, 0xb6, 0x98, 0xa3, 0xa9, 0x25, 0x7f, - 0xad, 0x31, 0xc1, 0x17, 0x23, 0x3c, 0xa1, 0x74, 0x8d, 0x4e, 0x2e, 0x7e, - 0xe1, 0x34, 0x00, 0x1a, 0x98, 0x56, 0x32, 0xc4, 0x4e, 0x68, 0x60, 0xc5, - 0xd5, 0xd7, 0x41, 0x7f, 0xf4, 0x13, 0x5d, 0xe9, 0x41, 0xed, 0x9c, 0x60, - 0xcb, 0xff, 0x9a, 0x9b, 0xc3, 0xf5, 0x5d, 0x50, 0xfb, 0xd9, 0xfe, 0xe2, - 0xaa, 0x9a, 0xae, 0x16, 0x62, 0x74, 0x2b, 0xae, 0x55, 0x30, 0x43, 0xed, - 0x77, 0xdd, 0x58, 0xf6, 0xf0, 0xa3, 0xbf, 0x52, 0xdf, 0x2d, 0x3f, 0xe9, - 0x2c, 0x01, 0xec, 0x20, 0xaf, 0x0c, 0x94, 0xa8, 0x4a, 0xb1, 0xe7, 0x22, - 0x4c, 0xb4, 0x19, 0x66, 0x6d, 0x3c, 0xc9, 0x37, 0x3d, 0x7e, 0xd4, 0x6a, - 0xee, 0xbd, 0x50, 0xa2, 0xf9, 0x0a, 0x89, 0xe0, 0xc3, 0x5b, 0x4d, 0x11, - 0xf0, 0x22, 0x21, 0x85, 0xb1, 0xf2, 0x3f, 0xdc, 0x48, 0xc6, 0xaa, 0x29, - 0xa2, 0xec, 0xdb, 0x30, 0xd7, 0x52, 0x1c, 0xe6, 0x08, 0xf9, 0xdd, 0xf3, - 0x92, 0x42, 0x75, 0x8a, 0x8f, 0xe5, 0x16, 0x37, 0x10, 0x23, 0xf0, 0xf5, - 0x33, 0xc9, 0x93, 0x64, 0x70, 0x8e, 0x4e, 0x39, 0x84, 0x94, 0x0d, 0x14, - 0x9a, 0xaf, 0x51, 0xb4, 0x13, 0xe1, 0xc3, 0x95, 0xb3, 0x36, 0x58, 0x97, - 0x16, 0xee, 0x71, 0xd9, 0x4e, 0x16, 0x04, 0x1a, 0x0a, 0xee, 0x95, 0x9c, - 0xad, 0x49, 0x93, 0x3a, 0x1a, 0xa2, 0x9b, 0x73, 0x6e, 0xc1, 0xd5, 0xc4, - 0xe6, 0x84, 0x55, 0x5d, 0x24, 0x35, 0xa9, 0x11, 0x01, 0xd6, 0x9d, 0x04, - 0xd1, 0xe7, 0xa4, 0x35, 0x73, 0x32, 0x7f, 0xce, 0xe5, 0x21, 0xf0, 0xfb, - 0xf9, 0x09, 0x7c, 0x28, 0x89, 0x39, 0x86, 0x73, 0xe3, 0xdf, 0x0d, 0xf0, - 0x90, 0xfd, 0x43, 0xd0, 0x17, 0x79, 0x77, 0x09, 0xb7, 0x04, 0x42, 0x53, - 0x36, 0x82, 0x78, 0x4f, 0xa7, 0x1b, 0x07, 0xfc, 0xb5, 0xcc, 0x7d, 0x32, - 0x2a, 0x6c, 0x59, 0xc3, 0xaf, 0x8e, 0x54, 0xc7, 0xa9, 0xa0, 0xea, 0xaf, - 0xb3, 0x41, 0xc7, 0xc5, 0xe7, 0x39, 0xd8, 0x14, 0xc8, 0x59, 0xfe, 0x56, - 0xf7, 0x45, 0xbb, 0xd3, 0xfd, 0x74, 0x10, 0x26, 0xbd, 0x2d, 0xf6, 0x09, - 0x0d, 0xb4, 0xe0, 0x1c, 0x3a, 0xdd, 0xb4, 0x68, 0x89, 0x39, 0xe6, 0x52, - 0x2f, 0xa2, 0x70, 0xee, 0xc1, 0x11, 0x6c, 0x1f, 0xc6, 0xe0, 0x30, 0x08, - 0xd5, 0xca, 0x8b, 0x5b, 0x7b, 0x6e, 0xdb, 0xac, 0x84, 0x8f, 0x73, 0x1a, - 0x97, 0x74, 0xdc, 0xb6, 0x39, 0x9e, 0xea, 0x00, 0xab, 0xd2, 0x3f, 0xa6, - 0x58, 0xc4, 0x65, 0x16, 0x18, 0xbb, 0xc1, 0x88, 0x92, 0x9e, 0xd0, 0x29, - 0xf0, 0x08, 0xd8, 0xcb, 0x71, 0x08, 0x45, 0x9a, 0x7b, 0xc2, 0x1d, 0x8d, - 0xb1, 0x75, 0x14, 0xbf, 0x57, 0x43, 0xca, 0xa4, 0xf8, 0xe9, 0xf7, 0x26, - 0x27, 0x5d, 0xaa, 0x0e, 0x35, 0x32, 0xae, 0x7c, 0x6d, 0x32, 0x21, 0x67, - 0x8b, 0xd2, 0x81, 0xfc, 0x60, 0xcf, 0xf9, 0x82, 0xec, 0x5a, 0x6e, 0x5f, - 0x55, 0xe9, 0xc4, 0x1b, 0xa9, 0x51, 0x3e, 0xac, 0x7c, 0x3c, 0x22, 0xd8, - 0x32, 0xfc, 0x07, 0x4f, 0x9e, 0x1a, 0xf6, 0xd4, 0x71, 0xa4, 0xc1, 0xdb, - 0x2b, 0x33, 0xe6, 0x82, 0x92, 0x02, 0xf6, 0xaa, 0x20, 0x27, 0x4a, 0x5b, - 0x6d, 0xdc, 0x01, 0x0c, 0xfe, 0xa2, 0x45, 0x55, 0x82, 0x11, 0x24, 0x19, - 0xc4, 0xfa, 0xcc, 0xff, 0xf8, 0x94, 0x1c, 0x5b, 0x45, 0x57, 0xe5, 0xf3, - 0x18, 0x46, 0x12, 0x3e, 0x58, 0xef, 0x08, 0x4a, 0x0f, 0xad, 0xae, 0x93, - 0x48, 0xfd, 0x70, 0x71, 0xb6, 0xd9, 0x69, 0x67, 0x35, 0xcd, 0x55, 0x3d, - 0xad, 0x19, 0xf1, 0x9b, 0x69, 0xec, 0x80, 0x58, 0xd0, 0x0c, 0x00, 0x2f, - 0x7c, 0xfb, 0x8e, 0xe2, 0xd3, 0xbb, 0x0a, 0xfb, 0xf0, 0x0a, 0xdb, 0xa3, - 0x43, 0xf9, 0x38, 0x5f, 0x1c, 0x15, 0x1a, 0x93, 0xe7, 0x34, 0xec, 0xc5, - 0x95, 0x87, 0xf0, 0xf1, 0x05, 0x1e, 0xe0, 0x88, 0xfa, 0x25, 0xe3, 0x5b, - 0x3a, 0x40, 0x38, 0xd8, 0xfd, 0x36, 0xd0, 0xf1, 0x63, 0xc1, 0x08, 0xab, - 0x2c, 0x86, 0xc5, 0x7b, 0x8b, 0xd0, 0xd6, 0x56, 0x0b, 0x11, 0x20, 0x88, - 0x95, 0x63, 0xa3, 0xa8, 0xe4, 0x62, 0xa0, 0xf0, 0x1a, 0xde, 0x2c, 0x1d, - 0xaa, 0x2b, 0x66, 0x01, 0x90, 0x8f, 0xfc, 0x90, 0x9b, 0x1c, 0x5b, 0x75, - 0xc5, 0xd3, 0x38, 0x54, 0xe0, 0xe3, 0x03, 0xc7, 0x36, 0x53, 0x54, 0xa1, - 0x03, 0x32, 0xf1, 0x39, 0xc6, 0xdf, 0x7b, 0xfe, 0xab, 0xd8, 0x5b, 0xef, - 0xa4, 0x5f, 0x46, 0xdb, 0x20, 0x3c, 0xd3, 0x9d, 0xc7, 0x1b, 0x80, 0x1b, - 0x92, 0x90, 0xf1, 0x87, 0xdc, 0x75, 0x05, 0xec, 0x53, 0x64, 0xcb, 0x0a, - 0x6d, 0x7d, 0xb3, 0x14, 0xb1, 0x27, 0xbc, 0x44, 0x8d, 0xde, 0xae, 0x70, - 0xfe, 0xb4, 0x5f, 0xe4, 0x95, 0x03, 0x8a, 0xfb, 0xd7, 0xaf, 0x48, 0x11, - 0x4c, 0xa6, 0x0e, 0x20, 0xad, 0x83, 0x0a, 0x5a, 0xf7, 0x78, 0x1d, 0x7c, - 0xf5, 0x67, 0x4b, 0x49, 0x27, 0x65, 0x0e, 0xec, 0xe2, 0x23, 0xb0, 0x56, - 0x8b, 0x13, 0xd5, 0x29, 0x57, 0xdf, 0xf2, 0xd0, 0x48, 0x6d, 0x4c, 0x89, - 0x4e, 0x0c, 0x15, 0xb0, 0x48, 0xe5, 0xf7, 0xda, 0xeb, 0x62, 0x17, 0x61, - 0xb5, 0x77, 0x07, 0x07, 0xc7, 0x21, 0x70, 0xc7, 0x18, 0xad, 0xc0, 0xd1, - 0x4e, 0x4d, 0xbd, 0x82, 0xf0, 0x0b, 0x93, 0xdc, 0x03, 0xd5, 0x8a, 0xef, - 0x3e, 0xcf, 0xd9, 0xcc, 0x0f, 0x48, 0x51, 0x46, 0xa7, 0xc3, 0xc4, 0x41, - 0x95, 0x56, 0x7e, 0x5f, 0x75, 0x38, 0x74, 0xb9, 0x81, 0x84, 0x03, 0x24, - 0x1c, 0x50, 0x2a, 0x11, 0x0c, 0xe3, 0x19, 0xa8, 0x4b, 0x66, 0x7f, 0xbb, - 0x27, 0x0a, 0xb8, 0x6e, 0xd5, 0x37, 0x17, 0x29, 0xc9, 0xb5, 0x51, 0x6d, - 0xe5, 0x9a, 0x21, 0x96, 0x79, 0xe7, 0xb7, 0x08, 0x15, 0x8f, 0xe6, 0x21, - 0x00, 0xfb, 0x76, 0x6a, 0xe6, 0xb3, 0xfd, 0xdb, 0xf1, 0xe7, 0x96, 0xba, - 0x1c, 0xa0, 0x0a, 0x68, 0x71, 0x28, 0xa4, 0x45, 0x46, 0x4b, 0x27, 0xa0, - 0x22, 0xe2, 0x45, 0x74, 0xbf, 0x1c, 0x9d, 0xb9, 0x20, 0x4b, 0x57, 0x29, - 0xc9, 0x66, 0x94, 0xc7, 0xc6, 0x2c, 0xae, 0xe9, 0xbe, 0x01, 0xe2, 0x19, - 0x62, 0xa5, 0x7d, 0xdc, 0x01, 0x05, 0x76, 0xa2, 0x7d, 0xeb, 0x06, 0x28, - 0x82, 0xc3, 0xf8, 0x84, 0xfa, 0xd1, 0xc0, 0x44, 0xb5, 0x1a, 0x57, 0xe2, - 0xd9, 0xd6, 0x35, 0x86, 0x3c, 0x78, 0x52, 0xe0, 0x3f, 0x01, 0xc5, 0xaa, - 0xdb, 0xc1, 0x66, 0xd7, 0x20, 0xeb, 0x1f, 0xc9, 0xb0, 0x3f, 0x26, 0xcc, - 0xf1, 0xa3, 0xe1, 0xa3, 0xef, 0x9b, 0xd0, 0x53, 0xd9, 0x9e, 0xd0, 0xc5, - 0x92, 0x41, 0xc0, 0x90, 0xce, 0x30, 0xbb, 0x51, 0x11, 0xb3, 0x92, 0xcf, - 0x46, 0x8c, 0x20, 0xe5, 0xc5, 0x48, 0x1b, 0xe4, 0x5b, 0x9f, 0x8d, 0x0d, - 0x0d, 0x57, 0x91, 0xcf, 0x63, 0x4c, 0xe5, 0x89, 0xb8, 0x5c, 0x06, 0x0c, - 0x68, 0x68, 0xd7, 0x55, 0xb3, 0x10, 0x4d, 0x88, 0xd6, 0xa9, 0x89, 0x2e, - 0x3b, 0x69, 0xa5, 0x74, 0x6e, 0x31, 0x86, 0x77, 0xcb, 0x32, 0x62, 0x2f, - 0x45, 0x37, 0xb5, 0x60, 0x33, 0x34, 0xad, 0x39, 0x4e, 0x94, 0x87, 0xa5, - 0x49, 0x0e, 0xa4, 0x45, 0xe4, 0x5a, 0xa0, 0xa9, 0x64, 0xfb, 0x18, 0xcd, - 0xfa, 0x2f, 0xe0, 0xfb, 0xfa, 0xbd, 0x11, 0xcd, 0xe6, 0xd1, 0x5f, 0xfc, - 0xca, 0xbe, 0x28, 0x33, 0xae, 0x54, 0xaf, 0x4c, 0x83, 0xca, 0x69, 0x12, - 0x23, 0x1c, 0x1b, 0x03, 0xaf, 0x7c, 0x9b, 0x3b, 0xbc, 0x50, 0x8d, 0x4f, - 0x05, 0x16, 0xcc, 0x90, 0x47, 0xc3, 0x88, 0x2c, 0xe1, 0x86, 0x55, 0xc2, - 0xd9, 0x74, 0x5a, 0xf2, 0x14, 0x75, 0x64, 0xb3, 0x5a, 0xb5, 0x21, 0x28, - 0xc9, 0x72, 0x45, 0x42, 0x02, 0x88, 0xff, 0xc5, 0x4b, 0x15, 0xfd, 0x79, - 0xa9, 0xd0, 0x24, 0x0f, 0xe0, 0xf2, 0xc8, 0x30, 0x7b, 0x44, 0x27, 0xc5, - 0x5c, 0xfa, 0x1e, 0xa2, 0x1b, 0x47, 0xd5, 0x9f, 0xf0, 0x6d, 0x68, 0x30, - 0x98, 0x7f, 0x57, 0x93, 0x1e, 0x99, 0x8c, 0x2d, 0x57, 0xc6, 0xc1, 0x52, - 0xee, 0x2d, 0xa1, 0xbb, 0x81, 0x48, 0x28, 0x6d, 0x8b, 0x44, 0x71, 0xee, - 0x10, 0x38, 0x6b, 0xbd, 0x72, 0x0a, 0xd3, 0xc6, 0x81, 0xc9, 0x17, 0x32, - 0x30, 0xe5, 0xe8, 0x39, 0x02, 0xf2, 0x7c, 0xa0, 0x77, 0xb5, 0x89, 0x95, - 0xd3, 0xcf, 0xe2, 0xbf, 0xc0, 0x9a, 0x6b, 0x13, 0xa0, 0xd8, 0x57, 0x6f, - 0x67, 0xe7, 0x4d, 0xf6, 0xaa, 0xa3, 0x1d, 0x3d, 0x45, 0x83, 0x71, 0x9d, - 0xc9, 0xa8, 0xbd, 0x36, 0x5b, 0x09, 0x6c, 0x1f, 0x6e, 0x18, 0xef, 0x56, - 0x35, 0xf0, 0x9c, 0x8e, 0xd5, 0x6a, 0x0c, 0x58, 0x6a, 0x1c, 0x1a, 0x40, - 0x48, 0x2a, 0x01, 0x4f, 0xa3, 0x89, 0xc7, 0xd1, 0x65, 0x6a, 0xaa, 0x19, - 0xee, 0xd1, 0xc4, 0x48, 0x63, 0x78, 0xae, 0x03, 0x6e, 0x2b, 0xc2, 0x07, - 0xf6, 0xb0, 0x2a, 0x89, 0xea, 0x51, 0x45, 0x57, 0x3c, 0xa4, 0x93, 0xc5, - 0xa0, 0x77, 0x12, 0xe6, 0xfc, 0x51, 0xe8, 0xbd, 0x53, 0x3f, 0x57, 0x9e, - 0x75, 0x12, 0x02, 0xd6, 0xca, 0x00, 0x45, 0xd6, 0x67, 0x2b, 0xdf, 0x2b, - 0xfd, 0x99, 0x5d, 0x39, 0x94, 0x3f, 0x37, 0x9e, 0x2e, 0xed, 0xd6, 0xf9, - 0x93, 0xc9, 0x4e, 0x3a, 0xc3, 0xe6, 0x6a, 0xd9, 0x4b, 0xb6, 0x02, 0xfd, - 0xba, 0xb5, 0x2e, 0xcf, 0x3e, 0xe4, 0x29, 0x1e, 0xbc, 0xdc, 0x48, 0xc7, - 0x3c, 0x8d, 0x71, 0x2d, 0x89, 0xb9, 0x6d, 0xb6, 0x94, 0x04, 0x8e, 0xea, - 0xcd, 0xd3, 0xd2, 0x6b, 0x95, 0x2e, 0x7f, 0x69, 0x97, 0xd5, 0x5c, 0x75, - 0xb4, 0x5a, 0xf6, 0x54, 0xae, 0x7d, 0xa3, 0x9b, 0x29, 0xc0, 0x37, 0xeb, - 0x92, 0x5a, 0x1a, 0x1a, 0xb7, 0x71, 0x52, 0x76, 0x78, 0x9d, 0x3e, 0x90, - 0x78, 0x6e, 0x9f, 0x57, 0xc6, 0xce, 0xb4, 0xaa, 0x28, 0x0e, 0x78, 0x48, - 0xef, 0x8a, 0xba, 0x9a, 0xd4, 0x22, 0xa9, 0x25, 0x70, 0x2e, 0x17, 0x1c, - 0xf8, 0x03, 0xd7, 0xe1, 0x17, 0xe3, 0xa7, 0x41, 0xca, 0xac, 0x15, 0xa9, - 0x62, 0x70, 0x36, 0x19, 0xa0, 0xc1, 0x95, 0x58, 0xb1, 0x5f, 0x3b, 0x48, - 0x26, 0x22, 0x21, 0x33, 0x80, 0x7a, 0xb9, 0x8d, 0x59, 0x97, 0xef, 0xfd, - 0xd9, 0x21, 0xde, 0x61, 0x18, 0xca, 0x54, 0xe4, 0x80, 0x2a, 0x2f, 0x0e, - 0x96, 0xc4, 0xb2, 0xe5, 0x06, 0xb1, 0x57, 0x66, 0x3c, 0x06, 0x0e, 0x13, - 0x59, 0xb6, 0x4f, 0x19, 0xc1, 0xff, 0x12, 0x08, 0x05, 0x0c, 0xbc, 0xd6, - 0x03, 0x78, 0x7d, 0x44, 0xb6, 0x53, 0x56, 0xf2, 0x7f, 0x02, 0x0c, 0x9c, - 0x17, 0x0b, 0x7d, 0xa7, 0x42, 0x04, 0x85, 0xaf, 0xcf, 0x0d, 0x4f, 0x07, - 0xb9, 0xa7, 0x21, 0x4b, 0x36, 0x95, 0xbf, 0x1e, 0x97, 0x7b, 0x8b, 0xff, - 0x18, 0x29, 0x9b, 0x33, 0xfb, 0x4d, 0xc0, 0xb3, 0x1a, 0x41, 0x18, 0x4b, - 0xae, 0x2f, 0x7b, 0x63, 0x07, 0x64, 0x4e, 0x9b, 0x8d, 0x97, 0x3b, 0x11, - 0x0a, 0x0f, 0xa0, 0x6d, 0x5f, 0x9b, 0xf6, 0x3b, 0x39, 0xbf, 0x4f, 0x2c, - 0x67, 0x01, 0x86, 0xe9, 0xe2, 0xcf, 0x79, 0xc9, 0x10, 0x3e, 0xa5, 0x73, - 0xfc, 0x76, 0x22, 0x27, 0xbd, 0x44, 0x11, 0xfc, 0x99, 0x8a, 0x33, 0x86, - 0x4f, 0xc8, 0x47, 0x5f, 0x4d, 0x38, 0x7d, 0x79, 0xc6, 0xf9, 0x39, 0x04, - 0xfa, 0x8d, 0x07, 0x35, 0x76, 0x31, 0xc6, 0xb3, 0xcc, 0x71, 0x23, 0xa7, - 0x87, 0x1e, 0xa3, 0xe1, 0x14, 0xd6, 0x4c, 0xab, 0xaa, 0xe6, 0x14, 0x08, - 0x74, 0x01, 0x42, 0x4a, 0xed, 0xf0, 0x3a, 0xa4, 0x9e, 0x7f, 0x2c, 0x78, - 0xb4, 0x02, 0xcd, 0x89, 0x0d, 0xb1, 0x5b, 0x61, 0x6d, 0xf5, 0x60, 0x7a, - 0x75, 0x05, 0xcf, 0xe1, 0x9c, 0xee, 0x37, 0x25, 0x2e, 0xef, 0xf0, 0xb0, - 0x5e, 0x87, 0xe0, 0x2d, 0xd6, 0x5e, 0xda, 0x0f, 0xbf, 0xf8, 0xb5, 0xfe, - 0xd7, 0xaa, 0xab, 0x4d, 0xcd, 0x7f, 0x57, 0x5f, 0x40, 0xe5, 0xa9, 0x6d, - 0x21, 0x8e, 0x0a, 0x69, 0xda, 0x72, 0x3f, 0xea, 0x0f, 0x09, 0x62, 0x1a, - 0xec, 0x9c, 0xbf, 0x2b, 0x13, 0xae, 0x84, 0x04, 0x95, 0x03, 0xde, 0x10, - 0x14, 0x16, 0xc4, 0x2c, 0x36, 0xf1, 0xe5, 0x6c, 0x38, 0x54, 0x28, 0x4c, - 0xf3, 0x4f, 0x44, 0x97, 0x5b, 0x60, 0xf5, 0xfb, 0xf9, 0x94, 0x41, 0x0a, - 0x81, 0x4c, 0x5f, 0x27, 0x0a, 0x3a, 0x87, 0xf2, 0x28, 0xf2, 0x61, 0xc3, - 0x56, 0xe8, 0xb5, 0xd4, 0x4a, 0xbf, 0x09, 0x02, 0x3e, 0x08, 0x51, 0x89, - 0x1a, 0xd4, 0xd3, 0x58, 0x50, 0x43, 0x1d, 0x01, 0xaa, 0xc8, 0xe2, 0x3b, - 0xc9, 0xff, 0x46, 0x17, 0x44, 0x83, 0x43, 0xf5, 0x06, 0x69, 0x6e, 0x29, - 0xfd, 0x31, 0x03, 0xb2, 0x12, 0x8e, 0x5c, 0xf9, 0x6c, 0x12, 0x3e, 0x95, - 0x8f, 0xbb, 0x79, 0xc0, 0x9d, 0x98, 0xb9, 0xd6, 0x24, 0x9d, 0xef, 0x45, - 0x08, 0x3d, 0xf4, 0x3e, 0x02, 0xc9, 0xd9, 0xb1, 0x9c, 0xe0, 0xfb, 0x0f, - 0xbd, 0xe2, 0x67, 0x8d, 0xdb, 0xcc, 0xe2, 0x77, 0x4c, 0xe7, 0x21, 0x3f, - 0xbb, 0x2b, 0xb3, 0xa4, 0x85, 0xe5, 0x3f, 0x66, 0xee, 0x30, 0x62, 0xfe, - 0xc0, 0x48, 0x96, 0xc4, 0xb4, 0x19, 0x08, 0x14, 0x3a, 0x3f, 0x1a, 0x9e, - 0x34, 0x69, 0x3a, 0x4c, 0x98, 0xec, 0x1b, 0x50, 0xd3, 0x9f, 0xe3, 0xf4, - 0x24, 0x9e, 0x4e, 0xa5, 0x81, 0x66, 0xf1, 0x02, 0x5f, 0xf0, 0xe9, 0x15, - 0x1c, 0xc1, 0xef, 0x9b, 0xda, 0xd2, 0x13, 0xad, 0x53, 0xb8, 0xe5, 0x8e, - 0xe2, 0xfa, 0x1c, 0x37, 0xda, 0x89, 0xb2, 0x4b, 0x6b, 0x7c, 0xe5, 0x53, - 0x22, 0xed, 0x00, 0x2e, 0xd6, 0x98, 0xdc, 0x5e, 0x26, 0x1a, 0xd6, 0x4e, - 0x0e, 0x31, 0x24, 0xb3, 0xd1, 0x33, 0xbd, 0x96, 0xe7, 0x72, 0x21, 0x49, - 0x84, 0x83, 0x0b, 0xae, 0x12, 0x65, 0x57, 0x1e, 0xc0, 0xb2, 0xaf, 0x29, - 0x62, 0x7c, 0x4b, 0x46, 0xdb, 0x41, 0xaa, 0x05, 0x33, 0x9c, 0xbf, 0x73, - 0x24, 0x55, 0x2f, 0xec, 0x4f, 0xef, 0xbb, 0xe0, 0x70, 0x93, 0x9a, 0xfa, - 0x20, 0xfa, 0x82, 0x16, 0x07, 0x26, 0xba, 0xc3, 0x7a, 0xaa, 0x8c, 0x24, - 0xfc, 0x27, 0x87, 0x3a, 0x9e, 0x04, 0x5a, 0xcd, 0x0b, 0xbf, 0x53, 0x43, - 0x5c, 0xae, 0xf1, 0xd7, 0x3f, 0x71, 0xf1, 0x7e, 0x1e, 0x73, 0x5c, 0xcb, - 0xa3, 0x51, 0x8d, 0x5c, 0xca, 0x19, 0x13, 0x2e, 0x39, 0xaa, 0x15, 0xcf, - 0x82, 0x13, 0x3a, 0xa2, 0x6e, 0x8b, 0xfc, 0x4d, 0xd0, 0xdc, 0x57, 0x73, - 0xc1, 0x87, 0x5f, 0xf2, 0xe3, 0x21, 0x67, 0xf4, 0x9a, 0x6f, 0xfc, 0xa1, - 0x53, 0x5f, 0x22, 0x10, 0x74, 0x65, 0x3d, 0x23, 0xee, 0x7e, 0xb1, 0x60, - 0xea, 0x4e, 0xc4, 0xe1, 0x98, 0x88, 0xd4, 0xf8, 0xf2, 0x19, 0xdd, 0x8d, - 0xde, 0x7b, 0x1d, 0xb6, 0xf1, 0xae, 0xdf, 0x65, 0x96, 0x03, 0x6a, 0x4f, - 0xc4, 0x98, 0x58, 0x24, 0x03, 0xba, 0xa0, 0x41, 0x5c, 0x3d, 0xcf, 0xeb, - 0x96, 0xc3, 0xf1, 0x70, 0x9c, 0x62, 0xa4, 0xc8, 0x09, 0x46, 0xfc, 0xc3, - 0xa9, 0x31, 0x80, 0x46, 0xb8, 0xcc, 0x04, 0x23, 0xb2, 0x29, 0x4f, 0x50, - 0x90, 0xb8, 0x45, 0x3d, 0xcb, 0x0f, 0xd8, 0xa9, 0x27, 0x62, 0x9a, 0x0b, - 0xb5, 0x68, 0x82, 0x3a, 0x7a, 0x93, 0xe2, 0xee, 0xa5, 0xf3, 0x63, 0x1e, - 0xd4, 0x6b, 0xa9, 0xa6, 0xa4, 0x29, 0x3a, 0xdb, 0xeb, 0x1e, 0x61, 0xe5, - 0xf8, 0x0f, 0x7b, 0x23, 0xd1, 0x16, 0xee, 0x11, 0x50, 0xd9, 0x41, 0xd8, - 0x9c, 0x6b, 0xdd, 0x8c, 0x01, 0xa5, 0xeb, 0xff, 0x33, 0x52, 0xe6, 0x81, - 0xf3, 0x97, 0xf7, 0x6c, 0x96, 0x88, 0x24, 0xef, 0x17, 0x77, 0xdd, 0xbf, - 0x4f, 0x36, 0x16, 0x97, 0x80, 0x95, 0x9a, 0x10, 0x82, 0x44, 0x8d, 0xec, - 0x24, 0x89, 0xc9, 0xa6, 0x6f, 0x32, 0xf7, 0x88, 0x1b, 0xd3, 0x95, 0x90, - 0x5a, 0xf9, 0x83, 0x43, 0x50, 0x9e, 0xd7, 0xe1, 0xe2, 0xaf, 0x82, 0x84, - 0xd2, 0x5e, 0x7a, 0xf2, 0x36, 0x2a, 0x54, 0x55, 0x60, 0x11, 0xe3, 0x5b, - 0x32, 0x14, 0x12, 0x07, 0x54, 0xe4, 0x3a, 0x44, 0xe2, 0x55, 0x15, 0xcc, - 0x2a, 0xc5, 0x4f, 0x9b, 0x2c, 0x51, 0xa7, 0xcc, 0x22, 0x75, 0xaf, 0x68, - 0x2b, 0x97, 0x9b, 0xfd, 0xfb, 0x24, 0x72, 0x15, 0x09, 0xee, 0x5d, 0x1d, - 0x63, 0x68, 0x53, 0x67, 0xa3, 0x70, 0xa7, 0x57, 0xcd, 0x93, 0xb5, 0x1a, - 0x3d, 0x12, 0x45, 0xdc, 0xea, 0xe2, 0x7c, 0x44, 0x54, 0x2d, 0x25, 0x01, - 0xac, 0xed, 0x36, 0xa4, 0xe7, 0x7e, 0x69, 0x7f, 0xab, 0xc0, 0x4e, 0xd4, - 0x62, 0xce, 0xde, 0x7f, 0x90, 0x9e, 0x48, 0x6b, 0xbd, 0x08, 0xb8, 0xc7, - 0x9f, 0x84, 0x5c, 0xbb, 0x90, 0x2f, 0x1f, 0x14, 0x3e, 0x4a, 0x9f, 0x01, - 0x5d, 0xff, 0xb7, 0x48, 0x3d, 0xba, 0x60, 0xfc, 0xd8, 0x52, 0x32, 0xa0, - 0x2c, 0x33, 0xc3, 0x49, 0xd5, 0xdb, 0x02, 0x7b, 0x03, 0xcd, 0x02, 0x1e, - 0x00, 0x59, 0x51, 0xb7, 0x1b, 0xd6, 0x6f, 0x10, 0x3c, 0x87, 0x67, 0x9c, - 0xaf, 0xd0, 0xce, 0x8e, 0x4f, 0x79, 0xc6, 0x89, 0xfc, 0x83, 0x14, 0xe9, - 0x40, 0xe3, 0x08, 0x12, 0x3d, 0x1a, 0xfe, 0x93, 0x5f, 0x36, 0x1b, 0xc0, - 0x58, 0x15, 0x0c, 0xec, 0x47, 0x8c, 0x43, 0x69, 0x73, 0x2e, 0x8d, 0xfc, - 0x84, 0x7e, 0xe0, 0x39, 0x20, 0xd4, 0xf2, 0x02, 0xe1, 0x28, 0x7e, 0x4e, - 0xf5, 0x63, 0x1c, 0x7b, 0xaa, 0x7b, 0x56, 0x74, 0x8b, 0xe6, 0x9b, 0x82, - 0xe8, 0xe2, 0xa9, 0x37, 0x9a, 0xd3, 0x92, 0xaa, 0xa5, 0xb2, 0x47, 0xa0, - 0xee, 0xf3, 0x13, 0x9f, 0xd1, 0x1b, 0xb0, 0xa2, 0x61, 0x1b, 0xe8, 0x9c, - 0x8d, 0x02, 0xdc, 0x8b, 0xc4, 0x4b, 0xfb, 0x5a, 0x67, 0x42, 0x58, 0xd4, - 0x06, 0x29, 0x88, 0x4e, 0x76, 0x2c, 0x5f, 0x3f, 0x38, 0x76, 0x81, 0x56, - 0x0d, 0xcc, 0xa6, 0x26, 0x22, 0x75, 0xc1, 0x70, 0x68, 0x1b, 0xb7, 0xad, - 0x52, 0x76, 0x03, 0x49, 0x5f, 0xc5, 0x1c, 0xd7, 0x08, 0xee, 0x15, 0x44, - 0xed, 0x70, 0xef, 0x6d, 0x18, 0xf8, 0xdb, 0xf8, 0xbc, 0x55, 0x40, 0xc0, - 0x34, 0xee, 0x15, 0xf9, 0x6f, 0x66, 0x14, 0x92, 0x27, 0xdc, 0xac, 0xb5, - 0x42, 0x6b, 0x51, 0xbd, 0x0b, 0x1b, 0x83, 0x34, 0xbd, 0xfa, 0x2c, 0x48, - 0x9b, 0x92, 0x0a, 0x99, 0x8e, 0x8f, 0xac, 0xa4, 0x70, 0xd7, 0x94, 0x72, - 0x45, 0xea, 0x4d, 0x6d, 0x48, 0xed, 0x6d, 0x7f, 0xd8, 0x3c, 0x28, 0xc6, - 0x9f, 0x75, 0x0d, 0x79, 0xad, 0x7d, 0xb8, 0xdf, 0x3a, 0x40, 0x31, 0x17, - 0x60, 0x38, 0x0e, 0x77, 0x1d, 0x54, 0x91, 0xbd, 0x45, 0x9b, 0x88, 0x9d, - 0xb7, 0x95, 0xa7, 0xc3, 0x47, 0x55, 0x0b, 0xbe, 0xbf, 0x8f, 0xbc, 0xb8, - 0x72, 0x53, 0x18, 0xfb, 0xf0, 0xcb, 0xc2, 0x32, 0xd0, 0x6c, 0xef, 0xd3, - 0x2c, 0xd4, 0x74, 0x4d, 0x7c, 0x56, 0xee, 0x32, 0x58, 0x64, 0xd9, 0x09, - 0x16, 0xad, 0x32, 0x31, 0x1a, 0x14, 0x6d, 0xb7, 0x66, 0x43, 0x77, 0x2c, - 0x7c, 0x8d, 0xe0, 0x1d, 0x39, 0x2f, 0x98, 0x49, 0x10, 0x75, 0x5f, 0xf2, - 0xa0, 0xc7, 0x24, 0xd9, 0xec, 0x87, 0x08, 0x9f, 0xcd, 0xc1, 0x38, 0xf4, - 0xab, 0xfb, 0xfe, 0xef, 0x2a, 0x82, 0xec, 0x41, 0xa2, 0xc6, 0x8e, 0x35, - 0x13, 0xdc, 0xbe, 0xd3, 0xf1, 0x35, 0x4d, 0x1b, 0x16, 0xcd, 0x69, 0x36, - 0x62, 0xe2, 0xfb, 0x54, 0x18, 0x5d, 0xb5, 0xdc, 0xbc, 0x35, 0x20, 0x59, - 0xb6, 0xae, 0x23, 0xab, 0xf7, 0x59, 0xd9, 0xc4, 0xb8, 0x92, 0xef, 0xd0, - 0xd5, 0x32, 0xe3, 0x16, 0x8a, 0xc4, 0xa5, 0x4a, 0x2f, 0x2b, 0x03, 0x3a, - 0x54, 0xe2, 0x48, 0x66, 0x10, 0x3f, 0xa5, 0x5a, 0x26, 0x42, 0x82, 0x99, - 0xe3, 0xe1, 0xd0, 0xce, 0xda, 0x11, 0x4b, 0x16, 0x77, 0x47, 0x86, 0x38, - 0xdb, 0x5c, 0x3a, 0x47, 0xa6, 0x44, 0x99, 0x0b, 0xeb, 0x0f, 0x51, 0xb2, - 0xd9, 0xd5, 0x77, 0x10, 0x18, 0x2f, 0xf2, 0xab, 0xfb, 0x08, 0x6e, 0x57, - 0xd9, 0x94, 0x37, 0xc3, 0xb7, 0x2c, 0xa2, 0xc3, 0x1a, 0xe4, 0xcd, 0x2b, - 0x0e, 0xe6, 0xe5, 0x4d, 0x4d, 0x83, 0x04, 0x66, 0xd6, 0x79, 0x9b, 0x2e, - 0xe2, 0x95, 0x27, 0x12, 0x67, 0x12, 0xdf, 0x60, 0x66, 0x51, 0xdf, 0xe6, - 0x6d, 0xe8, 0x26, 0xae, 0x0c, 0x1b, 0xe3, 0x86, 0xed, 0xf7, 0x2e, 0x8e, - 0x9a, 0x54, 0xcd, 0x0c, 0xe8, 0xdf, 0x05, 0x0f, 0xed, 0x8d, 0x60, 0x94, - 0xc4, 0x94, 0x02, 0x9c, 0x7c, 0xd5, 0x70, 0x22, 0xfb, 0x36, 0x87, 0xf9, - 0x44, 0xd9, 0x8d, 0x82, 0x49, 0x86, 0xed, 0x51, 0x79, 0x1e, 0x81, 0x64, - 0x6c, 0x92, 0x34, 0xb1, 0x12, 0xb9, 0x41, 0x93, 0xba, 0xde, 0xee, 0x50, - 0x74, 0x95, 0xd8, 0x80, 0xce, 0x57, 0xbe, 0x68, 0xe3, 0xc3, 0xd3, 0x43, - 0x7b, 0x0c, 0x9a, 0x11, 0x59, 0x5c, 0x01, 0xb8, 0xc5, 0xc8, 0xd0, 0xb2, - 0x9b, 0xa1, 0x48, 0xc7, 0xaf, 0x0c, 0xd4, 0x74, 0x8a, 0xd8, 0x5c, 0xaf, - 0x0e, 0xa8, 0x96, 0xc0, 0xa6, 0x33, 0x5d, 0xd7, 0x34, 0xfc, 0x69, 0xfc, - 0x1b, 0x4b, 0x6f, 0x1b, 0x99, 0xed, 0x18, 0xb3, 0x9b, 0x23, 0xdc, 0xd8, - 0x50, 0x76, 0x93, 0x20, 0x6c, 0x70, 0x9a, 0x13, 0xe9, 0x4d, 0xac, 0x12, - 0x7a, 0x9f, 0x86, 0xb1, 0xe4, 0x8c, 0xdd, 0x49, 0xcb, 0x06, 0xf6, 0x2d, - 0xdd, 0x8d, 0x7e, 0x5c, 0x9e, 0xcd, 0x2c, 0x4d, 0xa4, 0x78, 0xfe, 0xfe, - 0x2c, 0xc6, 0xab, 0x4c, 0x96, 0x93, 0x19, 0x48, 0x94, 0x43, 0x0f, 0x47, - 0x3e, 0x45, 0x2b, 0xd2, 0x02, 0x2f, 0xc9, 0xb6, 0x81, 0x11, 0xd8, 0x63, - 0x84, 0xef, 0x2b, 0x6a, 0x98, 0x44, 0x6d, 0x81, 0x7f, 0xca, 0x5b, 0x16, - 0xa4, 0x5d, 0x44, 0x64, 0x4a, 0xda, 0x2e, 0x1a, 0x27, 0xd5, 0x7a, 0x37, - 0xa7, 0xf3, 0x50, 0xdf, 0xa0, 0xcf, 0x46, 0x4d, 0x4b, 0x76, 0x98, 0xd6, - 0xbb, 0x81, 0xad, 0xeb, 0x0a, 0xcd, 0x58, 0x02, 0x61, 0x57, 0xe0, 0xff, - 0x19, 0x74, 0x98, 0x02, 0x47, 0xff, 0xe4, 0x43, 0x1b, 0x31, 0x5b, 0xa3, - 0xed, 0xc0, 0xb6, 0x33, 0x3e, 0xad, 0xb2, 0xb8, 0x57, 0xb7, 0x8d, 0x05, - 0x8a, 0x74, 0x5b, 0x47, 0xba, 0x8f, 0x4c, 0xbf, 0xee, 0x5c, 0xc9, 0x7a, - 0xfb, 0x3d, 0xf6, 0x3d, 0x7a, 0x86, 0x2d, 0x3f, 0xb8, 0x0f, 0xf8, 0xc8, - 0x92, 0x11, 0x5a, 0xac, 0xbb, 0x1e, 0xf3, 0x24, 0xc7, 0xb9, 0xf8, 0x60, - 0xb4, 0x91, 0x25, 0xbc, 0xa0, 0xc1, 0x90, 0xc8, 0x1a, 0xae, 0x96, 0x0e, - 0xde, 0x0d, 0x9b, 0x62, 0x26, 0xd7, 0x3e, 0xef, 0x8a, 0xbe, 0x95, 0xa2, - 0x81, 0x37, 0x62, 0x3c, 0x23, 0x92, 0x03, 0xa2, 0xd0, 0x22, 0x99, 0x14, - 0x5c, 0x6a, 0x08, 0xda, 0x7a, 0x3f, 0xcf, 0x99, 0x28, 0x83, 0x46, 0xae, - 0x57, 0x1d, 0x16, 0x85, 0xf6, 0xe0, 0xba, 0x72, 0x3b, 0x78, 0x44, 0x21, - 0x99, 0x47, 0x36, 0x25, 0x89, 0x55, 0xb7, 0x61, 0xaf, 0x41, 0xd5, 0x79, - 0x93, 0x69, 0xe7, 0x72, 0x9c, 0xe3, 0x76, 0x7b, 0xe1, 0x63, 0x2f, 0x35, - 0x48, 0x02, 0x18, 0xad, 0x75, 0x49, 0xd0, 0x91, 0x7a, 0x06, 0xb8, 0x86, - 0x16, 0x13, 0xed, 0xac, 0x9a, 0xdf, 0xf0, 0x75, 0x18, 0x9f, 0xb9, 0x5b, - 0xbb, 0xfb, 0x94, 0x6e, 0xe5, 0x63, 0xd4, 0xcc, 0x2e, 0xdb, 0x2b, 0x46, - 0x95, 0xcb, 0xd3, 0xf7, 0x9b, 0x9c, 0x65, 0x97, 0x45, 0xfe, 0x0b, 0x28, - 0x8d, 0x25, 0x2a, 0x31, 0x8e, 0x89, 0xc6, 0x14, 0x23, 0x25, 0x0a, 0x10, - 0xad, 0x68, 0x8f, 0x58, 0xd5, 0xd9, 0xbb, 0x1e, 0xfb, 0x8e, 0x07, 0x8c, - 0x9a, 0x2d, 0x1b, 0x00, 0xb3, 0x1e, 0xbd, 0x36, 0x5a, 0xc9, 0x08, 0xa0, - 0xc4, 0x7f, 0x53, 0x12, 0x32, 0x02, 0xbf, 0x36, 0xa5, 0xce, 0xeb, 0x24, - 0x12, 0xd6, 0x4d, 0x04, 0xe1, 0xf5, 0xe5, 0x95, 0x85, 0x7a, 0x2e, 0x60, - 0x02, 0x03, 0x4a, 0x57, 0xfc, 0x52, 0x83, 0x7b, 0xd0, 0xf2, 0xcf, 0x14, - 0x7b, 0x19, 0x5c, 0x6f, 0x76, 0xe7, 0x47, 0x64, 0x0a, 0xd8, 0x26, 0xdc, - 0x5f, 0xa1, 0xfc, 0x05, 0xf9, 0xc2, 0x38, 0x87, 0xbc, 0x81, 0x8e, 0xeb, - 0xbe, 0x92, 0x84, 0xd2, 0x1b, 0xd9, 0x06, 0x8f, 0xbb, 0xf8, 0xb6, 0xba, - 0xe2, 0xaf, 0xa7, 0xf6, 0x03, 0x69, 0xd9, 0x9b, 0xcf, 0x00, 0xe0, 0x52, - 0xca, 0x79, 0x4b, 0x80, 0x4f, 0x1d, 0x2a, 0x34, 0x6b, 0x4e, 0x53, 0xa0, - 0x15, 0xda, 0xd3, 0xb0, 0x7a, 0xa7, 0xba, 0x04, 0x94, 0x4b, 0x75, 0xc2, - 0x1d, 0x77, 0x39, 0x34, 0x97, 0xa7, 0xc6, 0xc6, 0x5c, 0x2a, 0xc4, 0xaf, - 0x50, 0x99, 0x8e, 0x10, 0x05, 0xd8, 0xfc, 0x41, 0xe5, 0xa1, 0x87, 0x76, - 0xa5, 0x94, 0x6b, 0x16, 0x5d, 0x52, 0x3b, 0xc2, 0x44, 0x3e, 0xd4, 0x2f, - 0x90, 0xd4, 0x81, 0xb1, 0xcc, 0x83, 0xbe, 0x3c, 0x10, 0xb2, 0x30, 0x2b, - 0xd6, 0x51, 0xc6, 0x23, 0x58, 0xfb, 0x1d, 0x5c, 0x7d, 0xf4, 0x12, 0xde, - 0x88, 0xd9, 0xf7, 0xa5, 0x52, 0x56, 0x0a, 0xe6, 0x2d, 0x10, 0x39, 0xf7, - 0xde, 0x6c, 0x4e, 0x10, 0xa1, 0x18, 0x5d, 0xcf, 0xfe, 0x20, 0xae, 0x7f, - 0x13, 0x28, 0x87, 0x98, 0xd0, 0x9b, 0xb9, 0xc6, 0x9c, 0x10, 0x69, 0x30, - 0xd1, 0xf7, 0x4a, 0xc6, 0x45, 0xb4, 0x2a, 0xbd, 0xaf, 0xd7, 0xec, 0xc7, - 0x4d, 0x78, 0x1e, 0x48, 0x7e, 0x0b, 0xfe, 0x39, 0x5e, 0x2c, 0xa8, 0x42, - 0x3a, 0x59, 0xbf, 0x4b, 0x29, 0xec, 0xd3, 0xfb, 0x67, 0x63, 0x29, 0xab, - 0xf6, 0xe0, 0x8f, 0x59, 0x30, 0xd7, 0x8f, 0x29, 0xee, 0xf2, 0x54, 0x64, - 0x37, 0x8a, 0x6b, 0x77, 0x17, 0x60, 0x78, 0x39, 0xaf, 0x89, 0xef, 0x02, - 0xb3, 0xd1, 0x96, 0x59, 0xc6, 0x3a, 0xd2, 0x93, 0x2c, 0xde, 0xda, 0x22, - 0x3d, 0x70, 0xf0, 0x73, 0x3a, 0x30, 0xd9, 0x51, 0x71, 0xae, 0x1d, 0xb4, - 0x3e, 0xa3, 0xa6, 0xef, 0x59, 0xbe, 0x23, 0x80, 0xd1, 0x6e, 0xaa, 0xc4, - 0x7d, 0x75, 0xf7, 0xbe, 0x76, 0x01, 0x56, 0xa6, 0xad, 0x59, 0x68, 0x1a, - 0x04, 0x7d, 0x9e, 0x2c, 0xfc, 0xba, 0x7d, 0x0b, 0x7d, 0xe6, 0xdd, 0x83, - 0xe1, 0x1a, 0x17, 0x71, 0xf3, 0xcb, 0x29, 0xac, 0xa1, 0x47, 0x1f, 0xaf, - 0x1d, 0xdd, 0xf7, 0xa2, 0xf8, 0x1c, 0x88, 0xf2, 0xb6, 0x27, 0xa6, 0x33, - 0x80, 0x50, 0x99, 0xcf, 0x5c, 0xc8, 0x1d, 0xea, 0x51, 0x98, 0xcf, 0x5d, - 0xd2, 0xee, 0x16, 0x3a, 0x03, 0x6d, 0x7a, 0xa6, 0x95, 0x74, 0xb0, 0x87, - 0x0f, 0xdb, 0x75, 0x86, 0x62, 0x7b, 0x7a, 0xa8, 0xf5, 0x88, 0x5a, 0x7a, - 0x65, 0xc6, 0x01, 0xb0, 0xfd, 0x14, 0xbf, 0xe9, 0xb3, 0x24, 0xfc, 0x94, - 0xc8, 0x16, 0x71, 0xfd, 0x4b, 0xa8, 0xa9, 0x34, 0x2b, 0x75, 0x41, 0x38, - 0x66, 0xf7, 0x24, 0xdd, 0x8d, 0x80, 0x6f, 0xca, 0xbe, 0x88, 0x62, 0xb5, - 0x2f, 0x6d, 0x14, 0xac, 0xf5, 0xec, 0xb4, 0xf4, 0x62, 0xca, 0x65, 0x6f, - 0xba, 0x4c, 0x25, 0x4e, 0xc5, 0x05, 0xa9, 0xde, 0x04, 0x7a, 0x8b, 0x49, - 0x90, 0x88, 0x68, 0xd4, 0x8d, 0x3b, 0xfa, 0x89, 0x5b, 0x79, 0xb3, 0x50, - 0x6e, 0xd2, 0x53, 0x4a, 0x2a, 0x19, 0xf0, 0xfa, 0xc0, 0xdd, 0x48, 0x82, - 0x03, 0xfb, 0x62, 0xcb, 0x1c, 0x45, 0x84, 0x2b, 0x8a, 0x38, 0xf4, 0x0a, - 0xd2, 0xa8, 0x58, 0x75, 0xcb, 0x8d, 0xa1, 0x72, 0x28, 0x56, 0x69, 0x99, - 0x2b, 0x63, 0xf0, 0xd3, 0x08, 0x69, 0x3a, 0x5e, 0xf4, 0x00, 0x74, 0xcd, - 0x6c, 0x87, 0xcc, 0x58, 0xdc, 0x7f, 0xe1, 0xc4, 0xf1, 0xf6, 0x2e, 0xdf, - 0xd1, 0x38, 0x47, 0x19, 0xdf, 0xad, 0x56, 0x06, 0x17, 0x92, 0xc9, 0xb1, - 0x29, 0xab, 0x4b, 0xa1, 0x06, 0x84, 0x47, 0xd8, 0x23, 0x7f, 0x11, 0x26, - 0xa1, 0xd7, 0x38, 0x33, 0x7b, 0xae, 0x1f, 0xb7, 0x24, 0xa4, 0xfe, 0x3e, - 0xbd, 0x57, 0x5e, 0xf7, 0x9d, 0x04, 0x55, 0x98, 0x31, 0x15, 0xb4, 0x50, - 0x96, 0x91, 0x73, 0x0d, 0x30, 0x16, 0x6c, 0x61, 0xda, 0x3c, 0x75, 0xa7, - 0x05, 0x33, 0xa2, 0x6b, 0x3f, 0x45, 0xba, 0x52, 0x52, 0x3e, 0xb0, 0x03, - 0xc7, 0x18, 0x7a, 0x44, 0x82, 0x51, 0x7e, 0xfc, 0x8f, 0xe9, 0x7d, 0xef, - 0x70, 0x06, 0x07, 0x0c, 0xb8, 0x46, 0xc1, 0x2e, 0x2b, 0x2a, 0x77, 0xb9, - 0x85, 0xe4, 0x03, 0xb6, 0x41, 0xdb, 0x99, 0xc0, 0x79, 0x29, 0x19, 0x24, - 0x5c, 0xaa, 0xd5, 0x3f, 0x36, 0x1e, 0x20, 0x3d, 0xbb, 0x19, 0x13, 0x9f, - 0xec, 0x16, 0x24, 0x74, 0xb2, 0xce, 0xac, 0x93, 0xaa, 0xb9, 0x8d, 0x2e, - 0x7c, 0x1f, 0xb5, 0xf9, 0xb5, 0xe0, 0x91, 0xc7, 0x39, 0xc3, 0x76, 0x20, - 0x26, 0xbb, 0xb9, 0x5e, 0xab, 0xac, 0xee, 0x24, 0x50, 0x47, 0x9e, 0xf8, - 0xbc, 0x15, 0x35, 0xea, 0x17, 0xbe, 0xb2, 0x79, 0xea, 0x88, 0xd9, 0xd0, - 0x5a, 0xce, 0xaf, 0xe1, 0x06, 0xf7, 0x39, 0xdb, 0x85, 0x7c, 0x8d, 0xc4, - 0x18, 0x75, 0x6c, 0xa2, 0x02, 0xc3, 0xa8, 0xbb, 0x6e, 0x56, 0xcf, 0x58, - 0x00, 0xd5, 0xfb, 0xf0, 0x02, 0x30, 0x2a, 0xd0, 0x6f, 0x9a, 0x15, 0xd4, - 0x2a, 0x2a, 0xd4, 0x9d, 0xd3, 0x6f, 0x9b, 0xe3, 0x73, 0x6c, 0x22, 0xd9, - 0xc5, 0x93, 0xb9, 0x97, 0xce, 0x4d, 0xc4, 0xa1, 0x0d, 0x1a, 0x14, 0xd8, - 0xa0, 0x11, 0x6d, 0xc6, 0x6c, 0x20, 0x84, 0x65, 0x53, 0xa4, 0x08, 0xfa, - 0xc8, 0x72, 0xbd, 0x47, 0xb7, 0x25, 0xbf, 0x2d, 0x11, 0xe9, 0x6f, 0xa7, - 0x81, 0x8a, 0x61, 0xcd, 0xfd, 0x2d, 0x77, 0xef, 0x10, 0x9d, 0x56, 0xb9, - 0xb7, 0xf9, 0x95, 0xde, 0xfe, 0x92, 0xc6, 0x14, 0xa0, 0x87, 0x7a, 0x78, - 0x82, 0x9a, 0x10, 0xb8, 0x47, 0x63, 0x40, 0xdf, 0x7e, 0x6b, 0xf2, 0xed, - 0x2d, 0x23, 0x9d, 0xf0, 0xe9, 0x95, 0x69, 0x6d, 0x90, 0x7b, 0x75, 0x7a, - 0x66, 0xeb, 0x64, 0xdf, 0xf3, 0x19, 0xf0, 0x5d, 0x79, 0xc6, 0x2c, 0x2a, - 0x31, 0x48, 0x57, 0xc5, 0x7e, 0x88, 0x75, 0x78, 0x8f, 0xb1, 0x06, 0x3c, - 0x4f, 0x07, 0x9a, 0xa3, 0x70, 0x5c, 0x7f, 0xbb, 0x08, 0x9d, 0xa3, 0x31, - 0x7c, 0x41, 0x5a, 0xb0, 0xe3, 0x34, 0x3e, 0xdc, 0x10, 0x11, 0xcc, 0xe3, - 0xce, 0xb8, 0x8a, 0xde, 0x5d, 0x20, 0x62, 0x83, 0x67, 0xb0, 0xf0, 0x74, - 0xee, 0xa2, 0xc9, 0xa1, 0x31, 0x94, 0xcb, 0x29, 0x82, 0x43, 0x08, 0xbd, - 0x27, 0xaf, 0x93, 0x04, 0x8a, 0xe6, 0x2f, 0x04, 0x04, 0x15, 0x84, 0x94, - 0x1b, 0xcf, 0xb8, 0xae, 0x26, 0x18, 0xe7, 0x79, 0x5b, 0x6c, 0xa9, 0xf7, - 0x3c, 0x4d, 0x10, 0x38, 0xba, 0xd0, 0x1a, 0x59, 0xff, 0xf0, 0x2c, 0xe1, - 0x04, 0xba, 0x03, 0x72, 0x7d, 0xdd, 0x11, 0x9b, 0xa7, 0x2b, 0x2b, 0xf5, - 0x3a, 0xde, 0x65, 0x24, 0x10, 0x31, 0x84, 0x74, 0x61, 0x22, 0x44, 0x7e, - 0x43, 0xa5, 0x5a, 0x63, 0xb1, 0x1f, 0x5f, 0x5f, 0xd6, 0x54, 0xb1, 0x6f, - 0x7d, 0xb2, 0x92, 0xd1, 0x1f, 0xae, 0x2d, 0x86, 0x08, 0x00, 0x89, 0x8d, - 0xfb, 0x60, 0x9d, 0x3c, 0x5f, 0x41, 0xe4, 0x7c, 0xeb, 0xe3, 0xb9, 0xfa, - 0x79, 0x88, 0xdc, 0xdc, 0x6d, 0xde, 0xa6, 0xa0, 0xcb, 0x1a, 0x8a, 0x02, - 0x54, 0xb9, 0xd6, 0x01, 0x96, 0x37, 0x55, 0xe0, 0x31, 0x41, 0x00, 0x8c, - 0x03, 0x92, 0xb2, 0x8e, 0x22, 0x2a, 0xe4, 0x1c, 0x29, 0x63, 0xfa, 0xfb, - 0x81, 0x76, 0xe7, 0x04, 0x48, 0xaf, 0x7a, 0x66, 0xf9, 0xda, 0x22, 0x34, - 0x9f, 0x09, 0xd1, 0x39, 0xd7, 0x3c, 0xba, 0x7a, 0x13, 0xc4, 0x45, 0xed, - 0x66, 0x4c, 0xb6, 0x39, 0x31, 0x2d, 0xd0, 0xfd, 0x8d, 0x93, 0x76, 0x8e, - 0x87, 0xff, 0xc9, 0xf2, 0x93, 0x5e, 0x9b, 0xc2, 0x6e, 0x50, 0xe3, 0x0d, - 0x95, 0x3f, 0x26, 0x79, 0x3c, 0x58, 0xcf, 0xcb, 0xf2, 0x9c, 0xb9, 0x58, - 0xe2, 0xe5, 0x99, 0x86, 0x03, 0x7d, 0x12, 0x35, 0x40, 0x9b, 0xf5, 0x55, - 0x79, 0x8c, 0x9b, 0xbb, 0xef, 0x9b, 0xac, 0x5b, 0x48, 0x0e, 0xe2, 0xa4, - 0x47, 0xe6, 0x89, 0xbb, 0x69, 0xc7, 0xa0, 0x04, 0x48, 0xbe, 0x50, 0x65, - 0x3f, 0x49, 0xa3, 0x1e, 0xcd, 0xed, 0xc2, 0x0a, 0x26, 0x01, 0x81, 0x6a, - 0x43, 0x32, 0xd8, 0x1f, 0x3a, 0x93, 0xd7, 0x3b, 0x90, 0xf0, 0x22, 0xcb, - 0xd7, 0x90, 0xd4, 0x0a, 0xfa, 0x27, 0xf3, 0xf2, 0xf3, 0x1c, 0x92, 0xdf, - 0x4d, 0x6f, 0x99, 0xc1, 0x0a, 0x2c, 0xdf, 0xcc, 0x39, 0x9a, 0xec, 0xde, - 0xe1, 0x00, 0x47, 0xf1, 0x3f, 0xc9, 0xab, 0xf8, 0x67, 0x5b, 0xb8, 0x26, - 0x0f, 0x76, 0x94, 0x20, 0xe7, 0x2f, 0xfb, 0x53, 0xca, 0x56, 0xf1, 0x33, - 0xef, 0xa1, 0x62, 0xa0, 0xf8, 0x88, 0x2b, 0x13, 0x55, 0x47, 0xc9, 0xf5, - 0x9e, 0x3c, 0xeb, 0x5b, 0xff, 0xbd, 0x52, 0x73, 0x59, 0xd4, 0xb0, 0x0c, - 0xe3, 0xad, 0xf1, 0xf9, 0x0b, 0xca, 0x1d, 0xd1, 0x18, 0x53, 0x3f, 0x7e, - 0xc3, 0xdb, 0x5c, 0x7a, 0x33, 0xbf, 0x88, 0x54, 0xae, 0x40, 0xa4, 0x82, - 0x56, 0x6e, 0xca, 0x49, 0x45, 0xdc, 0xf6, 0x6c, 0x57, 0xef, 0xfa, 0xa7, - 0x8f, 0xbd, 0x8c, 0x4f, 0x5f, 0x3a, 0x77, 0x20, 0x6b, 0x4c, 0x67, 0xf3, - 0x07, 0xcd, 0x08, 0xc5, 0x65, 0xb7, 0x76, 0x64, 0x79, 0xa9, 0x33, 0x80, - 0x2b, 0xf8, 0x7f, 0xa1, 0x9d, 0x00, 0x17, 0xba, 0x4f, 0x6b, 0xe8, 0x97, - 0x44, 0x3d, 0x03, 0xcf, 0x40, 0x4a, 0xb7, 0xc0, 0xc6, 0xf3, 0x1e, 0x24, - 0xd5, 0x60, 0xfb, 0xf2, 0x35, 0xa9, 0x55, 0xcd, 0xf3, 0xd4, 0x8f, 0x7b, - 0xfa, 0x2d, 0xf9, 0xed, 0x2b, 0xbf, 0xc2, 0xcb, 0x6b, 0xb5, 0x27, 0xfd, - 0x12, 0xed, 0xae, 0x75, 0x5d, 0xbe, 0x98, 0x57, 0x42, 0x1b, 0xe5, 0x9d, - 0xc6, 0xec, 0xb1, 0x1a, 0xbb, 0x34, 0xeb, 0xad, 0x89, 0xc7, 0xbe, 0x56, - 0xd3, 0xde, 0x3c, 0x34, 0xa6, 0x79, 0x95, 0x42, 0x88, 0x38, 0x6e, 0x97, - 0xd2, 0x3a, 0x46, 0x3c, 0x26, 0x4f, 0x2c, 0xc3, 0xbe, 0xbf, 0xf0, 0x14, - 0x47, 0x01, 0xab, 0x51, 0xd3, 0x93, 0x06, 0x23, 0xd9, 0xc9, 0x72, 0x48, - 0x1d, 0x42, 0xb5, 0xc3, 0xbf, 0x7d, 0xda, 0xb4, 0x03, 0x0b, 0x0c, 0xc5, - 0x07, 0x38, 0x7b, 0xd5, 0x63, 0x66, 0xb2, 0x68, 0xd0, 0x71, 0x42, 0xf3, - 0x8a, 0x77, 0xc2, 0xfc, 0x30, 0x82, 0x3a, 0xd7, 0x5c, 0x9f, 0x8a, 0x19, - 0x75, 0x0e, 0xb7, 0xf9, 0xd3, 0x88, 0xb5, 0x94, 0x81, 0xb1, 0x2a, 0x10, - 0x40, 0x17, 0x05, 0x7a, 0x46, 0x39, 0xcc, 0xcd, 0x9d, 0x4a, 0xdd, 0xa2, - 0x21, 0x8d, 0xd2, 0x25, 0x29, 0x84, 0x99, 0xbc, 0xea, 0x38, 0xf8, 0xf7, - 0xd6, 0x5f, 0xab, 0x22, 0x2c, 0x8b, 0xa1, 0x99, 0xa6, 0x28, 0x12, 0x0c, - 0x5a, 0xef, 0x97, 0xcb, 0xdb, 0x9c, 0xfa, 0x03, 0xba, 0x89, 0xa5, 0xbe, - 0x5f, 0x76, 0x6d, 0x81, 0xa2, 0xb0, 0x1e, 0xb2, 0xb2, 0xac, 0xbc, 0x53, - 0xe8, 0x64, 0x39, 0xe1, 0x3c, 0x0f, 0x92, 0x93, 0xf3, 0x78, 0x3b, 0x7d, - 0x25, 0xad, 0xca, 0x6f, 0xd2, 0xc1, 0x44, 0x6e, 0xa2, 0x2f, 0x04, 0x03, - 0xe4, 0xe3, 0xec, 0x77, 0xca, 0x60, 0x9f, 0x87, 0xc9, 0xa8, 0x72, 0xbb, - 0xf8, 0xe3, 0x07, 0x51, 0x5e, 0xa7, 0xc4, 0x22, 0xca, 0x3e, 0xca, 0xb9, - 0x21, 0x63, 0x06, 0xae, 0x9b, 0x62, 0xd8, 0xcb, 0xf7, 0x1e, 0xb5, 0x15, - 0x93, 0x14, 0xe3, 0x90, 0xd0, 0xcc, 0x23, 0xdd, 0x63, 0x7f, 0x4f, 0x70, - 0x7e, 0x54, 0x13, 0x75, 0xf0, 0x03, 0x65, 0x01, 0xcf, 0x64, 0xf2, 0x8f, - 0xd2, 0x51, 0xc2, 0x75, 0xaf, 0xc0, 0x8d, 0xd6, 0x27, 0x15, 0xa5, 0x9f, - 0xbd, 0x74, 0xf9, 0x83, 0x01, 0x8b, 0xbc, 0x96, 0xf9, 0x68, 0x89, 0x89, - 0x67, 0x71, 0x1c, 0xd7, 0xaa, 0x95, 0x43, 0x35, 0xa3, 0x63, 0x57, 0x72, - 0xb9, 0x27, 0xb5, 0x79, 0x93, 0x98, 0xe5, 0x40, 0xd6, 0x07, 0x9e, 0xdb, - 0x69, 0x81, 0xfb, 0x1c, 0xad, 0x88, 0x92, 0xd3, 0xfe, 0xd7, 0x55, 0xa0, - 0x85, 0x82, 0x3c, 0xb3, 0xe7, 0x22, 0x3a, 0xaa, 0xc2, 0x7f, 0x74, 0x8f, - 0xee, 0x99, 0xfb, 0x14, 0xac, 0xb0, 0xb5, 0xbf, 0xa4, 0x6d, 0x94, 0xc5, - 0xb5, 0xc2, 0x2a, 0xe0, 0xed, 0xb2, 0x07, 0xce, 0x97, 0xf9, 0xe6, 0xd0, - 0xfb, 0x66, 0x5b, 0x1e, 0xbd, 0x96, 0xfa, 0x4b, 0x1a, 0x0d, 0xe7, 0x7d, - 0x60, 0xf4, 0x34, 0x95, 0xa1, 0x36, 0x5a, 0x72, 0x03, 0x19, 0x17, 0xb4, - 0x53, 0x85, 0x6e, 0xbb, 0xf7, 0xe0, 0xa0, 0x41, 0x04, 0xad, 0x59, 0x41, - 0x85, 0x1a, 0xc2, 0xc8, 0xbf, 0x97, 0xf8, 0xc5, 0x55, 0xbb, 0x77, 0x97, - 0x68, 0x6b, 0x20, 0xdc, 0x77, 0x68, 0x11, 0xa1, 0x85, 0x75, 0x2c, 0x69, - 0xba, 0x4f, 0x95, 0x25, 0x56, 0xa8, 0x87, 0xf9, 0x3c, 0x8b, 0x56, 0x82, - 0x67, 0x2c, 0x24, 0x66, 0x82, 0x00, 0xf0, 0x6b, 0x68, 0x34, 0xf9, 0xec, - 0x2b, 0xf9, 0xfe, 0x8c, 0xd8, 0x81, 0xa7, 0xde, 0x33, 0xe0, 0xa4, 0x39, - 0xbf, 0x55, 0x9d, 0x1c, 0x17, 0xb5, 0xc1, 0x1d, 0x70, 0xa8, 0xb6, 0x28, - 0x47, 0xda, 0x6e, 0x58, 0x16, 0xeb, 0xa3, 0x0d, 0xf1, 0x4b, 0x94, 0x32, - 0xcf, 0x2c, 0xf2, 0xca, 0xe8, 0x8c, 0x28, 0x61, 0xb4, 0x4d, 0xc8, 0xf5, - 0xc3, 0x9f, 0xf9, 0xa1, 0xfe, 0xa3, 0x78, 0xed, 0xd3, 0xf3, 0x60, 0x71, - 0x6a, 0x23, 0xef, 0x19, 0xdf, 0x2f, 0x92, 0x82, 0xc4, 0xd0, 0xb2, 0x6d, - 0x50, 0xbc, 0xc5, 0xe4, 0xd4, 0x1b, 0xb5, 0xef, 0xd6, 0x1a, 0x49, 0x7a, - 0x66, 0xdc, 0xbd, 0x2c, 0xca, 0xe7, 0xfe, 0x5c, 0xbe, 0x92, 0xfe, 0x49, - 0x9d, 0x1b, 0xa6, 0xc5, 0x45, 0xf0, 0x85, 0x6c, 0xde, 0x2f, 0xc1, 0xda, - 0x31, 0x5b, 0x96, 0x77, 0x14, 0x19, 0x02, 0x53, 0xcf, 0x5a, 0x7b, 0xbf, - 0xdf, 0xed, 0xca, 0x27, 0x2b, 0x51, 0xa9, 0x03, 0x8d, 0x7f, 0x5b, 0xeb, - 0x4d, 0x93, 0x25, 0xe5, 0xab, 0x67, 0xd7, 0xb4, 0x35, 0x54, 0x9d, 0xf5, - 0x14, 0x93, 0xec, 0xe2, 0x49, 0xab, 0xad, 0x40, 0x1f, 0x7d, 0x47, 0x07, - 0xcf, 0x3d, 0x9e, 0xfe, 0xac, 0x97, 0xf1, 0x98, 0x20, 0x63, 0x12, 0xf2, - 0xbc, 0xf9, 0x1f, 0xdc, 0x1a, 0xd2, 0x2c, 0x02, 0x48, 0x13, 0xd4, 0xf8, - 0x9f, 0x3e, 0xb2, 0x71, 0xca, 0x00, 0x7a, 0x72, 0xec, 0xed, 0xf4, 0xda, - 0xf1, 0x31, 0x70, 0x16, 0xb3, 0x8c, 0xae, 0xf4, 0x63, 0x73, 0x53, 0xa0, - 0x05, 0x81, 0x50, 0x52, 0x9b, 0xf1, 0x7f, 0xcb, 0xd8, 0x56, 0xd1, 0xd5, - 0x72, 0x07, 0xbf, 0xaf, 0x9d, 0xdb, 0xae, 0xe3, 0x38, 0xbc, 0x7c, 0x14, - 0xad, 0xb1, 0x13, 0xd8, 0xdc, 0x6b, 0x4a, 0xf5, 0x92, 0x33, 0xf9, 0x1a, - 0x96, 0xf0, 0xcb, 0x9d, 0xae, 0x16, 0xf8, 0xe7, 0x74, 0x77, 0x30, 0xde, - 0x78, 0xc8, 0xf8, 0xa7, 0xae, 0x89, 0x9a, 0xe3, 0xcb, 0x01, 0x38, 0x4e, - 0xa3, 0x52, 0x4e, 0x8f, 0xfe, 0xa5, 0x51, 0xd5, 0x0d, 0xd7, 0x27, 0x3f, - 0x31, 0x85, 0x12, 0x26, 0xd0, 0x64, 0x9e, 0xb9, 0x7d, 0x88, 0xc8, 0x5c, - 0xd2, 0xfa, 0xb6, 0x41, 0xc3, 0xa6, 0x44, 0xfc, 0x39, 0xe8, 0x89, 0xbc, - 0x12, 0x95, 0x59, 0xa0, 0x8a, 0x4a, 0xf2, 0x74, 0x26, 0x23, 0xc1, 0xba, - 0xa2, 0x9a, 0x04, 0xed, 0xc2, 0xf5, 0x21, 0x3b, 0x5c, 0x89, 0xec, 0xcb, - 0xcd, 0x60, 0x66, 0xc9, 0x92, 0x6c, 0x6d, 0x18, 0x9b, 0xe6, 0xe6, 0x5c, - 0x40, 0x4f, 0xcb, 0x7f, 0x29, 0xd7, 0xf9, 0xb6, 0x18, 0x5c, 0x0b, 0xa5, - 0xfe, 0x0b, 0xbb, 0xbb, 0xb0, 0x64, 0xd9, 0xd3, 0xff, 0xc3, 0xd4, 0x2a, - 0x8f, 0xa1, 0xcc, 0xb3, 0xcf, 0x4a, 0xd5, 0x41, 0x68, 0x35, 0x0f, 0x20, - 0xe2, 0x46, 0xfa, 0x86, 0x1c, 0x4b, 0x60, 0x07, 0x41, 0x8b, 0xb9, 0xee, - 0x57, 0x6e, 0xae, 0x85, 0x09, 0xb4, 0xec, 0x30, 0x96, 0x0f, 0x5f, 0x8e, - 0x86, 0xc2, 0x98, 0x5d, 0x45, 0xb0, 0x5f, 0xc1, 0x1b, 0x2b, 0x9f, 0x32, - 0x11, 0xe7, 0xae, 0x20, 0x65, 0x65, 0x07, 0x6b, 0x4b, 0xe0, 0x71, 0xe9, - 0xeb, 0x19, 0x79, 0xb1, 0xff, 0x99, 0xbe, 0x1a, 0xd8, 0x6d, 0xea, 0xef, - 0x09, 0x6d, 0x0f, 0x3f, 0x22, 0xcd, 0xda, 0x1f, 0x45, 0x98, 0x85, 0x8a, - 0x4b, 0x5f, 0xe2, 0xb2, 0x4f, 0x1f, 0x9c, 0xdd, 0x90, 0x0f, 0x0b, 0x5f, - 0xd6, 0xab, 0xba, 0x0f, 0x5e, 0x04, 0xa8, 0xed, 0x22, 0xd8, 0x54, 0x9b, - 0x6b, 0x22, 0x0d, 0x26, 0xfc, 0x98, 0x5f, 0x4b, 0x11, 0x4f, 0x92, 0xf2, - 0x0e, 0xbb, 0xee, 0x11, 0x50, 0xd5, 0xf2, 0xe5, 0x47, 0x92, 0x81, 0xc8, - 0x2b, 0x94, 0x5e, 0x91, 0x76, 0x8c, 0xb2, 0x52, 0xd4, 0x98, 0xce, 0xc4, - 0x14, 0xc9, 0x91, 0x10, 0x84, 0x6f, 0xf2, 0x6c, 0x27, 0x58, 0x97, 0x9e, - 0x98, 0x64, 0x92, 0xfd, 0x97, 0xd4, 0x33, 0x4b, 0x73, 0xfa, 0x72, 0xed, - 0xbd, 0xb1, 0x43, 0x69, 0x21, 0x17, 0xf2, 0xc9, 0xca, 0xa9, 0x46, 0xbf, - 0x74, 0x0f, 0x3d, 0x26, 0x1d, 0xa7, 0x72, 0x55, 0xd8, 0xe6, 0x17, 0x20, - 0x94, 0xac, 0xd1, 0xfe, 0x1c, 0x36, 0x97, 0xc2, 0xd5, 0xa4, 0x70, 0xbb, - 0x48, 0x8f, 0x95, 0x91, 0xd3, 0x2e, 0x66, 0x4e, 0xc5, 0x6e, 0x9f, 0xcd, - 0xd0, 0x63, 0xe4, 0x78, 0xfd, 0xca, 0x7f, 0xd5, 0x40, 0x3b, 0x96, 0x6f, - 0x28, 0xde, 0xb6, 0x95, 0x2b, 0x3a, 0x3f, 0x6b, 0x6a, 0x06, 0xe0, 0x79, - 0x16, 0x5b, 0x6d, 0xf0, 0x9a, 0xba, 0xe1, 0xab, 0x3c, 0x6b, 0xb1, 0x07, - 0x08, 0xce, 0xab, 0xe2, 0x89, 0xa5, 0x9d, 0x61, 0x0b, 0x6e, 0x68, 0x40, - 0x84, 0x60, 0x8a, 0x71, 0xf5, 0x0a, 0xe0, 0x15, 0x2f, 0xb6, 0x01, 0x68, - 0x10, 0x98, 0x31, 0xb5, 0xc9, 0xdb, 0x81, 0xaa, 0x16, 0x98, 0x02, 0x4a, - 0x76, 0x93, 0x27, 0x1f, 0x3d, 0xd0, 0x2e, 0x73, 0x9c, 0xa6, 0x92, 0xd5, - 0x94, 0x8d, 0x24, 0x6c, 0x30, 0x14, 0x1a, 0xd2, 0xd4, 0xd3, 0x1e, 0x42, - 0xe8, 0x06, 0xbc, 0x3b, 0x4a, 0x45, 0x0f, 0x41, 0x60, 0x74, 0xa1, 0x25, - 0x1a, 0xc0, 0xd6, 0x8d, 0x72, 0x60, 0x1e, 0x15, 0x47, 0x1a, 0x3c, 0x95, - 0x6d, 0xcc, 0x56, 0xaf, 0x32, 0xe6, 0x2a, 0xaf, 0x12, 0xd5, 0xc0, 0x8c, - 0x76, 0x9f, 0x09, 0x72, 0xfc, 0x83, 0x57, 0xcd, 0xa6, 0xf2, 0xf8, 0x1a, - 0x75, 0x2e, 0x77, 0x38, 0x20, 0xb9, 0x4b, 0xf9, 0x40, 0x37, 0x5f, 0x21, - 0xb1, 0x48, 0x7e, 0x9f, 0x14, 0x0e, 0xd4, 0xa4, 0xc0, 0x68, 0x07, 0x93, - 0x73, 0xde, 0x6c, 0x57, 0x55, 0x85, 0x57, 0xc9, 0xfe, 0xbd, 0x86, 0x22, - 0x70, 0xea, 0x49, 0x8f, 0xcd, 0x47, 0x3f, 0x76, 0x24, 0x0e, 0x42, 0x68, - 0x02, 0xa7, 0x42, 0x80, 0x0a, 0x92, 0xaf, 0xf4, 0xb4, 0x40, 0x08, 0xcd, - 0x2f, 0xf7, 0x62, 0x55, 0xeb, 0x70, 0x01, 0x59, 0x9d, 0x6f, 0xcd, 0x6a, - 0x14, 0xcf, 0x2f, 0xb4, 0xdb, 0x8f, 0x45, 0x93, 0xef, 0xc3, 0x1e, 0x30, - 0xcc, 0x8d, 0x51, 0x2a, 0x25, 0xbd, 0x68, 0x53, 0xde, 0x06, 0xca, 0xc3, - 0xbe, 0x35, 0x00, 0xd1, 0x33, 0xd6, 0x36, 0x57, 0x20, 0x1c, 0x5d, 0xac, - 0xdb, 0xc2, 0x86, 0x94, 0xf7, 0xcb, 0x5f, 0x1f, 0x28, 0x1e, 0x73, 0x9e, - 0x76, 0x18, 0x82, 0x0c, 0x2b, 0xec, 0xe4, 0x77, 0x10, 0x30, 0x20, 0x7e, - 0xf4, 0xc0, 0xdc, 0xcf, 0x76, 0xd8, 0x91, 0x57, 0x6b, 0x6c, 0x38, 0xa1, - 0x1a, 0xf1, 0xd8, 0x99, 0x46, 0xf0, 0xe2, 0xfa, 0xdc, 0x34, 0x59, 0xe1, - 0x2b, 0x1a, 0xd1, 0x77, 0x5b, 0x74, 0x3c, 0x3a, 0x97, 0x5e, 0x9b, 0x0d, - 0xe9, 0x2f, 0xf1, 0x11, 0x2b, 0x75, 0x4c, 0xa8, 0xdc, 0xc8, 0x68, 0xde, - 0xf2, 0x0b, 0xf0, 0x07, 0xd4, 0x0c, 0x65, 0xbf, 0x7d, 0xfe, 0x31, 0xec, - 0xed, 0x0e, 0xc3, 0xac, 0x19, 0x2c, 0xcd, 0x85, 0x78, 0x76, 0x51, 0xae, - 0xad, 0x1c, 0x04, 0x35, 0x7d, 0xbd, 0xb8, 0x8b, 0x75, 0x54, 0x9a, 0x56, - 0x80, 0x60, 0x4d, 0x44, 0xb0, 0x77, 0x5f, 0xe9, 0xe7, 0x62, 0x5d, 0x98, - 0x04, 0x4e, 0x6f, 0xf7, 0x99, 0x81, 0x5c, 0xfa, 0xe2, 0x18, 0x7e, 0xe8, - 0x82, 0x87, 0xa4, 0x38, 0x79, 0x7c, 0x7d, 0x41, 0xef, 0x47, 0xa5, 0x8e, - 0xf9, 0xf3, 0x32, 0x5e, 0xd6, 0xdf, 0xc0, 0x66, 0xa8, 0xa1, 0xdb, 0xd0, - 0x3d, 0x6f, 0xd4, 0xd0, 0x89, 0x79, 0x6d, 0xb2, 0x8e, 0x86, 0x84, 0x22, - 0x6b, 0x20, 0x48, 0x43, 0x19, 0xf6, 0xaf, 0x3d, 0xf7, 0x76, 0x9d, 0x7d, - 0xc8, 0x7c, 0xbc, 0x47, 0x7e, 0x6c, 0xe8, 0x4a, 0x48, 0x83, 0xf5, 0x52, - 0x6e, 0x82, 0xdd, 0x37, 0x1f, 0x93, 0x2d, 0x29, 0x74, 0x55, 0x23, 0x96, - 0xbe, 0x0c, 0x1a, 0x50, 0xf7, 0xe0, 0x1c, 0xf4, 0x4d, 0x4f, 0xdc, 0x06, - 0x5b, 0x06, 0xcb, 0x0e, 0xba, 0xc0, 0x33, 0x68, 0x68, 0xb5, 0xb3, 0x0d, - 0xda, 0x09, 0x54, 0xd0, 0x9c, 0x4a, 0x20, 0x4b, 0x8d, 0x4c, 0x9c, 0x3c, - 0x55, 0x54, 0x5c, 0x4f, 0xaa, 0x10, 0x71, 0x8b, 0x8b, 0xb4, 0x12, 0x2b, - 0x4a, 0x1d, 0x0d, 0xef, 0x3b, 0xf7, 0xf2, 0x5a, 0x76, 0xb3, 0x0f, 0x87, - 0x9c, 0xe0, 0xb5, 0xd7, 0x80, 0xc3, 0xfa, 0x23, 0x69, 0x7f, 0xdb, 0x6d, - 0xa0, 0x46, 0x95, 0x47, 0xc5, 0xe9, 0x89, 0x58, 0x69, 0xc8, 0x5b, 0xf5, - 0x45, 0xa5, 0x1d, 0xe5, 0xc4, 0x8b, 0x6c, 0xcb, 0x40, 0x78, 0x52, 0xfb, - 0x71, 0xe9, 0x4e, 0x78, 0x40, 0x1e, 0xd1, 0xd2, 0xc5, 0x3d, 0x9f, 0xe3, - 0xa8, 0x2b, 0xef, 0xae, 0xbb, 0x46, 0xe8, 0x12, 0xca, 0xe7, 0x69, 0xee, - 0xc6, 0xc7, 0xc4, 0x28, 0x58, 0xca, 0x02, 0x2f, 0x33, 0x3a, 0x83, 0xb2, - 0xfa, 0x71, 0x9b, 0x8d, 0x32, 0x70, 0xfc, 0x6c, 0x0f, 0x6b, 0xce, 0xef, - 0x67, 0x05, 0x28, 0x5c, 0x12, 0xec, 0xc2, 0x07, 0x3f, 0x8c, 0xe5, 0xac, - 0xb6, 0x19, 0x4f, 0xc4, 0x91, 0x1e, 0x4e, 0x8a, 0xce, 0x04, 0xb5, 0x06, - 0xe5, 0xa3, 0xdb, 0xc7, 0xfa, 0x27, 0x7e, 0xfe, 0x96, 0x93, 0x16, 0x13, - 0x69, 0xb3, 0x1c, 0xcd, 0xf2, 0x5c, 0x14, 0x75, 0xdd, 0x85, 0x3f, 0x74, - 0xe0, 0xb0, 0xbc, 0xd8, 0x81, 0x7f, 0x4b, 0x13, 0xa2, 0x89, 0x81, 0x3f, - 0xd3, 0x59, 0x23, 0xe9, 0xe8, 0xe9, 0xa6, 0xa0, 0xc9, 0xb5, 0xef, 0x4b, - 0xd1, 0x8e, 0x0e, 0xc9, 0xce, 0x86, 0xee, 0xdd, 0x54, 0x74, 0x67, 0x7a, - 0x33, 0x66, 0xdb, 0xce, 0x81, 0x3d, 0xeb, 0xc1, 0xcb, 0xb2, 0xbc, 0x6f, - 0x08, 0x8d, 0x7f, 0xf3, 0xc7, 0x46, 0x92, 0xbe, 0xf5, 0x92, 0xa8, 0xc2, - 0x23, 0x43, 0x80, 0x62, 0x33, 0xf8, 0x66, 0x97, 0x58, 0x4e, 0x41, 0xe0, - 0x3d, 0x65, 0xd5, 0x9e, 0x49, 0x91, 0x46, 0x1a, 0xda, 0x36, 0x31, 0x8a, - 0xa3, 0xf8, 0x6d, 0x30, 0x12, 0xc7, 0xfe, 0xe7, 0xea, 0x25, 0x94, 0x1a, - 0x28, 0x4f, 0x02, 0x0d, 0xdf, 0x40, 0xd0, 0x07, 0x48, 0x0a, 0xb2, 0x56, - 0xf0, 0x39, 0xc9, 0xe0, 0x5f, 0x6d, 0xe9, 0x87, 0x62, 0xc9, 0x8e, 0xf6, - 0xf7, 0x60, 0x2c, 0x2a, 0x78, 0x22, 0xd9, 0x71, 0xdc, 0x0a, 0x41, 0xce, - 0xe2, 0x0f, 0x96, 0x19, 0x8b, 0xdc, 0xa7, 0x5f, 0x9d, 0x70, 0x50, 0x9f, - 0x1c, 0x09, 0x68, 0xd3, 0x96, 0xca, 0x71, 0xef, 0x88, 0xb1, 0x52, 0xe5, - 0x64, 0xaa, 0x93, 0xe5, 0xa7, 0xaf, 0xab, 0x6f, 0xba, 0x59, 0x4f, 0x37, - 0xc8, 0x5d, 0x1b, 0xc9, 0x30, 0x97, 0xe2, 0x66, 0x57, 0x6e, 0x0c, 0xfe, - 0x1b, 0xbc, 0xd2, 0xdf, 0xea, 0x16, 0x4c, 0xb7, 0x91, 0xbe, 0x52, 0x7d, - 0xcc, 0x98, 0x09, 0x71, 0x13, 0x4c, 0xbd, 0x6b, 0xce, 0x51, 0xdc, 0xb0, - 0x8b, 0xf3, 0x1c, 0x79, 0x23, 0x0e, 0xe4, 0x49, 0x6c, 0x2d, 0x39, 0x3d, - 0x86, 0x85, 0x30, 0x4e, 0x3f, 0xe7, 0x1e, 0x95, 0x25, 0xea, 0xb1, 0x62, - 0x48, 0x3f, 0xab, 0x8a, 0x3a, 0xb5, 0x4e, 0xa0, 0x7d, 0xba, 0x35, 0xbc, - 0x6d, 0xa3, 0x30, 0x3d, 0x3a, 0xb7, 0x4f, 0x80, 0x8d, 0x6c, 0x17, 0x55, - 0x8b, 0xcf, 0x4a, 0x49, 0x4c, 0x4e, 0x35, 0xc2, 0xcd, 0x77, 0x7b, 0x23, - 0x0c, 0xff, 0x2e, 0x5e, 0x7f, 0x6f, 0x08, 0xce, 0x2c, 0x03, 0x40, 0x45, - 0x12, 0x43, 0x8b, 0x18, 0x35, 0x6d, 0xfd, 0x6c, 0x52, 0xd8, 0xbb, 0x13, - 0x51, 0x28, 0x3f, 0xec, 0x8a, 0x27, 0x13, 0x8c, 0x6e, 0x71, 0x5d, 0x0b, - 0xfe, 0x70, 0xd3, 0xf1, 0x96, 0xa6, 0x0d, 0xaa, 0xf3, 0x3e, 0xd9, 0x18, - 0xc7, 0x93, 0xb0, 0xfa, 0xb4, 0x4c, 0xa7, 0x49, 0x23, 0xc0, 0x7b, 0x1a, - 0x8e, 0x83, 0x9c, 0xc0, 0x4f, 0xcd, 0xc8, 0xee, 0x5c, 0xd4, 0xa4, 0x12, - 0x32, 0xdc, 0xc6, 0x8d, 0x03, 0xc2, 0x7e, 0x8c, 0x15, 0xfe, 0xc8, 0x9e, - 0x8c, 0xf8, 0xed, 0x86, 0x32, 0x9b, 0x53, 0xe9, 0x3d, 0x34, 0xd3, 0x6a, - 0xa7, 0xa7, 0xa2, 0x32, 0xf1, 0x1d, 0x28, 0x32, 0xd4, 0x1a, 0xf6, 0xfb, - 0x55, 0x1c, 0xbd, 0x8a, 0x82, 0xca, 0xf8, 0xe6, 0x13, 0x2d, 0x28, 0x95, - 0xcd, 0x99, 0x9b, 0xe9, 0x36, 0xe3, 0xe5, 0xa6, 0xa5, 0x72, 0x3c, 0x60, - 0x61, 0xb7, 0xb2, 0xea, 0x2f, 0x57, 0xcb, 0xb8, 0x53, 0x7a, 0x69, 0x18, - 0x41, 0x14, 0x3a, 0xd8, 0x3a, 0xd1, 0x5d, 0x90, 0xef, 0x1d, 0xab, 0xd1, - 0x1f, 0x4b, 0x54, 0x7e, 0x8d, 0xa0, 0xe7, 0x7f, 0x58, 0x9b, 0xca, 0x17, - 0xdc, 0xc8, 0x28, 0x79, 0xad, 0xed, 0xc0, 0x5d, 0x96, 0x26, 0x02, 0xe1, - 0x28, 0x6b, 0x63, 0x05, 0x16, 0x5c, 0xdb, 0xec, 0xd5, 0xff, 0xe2, 0x20, - 0x05, 0xc1, 0x0f, 0x7e, 0x85, 0x2e, 0x0a, 0x41, 0xfc, 0x16, 0xdd, 0xa2, - 0xb6, 0xbf, 0x6b, 0xda, 0x29, 0x29, 0x67, 0xed, 0xb1, 0x2c, 0x7d, 0x85, - 0x59, 0xdd, 0x6b, 0x7b, 0x69, 0x90, 0x2e, 0x10, 0x87, 0x8c, 0x0b, 0xb6, - 0xa5, 0x98, 0x6e, 0x28, 0xb5, 0xfa, 0xda, 0x04, 0x4f, 0xcb, 0xc0, 0xcd, - 0x4f, 0x05, 0x1c, 0xe5, 0x03, 0x6d, 0x3e, 0x27, 0x6d, 0x56, 0x1e, 0x25, - 0xd3, 0xdd, 0xf4, 0xbf, 0x3d, 0xdf, 0x4f, 0x07, 0x71, 0x37, 0x59, 0x7b, - 0x1e, 0x44, 0xc6, 0x46, 0x94, 0xaf, 0x7b, 0xbb, 0x0a, 0x5b, 0x66, 0x3c, - 0xa4, 0xa5, 0xf0, 0xf3, 0xd9, 0xc1, 0x08, 0xf7, 0x99, 0x56, 0x66, 0x6e, - 0xe4, 0x0a, 0x31, 0x22, 0x35, 0x2f, 0x3a, 0x8e, 0x3d, 0x11, 0x28, 0x7c, - 0x92, 0x77, 0x07, 0x6b, 0x31, 0x87, 0x2c, 0x76, 0x56, 0x62, 0xb1, 0x76, - 0xe8, 0xe8, 0x36, 0xed, 0x20, 0xa0, 0x2e, 0xb6, 0x66, 0x94, 0xab, 0x4c, - 0xd9, 0x0b, 0x02, 0xbc, 0xd0, 0x37, 0x59, 0x8d, 0xf0, 0x0d, 0x91, 0x45, - 0x31, 0x9e, 0x8b, 0xb4, 0x02, 0xce, 0x6b, 0x69, 0x8d, 0x95, 0xe5, 0xd5, - 0xe6, 0xf4, 0x60, 0x65, 0x23, 0x1d, 0x3e, 0xce, 0xf9, 0x12, 0x30, 0x0d, - 0x34, 0xe0, 0xb3, 0x5e, 0x39, 0xc2, 0xb1, 0x97, 0x1f, 0x80, 0xa1, 0xb7, - 0xe5, 0x9e, 0xed, 0x0c, 0xcb, 0x3b, 0x17, 0xbc, 0x89, 0xd9, 0x33, 0x59, - 0x06, 0xa0, 0x11, 0x4c, 0x60, 0x28, 0xdd, 0x65, 0x69, 0x39, 0x6a, 0xfc, - 0x11, 0x2d, 0x67, 0xe1, 0x0f, 0xdd, 0x99, 0x10, 0xb8, 0x25, 0x88, 0x3e, - 0x64, 0x0d, 0xbc, 0x57, 0x66, 0xca, 0xc9, 0x47, 0x8e, 0xdb, 0x09, 0xc8, - 0x7d, 0xfe, 0x9d, 0x0c, 0xd6, 0x97, 0x4a, 0x2a, 0xb7, 0xca, 0x9b, 0xcf, - 0x8b, 0xd2, 0x38, 0xe7, 0xbf, 0xf5, 0x46, 0x26, 0x5a, 0xa6, 0x85, 0x8e, - 0x5c, 0xd1, 0x7f, 0x2f, 0xd1, 0x64, 0xc5, 0x86, 0x81, 0xf9, 0x21, 0x7f, - 0xa9, 0xbe, 0x29, 0xb3, 0x2b, 0x44, 0x2a, 0x34, 0xeb, 0xd5, 0xb9, 0x62, - 0x83, 0x66, 0x9c, 0xfd, 0x6f, 0xf1, 0x95, 0x11, 0xea, 0xc6, 0x9f, 0x51, - 0xf2, 0xaa, 0x6f, 0x39, 0x61, 0xd1, 0xff, 0x3b, 0x31, 0x87, 0x7a, 0x92, - 0xf6, 0xec, 0xf4, 0x55, 0x86, 0x9b, 0x06, 0x66, 0x52, 0xff, 0x37, 0x6c, - 0x3e, 0x60, 0xbc, 0x38, 0x88, 0xa9, 0xf0, 0x93, 0x0d, 0x48, 0xb1, 0x00, - 0x71, 0xa4, 0xc2, 0x5b, 0xb1, 0xa3, 0xfd, 0x49, 0x66, 0x18, 0x46, 0x72, - 0x10, 0x9c, 0x56, 0xcc, 0x07, 0xb5, 0xd1, 0x11, 0x52, 0xf5, 0xef, 0x3c, - 0x9f, 0x17, 0xae, 0xb5, 0x7e, 0x33, 0x69, 0x55, 0x85, 0x6e, 0x0a, 0xba, - 0xb9, 0xf5, 0x87, 0x0a, 0x6e, 0xac, 0x41, 0xaf, 0xd5, 0x6c, 0x0c, 0x70, - 0x24, 0x00, 0x5e, 0xef, 0x92, 0x0b, 0x18, 0x1f, 0xd4, 0xd7, 0xd3, 0x6c, - 0x25, 0xac, 0xfd, 0xda, 0x32, 0x91, 0x20, 0x94, 0xf8, 0x79, 0x85, 0x1f, - 0x49, 0xeb, 0xd5, 0xce, 0xc4, 0x76, 0xa9, 0x1e, 0x4b, 0xc3, 0xbd, 0x60, - 0x53, 0x82, 0x0c, 0xb4, 0x0e, 0x3b, 0x92, 0xa0, 0xbc, 0xf1, 0x3b, 0x92, - 0x70, 0x30, 0x7e, 0xcb, 0xd2, 0xb1, 0x73, 0xca, 0xa0, 0xf0, 0x91, 0x51, - 0xb4, 0xb3, 0xb6, 0x4e, 0x1f, 0x00, 0xbf, 0xc7, 0x46, 0xd9, 0x6f, 0x07, - 0x93, 0x90, 0x35, 0x52, 0x7c, 0x2c, 0xfa, 0xc0, 0x2f, 0x29, 0xd2, 0x5e, - 0xbe, 0xe3, 0x19, 0x5a, 0xd1, 0x22, 0xb7, 0x8e, 0x07, 0xc2, 0x23, 0xf5, - 0xf5, 0x65, 0x17, 0x1c, 0x09, 0xe9, 0xf4, 0x8a, 0x5a, 0x97, 0xd3, 0x60, - 0xdd, 0x02, 0x0a, 0xfb, 0xe4, 0xbe, 0xcd, 0x30, 0x4e, 0x7f, 0x83, 0xa8, - 0x8f, 0xac, 0xd5, 0x04, 0x4e, 0xfe, 0x10, 0xe1, 0xa9, 0xf2, 0x25, 0x85, - 0x80, 0xd8, 0xae, 0x94, 0xc8, 0x9c, 0x7a, 0x4f, 0x1e, 0x1d, 0x62, 0x89, - 0x8a, 0x8e, 0x58, 0x3f, 0xfd, 0xc9, 0x30, 0x3f, 0xb7, 0xcb, 0xa8, 0x77, - 0xfa, 0x8d, 0x1b, 0x5c, 0xa1, 0xc3, 0xc2, 0xf7, 0x78, 0x2b, 0x6d, 0xc6, - 0xfe, 0xb6, 0xba, 0x8d, 0xba, 0xe8, 0x9b, 0x64, 0x13, 0x8c, 0x60, 0x3b, - 0xf9, 0x7c, 0x03, 0x7e, 0x6e, 0x79, 0xe0, 0x89, 0xc7, 0x8f, 0x63, 0x06, - 0x86, 0x5e, 0xc7, 0x0a, 0xbb, 0xa3, 0x90, 0x22, 0x1a, 0x97, 0xe5, 0x32, - 0x2c, 0x36, 0xca, 0x80, 0x87, 0x4b, 0x0d, 0x93, 0xdf, 0x5e, 0x3a, 0xb7, - 0x5c, 0xd5, 0xfd, 0xfa, 0x4c, 0xc4, 0xe4, 0xf1, 0x02, 0xee, 0x83, 0xc5, - 0xc1, 0x5b, 0x0d, 0xcd, 0xda, 0xf5, 0x3f, 0xc0, 0x09, 0x91, 0x9b, 0x42, - 0x2e, 0x4c, 0x71, 0x68, 0x02, 0x4a, 0x6f, 0x6c, 0x87, 0x55, 0xa9, 0x58, - 0xfc, 0x08, 0x35, 0x4e, 0xb1, 0x3a, 0x73, 0x9c, 0x8d, 0x02, 0xa3, 0x1c, - 0xd5, 0x03, 0xfb, 0x4b, 0x6f, 0x61, 0x6e, 0x39, 0x36, 0x36, 0x1a, 0x7d, - 0x22, 0xaf, 0xbb, 0x55, 0xb7, 0x53, 0x4e, 0x6d, 0x4e, 0x51, 0x3b, 0x46, - 0x18, 0x4a, 0xd9, 0x3b, 0xa7, 0xff, 0xb4, 0xec, 0x21, 0x22, 0x80, 0x11, - 0x48, 0x00, 0xd3, 0x7b, 0x2b, 0x70, 0xca, 0x9d, 0x1c, 0x40, 0x15, 0xe9, - 0x79, 0x1c, 0x80, 0xdc, 0xf9, 0xc2, 0xad, 0xbe, 0xc9, 0x96, 0xb8, 0x28, - 0x03, 0x6f, 0xbf, 0x39, 0xf6, 0x12, 0x3d, 0x23, 0xd4, 0x22, 0x69, 0x46, - 0xc0, 0xa1, 0xe8, 0xd6, 0xd4, 0x29, 0x47, 0xd4, 0xcf, 0xf1, 0x88, 0xa6, - 0x8b, 0x27, 0xe8, 0x79, 0x8d, 0xab, 0x00, 0xd7, 0x31, 0x91, 0x60, 0xa2, - 0x7e, 0xeb, 0xef, 0xbe, 0xc3, 0xc8, 0xd5, 0x16, 0x3f, 0x74, 0x70, 0x1b, - 0xbe, 0x5a, 0x32, 0x6a, 0x3f, 0xde, 0xed, 0xa4, 0xd7, 0x9c, 0x2a, 0x5f, - 0xb1, 0xcd, 0xdc, 0xcd, 0x2a, 0xbf, 0x54, 0x37, 0x90, 0xad, 0xbf, 0x34, - 0x01, 0x8a, 0xc4, 0xe1, 0x8e, 0x6a, 0x8f, 0x53, 0x98, 0xf6, 0xf9, 0x01, - 0x4b, 0x78, 0x5c, 0xf0, 0x4b, 0x9e, 0x8f, 0xcc, 0xe5, 0x29, 0x59, 0xeb, - 0x54, 0x6d, 0xa8, 0x1f, 0x2c, 0xc8, 0x16, 0x2d, 0xd0, 0x09, 0x19, 0xf2, - 0xab, 0xfb, 0x9b, 0x47, 0xfe, 0x41, 0xab, 0x73, 0xec, 0xf5, 0x6f, 0xfa, - 0x00, 0x69, 0xb6, 0xb2, 0xa7, 0xab, 0x9e, 0x43, 0xc4, 0xb5, 0x18, 0x04, - 0x21, 0x6c, 0x38, 0xbc, 0x00, 0xed, 0xbc, 0x93, 0xb0, 0x76, 0x15, 0xa2, - 0x3b, 0x79, 0x9e, 0x3f, 0x55, 0xc7, 0xd4, 0xfd, 0xb2, 0x4a, 0x83, 0x8d, - 0xc0, 0x5f, 0x1e, 0xe3, 0x15, 0x35, 0xfa, 0xba, 0x04, 0xb0, 0x8d, 0xfb, - 0x42, 0xd9, 0x56, 0xc0, 0x25, 0x30, 0xd7, 0xba, 0x95, 0xa3, 0x40, 0x85, - 0xc6, 0x17, 0x1c, 0x1b, 0x87, 0x84, 0xc6, 0x83, 0xe4, 0x20, 0x1c, 0x8f, - 0x74, 0xe6, 0xa9, 0x8c, 0xd3, 0xc9, 0xc2, 0xe5, 0x73, 0x8f, 0x42, 0xfe, - 0xc2, 0xab, 0x38, 0xd2, 0x60, 0xc6, 0x69, 0x16, 0x74, 0x4b, 0xe3, 0x1f, - 0x6d, 0x4d, 0x2d, 0xfc, 0xa2, 0x00, 0x27, 0x17, 0xa1, 0xc9, 0xff, 0x05, - 0x32, 0xfe, 0xa4, 0xab, 0x1c, 0xda, 0xd1, 0x22, 0x0c, 0x0e, 0x08, 0x21, - 0xb8, 0x60, 0x78, 0xea, 0xb9, 0xd9, 0x54, 0xbc, 0x60, 0x31, 0xcb, 0xa9, - 0xb1, 0xb5, 0xa5, 0xe6, 0x89, 0xd0, 0x5f, 0xfe, 0x7d, 0xb4, 0x56, 0xec, - 0x97, 0x88, 0x6e, 0xda, 0x9f, 0x0e, 0x1c, 0x06, 0x8c, 0x3e, 0x7c, 0x6e, - 0x4a, 0x75, 0x46, 0xbe, 0x31, 0xd1, 0x2b, 0xf4, 0x46, 0x03, 0xa0, 0xff, - 0xc7, 0x4b, 0x35, 0x92, 0x61, 0x4c, 0x21, 0x0b, 0x6c, 0x7c, 0x83, 0xda, - 0xb7, 0xba, 0xe5, 0x61, 0x15, 0x67, 0x64, 0x6d, 0x64, 0xa7, 0x97, 0x61, - 0xf9, 0x78, 0xb4, 0xdf, 0xf1, 0x09, 0xe3, 0x0a, 0x03, 0xdc, 0xb1, 0xff, - 0xeb, 0x00, 0x13, 0x98, 0x06, 0xb4, 0x8a, 0xe6, 0x34, 0x1e, 0x19, 0xfc, - 0xec, 0xd7, 0x83, 0x89, 0x84, 0x2d, 0x4b, 0x78, 0xaf, 0x24, 0xc5, 0x93, - 0xf3, 0x60, 0xab, 0xb4, 0xa8, 0xe1, 0xd9, 0x68, 0x12, 0xeb, 0xd0, 0x12, - 0xde, 0xad, 0x54, 0x07, 0xc1, 0xdb, 0x8a, 0xfc, 0x50, 0xe9, 0x7d, 0x25, - 0x0c, 0x15, 0x34, 0xc3, 0xd8, 0xf3, 0x94, 0x2f, 0xb2, 0x6e, 0x1c, 0xac, - 0x19, 0xbb, 0xcf, 0x14, 0xaf, 0xcc, 0xbb, 0x5b, 0xac, 0xe1, 0x34, 0xde, - 0xa9, 0x16, 0xde, 0x4c, 0x0c, 0x50, 0x1f, 0x7b, 0x99, 0x60, 0x19, 0xd5, - 0x91, 0xf5, 0xbe, 0x81, 0xc3, 0xa7, 0x52, 0x72, 0xd5, 0x69, 0x2f, 0xc7, - 0x1d, 0x66, 0xd6, 0x88, 0x71, 0x91, 0x38, 0x05, 0x05, 0xca, 0x57, 0x2e, - 0x49, 0xa9, 0xf5, 0x45, 0xcb, 0x53, 0x53, 0x89, 0x1c, 0xd5, 0xff, 0xc3, - 0x9e, 0x2b, 0x39, 0x4e, 0x32, 0x4c, 0x48, 0x43, 0x1e, 0xc7, 0xd3, 0xef, - 0x18, 0xe4, 0xaf, 0x6c, 0x8f, 0x07, 0xdf, 0x6e, 0x82, 0xed, 0xaf, 0x13, - 0x47, 0xcf, 0x11, 0x0c, 0xf0, 0xec, 0x5e, 0x38, 0xb7, 0xe7, 0xbd, 0x90, - 0xe0, 0x2d, 0x9e, 0xfb, 0x18, 0xce, 0xdd, 0x06, 0x7b, 0x18, 0x98, 0x0a, - 0x55, 0xb6, 0xa9, 0x4a, 0x55, 0xa0, 0xd7, 0xe9, 0xef, 0x9c, 0x83, 0x18, - 0x0b, 0x1c, 0x5e, 0xdd, 0xfd, 0x72, 0xcf, 0x3e, 0x8a, 0x57, 0x7d, 0xa9, - 0x01, 0x9b, 0x7c, 0x22, 0x49, 0xf3, 0xf4, 0x98, 0x76, 0x60, 0xa9, 0x20, - 0x87, 0xc8, 0xee, 0x66, 0xbd, 0x93, 0x0a, 0x93, 0x5a, 0x4d, 0x2c, 0x1e, - 0xe5, 0xdc, 0xe7, 0x88, 0xad, 0xb4, 0xa1, 0x62, 0x1f, 0xf8, 0x49, 0xb6, - 0xfd, 0xe8, 0x1a, 0x6e, 0xb6, 0xd3, 0xe0, 0x5d, 0xd9, 0x3f, 0xde, 0x16, - 0x92, 0xd9, 0x8d, 0x05, 0xc4, 0xe4, 0xeb, 0xf1, 0xd8, 0xc0, 0x09, 0xaa, - 0x2c, 0xab, 0xa1, 0xff, 0x30, 0x80, 0x33, 0x6d, 0x55, 0x58, 0x2e, 0x91, - 0xd1, 0x6d, 0xe8, 0x2c, 0xcd, 0xd9, 0xd2, 0x88, 0xf1, 0xbe, 0xb3, 0xb1, - 0x6e, 0x80, 0x1d, 0x52, 0xf2, 0x18, 0x6f, 0x36, 0x4f, 0x0a, 0xc7, 0x14, - 0x0c, 0xc7, 0x41, 0xc8, 0xd3, 0x51, 0x5e, 0xff, 0xd2, 0xde, 0x43, 0x97, - 0xeb, 0x7a, 0x8f, 0x3b, 0xe9, 0x24, 0x1d, 0xed, 0x3d, 0xd0, 0x19, 0x21, - 0x79, 0x97, 0x0e, 0x96, 0x18, 0xf9, 0x24, 0xeb, 0x5e, 0xfd, 0x67, 0x19, - 0x07, 0xa3, 0x81, 0x74, 0x18, 0x1c, 0xb9, 0x76, 0xdd, 0x09, 0xc4, 0x25, - 0xed, 0x90, 0x38, 0xd1, 0x62, 0x16, 0xbd, 0x9a, 0xe4, 0xbf, 0xc2, 0x60, - 0x65, 0x65, 0xbe, 0xaf, 0xc3, 0x2a, 0xfc, 0x51, 0x3f, 0x77, 0xde, 0xc6, - 0x80, 0xb7, 0xc0, 0xd1, 0x73, 0x29, 0xfc, 0xfd, 0xfe, 0x8c, 0x0d, 0x21, - 0x64, 0xf5, 0x1a, 0xc9, 0xc4, 0x68, 0x7e, 0xca, 0x01, 0x39, 0x00, 0xd6, - 0x74, 0xe4, 0xd0, 0x42, 0x54, 0xa5, 0xce, 0xf2, 0xaf, 0x0a, 0x4f, 0x59, - 0x05, 0x48, 0xe6, 0xb9, 0x6d, 0x67, 0x81, 0x5a, 0x34, 0x2d, 0x06, 0x5f, - 0x75, 0x37, 0x87, 0x09, 0x40, 0x76, 0x2c, 0x04, 0x0f, 0xa9, 0x10, 0xfd, - 0x11, 0xa5, 0xcb, 0xba, 0x53, 0x3b, 0xe7, 0x60, 0x30, 0x05, 0x95, 0xb6, - 0xa2, 0xf8, 0xc6, 0x52, 0xf1, 0x2f, 0xa3, 0xde, 0x1a, 0x11, 0xc2, 0x7c, - 0xa1, 0x66, 0x87, 0xff, 0x7b, 0x51, 0x5b, 0x5f, 0x71, 0x83, 0xce, 0x2d, - 0xb9, 0x2e, 0x20, 0x9b, 0x6c, 0x7e, 0x3d, 0x5d, 0x2c, 0x28, 0x82, 0xed, - 0x7c, 0x6c, 0x70, 0xe1, 0xb9, 0x69, 0x11, 0x19, 0xa3, 0x6d, 0x4d, 0xd9, - 0xc3, 0xdf, 0x2a, 0x5c, 0xd5, 0xb5, 0x3e, 0xe4, 0x92, 0x17, 0xbc, 0xb0, - 0x82, 0x2f, 0x09, 0xa9, 0x21, 0x77, 0x15, 0x03, 0x13, 0xb2, 0xbf, 0x4a, - 0x25, 0xcb, 0x34, 0x3c, 0xa4, 0xe6, 0xd8, 0xfc, 0x38, 0xfa, 0x51, 0xf6, - 0x01, 0x81, 0x91, 0x5f, 0x72, 0x64, 0x1d, 0xfb, 0xb0, 0x32, 0x8e, 0xe2, - 0xad, 0x4c, 0xd1, 0x24, 0x44, 0x22, 0x34, 0x87, 0x1f, 0x4e, 0xde, 0x6a, - 0xf6, 0x1b, 0x5c, 0x7e, 0x85, 0x54, 0x7c, 0x1c, 0x40, 0xb1, 0x00, 0xc8, - 0x61, 0x7d, 0x5b, 0x57, 0x63, 0x63, 0x29, 0x5e, 0x50, 0xab, 0x52, 0xdd, - 0xb9, 0x08, 0x06, 0x7b, 0xd8, 0xf4, 0x37, 0x64, 0xc3, 0x53, 0x4a, 0x76, - 0x0e, 0x6c, 0x98, 0xe9, 0x13, 0x1e, 0x3a, 0x52, 0x8e, 0x1a, 0x44, 0x31, - 0x09, 0xc1, 0xca, 0x75, 0x24, 0x13, 0xc4, 0xdc, 0xe4, 0x0d, 0x01, 0xc9, - 0xb8, 0xb5, 0x54, 0xc5, 0x40, 0x03, 0x2c, 0xbd, 0x98, 0xd4, 0x20, 0x82, - 0x99, 0x5a, 0x43, 0x79, 0x69, 0x1c, 0xbf, 0xcf, 0xb0, 0xa4, 0x73, 0xc7, - 0xdc, 0x85, 0x12, 0xc5, 0xcf, 0x9e, 0x7b, 0x6c, 0x1b, 0x75, 0xe1, 0xc5, - 0x58, 0x8d, 0xc5, 0xe9, 0x8c, 0x3f, 0xf7, 0x1a, 0x32, 0x7e, 0x0b, 0xc7, - 0x95, 0xd2, 0xaf, 0x6b, 0x2d, 0x72, 0x16, 0xbd, 0xe9, 0xa0, 0xd2, 0x57, - 0xbe, 0xbf, 0xda, 0x68, 0x4a, 0xdf, 0x4d, 0x83, 0xf9, 0x78, 0x06, 0x14, - 0xaf, 0x19, 0xd9, 0xc7, 0xca, 0xa5, 0x08, 0x20, 0x62, 0x52, 0xcf, 0x81, - 0x8f, 0x22, 0x40, 0x93, 0xe8, 0x15, 0xd7, 0x78, 0xec, 0x65, 0x42, 0xeb, - 0x5f, 0x13, 0xed, 0x7e, 0xfa, 0xf4, 0x10, 0xcc, 0x60, 0xfc, 0x0b, 0xe3, - 0xbf, 0x79, 0xb9, 0x92, 0xc4, 0x7f, 0x07, 0xd9, 0x07, 0xce, 0xcc, 0xdf, - 0x22, 0x35, 0x97, 0x89, 0xe3, 0xd9, 0x76, 0x56, 0x71, 0x4b, 0x56, 0xd8, - 0x2c, 0x62, 0xd8, 0x3f, 0x0b, 0xf0, 0xce, 0xce, 0x96, 0xd2, 0x4f, 0xd4, - 0x56, 0x11, 0xcc, 0x31, 0xbf, 0x74, 0x6a, 0x84, 0x0f, 0xf3, 0x70, 0xb6, - 0x1f, 0xb5, 0x62, 0x77, 0x15, 0x24, 0x8a, 0x7f, 0x7f, 0x11, 0xb9, 0x53, - 0xaf, 0xcc, 0xc0, 0xd2, 0x5e, 0x6d, 0xc6, 0xf4, 0xe6, 0xc7, 0x95, 0xe2, - 0xf2, 0x10, 0x17, 0x6d, 0x69, 0x06, 0x1d, 0x4a, 0x03, 0xe9, 0xc8, 0xc1, - 0x05, 0x59, 0x9b, 0xfe, 0xd4, 0x7f, 0x65, 0xf5, 0x36, 0x6a, 0x7c, 0xcc, - 0xfa, 0x9e, 0x1b, 0xd1, 0x9e, 0x27, 0xe5, 0x73, 0xdd, 0xb5, 0x21, 0x63, - 0x8a, 0x35, 0xe2, 0x74, 0x45, 0x04, 0x5e, 0xd3, 0xfd, 0x60, 0xa1, 0x79, - 0x39, 0xfc, 0x13, 0xea, 0x04, 0x13, 0x84, 0x0e, 0xdd, 0xb9, 0x02, 0x8b, - 0x94, 0x33, 0xc7, 0x42, 0x19, 0xde, 0x69, 0x21, 0x76, 0xe5, 0x9c, 0x30, - 0x73, 0xef, 0x26, 0xbd, 0xc1, 0x11, 0x23, 0x37, 0x26, 0x14, 0x37, 0xb6, - 0xc4, 0x50, 0xe1, 0x95, 0xfe, 0x15, 0x3e, 0x57, 0x34, 0xca, 0x94, 0x09, - 0x7c, 0x67, 0x63, 0xa0, 0xb9, 0x06, 0x0d, 0x59, 0x8b, 0x64, 0xcd, 0xa0, - 0x39, 0xff, 0x2d, 0xfc, 0xbd, 0x13, 0x36, 0x86, 0x4d, 0xfc, 0x2a, 0xc0, - 0xe6, 0xb5, 0xbe, 0xad, 0x8c, 0x4e, 0x2f, 0x9a, 0xd8, 0x18, 0x69, 0x6a, - 0x0a, 0xe9, 0x0d, 0x3c, 0xda, 0x6b, 0xb6, 0x56, 0xf0, 0x84, 0x74, 0x1a, - 0x7a, 0xb8, 0x9a, 0xf3, 0x03, 0x6f, 0x12, 0xa8, 0x67, 0x1f, 0x2b, 0x14, - 0x38, 0x0a, 0x37, 0x75, 0xe0, 0xa5, 0x06, 0x8f, 0x3b, 0xba, 0x64, 0xa5, - 0x61, 0x7f, 0x8f, 0x12, 0xbb, 0xf5, 0x3e, 0x41, 0x7e, 0x72, 0xb4, 0x4e, - 0xa0, 0xdf, 0xb5, 0x80, 0x9c, 0x05, 0xbc, 0x61, 0xbc, 0xeb, 0x0d, 0x70, - 0x08, 0x39, 0xf8, 0xde, 0x91, 0xd0, 0x4c, 0xf7, 0xa0, 0x5f, 0x65, 0x16, - 0xad, 0xb9, 0x5a, 0xcf, 0x4c, 0x22, 0x1a, 0x43, 0x80, 0xf1, 0x46, 0x90, - 0x94, 0xd4, 0x35, 0xe6, 0xe8, 0x07, 0x69, 0xb8, 0x13, 0xb8, 0x80, 0x9f, - 0x0a, 0x2d, 0x98, 0xc3, 0x58, 0xf7, 0xb3, 0xb7, 0x2b, 0x7b, 0x32, 0x7e, - 0xf5, 0x3e, 0x9b, 0xf8, 0x31, 0xa1, 0xaa, 0x53, 0xa3, 0x51, 0xba, 0x12, - 0x4b, 0x25, 0xa1, 0xb5, 0xeb, 0xfd, 0xca, 0xc9, 0xd9, 0x7c, 0x82, 0xb8, - 0x67, 0x7d, 0x6c, 0xd3, 0x78, 0x31, 0x9b, 0xe9, 0xdc, 0x30, 0x12, 0x34, - 0xe2, 0xa1, 0x3f, 0xaf, 0x79, 0x8d, 0x2a, 0xb1, 0x74, 0xad, 0x53, 0x27, - 0xf3, 0x7f, 0x68, 0xe2, 0x0a, 0x76, 0xa7, 0x53, 0xff, 0xb4, 0xd4, 0x21, - 0x6c, 0x90, 0x29, 0x9d, 0x57, 0x1a, 0x55, 0xb0, 0x8e, 0x8a, 0x75, 0x54, - 0xf7, 0xfd, 0x78, 0x04, 0xec, 0xef, 0x89, 0x92, 0x46, 0x58, 0x91, 0xd6, - 0xb9, 0xf2, 0xa3, 0x53, 0x35, 0x7d, 0x37, 0x93, 0x5e, 0x23, 0x2e, 0xc0, - 0xb6, 0xba, 0x2f, 0x4b, 0x5e, 0xb4, 0xbb, 0xd5, 0xe4, 0x2c, 0x73, 0x78, - 0xb1, 0x30, 0x06, 0x42, 0xb4, 0x31, 0x8c, 0x7d, 0x02, 0xbf, 0x2c, 0xc2, - 0x0d, 0x7f, 0x04, 0x0f, 0xac, 0xf1, 0x47, 0x84, 0x9b, 0xcb, 0x05, 0xe3, - 0x68, 0xc0, 0xad, 0xbb, 0x35, 0x12, 0x28, 0x8c, 0x96, 0x6d, 0xd2, 0x8a, - 0xd4, 0xe4, 0x6f, 0x68, 0x48, 0x6c, 0xca, 0x4c, 0x59, 0x86, 0xdb, 0x16, - 0x61, 0xbd, 0x39, 0x37, 0x08, 0xad, 0x1a, 0x0b, 0x2d, 0x26, 0xeb, 0x11, - 0x88, 0x19, 0xc9, 0x6a, 0x56, 0x5a, 0x3d, 0x1f, 0x66, 0xf0, 0x18, 0x85, - 0x29, 0x3a, 0x01, 0xd7, 0xa9, 0x9e, 0x16, 0xef, 0x98, 0x11, 0x23, 0xb9, - 0x5b, 0x05, 0xb2, 0x6f, 0xf0, 0xee, 0x00, 0x2e, 0x80, 0x36, 0x66, 0xbd, - 0x25, 0xa5, 0x62, 0xc0, 0x59, 0xde, 0xa1, 0x68, 0xea, 0xa7, 0x8d, 0x83, - 0x30, 0x07, 0x8b, 0xc6, 0x5c, 0x2a, 0xaa, 0x98, 0x70, 0x18, 0x00, 0xca, - 0x53, 0xef, 0x11, 0x6e, 0x5a, 0x53, 0xf0, 0x7c, 0xaa, 0x63, 0x20, 0xdc, - 0xae, 0x82, 0x35, 0x43, 0x88, 0x91, 0x82, 0x8f, 0xa7, 0xea, 0xb0, 0xc1, - 0x0d, 0x48, 0xe4, 0x43, 0x94, 0x21, 0x2b, 0x39, 0xd1, 0x2b, 0x8b, 0x59, - 0xd5, 0x3d, 0x5e, 0x08, 0x63, 0xe2, 0x67, 0x12, 0xe2, 0x25, 0x23, 0x21, - 0xe3, 0xbe, 0xd5, 0x21, 0x5e, 0x8e, 0x5a, 0x7a, 0xe2, 0xe9, 0x4d, 0xab, - 0x8a, 0x70, 0x91, 0x98, 0xa2, 0xbc, 0xa8, 0xff, 0x6e, 0x22, 0xa0, 0x2e, - 0x25, 0x08, 0x4d, 0xdf, 0x33, 0x13, 0xe0, 0x0e, 0x9e, 0xce, 0x58, 0x5c, - 0x7c, 0xba, 0x53, 0x7f, 0xdd, 0x3d, 0x51, 0x4e, 0xbc, 0x0b, 0x45, 0x82, - 0xc5, 0x67, 0x28, 0xf1, 0x35, 0xce, 0x7e, 0x72, 0x24, 0x5b, 0xb5, 0xb7, - 0xcd, 0xf0, 0x9f, 0x12, 0x8c, 0x49, 0xaf, 0xb6, 0x5b, 0x75, 0x43, 0x2b, - 0x05, 0x7d, 0x0d, 0x18, 0x30, 0xfa, 0xa8, 0xce, 0xe7, 0x39, 0xaa, 0xaf, - 0x09, 0x7e, 0xa1, 0xc4, 0x78, 0xc7, 0x7f, 0x63, 0xd6, 0xa7, 0x28, 0x96, - 0x81, 0xa1, 0x1e, 0xde, 0xa7, 0x7b, 0xdf, 0xa3, 0x01, 0xc1, 0x5a, 0x8a, - 0x4c, 0x26, 0x18, 0x8f, 0xc1, 0x19, 0x19, 0xf1, 0xd7, 0x76, 0xe2, 0xe6, - 0x94, 0x4f, 0xc2, 0xef, 0xf8, 0xac, 0x3b, 0xdb, 0x8f, 0x4c, 0x03, 0x55, - 0xde, 0xa5, 0x9b, 0x41, 0xca, 0x27, 0x5f, 0x62, 0x90, 0x2a, 0xc3, 0x98, - 0x1c, 0x28, 0x64, 0xf7, 0xca, 0x84, 0x9e, 0x21, 0x9f, 0x62, 0x04, 0xee, - 0xae, 0xf6, 0xf6, 0x2b, 0xea, 0x33, 0x2a, 0xf8, 0xfa, 0x8e, 0x9e, 0x96, - 0x2e, 0xe6, 0x56, 0xe6, 0x93, 0x91, 0x65, 0x13, 0xfd, 0x22, 0xf8, 0xe8, - 0xb3, 0xea, 0x82, 0xea, 0xfd, 0xd6, 0x21, 0x1e, 0xc2, 0x02, 0xa1, 0x92, - 0x62, 0xb3, 0x5c, 0xb9, 0xe5, 0x43, 0x02, 0x34, 0xaa, 0xa9, 0xf3, 0xbd, - 0x9d, 0xaf, 0xad, 0x7a, 0x2d, 0x33, 0xfb, 0xa9, 0x48, 0x75, 0xe2, 0xc9, - 0x46, 0x25, 0x71, 0xb6, 0x19, 0xbd, 0xab, 0x0b, 0xad, 0x15, 0xf1, 0xa7, - 0x34, 0x96, 0x53, 0xd8, 0xbb, 0x58, 0xf0, 0xfd, 0x27, 0x1c, 0xe0, 0x48, - 0xa2, 0x41, 0x2e, 0xc5, 0xa9, 0x86, 0xb4, 0xee, 0xce, 0x2d, 0x2d, 0xb0, - 0x98, 0x6c, 0xae, 0x87, 0xb2, 0xa9, 0xcd, 0xc7, 0xfe, 0x39, 0xb0, 0xae, - 0x82, 0x69, 0xdb, 0x03, 0x6b, 0x0c, 0x48, 0x62, 0x85, 0x5e, 0x50, 0xf7, - 0xae, 0xb3, 0xa3, 0x3e, 0xd0, 0xa3, 0xae, 0x57, 0xc3, 0xe1, 0x97, 0x13, - 0x81, 0xe7, 0x91, 0x84, 0xc1, 0x5f, 0x9b, 0xda, 0x2f, 0x8f, 0x89, 0xe5, - 0x26, 0x67, 0xf7, 0xbb, 0xa1, 0xee, 0xf9, 0x08, 0xae, 0x19, 0xeb, 0x41, - 0x54, 0x6b, 0x74, 0xb6, 0xe7, 0xaa, 0xed, 0x34, 0x02, 0x95, 0x81, 0x03, - 0x1d, 0x61, 0x05, 0x77, 0x18, 0x9c, 0xb9, 0x49, 0xdf, 0xb3, 0xf3, 0x78, - 0x4d, 0x5c, 0xcb, 0x55, 0x5c, 0xb2, 0xd0, 0x0e, 0xd2, 0x82, 0xe3, 0x28, - 0x3b, 0x58, 0x02, 0x0d, 0x4a, 0x8c, 0xf7, 0xbe, 0x34, 0x59, 0x37, 0xf6, - 0x01, 0x23, 0x23, 0x15, 0xe0, 0x9a, 0xf2, 0xb2, 0x7d, 0xa5, 0xa6, 0x14, - 0x71, 0x5e, 0xac, 0xce, 0x25, 0x4a, 0x44, 0xb4, 0xe9, 0x0e, 0xfb, 0x3c, - 0x9a, 0xba, 0xdb, 0x38, 0xc5, 0x67, 0x19, 0x02, 0x38, 0xb9, 0xeb, 0x9a, - 0xae, 0x06, 0xb1, 0x8a, 0x13, 0x01, 0x1e, 0xac, 0x5d, 0x53, 0x2a, 0xcc, - 0x16, 0xb5, 0x12, 0xf8, 0x34, 0xc0, 0xc6, 0xe1, 0x6f, 0xc1, 0xe1, 0x5a, - 0x8f, 0x2d, 0xe5, 0xcc, 0xc4, 0x71, 0xea, 0xa0, 0xa6, 0x94, 0x53, 0xb2, - 0xbb, 0xbe, 0x98, 0x8a, 0xe7, 0xbf, 0xd4, 0x1e, 0x8a, 0x50, 0xce, 0x6e, - 0xb6, 0x62, 0xb8, 0x97, 0xd4, 0xe3, 0xed, 0xce, 0x06, 0xf7, 0x43, 0xc0, - 0xd9, 0x65, 0x1d, 0x77, 0x72, 0x14, 0xaa, 0x50, 0x56, 0x8b, 0x16, 0x47, - 0xf0, 0xd1, 0x06, 0xe3, 0x56, 0xe0, 0x5e, 0xed, 0xa6, 0x04, 0x5d, 0x18, - 0xbd, 0x73, 0x9c, 0x57, 0x7d, 0xef, 0xe4, 0x08, 0xfd, 0xa4, 0x14, 0xee, - 0x13, 0x68, 0xdc, 0x65, 0x9a, 0xbd, 0x48, 0x3a, 0x84, 0x2a, 0x2f, 0xaa, - 0x07, 0xdc, 0x3a, 0x47, 0xb6, 0x54, 0x91, 0x03, 0x6e, 0x29, 0xd5, 0xdd, - 0xf3, 0x89, 0x67, 0xec, 0xcb, 0x8d, 0x3b, 0x77, 0x60, 0xc0, 0x40, 0xb0, - 0x84, 0x8b, 0xd4, 0x0d, 0x9c, 0x3f, 0x07, 0x29, 0x6e, 0x7e, 0x97, 0x6a, - 0x94, 0x4d, 0xe4, 0xc4, 0x85, 0xfc, 0xb0, 0x75, 0x11, 0x3a, 0xc6, 0xd8, - 0x1e, 0x10, 0x99, 0xb3, 0xd0, 0xda, 0x01, 0x5f, 0x41, 0x54, 0x30, 0x66, - 0x6f, 0x6b, 0x90, 0xbf, 0xcd, 0xd0, 0x32, 0xeb, 0x87, 0xde, 0xb2, 0x40, - 0xc9, 0x05, 0x23, 0xf7, 0x43, 0x73, 0xf1, 0x05, 0x9f, 0x26, 0xf5, 0xd3, - 0xc8, 0x75, 0xfd, 0xae, 0x16, 0x2d, 0x9a, 0xc4, 0xc1, 0xe8, 0xba, 0x6e, - 0x10, 0x14, 0x86, 0xbd, 0xc9, 0x90, 0x22, 0x03, 0x32, 0x0d, 0x01, 0xf9, - 0x2d, 0xa2, 0x0e, 0x2d, 0xd9, 0xae, 0x6d, 0x3c, 0xbc, 0xfd, 0x48, 0x73, - 0xb3, 0x1d, 0xc7, 0x5d, 0x20, 0xf1, 0x6b, 0xeb, 0x74, 0xd8, 0x38, 0x67, - 0x33, 0xc8, 0x74, 0x43, 0x7b, 0x50, 0x04, 0x4f, 0x89, 0x90, 0xc4, 0x20, - 0xf4, 0x9d, 0x33, 0xed, 0x02, 0xa1, 0x5a, 0x54, 0x49, 0x97, 0x56, 0x51, - 0x7a, 0xc2, 0x6e, 0x85, 0x43, 0x87, 0x99, 0x94, 0xc6, 0x10, 0x96, 0x4b, - 0xc5, 0x07, 0xfb, 0xb4, 0x38, 0x0a, 0x45, 0x1f, 0x1a, 0x41, 0x3d, 0x07, - 0x4e, 0x11, 0x3c, 0x1c, 0x56, 0xb9, 0x18, 0x51, 0xda, 0xd7, 0xf7, 0x36, - 0x97, 0x73, 0x2a, 0x5a, 0xb3, 0xaa, 0x76, 0x54, 0x33, 0x45, 0xe9, 0x19, - 0xe8, 0x8e, 0x04, 0x17, 0xde, 0xbb, 0x5c, 0x7f, 0x7f, 0xd4, 0x77, 0x38, - 0x79, 0x21, 0xae, 0x6b, 0xba, 0xf6, 0x0e, 0x7b, 0xab, 0x67, 0xc3, 0x42, - 0xae, 0x58, 0x13, 0x53, 0x68, 0x49, 0x8f, 0xcb, 0xe0, 0xdd, 0x13, 0x2d, - 0xc8, 0x98, 0xbd, 0xb2, 0x36, 0x55, 0x09, 0xa7, 0x2a, 0xf5, 0x08, 0x71, - 0x39, 0x3c, 0xd3, 0x63, 0xaa, 0x55, 0x2b, 0xc0, 0x37, 0x5a, 0xa6, 0x53, - 0xd4, 0x34, 0x61, 0x11, 0x2b, 0x99, 0x81, 0x75, 0xfe, 0x76, 0x0e, 0x36, - 0x14, 0x3b, 0xb5, 0xb4, 0x80, 0x99, 0xa4, 0x5b, 0x7d, 0xe9, 0xa6, 0xc6, - 0x66, 0xb1, 0x35, 0x0f, 0x13, 0x74, 0xd7, 0x11, 0xc8, 0x11, 0x2c, 0xc5, - 0x7d, 0x54, 0x5e, 0xd7, 0x84, 0x9b, 0xe0, 0xeb, 0x8f, 0x1b, 0x58, 0xd2, - 0x45, 0x2a, 0x50, 0xe9, 0x60, 0x8c, 0xf5, 0xb9, 0xa0, 0x6d, 0x0c, 0x06, - 0x1a, 0x57, 0xd7, 0x8e, 0xed, 0xb0, 0xa4, 0x49, 0x17, 0x11, 0x9d, 0x4c, - 0x96, 0x51, 0x4a, 0x8a, 0x66, 0xe3, 0x2a, 0xd6, 0xba, 0x1f, 0xd0, 0xec, - 0xe0, 0x0c, 0x4f, 0x7c, 0xe0, 0x6a, 0x3c, 0xae, 0x2d, 0xea, 0xf6, 0x62, - 0x47, 0xff, 0x43, 0x12, 0xc0, 0xc6, 0x1e, 0xa4, 0xe0, 0x9f, 0xc3, 0xab, - 0x59, 0x58, 0x84, 0xe3, 0x4f, 0x4b, 0x45, 0xc7, 0x54, 0x77, 0x18, 0x26, - 0xfe, 0xcf, 0x75, 0xd5, 0x0d, 0x81, 0xe8, 0x2c, 0x59, 0x79, 0x29, 0x05, - 0x29, 0x33, 0x10, 0x6a, 0x4e, 0x05, 0x43, 0xe6, 0x71, 0x97, 0x17, 0x60, - 0xa1, 0x5d, 0xb1, 0xc0, 0x58, 0x0f, 0x06, 0x34, 0x8c, 0x81, 0x6e, 0x4a, - 0xc8, 0x12, 0x4e, 0xa6, 0xe9, 0xe3, 0xfe, 0x72, 0xb0, 0xeb, 0x0e, 0x98, - 0xc2, 0x8c, 0x00, 0x43, 0x19, 0x29, 0x90, 0x05, 0x77, 0xe8, 0xf6, 0x29, - 0xdd, 0xf9, 0x17, 0xb1, 0xfe, 0xc8, 0x01, 0x60, 0x70, 0x7c, 0xe3, 0x3f, - 0x38, 0x44, 0x64, 0x04, 0x5c, 0x29, 0x55, 0xe2, 0x8b, 0x5a, 0xf6, 0x44, - 0x66, 0x13, 0xc8, 0xbc, 0x5f, 0xb0, 0x97, 0xa0, 0x8c, 0x0b, 0x4e, 0x73, - 0x75, 0x7c, 0xd8, 0x4f, 0x96, 0xea, 0xba, 0x42, 0x0c, 0x0a, 0x20, 0x9d, - 0x7a, 0x1c, 0x81, 0x76, 0x4e, 0xd1, 0xba, 0x5d, 0x65, 0x51, 0xe7, 0x5e, - 0xd8, 0x99, 0x1f, 0x4f, 0x1a, 0x75, 0x02, 0x89, 0x3a, 0x09, 0x0f, 0x29, - 0x4b, 0x97, 0x62, 0x64, 0xbf, 0xb7, 0x26, 0x35, 0x8a, 0x36, 0xaa, 0xdd, - 0x81, 0x71, 0x69, 0x47, 0x70, 0xea, 0x27, 0xb2, 0xd7, 0xf8, 0x0a, 0xd1, - 0x85, 0x35, 0x16, 0x12, 0xc2, 0xe9, 0x60, 0xa2, 0x72, 0x16, 0x6a, 0x39, - 0x26, 0x48, 0x05, 0xb4, 0x71, 0xeb, 0x37, 0x12, 0xb1, 0x10, 0xce, 0xb4, - 0xaf, 0xfa, 0xf9, 0x09, 0xb2, 0x1a, 0xb2, 0x66, 0x42, 0xa2, 0x1c, 0xdb, - 0xe3, 0x0e, 0x29, 0xb9, 0x7d, 0x70, 0xe9, 0xda, 0x42, 0xd7, 0xdf, 0x2e, - 0x0e, 0xe6, 0x13, 0x87, 0xc4, 0x8b, 0x6d, 0x48, 0x9c, 0x69, 0x32, 0x40, - 0x7a, 0x38, 0x80, 0x9a, 0x8c, 0xa8, 0x89, 0x68, 0x0f, 0x56, 0x85, 0xc4, - 0x4b, 0xc8, 0xa4, 0x16, 0x27, 0x58, 0x2b, 0x62, 0x0a, 0xbc, 0xd0, 0xc3, - 0xac, 0x2d, 0x7e, 0xa8, 0xd4, 0xfc, 0x5b, 0xa0, 0x1e, 0xce, 0xaf, 0x16, - 0x80, 0x0e, 0x51, 0x30, 0x56, 0xc9, 0x28, 0xb8, 0x56, 0xde, 0xed, 0xb8, - 0xba, 0xd0, 0x2b, 0x40, 0xe8, 0x07, 0x88, 0x06, 0x55, 0x9e, 0xac, 0xeb, - 0x0c, 0xc1, 0x73, 0xa8, 0x4e, 0x33, 0x1e, 0x83, 0x8e, 0x2d, 0xbe, 0x2b, - 0x8b, 0x90, 0xc4, 0x2e, 0x98, 0x5f, 0xc2, 0xa0, 0x40, 0x2b, 0xa4, 0x18, - 0x15, 0x33, 0x15, 0x99, 0x87, 0xc8, 0x7f, 0x7b, 0xb6, 0x57, 0x81, 0x02, - 0x91, 0x30, 0x33, 0xcd, 0x79, 0xa8, 0x79, 0xf8, 0x2f, 0x93, 0xfc, 0x55, - 0xa7, 0x47, 0x04, 0x6e, 0xe8, 0x11, 0xca, 0x23, 0x61, 0xc1, 0x95, 0x70, - 0x8f, 0xff, 0x2f, 0x45, 0x9b, 0x95, 0x49, 0x7f, 0xca, 0xda, 0xa3, 0x4e, - 0xef, 0x6b, 0xc2, 0xce, 0x2d, 0x6f, 0x5c, 0xbc, 0xad, 0x8b, 0xc5, 0x7f, - 0x02, 0x4d, 0x2d, 0x04, 0x35, 0x04, 0xf4, 0xf2, 0xde, 0x0a, 0xfa, 0x4c, - 0xbf, 0xe7, 0x53, 0xc2, 0x93, 0xcd, 0x1b, 0x22, 0xba, 0xb7, 0x0c, 0x5a, - 0x41, 0xd7, 0xa3, 0x00, 0x92, 0xb1, 0xab, 0x51, 0xef, 0xe5, 0xb9, 0xf5, - 0xd4, 0x8f, 0x01, 0x19, 0x2f, 0x10, 0xf6, 0xcc, 0xc9, 0x42, 0x4c, 0xc7, - 0x9f, 0x99, 0xf2, 0x46, 0x0b, 0xe5, 0x59, 0x33, 0xb2, 0xd0, 0x80, 0x10, - 0x7d, 0xf2, 0x76, 0x00, 0x6b, 0xc4, 0x30, 0x27, 0xbf, 0xce, 0xad, 0xad, - 0x9d, 0x4b, 0x8b, 0x6b, 0x6e, 0x00, 0xb0, 0x0f, 0x5d, 0x02, 0x6a, 0x2b, - 0xff, 0xdf, 0x63, 0x14, 0x2c, 0x44, 0x0c, 0x23, 0x5e, 0xac, 0x86, 0x32, - 0xb3, 0x84, 0xd6, 0x53, 0x08, 0x9c, 0xf8, 0x13, 0x65, 0x5d, 0x4d, 0x70, - 0x65, 0x68, 0x2f, 0xf4, 0xfc, 0xdb, 0x6f, 0xdc, 0xad, 0xb4, 0xab, 0xd3, - 0xfd, 0x92, 0x5a, 0x05, 0x1c, 0xd5, 0xeb, 0x20, 0x3f, 0x0b, 0x70, 0xc2, - 0x8d, 0x61, 0x42, 0xb2, 0x9b, 0xce, 0x13, 0x10, 0xcb, 0x64, 0xb3, 0x3e, - 0x99, 0xd2, 0x4e, 0xf4, 0x91, 0x15, 0x12, 0xac, 0xa7, 0xf2, 0xc3, 0xfb, - 0x92, 0x4d, 0x4f, 0x18, 0x7a, 0x68, 0x10, 0x23, 0x7e, 0x4c, 0xc6, 0x92, - 0x7f, 0xe2, 0x15, 0x19, 0xc9, 0x60, 0x51, 0x48, 0x9e, 0xeb, 0xc0, 0xf1, - 0x20, 0x54, 0x06, 0x14, 0x17, 0x0d, 0xcb, 0x1e, 0x50, 0x1b, 0xfd, 0xba, - 0xdc, 0x01, 0xab, 0x1e, 0xca, 0x09, 0xf1, 0x37, 0x25, 0xb7, 0xa9, 0xce, - 0x03, 0x4d, 0xc2, 0xfc, 0x92, 0xc4, 0x7a, 0x71, 0x7b, 0xc2, 0x75, 0xfd, - 0x36, 0x1a, 0x90, 0x8f, 0x2a, 0x89, 0xf4, 0xba, 0x85, 0x23, 0x93, 0x8b, - 0x96, 0x55, 0x22, 0x3f, 0xc8, 0x66, 0x30, 0x07, 0x1a, 0x9c, 0xbc, 0x7c, - 0xc5, 0xc9, 0xc2, 0x02, 0x02, 0xc3, 0xd6, 0xd7, 0x83, 0xab, 0x14, 0x51, - 0x4b, 0xb6, 0x5e, 0x82, 0x21, 0x9c, 0xc6, 0xe9, 0x32, 0x3f, 0x9c, 0xe3, - 0x22, 0xc9, 0xfc, 0x06, 0x3c, 0x64, 0x5c, 0xbe, 0x48, 0x4a, 0x8f, 0x22, - 0xaa, 0xd7, 0x27, 0xc1, 0x37, 0xde, 0xdd, 0x10, 0x29, 0xea, 0x35, 0xe1, - 0xcd, 0xe5, 0x13, 0x4c, 0xe4, 0xf6, 0xd4, 0x55, 0x5d, 0xe0, 0x74, 0x4b, - 0x5f, 0xbe, 0xa7, 0xd1, 0x32, 0x77, 0xbb, 0x48, 0x45, 0x04, 0x7e, 0x81, - 0xdc, 0x18, 0x2b, 0x4e, 0x4b, 0xf2, 0x41, 0xb4, 0x1c, 0x05, 0x23, 0x90, - 0x9c, 0x8f, 0x16, 0x32, 0xfa, 0x62, 0x5c, 0x8d, 0x06, 0x1b, 0xa1, 0xc0, - 0x6d, 0x2e, 0x99, 0xf4, 0x51, 0x6f, 0x35, 0xca, 0xe9, 0x3a, 0x98, 0x23, - 0xce, 0x0d, 0xb7, 0x89, 0x40, 0x8b, 0x96, 0xa2, 0x35, 0x0b, 0x89, 0x7f, - 0x33, 0x0a, 0x50, 0xc2, 0xf9, 0x98, 0x4c, 0x17, 0x64, 0x07, 0x18, 0x63, - 0x44, 0x82, 0x34, 0x02, 0x9a, 0x9b, 0x79, 0x82, 0x7b, 0x82, 0x46, 0xc6, - 0xf9, 0x36, 0xcf, 0xa4, 0x8f, 0x23, 0x1d, 0xcd, 0xe3, 0x68, 0x84, 0xce, - 0xb0, 0x10, 0xc9, 0x06, 0xa0, 0xe4, 0x4a, 0xc4, 0xb9, 0x18, 0x6c, 0xab, - 0x6b, 0x74, 0x23, 0x1c, 0xfe, 0x31, 0x9b, 0x1a, 0x08, 0xd6, 0x13, 0xd0, - 0xe9, 0xcc, 0x91, 0x3d, 0xb2, 0x40, 0x56, 0x3c, 0x3c, 0x8f, 0xc1, 0xfd, - 0x8f, 0x67, 0xbc, 0xa8, 0x71, 0xcf, 0x75, 0x7c, 0x13, 0x70, 0xe7, 0x77, - 0x71, 0x1e, 0x5b, 0xb6, 0x1d, 0x33, 0xa3, 0x88, 0x11, 0x66, 0x7d, 0x35, - 0xb4, 0x3e, 0xc1, 0x0b, 0x7a, 0xcd, 0xb1, 0x84, 0x35, 0x75, 0xca, 0x7e, - 0x04, 0x06, 0x3c, 0x94, 0x1f, 0x6e, 0xed, 0xcc, 0xf0, 0xe3, 0xf9, 0x3c, - 0x51, 0x93, 0x28, 0x42, 0x4e, 0x60, 0x63, 0x6e, 0xcb, 0x51, 0x0d, 0xa3, - 0xc6, 0xa4, 0xa7, 0x38, 0x42, 0x79, 0xfd, 0x49, 0x4a, 0xd1, 0x75, 0xac, - 0xe9, 0xd3, 0x81, 0x45, 0xa7, 0x61, 0xc7, 0x52, 0x40, 0xab, 0x68, 0xa1, - 0x5c, 0x9a, 0x18, 0xc9, 0x20, 0x06, 0x0a, 0xad, 0x32, 0xaf, 0x12, 0xa4, - 0x26, 0x54, 0x3b, 0x28, 0x4a, 0x5d, 0xb7, 0x8c, 0x72, 0xaf, 0x2b, 0x30, - 0xec, 0x56, 0x8c, 0xc0, 0x3d, 0xf6, 0x2c, 0x3b, 0xdf, 0x3e, 0x27, 0x91, - 0xc3, 0xd5, 0x0e, 0x5e, 0xe8, 0x5b, 0x6c, 0x5a, 0x6e, 0x03, 0x18, 0xea, - 0xf3, 0x8e, 0x6a, 0x8c, 0x3b, 0xcc, 0xcd, 0x83, 0x4f, 0x0f, 0xa6, 0xa6, - 0x83, 0xa9, 0x93, 0x1c, 0x86, 0xb2, 0x48, 0x36, 0x32, 0x52, 0x5a, 0x3e, - 0x1a, 0xb9, 0xbc, 0x92, 0xf6, 0xf8, 0x5a, 0x60, 0x6f, 0xdc, 0xff, 0xd0, - 0xb4, 0xc5, 0xf9, 0xd1, 0xb4, 0xe7, 0xa9, 0x13, 0x49, 0x12, 0x03, 0x8e, - 0x91, 0x78, 0x4a, 0xbb, 0x9d, 0x3e, 0x88, 0x34, 0xa6, 0xcd, 0x82, 0x6c, - 0xef, 0xcb, 0x6b, 0x60, 0x62, 0xaf, 0xec, 0x99, 0x16, 0x36, 0xa3, 0x54, - 0x4d, 0x4c, 0x98, 0x59, 0x19, 0xb1, 0xef, 0x12, 0x36, 0x6e, 0xa2, 0x43, - 0x4c, 0x51, 0x73, 0xb7, 0x38, 0xf1, 0x2a, 0x8a, 0xe3, 0x18, 0x83, 0x88, - 0x7c, 0x53, 0xe4, 0x2a, 0xfa, 0xe3, 0x54, 0x63, 0x41, 0x1e, 0x43, 0x87, - 0x23, 0x91, 0x17, 0x8e, 0x87, 0xf8, 0xa4, 0xbe, 0x1d, 0x13, 0xf6, 0x9f, - 0xbd, 0x6f, 0x6d, 0xed, 0xcb, 0x09, 0x1c, 0xaf, 0x81, 0xcf, 0x4e, 0xfd, - 0x5d, 0xfa, 0x2e, 0x0c, 0x9b, 0xcf, 0x36, 0x3b, 0x8e, 0xcd, 0xb9, 0x13, - 0x62, 0x18, 0x6c, 0x72, 0xbb, 0x6c, 0x8c, 0x4f, 0x8b, 0x01, 0xcd, 0xe2, - 0xd3, 0x13, 0x23, 0x22, 0xa6, 0x1f, 0xa7, 0x41, 0xc5, 0xe0, 0x78, 0x6d, - 0x5b, 0x7c, 0x0f, 0xa0, 0x66, 0x1a, 0xef, 0x97, 0xf4, 0xf5, 0x88, 0x3f, - 0x4f, 0x48, 0x79, 0x60, 0x0c, 0x56, 0x14, 0x20, 0xd2, 0xf0, 0x09, 0x5e, - 0x3c, 0xc7, 0x9d, 0x4c, 0xb2, 0x9c, 0x9f, 0xf9, 0xa4, 0x16, 0xe4, 0xec, - 0x41, 0xb6, 0xc5, 0x8c, 0x3c, 0x27, 0x98, 0x3d, 0x0b, 0x71, 0xf6, 0x2e, - 0x1c, 0xdd, 0x38, 0x71, 0xf8, 0x4e, 0xba, 0x00, 0xbe, 0x36, 0x07, 0xbb, - 0xf6, 0x33, 0x78, 0xea, 0x08, 0xd3, 0xfa, 0x6f, 0x1a, 0xaa, 0x4a, 0xd6, - 0x7f, 0x7a, 0x3c, 0x23, 0x7c, 0x07, 0x5b, 0xc3, 0xfd, 0x44, 0xb3, 0xd4, - 0xcb, 0x05, 0x26, 0x5b, 0xf9, 0x06, 0x0e, 0x2e, 0xb6, 0xc3, 0x92, 0x4e, - 0x4f, 0x1f, 0x86, 0x2e, 0x8f, 0xae, 0xf7, 0x05, 0x2b, 0x35, 0x9e, 0x80, - 0xb5, 0x4c, 0xbc, 0xfe, 0x0c, 0xa6, 0xd6, 0xb5, 0x9c, 0x60, 0xf0, 0x9b, - 0x8a, 0xd2, 0x51, 0x03, 0x62, 0x2c, 0xb2, 0x9e, 0x51, 0x90, 0x21, 0xdd, - 0x99, 0x57, 0xc8, 0x21, 0xa7, 0x5b, 0x7a, 0x7c, 0xb2, 0x3b, 0xb5, 0x35, - 0x4e, 0x9c, 0xb7, 0x94, 0xfa, 0x6f, 0x64, 0x39, 0x6d, 0x4e, 0x40, 0x75, - 0x5f, 0x29, 0x8d, 0xb5, 0xfd, 0x9b, 0x6c, 0xb4, 0x0b, 0x76, 0x45, 0xbc, - 0xbb, 0xf6, 0xbd, 0x44, 0x7e, 0x76, 0xd8, 0xc3, 0x30, 0x57, 0xd4, 0xe3, - 0x7a, 0x44, 0x4f, 0xc1, 0xee, 0xfa, 0xec, 0xd5, 0x3c, 0x29, 0x12, 0x54, - 0x19, 0x45, 0x8d, 0x26, 0x09, 0x19, 0xc9, 0x39, 0x63, 0xa8, 0x20, 0xa3, - 0x8c, 0x92, 0x55, 0x25, 0x45, 0xe3, 0x9e, 0x9f, 0xc7, 0xfb, 0x78, 0xc3, - 0xbb, 0x49, 0xdb, 0x54, 0x23, 0x5e, 0xf8, 0xeb, 0x17, 0xc5, 0x3c, 0x60, - 0x7b, 0xf9, 0xe7, 0xd1, 0x23, 0xc5, 0x67, 0xd1, 0xab, 0xd5, 0xbb, 0xb6, - 0xd4, 0xe2, 0xf6, 0x2d, 0x65, 0xf1, 0xdf, 0x10, 0xa7, 0xe4, 0xca, 0x6a, - 0x59, 0xe4, 0xc4, 0x3e, 0xb2, 0x93, 0xbd, 0x46, 0xca, 0x55, 0x23, 0x90, - 0xfa, 0x87, 0x54, 0xbb, 0x5e, 0x17, 0xcb, 0x92, 0x4a, 0xc1, 0x64, 0x7f, - 0xa5, 0x96, 0x23, 0x14, 0x1b, 0x3b, 0x28, 0xb8, 0x7f, 0x82, 0x51, 0x68, - 0x2b, 0x6b, 0x20, 0x07, 0x01, 0xdb, 0x68, 0x83, 0x73, 0xba, 0xa0, 0x89, - 0x52, 0xd7, 0x71, 0xcd, 0x96, 0x31, 0x7e, 0x4f, 0x7b, 0xf8, 0x5a, 0xf9, - 0xab, 0x32, 0xd1, 0x99, 0x33, 0x97, 0x90, 0x1f, 0xf5, 0x33, 0x24, 0x9a, - 0x54, 0xbc, 0x42, 0xc7, 0x50, 0x92, 0xaf, 0x00, 0xc6, 0x90, 0x49, 0xdb, - 0x93, 0x85, 0x1f, 0x38, 0x19, 0xa3, 0x33, 0x6a, 0x08, 0x25, 0x8b, 0x54, - 0xf1, 0x00, 0x62, 0x75, 0xca, 0xe1, 0x89, 0x4f, 0x98, 0xe1, 0xee, 0x45, - 0xec, 0xe6, 0x99, 0xf7, 0xaf, 0x81, 0x09, 0x19, 0x08, 0x3d, 0xf5, 0x0d, - 0x6c, 0x50, 0x6d, 0xc8, 0x5c, 0xf7, 0x3d, 0x9b, 0x4b, 0x1b, 0xe2, 0xdd, - 0x2c, 0xb6, 0xa1, 0xc8, 0x1c, 0xe5, 0x05, 0x2c, 0x3a, 0x9f, 0xf3, 0xc8, - 0x3e, 0xa5, 0x25, 0x83, 0x3a, 0xb0, 0x29, 0x0e, 0xab, 0x2d, 0x38, 0xd0, - 0xf9, 0x30, 0x4a, 0xa7, 0xbb, 0x47, 0x6a, 0x0c, 0x37, 0xa0, 0x49, 0x90, - 0x4b, 0x99, 0x5b, 0xb9, 0xf6, 0xc2, 0x06, 0x03, 0xa8, 0x8e, 0x07, 0x08, - 0x64, 0xb9, 0x8c, 0x98, 0x54, 0x88, 0x80, 0x7b, 0xa4, 0x38, 0x50, 0xbb, - 0x75, 0x48, 0x43, 0x50, 0xc3, 0x2b, 0x0e, 0xe5, 0x15, 0x49, 0x90, 0x54, - 0x72, 0xdb, 0xfc, 0x6f, 0xde, 0x88, 0x42, 0x43, 0xa1, 0xc0, 0xb5, 0xd9, - 0x35, 0x57, 0x84, 0x5a, 0x69, 0x16, 0x72, 0xf6, 0xa8, 0xe7, 0x9e, 0xca, - 0xfb, 0x7b, 0x5b, 0x93, 0x81, 0x29, 0xf4, 0x3a, 0xde, 0x40, 0xb1, 0xc2, - 0x20, 0xd9, 0x38, 0xba, 0xb8, 0xf3, 0xbc, 0xe1, 0x64, 0x26, 0x67, 0xad, - 0x3f, 0x48, 0xdc, 0xa5, 0x57, 0xb2, 0x43, 0xfd, 0x7f, 0x8f, 0x9f, 0xf6, - 0x06, 0xd1, 0x95, 0x93, 0x82, 0x64, 0xc3, 0x97, 0x67, 0x82, 0xaf, 0x48, - 0x68, 0x2c, 0x1d, 0x6d, 0x06, 0xed, 0xdd, 0xc5, 0x71, 0x60, 0x40, 0x5a, - 0xdd, 0x1c, 0x99, 0x66, 0x94, 0xe0, 0xf9, 0xd5, 0xf5, 0xf7, 0xbb, 0x20, - 0x45, 0xbc, 0xbd, 0x20, 0x3b, 0xdf, 0x2a, 0x76, 0x3e, 0xfd, 0xf9, 0xfa, - 0x33, 0xe1, 0x13, 0xcc, 0x68, 0xbe, 0xac, 0x98, 0xfc, 0x56, 0x0c, 0xa3, - 0x00, 0x88, 0x7e, 0xc8, 0xde, 0x57, 0x40, 0xe2, 0xa3, 0x81, 0xe2, 0x29, - 0xa5, 0xdc, 0x14, 0x0d, 0x89, 0xec, 0xf1, 0x33, 0x47, 0xd4, 0xe1, 0x0d, - 0x4f, 0xc9, 0x54, 0x9d, 0x92, 0xee, 0xe6, 0xfc, 0x99, 0xcd, 0x84, 0xf0, - 0xce, 0xd2, 0xb8, 0xa3, 0x8f, 0xdf, 0x7d, 0x6a, 0xc4, 0x97, 0x47, 0xaf, - 0x61, 0xb4, 0x01, 0x5f, 0xd3, 0xa5, 0x4a, 0xce, 0x24, 0xc9, 0x76, 0x8d, - 0x3f, 0x5f, 0xe7, 0x64, 0x81, 0xa9, 0x3c, 0x17, 0xa7, 0x17, 0x0c, 0x06, - 0x68, 0x3d, 0x31, 0xd7, 0x93, 0x90, 0xf8, 0x26, 0x74, 0x2e, 0xa1, 0x16, - 0x9c, 0xf5, 0x77, 0x0c, 0x7d, 0x68, 0x01, 0x51, 0x8f, 0xba, 0x13, 0x10, - 0x7c, 0x61, 0xa9, 0x8e, 0x75, 0x12, 0x79, 0x45, 0x9c, 0x39, 0xec, 0xed, - 0xed, 0x34, 0x8c, 0x1f, 0x40, 0xbf, 0x86, 0x94, 0x6d, 0x0a, 0x67, 0x80, - 0x34, 0xd6, 0x33, 0xda, 0x84, 0x8c, 0x08, 0x67, 0x0d, 0xb2, 0xae, 0x77, - 0xa3, 0x61, 0x33, 0xce, 0xfc, 0x6e, 0x93, 0x19, 0xd3, 0x7c, 0x76, 0x92, - 0x7d, 0xde, 0x77, 0xf7, 0x21, 0x14, 0x5a, 0xb2, 0x06, 0x60, 0x06, 0x18, - 0x60, 0x1c, 0xe8, 0xdc, 0x63, 0x6a, 0x75, 0x83, 0x07, 0x00, 0xab, 0xae, - 0x36, 0xff, 0x74, 0xeb, 0x8a, 0xe2, 0x99, 0x68, 0xb6, 0x16, 0x3c, 0x4f, - 0xb4, 0xf9, 0x0a, 0x3f, 0x61, 0xbd, 0xf7, 0xa3, 0x6a, 0x66, 0xa2, 0x64, - 0xae, 0xc4, 0x0f, 0xd6, 0xa0, 0x73, 0x81, 0x29, 0x04, 0x63, 0x49, 0xcb, - 0xd7, 0x5e, 0x87, 0xbb, 0x26, 0x8c, 0x81, 0xdb, 0xdc, 0x08, 0x3f, 0x05, - 0x37, 0xcc, 0x7b, 0x5b, 0x36, 0xa9, 0x39, 0x2c, 0x60, 0x95, 0xdd, 0xff, - 0x01, 0x64, 0x66, 0xe3, 0x31, 0x9d, 0xf2, 0xbe, 0xee, 0x91, 0xd6, 0x2d, - 0xc0, 0xaf, 0x13, 0x2b, 0x98, 0x54, 0xb3, 0x99, 0x7d, 0x7d, 0x95, 0xc4, - 0xa0, 0x8b, 0xc7, 0xc0, 0xfb, 0xbc, 0xef, 0xe3, 0x7e, 0xfe, 0xc9, 0x82, - 0xad, 0xcd, 0x4b, 0xf2, 0xb1, 0x3f, 0x05, 0x29, 0x65, 0xcc, 0x2b, 0x76, - 0xe7, 0xd6, 0x0d, 0xde, 0xd1, 0x49, 0xda, 0x8d, 0x5b, 0x60, 0xdb, 0x2f, - 0xa4, 0x60, 0x13, 0x0a, 0xb0, 0x98, 0x61, 0x78, 0xdf, 0x5d, 0x8a, 0x00, - 0x71, 0x38, 0x77, 0xde, 0x77, 0x6b, 0x46, 0x2f, 0x80, 0x2b, 0x43, 0xa1, - 0xab, 0x3b, 0x3a, 0xa1, 0x7a, 0x9d, 0xcb, 0x3b, 0x39, 0xc7, 0x44, 0x38, - 0xde, 0x01, 0x53, 0xde, 0x62, 0x27, 0x64, 0xf1, 0x4b, 0xeb, 0xf4, 0xb9, - 0xa4, 0x41, 0x29, 0xfb, 0xab, 0x5c, 0xa4, 0xed, 0x87, 0xf9, 0x24, 0xb3, - 0x25, 0x2e, 0xfa, 0x95, 0x78, 0xbe, 0x58, 0x35, 0xad, 0x7b, 0xe5, 0xbe, - 0x3a, 0x2c, 0x02, 0x80, 0x28, 0xce, 0x84, 0x4f, 0x1c, 0x0c, 0x7e, 0x3a, - 0x76, 0xf7, 0x7b, 0x34, 0x7c, 0x78, 0x99, 0x8a, 0x82, 0xba, 0xb1, 0xdb, - 0x8c, 0x07, 0xe5, 0x8d, 0xce, 0x55, 0x6f, 0xd2, 0xd4, 0xee, 0x2b, 0x84, - 0xab, 0xd4, 0xc6, 0xa2, 0x7f, 0x2b, 0xcf, 0x34, 0x19, 0xdc, 0x0b, 0x7e, - 0xac, 0x4e, 0x5a, 0x55, 0x73, 0x46, 0x20, 0xcc, 0xea, 0xba, 0xa6, 0x28, - 0x18, 0xb1, 0x77, 0x6b, 0x53, 0x75, 0x63, 0x25, 0x13, 0x86, 0x10, 0xf3, - 0x29, 0xa6, 0x6a, 0xa8, 0xf7, 0xa8, 0x02, 0x45, 0x75, 0x09, 0xd1, 0x93, - 0xf9, 0x45, 0x5f, 0x1d, 0x18, 0x1b, 0xe4, 0xaf, 0x35, 0x88, 0xad, 0x1d, - 0x72, 0x6f, 0xe7, 0xeb, 0xb2, 0xa5, 0xf0, 0x04, 0x23, 0x92, 0x68, 0xe9, - 0xdc, 0xd6, 0x0e, 0x1e, 0x53, 0xe5, 0xc4, 0x6d, 0xe5, 0xca, 0x7a, 0x6b, - 0x34, 0xd2, 0x7a, 0xb9, 0x09, 0xdd, 0x9e, 0xf3, 0x12, 0xc3, 0x20, 0xb3, - 0x6a, 0xbd, 0x14, 0xa2, 0xac, 0xe9, 0xd1, 0x55, 0xe6, 0x67, 0x04, 0x1a, - 0x20, 0x4c, 0x9d, 0xda, 0x8d, 0xd5, 0xa7, 0x2f, 0x6a, 0x95, 0x54, 0x32, - 0xff, 0xda, 0x2e, 0x5e, 0x56, 0xf7, 0x7e, 0x20, 0x73, 0x71, 0xd1, 0xc4, - 0x31, 0xc7, 0x76, 0xd1, 0x76, 0x0f, 0x15, 0xb4, 0x0e, 0xd1, 0x75, 0x93, - 0x72, 0xdd, 0x70, 0xbb, 0xe8, 0x30, 0xb3, 0x98, 0x7f, 0x08, 0xe2, 0xf4, - 0xeb, 0xaa, 0x28, 0xe0, 0x0f, 0x7e, 0x10, 0x7f, 0xb4, 0x47, 0x66, 0xd1, - 0xa1, 0xd7, 0xea, 0x46, 0xe0, 0x5e, 0x55, 0xe5, 0x83, 0x91, 0x42, 0x48, - 0x1e, 0xf9, 0xce, 0x52, 0x5f, 0xb2, 0x8a, 0x5e, 0xd8, 0x63, 0x47, 0xdd, - 0x4d, 0x37, 0x37, 0xe0, 0x52, 0x2b, 0xb5, 0x99, 0x63, 0xc8, 0xa2, 0x02, - 0xf6, 0x6d, 0x97, 0x1e, 0xb7, 0xdc, 0xa7, 0x07, 0xb0, 0xdb, 0x29, 0xd0, - 0x5b, 0xf6, 0x14, 0x70, 0xef, 0x9d, 0x20, 0x39, 0x19, 0x25, 0xe7, 0x3c, - 0x98, 0x92, 0x9f, 0x26, 0xe8, 0x60, 0x1b, 0xfb, 0x82, 0x2b, 0x40, 0x6a, - 0x72, 0xb8, 0xda, 0x86, 0x37, 0x5c, 0x35, 0x13, 0x92, 0xe1, 0xc8, 0x15, - 0x82, 0x45, 0xbe, 0xc6, 0xf7, 0x56, 0x72, 0x3f, 0xf1, 0x4b, 0x17, 0x51, - 0xe5, 0x4f, 0xbc, 0x59, 0xe5, 0xe7, 0x5b, 0x9a, 0xac, 0x0a, 0x80, 0x22, - 0xc7, 0x83, 0x28, 0x23, 0xc8, 0x62, 0xa6, 0x46, 0xb9, 0x96, 0x86, 0x36, - 0x24, 0xf8, 0x3f, 0xe1, 0xa1, 0xc4, 0x13, 0x79, 0x00, 0xcd, 0x15, 0xf4, - 0x48, 0x22, 0xc9, 0xca, 0xd7, 0xb6, 0xdc, 0x4f, 0x98, 0xbd, 0xda, 0xeb, - 0xf2, 0xbd, 0x3f, 0xef, 0x95, 0xdf, 0x13, 0x7d, 0x34, 0x52, 0x0e, 0xbd, - 0xf4, 0xfc, 0xe2, 0x33, 0xe8, 0x36, 0x50, 0x2a, 0xeb, 0x5b, 0x05, 0x45, - 0x2c, 0xb5, 0xb4, 0xcc, 0x5e, 0xa4, 0x37, 0x50, 0xac, 0x8d, 0xd5, 0xd7, - 0x30, 0xcb, 0x2a, 0x4d, 0x76, 0x67, 0x59, 0xd5, 0xbc, 0xb5, 0xd4, 0xf5, - 0x06, 0x30, 0x95, 0xc1, 0xd7, 0xee, 0x79, 0xda, 0x78, 0x8f, 0xab, 0xa7, - 0x83, 0x01, 0xaf, 0x19, 0xe6, 0xe9, 0xa2, 0x6e, 0xfe, 0x8d, 0x7c, 0x8c, - 0x21, 0x9e, 0xb7, 0x3d, 0x44, 0x77, 0xd9, 0xd3, 0xff, 0xfe, 0x32, 0xe8, - 0x7e, 0x45, 0x4c, 0xff, 0xcc, 0x83, 0x7c, 0x4a, 0x9a, 0x2d, 0x54, 0xd2, - 0x31, 0x5b, 0xba, 0xd8, 0x72, 0x2d, 0x83, 0x16, 0xce, 0x5b, 0x14, 0x94, - 0xce, 0xc8, 0xac, 0x77, 0x0f, 0x49, 0xb7, 0xf1, 0xaa, 0x6d, 0x16, 0x9a, - 0xd1, 0x45, 0x64, 0xed, 0xfe, 0x71, 0x04, 0x24, 0xee, 0x7d, 0xfc, 0x58, - 0x6b, 0xed, 0x3e, 0x58, 0xf3, 0x4d, 0x93, 0x80, 0xc1, 0x14, 0x22, 0x9d, - 0xb1, 0xdc, 0xe9, 0x63, 0xb0, 0x0a, 0x3b, 0xd0, 0x9b, 0x41, 0x09, 0x01, - 0x9d, 0x01, 0x62, 0xb0, 0x9e, 0x1c, 0xa8, 0xab, 0x23, 0x6e, 0x42, 0x66, - 0xbd, 0x7a, 0x82, 0x8f, 0x79, 0xb8, 0x82, 0xcc, 0x4e, 0x6e, 0x17, 0xd7, - 0x1b, 0x28, 0xe8, 0xbc, 0x15, 0xa6, 0x3c, 0x54, 0x04, 0x59, 0xef, 0x1b, - 0x06, 0x82, 0x63, 0xdb, 0xbf, 0x3a, 0x7f, 0x78, 0x5d, 0x18, 0xed, 0xac, - 0xcd, 0x96, 0x33, 0xad, 0x8e, 0x55, 0xa6, 0x5b, 0x37, 0x33, 0x88, 0x8d, - 0xac, 0x33, 0x0f, 0xd4, 0x31, 0x2d, 0xee, 0x9c, 0x79, 0x8a, 0x54, 0x69, - 0xf0, 0xe9, 0x8d, 0xfb, 0xed, 0x5b, 0x87, 0x68, 0x02, 0x45, 0xfb, 0xb8, - 0x00, 0x18, 0xf9, 0x65, 0x0b, 0x7e, 0xf3, 0x19, 0xcf, 0x74, 0xa6, 0x89, - 0x8c, 0xa7, 0xb3, 0xfc, 0x99, 0x1f, 0x28, 0x0a, 0xa0, 0x6c, 0x47, 0xa9, - 0x5e, 0x61, 0x29, 0x97, 0x8b, 0x0c, 0x8a, 0x9e, 0x83, 0xb2, 0xbe, 0xa1, - 0x46, 0xa4, 0x4d, 0x9f, 0xf0, 0xb0, 0xae, 0xc8, 0xb3, 0x2b, 0x1a, 0xff, - 0x6e, 0x33, 0xa8, 0x1e, 0x55, 0x44, 0x0a, 0xe4, 0xc1, 0x3a, 0x99, 0xad, - 0xd4, 0x7d, 0x1e, 0xa1, 0x1f, 0x67, 0x3c, 0x90, 0xa8, 0x09, 0xae, 0x6f, - 0x36, 0x5f, 0xbd, 0x19, 0x34, 0x6a, 0x65, 0x55, 0x0e, 0xe1, 0xea, 0xcb, - 0x1b, 0x02, 0x36, 0x23, 0xae, 0x41, 0x3b, 0xf4, 0xa9, 0x10, 0x8f, 0x45, - 0xf1, 0x24, 0x65, 0x58, 0x9e, 0xc8, 0x26, 0xfc, 0x5b, 0xee, 0x4d, 0x02, - 0xc2, 0x59, 0xe4, 0xa9, 0x1f, 0xbc, 0x8b, 0x28, 0x02, 0x7e, 0x35, 0xf8, - 0xb0, 0xa2, 0xd0, 0x16, 0xa9, 0x5c, 0x08, 0x18, 0x4a, 0x58, 0x8e, 0xa0, - 0xe3, 0x43, 0x4e, 0x70, 0xd5, 0x70, 0x5f, 0x79, 0x29, 0xdb, 0xb0, 0x2a, - 0xa2, 0xda, 0xe3, 0xa5, 0xae, 0xce, 0xde, 0x3a, 0x3a, 0x9f, 0xc7, 0x6c, - 0x43, 0xfb, 0x0d, 0xf9, 0xf9, 0x13, 0x7d, 0x52, 0x1f, 0x59, 0xba, 0x6c, - 0x70, 0xbe, 0x8a, 0x1b, 0x5a, 0x56, 0xb4, 0x26, 0xbb, 0xbd, 0x88, 0xf7, - 0xe1, 0x33, 0x42, 0xd2, 0x25, 0xaa, 0x58, 0x83, 0x6b, 0x5b, 0x48, 0x4b, - 0xf7, 0xad, 0x11, 0xed, 0x98, 0x21, 0xa9, 0x9e, 0x00, 0xd9, 0x62, 0x06, - 0xc2, 0x1b, 0xe1, 0x00, 0xcf, 0x2f, 0x98, 0xde, 0x58, 0xc5, 0x10, 0xeb, - 0x52, 0xf3, 0x9c, 0x57, 0xde, 0x91, 0x9a, 0x58, 0x9a, 0xec, 0x78, 0x9b, - 0x49, 0xb7, 0x54, 0x64, 0x98, 0x36, 0xf7, 0xe9, 0x43, 0x54, 0x36, 0xc7, - 0x6f, 0xfd, 0xc1, 0xf8, 0xb4, 0x97, 0xd1, 0x1a, 0xae, 0x19, 0xf1, 0x1e, - 0x1b, 0xe6, 0xd6, 0x6e, 0x2e, 0x48, 0x79, 0x9c, 0xff, 0x92, 0x10, 0xd5, - 0x5c, 0x7a, 0xb0, 0x61, 0x7c, 0x16, 0xc9, 0x64, 0x87, 0x6f, 0x57, 0x5d, - 0x07, 0x0e, 0xbe, 0x54, 0x86, 0x40, 0xb6, 0xf5, 0xc5, 0x49, 0x28, 0x24, - 0x5e, 0xe6, 0x09, 0x40, 0x59, 0x32, 0xd2, 0x60, 0xbf, 0x5a, 0x71, 0x25, - 0x39, 0xd6, 0x65, 0x02, 0xde, 0xea, 0x7b, 0xb9, 0x25, 0x7e, 0xb8, 0x7c, - 0x33, 0x15, 0xfa, 0x74, 0x50, 0x26, 0x37, 0x64, 0x1a, 0x5c, 0xab, 0x6f, - 0xc3, 0xc1, 0x9c, 0x71, 0x0e, 0x9a, 0x41, 0x9d, 0x3b, 0x6b, 0x1b, 0x2e, - 0x7e, 0x66, 0x77, 0xdc, 0xca, 0xc8, 0x0b, 0xb8, 0x5f, 0x89, 0x70, 0xf6, - 0xb4, 0xc9, 0x51, 0x2c, 0xdd, 0xc3, 0xd0, 0xc5, 0x77, 0xaa, 0xbc, 0xf6, - 0xa4, 0xcf, 0x13, 0x3f, 0xae, 0xb9, 0x21, 0x79, 0x32, 0x36, 0x5d, 0x79, - 0x93, 0x5b, 0x51, 0xc6, 0x46, 0x81, 0xd5, 0xc7, 0x61, 0xfc, 0x5b, 0x41, - 0x42, 0xb3, 0x9c, 0xaa, 0x8e, 0x83, 0xc9, 0x83, 0x85, 0xb3, 0xe9, 0x44, - 0xc2, 0x1d, 0xab, 0xe6, 0x24, 0x46, 0x56, 0x25, 0xaf, 0x4e, 0x41, 0x23, - 0x06, 0xd2, 0xc5, 0xa9, 0xd3, 0x84, 0x9c, 0xca, 0xa9, 0xb6, 0x3d, 0x0a, - 0x94, 0xfc, 0x04, 0xc1, 0xe8, 0x92, 0xe6, 0xe4, 0x88, 0x6b, 0x42, 0x04, - 0x75, 0xad, 0x43, 0xe7, 0x34, 0x6e, 0x77, 0xdb, 0xc8, 0xa5, 0xa3, 0xde, - 0x34, 0x6a, 0xa4, 0xf8, 0x06, 0x0f, 0xaa, 0x3f, 0x40, 0x9f, 0xcf, 0x4b, - 0x33, 0xce, 0x1e, 0x99, 0xf0, 0xa2, 0xc9, 0xe8, 0xef, 0xa9, 0x8e, 0xfc, - 0x5c, 0x48, 0xb1, 0x5a, 0xd8, 0xbc, 0x4d, 0x46, 0xde, 0x18, 0x66, 0x8b, - 0xcd, 0xae, 0x1e, 0x3a, 0xfa, 0x34, 0x9f, 0x89, 0x1f, 0x1b, 0x0f, 0xe5, - 0x6c, 0x04, 0x22, 0xa9, 0x76, 0xd9, 0xa5, 0xfa, 0xfd, 0x47, 0x70, 0xa0, - 0x17, 0xb2, 0x0d, 0xac, 0x51, 0xf1, 0x99, 0x46, 0xce, 0x52, 0xc1, 0x4e, - 0x0a, 0xe8, 0x27, 0xd7, 0x7c, 0x80, 0xdb, 0x74, 0x59, 0x5f, 0x13, 0x43, - 0x6d, 0xa5, 0xc6, 0xbf, 0x15, 0x32, 0xd2, 0xa9, 0xb0, 0xe2, 0x31, 0x54, - 0xcd, 0xc5, 0x0a, 0x37, 0x39, 0x43, 0xe1, 0xa3, 0xdd, 0xb4, 0xda, 0xe5, - 0x97, 0xe0, 0xa9, 0x48, 0x99, 0x8c, 0x41, 0xb1, 0x0a, 0x74, 0xb0, 0xfc, - 0x9b, 0xda, 0xfd, 0x11, 0xf2, 0x6d, 0x2a, 0x9b, 0x03, 0x58, 0x1e, 0x7f, - 0x84, 0xef, 0xc3, 0xb2, 0x19, 0xb7, 0x2b, 0x46, 0x4b, 0x88, 0xc3, 0x33, - 0x35, 0xe2, 0xde, 0xe2, 0x4c, 0x29, 0x84, 0x7f, 0x6a, 0x3d, 0xdd, 0xf6, - 0x78, 0x1e, 0xc4, 0x5f, 0xa9, 0x1b, 0x2a, 0x39, 0x1d, 0x7b, 0xaf, 0xd9, - 0xba, 0x25, 0x49, 0x17, 0x57, 0xa4, 0xd9, 0xf7, 0xdd, 0x7c, 0xd4, 0x21, - 0x51, 0xd0, 0x6f, 0x5f, 0xec, 0x70, 0x41, 0x5b, 0x77, 0x60, 0x4e, 0x4c, - 0xc6, 0xd8, 0x23, 0x9d, 0x28, 0xd8, 0x37, 0x9c, 0x82, 0x35, 0x7d, 0xbc, - 0x54, 0x2d, 0x0b, 0xca, 0x7c, 0xe1, 0xc4, 0xf6, 0xfb, 0xdf, 0xdf, 0x71, - 0x49, 0x45, 0xbc, 0x04, 0x25, 0xa2, 0x78, 0x2d, 0x2c, 0x17, 0x30, 0x2f, - 0xb8, 0x50, 0x96, 0x0e, 0xee, 0x5b, 0x7d, 0xd3, 0x4b, 0x8c, 0x7c, 0x37, - 0x68, 0x66, 0xf7, 0xf8, 0x7d, 0x9d, 0xee, 0xe8, 0xaa, 0x89, 0x05, 0x34, - 0x5d, 0x42, 0x07, 0x7c, 0x3e, 0x75, 0x89, 0x1a, 0xac, 0xb2, 0xbf, 0x74, - 0x63, 0xa1, 0xee, 0xb2, 0xf2, 0x2e, 0x84, 0xe6, 0x13, 0xfd, 0x99, 0x61, - 0x84, 0xed, 0x7e, 0x3f, 0x82, 0xa4, 0xf2, 0x2e, 0x45, 0x27, 0xed, 0x97, - 0x45, 0xdc, 0x6d, 0xd2, 0xf2, 0x58, 0x0f, 0xdd, 0xe7, 0x7f, 0xd4, 0xaf, - 0x41, 0xe9, 0xfb, 0x39, 0x69, 0xad, 0x4a, 0x8b, 0xe3, 0x37, 0x54, 0x75, - 0xe0, 0x7a, 0xd6, 0xcd, 0xbb, 0x51, 0x7d, 0x8e, 0x96, 0x43, 0x10, 0xfc, - 0x22, 0x6a, 0xcc, 0xa8, 0xaf, 0x9d, 0x80, 0x9d, 0x91, 0x15, 0x2e, 0xe9, - 0x94, 0xba, 0xc7, 0x6e, 0x21, 0x15, 0x85, 0x31, 0x26, 0x8b, 0x32, 0xd5, - 0x5c, 0xd7, 0xa1, 0xfe, 0x26, 0xc3, 0xab, 0x09, 0x79, 0x88, 0xb1, 0x17, - 0x12, 0x8c, 0x05, 0x52, 0xc2, 0x03, 0xc3, 0x71, 0x98, 0x5f, 0xb2, 0x99, - 0x99, 0xd8, 0x6c, 0xe6, 0xc8, 0x91, 0x8b, 0x7d, 0xd6, 0x7e, 0xc9, 0x9e, - 0xf9, 0x1c, 0x9e, 0xe0, 0xc1, 0x0f, 0x5b, 0x19, 0x71, 0xd4, 0xc2, 0x54, - 0x6f, 0xb5, 0xd6, 0x61, 0xc4, 0x23, 0xa7, 0x11, 0x57, 0xbb, 0x08, 0x6a, - 0xaa, 0xbb, 0x91, 0x84, 0x2c, 0xc4, 0xf6, 0xb9, 0x8a, 0x81, 0x1b, 0xd5, - 0x44, 0xf7, 0xac, 0x28, 0xc8, 0x98, 0xd4, 0xc2, 0x5e, 0x45, 0xd4, 0x4c, - 0x40, 0x92, 0xa8, 0x08, 0xa6, 0xe6, 0xbb, 0xe0, 0xc8, 0x81, 0xde, 0x91, - 0xf5, 0x90, 0x0b, 0x39, 0xae, 0xf0, 0x1c, 0x03, 0x1a, 0xaf, 0x5f, 0xeb, - 0x0a, 0x08, 0xc5, 0x17, 0xfb, 0x6f, 0x3e, 0xdb, 0xdc, 0xbd, 0x05, 0x6f, - 0x04, 0x54, 0x59, 0x42, 0x8d, 0x21, 0xf3, 0x43, 0x2c, 0x83, 0x2d, 0x7e, - 0xbc, 0xd7, 0x08, 0xfa, 0x33, 0xe5, 0xea, 0x2e, 0xd5, 0x6b, 0x43, 0x15, - 0xa9, 0x5b, 0xd8, 0x45, 0xf4, 0x25, 0x49, 0xa1, 0xd4, 0x39, 0xd0, 0x3a, - 0xc7, 0x03, 0x5d, 0x5b, 0xb6, 0x88, 0xb0, 0x89, 0x35, 0xf9, 0x2d, 0x01, - 0xac, 0x63, 0x3b, 0x65, 0x30, 0x63, 0xf9, 0x09, 0x2d, 0x8e, 0xe1, 0xdc, - 0xad, 0x18, 0x0c, 0x3c, 0x8f, 0x51, 0x30, 0xbe, 0x4b, 0x77, 0xb8, 0x95, - 0x1e, 0x2a, 0x5e, 0xc8, 0xbd, 0xc4, 0x42, 0xc5, 0x35, 0x52, 0xd5, 0xbd, - 0xba, 0xda, 0x60, 0xf6, 0xf8, 0xe2, 0x54, 0x47, 0x7a, 0x58, 0xa9, 0x2a, - 0x3a, 0x60, 0x7f, 0xbf, 0xe1, 0x21, 0x0e, 0x93, 0xe7, 0x1e, 0xf2, 0x40, - 0x9f, 0xbc, 0xcc, 0xb3, 0xf5, 0x21, 0x40, 0x66, 0x04, 0x6a, 0xcb, 0xf9, - 0xec, 0x93, 0xf7, 0x0a, 0xdd, 0x76, 0x74, 0xed, 0x92, 0x0d, 0xcd, 0xbd, - 0xf6, 0x03, 0x8f, 0xaa, 0xf5, 0x4f, 0x9a, 0xaf, 0x48, 0xe8, 0x4c, 0x87, - 0xbd, 0x68, 0xf4, 0xeb, 0xaf, 0x66, 0x1e, 0xdc, 0x20, 0x56, 0x37, 0x67, - 0x4f, 0xe8, 0x0a, 0x96, 0x32, 0x65, 0xad, 0x47, 0xe4, 0x6a, 0x24, 0xdc, - 0xe7, 0xd9, 0xeb, 0x73, 0x9b, 0x0e, 0xbb, 0x57, 0x6b, 0xa6, 0x05, 0xa7, - 0x3e, 0x85, 0xd8, 0x17, 0x54, 0x77, 0xf0, 0x74, 0x44, 0x68, 0x28, 0xb2, - 0x59, 0x6a, 0x8e, 0xe9, 0x15, 0x9e, 0x67, 0xc9, 0x12, 0xb4, 0xb7, 0x4d, - 0xa7, 0xc2, 0x1c, 0x4c, 0xda, 0xda, 0xb8, 0x4b, 0xbc, 0xaa, 0x25, 0x76, - 0x39, 0x22, 0xf8, 0x22, 0xdb, 0x7f, 0x97, 0xa3, 0x27, 0x47, 0xd8, 0xb6, - 0xc7, 0x43, 0xc9, 0x6c, 0xa3, 0xa8, 0x93, 0xe3, 0x32, 0xbb, 0xff, 0xab, - 0xac, 0xe4, 0xfd, 0x3b, 0x52, 0x22, 0x33, 0x77, 0x0d, 0xe2, 0xa9, 0x85, - 0xde, 0xd4, 0x47, 0x94, 0x77, 0x8d, 0x90, 0xc9, 0x0d, 0x61, 0x0f, 0xda, - 0x1b, 0x45, 0x62, 0x2b, 0x0f, 0x63, 0xf9, 0xa8, 0xbe, 0x81, 0x4a, 0xf8, - 0x8c, 0xe1, 0xec, 0x84, 0x08, 0xd1, 0x3f, 0xf8, 0x1c, 0x5b, 0x9e, 0x00, - 0x23, 0xc3, 0x3f, 0x76, 0xfe, 0xe4, 0xfd, 0xa5, 0xc7, 0xd1, 0x8a, 0x35, - 0x4d, 0xb9, 0x6b, 0x5c, 0xcd, 0x80, 0x86, 0x03, 0x1f, 0xb3, 0x4f, 0xcc, - 0x84, 0xb6, 0xcd, 0xc7, 0x1d, 0xb8, 0x19, 0x76, 0x37, 0xf9, 0x6a, 0x12, - 0xcd, 0xe3, 0xa3, 0x55, 0x8e, 0xde, 0x0b, 0x88, 0x57, 0xc7, 0x8f, 0x6f, - 0xab, 0x2c, 0x2b, 0x4b, 0x8f, 0x49, 0x35, 0x6c, 0x45, 0x50, 0x9f, 0x81, - 0x03, 0xfe, 0xf1, 0xdf, 0xc7, 0x0d, 0xfd, 0x7c, 0x45, 0x75, 0xd1, 0x71, - 0xd5, 0x3c, 0x6d, 0xc3, 0xc6, 0xd3, 0x34, 0xd7, 0xc0, 0x5a, 0xea, 0x58, - 0x71, 0x47, 0x8c, 0xea, 0xf2, 0x9b, 0x14, 0xf3, 0xa1, 0xb5, 0x7e, 0x74, - 0xa2, 0xdd, 0x94, 0xf0, 0xfe, 0xb4, 0x34, 0xdb, 0x87, 0x7f, 0x1f, 0x20, - 0x97, 0x00, 0xe5, 0x34, 0x5c, 0x03, 0x08, 0x85, 0xcb, 0xf2, 0x5f, 0xd8, - 0xd0, 0x34, 0x63, 0x1e, 0xb3, 0x6e, 0xec, 0x16, 0x8b, 0x18, 0x60, 0x76, - 0xc9, 0xf8, 0xbd, 0x43, 0xde, 0x3a, 0x5a, 0xf7, 0xda, 0xf8, 0x48, 0x1e, - 0x28, 0x6b, 0xe7, 0x80, 0x77, 0x19, 0xda, 0x21, 0x48, 0xcd, 0xee, 0xdc, - 0x49, 0xc1, 0xdd, 0x8a, 0xc1, 0x65, 0x1c, 0x2f, 0x5d, 0x55, 0x25, 0x7e, - 0xdd, 0x2b, 0xf9, 0xbe, 0x28, 0x1d, 0x14, 0xeb, 0x12, 0xeb, 0x82, 0x80, - 0xba, 0xc5, 0x3b, 0x5b, 0x5e, 0x35, 0x5f, 0x13, 0x84, 0x68, 0x39, 0x21, - 0xf4, 0x4c, 0x17, 0x4c, 0x99, 0xbd, 0xc2, 0x54, 0x90, 0x94, 0x8e, 0xc5, - 0x4d, 0xb1, 0x2d, 0xde, 0x1d, 0x1b, 0x41, 0xf4, 0x99, 0xb4, 0x29, 0x2e, - 0xc9, 0x04, 0x32, 0x14, 0x08, 0x30, 0xbf, 0x56, 0xa1, 0x04, 0x3e, 0xd1, - 0x1e, 0xab, 0x7c, 0x89, 0xc4, 0x4c, 0xf0, 0x9c, 0xdb, 0x37, 0x37, 0xdd, - 0x9a, 0x37, 0xe0, 0x17, 0x04, 0x45, 0x17, 0x25, 0x83, 0x96, 0x26, 0x48, - 0xf0, 0x3b, 0x0f, 0xb9, 0x0f, 0x20, 0xd4, 0xef, 0x15, 0x93, 0x1c, 0xb6, - 0xd9, 0x46, 0x75, 0x50, 0x15, 0xfb, 0xe5, 0x6c, 0xd9, 0x97, 0xd0, 0xfa, - 0xbf, 0x01, 0xa8, 0x6d, 0x92, 0x0f, 0x86, 0xce, 0x4c, 0xa6, 0x7d, 0x18, - 0xa7, 0x65, 0xe4, 0x23, 0xd6, 0xbe, 0x07, 0x72, 0xf7, 0x78, 0x1d, 0x23, - 0x3c, 0xda, 0x79, 0x35, 0x71, 0x1d, 0xef, 0x7b, 0xb0, 0x3c, 0x2e, 0xc1, - 0x19, 0xaf, 0xe4, 0x90, 0xe8, 0x30, 0xfd, 0x98, 0xa9, 0xcc, 0x5f, 0xff, - 0xfd, 0x9d, 0xda, 0xcd, 0x10, 0x8b, 0x92, 0xde, 0x7b, 0x6f, 0x08, 0xbb, - 0xeb, 0x2a, 0xe5, 0x61, 0x46, 0x0c, 0xf7, 0x03, 0xc2, 0x96, 0x43, 0xfc, - 0xbd, 0x3c, 0x31, 0x2d, 0x14, 0x4a, 0x99, 0xb8, 0x9c, 0x67, 0x2e, 0x91, - 0x65, 0xfc, 0x86, 0x40, 0x1a, 0xb1, 0xff, 0x84, 0x83, 0x78, 0xec, 0x95, - 0x52, 0x50, 0x8a, 0x49, 0x08, 0x41, 0xb9, 0x34, 0xeb, 0x18, 0x9d, 0x91, - 0x29, 0xb8, 0x48, 0xae, 0x0a, 0x08, 0x67, 0xbc, 0xcc, 0xdd, 0xa6, 0x3c, - 0xe8, 0xd7, 0x92, 0x31, 0x88, 0x0c, 0xa1, 0x2b, 0x52, 0xae, 0x88, 0x64, - 0x71, 0xcb, 0x4f, 0xe2, 0x5f, 0x59, 0x82, 0x2c, 0x4e, 0xf6, 0x69, 0xd7, - 0x8b, 0x7a, 0xbe, 0x55, 0x23, 0x13, 0xb8, 0x3f, 0xb9, 0x9e, 0xbe, 0x24, - 0x8e, 0xdd, 0x0d, 0x29, 0xb7, 0x2f, 0x4c, 0xdb, 0xa1, 0x95, 0x7f, 0xbc, - 0x33, 0x77, 0xbb, 0xcb, 0x3e, 0x87, 0x42, 0x35, 0xb7, 0xbe, 0x4c, 0x02, - 0x88, 0x0e, 0xd5, 0x4f, 0xe2, 0x6d, 0xc2, 0xef, 0x97, 0x24, 0x6b, 0x3e, - 0xf8, 0xe7, 0x71, 0xf9, 0xa7, 0xd6, 0xda, 0x71, 0x0c, 0x9c, 0xd8, 0x32, - 0x5a, 0x02, 0x5b, 0x8d, 0xa6, 0x22, 0xa4, 0xc2, 0x16, 0x8d, 0xad, 0x54, - 0xb2, 0xd9, 0x6f, 0x86, 0x8c, 0xbd, 0x1d, 0xcf, 0xb6, 0x26, 0xc6, 0xde, - 0x9d, 0xb0, 0x5c, 0xa4, 0xe5, 0x26, 0x8d, 0xad, 0xe0, 0xe5, 0xca, 0xba, - 0x68, 0x32, 0x12, 0x27, 0x14, 0xf6, 0xb4, 0xf8, 0xdc, 0xef, 0xb2, 0xa3, - 0xe8, 0x7c, 0x66, 0x9c, 0xf8, 0xf3, 0x0a, 0xda, 0x94, 0x08, 0xc2, 0x1d, - 0x06, 0xb1, 0xc4, 0x50, 0xba, 0xcb, 0x51, 0x9e, 0x2a, 0x9c, 0x27, 0x68, - 0x3a, 0xea, 0x6e, 0xeb, 0x71, 0x45, 0xf6, 0x69, 0x6b, 0xdf, 0xd7, 0x0c, - 0x46, 0xd8, 0x4c, 0x38, 0x57, 0x3e, 0xea, 0x2e, 0xa0, 0x79, 0xbf, 0x7e, - 0x36, 0xd6, 0x92, 0x63, 0x17, 0x9d, 0x50, 0xeb, 0xa3, 0xa3, 0x1b, 0x60, - 0x46, 0xc1, 0xc0, 0x77, 0x99, 0x74, 0x0f, 0xbb, 0x85, 0x6e, 0x46, 0xdf, - 0x0c, 0xb3, 0xdb, 0x31, 0x92, 0x49, 0xed, 0xfc, 0x3d, 0x8b, 0x56, 0xd2, - 0x28, 0x59, 0xae, 0xa0, 0x67, 0x94, 0xf2, 0x67, 0x5e, 0x2c, 0x22, 0x77, - 0xe8, 0xf1, 0x7a, 0xaa, 0x22, 0x17, 0x41, 0x15, 0xa9, 0x7b, 0xd6, 0xa6, - 0x36, 0xe7, 0xd4, 0x22, 0x70, 0x49, 0xfe, 0x9f, 0xa7, 0x62, 0xea, 0x50, - 0xa6, 0x25, 0x1c, 0x19, 0x8c, 0x29, 0x53, 0x54, 0xcd, 0xf7, 0xb2, 0x7f, - 0xea, 0x42, 0x54, 0xb0, 0xe5, 0x68, 0x98, 0xe2, 0x61, 0xda, 0x6e, 0xa5, - 0x99, 0x4e, 0x6d, 0xf9, 0xa2, 0x15, 0x90, 0xaa, 0x8b, 0xb4, 0x32, 0xe1, - 0x6c, 0xf0, 0xcb, 0x23, 0x2e, 0xbe, 0xb8, 0xf8, 0xae, 0xa5, 0x1f, 0xb6, - 0xb5, 0xfe, 0x6f, 0xf5, 0x12, 0x00, 0x77, 0x5a, 0x67, 0x12, 0x9a, 0x51, - 0xe1, 0xa6, 0x0a, 0x57, 0x60, 0x3f, 0x17, 0x93, 0xaa, 0x03, 0x86, 0x17, - 0x33, 0x61, 0x18, 0xdf, 0xd9, 0x50, 0x6b, 0xd3, 0x7c, 0xd5, 0x17, 0xd2, - 0x57, 0xb4, 0x96, 0x4f, 0x8a, 0xd4, 0xf0, 0x4f, 0x1a, 0x80, 0x45, 0x47, - 0x11, 0x2a, 0xdf, 0x9c, 0xd9, 0x75, 0x87, 0xb2, 0x8c, 0x7d, 0x44, 0xed, - 0x40, 0x3e, 0x83, 0xd0, 0xdf, 0xfc, 0xcf, 0x10, 0x84, 0x1b, 0x23, 0xaf, - 0x7a, 0xdb, 0x11, 0xfc, 0x2c, 0x72, 0x5a, 0x92, 0xa1, 0x18, 0xdf, 0x21, - 0xa4, 0xc8, 0xe6, 0x6f, 0xf2, 0xbd, 0x94, 0x0a, 0xb8, 0xd4, 0x87, 0x2f, - 0xf7, 0x85, 0xbb, 0x1f, 0x1e, 0x24, 0xdd, 0x15, 0x89, 0xa0, 0x07, 0x11, - 0xb2, 0xe5, 0x06, 0xf0, 0xb5, 0x3c, 0x90, 0xc9, 0xd7, 0x07, 0x94, 0x74, - 0xeb, 0x5b, 0xc0, 0xa6, 0x3b, 0x51, 0xee, 0xf5, 0x92, 0xca, 0x38, 0xec, - 0x70, 0x05, 0x4d, 0x0f, 0x5d, 0xe8, 0x52, 0x6a, 0x9e, 0x9f, 0x5e, 0xea, - 0x50, 0x0e, 0x88, 0xcf, 0xc9, 0x99, 0x57, 0x7d, 0x4f, 0xb2, 0xf4, 0x87, - 0x3b, 0x31, 0x75, 0xa6, 0x35, 0xbd, 0x61, 0xcd, 0x03, 0xb8, 0xaf, 0x89, - 0xff, 0x19, 0x1d, 0x64, 0xb8, 0x03, 0xc3, 0x8b, 0x2e, 0xaa, 0x76, 0xd5, - 0xcd, 0xe5, 0xb7, 0x9b, 0xc4, 0xd1, 0xbb, 0xb5, 0x08, 0x1e, 0xf1, 0x55, - 0x94, 0xd4, 0x30, 0x3c, 0x88, 0x0c, 0x3b, 0x7a, 0x86, 0x2e, 0x61, 0xf5, - 0x6b, 0x27, 0xd2, 0xb7, 0xcc, 0x1d, 0xd8, 0x78, 0x8e, 0xb5, 0x10, 0xc7, - 0xfb, 0xc5, 0xf0, 0xc7, 0x7b, 0x4a, 0xf6, 0x9f, 0x59, 0x87, 0x66, 0x99, - 0xa5, 0x9c, 0x67, 0x51, 0xc8, 0xb8, 0x3e, 0xab, 0xd4, 0x17, 0x48, 0x17, - 0xe1, 0xb6, 0x8a, 0x06, 0x27, 0x5d, 0x51, 0xab, 0x40, 0x2e, 0x44, 0xb2, - 0x28, 0x80, 0xc4, 0x9d, 0x68, 0x44, 0xd5, 0xcf, 0xa1, 0xf1, 0xe6, 0x1d, - 0xfb, 0xc6, 0x7f, 0x47, 0x83, 0x46, 0xf7, 0x50, 0xa8, 0xe8, 0x39, 0x7a, - 0xa4, 0x7e, 0x08, 0x41, 0x2b, 0xe6, 0x22, 0x44, 0x94, 0x57, 0x8c, 0x84, - 0x0e, 0x97, 0xd5, 0x44, 0xd8, 0x3a, 0x43, 0xcb, 0xc1, 0xc8, 0xca, 0xd1, - 0xd8, 0xda, 0x65, 0x1f, 0xeb, 0x07, 0xd3, 0x7d, 0x81, 0xe8, 0x6d, 0x3f, - 0xb2, 0x59, 0xb8, 0xaa, 0x14, 0xb2, 0x83, 0x9a, 0xd9, 0x2d, 0xd9, 0x1f, - 0x1d, 0xdc, 0xe3, 0x01, 0x1d, 0x97, 0xe0, 0x25, 0x34, 0x51, 0x9b, 0x44, - 0x4e, 0x7c, 0x5d, 0x27, 0x10, 0x17, 0x19, 0x70, 0xe1, 0x88, 0x7b, 0x2e, - 0xa4, 0x2b, 0x95, 0x42, 0xd7, 0xce, 0xc8, 0xaf, 0x2d, 0x06, 0x6c, 0x06, - 0x53, 0x2f, 0x96, 0x6b, 0x86, 0xd5, 0x21, 0x69, 0xee, 0xec, 0x58, 0xee, - 0xfd, 0x4b, 0xc1, 0x10, 0x8f, 0xc2, 0x1a, 0x9e, 0xf5, 0x3b, 0x22, 0xf9, - 0x6b, 0x51, 0x67, 0x82, 0xf4, 0x51, 0x4b, 0x6d, 0x10, 0x45, 0xda, 0x64, - 0x0c, 0x55, 0x1d, 0x9f, 0x0b, 0x15, 0x60, 0x8f, 0x95, 0xdf, 0x3d, 0x82, - 0x1b, 0xd9, 0x11, 0xca, 0x59, 0xae, 0xff, 0xb5, 0x1b, 0x85, 0x5a, 0x99, - 0xd4, 0x22, 0x1f, 0x66, 0x41, 0xe1, 0x3f, 0xc7, 0x7d, 0xf1, 0x2c, 0x08, - 0x81, 0x53, 0x1b, 0x5c, 0xd9, 0xe5, 0x72, 0x8e, 0x61, 0x49, 0x41, 0xec, - 0x8d, 0x52, 0x36, 0x61, 0xe9, 0x96, 0x21, 0xaa, 0xaa, 0x4c, 0xb3, 0xbd, - 0x53, 0x28, 0xcc, 0xa8, 0x10, 0x8d, 0xd5, 0xef, 0xc3, 0x6a, 0x7d, 0x56, - 0x44, 0xbe, 0x42, 0x97, 0xa4, 0x7f, 0xf3, 0xb5, 0xdb, 0xb4, 0x1a, 0xda, - 0x26, 0x56, 0xe2, 0x0f, 0xf0, 0x42, 0x89, 0xe5, 0x95, 0xd5, 0x83, 0x54, - 0x54, 0x91, 0xdd, 0x9c, 0x13, 0x63, 0x81, 0xca, 0xf6, 0xa9, 0xd0, 0xa9, - 0x56, 0xa4, 0x45, 0xce, 0xff, 0xaf, 0x74, 0xc6, 0x38, 0xfd, 0x76, 0xc7, - 0x6f, 0xdf, 0x81, 0xc9, 0x6a, 0x6a, 0xe6, 0xae, 0xf9, 0x4d, 0xec, 0xc3, - 0x87, 0xfa, 0x11, 0xb8, 0x8e, 0x7b, 0x9c, 0x5d, 0x37, 0x75, 0x38, 0xba, - 0x6b, 0xea, 0x20, 0x38, 0x7d, 0x3d, 0x05, 0xe9, 0xd8, 0xf0, 0x21, 0xf3, - 0x27, 0xd8, 0xd3, 0x3e, 0xef, 0x3c, 0x27, 0x6b, 0x88, 0x07, 0x75, 0x24, - 0x63, 0xfc, 0x17, 0xd6, 0xb2, 0xc3, 0x9c, 0xe4, 0x39, 0x6a, 0x9a, 0x43, - 0xda, 0x57, 0x2b, 0xf6, 0xfa, 0x7b, 0x5a, 0x0d, 0x4f, 0xf0, 0x69, 0xfb, - 0x48, 0x1b, 0xa0, 0x6b, 0xa6, 0x6d, 0xaa, 0xc4, 0x2f, 0xd8, 0x48, 0x28, - 0x41, 0x36, 0xba, 0x95, 0x59, 0x5b, 0x0f, 0xdf, 0xbb, 0xc0, 0x7a, 0xa3, - 0x62, 0xd1, 0x1a, 0x63, 0x48, 0xfa, 0xff, 0x26, 0x3c, 0x1b, 0xb8, 0xbd, - 0x30, 0xd0, 0xa3, 0x6f, 0x4c, 0x7f, 0x4c, 0x67, 0x68, 0x4a, 0xc7, 0x5e, - 0xaf, 0x74, 0xe2, 0x18, 0xac, 0x7e, 0xb3, 0x19, 0x62, 0x95, 0xac, 0x9d, - 0x53, 0x40, 0xc9, 0xd5, 0x55, 0x39, 0x18, 0x26, 0x03, 0x7c, 0x81, 0x58, - 0x89, 0xbb, 0x4c, 0xa7, 0x65, 0x63, 0xb9, 0xfc, 0x23, 0x2f, 0x09, 0xa9, - 0x8c, 0x3c, 0x19, 0x48, 0x5f, 0x35, 0x3d, 0x42, 0xb7, 0x99, 0x61, 0xcd, - 0xe7, 0x15, 0x54, 0x80, 0xfa, 0x6a, 0x6e, 0x0d, 0xe7, 0x39, 0xec, 0x23, - 0x44, 0x9f, 0x33, 0x09, 0x29, 0xb1, 0xac, 0x35, 0xc0, 0x8a, 0xf9, 0x3a, - 0x4e, 0xcf, 0x92, 0x9a, 0x53, 0xde, 0xa0, 0x67, 0x9e, 0x71, 0xa5, 0x29, - 0x64, 0x25, 0x01, 0x3e, 0xfe, 0x9b, 0x21, 0x98, 0x5c, 0xa5, 0x95, 0x5d, - 0xe9, 0x8c, 0xb9, 0x15, 0xed, 0xe6, 0xbc, 0x7c, 0x04, 0x07, 0x2e, 0x19, - 0xb0, 0x4f, 0xcc, 0xf9, 0x05, 0x5c, 0x5b, 0xae, 0x53, 0x95, 0x7f, 0xf9, - 0x04, 0x2a, 0x8c, 0xe0, 0x67, 0x83, 0x3e, 0x0a, 0x5b, 0x9b, 0xe0, 0x66, - 0x87, 0x3b, 0x22, 0xed, 0xe5, 0x8b, 0xa6, 0x14, 0xea, 0x69, 0xdc, 0x05, - 0x6f, 0x72, 0xc6, 0x6a, 0x5a, 0xa5, 0x2c, 0x63, 0x79, 0x76, 0x7a, 0x11, - 0x29, 0x53, 0xa0, 0x75, 0x54, 0x64, 0xc4, 0x8b, 0xbe, 0xbf, 0xab, 0xa0, - 0x04, 0xae, 0x31, 0xbd, 0xf9, 0xa4, 0x09, 0xf0, 0x1a, 0xbc, 0xd9, 0x57, - 0x55, 0x2c, 0x67, 0xc0, 0xc7, 0xae, 0xea, 0xbc, 0x8c, 0xe3, 0x3d, 0xbb, - 0x67, 0xc9, 0xa6, 0x2d, 0x99, 0x24, 0xb0, 0xcc, 0xd7, 0x5a, 0x0b, 0x76, - 0x6c, 0x6d, 0x68, 0x41, 0xe3, 0xc8, 0xf8, 0x0d, 0x5f, 0xc8, 0x54, 0xf9, - 0x06, 0xa1, 0x47, 0xb1, 0x4e, 0x0a, 0xbd, 0x59, 0xd3, 0x31, 0x7e, 0xa2, - 0xf6, 0xf0, 0x16, 0xbf, 0x94, 0xa8, 0x06, 0x95, 0xf0, 0xe9, 0x13, 0x28, - 0x73, 0x9d, 0x89, 0xb5, 0xbb, 0x1f, 0xb8, 0xbe, 0x13, 0x71, 0xf2, 0x0b, - 0x7f, 0x1e, 0x8f, 0x24, 0xb7, 0xfc, 0x86, 0xbf, 0xda, 0x6d, 0x29, 0x82, - 0xfe, 0x09, 0xc2, 0x73, 0x0a, 0x75, 0x55, 0xef, 0x47, 0x9e, 0xd7, 0xb5, - 0x4d, 0xec, 0x34, 0xca, 0x18, 0x36, 0xcc, 0xa1, 0xbf, 0xac, 0xf7, 0xd1, - 0x0a, 0xe9, 0xd5, 0x49, 0x07, 0x55, 0x9f, 0x61, 0xe3, 0x8b, 0xe9, 0xa5, - 0x1b, 0xe5, 0x34, 0x13, 0x08, 0xbf, 0xf2, 0x18, 0x3d, 0x6d, 0x66, 0x09, - 0x11, 0xa3, 0x4a, 0x92, 0xb0, 0x49, 0x2e, 0xa7, 0x86, 0x2d, 0x5d, 0xaf, - 0x53, 0xda, 0x6a, 0x06, 0x13, 0xe7, 0xe3, 0x38, 0xd9, 0xa8, 0x1f, 0x4c, - 0x31, 0xae, 0x9b, 0xbf, 0x14, 0xaf, 0xa8, 0x61, 0x44, 0xe7, 0x9f, 0x85, - 0xad, 0x8b, 0xa1, 0xe0, 0xcf, 0x0f, 0x8d, 0xd6, 0xda, 0x86, 0x7e, 0x7f, - 0x44, 0xdd, 0xb8, 0x9c, 0x13, 0xe1, 0xfe, 0x05, 0x6c, 0xfb, 0xde, 0x1e, - 0xd4, 0x35, 0xe1, 0x5a, 0x0c, 0x89, 0xae, 0x97, 0x85, 0xaf, 0x9c, 0xd2, - 0xbe, 0xeb, 0xd8, 0xda, 0x29, 0xd9, 0x0c, 0x1b, 0x2f, 0x55, 0x7d, 0x16, - 0x0d, 0x83, 0xaf, 0xe0, 0x15, 0xc3, 0x48, 0x05, 0xdb, 0x05, 0x3f, 0x9c, - 0xc1, 0x60, 0xaf, 0xf1, 0x73, 0x90, 0xc8, 0xda, 0x0e, 0xbb, 0x8a, 0x7d, - 0x80, 0xfc, 0x01, 0x0d, 0xa7, 0xd2, 0x97, 0xe8, 0xef, 0xe4, 0x61, 0xee, - 0xd8, 0x53, 0xc1, 0xb8, 0x20, 0x34, 0x00, 0xee, 0xa5, 0xe3, 0x58, 0x6d, - 0x5d, 0x96, 0x24, 0xa0, 0xd7, 0x8c, 0x2c, 0x9f, 0x3f, 0x0b, 0xab, 0x95, - 0x28, 0xc3, 0xe7, 0xb5, 0x57, 0x82, 0xcb, 0x2f, 0x2d, 0xeb, 0x67, 0xf8, - 0x0a, 0xa8, 0xac, 0xc8, 0x0f, 0xfd, 0xc1, 0xdc, 0x56, 0x41, 0xd3, 0xd1, - 0x75, 0x99, 0x58, 0xa4, 0x85, 0x5d, 0x0b, 0x3a, 0x42, 0x90, 0xa7, 0x8c, - 0x6f, 0x3e, 0x8b, 0x73, 0x11, 0x38, 0xc4, 0xd3, 0x5b, 0xde, 0xe8, 0x36, - 0x20, 0xa4, 0xe7, 0x37, 0x0f, 0xc3, 0xb7, 0x3d, 0x10, 0x35, 0xd9, 0x80, - 0x72, 0x93, 0xc9, 0x59, 0x8b, 0xd5, 0xa9, 0xbb, 0x88, 0xfb, 0x1a, 0x85, - 0xa0, 0xea, 0xa8, 0x5f, 0x5c, 0x0a, 0xc5, 0xfc, 0xc2, 0x80, 0xf1, 0xa0, - 0xd7, 0x5d, 0x7e, 0x41, 0x6f, 0x44, 0xda, 0x69, 0xf3, 0xfb, 0xbc, 0x7d, - 0xfc, 0x72, 0x10, 0x14, 0xb9, 0x83, 0x70, 0xeb, 0xb0, 0x8e, 0x21, 0xdf, - 0xaf, 0x42, 0x9c, 0x93, 0xcc, 0xfb, 0x06, 0xc3, 0x09, 0x51, 0xa6, 0x13, - 0x69, 0x9a, 0x60, 0x5d, 0x01, 0xf9, 0x1f, 0xb9, 0x4b, 0x7d, 0xfb, 0xbe, - 0x15, 0x05, 0xeb, 0xff, 0x04, 0x84, 0xcc, 0x59, 0xc5, 0xe1, 0x36, 0x94, - 0x44, 0x64, 0x21, 0xb7, 0xbc, 0x5f, 0xb1, 0x7d, 0xa8, 0xb9, 0x79, 0xdd, - 0x42, 0x11, 0xf8, 0x1f, 0xd7, 0xf0, 0xeb, 0x5a, 0xf7, 0x20, 0xa6, 0x2b, - 0xee, 0x2d, 0x7f, 0x69, 0xd8, 0xe1, 0xcb, 0xb0, 0xe6, 0x98, 0xad, 0xca, - 0x45, 0x9d, 0xb8, 0x00, 0x20, 0x51, 0xd6, 0x74, 0xf6, 0xd7, 0x56, 0x9c, - 0xfc, 0x2c, 0xa5, 0x46, 0x58, 0xee, 0x0b, 0x7c, 0x73, 0x4f, 0x0d, 0xa8, - 0x9b, 0x8f, 0x04, 0xe1, 0x16, 0xc5, 0xb9, 0xd7, 0x12, 0x36, 0xca, 0xa8, - 0xb7, 0xdb, 0x23, 0x06, 0x4a, 0x25, 0xc1, 0x0e, 0x0a, 0x56, 0x0e, 0x92, - 0xc4, 0x61, 0x2a, 0x00, 0x0c, 0x47, 0xb1, 0x40, 0x47, 0x66, 0xfa, 0xe8, - 0x1a, 0x83, 0x75, 0x9b, 0xfc, 0xbf, 0xbb, 0xd3, 0xf3, 0x23, 0xe1, 0xd9, - 0x08, 0xa9, 0xa9, 0x04, 0x8d, 0x6f, 0xb4, 0x85, 0x67, 0xd1, 0x22, 0x99, - 0x71, 0x51, 0xa0, 0x02, 0x7e, 0xa9, 0x6f, 0xbe, 0x9c, 0xa1, 0x75, 0x59, - 0x40, 0x1e, 0x54, 0xd9, 0x22, 0x9b, 0xb5, 0xe6, 0x53, 0x72, 0xf5, 0x21, - 0xee, 0x60, 0xaa, 0xa2, 0x6d, 0xc1, 0xb4, 0x93, 0x8f, 0x3f, 0xe7, 0x8d, - 0xc0, 0x77, 0x13, 0xe7, 0x84, 0x53, 0xde, 0xda, 0xe5, 0x4d, 0xb0, 0x41, - 0xef, 0x89, 0x6f, 0x16, 0x1a, 0xe6, 0x4b, 0x9f, 0x09, 0x02, 0x2d, 0x9f, - 0x66, 0x42, 0xfc, 0xa4, 0x3c, 0xe1, 0xea, 0xb1, 0x52, 0xde, 0x8a, 0x9c, - 0x79, 0x55, 0x43, 0xeb, 0x35, 0xe2, 0x2d, 0x6d, 0x0a, 0xc8, 0x05, 0xf7, - 0x23, 0x89, 0xee, 0xd6, 0x14, 0xf5, 0x03, 0xac, 0xbc, 0x19, 0xc1, 0x8d, - 0xb9, 0x76, 0xa6, 0xf5, 0xd9, 0x6a, 0x12, 0x2f, 0xe6, 0xa0, 0xd9, 0x65, - 0xf7, 0x17, 0x35, 0x91, 0x4c, 0xe2, 0x5e, 0xb9, 0xb9, 0x56, 0xd0, 0x6a, - 0x9c, 0x09, 0x99, 0xcb, 0x53, 0x04, 0x7d, 0xe9, 0x6b, 0x65, 0x6c, 0xd0, - 0x17, 0x98, 0x98, 0x0b, 0x21, 0xac, 0xa5, 0x1f, 0xe0, 0xa8, 0x86, 0x82, - 0x3a, 0x61, 0x07, 0xfe, 0xa8, 0x07, 0x29, 0xaa, 0x31, 0x9a, 0x3d, 0x6b, - 0xdf, 0x9b, 0xf3, 0x24, 0x0b, 0x1f, 0x18, 0x66, 0xc4, 0x63, 0x67, 0xd4, - 0x08, 0xa7, 0xcc, 0xbb, 0x84, 0xa8, 0x86, 0x17, 0xe7, 0xda, 0xc2, 0x10, - 0xee, 0x15, 0x6d, 0x43, 0xb0, 0x53, 0x41, 0x4f, 0x75, 0xbd, 0xb8, 0x09, - 0xfd, 0xc0, 0xe8, 0xad, 0x50, 0x3e, 0xa1, 0xf6, 0xed, 0x1a, 0x47, 0xa0, - 0x8f, 0x28, 0xcb, 0xd7, 0xc5, 0xd8, 0x75, 0x8c, 0x55, 0x96, 0xeb, 0xab, - 0xec, 0x13, 0x82, 0x79, 0x72, 0x77, 0x5a, 0xc6, 0xfa, 0x56, 0x4e, 0xd0, - 0x50, 0x52, 0x90, 0xae, 0x6e, 0x27, 0x53, 0x1b, 0xc5, 0x60, 0xb5, 0xbe, - 0xcf, 0x39, 0x38, 0x46, 0xc6, 0x3a, 0x82, 0xa5, 0xff, 0xd8, 0x93, 0x26, - 0xac, 0x10, 0xa5, 0x8b, 0x8a, 0xfc, 0x19, 0x66, 0x64, 0x95, 0xbb, 0x83, - 0x9a, 0xdb, 0xa1, 0xca, 0x48, 0x87, 0xb0, 0x11, 0x4e, 0xec, 0xb8, 0x95, - 0xdb, 0xee, 0x3b, 0x6e, 0x35, 0x69, 0x11, 0xd1, 0x02, 0x5f, 0x7c, 0x12, - 0x46, 0xf6, 0xaf, 0xc9, 0xbf, 0x4d, 0xd3, 0x78, 0xbe, 0x8b, 0xa1, 0xab, - 0x32, 0x38, 0xa7, 0xdf, 0x7f, 0x6c, 0x27, 0xc6, 0x20, 0x0d, 0x38, 0xa8, - 0x5a, 0x69, 0x82, 0xe4, 0xea, 0x55, 0xef, 0x1e, 0xbb, 0x6d, 0x67, 0x19, - 0x99, 0x3a, 0xfb, 0xae, 0x5d, 0x81, 0xe6, 0xb0, 0x5a, 0x81, 0x23, 0x2a, - 0x39, 0x4e, 0xd7, 0x2a, 0x4b, 0xbd, 0x72, 0xf2, 0x66, 0x1c, 0xa8, 0x83, - 0x08, 0xb7, 0xc4, 0x64, 0x38, 0xf7, 0xf8, 0x91, 0xd6, 0xeb, 0x25, 0xcc, - 0x00, 0xc9, 0x33, 0xc4, 0x64, 0xb6, 0xaf, 0x29, 0xd2, 0x75, 0x3f, 0xb5, - 0xe9, 0x22, 0x18, 0xdc, 0xfe, 0x49, 0x30, 0x1e, 0xb8, 0xdf, 0x9f, 0x1a, - 0x47, 0xb6, 0xd8, 0xe9, 0x24, 0x9d, 0x25, 0x12, 0xfd, 0xb2, 0x2c, 0x51, - 0x89, 0xc2, 0xc1, 0x5c, 0x71, 0x0c, 0x3a, 0xf4, 0x53, 0x09, 0x6d, 0xca, - 0xc0, 0x26, 0x8b, 0x72, 0xa8, 0x0e, 0x91, 0x37, 0x30, 0x27, 0x21, 0x97, - 0x20, 0x70, 0x30, 0xd8, 0x86, 0x1a, 0xe9, 0x3e, 0xe4, 0x2a, 0x4b, 0x17, - 0xf1, 0xbb, 0xd6, 0xaa, 0x05, 0xc2, 0x53, 0x2f, 0xdd, 0x2a, 0x76, 0x31, - 0xf5, 0x40, 0x91, 0xe5, 0x83, 0x42, 0xf9, 0x4d, 0xb8, 0x59, 0x88, 0x7b, - 0x08, 0xe8, 0x4f, 0xaf, 0xd8, 0xb8, 0x40, 0x3f, 0xb1, 0x24, 0xe6, 0x8d, - 0xf0, 0xd5, 0xe9, 0xc0, 0x1f, 0xe8, 0x4a, 0xfc, 0xa9, 0xb7, 0x56, 0xeb, - 0x04, 0xb5, 0x95, 0xb7, 0x38, 0xbc, 0x73, 0x04, 0xd7, 0xbf, 0x89, 0xce, - 0x76, 0x7f, 0x60, 0x65, 0x1b, 0x06, 0x02, 0x3a, 0xff, 0x1e, 0xfa, 0x5c, - 0x21, 0xac, 0xd6, 0x1f, 0x19, 0x3c, 0x6d, 0x50, 0x21, 0xfa, 0x19, 0x72, - 0x0e, 0xfc, 0x01, 0x69, 0xf2, 0x84, 0xa4, 0x42, 0xbc, 0x3e, 0x22, 0x49, - 0x45, 0x2d, 0x0e, 0xa1, 0xda, 0x64, 0x6b, 0xc7, 0xd5, 0xc1, 0x01, 0xde, - 0x6c, 0x80, 0x71, 0xbc, 0x4b, 0x7e, 0x25, 0xcd, 0x86, 0x4d, 0x69, 0x75, - 0x4a, 0xc4, 0xa2, 0x3d, 0x9f, 0x81, 0x7d, 0xb3, 0x82, 0xe2, 0x6f, 0x84, - 0xa8, 0xdf, 0x50, 0x44, 0x58, 0xcf, 0x74, 0x80, 0x61, 0x06, 0xe0, 0xbb, - 0x65, 0xb8, 0x8e, 0x6b, 0x93, 0xbd, 0xb7, 0xdd, 0xb9, 0x3a, 0x88, 0x93, - 0x50, 0x5b, 0x15, 0x27, 0xdd, 0x6b, 0xbb, 0x93, 0xa1, 0x52, 0xeb, 0x40, - 0xa1, 0xfa, 0xdb, 0x0e, 0xfe, 0x9a, 0x01, 0x93, 0xc5, 0x05, 0x48, 0x72, - 0xd0, 0xca, 0xd3, 0xfb, 0xe6, 0x18, 0x0a, 0x62, 0x6f, 0x2e, 0x28, 0x90, - 0xb4, 0xac, 0x38, 0xe2, 0xb0, 0x1e, 0xed, 0x76, 0xf1, 0x61, 0xd0, 0xb1, - 0x9b, 0x83, 0x3c, 0xb1, 0x4b, 0xa9, 0x02, 0x1e, 0xfe, 0xc1, 0x65, 0x60, - 0x46, 0xf7, 0x44, 0x39, 0x56, 0x3e, 0x64, 0xe3, 0x88, 0xdc, 0xfa, 0x21, - 0x35, 0x36, 0x22, 0x28, 0x7b, 0x08, 0xfe, 0x8c, 0xc6, 0xba, 0xb9, 0xd8, - 0xa5, 0x28, 0x7a, 0x20, 0x8f, 0xaf, 0x07, 0xed, 0x07, 0x9e, 0x60, 0x2f, - 0x3a, 0x30, 0x15, 0xb7, 0x90, 0x58, 0xef, 0x0e, 0xd4, 0x45, 0x45, 0xfd, - 0x6d, 0xfb, 0xff, 0x33, 0xe5, 0xfb, 0x1e, 0x6a, 0x96, 0x76, 0x0a, 0x03, - 0xc2, 0x6a, 0x8d, 0x97, 0x39, 0x4d, 0x3f, 0x55, 0x49, 0xfa, 0x05, 0xbf, - 0x51, 0x2a, 0x43, 0xb1, 0xe9, 0x5f, 0x39, 0xa6, 0xdb, 0xb8, 0xd6, 0xca, - 0xa0, 0x48, 0xcf, 0x65, 0x21, 0x20, 0xc5, 0xaa, 0x11, 0x06, 0x2b, 0x77, - 0xb3, 0x7b, 0xe8, 0xa9, 0x0b, 0xd7, 0x6b, 0x68, 0x83, 0x41, 0xa3, 0xb8, - 0x1c, 0xaa, 0x6c, 0xc3, 0x59, 0x6a, 0x23, 0xb0, 0x7c, 0x5c, 0xc4, 0xa9, - 0xcb, 0x26, 0x72, 0x86, 0xf9, 0x6a, 0xcc, 0xa7, 0x70, 0xf5, 0xee, 0x39, - 0xe0, 0x88, 0x47, 0xba, 0xe0, 0xf9, 0xaf, 0xb2, 0xa1, 0x7d, 0xc5, 0x60, - 0xbd, 0x19, 0xfd, 0x81, 0x48, 0x8e, 0x46, 0x25, 0x81, 0xe2, 0x2c, 0xb7, - 0xc4, 0xf3, 0x35, 0xaa, 0xb1, 0x56, 0x85, 0x81, 0xa2, 0x87, 0x18, 0x51, - 0x85, 0x69, 0x96, 0xa4, 0x0d, 0xa3, 0x42, 0xa8, 0x7f, 0x1f, 0x82, 0xc0, - 0xe0, 0x51, 0xf2, 0xde, 0x92, 0x36, 0xa8, 0x21, 0xbc, 0x75, 0x34, 0xd1, - 0x7e, 0xfc, 0xc6, 0x3b, 0x35, 0xf1, 0x76, 0xe7, 0xbb, 0xaa, 0x84, 0x31, - 0x86, 0xd9, 0x56, 0xa7, 0xf0, 0xc6, 0x19, 0x7d, 0x65, 0xb5, 0x8c, 0xf3, - 0x62, 0x6d, 0x0e, 0xbd, 0xff, 0x3c, 0x74, 0x1a, 0x67, 0xa6, 0xc4, 0x60, - 0x4e, 0x86, 0xd7, 0x76, 0x0d, 0x9c, 0xba, 0x81, 0x1a, 0xbd, 0xde, 0x82, - 0x1b, 0xf5, 0x8c, 0x65, 0x59, 0x20, 0xa9, 0x3d, 0x8c, 0x1e, 0x86, 0x07, - 0x6b, 0x8e, 0x70, 0xf2, 0xce, 0x2e, 0xf1, 0x19, 0x60, 0xe9, 0xc4, 0x3d, - 0x0a, 0x07, 0x25, 0x2f, 0x21, 0xff, 0x5a, 0xe9, 0x40, 0x78, 0x52, 0x25, - 0x0a, 0x78, 0x42, 0x07, 0xa2, 0xbb, 0x59, 0xf8, 0x6a, 0xcb, 0xd6, 0xe0, - 0x8d, 0x3d, 0xa1, 0x6e, 0xae, 0x7f, 0x32, 0x60, 0xd1, 0xb0, 0x76, 0xcc, - 0x85, 0xb0, 0xbf, 0x92, 0x05, 0xb4, 0x4f, 0x64, 0x84, 0xdf, 0x68, 0xe6, - 0x55, 0x27, 0x97, 0x68, 0x2d, 0xe1, 0xf0, 0x55, 0xa4, 0xfe, 0xf9, 0xb1, - 0x72, 0x3c, 0x19, 0x0b, 0xc7, 0x6f, 0x04, 0x40, 0x4b, 0x28, 0xda, 0x16, - 0x5e, 0xc7, 0xeb, 0x54, 0x5e, 0x14, 0x36, 0x05, 0x50, 0x91, 0xb2, 0x57, - 0xa9, 0x3f, 0x75, 0x32, 0x9d, 0x82, 0x13, 0x41, 0x57, 0xdd, 0xf0, 0x29, - 0xaf, 0xb5, 0x1a, 0x4d, 0x5d, 0x6a, 0x21, 0x02, 0x85, 0xf9, 0x5d, 0x16, - 0xef, 0x90, 0x7e, 0x0d, 0xf0, 0x6e, 0x04, 0x2a, 0xa7, 0x92, 0x40, 0xa3, - 0x64, 0x7c, 0xb2, 0xbc, 0x93, 0xe0, 0xad, 0x26, 0x64, 0x8d, 0xa1, 0x88, - 0x0e, 0xef, 0xcf, 0x13, 0x78, 0x07, 0xd2, 0x2a, 0x4e, 0x19, 0xcc, 0x62, - 0xf4, 0x38, 0x30, 0x92, 0xef, 0x7f, 0x66, 0xc9, 0x58, 0x4d, 0xab, 0xdb, - 0x64, 0xe2, 0x54, 0x76, 0xa8, 0x84, 0x70, 0xda, 0x1a, 0x97, 0xd9, 0xc0, - 0xf4, 0xc1, 0x7a, 0xc4, 0xa9, 0x38, 0x5d, 0xf4, 0xa6, 0x26, 0xce, 0xc7, - 0x8b, 0x6f, 0xa8, 0xa8, 0x04, 0x0c, 0x05, 0x2e, 0x93, 0x46, 0x5c, 0x06, - 0x86, 0x8d, 0xb6, 0xad, 0xf4, 0xb8, 0x9a, 0xa4, 0x32, 0x23, 0x2e, 0x53, - 0xfc, 0x3b, 0xc3, 0x6e, 0x20, 0xbd, 0xd5, 0x44, 0xce, 0x71, 0xf7, 0x69, - 0x3b, 0xb6, 0xfd, 0x3a, 0xac, 0x03, 0x9b, 0x57, 0x76, 0x12, 0x12, 0x93, - 0x3e, 0x4e, 0x93, 0x39, 0xcf, 0x33, 0xda, 0x20, 0x5c, 0xa2, 0xae, 0xb5, - 0x0d, 0x5c, 0xff, 0xd4, 0xa8, 0x1d, 0xac, 0x48, 0x21, 0xf6, 0x5f, 0xc9, - 0xdf, 0x3d, 0xe3, 0x00, 0x57, 0x61, 0xe6, 0xa7, 0xb0, 0x83, 0x46, 0x5d, - 0xe6, 0x9e, 0x54, 0x0c, 0xa5, 0xde, 0xcf, 0xe3, 0x6b, 0xfa, 0xce, 0x0a, - 0x4e, 0x89, 0x08, 0x75, 0x77, 0x09, 0xbc, 0xc0, 0x9c, 0xbe, 0x78, 0x50, - 0x35, 0x38, 0x30, 0x78, 0x7b, 0xdc, 0xbc, 0x82, 0xfa, 0x20, 0xd1, 0xe5, - 0x4d, 0x6f, 0x50, 0xfa, 0xe0, 0x49, 0x08, 0x60, 0xeb, 0x2b, 0x62, 0xed, - 0x79, 0xe6, 0x3f, 0xd3, 0x95, 0x7e, 0xcd, 0x7c, 0xd6, 0xb1, 0x00, 0x1b, - 0x19, 0x57, 0xa6, 0xcf, 0x41, 0x62, 0x17, 0x9e, 0x66, 0x07, 0x93, 0x2b, - 0x27, 0xa1, 0x01, 0x65, 0xc5, 0xde, 0x50, 0x05, 0xc9, 0x93, 0x33, 0x81, - 0xa1, 0xef, 0xeb, 0x0c, 0xec, 0x7f, 0xa9, 0xb6, 0x46, 0x92, 0x0d, 0x1a, - 0x78, 0x4f, 0xbc, 0xc2, 0xe1, 0x03, 0xcb, 0x3a, 0x9c, 0xb9, 0xec, 0xf8, - 0xa7, 0x34, 0xa0, 0x95, 0xc6, 0xa3, 0xd5, 0x68, 0xf2, 0x8d, 0xe5, 0x2d, - 0x9c, 0x1c, 0x3c, 0x94, 0xbb, 0x54, 0xd8, 0x81, 0x75, 0xa6, 0x0a, 0x12, - 0x64, 0x82, 0x3e, 0x86, 0xea, 0xb1, 0xd4, 0x4e, 0xbb, 0xe7, 0x29, 0x82, - 0x14, 0x62, 0x9c, 0x3f, 0x81, 0x3a, 0xe6, 0xf9, 0x6b, 0xa6, 0x24, 0xb2, - 0xff, 0x02, 0x8b, 0x10, 0xa4, 0x23, 0x3a, 0x61, 0x0a, 0x01, 0xea, 0xe7, - 0x30, 0x52, 0x1f, 0xba, 0xc9, 0x20, 0x72, 0x8c, 0x30, 0xb8, 0x57, 0xfc, - 0x3b, 0x0d, 0x74, 0x02, 0x46, 0x9b, 0x6c, 0x82, 0x31, 0x28, 0xf1, 0x52, - 0x7a, 0x1d, 0x82, 0x89, 0xa4, 0xff, 0xa0, 0x96, 0xc3, 0xba, 0x1c, 0x4f, - 0x03, 0x18, 0x12, 0x42, 0x57, 0x9e, 0xb3, 0x7c, 0x38, 0x4d, 0x4a, 0x2c, - 0xb2, 0x89, 0x6a, 0x29, 0x17, 0x90, 0xc5, 0xff, 0xa6, 0x85, 0x5b, 0x85, - 0xb9, 0x00, 0xb8, 0xba, 0x3c, 0xf8, 0x9e, 0xc3, 0x7e, 0x8d, 0x37, 0xc4, - 0x27, 0x43, 0x5f, 0xda, 0x68, 0x83, 0xb4, 0x34, 0xce, 0xce, 0xb2, 0x4e, - 0x52, 0xab, 0x26, 0x02, 0xf6, 0x33, 0x98, 0xc0, 0xc6, 0x02, 0x25, 0xda, - 0x23, 0x4c, 0x18, 0x66, 0xb8, 0x41, 0x7a, 0x6f, 0xb3, 0xdb, 0x47, 0x7e, - 0x56, 0x64, 0xcf, 0x5e, 0x73, 0x7f, 0x4d, 0xc4, 0x1b, 0xc3, 0x76, 0x56, - 0xfb, 0x4a, 0xd8, 0x76, 0xef, 0x31, 0xd9, 0x0e, 0xe6, 0xc7, 0x95, 0xd4, - 0x7d, 0xb4, 0x20, 0x5a, 0x5b, 0x37, 0xe3, 0x39, 0x8d, 0x96, 0xf0, 0x1f, - 0x50, 0x8c, 0x2a, 0xab, 0x50, 0x7d, 0x6b, 0x70, 0x98, 0x77, 0x59, 0x23, - 0xcb, 0xa6, 0xa4, 0xf6, 0x4d, 0x07, 0x46, 0xa1, 0xd3, 0x6b, 0x9d, 0xea, - 0xa9, 0x67, 0x77, 0xfe, 0xf0, 0xbe, 0x55, 0x39, 0x9e, 0x8b, 0xbb, 0x09, - 0xb6, 0x70, 0xc7, 0x0e, 0x99, 0x8c, 0x6b, 0x91, 0xef, 0x83, 0xdb, 0x34, - 0x69, 0x54, 0xf9, 0x63, 0xda, 0x98, 0x34, 0x56, 0xab, 0x83, 0xda, 0x72, - 0x44, 0x03, 0x2e, 0x07, 0x18, 0xbf, 0xe3, 0x5e, 0x26, 0xc4, 0xb6, 0x54, - 0xfe, 0xe9, 0x87, 0xb8, 0x09, 0x4b, 0xfe, 0x5c, 0x89, 0x89, 0x7d, 0x58, - 0x14, 0xbb, 0x53, 0x0c, 0x9a, 0x6e, 0x51, 0xbb, 0x8f, 0x8f, 0xaa, 0xda, - 0xea, 0x47, 0xcb, 0x4e, 0x41, 0x01, 0x24, 0x4c, 0xe2, 0xac, 0xd9, 0xbb, - 0x31, 0x77, 0x22, 0xd2, 0xad, 0x49, 0x79, 0x4d, 0x2d, 0x89, 0xb9, 0xfa, - 0x7f, 0xd7, 0x31, 0x17, 0x46, 0x3f, 0xd9, 0x4c, 0x55, 0x51, 0x8a, 0xd3, - 0x52, 0xe1, 0x88, 0x3a, 0x07, 0x14, 0xaa, 0x9f, 0xda, 0xec, 0x52, 0xb3, - 0x06, 0xb0, 0xb0, 0x25, 0xdc, 0x39, 0x62, 0x04, 0x10, 0xe0, 0xc3, 0x11, - 0xe6, 0x60, 0x1d, 0xc5, 0x8a, 0x99, 0x37, 0xb9, 0x52, 0x0a, 0x12, 0xdb, - 0xdb, 0xe2, 0x81, 0xd0, 0x76, 0xa4, 0xcb, 0x87, 0x27, 0x4d, 0x5b, 0x21, - 0xe4, 0x04, 0xc9, 0x2d, 0x90, 0xc8, 0xb0, 0x1c, 0xa4, 0x90, 0x6c, 0x53, - 0x6c, 0xe9, 0x8c, 0x8d, 0xd4, 0x7d, 0xa2, 0x25, 0xeb, 0xa7, 0xe9, 0xf2, - 0x9c, 0x13, 0xbb, 0x3a, 0x91, 0x58, 0x43, 0x54, 0x19, 0x4d, 0xb2, 0xe8, - 0xaf, 0x2e, 0x78, 0x8b, 0xea, 0x87, 0xc2, 0xd4, 0xa3, 0x6c, 0x80, 0x12, - 0x66, 0xe2, 0xd7, 0x1e, 0x8a, 0xb9, 0xa2, 0xf4, 0x04, 0xa3, 0x00, 0x21, - 0xcd, 0x3c, 0xf1, 0xd2, 0x10, 0xa2, 0x12, 0xe8, 0x98, 0xad, 0x7c, 0x36, - 0x03, 0x85, 0x97, 0x2f, 0x42, 0xf3, 0x82, 0x3a, 0x28, 0xd0, 0xce, 0x20, - 0x5a, 0x7b, 0xfa, 0x03, 0x81, 0x4c, 0xce, 0x19, 0x41, 0xb9, 0x6f, 0x03, - 0x85, 0x39, 0xc5, 0x2b, 0x4d, 0x0e, 0x82, 0xcb, 0xf9, 0x95, 0xa4, 0x3b, - 0x58, 0x01, 0xf3, 0xea, 0xfd, 0x4c, 0x6d, 0x03, 0xd0, 0x50, 0x15, 0xa5, - 0x18, 0xef, 0x91, 0xaf, 0x7f, 0xd3, 0x1b, 0x32, 0x58, 0x11, 0x68, 0xaf, - 0x16, 0xae, 0xe3, 0x4a, 0xf6, 0x1b, 0xa5, 0x11, 0x58, 0xe8, 0x0f, 0x7c, - 0x87, 0x6c, 0xba, 0x9c, 0x92, 0x66, 0x4d, 0xaf, 0x7f, 0x60, 0xf2, 0x62, - 0x02, 0xbc, 0xaa, 0xa8, 0xab, 0xfa, 0x0d, 0xbf, 0x11, 0xa6, 0x2e, 0xc4, - 0x1c, 0xb7, 0xe2, 0x0a, 0x28, 0x11, 0xc7, 0xed, 0x89, 0x83, 0xbb, 0x44, - 0x03, 0x30, 0x9d, 0xe6, 0x1d, 0x83, 0xdf, 0x97, 0x34, 0x42, 0x96, 0xca, - 0xfb, 0x54, 0xb8, 0x49, 0x78, 0xe3, 0x90, 0x08, 0xb2, 0x4a, 0x3d, 0x96, - 0x18, 0x68, 0x7d, 0x82, 0x69, 0xcd, 0x8b, 0xab, 0xae, 0x37, 0x13, 0x0a, - 0x0f, 0x5f, 0x52, 0x75, 0xde, 0x4d, 0xde, 0x84, 0xbb, 0x5a, 0x33, 0x54, - 0x1b, 0xfa, 0x35, 0x98, 0xd7, 0xa1, 0x3c, 0x7e, 0x90, 0x92, 0x98, 0x7f, - 0x7a, 0xa5, 0x40, 0xee, 0x02, 0x14, 0x9f, 0x0b, 0xe3, 0x10, 0x80, 0x13, - 0x8a, 0x11, 0x6c, 0xe4, 0xcc, 0x00, 0x67, 0x73, 0x3f, 0x95, 0x4b, 0x42, - 0x84, 0x8c, 0x91, 0x1c, 0x0e, 0x96, 0x30, 0x87, 0xc8, 0xb7, 0xbe, 0x65, - 0xa5, 0xe9, 0x61, 0x54, 0x3d, 0x3e, 0x64, 0xae, 0x16, 0x0b, 0xbe, 0x0d, - 0x9a, 0xf5, 0x4b, 0xce, 0x3e, 0x84, 0xa2, 0x40, 0x48, 0x20, 0xa6, 0x64, - 0x19, 0x3b, 0x2c, 0x9b, 0xe4, 0xb4, 0x2f, 0x49, 0x98, 0xd1, 0xe7, 0x66, - 0x4f, 0xe6, 0x28, 0x34, 0x24, 0x38, 0xe2, 0xd9, 0xc7, 0x78, 0x3d, 0x74, - 0xf3, 0xf4, 0xd2, 0x91, 0x78, 0xb8, 0xdc, 0x6f, 0x2d, 0x90, 0x2c, 0x2d, - 0x35, 0x46, 0xad, 0x44, 0xc5, 0x78, 0x45, 0x73, 0x0b, 0xb5, 0x63, 0xa8, - 0x91, 0x49, 0xf4, 0x80, 0xae, 0xee, 0x9e, 0xa8, 0xf3, 0x4e, 0x36, 0x58, - 0x66, 0x51, 0x78, 0xda, 0x27, 0x37, 0xa7, 0xfd, 0x94, 0x5b, 0x02, 0x93, - 0xc6, 0x43, 0x85, 0x04, 0xd1, 0x3d, 0xad, 0xd3, 0x4c, 0x4f, 0x07, 0xf6, - 0xb0, 0x19, 0x2c, 0x67, 0x81, 0x91, 0xcb, 0xf7, 0x4f, 0xe3, 0x96, 0xfa, - 0x99, 0x5d, 0xd8, 0x2f, 0x7f, 0x41, 0x59, 0x80, 0x60, 0x19, 0x8c, 0x4c, - 0x49, 0xf1, 0x25, 0x16, 0x9c, 0x65, 0x68, 0xef, 0xe8, 0x80, 0x2e, 0x0f, - 0xd2, 0xf7, 0x0f, 0x7f, 0x60, 0x5c, 0x64, 0xe5, 0x8f, 0x5c, 0x6c, 0x2b, - 0xdb, 0xdc, 0xf2, 0x81, 0x5d, 0x5f, 0x19, 0xaf, 0xd1, 0x65, 0x0a, 0xc1, - 0x0b, 0xf1, 0x64, 0x87, 0x82, 0x29, 0xd1, 0xc1, 0xf6, 0x74, 0xba, 0x58, - 0x88, 0xfc, 0x25, 0x3a, 0x8f, 0x0d, 0x84, 0x62, 0x61, 0x0a, 0x49, 0x8a, - 0xe4, 0x09, 0x62, 0xfc, 0x9a, 0xd0, 0x42, 0x80, 0x7d, 0xaa, 0xe5, 0x39, - 0x69, 0x23, 0x75, 0x74, 0x21, 0xea, 0xcc, 0x9b, 0x1c, 0xa8, 0x05, 0xaf, - 0xda, 0x4e, 0x08, 0xeb, 0xc1, 0xa2, 0x0c, 0x68, 0x59, 0x17, 0xaa, 0xbe, - 0x15, 0x1c, 0x05, 0x7e, 0x5f, 0x81, 0xa7, 0x6a, 0x44, 0x80, 0x39, 0x26, - 0xfc, 0x9a, 0xe6, 0x13, 0xf2, 0x37, 0xbb, 0x83, 0x7c, 0x12, 0xae, 0x98, - 0x52, 0x16, 0xad, 0x65, 0xf4, 0x50, 0x08, 0x50, 0x92, 0xf2, 0x58, 0x2c, - 0x44, 0x98, 0xfa, 0x02, 0x43, 0x12, 0x49, 0xf5, 0x0b, 0xf6, 0x41, 0x4b, - 0x20, 0xf0, 0x7b, 0x54, 0x4e, 0xfb, 0x11, 0x58, 0x3f, 0x9a, 0xa7, 0x8b, - 0x0f, 0x33, 0x2f, 0xec, 0x5d, 0x74, 0xa5, 0x05, 0x38, 0x2e, 0x9d, 0x92, - 0x06, 0xad, 0x23, 0xe9, 0x4f, 0x1b, 0xeb, 0x5b, 0x7f, 0xb1, 0x3f, 0x11, - 0x3e, 0x67, 0x30, 0x67, 0xdf, 0xae, 0x15, 0xcb, 0x31, 0xce, 0xec, 0xd3, - 0x7a, 0x01, 0x38, 0xbf, 0x4f, 0x15, 0x60, 0x7e, 0x06, 0xb3, 0xde, 0x5e, - 0x79, 0xa3, 0x26, 0x3d, 0xcd, 0x81, 0xfa, 0xbc, 0x2a, 0x3b, 0xac, 0x27, - 0x0f, 0xd1, 0x27, 0xfb, 0xc2, 0x36, 0xf8, 0x17, 0xc5, 0x33, 0xa2, 0x8b, - 0x19, 0xde, 0xd4, 0x83, 0x00, 0x4c, 0x39, 0xaf, 0x47, 0xdd, 0x86, 0x24, - 0x2b, 0xf1, 0xe2, 0x15, 0x6a, 0x4a, 0x1f, 0xb9, 0x28, 0x15, 0x23, 0x64, - 0x1f, 0xb9, 0xfb, 0xfb, 0xd5, 0xa7, 0x85, 0x88, 0x8c, 0x5b, 0x3f, 0x1a, - 0xe2, 0x35, 0xe3, 0xeb, 0x08, 0x55, 0xa6, 0x9c, 0xed, 0x7f, 0x09, 0x10, - 0xd2, 0xa8, 0x8e, 0xed, 0xcc, 0xe0, 0xfb, 0x2e, 0xe7, 0x3d, 0x65, 0x6f, - 0x00, 0x1c, 0x16, 0x62, 0x9d, 0xda, 0x55, 0x05, 0x1f, 0x03, 0xb7, 0xef, - 0x2b, 0xd6, 0x9a, 0xc9, 0x54, 0x1d, 0x9f, 0x04, 0xae, 0xf2, 0xea, 0x3d, - 0x16, 0x37, 0x33, 0x03, 0x7e, 0xf5, 0x47, 0xbe, 0x35, 0xd1, 0x8b, 0x83, - 0x84, 0x3f, 0x85, 0xfb, 0x95, 0xc5, 0x44, 0x24, 0x6e, 0x66, 0xbb, 0x3e, - 0x1a, 0xca, 0x82, 0xcd, 0xe3, 0xa5, 0xe4, 0xdb, 0x69, 0x51, 0x68, 0x84, - 0x4e, 0x2b, 0x50, 0x3f, 0xe9, 0xb2, 0x3d, 0xf4, 0xb1, 0xb1, 0xc3, 0x47, - 0x3d, 0xc6, 0xc7, 0x02, 0x49, 0xf9, 0x31, 0x72, 0xd1, 0xac, 0x95, 0x77, - 0x76, 0x2a, 0x43, 0x84, 0xe8, 0xd1, 0x8a, 0xd9, 0xb1, 0x40, 0x60, 0xb9, - 0xf0, 0x42, 0xc8, 0x73, 0x14, 0x4c, 0xbb, 0xd5, 0xbc, 0x51, 0x6a, 0xf4, - 0x1d, 0x39, 0x39, 0xe3, 0xaa, 0x8d, 0xc6, 0x77, 0xd2, 0x66, 0xb3, 0xb0, - 0x2b, 0xdb, 0xb1, 0x25, 0xdc, 0x0c, 0x53, 0x2f, 0x3a, 0xca, 0x1d, 0x32, - 0x79, 0x8a, 0xfb, 0x45, 0x2b, 0x02, 0x15, 0x52, 0xc9, 0x5b, 0xa2, 0xe5, - 0x3c, 0x4c, 0xa3, 0x54, 0x63, 0x81, 0x78, 0x60, 0x64, 0x2a, 0x33, 0x48, - 0xa8, 0x31, 0x4c, 0x82, 0x94, 0xf0, 0xad, 0xba, 0x7e, 0x8c, 0x9a, 0x4c, - 0x55, 0x97, 0xf0, 0xa1, 0xa0, 0xed, 0xea, 0xf4, 0x59, 0xe7, 0x75, 0x17, - 0x21, 0x18, 0x47, 0xb8, 0x97, 0xa3, 0x6d, 0x52, 0x01, 0x67, 0xfe, 0xc2, - 0xca, 0x7b, 0xcd, 0x07, 0xad, 0xf6, 0x46, 0x31, 0xce, 0x14, 0x6f, 0x15, - 0xf8, 0x1a, 0x9d, 0xae, 0x16, 0xa5, 0xd7, 0x00, 0x13, 0x98, 0x53, 0x61, - 0x7f, 0x70, 0x03, 0xf8, 0xac, 0xcb, 0x67, 0x61, 0x5b, 0x9c, 0xec, 0x4d, - 0x69, 0x70, 0x50, 0x92, 0xe9, 0x31, 0x12, 0xfd, 0xfd, 0x4c, 0xa6, 0xcb, - 0xa5, 0xee, 0x2a, 0x8c, 0xe8, 0xb1, 0xe7, 0x7b, 0x67, 0x3a, 0x57, 0xad, - 0xc9, 0x55, 0xca, 0x5b, 0xbf, 0x7d, 0x32, 0x39, 0x10, 0x61, 0x28, 0xff, - 0xc2, 0xc7, 0x16, 0xa8, 0x38, 0xc3, 0xf8, 0x43, 0x31, 0xcd, 0x64, 0x29, - 0xda, 0x39, 0xbd, 0x67, 0xe1, 0xb9, 0x9e, 0xc5, 0x8f, 0x4d, 0x93, 0x11, - 0xac, 0x97, 0xde, 0xa2, 0x01, 0x1f, 0x12, 0xaf, 0xa0, 0x3f, 0xa8, 0xba, - 0x0f, 0x72, 0xab, 0xca, 0xb9, 0x1d, 0x17, 0x1d, 0xb4, 0x95, 0x06, 0x70, - 0x8e, 0x3b, 0x65, 0xbe, 0xdd, 0x1b, 0x3d, 0xb5, 0xb9, 0x9f, 0x06, 0xa2, - 0x4a, 0xde, 0xa4, 0x6f, 0x10, 0x02, 0xe3, 0xae, 0x46, 0x43, 0x39, 0x3d, - 0x3f, 0x3d, 0x98, 0xde, 0x9b, 0x4f, 0xba, 0x1f, 0x71, 0xfb, 0xac, 0xe1, - 0x16, 0xc9, 0x45, 0x4e, 0x9c, 0x83, 0xe1, 0x10, 0xcc, 0x57, 0x9d, 0x79, - 0xc8, 0xdb, 0x6f, 0x90, 0x2c, 0x30, 0x19, 0xe4, 0x7e, 0xd3, 0x12, 0xa8, - 0x3e, 0x58, 0x56, 0xe6, 0x16, 0x41, 0x1d, 0x30, 0x7d, 0xe8, 0xdd, 0x6b, - 0x86, 0xd1, 0xe3, 0x07, 0xf7, 0x83, 0xc8, 0x8c, 0x89, 0xc5, 0x8c, 0xfb, - 0x3d, 0xc6, 0x3d, 0xda, 0xe3, 0x1f, 0x09, 0x43, 0x59, 0xfd, 0x84, 0x88, - 0xe7, 0x91, 0x36, 0xc6, 0x99, 0xa0, 0x69, 0xb1, 0xb7, 0x21, 0xf0, 0x2e, - 0xeb, 0x87, 0x7f, 0x53, 0xa6, 0x19, 0x70, 0xaf, 0xc8, 0x1a, 0x29, 0x5f, - 0x84, 0xac, 0xf5, 0xca, 0x0b, 0xbc, 0x24, 0x04, 0x86, 0x9c, 0xf3, 0x36, - 0x7d, 0xaa, 0xd0, 0xb4, 0xbd, 0x97, 0x19, 0xd8, 0x6d, 0xf5, 0x08, 0x69, - 0x9f, 0x63, 0x13, 0x9d, 0xbd, 0xd5, 0xa8, 0x2a, 0xd8, 0xca, 0x84, 0xa7, - 0xdf, 0x9b, 0x0b, 0x1b, 0xf9, 0x20, 0x6d, 0x01, 0xfd, 0xae, 0x5c, 0xf2, - 0x23, 0xc3, 0x28, 0x37, 0xb4, 0x9d, 0xc0, 0xb1, 0xa3, 0x21, 0x44, 0x0b, - 0xf9, 0x40, 0x7f, 0x7d, 0xd5, 0x14, 0x9b, 0xf1, 0xc1, 0xe4, 0x17, 0x96, - 0xa3, 0x45, 0xdc, 0xe0, 0x2c, 0x77, 0x1c, 0x1c, 0x64, 0xe6, 0x89, 0x01, - 0xb3, 0xb9, 0x5f, 0x21, 0x66, 0xf6, 0x60, 0x93, 0x07, 0xb9, 0x83, 0x39, - 0x75, 0xdc, 0x84, 0x78, 0xa9, 0xcb, 0xb3, 0xe0, 0xde, 0x30, 0xe3, 0x46, - 0x37, 0xa5, 0x46, 0x92, 0x88, 0x7c, 0xf2, 0xb4, 0x25, 0xd0, 0x70, 0xb8, - 0x2d, 0xf9, 0x32, 0xfe, 0x03, 0x94, 0xbc, 0x5a, 0x33, 0x2b, 0xba, 0xd2, - 0xac, 0x90, 0x4b, 0xbd, 0x9a, 0xcd, 0x64, 0xa9, 0x6e, 0x2a, 0x8c, 0xc8, - 0xf5, 0x68, 0xf9, 0xae, 0x8f, 0x3a, 0xc9, 0x3f, 0x21, 0x07, 0xbb, 0x55, - 0x16, 0x9a, 0x61, 0xcb, 0xc1, 0x0d, 0x4d, 0x4b, 0xff, 0xd6, 0x32, 0xe8, - 0xd2, 0xff, 0xcc, 0xba, 0x13, 0xdd, 0xc9, 0x14, 0x63, 0x77, 0x82, 0x13, - 0xd9, 0xf0, 0x91, 0x48, 0xb4, 0xe0, 0xb0, 0x07, 0xc5, 0xe9, 0x3e, 0x0e, - 0x04, 0xce, 0x5d, 0x5e, 0x38, 0x9e, 0xe6, 0xda, 0x63, 0xef, 0x1a, 0x9a, - 0xc3, 0x0f, 0xf2, 0x58, 0x4a, 0xe9, 0xaa, 0x20, 0xd5, 0x65, 0x83, 0x5d, - 0x64, 0x48, 0x4c, 0xb7, 0xcc, 0xd3, 0xb1, 0x4a, 0x05, 0x7b, 0xfb, 0xc2, - 0x73, 0xbb, 0x4c, 0x92, 0xfd, 0x26, 0xdb, 0x14, 0x1a, 0xd8, 0x1e, 0xd2, - 0xa2, 0x5c, 0x17, 0xee, 0xad, 0xff, 0x30, 0xf4, 0x97, 0x41, 0x77, 0x14, - 0xe3, 0x9d, 0x89, 0x53, 0xbb, 0x66, 0x2b, 0x46, 0xe3, 0xc4, 0x87, 0x52, - 0x46, 0xc0, 0xc9, 0x3f, 0x69, 0x05, 0xfd, 0xf1, 0x1b, 0xe6, 0xfc, 0x12, - 0x4f, 0x3a, 0xa1, 0x72, 0x84, 0xc9, 0xa8, 0x31, 0x42, 0x0e, 0x51, 0xb6, - 0x71, 0x56, 0x69, 0x1b, 0x31, 0x5b, 0xf9, 0xe5, 0x50, 0x21, 0x14, 0xab, - 0x62, 0x0f, 0x8e, 0x05, 0x36, 0x31, 0xcf, 0xed, 0x3d, 0x81, 0xe3, 0x29, - 0x2c, 0x56, 0xfd, 0xa5, 0x41, 0x14, 0x8e, 0xd6, 0x4b, 0xa5, 0x1f, 0x3e, - 0x24, 0x7b, 0x07, 0x84, 0x5d, 0x6d, 0x0c, 0xdf, 0x39, 0x56, 0x45, 0x7c, - 0x71, 0x4f, 0x9b, 0xdf, 0x59, 0x41, 0x64, 0x99, 0xc3, 0x2f, 0x19, 0xe4, - 0xcc, 0x71, 0x3a, 0x53, 0x51, 0x82, 0x00, 0xf3, 0x5a, 0xd5, 0x5f, 0x53, - 0x49, 0xd3, 0x18, 0x0d, 0xef, 0x97, 0x46, 0xd2, 0xa7, 0xa2, 0x6b, 0xbc, - 0xc6, 0x9f, 0xfb, 0xe0, 0xcb, 0xcd, 0xfd, 0x4e, 0x0c, 0x41, 0x2c, 0xeb, - 0xc1, 0xe8, 0x6f, 0x35, 0xee, 0x03, 0x73, 0xe4, 0x36, 0x30, 0x2f, 0xd8, - 0xaa, 0xc2, 0xa4, 0x18, 0x8d, 0x64, 0x15, 0xf9, 0x37, 0x44, 0xe0, 0xff, - 0x91, 0xae, 0x79, 0x3d, 0x35, 0xe7, 0x37, 0xb9, 0x93, 0xf3, 0x97, 0x1b, - 0xc6, 0xb3, 0x9d, 0xe5, 0x83, 0x0c, 0x98, 0x7b, 0xb4, 0xae, 0x49, 0x05, - 0x35, 0x04, 0x57, 0x71, 0x21, 0x92, 0xcd, 0x1c, 0x15, 0x63, 0x42, 0x01, - 0x48, 0xe4, 0xbe, 0x94, 0x9c, 0xba, 0xe5, 0x74, 0x20, 0x9e, 0xed, 0x35, - 0x73, 0x81, 0x81, 0x75, 0xaf, 0x81, 0xbe, 0x32, 0x94, 0x37, 0xf2, 0xf0, - 0x87, 0xe2, 0x32, 0x56, 0x70, 0xb1, 0x0f, 0x7e, 0x24, 0x59, 0x1a, 0xbb, - 0x6b, 0x29, 0x04, 0xc9, 0x0e, 0x09, 0x47, 0xbe, 0x6c, 0x0a, 0xa2, 0xe9, - 0xd4, 0x80, 0xd3, 0x21, 0x57, 0x4d, 0x69, 0xf9, 0x6b, 0x66, 0xee, 0x9f, - 0x94, 0xf4, 0x6a, 0x1e, 0x72, 0xe4, 0xb6, 0xd1, 0x0a, 0x75, 0xb6, 0x85, - 0xf7, 0x10, 0x10, 0x5b, 0x7f, 0xa1, 0x97, 0xc6, 0xb5, 0xb5, 0x2b, 0xe5, - 0x3b, 0xe4, 0x0b, 0x3e, 0xf2, 0x35, 0x15, 0x78, 0xb3, 0x1b, 0xd4, 0x8c, - 0x92, 0x17, 0x0d, 0x0f, 0x42, 0xac, 0x9c, 0x15, 0xb3, 0x8e, 0x4f, 0x2f, - 0x5f, 0x01, 0x22, 0x1d, 0x31, 0xce, 0x12, 0x75, 0xe9, 0xfa, 0x81, 0x22, - 0xbf, 0xc1, 0x72, 0x52, 0x9e, 0x0a, 0x22, 0x05, 0xc3, 0x0d, 0x71, 0x58, - 0xd1, 0xa2, 0xa8, 0x31, 0x2d, 0x90, 0x25, 0xd4, 0x79, 0x39, 0xf3, 0x6a, - 0xec, 0x2c, 0x3d, 0xc6, 0x44, 0x14, 0xaa, 0x5f, 0x32, 0x0d, 0xa2, 0x02, - 0x12, 0x4c, 0x3b, 0x41, 0xb5, 0xb6, 0xfa, 0xab, 0xb8, 0x7f, 0x71, 0xd5, - 0xb9, 0x66, 0xa1, 0x6b, 0x73, 0x69, 0x8a, 0x99, 0x09, 0x06, 0xbb, 0xf9, - 0x06, 0xa9, 0xff, 0xad, 0x8b, 0xd7, 0xb9, 0x8e, 0x76, 0x55, 0xa9, 0x74, - 0xc6, 0x1f, 0x37, 0x00, 0x57, 0x24, 0xde, 0x21, 0xb9, 0x61, 0xac, 0xcb, - 0xbe, 0xa5, 0x83, 0xa7, 0x50, 0x55, 0x4b, 0x61, 0x9f, 0xcd, 0xa8, 0x95, - 0x67, 0xfa, 0x57, 0x61, 0xa1, 0x37, 0x11, 0x24, 0x92, 0x6c, 0x6b, 0x55, - 0x9a, 0x8e, 0x93, 0x56, 0x7b, 0x7b, 0x51, 0xf7, 0x4e, 0x2a, 0x8a, 0x23, - 0x98, 0x2a, 0x68, 0xff, 0x0e, 0x89, 0x55, 0xdc, 0x68, 0x44, 0xc3, 0xf0, - 0x06, 0x72, 0xcc, 0x26, 0xaa, 0x66, 0xa2, 0x9c, 0x12, 0x76, 0x12, 0x15, - 0x29, 0xea, 0x06, 0xfd, 0x3b, 0xf7, 0xb9, 0x9a, 0x49, 0x1c, 0x2d, 0x56, - 0x34, 0x7b, 0xac, 0x7e, 0xe3, 0x7d, 0xa6, 0x15, 0x17, 0x4a, 0x21, 0x1a, - 0x9c, 0x17, 0x8a, 0x62, 0x7c, 0xf9, 0xae, 0x82, 0xd3, 0x8b, 0x80, 0x1f, - 0xa8, 0x6e, 0xdd, 0xe8, 0x3c, 0xe3, 0x63, 0xac, 0x9b, 0x18, 0xc1, 0xbe, - 0x2b, 0xe8, 0xd6, 0x1f, 0x0a, 0xea, 0xf8, 0x28, 0x3a, 0x41, 0x74, 0x51, - 0xe8, 0x47, 0x1d, 0x06, 0x76, 0x3a, 0x5c, 0x07, 0xfc, 0xbb, 0x9c, 0xff, - 0x02, 0x02, 0x67, 0xb9, 0xf8, 0x95, 0xcd, 0x73, 0xea, 0x65, 0x02, 0x8d, - 0x62, 0x75, 0x68, 0xad, 0xc4, 0xc3, 0xca, 0xee, 0x2f, 0x7b, 0x2d, 0x1b, - 0xe8, 0x91, 0xb6, 0xb7, 0x47, 0xf7, 0xe1, 0x2a, 0x44, 0xde, 0xb8, 0x2b, - 0x41, 0xe8, 0x49, 0x44, 0x5c, 0x1b, 0xcd, 0x67, 0x30, 0x3d, 0xc0, 0x10, - 0xb7, 0xa3, 0xaf, 0x32, 0x52, 0x55, 0x78, 0x2c, 0xc3, 0x3c, 0x32, 0xf0, - 0x42, 0xf4, 0x14, 0x46, 0x01, 0x9d, 0x28, 0x1f, 0xcf, 0x17, 0xce, 0x8f, - 0xc0, 0xf9, 0x0b, 0xea, 0x77, 0xe3, 0x79, 0xab, 0x3f, 0x46, 0x62, 0xe7, - 0xd2, 0x0a, 0xff, 0x2c, 0xaf, 0x6f, 0x21, 0x98, 0x46, 0x47, 0x01, 0xd0, - 0xb1, 0xc9, 0xf2, 0x1d, 0xde, 0xd3, 0x43, 0xb0, 0x7b, 0xb6, 0x34, 0x0d, - 0x92, 0xd2, 0x02, 0x19, 0x19, 0x8b, 0xf4, 0x86, 0xe3, 0xc8, 0x90, 0x53, - 0x66, 0xcb, 0x7c, 0x46, 0x1f, 0x30, 0xe8, 0x7d, 0x02, 0xf7, 0x7e, 0xac, - 0xf1, 0xc8, 0xd0, 0xa3, 0x5d, 0x03, 0x96, 0x3e, 0x84, 0x35, 0xbd, 0x71, - 0xa9, 0x6c, 0xec, 0x20, 0xd2, 0x55, 0xe7, 0x1a, 0x3d, 0x71, 0xdb, 0x78, - 0x09, 0x41, 0x1e, 0xf9, 0xcb, 0xb5, 0xb8, 0x59, 0x9e, 0xfb, 0x60, 0x81, - 0xd9, 0xb6, 0x79, 0xd6, 0x9f, 0xa8, 0xb8, 0xb7, 0x8b, 0x7b, 0x29, 0xd7, - 0xc4, 0x30, 0x6e, 0x64, 0xb0, 0xfb, 0xe5, 0x31, 0x0b, 0xfc, 0x8e, 0x9a, - 0x7c, 0x37, 0xf5, 0xbb, 0xfc, 0x0d, 0x96, 0x7a, 0xf5, 0x72, 0x48, 0xac, - 0x73, 0x43, 0x30, 0x85, 0xa9, 0xdb, 0x81, 0x70, 0x27, 0x21, 0xd1, 0xce, - 0xe0, 0xfa, 0x43, 0x1b, 0xe9, 0x3d, 0xbc, 0x4e, 0x97, 0xfe, 0x7b, 0x7e, - 0xaf, 0x8a, 0x41, 0xdd, 0x9e, 0x0f, 0xed, 0x99, 0x0a, 0x87, 0x38, 0xd3, - 0x34, 0xf4, 0xee, 0x3c, 0x87, 0x47, 0x86, 0x8c, 0x95, 0x96, 0x27, 0x6e, - 0x3c, 0xf2, 0xec, 0x03, 0xa1, 0xff, 0xb1, 0xe5, 0x5a, 0xb8, 0x44, 0x4b, - 0x4d, 0xab, 0x20, 0x19, 0x27, 0x75, 0x78, 0xf4, 0x82, 0x9f, 0xe9, 0x04, - 0xd8, 0x29, 0x4f, 0x55, 0x04, 0xe0, 0xf8, 0x70, 0xa8, 0x23, 0x09, 0x6a, - 0x61, 0xf2, 0xb1, 0x27, 0xed, 0x14, 0x57, 0x67, 0x74, 0xfc, 0xdf, 0x2e, - 0xad, 0xe2, 0x4e, 0x08, 0x46, 0xd8, 0x62, 0x45, 0xb4, 0xa4, 0xd0, 0x94, - 0xe7, 0x40, 0x63, 0xf3, 0xe4, 0xca, 0xe5, 0x73, 0x9e, 0xd0, 0x75, 0x74, - 0xfd, 0x98, 0x55, 0xee, 0x56, 0x96, 0xad, 0xc4, 0x46, 0x29, 0x96, 0x64, - 0xbf, 0x0a, 0x9b, 0x51, 0x3b, 0xc0, 0x52, 0x4c, 0x8d, 0x9d, 0x4e, 0x31, - 0x07, 0x34, 0x30, 0x06, 0xed, 0xc1, 0xc5, 0x90, 0xa4, 0x4a, 0x47, 0xa2, - 0x77, 0x56, 0x26, 0xa3, 0x9b, 0xc8, 0x3f, 0x4b, 0xd9, 0x0f, 0x13, 0x0f, - 0x13, 0xb1, 0xcb, 0x40, 0x36, 0x85, 0x02, 0x3f, 0xe6, 0x50, 0x36, 0x9d, - 0x76, 0x18, 0x77, 0x06, 0x78, 0x50, 0xee, 0x12, 0x9a, 0x93, 0x3c, 0x35, - 0x15, 0x88, 0xc1, 0x0f, 0xf3, 0xb2, 0x05, 0xd3, 0x61, 0x3a, 0x61, 0xe0, - 0x8f, 0x24, 0xf0, 0x0c, 0xcf, 0xd4, 0xcf, 0x57, 0x4f, 0x4c, 0xbb, 0x57, - 0x21, 0x33, 0xcf, 0x85, 0xc3, 0xd6, 0x5f, 0x11, 0xbd, 0x9d, 0x28, 0x23, - 0xec, 0x97, 0x2d, 0xd7, 0x18, 0xe7, 0x26, 0x5c, 0x0f, 0x2d, 0xe6, 0x8f, - 0xfb, 0xb5, 0x40, 0x59, 0xfd, 0x61, 0x1b, 0x36, 0x44, 0x4e, 0x6f, 0xca, - 0xf8, 0xce, 0x06, 0xf4, 0xb6, 0x29, 0x08, 0x58, 0x48, 0x10, 0xaa, 0x3c, - 0x28, 0xcb, 0x93, 0x1e, 0x6f, 0x0b, 0xe8, 0x1b, 0x99, 0x1c, 0xda, 0x03, - 0x01, 0x07, 0xa8, 0x32, 0xe9, 0x0f, 0x3b, 0xe2, 0xf1, 0x8a, 0x85, 0x6c, - 0x58, 0xcd, 0x01, 0xb9, 0xac, 0xbf, 0x20, 0x5f, 0x42, 0xd6, 0x7c, 0xf5, - 0x39, 0xc6, 0x16, 0xc2, 0xd5, 0x09, 0xf6, 0xce, 0x5e, 0xed, 0x02, 0x60, - 0xff, 0x27, 0xd3, 0x1c, 0x4b, 0x07, 0xab, 0x62, 0x1c, 0x11, 0x1c, 0xb3, - 0x8f, 0x72, 0xc7, 0xe1, 0x22, 0xae, 0x62, 0x0e, 0x0f, 0x4c, 0xc1, 0xd7, - 0xd5, 0x14, 0x27, 0x4d, 0x4b, 0xb3, 0x3c, 0xe8, 0xa9, 0xd8, 0x4a, 0xd3, - 0x8a, 0xf6, 0xd9, 0x31, 0x98, 0x82, 0x93, 0x2e, 0x9c, 0xf0, 0x0d, 0xdb, - 0xa9, 0xc9, 0x1b, 0x45, 0x33, 0x47, 0x26, 0x86, 0xdf, 0xea, 0x7e, 0x08, - 0x8d, 0xb0, 0x96, 0x55, 0xab, 0xc7, 0x06, 0xc7, 0x9f, 0xca, 0x67, 0xb5, - 0x57, 0x73, 0x17, 0xfb, 0xc9, 0x30, 0x06, 0x58, 0x6e, 0x47, 0xc5, 0xa0, - 0x75, 0x0f, 0x01, 0xe1, 0x1d, 0xd5, 0x33, 0xab, 0xdb, 0x06, 0x90, 0xe1, - 0x5e, 0x37, 0xc7, 0x34, 0x05, 0xbb, 0xd2, 0x61, 0x96, 0x4d, 0xe6, 0xbf, - 0xf0, 0x56, 0x4a, 0xae, 0xea, 0xd7, 0x91, 0xc3, 0x5a, 0xa6, 0x09, 0x53, - 0xed, 0xbb, 0x94, 0x42, 0xeb, 0xdf, 0x66, 0xb1, 0x2a, 0xee, 0xf2, 0xb8, - 0x44, 0x78, 0x9b, 0x0f, 0x5c, 0x49, 0x29, 0x94, 0xf6, 0x2b, 0x1a, 0x1b, - 0x93, 0x5d, 0x3b, 0x0b, 0xcb, 0x09, 0x7d, 0x76, 0x07, 0x64, 0x14, 0x2d, - 0x00, 0x14, 0x77, 0x06, 0xe2, 0x5b, 0x4e, 0x18, 0x3c, 0x42, 0x30, 0xae, - 0xc4, 0xdf, 0x16, 0xde, 0x79, 0xab, 0x7f, 0x01, 0x49, 0xf9, 0x82, 0x89, - 0xd6, 0x42, 0x36, 0xba, 0xbf, 0x77, 0x02, 0xfe, 0x5a, 0x24, 0xb1, 0xd1, - 0x41, 0xba, 0xd4, 0x45, 0x3c, 0x48, 0x79, 0xbf, 0x13, 0x52, 0x60, 0x75, - 0xa4, 0xb6, 0xd6, 0x9c, 0xb2, 0x59, 0xa0, 0x75, 0xce, 0xc3, 0x40, 0x17, - 0xe8, 0xb6, 0xef, 0x17, 0xdc, 0xe9, 0xe5, 0xfd, 0x35, 0xae, 0x7e, 0x93, - 0xac, 0x85, 0x54, 0xf3, 0xf8, 0x77, 0xb6, 0xb5, 0x61, 0x0e, 0xa0, 0xba, - 0x6e, 0x5a, 0x79, 0x1f, 0xa2, 0x58, 0x74, 0xcc, 0x04, 0xe7, 0x5c, 0xe0, - 0xdb, 0x08, 0x2b, 0xc2, 0x12, 0xc2, 0x4e, 0x51, 0xba, 0x9a, 0x57, 0x16, - 0xe8, 0xa3, 0x71, 0x49, 0x76, 0x5d, 0x29, 0xff, 0xf7, 0x78, 0x77, 0xf2, - 0x37, 0x1c, 0x20, 0xab, 0xd8, 0x45, 0x70, 0xac, 0x18, 0xd5, 0xb8, 0x6c, - 0x8e, 0xcc, 0xe8, 0xb8, 0xd0, 0xa0, 0x8a, 0x3e, 0x99, 0x30, 0xb7, 0xc9, - 0xad, 0xf9, 0xf7, 0xfd, 0x9c, 0x4f, 0x8b, 0xee, 0x5c, 0xaa, 0x0d, 0x50, - 0xdc, 0xfb, 0x3c, 0x81, 0x17, 0x9f, 0x8b, 0x8c, 0xcb, 0x49, 0x58, 0xa1, - 0x3b, 0xd2, 0x6d, 0xad, 0xf0, 0x04, 0x2d, 0x42, 0x58, 0x9b, 0x0e, 0x36, - 0x65, 0x16, 0x9b, 0xec, 0x5b, 0xdc, 0xb7, 0xde, 0xfa, 0x90, 0x96, 0xe4, - 0xd3, 0xc4, 0xc8, 0x37, 0x5a, 0xeb, 0xd8, 0x76, 0xf1, 0x69, 0x0d, 0xae, - 0x59, 0x7f, 0x17, 0xdf, 0xf6, 0x2b, 0xa9, 0xb5, 0xa2, 0x81, 0xd1, 0x98, - 0xf5, 0xe7, 0xf2, 0x97, 0xe2, 0x14, 0x13, 0x9f, 0x5f, 0x59, 0x4a, 0xbb, - 0x42, 0x94, 0x27, 0x81, 0x13, 0xb7, 0x4a, 0x47, 0x6d, 0x63, 0x3d, 0xbb, - 0x01, 0x56, 0xae, 0x9b, 0x97, 0xec, 0x10, 0x4c, 0xab, 0x06, 0x42, 0xd1, - 0x3d, 0x81, 0x06, 0x82, 0x03, 0x1a, 0x2d, 0xe9, 0xc8, 0xf5, 0x88, 0xc7, - 0x87, 0x8f, 0x9a, 0x2b, 0xb9, 0x5b, 0x3c, 0xd2, 0x47, 0x4a, 0x30, 0xa2, - 0xe1, 0x58, 0x9f, 0x32, 0xb1, 0x28, 0xfb, 0x90, 0x10, 0x0d, 0x16, 0x66, - 0x90, 0xf9, 0xdf, 0x2f, 0x96, 0x1d, 0x26, 0x7a, 0xc5, 0x7e, 0xaa, 0xfa, - 0x48, 0xe7, 0x81, 0xc4, 0x9b, 0xac, 0x60, 0x7e, 0x92, 0x0f, 0x46, 0xbc, - 0xa6, 0x63, 0x37, 0x0d, 0x55, 0x3d, 0x2a, 0xba, 0xfd, 0x7e, 0x4d, 0x75, - 0x0c, 0x45, 0x6a, 0xa0, 0xb6, 0x86, 0xae, 0x45, 0x15, 0xe9, 0x32, 0xec, - 0xd5, 0x2f, 0x39, 0xed, 0x71, 0xdd, 0x65, 0x32, 0x4f, 0x6c, 0xad, 0x39, - 0xff, 0x03, 0xae, 0xb4, 0x93, 0xcb, 0x1e, 0xed, 0xb7, 0x28, 0xf5, 0x47, - 0xcd, 0x91, 0x68, 0xf7, 0x7e, 0x5b, 0x92, 0xc9, 0x8a, 0x6b, 0x9b, 0xef, - 0xc6, 0x72, 0xc0, 0xf1, 0x44, 0x69, 0xbf, 0x41, 0x73, 0x34, 0x1d, 0x70, - 0x22, 0x3e, 0xc3, 0xc7, 0x38, 0x56, 0xb8, 0xca, 0x4b, 0x6b, 0x15, 0x8e, - 0x4c, 0x09, 0x4e, 0x3a, 0xb3, 0x2b, 0x75, 0xbb, 0x52, 0x7a, 0x6c, 0x6d, - 0x50, 0x5e, 0x7d, 0xe8, 0x23, 0xaa, 0x16, 0x4e, 0x60, 0x4f, 0x88, 0x54, - 0x80, 0xca, 0x29, 0x18, 0x63, 0xd4, 0xc2, 0x99, 0x55, 0x20, 0x7e, 0x1e, - 0xdc, 0x45, 0x5a, 0x99, 0xfd, 0x1a, 0x1b, 0x4f, 0xa1, 0x15, 0x78, 0x9d, - 0x81, 0x8d, 0xcd, 0x9f, 0xf4, 0xc8, 0x2b, 0xf7, 0x0f, 0x0e, 0x86, 0x00, - 0x43, 0x83, 0xd6, 0x02, 0x1d, 0xac, 0x9a, 0x7d, 0xfd, 0x3d, 0x73, 0x9a, - 0x67, 0x3c, 0x33, 0x8b, 0xc5, 0x33, 0x93, 0x23, 0x5b, 0xe0, 0x68, 0xf4, - 0xc3, 0x7b, 0x43, 0x75, 0x5a, 0x86, 0x42, 0xcb, 0x90, 0x64, 0x4e, 0x7f, - 0x0a, 0x64, 0x88, 0xe3, 0xbd, 0xb7, 0x57, 0x3e, 0xb9, 0xc1, 0x58, 0x29, - 0x75, 0x33, 0x7a, 0x38, 0xd9, 0x5e, 0x38, 0x16, 0xa1, 0x67, 0xc9, 0xfd, - 0x10, 0xf5, 0xb5, 0x7a, 0x00, 0xc8, 0x14, 0x87, 0xb3, 0x8c, 0xff, 0xc4, - 0xfd, 0x3d, 0xd4, 0x1e, 0xde, 0xe4, 0x1f, 0x49, 0x07, 0xe1, 0x45, 0x8b, - 0x98, 0xc9, 0x45, 0x65, 0xee, 0x5c, 0x09, 0x3c, 0x52, 0x14, 0x57, 0x3a, - 0x73, 0xbd, 0xa0, 0x99, 0x11, 0xff, 0xbe, 0xe8, 0x1a, 0x8a, 0xaf, 0x10, - 0x73, 0xa7, 0xe0, 0x1d, 0x2b, 0xa8, 0x40, 0xde, 0xfe, 0xb8, 0xc1, 0x20, - 0x1e, 0xba, 0x93, 0x31, 0xdb, 0x3e, 0x6b, 0x4c, 0x0f, 0x58, 0x74, 0x59, - 0x93, 0xc9, 0xde, 0x39, 0x75, 0xb2, 0x27, 0xd1, 0x12, 0xe9, 0xff, 0x32, - 0x74, 0x20, 0x0a, 0x1d, 0x61, 0x38, 0x04, 0x97, 0x15, 0x43, 0xd6, 0xe6, - 0xdd, 0xf7, 0xde, 0xc6, 0x18, 0x82, 0x4f, 0x31, 0x7e, 0x36, 0x9b, 0x76, - 0x73, 0xab, 0xd0, 0x3a, 0x28, 0x7a, 0xdd, 0xd4, 0x43, 0x99, 0xec, 0x93, - 0x09, 0x11, 0xbc, 0xdf, 0xcc, 0x59, 0xf2, 0xa5, 0x81, 0x63, 0xbf, 0xe1, - 0xec, 0xe6, 0x3c, 0xb4, 0x32, 0x27, 0x85, 0xe7, 0x86, 0xf7, 0x6d, 0x39, - 0x1c, 0xe7, 0x2b, 0xa1, 0x4f, 0x80, 0x88, 0xc0, 0xeb, 0x1d, 0x8f, 0x3a, - 0xb8, 0xbc, 0xf4, 0x3d, 0x0d, 0x19, 0x95, 0x4f, 0xb2, 0x86, 0x3d, 0x3e, - 0x15, 0xbe, 0x62, 0x2c, 0xba, 0x34, 0x97, 0x45, 0x3d, 0xd6, 0x65, 0xd7, - 0x4c, 0x20, 0xc8, 0x61, 0x5a, 0x8d, 0x6f, 0xa9, 0xe4, 0xf2, 0x45, 0x01, - 0x31, 0x38, 0x5e, 0xe8, 0x1f, 0xa3, 0x80, 0xa7, 0xc0, 0xf0, 0xfd, 0xdd, - 0xa0, 0xaf, 0x03, 0xc5, 0x4d, 0xf6, 0x09, 0x5c, 0xc0, 0xf9, 0xec, 0x56, - 0x53, 0xd5, 0xe0, 0xbd, 0x61, 0x6c, 0x35, 0x70, 0xf8, 0x39, 0x69, 0x24, - 0x2c, 0x50, 0xf2, 0x1b, 0xa8, 0xca, 0xc8, 0xd7, 0x3b, 0xe3, 0x14, 0x2a, - 0xac, 0xce, 0xd6, 0x53, 0xa1, 0x10, 0xf5, 0x48, 0xd8, 0x78, 0x71, 0xc9, - 0xa2, 0xf1, 0x1b, 0x82, 0x51, 0x7e, 0xe4, 0xd9, 0x40, 0x61, 0xac, 0xbd, - 0x5e, 0xee, 0x0e, 0x61, 0x8e, 0x85, 0x85, 0x93, 0x49, 0x86, 0x68, 0x59, - 0xb9, 0x6b, 0x2e, 0x66, 0xac, 0x54, 0xe1, 0xbb, 0x1a, 0x89, 0xa8, 0xeb, - 0x1b, 0x78, 0xa1, 0xfa, 0x0d, 0x74, 0xbf, 0xc7, 0x0e, 0xc3, 0xc9, 0xdc, - 0xc0, 0x5e, 0xf1, 0xaa, 0xa0, 0x3b, 0xce, 0x05, 0x91, 0xcf, 0x1a, 0xa5, - 0x02, 0x38, 0x2d, 0x9b, 0x4a, 0xd0, 0xe2, 0x07, 0xfb, 0x37, 0x01, 0x14, - 0x39, 0x5f, 0x7c, 0x71, 0x29, 0x15, 0xcc, 0xd8, 0xa3, 0x7c, 0xbd, 0x1b, - 0x11, 0x07, 0xb0, 0xab, 0x2e, 0x48, 0x5b, 0x2d, 0xd8, 0xf3, 0x3d, 0x65, - 0x70, 0x6d, 0xe0, 0x0a, 0xd1, 0x5e, 0x3d, 0xa8, 0x7e, 0xdc, 0x92, 0x23, - 0xa5, 0xa9, 0x98, 0xa9, 0x14, 0x36, 0x24, 0x25, 0x86, 0xb1, 0x10, 0xe5, - 0x0f, 0x27, 0x83, 0x22, 0x2c, 0xbb, 0x9f, 0x3d, 0x11, 0xe6, 0x27, 0x89, - 0x24, 0x4e, 0xbe, 0xe0, 0xe1, 0x71, 0x7b, 0x29, 0xad, 0xa6, 0x95, 0x15, - 0xfc, 0xad, 0xca, 0x8b, 0x72, 0x1c, 0x7f, 0xc8, 0x68, 0x1c, 0x8a, 0x7e, - 0xc5, 0xf3, 0x78, 0xc9, 0x41, 0xb7, 0xdb, 0x0a, 0xfe, 0x1b, 0x2f, 0xdc, - 0xe3, 0x50, 0x5b, 0x98, 0xce, 0x62, 0x7d, 0x69, 0x6a, 0x65, 0xc0, 0x7b, - 0xdb, 0x5f, 0x35, 0x19, 0x59, 0x47, 0xd8, 0x97, 0xbf, 0x05, 0xaf, 0x10, - 0xc6, 0x3b, 0x49, 0xb4, 0x6e, 0xa9, 0x92, 0xe0, 0xc1, 0xfa, 0x96, 0x67, - 0xb5, 0xc8, 0x39, 0xf3, 0x7b, 0xdc, 0x19, 0x09, 0xbe, 0xc1, 0x82, 0x1e, - 0xc3, 0x17, 0x74, 0x7c, 0xba, 0x81, 0xcf, 0x4f, 0x1a, 0x24, 0xda, 0xec, - 0xc0, 0x3e, 0xe7, 0xc3, 0x4a, 0x29, 0x0e, 0x05, 0x72, 0xff, 0xcc, 0xc9, - 0xa0, 0x35, 0x6c, 0x66, 0x2e, 0x9e, 0x12, 0x62, 0x2d, 0xf8, 0xf0, 0x93, - 0x34, 0xe7, 0xbd, 0xa5, 0x8d, 0x40, 0x19, 0xcb, 0x00, 0x29, 0xc6, 0xd3, - 0xea, 0x4a, 0xfe, 0x26, 0x3f, 0x31, 0x37, 0x87, 0xae, 0x6e, 0x26, 0x7a, - 0x25, 0xee, 0x11, 0xc3, 0x5e, 0x28, 0x84, 0x67, 0xff, 0x6d, 0xd8, 0x29, - 0x18, 0x0b, 0xbf, 0x1f, 0xac, 0xec, 0xf4, 0x53, 0x0b, 0x76, 0xc2, 0x51, - 0xb1, 0x95, 0x3b, 0xa5, 0x0f, 0xbf, 0xbb, 0x3d, 0x12, 0xdd, 0xc7, 0x31, - 0x22, 0x56, 0x25, 0xc1, 0x18, 0x35, 0xf6, 0x95, 0x8f, 0xcc, 0xe8, 0x94, - 0x17, 0x12, 0xb1, 0xe9, 0x8f, 0x66, 0x9d, 0xf4, 0xbc, 0x79, 0x82, 0x43, - 0xd6, 0x35, 0xf7, 0x9e, 0x99, 0x65, 0x3c, 0x47, 0xc3, 0x69, 0x05, 0x30, - 0xf6, 0xfb, 0x8c, 0x87, 0xe5, 0x3c, 0x77, 0x36, 0xf4, 0x92, 0x0d, 0x76, - 0xa2, 0x1d, 0xaf, 0xd2, 0xa0, 0x1a, 0xe1, 0x91, 0x4a, 0x88, 0x7c, 0x02, - 0x04, 0x0f, 0x84, 0x9d, 0x3b, 0x68, 0xf2, 0x8c, 0x48, 0xbb, 0xcf, 0x46, - 0x2b, 0xc2, 0x16, 0x85, 0x84, 0x4b, 0x62, 0xc2, 0x75, 0x89, 0xa3, 0xca, - 0x74, 0x9b, 0xc5, 0xcc, 0xfd, 0x4a, 0x65, 0x73, 0xb0, 0x04, 0xa0, 0x3f, - 0x9c, 0xc2, 0x12, 0x99, 0x3d, 0x06, 0x1a, 0xdd, 0xcb, 0xc6, 0xec, 0x49, - 0xfe, 0x9b, 0x7c, 0xbb, 0xbb, 0x70, 0x3f, 0xda, 0xff, 0xdd, 0xc6, 0xde, - 0x11, 0xb1, 0x86, 0x43, 0x0b, 0x6d, 0x8f, 0xaf, 0xb8, 0xa2, 0x74, 0x21, - 0xc2, 0xd2, 0x58, 0xa4, 0xd3, 0x37, 0xbd, 0x4b, 0x8c, 0x48, 0xa8, 0xe2, - 0x6d, 0xa6, 0x82, 0x15, 0x05, 0xf8, 0xdb, 0xec, 0x3d, 0xf9, 0x78, 0xca, - 0x14, 0xd2, 0x4c, 0x5a, 0x03, 0x98, 0x58, 0xf3, 0x5d, 0xf0, 0x5f, 0x42, - 0xa7, 0x5d, 0x58, 0x20, 0x4a, 0xf8, 0xb5, 0x8d, 0xf5, 0x33, 0xa6, 0x15, - 0xfe, 0x51, 0x83, 0x79, 0x5e, 0x36, 0x52, 0x26, 0xf8, 0x4f, 0x86, 0x6d, - 0x9c, 0xa6, 0xf4, 0x40, 0x6a, 0x3b, 0x9d, 0x84, 0x50, 0xf7, 0x18, 0xde, - 0xf1, 0x50, 0x1f, 0xc4, 0x46, 0x78, 0x02, 0x78, 0xc2, 0x20, 0x8e, 0x7c, - 0xce, 0x27, 0xa8, 0x24, 0x7d, 0xdd, 0x55, 0xf7, 0xb6, 0xe5, 0x8c, 0x77, - 0xc2, 0xbe, 0x21, 0x60, 0x76, 0x15, 0x39, 0xce, 0x82, 0xba, 0x69, 0xd8, - 0x03, 0x0b, 0x92, 0xdb, 0x63, 0xd0, 0x4a, 0x4a, 0x3a, 0xc3, 0x66, 0xa6, - 0x9d, 0x89, 0xc9, 0xb3, 0x22, 0x93, 0xeb, 0x07, 0xa1, 0xc6, 0x88, 0xa0, - 0x60, 0xad, 0x52, 0x27, 0x7d, 0x9b, 0x39, 0xcb, 0xab, 0x99, 0x4d, 0xb1, - 0x36, 0x4a, 0x0a, 0x15, 0x8f, 0xe9, 0x1d, 0x07, 0xcf, 0x89, 0x99, 0xae, - 0x30, 0x1e, 0xd7, 0xcc, 0x12, 0xf5, 0x48, 0x7b, 0x88, 0xf0, 0xce, 0x82, - 0xd0, 0x9a, 0x6a, 0x3f, 0x1c, 0x04, 0x92, 0xcd, 0x45, 0x1f, 0xe3, 0x69, - 0x8f, 0x12, 0x6c, 0xc0, 0x6b, 0x4a, 0x72, 0x05, 0x84, 0x61, 0xb8, 0xa6, - 0x06, 0xa1, 0xc0, 0x52, 0xe9, 0xcf, 0xc8, 0x52, 0xf8, 0x8b, 0x03, 0xe6, - 0x88, 0x4b, 0x7b, 0x09, 0x8d, 0x3e, 0xf4, 0xab, 0xea, 0xe8, 0xb3, 0x68, - 0x31, 0xd0, 0x73, 0x2e, 0x26, 0x76, 0x80, 0x69, 0x8e, 0xf1, 0x2b, 0x3a, - 0xee, 0xe3, 0x2d, 0x61, 0x6d, 0x0a, 0x9b, 0x4f, 0x85, 0x56, 0x6b, 0x6a, - 0x4d, 0xc0, 0x79, 0x72, 0x0c, 0x02, 0x57, 0xfe, 0xd6, 0x89, 0xe0, 0x83, - 0x0a, 0xec, 0x67, 0x81, 0xff, 0x32, 0xa7, 0x41, 0xe0, 0x65, 0xd0, 0x97, - 0x89, 0x87, 0xfd, 0xa3, 0x99, 0x27, 0xb6, 0xab, 0xda, 0x90, 0x31, 0xbc, - 0x9b, 0x8c, 0x2f, 0x5f, 0xeb, 0x50, 0xce, 0xf0, 0x68, 0x72, 0x7c, 0x67, - 0x19, 0xec, 0x9e, 0xa9, 0x99, 0xc4, 0xa2, 0xd0, 0x8c, 0x46, 0x8f, 0x51, - 0x0a, 0xd6, 0x9e, 0x73, 0x46, 0x5f, 0x8e, 0x75, 0x8e, 0x5b, 0xe8, 0x35, - 0x76, 0x3d, 0x94, 0x76, 0xf8, 0x3a, 0x69, 0x22, 0x9f, 0xd7, 0x3e, 0x84, - 0x4a, 0xbf, 0x0a, 0xba, 0xee, 0xd9, 0x83, 0x64, 0xc8, 0xf9, 0xed, 0x74, - 0xf5, 0xc9, 0x70, 0x1d, 0x69, 0xbb, 0xd2, 0x8f, 0xf6, 0x98, 0xee, 0xbc, - 0x5f, 0xd6, 0x21, 0xa2, 0x9f, 0x04, 0xd1, 0x5d, 0x27, 0x2b, 0x6b, 0xff, - 0xb8, 0xc2, 0x6a, 0x6a, 0x19, 0xdf, 0xc7, 0xe4, 0x8f, 0xfb, 0xf9, 0xaf, - 0x51, 0x96, 0xa6, 0xcb, 0xad, 0x43, 0xba, 0x0a, 0xa1, 0x53, 0x93, 0x76, - 0xc5, 0xf3, 0x0f, 0x84, 0x7f, 0xe2, 0x5f, 0xb1, 0x98, 0x1d, 0x6f, 0x19, - 0xf9, 0x0e, 0x6f, 0xfe, 0xa8, 0xe2, 0x40, 0xd8, 0xa3, 0x58, 0x12, 0x11, - 0x52, 0xd7, 0x23, 0xbf, 0x32, 0xc8, 0x15, 0x78, 0x8a, 0x6f, 0x40, 0xda, - 0xb0, 0xe1, 0xac, 0xd1, 0x29, 0x99, 0xe4, 0xca, 0xf7, 0x4a, 0xbb, 0x43, - 0x5a, 0xc6, 0x63, 0x8a, 0xd4, 0x65, 0xb4, 0xb5, 0x5a, 0xa6, 0x05, 0x3b, - 0x63, 0x0c, 0xf9, 0xd1, 0x71, 0xed, 0x28, 0x10, 0xba, 0xd6, 0xab, 0x38, - 0x46, 0xf5, 0xe4, 0x35, 0x2b, 0xdb, 0x13, 0xb4, 0xcb, 0x90, 0x46, 0xf1, - 0x47, 0x65, 0x4d, 0x57, 0x26, 0x7b, 0x52, 0x6a, 0x44, 0x52, 0xdf, 0x46, - 0xff, 0x2f, 0x2f, 0xe3, 0xa5, 0xc3, 0x44, 0xe3, 0x76, 0x97, 0xdd, 0x2b, - 0x46, 0x93, 0x49, 0x05, 0x5c, 0x49, 0x9e, 0xdc, 0x3d, 0x80, 0x9c, 0x86, - 0x04, 0x50, 0xa7, 0x2c, 0xea, 0x7a, 0xc0, 0xba, 0x0b, 0x28, 0xaf, 0x1e, - 0xd2, 0x1e, 0x1d, 0x4c, 0x65, 0x41, 0x90, 0x02, 0x74, 0x73, 0x09, 0xd1, - 0xf6, 0x10, 0x8e, 0x25, 0x09, 0x68, 0x98, 0x05, 0x0a, 0x04, 0x55, 0xd8, - 0x3b, 0xf4, 0x71, 0x95, 0x82, 0x34, 0x21, 0x9d, 0xf0, 0x6b, 0x4a, 0x71, - 0x79, 0x19, 0x27, 0xa1, 0x54, 0x13, 0x88, 0xfd, 0x36, 0x3a, 0xbf, 0x94, - 0xd1, 0x94, 0x3e, 0x5d, 0x2e, 0x1d, 0x14, 0x2b, 0x3d, 0x0f, 0x51, 0x74, - 0x9c, 0x7f, 0x4a, 0x67, 0x5a, 0x06, 0x30, 0x5a, 0x40, 0x44, 0x7a, 0xec, - 0x6f, 0x81, 0x66, 0x9e, 0x1f, 0x4b, 0x5a, 0x5a, 0xf1, 0xa4, 0x5e, 0xd4, - 0xde, 0xd0, 0xd6, 0x88, 0x0c, 0x27, 0x93, 0xfd, 0x39, 0xed, 0x87, 0x58, - 0xfe, 0x94, 0x2d, 0x43, 0xb0, 0x97, 0x49, 0xc5, 0x55, 0x49, 0x65, 0x91, - 0xb9, 0xcd, 0x99, 0x06, 0xa2, 0xed, 0xe1, 0x72, 0x7f, 0x2a, 0xde, 0x6f, - 0x08, 0xb3, 0xf4, 0xdd, 0x7b, 0xe4, 0x6d, 0x91, 0xb4, 0x2f, 0xe7, 0x82, - 0x77, 0xc8, 0x29, 0xf9, 0x95, 0x87, 0x6d, 0xe0, 0xba, 0x14, 0x9e, 0x57, - 0x14, 0xb8, 0xa4, 0xe3, 0xda, 0xf2, 0x15, 0x5b, 0x5f, 0x4f, 0x0b, 0x89, - 0x1b, 0xb6, 0xa0, 0x9c, 0x50, 0x0c, 0x64, 0x9a, 0xdf, 0x12, 0x90, 0x81, - 0xc2, 0x6e, 0x4e, 0x85, 0xdc, 0xc9, 0x9f, 0xd1, 0x2a, 0xbd, 0x61, 0xa4, - 0x8a, 0x29, 0x87, 0xca, 0x03, 0xac, 0x65, 0xd9, 0xfc, 0x56, 0xa1, 0x21, - 0xf3, 0x48, 0x38, 0xc3, 0xca, 0x7b, 0x0a, 0x02, 0x4f, 0x99, 0x05, 0xb4, - 0x33, 0x98, 0xcf, 0x4b, 0xce, 0x6d, 0xd5, 0x1d, 0xee, 0x3f, 0x75, 0x46, - 0xc7, 0x4d, 0x12, 0xf0, 0xa1, 0x7f, 0x9a, 0x53, 0x3b, 0x76, 0xf4, 0x65, - 0x01, 0xff, 0x97, 0x4e, 0x0c, 0xd1, 0x55, 0xcd, 0x24, 0x0a, 0xfd, 0xf6, - 0xe7, 0xa5, 0x01, 0xcd, 0xc0, 0x22, 0x68, 0x3b, 0x56, 0x85, 0xe9, 0x88, - 0x02, 0xe3, 0x23, 0x0a, 0x1b, 0x5c, 0x63, 0xda, 0x7a, 0x50, 0x1c, 0xd7, - 0xd5, 0xdf, 0xbe, 0xf3, 0x99, 0xe9, 0x72, 0xe4, 0x79, 0x4a, 0x0d, 0x73, - 0xc5, 0x12, 0xd8, 0x16, 0x58, 0xb1, 0x67, 0xf1, 0x4c, 0x08, 0xf3, 0x44, - 0xe6, 0x9b, 0x89, 0xf8, 0x2b, 0xc5, 0xac, 0x1e, 0x12, 0xd8, 0x09, 0xf8, - 0x54, 0xb3, 0x66, 0x56, 0xd8, 0x08, 0x83, 0x67, 0x70, 0x7c, 0x87, 0x33, - 0x76, 0x8b, 0x61, 0xc9, 0x1e, 0xe6, 0x50, 0xc9, 0xd8, 0xa6, 0xca, 0x02, - 0xbb, 0x6b, 0x0d, 0x74, 0x1c, 0x9d, 0xae, 0xd4, 0x7b, 0xc4, 0xe5, 0x6c, - 0xd7, 0x91, 0xe9, 0x16, 0x22, 0x09, 0x8f, 0xa2, 0x2f, 0xca, 0xe8, 0x64, - 0x91, 0x33, 0x13, 0x23, 0x94, 0x41, 0xe5, 0x14, 0x10, 0x30, 0x14, 0x6d, - 0x9d, 0xa0, 0x82, 0x4d, 0x6c, 0x7f, 0x64, 0xa9, 0x40, 0x3e, 0x57, 0x92, - 0x96, 0xec, 0xb7, 0xb8, 0xf1, 0x47, 0x97, 0x89, 0xf5, 0xa6, 0xa6, 0x02, - 0x90, 0xd3, 0x22, 0x0b, 0xfc, 0x6e, 0xf2, 0x40, 0xf7, 0xd4, 0xad, 0xdc, - 0x37, 0xcb, 0xb9, 0xb7, 0x5a, 0x4c, 0xe6, 0xb6, 0xac, 0x7a, 0x30, 0xbb, - 0x49, 0x60, 0x48, 0x59, 0x83, 0xe7, 0x87, 0x6e, 0x6c, 0xea, 0x91, 0xaa, - 0x2e, 0x85, 0xd8, 0xd5, 0x94, 0xc6, 0x98, 0xdb, 0xc6, 0x9a, 0xce, 0x84, - 0x4c, 0xf0, 0xd5, 0x26, 0x53, 0x18, 0xe0, 0xbb, 0xa8, 0x5e, 0xd6, 0xb7, - 0xd9, 0x87, 0x71, 0x82, 0x2f, 0x34, 0x43, 0x15, 0xed, 0x55, 0x5e, 0xfd, - 0xb3, 0x46, 0x55, 0x54, 0x82, 0xf8, 0x83, 0x4c, 0xfc, 0x75, 0xf7, 0x7b, - 0x9c, 0xea, 0xc5, 0x29, 0x7a, 0xe8, 0xb2, 0xd6, 0x8a, 0xd8, 0x1d, 0x76, - 0xb2, 0x22, 0xef, 0xc6, 0x43, 0x75, 0x13, 0xff, 0xae, 0xc3, 0x47, 0x27, - 0x2c, 0x74, 0x2c, 0x41, 0x84, 0x6d, 0xd0, 0x95, 0xb2, 0x92, 0x6a, 0x82, - 0x89, 0x54, 0x50, 0x7c, 0x85, 0x1e, 0xf7, 0x90, 0x37, 0x3f, 0xff, 0xe6, - 0xf4, 0xb3, 0x97, 0x66, 0x89, 0xa2, 0xa6, 0x08, 0x53, 0x9c, 0x86, 0x17, - 0x99, 0x0c, 0x3d, 0x81, 0x01, 0x0d, 0x3a, 0x84, 0xef, 0xb9, 0x58, 0x94, - 0x04, 0x36, 0xbd, 0x8c, 0xfc, 0xf9, 0xdc, 0x67, 0x99, 0xd9, 0x81, 0x8a, - 0x41, 0x3e, 0x31, 0x96, 0xa4, 0x63, 0x13, 0x1f, 0x40, 0x89, 0xd9, 0x1c, - 0x20, 0x8a, 0xf6, 0x7a, 0xed, 0x41, 0x02, 0xce, 0xa8, 0x38, 0xa0, 0x18, - 0x5f, 0xd4, 0x45, 0xdc, 0x6a, 0x3c, 0xc5, 0xb4, 0xb3, 0xeb, 0xea, 0xc8, - 0x55, 0x44, 0xd5, 0xc9, 0xd5, 0xe8, 0x4c, 0xaa, 0x20, 0x00, 0x93, 0xda, - 0xee, 0x10, 0xee, 0xf2, 0x50, 0xe1, 0x44, 0xee, 0x27, 0x91, 0xd4, 0xc6, - 0xee, 0x32, 0x03, 0x0c, 0xe9, 0x98, 0x36, 0x2d, 0xbc, 0xb4, 0xc6, 0xb1, - 0x84, 0x6e, 0x7a, 0x60, 0xbf, 0xc7, 0xaf, 0x44, 0x21, 0x25, 0x46, 0x70, - 0x2b, 0xce, 0x70, 0x6c, 0x9b, 0x9f, 0xde, 0x88, 0x9a, 0x02, 0x51, 0xac, - 0xd8, 0x9f, 0xbf, 0x42, 0x54, 0xab, 0x85, 0xfd, 0xe3, 0x0d, 0x9b, 0xad, - 0x5f, 0xff, 0xf7, 0x08, 0x9a, 0x4e, 0x0f, 0xe5, 0x17, 0x8e, 0x7e, 0xf2, - 0x17, 0xad, 0x94, 0xd7, 0xf9, 0x88, 0x59, 0x99, 0xad, 0xda, 0x55, 0xa3, - 0xa2, 0xdd, 0xc4, 0x9b, 0xe7, 0x77, 0xcc, 0x6d, 0xc5, 0x8f, 0x7e, 0x77, - 0xfb, 0x3d, 0x2a, 0xd3, 0xbb, 0xa2, 0xe6, 0xec, 0xc0, 0x8b, 0x7b, 0x7f, - 0xd5, 0xda, 0xde, 0xa6, 0xd6, 0x9c, 0x22, 0x20, 0xc1, 0xe7, 0x84, 0x58, - 0x44, 0xe3, 0x75, 0x97, 0x21, 0xcc, 0x2b, 0x6a, 0x28, 0xea, 0xd1, 0x57, - 0x8d, 0xca, 0x1a, 0xa7, 0x52, 0x94, 0x8f, 0xbd, 0x5d, 0x9a, 0x98, 0x48, - 0x51, 0x89, 0x63, 0x12, 0x18, 0x3f, 0xe5, 0x37, 0x7e, 0x74, 0x75, 0x85, - 0x17, 0x25, 0x07, 0x92, 0x6c, 0xc2, 0x06, 0x46, 0x38, 0xde, 0x99, 0xd3, - 0x9f, 0x65, 0x1e, 0xc4, 0x57, 0xc7, 0xde, 0x03, 0x63, 0xf7, 0xde, 0x7c, - 0x4a, 0x0f, 0x50, 0x4d, 0xab, 0x44, 0xe6, 0xdb, 0xc5, 0xd3, 0xa8, 0xa9, - 0x8b, 0x47, 0x24, 0x5c, 0x07, 0xb2, 0xf4, 0x0b, 0x65, 0xab, 0x23, 0x63, - 0x20, 0x48, 0x46, 0x15, 0xfe, 0x50, 0x65, 0xd2, 0xec, 0xc5, 0xeb, 0x5d, - 0x7b, 0xd2, 0x31, 0x25, 0xbd, 0x14, 0x4a, 0x8d, 0x3f, 0x01, 0xa8, 0x94, - 0x63, 0x06, 0x0c, 0xf5, 0x9c, 0x58, 0x5c, 0x62, 0x5a, 0x10, 0xca, 0xef, - 0xce, 0x69, 0x4a, 0x42, 0x74, 0x5e, 0xda, 0xf1, 0x6f, 0xda, 0xe4, 0xa8, - 0x16, 0xd4, 0xa2, 0xbf, 0x45, 0x89, 0xc7, 0x59, 0xc6, 0x06, 0x72, 0x87, - 0x10, 0x78, 0x3f, 0xa9, 0x29, 0x4c, 0xbf, 0xa8, 0xd3, 0x05, 0x88, 0x5d, - 0x55, 0xd1, 0x2d, 0x45, 0x20, 0xe4, 0x26, 0xbb, 0x26, 0xf8, 0x29, 0x35, - 0x11, 0xd5, 0xdc, 0xbf, 0xaf, 0x55, 0xfa, 0x08, 0xfa, 0x18, 0x20, 0xd6, - 0xdf, 0x0f, 0xa7, 0x60, 0x2c, 0xa4, 0x1a, 0x72, 0x42, 0x41, 0x61, 0xa6, - 0x97, 0x3e, 0x67, 0xa2, 0x91, 0xe3, 0xd3, 0xf4, 0xd9, 0x06, 0x88, 0xa8, - 0x50, 0x29, 0x55, 0xef, 0x5a, 0x3b, 0x3f, 0xe1, 0x1d, 0x4d, 0x67, 0x89, - 0xeb, 0xec, 0x0e, 0x4d, 0x16, 0x01, 0xc0, 0x46, 0x55, 0xbe, 0xa2, 0xad, - 0x4b, 0xb2, 0xe8, 0x60, 0x9a, 0x61, 0xc5, 0x3a, 0x0e, 0x31, 0xc5, 0x80, - 0xec, 0x14, 0x45, 0x6f, 0x16, 0xba, 0x7b, 0x9d, 0x34, 0x0c, 0x63, 0xaa, - 0x6a, 0xfc, 0x83, 0x12, 0xc1, 0x5c, 0x63, 0x08, 0x96, 0xf2, 0x98, 0x00, - 0x68, 0x7a, 0x7a, 0x3b, 0x64, 0x75, 0x3c, 0x54, 0x3f, 0x11, 0x00, 0x2a, - 0x87, 0x94, 0x36, 0xad, 0x3c, 0xa8, 0xac, 0xf5, 0xa6, 0x84, 0xe6, 0x6c, - 0x59, 0xfc, 0x2f, 0x99, 0x6c, 0xc3, 0x22, 0x4a, 0x56, 0xe3, 0x3e, 0x8f, - 0x61, 0xad, 0xff, 0xea, 0x80, 0xd2, 0xd1, 0x53, 0x35, 0xd7, 0x8f, 0xf2, - 0x83, 0xe5, 0x9c, 0xb7, 0x68, 0x91, 0x69, 0x1e, 0x98, 0xb5, 0xa6, 0x43, - 0x8d, 0xc0, 0xc4, 0x83, 0xca, 0xc3, 0xf8, 0x78, 0x18, 0x6c, 0x5e, 0x55, - 0xea, 0x58, 0x8e, 0x9a, 0x12, 0x7e, 0x2c, 0xb8, 0x44, 0xf8, 0xef, 0xd8, - 0xb1, 0xf7, 0xf2, 0x87, 0x23, 0x4a, 0x03, 0x53, 0x38, 0x10, 0xab, 0x5d, - 0xea, 0xcc, 0x1c, 0x86, 0x73, 0xda, 0x61, 0x40, 0xf5, 0x92, 0x2a, 0x31, - 0x37, 0xd7, 0x2b, 0x35, 0x63, 0x25, 0xa6, 0xce, 0xb9, 0x62, 0x3d, 0x85, - 0xf7, 0xdb, 0x68, 0x24, 0x18, 0x79, 0x6c, 0xc1, 0x71, 0xa2, 0x0f, 0x8b, - 0x30, 0x3d, 0x50, 0x5c, 0x5c, 0x7f, 0x27, 0xcb, 0x32, 0x2a, 0x49, 0x30, - 0x2c, 0xc7, 0xaa, 0x27, 0x8f, 0xee, 0x50, 0x55, 0x9e, 0x47, 0xd7, 0x3f, - 0x86, 0x5e, 0x4f, 0xba, 0x61, 0x70, 0xa2, 0x61, 0xbf, 0xcf, 0x17, 0x1c, - 0x96, 0x7c, 0x84, 0x58, 0xf4, 0x41, 0x56, 0x8b, 0x7b, 0xe7, 0x17, 0x91, - 0xf7, 0x75, 0x32, 0x47, 0x07, 0xee, 0x47, 0x81, 0xc8, 0x63, 0x20, 0xc3, - 0xb1, 0xb1, 0xfc, 0xb4, 0x37, 0x92, 0x05, 0xa5, 0x02, 0x8d, 0x07, 0x88, - 0x98, 0xfd, 0xbc, 0x2e, 0x87, 0x87, 0xed, 0x06, 0x76, 0x84, 0x16, 0x83, - 0xeb, 0x44, 0x9f, 0xee, 0x36, 0x33, 0x0c, 0x57, 0x0f, 0x36, 0x22, 0x2f, - 0x9d, 0x3a, 0x49, 0x5b, 0xfc, 0xdf, 0x85, 0x3d, 0x3c, 0x4d, 0x22, 0x9d, - 0x31, 0x43, 0x0e, 0xbc, 0xc1, 0x83, 0xbf, 0x76, 0xa0, 0x39, 0x96, 0xe3, - 0x18, 0x0d, 0xd0, 0x4a, 0xf4, 0x24, 0x6c, 0x10, 0xe4, 0x96, 0x3f, 0x02, - 0xa2, 0x19, 0x41, 0x8c, 0x05, 0x54, 0x22, 0x3f, 0xc0, 0x04, 0xf7, 0x42, - 0x35, 0xa2, 0xd2, 0xc0, 0x10, 0x69, 0xba, 0x5d, 0x6a, 0xa0, 0xbf, 0xb7, - 0x6f, 0x8e, 0x27, 0x00, 0xd7, 0xb9, 0x89, 0xce, 0xc6, 0x4c, 0x23, 0x1b, - 0x16, 0x90, 0xd4, 0x15, 0x3b, 0xe4, 0x0e, 0x6e, 0x71, 0xb6, 0xe1, 0xf1, - 0xf8, 0x62, 0x33, 0x5f, 0xe6, 0xdc, 0xaf, 0x43, 0xa8, 0x96, 0x77, 0x84, - 0x15, 0x49, 0x0b, 0xab, 0xb8, 0xa3, 0x0b, 0x6c, 0x85, 0x13, 0xf3, 0xb9, - 0x5d, 0x8c, 0x0e, 0x12, 0xaf, 0x29, 0xb1, 0x6d, 0x00, 0x95, 0x76, 0xfb, - 0x76, 0x74, 0x13, 0xf9, 0x1b, 0x3c, 0x06, 0xed, 0xfb, 0xe0, 0x89, 0x9f, - 0xc0, 0x8b, 0x57, 0x50, 0xa3, 0xb3, 0xda, 0xe0, 0x55, 0x59, 0xe2, 0x9f, - 0x7a, 0x43, 0xaf, 0x93, 0x54, 0xdb, 0x4c, 0x6e, 0x37, 0x23, 0xe9, 0xa4, - 0xbf, 0x03, 0x75, 0x0d, 0x30, 0xf2, 0x22, 0x7a, 0xf5, 0x6e, 0xf1, 0x29, - 0x2e, 0xe2, 0x79, 0xba, 0x63, 0xfd, 0x51, 0xb6, 0x04, 0x90, 0x96, 0x3a, - 0xff, 0xc7, 0x47, 0xd4, 0x2e, 0xb5, 0x0c, 0x92, 0x1a, 0x07, 0x98, 0x85, - 0x97, 0x20, 0xde, 0xaa, 0x06, 0x2f, 0x1c, 0x01, 0x9f, 0xf1, 0x9d, 0x4b, - 0x00, 0xa7, 0x5b, 0x8c, 0x3d, 0x3f, 0xa6, 0xcf, 0xe9, 0x71, 0xd9, 0x66, - 0xd4, 0xd6, 0xfe, 0x20, 0xb9, 0xb8, 0xa9, 0x06, 0x14, 0x6d, 0x99, 0xb9, - 0xa2, 0x83, 0x7c, 0x67, 0x87, 0x25, 0x72, 0xb3, 0x6c, 0x4c, 0x59, 0x2c, - 0x08, 0x8c, 0x5c, 0x4f, 0xdc, 0x8f, 0xe3, 0x53, 0x0c, 0xf3, 0x76, 0x50, - 0x3c, 0x8e, 0x46, 0x34, 0x9d, 0x82, 0x3c, 0x35, 0x1d, 0x00, 0x98, 0x15, - 0xfe, 0xf4, 0x91, 0x02, 0x6a, 0x9f, 0x43, 0xdd, 0x04, 0xeb, 0xb9, 0x87, - 0xa7, 0xe7, 0x0d, 0x29, 0x62, 0x94, 0x71, 0x49, 0xe3, 0x10, 0x29, 0x29, - 0x1b, 0x4c, 0x36, 0xae, 0x46, 0x2d, 0xc4, 0x19, 0x3b, 0x75, 0x43, 0xc3, - 0x08, 0x53, 0xf6, 0xc0, 0x18, 0x4a, 0x3a, 0xd6, 0xf6, 0x95, 0x44, 0xae, - 0xa1, 0x2f, 0xd8, 0xe4, 0x41, 0x6d, 0xd3, 0x82, 0x7d, 0xde, 0x8d, 0x5f, - 0xea, 0x0f, 0xa2, 0x3b, 0x1c, 0xab, 0xef, 0x58, 0xe6, 0xb7, 0x2a, 0xed, - 0xc9, 0x83, 0x7f, 0x4c, 0xc9, 0xef, 0x74, 0xf8, 0x37, 0xa4, 0xff, 0xe5, - 0x8b, 0xd2, 0x0f, 0x19, 0xea, 0xb2, 0xce, 0x97, 0x04, 0x16, 0x39, 0xae, - 0xc5, 0x2d, 0xf7, 0x15, 0x9a, 0x76, 0x16, 0xb8, 0x7d, 0x03, 0x15, 0xb1, - 0xf7, 0x42, 0xe8, 0x88, 0x91, 0x93, 0xac, 0x55, 0x3a, 0x76, 0x42, 0xdc, - 0xde, 0x14, 0x2b, 0x61, 0x19, 0xdc, 0xa6, 0x1b, 0x64, 0x64, 0xce, 0xdb, - 0x14, 0xae, 0xab, 0xa9, 0x00, 0xa3, 0x75, 0xf2, 0x99, 0x71, 0x69, 0x6a, - 0xbc, 0x97, 0x9d, 0x0b, 0x7c, 0x27, 0x5a, 0x0c, 0x45, 0xb4, 0x31, 0xfe, - 0xc6, 0x25, 0x97, 0x84, 0xff, 0x8a, 0xfc, 0x51, 0x3e, 0x85, 0x26, 0x78, - 0xcd, 0xa9, 0xa7, 0x5a, 0x3a, 0xbc, 0xd7, 0x18, 0x73, 0x1d, 0x29, 0xd8, - 0x17, 0x9a, 0x74, 0xb3, 0xa9, 0x20, 0x8d, 0x4f, 0x21, 0xf7, 0x77, 0x01, - 0xd1, 0x2d, 0xda, 0xc2, 0x48, 0xb5, 0xfe, 0x26, 0xeb, 0x5c, 0xb7, 0x59, - 0x82, 0xa8, 0x79, 0x92, 0xaa, 0xf7, 0xdc, 0x0d, 0x2a, 0x91, 0x28, 0x0b, - 0xb1, 0x33, 0xf5, 0x90, 0x40, 0x3a, 0x62, 0x9a, 0x45, 0xd7, 0xbc, 0x59, - 0xf2, 0xe7, 0x6c, 0x7f, 0x11, 0x31, 0x3c, 0x2a, 0xce, 0xbf, 0x3a, 0xa4, - 0x18, 0xb5, 0x92, 0x11, 0x51, 0x8f, 0x6e, 0xf9, 0xc9, 0xa1, 0x4c, 0x3c, - 0xd7, 0x81, 0x4c, 0xa4, 0xf6, 0xb4, 0x07, 0x0e, 0x8f, 0x31, 0xd7, 0xf9, - 0xf7, 0x31, 0x3d, 0xbc, 0xeb, 0xae, 0xcb, 0xe9, 0x9b, 0x0d, 0x18, 0x28, - 0x71, 0x57, 0x24, 0x46, 0x34, 0xf3, 0xbd, 0x5d, 0x03, 0x8c, 0xcd, 0x68, - 0x74, 0xa8, 0xec, 0x25, 0x18, 0x15, 0x28, 0xef, 0x63, 0xf2, 0x2d, 0x83, - 0xf2, 0xd2, 0x22, 0x5b, 0x0e, 0x4f, 0x84, 0xda, 0x0c, 0x84, 0x78, 0xc9, - 0x00, 0xe6, 0xcb, 0x3b, 0x69, 0xff, 0x71, 0xbe, 0x3e, 0xca, 0xdb, 0xc7, - 0x0c, 0xfb, 0x5f, 0xa5, 0x33, 0x6f, 0xe2, 0x08, 0x68, 0x1e, 0x4d, 0xda, - 0xc9, 0x1d, 0xdd, 0xc3, 0xc3, 0xcb, 0x61, 0x2a, 0x93, 0xe0, 0xe7, 0x20, - 0xcb, 0x2b, 0x42, 0x14, 0x3f, 0xde, 0x19, 0x4a, 0xd2, 0x2c, 0x1f, 0x45, - 0xef, 0xb7, 0x7b, 0xbe, 0x38, 0xb4, 0xf0, 0xac, 0x62, 0x77, 0x83, 0xfe, - 0xe4, 0x3e, 0x57, 0xd3, 0xa2, 0x98, 0xca, 0x51, 0x16, 0x82, 0x33, 0x8c, - 0x4e, 0xb7, 0x86, 0x43, 0xf0, 0x08, 0x3f, 0x22, 0x8c, 0x4d, 0xfe, 0xca, - 0x9b, 0xd8, 0xe1, 0xf5, 0x93, 0xb0, 0xe2, 0x6a, 0xbb, 0x08, 0x41, 0x47, - 0x99, 0x69, 0xfe, 0x32, 0xd3, 0x65, 0xe5, 0xc4, 0x44, 0x0c, 0x63, 0xd7, - 0x13, 0x07, 0x27, 0x68, 0x49, 0xb1, 0x26, 0xd6, 0xcb, 0xaf, 0x15, 0x59, - 0xbf, 0x4a, 0x26, 0xb0, 0xcd, 0x79, 0xbe, 0xa0, 0x6e, 0xe8, 0x90, 0x20, - 0xb1, 0x53, 0x64, 0x32, 0x9b, 0x9c, 0x9e, 0x3f, 0x76, 0x53, 0x2f, 0xc8, - 0x1d, 0x4a, 0xe6, 0xc7, 0x2d, 0x32, 0xd2, 0xa9, 0x0d, 0x36, 0x22, 0xb7, - 0xf1, 0xe6, 0x96, 0x66, 0x3c, 0xea, 0x59, 0x01, 0x72, 0x87, 0xd8, 0x5e, - 0x80, 0x1b, 0x2a, 0xfa, 0x48, 0x88, 0x10, 0xf2, 0x2f, 0x46, 0x19, 0x36, - 0xb6, 0x5c, 0xbb, 0x77, 0xee, 0xca, 0xdf, 0xe4, 0xdb, 0x9d, 0x5a, 0x2a, - 0xf5, 0xc6, 0xb0, 0x94, 0x30, 0x32, 0x1d, 0x72, 0x8e, 0x7d, 0xef, 0x24, - 0x9c, 0x9f, 0x41, 0x89, 0xae, 0x76, 0x00, 0x85, 0x66, 0x17, 0xa7, 0x03, - 0x9e, 0xb0, 0x9e, 0xe5, 0x86, 0x25, 0x64, 0x20, 0x49, 0x0e, 0xbf, 0x03, - 0xa2, 0x49, 0xb6, 0x7f, 0x15, 0x5d, 0x7d, 0xc2, 0xdf, 0xd0, 0x98, 0x1e, - 0x11, 0x3e, 0x25, 0x90, 0x46, 0x4c, 0x48, 0x6d, 0xdf, 0x62, 0x5e, 0xb4, - 0x77, 0x22, 0xba, 0x4c, 0xc3, 0x81, 0x83, 0x11, 0x09, 0xc6, 0x51, 0x4d, - 0xa1, 0xb9, 0xf1, 0x81, 0xb4, 0x35, 0x79, 0x2c, 0x97, 0x9f, 0xe1, 0xd8, - 0x1d, 0x69, 0x17, 0x74, 0xb4, 0x6d, 0x14, 0x2b, 0x96, 0xd9, 0x84, 0x0e, - 0x40, 0x44, 0x1b, 0x14, 0x27, 0x80, 0xd1, 0x29, 0x28, 0xd7, 0x9e, 0xfc, - 0xb0, 0x9e, 0x7c, 0x2b, 0x93, 0x60, 0xc6, 0x3e, 0x93, 0x18, 0x4a, 0xf0, - 0xf6, 0xc7, 0x91, 0x58, 0x2f, 0xc5, 0xff, 0x73, 0xe5, 0xf1, 0x86, 0xf2, - 0xbe, 0xa7, 0x7d, 0x89, 0x83, 0x4c, 0xe2, 0x5a, 0x3a, 0xc5, 0x5f, 0x65, - 0x28, 0x93, 0xa1, 0x0a, 0x31, 0x4b, 0x05, 0x1a, 0x25, 0x21, 0x06, 0x58, - 0xdf, 0xa6, 0x48, 0xa9, 0xa0, 0xc7, 0x73, 0xfa, 0x76, 0x09, 0xc5, 0xd2, - 0xe2, 0xc8, 0x35, 0xf5, 0x9f, 0x16, 0x29, 0x71, 0x67, 0x9a, 0x84, 0x41, - 0xc9, 0x36, 0xa6, 0x2c, 0x9a, 0x6c, 0x4e, 0x4b, 0x05, 0xae, 0xd2, 0x2d, - 0x31, 0x45, 0x61, 0x86, 0x5b, 0x51, 0x4d, 0xa1, 0x4c, 0x6c, 0xce, 0x5b, - 0x2d, 0x1e, 0x59, 0x6b, 0x86, 0x13, 0xf4, 0xf8, 0x3d, 0xfe, 0xc5, 0xf7, - 0x67, 0x3f, 0x74, 0x70, 0x85, 0x9e, 0x91, 0xde, 0x80, 0xcf, 0x94, 0xc8, - 0xfc, 0xf4, 0x9a, 0xf7, 0xc2, 0xce, 0xe7, 0x4f, 0x62, 0x19, 0x59, 0x13, - 0x67, 0xb1, 0x9e, 0xde, 0x5c, 0x72, 0x2a, 0xb3, 0x45, 0xa0, 0xa1, 0x8b, - 0x97, 0x6b, 0xf2, 0xb1, 0x4c, 0x8c, 0x2d, 0xa4, 0x31, 0x65, 0xea, 0xb1, - 0xac, 0x39, 0x6f, 0x63, 0xc1, 0xe3, 0xda, 0xc2, 0x3f, 0xff, 0x57, 0x95, - 0x57, 0xf7, 0x55, 0xf9, 0x47, 0xbb, 0x39, 0x10, 0x9b, 0x11, 0xce, 0x14, - 0x7f, 0x3c, 0xdf, 0x15, 0x40, 0x6e, 0xe4, 0xe4, 0x59, 0xc0, 0x64, 0xb9, - 0xf4, 0xc6, 0x17, 0xc1, 0x76, 0xf8, 0x7a, 0xdd, 0xa7, 0x97, 0x86, 0x3a, - 0x23, 0x31, 0xf9, 0x53, 0x4d, 0xdd, 0xd0, 0x09, 0xcf, 0xc3, 0x98, 0xdb, - 0xa8, 0xfe, 0x91, 0x7f, 0x5e, 0x3e, 0x1b, 0xd2, 0xe5, 0xeb, 0xa0, 0xe9, - 0x15, 0xcd, 0xa5, 0x81, 0xa6, 0x31, 0x8d, 0xb8, 0xa0, 0x46, 0x9c, 0x4c, - 0xdf, 0xed, 0x2f, 0x6e, 0xfb, 0xd7, 0xec, 0xc5, 0x42, 0x2b, 0x8c, 0x71, - 0x34, 0x48, 0xf2, 0xd5, 0x81, 0x0d, 0x50, 0x8e, 0xe3, 0x88, 0xe0, 0xc6, - 0xb3, 0x60, 0x24, 0xb3, 0x7b, 0xb4, 0xa1, 0x20, 0x4f, 0x6e, 0x18, 0x38, - 0x42, 0x5c, 0x33, 0x94, 0x15, 0x63, 0x0b, 0x05, 0x9e, 0xa4, 0x7c, 0xe4, - 0x34, 0x99, 0x60, 0x6a, 0x35, 0x46, 0x2b, 0xb8, 0x1f, 0x88, 0x39, 0xf8, - 0x82, 0x76, 0xca, 0x25, 0x50, 0x37, 0x57, 0x41, 0xba, 0x89, 0x1b, 0x5d, - 0x7c, 0xd5, 0x32, 0x8d, 0xbf, 0xeb, 0xb5, 0x5b, 0x2a, 0x43, 0x13, 0x42, - 0x6f, 0x45, 0x49, 0x5f, 0x40, 0x4d, 0xee, 0xb1, 0xec, 0x42, 0x62, 0xcf, - 0xb8, 0xb6, 0x50, 0x97, 0x2b, 0xfb, 0xf9, 0x00, 0xd9, 0x28, 0xc2, 0x1a, - 0x01, 0x52, 0xa5, 0x3e, 0xbc, 0xe8, 0x7f, 0xa7, 0xda, 0x33, 0xd6, 0x39, - 0xde, 0xe7, 0x23, 0xae, 0x2b, 0x9c, 0x63, 0x76, 0x8e, 0xc2, 0xdd, 0xd5, - 0x94, 0x7f, 0x84, 0xbf, 0x99, 0xba, 0x3b, 0xf0, 0x81, 0xb5, 0x42, 0x37, - 0x7e, 0xd3, 0x61, 0x2d, 0x3d, 0x03, 0xfa, 0xc0, 0x68, 0x75, 0x9d, 0x10, - 0xb2, 0x96, 0x26, 0x18, 0x48, 0xdd, 0x70, 0xad, 0x9e, 0x20, 0x56, 0xdd, - 0x0e, 0xa3, 0xc6, 0xe8, 0x1a, 0x04, 0x76, 0x78, 0xb5, 0xd7, 0xdd, 0x75, - 0xfa, 0xc9, 0xb7, 0xe4, 0x33, 0xe1, 0xe7, 0x8e, 0x76, 0x2f, 0xf9, 0x98, - 0x6c, 0x48, 0x85, 0x74, 0x4a, 0x0c, 0x33, 0x96, 0x50, 0x08, 0x84, 0x79, - 0x3e, 0x06, 0xec, 0xd6, 0x2f, 0x79, 0x17, 0x07, 0x54, 0xdd, 0xd1, 0x35, - 0x1b, 0xa5, 0xbc, 0x46, 0x21, 0xb8, 0x33, 0xea, 0x7f, 0x9c, 0xf2, 0xa5, - 0x41, 0x0c, 0x6d, 0x46, 0xd8, 0xa5, 0xc4, 0x83, 0x52, 0x18, 0x28, 0xde, - 0x16, 0x85, 0xb9, 0x39, 0x8c, 0xdc, 0x3d, 0x7a, 0xd2, 0x3a, 0x93, 0x11, - 0xd8, 0x54, 0x1a, 0x5b, 0x3f, 0x35, 0x10, 0xa9, 0x6c, 0x3b, 0x2c, 0x16, - 0x2e, 0x35, 0xd0, 0x07, 0x9d, 0xbd, 0x0e, 0xb8, 0xb8, 0x93, 0x65, 0xf9, - 0x32, 0x0e, 0x28, 0x98, 0x5b, 0x37, 0xa4, 0x2c, 0xaf, 0x7c, 0xdc, 0xd4, - 0x81, 0x43, 0x97, 0xea, 0x1c, 0x7b, 0xa8, 0x10, 0xa7, 0xaa, 0x5a, 0x50, - 0xf0, 0x34, 0xaf, 0xe5, 0xfa, 0xab, 0x57, 0x4b, 0x87, 0x9b, 0x4d, 0x88, - 0x68, 0xd1, 0xa1, 0x56, 0xa0, 0x76, 0xf1, 0x68, 0x8b, 0x9e, 0x3d, 0x38, - 0x0b, 0x73, 0xf6, 0xf2, 0x4b, 0xeb, 0x2b, 0x51, 0x0b, 0x06, 0xbb, 0x62, - 0x6e, 0xeb, 0x87, 0x3c, 0x78, 0x01, 0x56, 0x0b, 0x97, 0x04, 0x4f, 0x92, - 0xa7, 0xf3, 0x23, 0x7a, 0x77, 0x6a, 0x7a, 0x48, 0x77, 0x30, 0x51, 0xe7, - 0x98, 0xe1, 0xa3, 0xc4, 0x31, 0x50, 0xb4, 0x9f, 0xac, 0xae, 0xa3, 0x63, - 0xcf, 0x2a, 0x22, 0xd4, 0x5e, 0x3e, 0xf8, 0x17, 0x8f, 0x89, 0xcc, 0xb9, - 0x5a, 0x06, 0x01, 0xf1, 0xb3, 0x14, 0xf4, 0xa8, 0xc9, 0x98, 0x57, 0x16, - 0x4c, 0x9d, 0x4f, 0xab, 0xeb, 0x7e, 0x9b, 0x9c, 0x33, 0xc8, 0xe3, 0x9c, - 0x25, 0x6d, 0xf2, 0x1e, 0xa2, 0xf1, 0xdb, 0xeb, 0x56, 0x8a, 0x93, 0x59, - 0x7a, 0x83, 0x19, 0x0d, 0x48, 0x30, 0x18, 0xd0, 0xe0, 0xcf, 0xbb, 0x56, - 0x9c, 0x34, 0x27, 0x9c, 0x8e, 0x2b, 0x01, 0x68, 0xfd, 0xa8, 0x3a, 0xd4, - 0x40, 0x70, 0x75, 0xb8, 0xe9, 0x8a, 0xae, 0xc3, 0x36, 0x4f, 0xbb, 0xe6, - 0x31, 0xbd, 0x1b, 0x63, 0xe3, 0x19, 0x2a, 0x2d, 0x49, 0x6b, 0x0d, 0x84, - 0x81, 0x8d, 0xe1, 0x40, 0xb0, 0x11, 0xd3, 0xca, 0x56, 0x32, 0x1e, 0x07, - 0x9d, 0x68, 0x73, 0x39, 0x21, 0xb0, 0x6d, 0x12, 0x38, 0xad, 0x80, 0xa2, - 0xaf, 0x3a, 0xcb, 0x6c, 0x25, 0x3f, 0xb4, 0x4a, 0xc6, 0x01, 0x36, 0xdf, - 0x48, 0x9c, 0x3f, 0xee, 0x76, 0x5e, 0xa2, 0xb6, 0xfc, 0xef, 0x08, 0x89, - 0x9b, 0xfa, 0xd2, 0x28, 0xa6, 0xc1, 0xea, 0x5b, 0x37, 0x18, 0xa1, 0xf7, - 0x8a, 0x82, 0x9a, 0xc2, 0x18, 0x3c, 0x58, 0x2c, 0x7e, 0x38, 0x6d, 0x5c, - 0x56, 0x75, 0xc2, 0xf1, 0x2c, 0xd5, 0xb1, 0x15, 0x90, 0x83, 0x36, 0xd8, - 0x43, 0x53, 0xba, 0x18, 0x84, 0x94, 0xb3, 0x9a, 0xf6, 0xd7, 0xcc, 0xb3, - 0x42, 0x0e, 0x29, 0xd9, 0xb1, 0x1f, 0x15, 0x41, 0xd6, 0xb6, 0x42, 0xce, - 0xfd, 0x70, 0xe7, 0xb0, 0xe8, 0x56, 0xa2, 0x16, 0x4e, 0x38, 0x40, 0x93, - 0x74, 0xf0, 0x87, 0x0b, 0x8e, 0x61, 0x05, 0xf5, 0xf4, 0xc5, 0x1b, 0x49, - 0x55, 0x9c, 0x4a, 0x59, 0x2c, 0xa5, 0xb6, 0x3e, 0x48, 0x02, 0x81, 0x50, - 0xd9, 0x16, 0x3d, 0xd4, 0xb2, 0xc5, 0x19, 0xdc, 0x3c, 0x94, 0xdb, 0x0d, - 0xfb, 0x94, 0x23, 0xce, 0x50, 0xd6, 0xbf, 0xa9, 0xc4, 0x40, 0x08, 0xdb, - 0x53, 0x3f, 0x38, 0x1b, 0xa2, 0x39, 0xb8, 0xac, 0xe3, 0x1c, 0x4c, 0xac, - 0xa5, 0x24, 0xd8, 0xf6, 0x95, 0x80, 0xdc, 0xb6, 0xb8, 0xa8, 0x85, 0x11, - 0x67, 0x28, 0x90, 0xe1, 0xec, 0x92, 0x22, 0xf6, 0x31, 0x15, 0x24, 0xfa, - 0xd8, 0x2d, 0xc7, 0x70, 0xfe, 0x2b, 0xe4, 0x73, 0x07, 0xed, 0x5d, 0x6a, - 0x25, 0x34, 0xd1, 0xbf, 0x81, 0x31, 0x63, 0xb3, 0xfc, 0xab, 0x61, 0xa9, - 0x5b, 0x40, 0x00, 0xfd, 0xcf, 0x9d, 0x8f, 0x2a, 0xc3, 0x83, 0xe2, 0xce, - 0x9c, 0x84, 0xb6, 0xcd, 0x74, 0x4b, 0x28, 0xad, 0x03, 0x66, 0x50, 0x59, - 0x5f, 0x18, 0x25, 0x3f, 0xb0, 0xb3, 0xec, 0xb4, 0xd7, 0xf3, 0xb7, 0x55, - 0xf0, 0x7b, 0x80, 0xec, 0x92, 0x2d, 0xa6, 0x00, 0x74, 0x6c, 0x9c, 0x8c, - 0xd9, 0x43, 0x2e, 0x2e, 0x66, 0xdf, 0x4b, 0x5b, 0x9c, 0x07, 0x86, 0x8e, - 0x17, 0x59, 0xdc, 0xd5, 0xa2, 0x77, 0x5f, 0x8c, 0x28, 0x03, 0xd3, 0x02, - 0x96, 0xc8, 0xad, 0xfe, 0xef, 0x56, 0x50, 0x60, 0x54, 0xbd, 0x78, 0x1a, - 0xdf, 0x02, 0x19, 0x82, 0xd2, 0x9a, 0xbf, 0xd6, 0x02, 0x8d, 0x74, 0x7c, - 0xb0, 0xd4, 0x95, 0xa7, 0x29, 0xb8, 0xe8, 0xef, 0x30, 0xb9, 0x77, 0x50, - 0x80, 0x04, 0x6b, 0x58, 0x11, 0x36, 0x7b, 0xfe, 0x80, 0x07, 0x13, 0xc8, - 0x50, 0x36, 0xe5, 0xa3, 0x3d, 0x01, 0x4a, 0x5f, 0x5b, 0xcf, 0x52, 0x08, - 0x89, 0xbb, 0x3d, 0x54, 0x55, 0x9b, 0xea, 0xc5, 0x57, 0x31, 0xf3, 0x1a, - 0x6d, 0xcf, 0xe4, 0xf8, 0x5c, 0x9e, 0xf0, 0xde, 0x4e, 0x7b, 0x35, 0x7b, - 0x92, 0xe8, 0x19, 0xcd, 0x73, 0xbd, 0x06, 0x85, 0xb9, 0x61, 0x43, 0x80, - 0x5b, 0xf4, 0xe5, 0x36, 0x8f, 0x8d, 0x33, 0x67, 0x6d, 0x8b, 0x83, 0x4c, - 0xd1, 0xf6, 0x9a, 0x45, 0xb5, 0x6d, 0xa0, 0x06, 0x5e, 0x5d, 0x80, 0xaa, - 0x3e, 0x9b, 0x5d, 0xdb, 0x7f, 0xc8, 0xe3, 0xb8, 0xc1, 0xb5, 0x43, 0xc7, - 0x78, 0xfc, 0x96, 0xa3, 0x1c, 0xe7, 0x2c, 0xf9, 0x79, 0x19, 0xb6, 0x5e, - 0x9e, 0x2a, 0xcc, 0x6b, 0xf7, 0x33, 0xaa, 0x46, 0x52, 0x87, 0x87, 0xd9, - 0x6c, 0x29, 0x9e, 0x68, 0xea, 0x48, 0x00, 0x6c, 0xf7, 0xf6, 0x90, 0x87, - 0xc7, 0xa2, 0x95, 0xcf, 0xaf, 0x0b, 0x9b, 0xa3, 0x9f, 0x68, 0xc8, 0x30, - 0x24, 0xcf, 0x1c, 0x96, 0x27, 0xf1, 0x01, 0x66, 0x90, 0xed, 0xff, 0x69, - 0xcf, 0x5e, 0xe0, 0xe4, 0x33, 0xb2, 0xe1, 0xf1, 0xa9, 0x24, 0xd2, 0xc4, - 0x2d, 0x94, 0x2b, 0xf4, 0xaa, 0x97, 0xc8, 0x8c, 0x44, 0x5c, 0xa4, 0x70, - 0xbd, 0x57, 0xe0, 0xd8, 0x64, 0xd2, 0x5d, 0xc9, 0xf8, 0x90, 0xa9, 0x46, - 0x50, 0x6c, 0xd3, 0x10, 0x62, 0xcd, 0x2c, 0x47, 0xae, 0x92, 0x91, 0xf2, - 0x6b, 0x1e, 0xf2, 0xbc, 0xec, 0x49, 0x4e, 0x58, 0xc7, 0x40, 0xe5, 0xbc, - 0xef, 0x6b, 0xac, 0x44, 0xba, 0x40, 0x5f, 0xd2, 0xde, 0xef, 0xb1, 0xf0, - 0x36, 0x43, 0x9f, 0x45, 0x79, 0x00, 0x1b, 0x73, 0x7e, 0x8c, 0x34, 0xf2, - 0x2d, 0xb8, 0xc2, 0x94, 0x9b, 0x32, 0x11, 0x00, 0xc2, 0x85, 0xe8, 0xe8, - 0x9c, 0x0b, 0x02, 0x2b, 0x6e, 0x66, 0xa9, 0xca, 0x02, 0x1d, 0x67, 0xd6, - 0xb2, 0x04, 0xaa, 0x29, 0x8a, 0x59, 0x69, 0xa1, 0x4a, 0xae, 0x22, 0x3d, - 0xf9, 0xad, 0x0c, 0x9b, 0xcd, 0x30, 0x61, 0xf1, 0xd7, 0x0e, 0x55, 0x60, - 0x4d, 0x67, 0x3f, 0x08, 0x1e, 0x35, 0xfc, 0x96, 0x80, 0xed, 0xbb, 0x54, - 0xd6, 0x0b, 0x70, 0x7f, 0x5b, 0xeb, 0x3f, 0x05, 0x7c, 0x25, 0xb4, 0x7d, - 0xda, 0xc7, 0x8c, 0xff, 0xf3, 0x46, 0x65, 0x97, 0xd9, 0x76, 0xad, 0x52, - 0xd2, 0xb8, 0xcc, 0x18, 0xb6, 0xcd, 0xdb, 0x56, 0x76, 0xc3, 0x30, 0xd0, - 0xf1, 0x5d, 0x37, 0x21, 0x59, 0x5d, 0x54, 0x3e, 0x87, 0x66, 0x78, 0x6f, - 0x68, 0xd9, 0xdb, 0x66, 0x40, 0xae, 0xc1, 0x4f, 0x34, 0xee, 0xa9, 0xf7, - 0xb4, 0x43, 0x2e, 0xa1, 0x7c, 0x95, 0x76, 0xca, 0xfd, 0x69, 0xde, 0x5c, - 0xbe, 0x14, 0x45, 0x25, 0x30, 0x3a, 0xe6, 0x24, 0x1f, 0x2c, 0x27, 0x28, - 0x4f, 0x23, 0x9e, 0xf9, 0x23, 0x6d, 0x2e, 0x05, 0xb4, 0x64, 0x89, 0x24, - 0x24, 0x44, 0x15, 0x74, 0x2a, 0x9a, 0x7a, 0xa8, 0x4a, 0xc0, 0xcd, 0x59, - 0xdb, 0x41, 0x16, 0xc5, 0xed, 0x2b, 0xb1, 0xd2, 0xbc, 0x37, 0x40, 0xe8, - 0x4d, 0xa4, 0xef, 0xb8, 0x47, 0xe9, 0xdc, 0x45, 0xd4, 0x85, 0x6a, 0xf6, - 0xda, 0x5e, 0x7b, 0xf2, 0xeb, 0x47, 0xc9, 0x07, 0xcf, 0x7c, 0xaa, 0xcf, - 0x79, 0xfa, 0x3a, 0x94, 0x69, 0x07, 0x17, 0xc1, 0x97, 0x87, 0x92, 0x8e, - 0xa8, 0x3c, 0x51, 0xa0, 0x91, 0xa6, 0xdc, 0x17, 0x99, 0xe8, 0x65, 0x92, - 0x20, 0x14, 0xda, 0x3e, 0xe2, 0x37, 0x33, 0x7a, 0x57, 0x5f, 0x54, 0x41, - 0x15, 0xa8, 0xc9, 0xad, 0xb1, 0xc3, 0x7f, 0x43, 0xc3, 0xeb, 0x29, 0x33, - 0xbf, 0xd9, 0x88, 0x6f, 0x8b, 0x7c, 0x74, 0x0b, 0x88, 0x2b, 0x51, 0x45, - 0xa8, 0xa5, 0x56, 0xf0, 0xde, 0xd0, 0xec, 0xd7, 0x83, 0x59, 0xa7, 0x77, - 0x87, 0xd4, 0xde, 0xa0, 0x6b, 0x6e, 0xc5, 0xc7, 0xbc, 0xbe, 0xab, 0x21, - 0xda, 0xb0, 0xe1, 0xe1, 0x9b, 0x4d, 0x0d, 0x86, 0x84, 0x5a, 0xbc, 0x1a, - 0xe9, 0x9b, 0xa9, 0xe4, 0x29, 0xf3, 0x9d, 0xf3, 0x00, 0x30, 0xa8, 0x67, - 0xc7, 0x09, 0x25, 0xe8, 0x8b, 0x72, 0x89, 0x00, 0x2f, 0x55, 0x01, 0x25, - 0x39, 0x89, 0x7a, 0x88, 0xdf, 0x9a, 0xa0, 0x93, 0xef, 0x92, 0x50, 0x3a, - 0xf6, 0x90, 0x81, 0xae, 0xe0, 0xe6, 0x44, 0x46, 0x2d, 0xa9, 0x1b, 0x1f, - 0x07, 0xd8, 0x9c, 0x0f, 0x86, 0xa1, 0x9d, 0xbf, 0xeb, 0xde, 0xc5, 0x52, - 0x4b, 0x44, 0x3c, 0x41, 0xd0, 0x37, 0xbd, 0xff, 0x7f, 0x82, 0x36, 0xd5, - 0xe9, 0x19, 0x8b, 0x3c, 0x23, 0xad, 0xbe, 0x31, 0xc7, 0xce, 0xb0, 0x1b, - 0x9f, 0x26, 0x87, 0x03, 0xf9, 0xa0, 0xa4, 0xf6, 0xc1, 0xc9, 0x45, 0xfd, - 0x7a, 0x68, 0x46, 0x7f, 0x7a, 0x85, 0xf4, 0x6f, 0x39, 0xc8, 0x82, 0x3c, - 0xf6, 0xb6, 0xa7, 0xf4, 0xea, 0x2d, 0xb5, 0x5c, 0x1b, 0x5e, 0xcc, 0xe1, - 0xca, 0x4b, 0x89, 0x38, 0xc2, 0x27, 0x41, 0x80, 0xc5, 0x48, 0x20, 0xe5, - 0x95, 0x01, 0x3e, 0xba, 0x8f, 0xff, 0x36, 0x68, 0x54, 0xe3, 0x20, 0x4d, - 0xbd, 0x00, 0x2b, 0x85, 0x08, 0x06, 0xda, 0x00, 0x65, 0xf5, 0x48, 0xcd, - 0xfb, 0x8a, 0xa0, 0x5d, 0xcb, 0x8f, 0x28, 0x5c, 0xa5, 0x9d, 0xba, 0x3f, - 0x79, 0x24, 0x45, 0xbf, 0xd1, 0x28, 0xeb, 0x34, 0xb8, 0x02, 0x52, 0x19, - 0xe5, 0x2c, 0x73, 0xf1, 0x8e, 0xc5, 0x55, 0x0f, 0xf8, 0x29, 0x8f, 0xff, - 0x9d, 0xe9, 0x43, 0x79, 0x9c, 0x13, 0xb5, 0xe5, 0xad, 0x8c, 0xbf, 0x1b, - 0x82, 0xd9, 0xcb, 0xee, 0x0d, 0xc4, 0x6e, 0x23, 0x1c, 0xe0, 0x18, 0xb4, - 0x16, 0xb6, 0x98, 0x62, 0x60, 0x2e, 0xd7, 0x63, 0x33, 0x17, 0xbd, 0x7a, - 0xb0, 0xe2, 0x07, 0x33, 0x00, 0x59, 0x2c, 0x49, 0xc5, 0x73, 0x89, 0xdf, - 0x62, 0x48, 0xaa, 0x38, 0xc0, 0x39, 0x59, 0x80, 0x34, 0xcc, 0x5c, 0xb6, - 0x45, 0x3b, 0x39, 0x62, 0xc3, 0x68, 0x74, 0x22, 0x78, 0x1d, 0x03, 0x0a, - 0x22, 0xe1, 0xff, 0x5a, 0xd1, 0x34, 0x61, 0x71, 0x25, 0xf6, 0xea, 0xcd, - 0xc3, 0xa7, 0x56, 0x32, 0x92, 0x30, 0x6a, 0xc0, 0xc1, 0x13, 0x77, 0x08, - 0x0c, 0x9a, 0xbc, 0xc7, 0xcc, 0x36, 0xeb, 0xde, 0x4c, 0x31, 0x61, 0xcc, - 0x44, 0x43, 0x7f, 0xc5, 0x27, 0x4f, 0xe6, 0x3a, 0x08, 0x92, 0xe5, 0x70, - 0xf3, 0xa5, 0x14, 0x2d, 0xe1, 0x29, 0x6f, 0xf1, 0x41, 0xf8, 0xbf, 0x87, - 0xe5, 0xa2, 0x4f, 0xb1, 0x10, 0xcc, 0x01, 0x23, 0x3b, 0x4a, 0xc0, 0x91, - 0x8b, 0x47, 0xe0, 0x80, 0xdf, 0x0f, 0x72, 0xd7, 0x9a, 0xf0, 0xc8, 0x34, - 0xcb, 0xc9, 0x98, 0x2c, 0x02, 0x14, 0x48, 0x93, 0x5c, 0x1d, 0x15, 0xe1, - 0x26, 0xce, 0x30, 0xef, 0x64, 0x96, 0x54, 0xd4, 0xe4, 0xcc, 0x8e, 0x5b, - 0x33, 0xe2, 0x80, 0x78, 0x3a, 0xa7, 0x33, 0x84, 0xed, 0x6e, 0x0f, 0x0c, - 0x1e, 0xa7, 0xea, 0x3f, 0xba, 0xf5, 0xee, 0x8c, 0x8c, 0xdf, 0x89, 0x79, - 0x48, 0x00, 0x09, 0x23, 0x97, 0x8d, 0x52, 0xc9, 0x94, 0x74, 0x2c, 0x21, - 0x33, 0x28, 0x06, 0x0b, 0x15, 0x85, 0x31, 0x5d, 0x60, 0x75, 0xfd, 0x2e, - 0xdc, 0x7f, 0x67, 0x57, 0x6c, 0x9f, 0x28, 0xcf, 0x6a, 0xac, 0x7a, 0x86, - 0x67, 0xe8, 0xd9, 0xc5, 0x39, 0xea, 0xb1, 0x8f, 0xc2, 0xf4, 0xf6, 0x6b, - 0x11, 0xd0, 0x72, 0x76, 0x7d, 0x28, 0xae, 0xdb, 0x2e, 0x55, 0xd9, 0x75, - 0x7b, 0xba, 0x70, 0x22, 0x99, 0x93, 0xae, 0x48, 0x57, 0x0a, 0xea, 0x5d, - 0x8f, 0xd8, 0x2e, 0x44, 0xd5, 0x08, 0x15, 0x7e, 0x9a, 0x11, 0x8a, 0x17, - 0x67, 0xb9, 0x52, 0x3b, 0xc9, 0x5d, 0x47, 0x25, 0x84, 0x2c, 0x7f, 0xde, - 0xce, 0x65, 0x97, 0x1c, 0x2e, 0x09, 0x23, 0x56, 0x61, 0xab, 0xf2, 0x6d, - 0x9e, 0xc1, 0x80, 0xd4, 0x9b, 0x6f, 0x96, 0xc9, 0xfb, 0xc7, 0xfb, 0x77, - 0xd0, 0xf5, 0x76, 0x18, 0xcc, 0xc4, 0x58, 0x10, 0xa7, 0x91, 0xd3, 0xb1, - 0x41, 0xf0, 0xbe, 0x7f, 0x6f, 0x25, 0x1e, 0x0c, 0x8d, 0x2f, 0x89, 0x88, - 0xfc, 0xe0, 0xb9, 0x80, 0xa2, 0xb7, 0xe2, 0xe3, 0x01, 0x99, 0xe4, 0xe6, - 0xf0, 0x50, 0xc9, 0x36, 0x4c, 0xf7, 0x2f, 0xbd, 0x29, 0xcb, 0x55, 0xd6, - 0x2b, 0x0c, 0xac, 0x58, 0xf1, 0x22, 0xed, 0x86, 0x9e, 0x95, 0xda, 0x1c, - 0x1c, 0x04, 0xd0, 0x6f, 0x7a, 0x45, 0xa0, 0x8d, 0x4a, 0xd6, 0xbf, 0x88, - 0x05, 0x8c, 0x29, 0x84, 0x10, 0x00, 0x05, 0xd7, 0x81, 0xe5, 0x55, 0xd3, - 0x38, 0x51, 0xa0, 0x97, 0x59, 0x51, 0x1e, 0xde, 0x9f, 0x1f, 0x53, 0x71, - 0xd6, 0xc2, 0x5d, 0x46, 0x47, 0xd9, 0x00, 0xd1, 0x75, 0xc7, 0x04, 0x4a, - 0xa6, 0x61, 0x14, 0x63, 0x0f, 0x08, 0x2d, 0x77, 0x14, 0x6d, 0x7d, 0x1a, - 0xaa, 0x94, 0xa9, 0xf3, 0x0c, 0xea, 0x91, 0x32, 0x94, 0x0b, 0x25, 0x66, - 0xb8, 0xda, 0x94, 0x5a, 0xa0, 0x90, 0xd8, 0xef, 0xc8, 0x4c, 0x5e, 0x33, - 0x06, 0xba, 0x63, 0x90, 0x17, 0xe3, 0x91, 0x89, 0x4a, 0xcf, 0x47, 0x12, - 0x68, 0x0a, 0x7d, 0x7d, 0xb0, 0xc0, 0x69, 0x63, 0xc7, 0x28, 0xe1, 0x96, - 0xba, 0xa7, 0x7f, 0x04, 0x16, 0xe6, 0x3e, 0x4a, 0x82, 0xe3, 0x1b, 0x66, - 0xaa, 0xa4, 0x6d, 0xb7, 0xf4, 0x7b, 0xad, 0x08, 0xf8, 0xf6, 0x64, 0x5e, - 0x9f, 0xb8, 0xfa, 0x2d, 0xed, 0xe3, 0x91, 0x6b, 0x30, 0xe6, 0x25, 0xda, - 0x82, 0x50, 0x10, 0x4c, 0xeb, 0x5b, 0xad, 0x42, 0x42, 0x5f, 0xf6, 0x15, - 0x0d, 0x0e, 0x17, 0x5b, 0x40, 0x36, 0x03, 0xcd, 0xe6, 0xce, 0x9e, 0x87, - 0xa9, 0xa8, 0x9f, 0x9e, 0xbe, 0xa8, 0xec, 0x4b, 0xa5, 0x5e, 0x7b, 0x78, - 0x4a, 0xc8, 0xd8, 0x3d, 0xcb, 0xf3, 0xd0, 0x7b, 0x06, 0x58, 0x35, 0xb3, - 0x9a, 0x75, 0x19, 0x11, 0xe4, 0xe7, 0xce, 0x68, 0xf1, 0x4b, 0xda, 0xee, - 0xbf, 0xfb, 0x5d, 0xf4, 0x84, 0x66, 0xe6, 0xeb, 0xab, 0xc1, 0x8b, 0xed, - 0x45, 0x09, 0xc7, 0xe3, 0x6f, 0xa9, 0x97, 0x9d, 0xa6, 0x3e, 0x34, 0xea, - 0xd2, 0x12, 0xe5, 0x3f, 0x86, 0xd7, 0x94, 0xc4, 0xe5, 0x79, 0x09, 0x93, - 0xae, 0x03, 0x41, 0x8e, 0x30, 0xa1, 0xe7, 0x0c, 0xf1, 0x1c, 0x3b, 0x08, - 0x4a, 0x2a, 0x01, 0xf5, 0x43, 0xa6, 0x6e, 0x0d, 0xb1, 0x1a, 0x1d, 0xd8, - 0x86, 0xf5, 0xb5, 0x63, 0xe4, 0x3b, 0x3d, 0x71, 0xd8, 0x75, 0x5a, 0x9c, - 0x36, 0xd3, 0x2a, 0x57, 0x79, 0x3a, 0xbf, 0xd4, 0x5d, 0x5c, 0xbf, 0xa4, - 0xec, 0x55, 0x0f, 0x62, 0xf6, 0x50, 0x0f, 0xba, 0xf8, 0x11, 0xd0, 0xd0, - 0xec, 0xda, 0xc6, 0xdb, 0x2f, 0x59, 0x7f, 0x94, 0xac, 0xf1, 0x55, 0xd4, - 0x81, 0xf6, 0xf8, 0xf1, 0x2d, 0xd8, 0xd0, 0x15, 0x89, 0x54, 0xc9, 0xe8, - 0x7f, 0x7e, 0xc8, 0x06, 0x69, 0xf9, 0xa3, 0x7d, 0x01, 0x48, 0xa6, 0x9b, - 0xc5, 0xd8, 0x77, 0x61, 0xb5, 0xf6, 0x79, 0xee, 0x27, 0xf4, 0xe6, 0xf0, - 0xbd, 0xb1, 0xa2, 0xac, 0x2b, 0x4c, 0x0d, 0xb4, 0x5c, 0x94, 0x72, 0x75, - 0xd5, 0x15, 0xb0, 0xb7, 0x88, 0x2b, 0xab, 0xc5, 0x7d, 0x39, 0x19, 0xf8, - 0xfe, 0xf7, 0x07, 0xfe, 0x69, 0xe2, 0x2e, 0xd8, 0xc4, 0x5b, 0x75, 0xf6, - 0xe8, 0x63, 0xa9, 0x13, 0xdb, 0x00, 0x7c, 0x1a, 0x5e, 0xc4, 0xd0, 0x66, - 0x30, 0x2e, 0x11, 0xdd, 0xc2, 0xdd, 0xfb, 0x3f, 0x6e, 0xc4, 0x38, 0x54, - 0x68, 0x9f, 0xc1, 0x22, 0xb5, 0x59, 0x7f, 0x9f, 0xac, 0xca, 0x7f, 0xd7, - 0x82, 0x14, 0x3c, 0x48, 0xc3, 0x09, 0x79, 0x20, 0x48, 0x8d, 0xc4, 0x40, - 0xd9, 0x2e, 0xc7, 0xee, 0x09, 0x70, 0x7a, 0xf7, 0xd0, 0xbe, 0x44, 0xf7, - 0xf4, 0xdb, 0x4d, 0xf3, 0x6c, 0xb7, 0x80, 0xf0, 0x22, 0x52, 0x75, 0xd6, - 0x90, 0x7c, 0xbe, 0xd1, 0xf5, 0x99, 0x92, 0x24, 0x4f, 0x54, 0x00, 0xdf, - 0xfa, 0x78, 0x87, 0x9a, 0xe2, 0xb8, 0xd6, 0x89, 0xa5, 0xb5, 0x5c, 0x02, - 0x73, 0x91, 0xbd, 0x0a, 0xe3, 0xbb, 0x2a, 0xa6, 0xa4, 0x15, 0xe8, 0xde, - 0x63, 0xf7, 0x65, 0x1b, 0x8d, 0x44, 0x4e, 0xe3, 0x59, 0x01, 0xb0, 0x64, - 0xcb, 0x5f, 0x50, 0x03, 0x76, 0x03, 0xfe, 0x1e, 0xc1, 0xc3, 0x0a, 0xff, - 0x36, 0xd2, 0x0f, 0xd5, 0x1c, 0x08, 0x7b, 0xbe, 0x3f, 0x22, 0xb3, 0xdf, - 0xf0, 0x31, 0xa2, 0x49, 0x31, 0x76, 0xd9, 0x47, 0xbe, 0x75, 0x13, 0xba, - 0x76, 0xc2, 0xba, 0xcf, 0x57, 0x40, 0x90, 0x46, 0xca, 0xd2, 0x8a, 0x46, - 0xeb, 0x1f, 0xe7, 0x17, 0xa7, 0xf0, 0x0d, 0xcd, 0xa3, 0x1c, 0x07, 0x7b, - 0x4c, 0x1b, 0x7a, 0x05, 0xee, 0x3d, 0x72, 0xc4, 0x99, 0xe6, 0x7f, 0x2d, - 0xb9, 0x26, 0xc2, 0xca, 0xe6, 0x77, 0x94, 0xf4, 0x5f, 0x56, 0xff, 0xba, - 0x54, 0x8f, 0x47, 0x41, 0x50, 0xd2, 0x40, 0x55, 0x50, 0x44, 0xce, 0x8f, - 0x35, 0xc6, 0x27, 0x69, 0x86, 0x47, 0x24, 0xc6, 0xf2, 0x9f, 0x99, 0xa2, - 0x29, 0x8c, 0xb3, 0xb1, 0x21, 0x94, 0x80, 0x93, 0xe0, 0x5f, 0x88, 0x63, - 0x09, 0xb1, 0x7a, 0x10, 0x8a, 0x51, 0x8b, 0x90, 0xbc, 0x96, 0x50, 0x12, - 0x37, 0x14, 0xf2, 0xc2, 0xae, 0xd6, 0x6a, 0x39, 0x5b, 0x40, 0x83, 0x87, - 0xc0, 0x4f, 0x1a, 0xe7, 0x7e, 0x9e, 0x7d, 0xb1, 0x0f, 0xf4, 0x39, 0xa6, - 0x1e, 0x97, 0x71, 0xe5, 0x37, 0xd6, 0x51, 0x9b, 0x2f, 0xb2, 0x63, 0x82, - 0x5d, 0x8b, 0xc6, 0x13, 0xb2, 0x60, 0x6f, 0x5f, 0xa9, 0x34, 0x77, 0x70, - 0x6a, 0x9b, 0xd9, 0x45, 0x6e, 0x62, 0xaf, 0xc8, 0xc1, 0xec, 0x31, 0x35, - 0x26, 0xcc, 0x86, 0xa6, 0xff, 0x70, 0x6b, 0x07, 0x32, 0x9c, 0xb1, 0xc7, - 0xfe, 0x31, 0x8b, 0x6e, 0xa8, 0x02, 0xf9, 0x02, 0xb0, 0xa0, 0xad, 0x82, - 0xf9, 0x60, 0x8f, 0xe4, 0x59, 0x20, 0xa7, 0x8e, 0x14, 0x01, 0x15, 0x50, - 0x53, 0x95, 0x79, 0x45, 0x84, 0xa5, 0xda, 0xab, 0x87, 0xa2, 0x0f, 0xda, - 0x6b, 0x20, 0xb8, 0xe2, 0x8f, 0x3b, 0x9b, 0xda, 0xfe, 0x6d, 0xad, 0x61, - 0xa7, 0x1a, 0xb2, 0xe1, 0xcb, 0x34, 0xda, 0xfb, 0x2b, 0x0b, 0xf4, 0x6e, - 0xf1, 0xd0, 0x65, 0x12, 0x20, 0xe3, 0xdc, 0x04, 0x21, 0x74, 0x57, 0x24, - 0xe1, 0x7b, 0x14, 0x6b, 0x48, 0x23, 0x0e, 0xa5, 0x25, 0x3d, 0xd3, 0xb6, - 0x3d, 0xa8, 0x62, 0x79, 0x25, 0xc4, 0x74, 0xc3, 0xd5, 0x84, 0x1a, 0x67, - 0x37, 0x97, 0x50, 0xb1, 0x23, 0x46, 0x50, 0x87, 0x06, 0x63, 0x4c, 0x31, - 0xbe, 0xb4, 0xd2, 0x15, 0xd4, 0x57, 0x98, 0xd4, 0x56, 0xbc, 0x02, 0x62, - 0xc6, 0x15, 0xc7, 0xd2, 0x76, 0x09, 0xb0, 0x2d, 0xe3, 0xd8, 0xb6, 0x5b, - 0xa4, 0x4f, 0x9b, 0x4b, 0x8d, 0xec, 0x4f, 0x64, 0x28, 0x87, 0x75, 0x4f, - 0xb6, 0x41, 0xbf, 0x33, 0x88, 0xe8, 0x73, 0x8d, 0x86, 0x89, 0xa5, 0x4c, - 0x3b, 0xa8, 0x56, 0x61, 0x10, 0x5d, 0x85, 0xb0, 0x27, 0x60, 0xd4, 0x09, - 0x10, 0xd0, 0x66, 0x07, 0x1b, 0x4d, 0x3d, 0x32, 0x28, 0x4d, 0x1b, 0x2c, - 0xf7, 0x68, 0x51, 0x42, 0x5a, 0x9a, 0xa9, 0x55, 0x98, 0xfa, 0xa6, 0x7b, - 0x75, 0x50, 0x57, 0xb8, 0x42, 0xc6, 0xaa, 0xa1, 0xa4, 0x9d, 0xcf, 0x50, - 0xdf, 0x87, 0xc2, 0xdd, 0x87, 0x59, 0xb9, 0x1b, 0x1b, 0x77, 0x6e, 0x5c, - 0x93, 0x2a, 0x23, 0xe2, 0x2c, 0xf4, 0x1a, 0xb7, 0x37, 0x15, 0x6c, 0xb8, - 0x9d, 0xb4, 0xd6, 0xee, 0xb9, 0x59, 0x2d, 0xea, 0xe5, 0xce, 0x98, 0x3f, - 0x0e, 0xba, 0xd3, 0x95, 0x24, 0x6b, 0x95, 0x9f, 0x06, 0x69, 0x2a, 0xa9, - 0x42, 0x92, 0x79, 0x67, 0x34, 0xbc, 0x76, 0x22, 0xb2, 0x18, 0xd4, 0x29, - 0x68, 0xf4, 0x84, 0x64, 0x54, 0xc8, 0x5e, 0x34, 0xe4, 0x38, 0x6b, 0x47, - 0xb7, 0xc8, 0x3b, 0xc3, 0x61, 0xfa, 0xe4, 0x02, 0xc3, 0x36, 0xbe, 0xae, - 0xab, 0xf7, 0x9f, 0xc7, 0xe4, 0xee, 0xac, 0x84, 0x60, 0x81, 0xd8, 0x4d, - 0xeb, 0xb6, 0x74, 0xff, 0x7c, 0x4a, 0x1c, 0x40, 0x33, 0x77, 0xfc, 0x7f, - 0x38, 0x44, 0x28, 0x1a, 0x72, 0x04, 0x1c, 0x4a, 0x21, 0x6f, 0xc7, 0x2d, - 0x85, 0xf9, 0x2a, 0xdc, 0xee, 0x87, 0xee, 0x74, 0xde, 0x60, 0x19, 0xdb, - 0x2f, 0x6a, 0xb3, 0xa1, 0xe1, 0x85, 0x63, 0x29, 0x5f, 0xd4, 0x17, 0x56, - 0x40, 0x89, 0x1e, 0x39, 0xc0, 0xf8, 0xd5, 0x8c, 0x0a, 0xe7, 0xf5, 0xdf, - 0x52, 0x6d, 0x13, 0x2d, 0xde, 0x1b, 0xe8, 0x57, 0xd5, 0x15, 0x98, 0x36, - 0xb3, 0x99, 0x75, 0x3f, 0xa0, 0x7a, 0x64, 0x21, 0xbc, 0xf3, 0x45, 0x0f, - 0x16, 0xa5, 0x84, 0xa5, 0xfd, 0x76, 0xbd, 0xa2, 0x66, 0xda, 0x5e, 0x91, - 0x12, 0x50, 0x50, 0xa0, 0x65, 0x6e, 0x71, 0xfd, 0x55, 0x39, 0x24, 0xf4, - 0x10, 0x8d, 0x8b, 0x73, 0xbe, 0x81, 0xf3, 0x4f, 0xe1, 0x67, 0x56, 0xdc, - 0x11, 0xb2, 0xcd, 0x96, 0x34, 0x22, 0xfc, 0x81, 0xcf, 0x4c, 0x5a, 0x7f, - 0x1e, 0xb4, 0x1b, 0xf2, 0x0d, 0x3d, 0xbd, 0xea, 0xf2, 0x9d, 0x46, 0x96, - 0x20, 0x9d, 0x2a, 0xc8, 0x90, 0x87, 0x67, 0x69, 0x37, 0x9f, 0x0e, 0xfc, - 0x87, 0x6f, 0x5e, 0xeb, 0x32, 0x5e, 0xfd, 0x0d, 0xa3, 0xac, 0xb0, 0xa5, - 0x82, 0x6a, 0x03, 0x2e, 0x0f, 0xe2, 0x8d, 0x18, 0xc2, 0xf1, 0xd3, 0xef, - 0xce, 0x7b, 0x5d, 0xb3, 0x53, 0x38, 0x01, 0xc0, 0x0b, 0x31, 0x32, 0xe5, - 0xc8, 0x98, 0x5d, 0xf8, 0x39, 0x6d, 0xab, 0x1e, 0xda, 0x1c, 0xed, 0x24, - 0xc1, 0xed, 0xb7, 0x69, 0x1a, 0x0e, 0x9d, 0x51, 0xe8, 0x93, 0xe5, 0x7a, - 0xf6, 0x11, 0x2b, 0x22, 0x5f, 0x04, 0x7b, 0x78, 0xdb, 0xd0, 0x51, 0x4d, - 0x82, 0x91, 0xd7, 0xe6, 0x7a, 0xab, 0xf5, 0xa9, 0x68, 0x10, 0x01, 0x92, - 0x05, 0xe7, 0x72, 0x4a, 0x90, 0xf3, 0x49, 0x36, 0x65, 0x9e, 0x14, 0xc8, - 0x17, 0xff, 0x28, 0xa6, 0x80, 0xf4, 0x20, 0x6b, 0x07, 0x5f, 0xed, 0x8c, - 0x21, 0x96, 0xd7, 0x94, 0xf3, 0x46, 0xf4, 0x7f, 0x59, 0x36, 0xaa, 0xe2, - 0xbb, 0x19, 0xa3, 0x14, 0x98, 0x31, 0xbe, 0x6a, 0x1f, 0x82, 0x2e, 0xac, - 0x19, 0x3b, 0xa1, 0x12, 0x74, 0xd1, 0x83, 0xe4, 0x0e, 0xec, 0x40, 0xb6, - 0x3c, 0x6f, 0xe2, 0x01, 0x70, 0x86, 0x79, 0xa7, 0x46, 0xb9, 0x00, 0x68, - 0x55, 0xd4, 0xdd, 0xaf, 0x58, 0x2d, 0xb6, 0xa9, 0xc7, 0xf9, 0x4f, 0xb3, - 0x52, 0x27, 0xc0, 0xc3, 0xf7, 0x3a, 0x5a, 0x0d, 0xc7, 0x53, 0xf1, 0xa4, - 0x15, 0xf1, 0xae, 0x31, 0xe0, 0x42, 0x59, 0x77, 0xce, 0xa6, 0x56, 0xf7, - 0xa6, 0x56, 0xe6, 0xd1, 0xef, 0x19, 0x58, 0x48, 0x01, 0x2c, 0xc1, 0xd4, - 0x45, 0xcb, 0xa9, 0x03, 0x30, 0xb2, 0xbe, 0x89, 0x37, 0xbc, 0x94, 0xb0, - 0x4a, 0xfc, 0x50, 0xed, 0x94, 0xed, 0x8a, 0xde, 0xd0, 0x63, 0x9d, 0xb4, - 0xe0, 0x28, 0xc0, 0xa4, 0x52, 0xa4, 0x4e, 0x6a, 0xe9, 0xc2, 0x7f, 0x7c, - 0xbd, 0x7a, 0xc2, 0x05, 0xae, 0x6a, 0x24, 0x7d, 0x68, 0x60, 0x59, 0xeb, - 0x6d, 0x98, 0x8f, 0xb0, 0x30, 0xe9, 0x15, 0xa4, 0x13, 0x29, 0xa1, 0x86, - 0x28, 0x00, 0x78, 0xe3, 0x74, 0xa0, 0x03, 0x72, 0xdf, 0x4b, 0x99, 0x8f, - 0xdf, 0x25, 0x1f, 0x34, 0x2c, 0x31, 0x05, 0x21, 0xe8, 0xa5, 0x07, 0x33, - 0xdf, 0x1c, 0x49, 0x14, 0xa9, 0x51, 0x1a, 0x00, 0xba, 0xe0, 0xd5, 0x68, - 0x2d, 0xa8, 0x76, 0xdc, 0x76, 0xba, 0xbd, 0x73, 0xf1, 0xf4, 0x7c, 0x83, - 0xbe, 0xcc, 0x0b, 0xcc, 0xf8, 0x9d, 0x9a, 0x8c, 0x73, 0x1d, 0xf7, 0x32, - 0x36, 0x3d, 0x1e, 0x6c, 0xa8, 0x8f, 0xe9, 0x32, 0xac, 0x1d, 0xd5, 0xc2, - 0xb4, 0xa0, 0x8a, 0xbc, 0x1e, 0xfd, 0x6b, 0x37, 0x87, 0x8c, 0xce, 0xdf, - 0x54, 0x47, 0x2b, 0x8c, 0xeb, 0xe1, 0x16, 0x49, 0xf9, 0xeb, 0xcb, 0x20, - 0xe7, 0x5c, 0x4a, 0xd5, 0xd1, 0xa8, 0xad, 0x4c, 0x76, 0x76, 0xbc, 0xa0, - 0xed, 0x56, 0xcc, 0x92, 0xea, 0x11, 0x6e, 0x1d, 0xe5, 0x3e, 0x0f, 0xfa, - 0xae, 0xbb, 0x20, 0x50, 0xe8, 0x5a, 0xf0, 0xee, 0xdb, 0x8b, 0x0e, 0x97, - 0x3f, 0xb2, 0xbc, 0x17, 0x30, 0xc4, 0x2f, 0x07, 0x8d, 0x1f, 0xba, 0xdd, - 0x7b, 0xcb, 0xb6, 0xdc, 0x60, 0x5a, 0xe7, 0x7b, 0x57, 0x3e, 0x30, 0x28, - 0x57, 0xa5, 0x14, 0x86, 0xde, 0xe5, 0x2a, 0x74, 0xfd, 0xa7, 0xc5, 0x44, - 0xdb, 0x2f, 0xe7, 0x8a, 0x8e, 0x4b, 0x48, 0x18, 0x95, 0xd0, 0xa8, 0x4b, - 0xae, 0x99, 0x91, 0x19, 0x57, 0x64, 0xfb, 0xcd, 0x88, 0x37, 0xaa, 0xf6, - 0x84, 0x22, 0xbb, 0x74, 0x74, 0x55, 0x9a, 0x7a, 0x9b, 0x66, 0x54, 0x34, - 0x8b, 0x69, 0xbe, 0x78, 0x6a, 0xe8, 0xa7, 0x3e, 0xa8, 0x20, 0xff, 0x87, - 0x3e, 0xb6, 0xd0, 0x6d, 0xbd, 0x7c, 0x7d, 0x3d, 0x45, 0x56, 0x7f, 0x15, - 0xfe, 0x5f, 0xaa, 0x9e, 0x21, 0x55, 0xd5, 0x0a, 0x53, 0x2f, 0x47, 0xe4, - 0x99, 0xde, 0xef, 0x66, 0x4e, 0x19, 0xf8, 0xa1, 0x40, 0x25, 0x56, 0x04, - 0x08, 0x49, 0x2f, 0x0c, 0x64, 0x29, 0x20, 0x59, 0x9f, 0x4a, 0x6e, 0x25, - 0xe0, 0xed, 0x69, 0xb5, 0xe1, 0x05, 0x0f, 0x76, 0x7d, 0x86, 0x5c, 0xdd, - 0x83, 0xf8, 0xc9, 0xbb, 0x37, 0xc6, 0x54, 0xfa, 0x5c, 0xef, 0x59, 0x1f, - 0xd0, 0x43, 0x30, 0xef, 0x19, 0x12, 0x10, 0xf3, 0xce, 0x3c, 0x5f, 0x40, - 0xdc, 0x45, 0xc7, 0x8d, 0x0f, 0x9a, 0x04, 0x9c, 0xa2, 0x96, 0xc5, 0xf7, - 0x63, 0xd4, 0xff, 0x50, 0x04, 0x3a, 0xa4, 0x5c, 0xdc, 0x6c, 0x03, 0x61, - 0xc2, 0x01, 0x8e, 0x1d, 0x1a, 0x61, 0x00, 0x71, 0x89, 0xe2, 0xa0, 0xed, - 0xad, 0x21, 0xc3, 0x03, 0xed, 0x90, 0xf2, 0xf7, 0x51, 0xa3, 0x02, 0x39, - 0xa5, 0x19, 0x39, 0x96, 0x1f, 0xb0, 0xf8, 0x38, 0xb7, 0x75, 0xe5, 0x12, - 0x60, 0xd3, 0x9e, 0x47, 0xce, 0x85, 0xb6, 0x91, 0x62, 0x69, 0x88, 0x58, - 0xe4, 0x3a, 0xbe, 0xca, 0xec, 0xfc, 0x94, 0x2f, 0x33, 0x78, 0x66, 0xd5, - 0x91, 0xbd, 0x1f, 0xcd, 0x40, 0xa8, 0x79, 0xa7, 0xa9, 0xeb, 0x5c, 0x0e, - 0x88, 0x3b, 0x1b, 0x14, 0xbb, 0x29, 0x4f, 0xe7, 0xb1, 0xb8, 0xcc, 0x78, - 0xa9, 0x4a, 0x76, 0x6e, 0x83, 0x02, 0x62, 0x23, 0x1c, 0x37, 0xf6, 0x45, - 0xd1, 0x3b, 0xc4, 0xd7, 0x54, 0x1d, 0xbe, 0xf7, 0xf2, 0x3c, 0x1f, 0x13, - 0xe0, 0xc8, 0x31, 0x51, 0x58, 0x93, 0x5c, 0x7c, 0xc4, 0x0d, 0xc1, 0xa9, - 0x5e, 0xed, 0x78, 0x5d, 0x81, 0x32, 0x96, 0x23, 0xc7, 0xe8, 0xd5, 0xa6, - 0x2f, 0xac, 0x5a, 0xb7, 0x6c, 0x7b, 0x85, 0x75, 0x28, 0x06, 0x9d, 0xae, - 0x6b, 0x2d, 0x1f, 0x2a, 0x39, 0x42, 0xb2, 0xd3, 0xc9, 0x16, 0x0d, 0x11, - 0xb9, 0xa3, 0x7f, 0x2e, 0x49, 0x2c, 0x26, 0xe2, 0xcf, 0x09, 0xea, 0x16, - 0xbb, 0xa4, 0x28, 0x40, 0xfc, 0x8c, 0xf0, 0x96, 0xab, 0x09, 0x18, 0x25, - 0x7d, 0x10, 0x0e, 0x39, 0x62, 0xd2, 0xca, 0x85, 0x41, 0x7d, 0xfa, 0xf7, - 0xa9, 0xa9, 0xd0, 0x77, 0x07, 0x13, 0x2f, 0xcd, 0xc4, 0x81, 0x95, 0x88, - 0x6e, 0x28, 0x3f, 0x0b, 0xf0, 0xe8, 0x2a, 0x70, 0x26, 0x2d, 0xc7, 0xf6, - 0x3d, 0xe6, 0xf1, 0x2f, 0xe4, 0xe3, 0x28, 0x97, 0xc6, 0x96, 0x8c, 0xac, - 0xd6, 0x15, 0x30, 0xd0, 0x67, 0xcf, 0x71, 0x99, 0xf6, 0x60, 0x7c, 0x08, - 0xd3, 0xa6, 0xf7, 0x8a, 0x71, 0x58, 0x59, 0x72, 0x54, 0xaf, 0xf0, 0x62, - 0x7c, 0xf5, 0x6f, 0x03, 0xfb, 0x88, 0xab, 0x97, 0xc1, 0x4b, 0x6c, 0xc0, - 0xc0, 0xa4, 0x80, 0x33, 0x58, 0x2c, 0x4b, 0x22, 0xe7, 0x72, 0x6e, 0x74, - 0x1a, 0xb6, 0x58, 0x5c, 0xfe, 0x9d, 0x32, 0xd3, 0x4a, 0x3c, 0x9c, 0x92, - 0xd2, 0x25, 0xf0, 0xa9, 0x7b, 0xfa, 0x58, 0x71, 0x9b, 0xa9, 0xe8, 0x8b, - 0xf9, 0x04, 0xa6, 0x32, 0x67, 0x27, 0x2a, 0x4d, 0xb3, 0x12, 0x68, 0x25, - 0xdc, 0x04, 0xf5, 0xc8, 0xa4, 0xf4, 0x10, 0xff, 0x47, 0xee, 0x7e, 0x3b, - 0xf7, 0x26, 0x49, 0x67, 0x8a, 0x30, 0xc3, 0x51, 0xc6, 0x7b, 0x76, 0x2c, - 0xfb, 0xa9, 0x52, 0x8b, 0xf1, 0x73, 0x6d, 0x03, 0x90, 0x10, 0x0e, 0x9d, - 0x44, 0x84, 0xd7, 0x73, 0xf5, 0x71, 0x5a, 0x7e, 0xe7, 0x88, 0x57, 0x84, - 0x2d, 0x92, 0x50, 0x85, 0x38, 0xe6, 0x6d, 0x4a, 0xf3, 0x5f, 0x94, 0x63, - 0x41, 0x58, 0x38, 0xcd, 0x5a, 0x93, 0xff, 0x19, 0xc7, 0x85, 0x7a, 0x9b, - 0x0d, 0x99, 0x69, 0xc0, 0x8a, 0xe6, 0x9c, 0xde, 0xd0, 0x6f, 0x31, 0x73, - 0x7b, 0xe8, 0x51, 0x12, 0x33, 0x16, 0xd7, 0x58, 0xc2, 0xd2, 0xeb, 0x59, - 0x14, 0xb7, 0xcc, 0xf8, 0x0e, 0xe1, 0xaf, 0xbd, 0xe0, 0x0c, 0xaf, 0x20, - 0x26, 0x0a, 0x2c, 0xb3, 0x10, 0xfd, 0x28, 0x2e, 0x1e, 0xb5, 0xc6, 0x2c, - 0xbc, 0xc0, 0x90, 0x38, 0xbb, 0x70, 0x42, 0x80, 0xe4, 0xb1, 0x6d, 0x95, - 0xd5, 0x05, 0x11, 0xa3, 0xdf, 0x32, 0x99, 0x93, 0xe3, 0x18, 0x49, 0xb0, - 0x56, 0x51, 0x7a, 0xae, 0x40, 0x26, 0x6f, 0x0f, 0xa7, 0xae, 0x4f, 0xe2, - 0xe3, 0x3b, 0xd7, 0x14, 0xd5, 0x52, 0xb4, 0x20, 0x02, 0x1c, 0x76, 0x77, - 0x9e, 0x51, 0xb6, 0x11, 0xcf, 0x36, 0x0f, 0xfe, 0x70, 0xb7, 0x53, 0xa8, - 0x21, 0x1a, 0xac, 0xbc, 0xaf, 0x49, 0xe2, 0xa0, 0x99, 0x44, 0x3e, 0x53, - 0xac, 0xdd, 0xf4, 0x34, 0x45, 0x90, 0x12, 0x43, 0x51, 0x03, 0x25, 0xa8, - 0x4c, 0x49, 0x2c, 0xe7, 0xb6, 0x3c, 0x87, 0x19, 0x18, 0x44, 0x10, 0x0b, - 0x58, 0xef, 0xb8, 0x86, 0x44, 0x1d, 0x27, 0x30, 0x3e, 0x45, 0x15, 0xea, - 0x7d, 0x67, 0xce, 0x75, 0x3f, 0x26, 0xc6, 0xf6, 0xa6, 0xd9, 0x41, 0xd8, - 0xe1, 0x20, 0x35, 0x89, 0xd0, 0xe3, 0x39, 0x5c, 0xe2, 0x87, 0x93, 0x25, - 0xe1, 0xfd, 0xd1, 0xd2, 0x82, 0x8b, 0x72, 0x49, 0x31, 0x26, 0x13, 0x2f, - 0x44, 0xe1, 0xba, 0xe6, 0xe0, 0x5a, 0xe1, 0x84, 0xf5, 0x44, 0xfe, 0x2a, - 0x31, 0xfe, 0xeb, 0xd3, 0x05, 0x10, 0x91, 0xeb, 0x51, 0x9d, 0x12, 0x3a, - 0x1c, 0x79, 0xb7, 0x0d, 0xf5, 0xe3, 0x33, 0x6e, 0xde, 0x50, 0xd4, 0x61, - 0x0d, 0x93, 0x1f, 0xe3, 0xf2, 0x88, 0x7e, 0xac, 0x75, 0x46, 0xdc, 0xb5, - 0x53, 0x3f, 0x72, 0x1f, 0x8f, 0xc3, 0xd2, 0x1e, 0x7c, 0x10, 0x27, 0x1e, - 0x80, 0x7b, 0x50, 0x5b, 0x4d, 0xc7, 0x87, 0xe8, 0xe5, 0x1e, 0xdb, 0xcf, - 0xc5, 0x9c, 0x83, 0xef, 0x20, 0xc5, 0x63, 0xc1, 0x9d, 0xd4, 0x35, 0xb3, - 0x99, 0x4b, 0x73, 0x87, 0x24, 0xc1, 0x7b, 0xd5, 0xb1, 0xd2, 0x90, 0x99, - 0x0d, 0xdb, 0x25, 0xb6, 0x00, 0xf8, 0x3a, 0xd2, 0xa2, 0xa1, 0x60, 0x07, - 0x77, 0x59, 0x94, 0xb1, 0xa7, 0x7b, 0x8f, 0x06, 0xa8, 0x11, 0x74, 0xc0, - 0x9a, 0xd8, 0x1a, 0xfe, 0xe4, 0xa2, 0xeb, 0x01, 0xd8, 0xe3, 0x85, 0x96, - 0x98, 0xe0, 0x97, 0x82, 0xe7, 0xab, 0x48, 0xc4, 0xf9, 0x9a, 0xc7, 0xc9, - 0x76, 0x33, 0x24, 0x90, 0x52, 0x1f, 0x57, 0x7d, 0xd6, 0x2f, 0x1c, 0x02, - 0x0e, 0xb3, 0xb1, 0x68, 0x67, 0xf6, 0x27, 0x6f, 0x0f, 0xc4, 0x4a, 0x2d, - 0x5f, 0x4f, 0xeb, 0x8c, 0xda, 0xac, 0x57, 0xc3, 0x2c, 0xdd, 0xd5, 0xe4, - 0xab, 0x13, 0xc5, 0xb2, 0x05, 0xa3, 0x44, 0xb6, 0x5f, 0xe8, 0xe6, 0xf8, - 0x66, 0xdc, 0xc4, 0x91, 0x05, 0x86, 0x28, 0x27, 0x8d, 0x29, 0xdd, 0x9a, - 0x25, 0xac, 0xb9, 0xd8, 0x39, 0xc4, 0xce, 0xa6, 0x61, 0xb7, 0xd9, 0xf6, - 0xd4, 0x74, 0xcc, 0x5b, 0xaa, 0x69, 0x69, 0xa1, 0xd4, 0x50, 0xf2, 0xe1, - 0xbe, 0x87, 0xe1, 0xb4, 0xd2, 0x87, 0x8d, 0x38, 0xa7, 0x86, 0x80, 0x1b, - 0xdc, 0x24, 0x0e, 0xcd, 0xef, 0xcb, 0xd3, 0x17, 0x8c, 0x27, 0x9b, 0xb9, - 0x81, 0x85, 0xab, 0xf9, 0x52, 0xe6, 0x12, 0xc0, 0x55, 0x0f, 0x22, 0x1b, - 0x78, 0xc0, 0x03, 0xd1, 0x5c, 0xee, 0x04, 0x97, 0xf0, 0x7e, 0xf6, 0x1b, - 0x99, 0xc8, 0xdc, 0x81, 0xf1, 0xc4, 0x0a, 0x7c, 0x3f, 0xca, 0xf6, 0xc2, - 0x0a, 0xd6, 0xad, 0x02, 0x8f, 0x8d, 0x01, 0x81, 0xc5, 0x26, 0x97, 0xa6, - 0x85, 0xdf, 0x58, 0x72, 0x84, 0xda, 0xca, 0xe7, 0x3a, 0x8f, 0xec, 0xd1, - 0x27, 0xac, 0xa2, 0x66, 0x0f, 0xb0, 0xd1, 0x14, 0x4a, 0x68, 0x5c, 0x46, - 0x4e, 0x6e, 0x77, 0xae, 0x7c, 0xcc, 0xc8, 0xa3, 0xb3, 0xfb, 0xb2, 0x87, - 0x5c, 0x9b, 0x17, 0x8d, 0x30, 0xda, 0x9c, 0xc1, 0x41, 0x9e, 0x30, 0xea, - 0xf9, 0x7b, 0x5e, 0xb8, 0x49, 0xf5, 0x2d, 0x7d, 0x9e, 0xc4, 0x82, 0xf9, - 0xae, 0x59, 0x4b, 0x8b, 0xe5, 0x82, 0x27, 0xd3, 0xcb, 0x28, 0xc8, 0x12, - 0xd3, 0x41, 0x6b, 0x23, 0xb9, 0x7a, 0x05, 0x44, 0x0b, 0xac, 0xc2, 0x03, - 0xed, 0x53, 0x5c, 0xff, 0x72, 0x17, 0xc3, 0xfa, 0xa0, 0x3f, 0xdb, 0x3e, - 0x04, 0x54, 0x5e, 0xd6, 0xc8, 0x05, 0x5e, 0x5d, 0xf1, 0xbb, 0xab, 0x1e, - 0xa2, 0x91, 0xe6, 0x13, 0x52, 0x8a, 0xb6, 0xc1, 0x87, 0x89, 0x76, 0xf3, - 0xd5, 0x1b, 0x48, 0x4a, 0x2e, 0x50, 0x54, 0x8e, 0xf8, 0xd6, 0x2a, 0x9a, - 0x3e, 0x26, 0x63, 0x7f, 0xd6, 0xa7, 0xcc, 0xcb, 0x77, 0x9f, 0xb8, 0xf9, - 0x43, 0x3e, 0x5b, 0xd7, 0x03, 0xca, 0x7b, 0xd3, 0x47, 0x7a, 0x88, 0x39, - 0xc2, 0x78, 0x20, 0x94, 0x9b, 0x71, 0x0e, 0x10, 0xc6, 0x35, 0xad, 0x92, - 0x9d, 0x32, 0xf7, 0xd0, 0xc4, 0xef, 0x24, 0x4a, 0xa6, 0x5d, 0x3f, 0xa3, - 0x8e, 0xe3, 0x8e, 0xf6, 0xcf, 0xaf, 0x96, 0x35, 0xdf, 0x7e, 0x6a, 0xe3, - 0x8c, 0x85, 0x94, 0x1e, 0x3f, 0x34, 0x41, 0x2e, 0x51, 0x57, 0x60, 0xe4, - 0x69, 0x8b, 0x3e, 0x50, 0x0d, 0x4f, 0x8e, 0xc6, 0x5d, 0x23, 0x77, 0x21, - 0x46, 0x3b, 0xef, 0xa1, 0x45, 0x83, 0xcc, 0x07, 0x4e, 0xa6, 0x14, 0xc7, - 0x6f, 0x14, 0x7f, 0x36, 0xa5, 0x13, 0xda, 0x38, 0x33, 0xdb, 0xb8, 0x34, - 0x5e, 0xa4, 0x97, 0x5a, 0xea, 0x23, 0x6c, 0xc7, 0x5c, 0xca, 0x2d, 0xe3, - 0x74, 0x05, 0x3d, 0xaa, 0x09, 0xd4, 0xea, 0xd6, 0x2c, 0x49, 0xba, 0xb3, - 0xe2, 0xba, 0x30, 0x46, 0xd0, 0x82, 0x01, 0xa3, 0xed, 0xce, 0x32, 0x46, - 0x84, 0x62, 0x81, 0x45, 0xb8, 0xbe, 0x92, 0xd2, 0x11, 0xcb, 0xcd, 0x69, - 0x76, 0x6f, 0x57, 0xb5, 0x73, 0x02, 0x04, 0x19, 0xd9, 0x0b, 0x9d, 0xc4, - 0xb5, 0x40, 0xc5, 0xd2, 0x78, 0xb5, 0x12, 0xb5, 0x70, 0xa7, 0xc2, 0x2b, - 0x31, 0xe1, 0x4a, 0x27, 0x37, 0xfd, 0x05, 0xb8, 0xef, 0xca, 0xb4, 0x4b, - 0x8e, 0xe0, 0xd9, 0x3c, 0x96, 0xcd, 0x13, 0x44, 0x34, 0xc7, 0x7b, 0xbc, - 0xac, 0x2c, 0xac, 0xd4, 0x15, 0x7f, 0x31, 0x6d, 0x09, 0x9d, 0xe0, 0xf1, - 0x44, 0xa3, 0x21, 0xc3, 0x3c, 0xec, 0x33, 0x16, 0xeb, 0x3d, 0xd1, 0xd1, - 0x9e, 0x1e, 0x85, 0xf5, 0x45, 0x68, 0x67, 0x64, 0x3b, 0xd0, 0xbe, 0x10, - 0x5d, 0x22, 0x6f, 0x78, 0x12, 0x24, 0xb1, 0x8b, 0xe2, 0xb1, 0x10, 0xbd, - 0x4e, 0x46, 0xfe, 0x24, 0x93, 0xb5, 0x74, 0x97, 0x31, 0x74, 0xeb, 0x91, - 0x44, 0xab, 0x6a, 0xf4, 0xf0, 0xa7, 0xfa, 0xc9, 0x24, 0x1e, 0x7d, 0x64, - 0x98, 0x5f, 0x4d, 0x60, 0x10, 0x04, 0x20, 0x87, 0x91, 0xb0, 0x04, 0x9d, - 0x66, 0x44, 0x6b, 0x63, 0xd0, 0x22, 0x88, 0x47, 0xf8, 0x1a, 0xe4, 0x66, - 0x85, 0x31, 0x28, 0x7f, 0xe4, 0x96, 0x1c, 0x8c, 0x33, 0x20, 0x02, 0xb7, - 0x74, 0x04, 0xf3, 0xad, 0xec, 0xf3, 0x7a, 0x70, 0x3c, 0x7e, 0xe2, 0x9e, - 0x7d, 0x51, 0xd6, 0x16, 0xed, 0x29, 0x42, 0x2f, 0x5d, 0x2c, 0xa5, 0x6c, - 0x15, 0xc8, 0xb2, 0xee, 0x68, 0x64, 0x02, 0x8c, 0x62, 0xa7, 0x84, 0x58, - 0x98, 0x9e, 0x7b, 0x85, 0x75, 0x6d, 0x14, 0x8e, 0x6a, 0x35, 0x12, 0xe2, - 0xd9, 0xf9, 0x8b, 0xc3, 0x98, 0x56, 0x90, 0x51, 0x55, 0x0b, 0xf7, 0x25, - 0x43, 0x60, 0x11, 0x44, 0xe1, 0x3b, 0xae, 0x37, 0x47, 0x79, 0xf1, 0xbd, - 0xe5, 0x99, 0xd4, 0xdc, 0xed, 0x4b, 0xb9, 0x1e, 0xac, 0xf7, 0x74, 0xc2, - 0xc2, 0x78, 0xc4, 0x29, 0x92, 0x9b, 0x72, 0x62, 0x71, 0xf4, 0xc1, 0x66, - 0x8d, 0x6f, 0xf4, 0x78, 0xce, 0xa0, 0x1a, 0xbb, 0x21, 0xbb, 0x27, 0x5b, - 0x4a, 0xcd, 0xba, 0xfd, 0x4a, 0x10, 0x8f, 0x50, 0xa1, 0x56, 0x35, 0x05, - 0x6f, 0x40, 0x81, 0xad, 0x87, 0xdb, 0x48, 0x4b, 0x40, 0x0a, 0x3b, 0xa6, - 0xd7, 0x75, 0x37, 0x17, 0x78, 0x9d, 0x2d, 0x00, 0x3e, 0x1c, 0x2b, 0x68, - 0x3a, 0xe0, 0x1d, 0x8d, 0x53, 0x63, 0x2b, 0x3e, 0xf6, 0xf8, 0xb0, 0x5f, - 0xf5, 0x5f, 0xd3, 0x73, 0x2a, 0xe8, 0x9d, 0x04, 0xae, 0x52, 0x96, 0x07, - 0xfe, 0x0e, 0x60, 0xe7, 0x0b, 0x6a, 0x35, 0x44, 0xb4, 0x66, 0xbf, 0x0e, - 0x07, 0x1e, 0x37, 0xa7, 0x17, 0x05, 0xc9, 0x73, 0xde, 0xd6, 0x63, 0x7a, - 0xf1, 0xa6, 0x87, 0xcb, 0x14, 0x81, 0xdb, 0x5a, 0xb0, 0x22, 0x46, 0x71, - 0xaa, 0x40, 0xb8, 0x97, 0x67, 0xb5, 0x69, 0x6f, 0x08, 0x83, 0x7a, 0xf9, - 0x8b, 0x7a, 0x7b, 0x86, 0x04, 0xf9, 0xe2, 0x62, 0x47, 0xac, 0x01, 0x4e, - 0xd8, 0x44, 0x21, 0x5c, 0x22, 0x4b, 0xdb, 0x6a, 0xdd, 0x09, 0xd8, 0xd6, - 0xea, 0xa4, 0xf9, 0x8e, 0x35, 0xa7, 0x55, 0xf7, 0xe3, 0x1c, 0x7d, 0x6a, - 0xda, 0x11, 0x2e, 0x84, 0xcd, 0x68, 0x9c, 0xf4, 0x75, 0xc2, 0xe8, 0x96, - 0xfa, 0x3c, 0x85, 0xf0, 0x4c, 0xef, 0x7d, 0x8a, 0xfe, 0xb9, 0x62, 0x05, - 0xcc, 0xb9, 0xab, 0x32, 0x44, 0x40, 0x41, 0x2d, 0xb1, 0x85, 0x17, 0xa9, - 0xd4, 0xfe, 0xe4, 0x80, 0x0b, 0xde, 0x86, 0x3b, 0xfb, 0xb5, 0xec, 0x25, - 0xa9, 0x3e, 0x24, 0xa5, 0xc1, 0xf6, 0x6f, 0xfb, 0x56, 0x54, 0x6f, 0x44, - 0xa1, 0x83, 0x2c, 0x8e, 0x6f, 0x2b, 0xc5, 0xa2, 0x85, 0xe3, 0xa9, 0x5a, - 0x76, 0x8f, 0xdf, 0xde, 0x10, 0x30, 0x03, 0x1b, 0x25, 0x4b, 0x9a, 0xb5, - 0xbf, 0xfa, 0xeb, 0x7b, 0xc1, 0x45, 0xd2, 0xcf, 0x03, 0xd4, 0xef, 0xfc, - 0x5b, 0xcd, 0xa8, 0x4c, 0xee, 0xcb, 0xa5, 0x8d, 0xe1, 0xf5, 0x61, 0x34, - 0x83, 0x29, 0x78, 0x0a, 0xf9, 0xbe, 0x2e, 0x4a, 0x52, 0x92, 0x3a, 0x7e, - 0x69, 0x4f, 0x00, 0x35, 0xb8, 0x84, 0xe5, 0x7e, 0xdc, 0xc4, 0x65, 0x6e, - 0x48, 0xe3, 0x25, 0xf3, 0x81, 0x18, 0xf7, 0x53, 0x5c, 0xcb, 0x45, 0x5c, - 0xfe, 0x49, 0xac, 0x17, 0x54, 0x4e, 0x02, 0x49, 0xa6, 0x88, 0x4c, 0xa3, - 0x58, 0x8b, 0x74, 0x8a, 0xba, 0x20, 0xd4, 0x4a, 0x8a, 0x76, 0x20, 0xe9, - 0x15, 0x12, 0x8c, 0x95, 0x65, 0xc1, 0x7a, 0x7d, 0xdc, 0xd6, 0x57, 0x97, - 0x18, 0xa4, 0x6f, 0xcb, 0x36, 0xe5, 0xc9, 0x4f, 0x99, 0x6a, 0x6e, 0xf6, - 0xd1, 0x7b, 0x0a, 0x46, 0xfe, 0x99, 0xc8, 0x89, 0xfe, 0xe0, 0xdd, 0x43, - 0xfb, 0xdd, 0x28, 0xee, 0x77, 0x7e, 0x17, 0xd3, 0xf0, 0x59, 0xbf, 0x47, - 0x65, 0x76, 0xf9, 0x7b, 0x0a, 0x65, 0xfd, 0x70, 0x78, 0xdd, 0xed, 0x54, - 0x6a, 0x18, 0x6f, 0x3b, 0xc4, 0x03, 0xfa, 0x41, 0x24, 0x9a, 0x67, 0xeb, - 0x1c, 0xaa, 0xc2, 0xba, 0x7c, 0xd0, 0x88, 0x64, 0x75, 0x3e, 0x96, 0x1b, - 0x3b, 0x65, 0x55, 0x47, 0x90, 0x26, 0xad, 0x95, 0x40, 0x10, 0xe1, 0x3e, - 0x10, 0xe8, 0x62, 0x05, 0xc2, 0x8d, 0xde, 0x9f, 0x24, 0x6e, 0x73, 0x25, - 0x0e, 0x04, 0x5a, 0x90, 0xf4, 0xce, 0x2d, 0x8f, 0x83, 0x72, 0x0c, 0x6a, - 0xe1, 0xe6, 0x22, 0x0d, 0x31, 0x17, 0x80, 0xa0, 0x4d, 0x79, 0x85, 0x65, - 0x94, 0xf0, 0x12, 0xb7, 0x4d, 0x7d, 0x9a, 0x28, 0xdc, 0x75, 0xa7, 0x7a, - 0xc0, 0x54, 0xe5, 0x1e, 0xfe, 0x30, 0x36, 0x86, 0xf9, 0x9f, 0xf0, 0x74, - 0x54, 0xe3, 0x1e, 0x87, 0x2a, 0x9c, 0x2d, 0x27, 0x4e, 0xe0, 0x21, 0x78, - 0x1b, 0x3f, 0x5c, 0xac, 0xc2, 0xc5, 0x44, 0x71, 0x96, 0x45, 0x07, 0x3c, - 0xda, 0x89, 0xdf, 0x53, 0xde, 0x33, 0x84, 0x35, 0x0e, 0x58, 0x18, 0xd3, - 0xb4, 0x2a, 0x9e, 0x3b, 0x21, 0x88, 0x98, 0x2b, 0xd0, 0x15, 0x46, 0xb4, - 0x81, 0x60, 0xcf, 0x0e, 0xdf, 0x8a, 0xbc, 0x1b, 0x13, 0x3f, 0xad, 0xd6, - 0xd5, 0x17, 0x5c, 0x75, 0xf4, 0x83, 0x9b, 0x0e, 0x45, 0xc9, 0xed, 0x94, - 0xd4, 0xff, 0xab, 0x1a, 0xbe, 0x80, 0xbe, 0x08, 0x7d, 0xd0, 0x5a, 0xc7, - 0xb0, 0xe2, 0x98, 0xb4, 0x4e, 0x17, 0x41, 0x2b, 0xc9, 0x5c, 0xf5, 0xfa, - 0xb2, 0x6a, 0xd1, 0xe9, 0xf1, 0x1a, 0x6a, 0x7e, 0xed, 0x1f, 0x41, 0xf6, - 0x23, 0xcb, 0x63, 0x08, 0x76, 0x85, 0xdd, 0xa6, 0x1b, 0x1a, 0x76, 0x1f, - 0x5d, 0x06, 0x7f, 0x64, 0x85, 0x34, 0x45, 0xe9, 0x18, 0x6a, 0x08, 0x70, - 0xb1, 0xf0, 0x95, 0x39, 0xbc, 0xfe, 0x9c, 0x43, 0x6c, 0x4c, 0x6e, 0x71, - 0xf4, 0x65, 0xdf, 0x75, 0xac, 0x06, 0x17, 0x30, 0x1b, 0xfa, 0x5a, 0x12, - 0x4f, 0xd1, 0x4b, 0xfb, 0xe0, 0xfe, 0xeb, 0x4e, 0x5e, 0xdd, 0x05, 0xbd, - 0x44, 0x51, 0x9f, 0xeb, 0xa0, 0x95, 0xeb, 0x32, 0x29, 0xb4, 0x7b, 0x8a, - 0x2a, 0x62, 0x3f, 0x9e, 0x6f, 0x8e, 0xb2, 0x58, 0x8e, 0x5c, 0x72, 0x48, - 0x3c, 0x5e, 0x89, 0xb0, 0xd3, 0x0a, 0x59, 0x8a, 0x6c, 0xae, 0x85, 0xf8, - 0x96, 0x53, 0x4a, 0x23, 0x2d, 0xdb, 0x55, 0x2a, 0x8b, 0x10, 0xd3, 0xe0, - 0x5c, 0x05, 0xed, 0x7c, 0x66, 0x91, 0xab, 0x39, 0x75, 0x8f, 0x6c, 0x0f, - 0x15, 0x5f, 0x66, 0x02, 0x1c, 0x40, 0x50, 0x8b, 0x96, 0xae, 0xa4, 0x76, - 0x86, 0x6c, 0x26, 0xdb, 0xa3, 0xb0, 0xbb, 0x72, 0x3c, 0x69, 0x4f, 0xae, - 0x36, 0x5f, 0xa8, 0x42, 0xa3, 0x13, 0xf3, 0x2a, 0x6b, 0x7b, 0x73, 0xe3, - 0x22, 0xc1, 0xfe, 0x6e, 0x54, 0xc2, 0xa7, 0x6f, 0xe8, 0x68, 0x8b, 0xe5, - 0x66, 0x38, 0xfc, 0x52, 0xbe, 0xea, 0x3f, 0xfd, 0x68, 0xc3, 0x52, 0x99, - 0x20, 0x63, 0xdb, 0x3e, 0x79, 0x40, 0xd0, 0x9d, 0x27, 0x15, 0x24, 0x88, - 0xad, 0xb3, 0x9d, 0xb6, 0x15, 0x7f, 0x4e, 0x67, 0xa7, 0x07, 0x9d, 0xde, - 0xa6, 0x13, 0x0c, 0x19, 0x5b, 0x6e, 0xca, 0xfc, 0x36, 0x79, 0xd4, 0x61, - 0x04, 0x2b, 0xc7, 0xd7, 0x07, 0xa5, 0xaf, 0x74, 0xff, 0x3a, 0x9e, 0xca, - 0xfd, 0x6a, 0x8d, 0xbf, 0xf1, 0x73, 0x95, 0xa3, 0x63, 0xc2, 0x62, 0x67, - 0xb8, 0x41, 0x4b, 0xfa, 0xea, 0x5d, 0xdf, 0x73, 0xee, 0xbf, 0x50, 0x2a, - 0x36, 0xe2, 0x1b, 0x2c, 0x67, 0x0f, 0x32, 0x63, 0xd3, 0xe3, 0x16, 0x0d, - 0x99, 0xf6, 0xc2, 0xa9, 0x6b, 0xc2, 0xfb, 0x76, 0x0f, 0x75, 0xae, 0xc4, - 0xb7, 0x29, 0xf9, 0xdb, 0xe6, 0x27, 0x5d, 0x9e, 0xa6, 0xb0, 0xc9, 0x11, - 0x06, 0xbc, 0xc4, 0x90, 0x9c, 0x88, 0xf2, 0xf9, 0x93, 0xa6, 0x6c, 0x6d, - 0x9d, 0xaf, 0x1c, 0x9d, 0xad, 0x1a, 0x09, 0x12, 0x11, 0x0b, 0x49, 0x30, - 0x51, 0xe3, 0x5d, 0x20, 0x90, 0x33, 0xac, 0x5e, 0x6b, 0x76, 0x1d, 0x1e, - 0xc4, 0xcb, 0xf0, 0x5e, 0xdf, 0x3d, 0xc7, 0xbe, 0xe1, 0xc3, 0x36, 0xfc, - 0x40, 0xd8, 0xca, 0x7d, 0xc7, 0x9c, 0x1e, 0xda, 0xde, 0x75, 0xdc, 0x02, - 0x17, 0x92, 0xcc, 0x2a, 0x28, 0x55, 0x9b, 0xbf, 0x74, 0x26, 0x32, 0xd2, - 0x26, 0x58, 0x5a, 0x6d, 0x22, 0x9a, 0xb2, 0xc2, 0xb1, 0x7e, 0xdd, 0xcd, - 0x49, 0x16, 0x60, 0x47, 0xeb, 0x3a, 0x33, 0xd8, 0x8f, 0x96, 0x13, 0x08, - 0x2a, 0xfb, 0x30, 0xf2, 0xee, 0x23, 0xdf, 0x5f, 0x21, 0xba, 0x74, 0x21, - 0xb6, 0x03, 0xac, 0xb5, 0xf8, 0xe8, 0xb3, 0x2a, 0x50, 0xee, 0xc6, 0x18, - 0xb1, 0x99, 0xc1, 0x55, 0xe9, 0x32, 0x1c, 0x43, 0x79, 0xbe, 0x55, 0xb4, - 0xa4, 0xae, 0x72, 0x16, 0xc4, 0x3c, 0xb2, 0x39, 0x04, 0x10, 0x3b, 0xed, - 0xa5, 0x28, 0x28, 0xcd, 0x64, 0xb3, 0x6f, 0xbf, 0x01, 0xcf, 0x74, 0x3b, - 0xa7, 0x27, 0xe8, 0x3e, 0x88, 0x37, 0xbd, 0x12, 0xdf, 0x9b, 0xca, 0x33, - 0xa8, 0xed, 0x79, 0x24, 0x3a, 0x3d, 0x21, 0x31, 0xf1, 0xf5, 0x57, 0xa4, - 0x78, 0xba, 0xf8, 0xe2, 0x39, 0x20, 0xff, 0x8c, 0x8f, 0x00, 0x91, 0x93, - 0x84, 0xda, 0x3f, 0xdf, 0x68, 0xe1, 0xb9, 0xb1, 0x3f, 0x1f, 0x92, 0x4f, - 0x5d, 0x25, 0xd8, 0xda, 0x04, 0x8b, 0xfb, 0xe7, 0x12, 0x00, 0x3c, 0x4d, - 0xfa, 0x9c, 0xe1, 0x0a, 0xed, 0xc5, 0x05, 0xd5, 0x76, 0xa0, 0xc0, 0xda, - 0x17, 0xc7, 0x10, 0x26, 0x98, 0x6c, 0x7e, 0x7d, 0x72, 0x2a, 0x3e, 0x18, - 0xd7, 0x34, 0x00, 0xad, 0xf4, 0x87, 0x4e, 0x5b, 0x39, 0x65, 0x20, 0x3e, - 0x20, 0x36, 0xeb, 0xb3, 0x4a, 0xe9, 0x4d, 0xe0, 0x77, 0x77, 0xe2, 0x23, - 0x0b, 0x54, 0xc9, 0xa7, 0x1a, 0x11, 0xb2, 0xa7, 0x48, 0x05, 0x5b, 0xec, - 0x68, 0x3e, 0x22, 0xc3, 0xbd, 0x5c, 0x9f, 0x28, 0xca, 0xda, 0xa9, 0x4f, - 0xdd, 0xb6, 0x62, 0x9b, 0x5b, 0x09, 0xf2, 0xa0, 0x19, 0xd5, 0x34, 0x80, - 0xc3, 0xa6, 0x07, 0xcd, 0xd3, 0xe9, 0x6e, 0x8b, 0x1e, 0xcb, 0xaf, 0x9d, - 0x52, 0x48, 0xc4, 0x0b, 0x3f, 0xfb, 0x4c, 0x85, 0x0c, 0xba, 0x5f, 0xcf, - 0xc8, 0x8e, 0x6b, 0x02, 0xc7, 0x82, 0xd1, 0x9e, 0x94, 0x27, 0x30, 0xad, - 0xe0, 0x1f, 0x53, 0xaf, 0x3c, 0x17, 0x44, 0xd9, 0x30, 0x27, 0xf9, 0x17, - 0xed, 0x88, 0x4b, 0x42, 0xcb, 0xdf, 0x83, 0xdd, 0x9d, 0x5c, 0x9a, 0x11, - 0x30, 0x3d, 0x4a, 0xab, 0xda, 0xc3, 0x39, 0x2c, 0xe8, 0xf6, 0x60, 0x6f, - 0x94, 0x48, 0xa5, 0xd1, 0xa2, 0x45, 0xc2, 0x96, 0x54, 0xaf, 0xa4, 0x53, - 0xe7, 0xff, 0x51, 0x89, 0x7d, 0x04, 0xbc, 0x62, 0xcf, 0xeb, 0xf0, 0xb6, - 0x20, 0x18, 0x2e, 0x4b, 0x62, 0x95, 0x37, 0xd3, 0x63, 0x62, 0x67, 0x42, - 0x21, 0x21, 0xbc, 0x9d, 0xbe, 0x04, 0x8b, 0x32, 0x11, 0xaf, 0x0c, 0x62, - 0xe4, 0x0c, 0x01, 0xee, 0x02, 0xf8, 0x36, 0x07, 0xc2, 0x00, 0xaf, 0xb9, - 0xa2, 0x96, 0x5b, 0x5c, 0xbb, 0xef, 0xe0, 0x42, 0x1b, 0x52, 0x88, 0xe8, - 0xe1, 0xfb, 0x00, 0x91, 0xfa, 0xda, 0x8c, 0x04, 0xfd, 0x8f, 0xdf, 0x8c, - 0xf8, 0x2e, 0x86, 0x7d, 0x38, 0x0e, 0x4b, 0xc3, 0xe0, 0x8d, 0xad, 0xee, - 0x13, 0x6b, 0xbb, 0x4a, 0xf0, 0x73, 0x28, 0xd1, 0x15, 0x9c, 0xfc, 0x52, - 0x17, 0xe9, 0x71, 0x75, 0x2d, 0xea, 0x9c, 0x73, 0x8e, 0x27, 0xdf, 0x73, - 0x84, 0x3b, 0x15, 0x5f, 0x16, 0x80, 0xd1, 0x36, 0x6a, 0x61, 0x7a, 0xfc, - 0xf4, 0xe0, 0x5c, 0x57, 0x2b, 0xb6, 0x9e, 0x85, 0x75, 0x45, 0x8b, 0xf5, - 0x79, 0xb1, 0x72, 0xdd, 0x30, 0x77, 0x8d, 0x16, 0xcd, 0xdf, 0xa9, 0x58, - 0xe1, 0x48, 0x73, 0xfa, 0xb3, 0xe6, 0xf9, 0x14, 0x78, 0x23, 0xd4, 0x91, - 0xec, 0x9e, 0xcc, 0x94, 0x59, 0xc7, 0xbf, 0x08, 0x38, 0x45, 0x94, 0x6b, - 0x4b, 0xb5, 0xc4, 0xf5, 0x99, 0x99, 0x19, 0x0a, 0x06, 0x25, 0x85, 0xc5, - 0x4a, 0x3e, 0x86, 0x09, 0x45, 0x8c, 0x8a, 0x45, 0xe8, 0xdb, 0x75, 0x16, - 0xf7, 0x26, 0xa5, 0x2b, 0x41, 0x11, 0xfc, 0xad, 0x03, 0x3a, 0x18, 0x2b, - 0x73, 0xf5, 0x84, 0xf0, 0x89, 0x77, 0xab, 0x22, 0x56, 0xe8, 0x3e, 0xaa, - 0x25, 0xe1, 0xa8, 0xe6, 0x9a, 0xba, 0x10, 0x7b, 0xd1, 0xf7, 0x7a, 0x9b, - 0x67, 0x90, 0x9f, 0x1c, 0xe9, 0x4d, 0x89, 0x35, 0xe2, 0x80, 0xfb, 0xf7, - 0xff, 0x13, 0xea, 0x15, 0x40, 0x67, 0xdb, 0xb5, 0x42, 0xae, 0x67, 0x2c, - 0x77, 0x71, 0xd8, 0x99, 0x42, 0x68, 0x72, 0xe4, 0xa2, 0x6c, 0x0e, 0xba, - 0x19, 0x1d, 0xda, 0xa5, 0x3a, 0x14, 0xb3, 0xbf, 0x1a, 0xd7, 0x79, 0x55, - 0x2b, 0xe2, 0x35, 0x69, 0x9d, 0x8d, 0x51, 0x39, 0x02, 0xa0, 0xb0, 0xea, - 0x72, 0x8d, 0x0f, 0x12, 0xbb, 0x22, 0xff, 0xa5, 0x75, 0xa9, 0x3e, 0xf1, - 0xc5, 0x1e, 0x01, 0xea, 0xcd, 0x20, 0x95, 0xf2, 0x83, 0x84, 0xa4, 0xfe, - 0xb1, 0xb9, 0x65, 0x96, 0xec, 0xab, 0x5a, 0xeb, 0xcc, 0x48, 0x63, 0x64, - 0x01, 0x97, 0xaa, 0xb7, 0xcc, 0x28, 0xfe, 0xda, 0x31, 0x84, 0xf1, 0x8f, - 0x26, 0xc4, 0x87, 0x37, 0xf2, 0x3f, 0x84, 0x4d, 0xec, 0xb0, 0xa4, 0x64, - 0x96, 0xca, 0x50, 0x45, 0x12, 0x1e, 0x2e, 0x38, 0x36, 0x88, 0xb8, 0x0f, - 0x50, 0x3b, 0xfc, 0xbf, 0x01, 0xdc, 0x0d, 0xc2, 0x22, 0x6a, 0x05, 0xef, - 0xe2, 0x3d, 0x2f, 0xe8, 0x9a, 0x64, 0x01, 0x33, 0x61, 0x4b, 0x6c, 0xda, - 0xae, 0x88, 0x4d, 0xed, 0xc6, 0xec, 0xde, 0x98, 0x0b, 0x93, 0x91, 0xb9, - 0xc2, 0xd1, 0x24, 0x93, 0x55, 0xb6, 0x8a, 0xda, 0xa4, 0xc9, 0xec, 0x8b, - 0x76, 0x15, 0x55, 0x42, 0xa9, 0xa9, 0xb8, 0x50, 0x0b, 0x46, 0x9e, 0xa5, - 0xdc, 0xc0, 0xee, 0x15, 0x25, 0x68, 0x50, 0xed, 0xc8, 0x54, 0x8b, 0xc3, - 0x6d, 0xfd, 0xc5, 0xa6, 0xed, 0x63, 0x76, 0xc8, 0x9c, 0x55, 0x54, 0x1f, - 0x4e, 0x2e, 0x28, 0x82, 0xe6, 0xfa, 0x00, 0x12, 0x96, 0x88, 0x4a, 0x31, - 0xea, 0x53, 0xdd, 0x88, 0x3c, 0x3d, 0xdf, 0x7f, 0xae, 0x6c, 0xe3, 0x82, - 0x47, 0x44, 0x59, 0x7d, 0x31, 0xef, 0x0d, 0x04, 0x31, 0xce, 0x8d, 0x3e, - 0xfa, 0x8c, 0xbe, 0x6d, 0x5a, 0x7e, 0xec, 0xd0, 0xac, 0x0e, 0xa6, 0x4a, - 0x29, 0x2c, 0xfb, 0xb8, 0x91, 0x2a, 0x06, 0xfe, 0x25, 0x18, 0x15, 0xc6, - 0xa9, 0x01, 0x69, 0xa8, 0xb9, 0xf9, 0xd3, 0xec, 0x05, 0x9d, 0xdd, 0xf9, - 0x21, 0x9b, 0x09, 0x84, 0xa0, 0x47, 0x38, 0x7f, 0xe3, 0x90, 0x27, 0xc0, - 0x0f, 0xa9, 0x73, 0x60, 0x15, 0x42, 0x76, 0x96, 0x6b, 0xc2, 0xb0, 0x40, - 0x72, 0x09, 0x86, 0xfb, 0x08, 0x98, 0x92, 0x3a, 0xad, 0xf2, 0x07, 0xa7, - 0x38, 0x52, 0x49, 0xea, 0x0f, 0xe5, 0xa0, 0x6a, 0xb1, 0x19, 0x4c, 0xc1, - 0xc8, 0x02, 0xd9, 0xec, 0xbd, 0xa7, 0x04, 0x18, 0x42, 0x44, 0xfe, 0xbd, - 0x8c, 0xcc, 0xd5, 0x5f, 0x68, 0x6c, 0x61, 0xb7, 0xa2, 0x9c, 0x02, 0x06, - 0xca, 0x5f, 0xee, 0x9a, 0x5d, 0xcb, 0x55, 0x9a, 0x62, 0x95, 0xab, 0xfb, - 0xaa, 0x29, 0x9a, 0x27, 0x4f, 0xe9, 0x2a, 0x9b, 0x9a, 0xc7, 0x65, 0x2f, - 0x41, 0xac, 0xe1, 0x5b, 0x33, 0x94, 0x77, 0x71, 0x0a, 0xba, 0xcd, 0xee, - 0x5c, 0x6a, 0x56, 0xf3, 0x78, 0x40, 0x69, 0x75, 0xb7, 0x4c, 0x51, 0x39, - 0x04, 0x2b, 0xa4, 0xd7, 0xdd, 0x9e, 0x99, 0xea, 0x9d, 0x63, 0x0e, 0xf6, - 0x92, 0xb2, 0x25, 0x0d, 0x01, 0x66, 0x62, 0xff, 0x36, 0x1a, 0x69, 0x7d, - 0x88, 0x99, 0xbc, 0x3c, 0x11, 0x23, 0x1e, 0x39, 0x9f, 0xb7, 0x80, 0x91, - 0x20, 0xee, 0xe0, 0x88, 0xf6, 0x1e, 0xd4, 0x7e, 0x78, 0x66, 0xf9, 0x94, - 0x50, 0x49, 0x42, 0x59, 0x39, 0x38, 0xd3, 0xa4, 0xa1, 0x2c, 0x35, 0xe6, - 0x51, 0xfc, 0x91, 0x0f, 0x0e, 0x8a, 0xfd, 0x6b, 0x1f, 0xfc, 0xc5, 0x8d, - 0x66, 0x83, 0x8f, 0x02, 0xfe, 0x91, 0x3c, 0xd8, 0xad, 0x45, 0x8d, 0xfc, - 0xf7, 0x78, 0x85, 0xc5, 0xc3, 0xe8, 0x1b, 0xeb, 0xc3, 0xff, 0x52, 0xed, - 0xa8, 0xd8, 0x5d, 0x5c, 0x5d, 0x6a, 0x5a, 0xa3, 0x3a, 0x8e, 0xb8, 0xb3, - 0x6d, 0xdf, 0x8a, 0xa2, 0xec, 0x2d, 0x1d, 0x8a, 0xfb, 0x72, 0xba, 0xe9, - 0xc0, 0x81, 0xc2, 0x00, 0xe0, 0xfe, 0x53, 0xd1, 0x4f, 0x0e, 0x85, 0x93, - 0x8e, 0x56, 0x8c, 0x8c, 0xad, 0xc1, 0x1a, 0xd8, 0xf9, 0x36, 0x97, 0xed, - 0xc2, 0xcf, 0xb9, 0x5f, 0xa5, 0x08, 0x31, 0xda, 0xf2, 0xc6, 0x5d, 0xd2, - 0x4b, 0xf0, 0x7b, 0x87, 0x03, 0x3e, 0x6f, 0x21, 0xf4, 0x51, 0x01, 0x48, - 0x0b, 0x23, 0xef, 0x77, 0xf4, 0xca, 0x8d, 0x6e, 0xa7, 0x8a, 0xec, 0x20, - 0x9f, 0xe4, 0xa6, 0x1c, 0x87, 0x32, 0x5a, 0x48, 0xfe, 0x9c, 0x43, 0x62, - 0xd7, 0xf9, 0xf8, 0x17, 0xc9, 0x74, 0x60, 0x16, 0x7a, 0x6b, 0xca, 0x8c, - 0x0d, 0xf2, 0xd3, 0xdc, 0x56, 0x16, 0x18, 0xb9, 0x4e, 0x3b, 0x28, 0xfc, - 0x14, 0x69, 0x67, 0x5c, 0xde, 0x00, 0x18, 0xda, 0x64, 0x22, 0x3e, 0xce, - 0xd1, 0xc3, 0xb2, 0xf3, 0xf4, 0xcc, 0xb5, 0xa0, 0x71, 0x31, 0x00, 0xaf, - 0xa3, 0x6e, 0x6b, 0x50, 0x7e, 0x8a, 0x4f, 0xdd, 0x98, 0x12, 0x2a, 0xfa, - 0xd2, 0xfb, 0x0d, 0x6b, 0xd7, 0x2d, 0x8f, 0xa3, 0x92, 0x66, 0xfd, 0xf6, - 0x42, 0x35, 0xce, 0x2f, 0x08, 0x10, 0x3d, 0x0d, 0xcf, 0x50, 0xaa, 0x85, - 0xd6, 0x1b, 0xc3, 0xf7, 0x2f, 0xe9, 0x80, 0x98, 0x9d, 0xaf, 0x19, 0x1a, - 0x9e, 0xd8, 0x19, 0x60, 0x30, 0x9a, 0x70, 0xf0, 0xa9, 0xfc, 0xcf, 0xf9, - 0x84, 0xe2, 0xa2, 0x3d, 0xfa, 0x10, 0xaa, 0xc6, 0xc0, 0xf6, 0x82, 0xf8, - 0xfc, 0xf1, 0xdf, 0xed, 0xd0, 0x58, 0x3b, 0xda, 0x7e, 0x28, 0xbc, 0xd3, - 0xf7, 0x97, 0xc7, 0xe7, 0x7a, 0x13, 0xf0, 0x0a, 0xbd, 0x39, 0x57, 0xff, - 0xb8, 0x46, 0x38, 0x26, 0x28, 0x42, 0xf8, 0x8a, 0x5d, 0x54, 0x23, 0x80, - 0x40, 0x8d, 0xb2, 0x7f, 0xa7, 0xa7, 0x72, 0x2c, 0x4f, 0x83, 0x61, 0x12, - 0xad, 0xfe, 0xe7, 0xd3, 0x1c, 0x3a, 0x06, 0x20, 0xf3, 0xfc, 0x12, 0xb4, - 0x5f, 0x89, 0x58, 0xcd, 0x78, 0x90, 0xcd, 0x7b, 0xaa, 0x42, 0x34, 0x12, - 0xd8, 0x6b, 0x90, 0x7d, 0x25, 0xe7, 0xf2, 0x1e, 0xf6, 0x88, 0xe5, 0x97, - 0x47, 0x9a, 0x33, 0x60, 0x5c, 0x84, 0xaf, 0x26, 0x57, 0x78, 0x50, 0x9a, - 0x66, 0x77, 0x29, 0x4c, 0x5f, 0x00, 0xea, 0x9d, 0x97, 0xbc, 0xbe, 0xc5, - 0x23, 0x0e, 0xa5, 0xf2, 0xeb, 0x84, 0x0b, 0xae, 0x44, 0x0f, 0x08, 0x0e, - 0x9b, 0xaf, 0xad, 0xbe, 0xd6, 0x58, 0x8e, 0x85, 0xb5, 0xad, 0x14, 0xee, - 0x9a, 0xe1, 0x3e, 0x0d, 0x93, 0xfc, 0x15, 0xf9, 0xf7, 0x47, 0x64, 0x7b, - 0x76, 0xb3, 0x65, 0xca, 0x81, 0xb8, 0xaa, 0x69, 0x3a, 0x9b, 0x11, 0x46, - 0x9f, 0xad, 0x7d, 0xb6, 0x9e, 0x45, 0xc8, 0xac, 0x33, 0xc5, 0x62, 0x5b, - 0xf8, 0x8d, 0x07, 0x03, 0x3d, 0x18, 0x6c, 0x16, 0x54, 0x23, 0x32, 0x56, - 0x14, 0xd0, 0xcb, 0xf3, 0x8b, 0x19, 0x7c, 0x24, 0xeb, 0xab, 0x28, 0xde, - 0x02, 0xd8, 0xb2, 0x4d, 0x1a, 0x84, 0xd2, 0x3d, 0xfd, 0x96, 0x97, 0x50, - 0xf5, 0xa2, 0x18, 0x68, 0xf7, 0xda, 0xd9, 0x3f, 0xb6, 0xda, 0xb1, 0x2f, - 0x7e, 0x11, 0xdb, 0x7e, 0x3d, 0x42, 0xb9, 0x2d, 0xde, 0xfc, 0x56, 0x1d, - 0x09, 0x60, 0x14, 0xe9, 0x86, 0x5d, 0x7d, 0x0a, 0xac, 0x6e, 0x60, 0x6a, - 0x48, 0x59, 0x4c, 0x27, 0xc1, 0xda, 0xc4, 0x91, 0x1f, 0xfe, 0x39, 0x37, - 0xcc, 0xa8, 0xf3, 0x83, 0xeb, 0x49, 0xbe, 0xc4, 0x22, 0x57, 0x3e, 0xa8, - 0x21, 0x09, 0xfe, 0xbb, 0x56, 0x94, 0xd0, 0xd2, 0xe6, 0xf1, 0xb1, 0x20, - 0xc4, 0x2e, 0x1e, 0x7a, 0x65, 0xba, 0x09, 0x1e, 0x4a, 0xc2, 0xe6, 0x79, - 0xb4, 0xb1, 0x8b, 0xfd, 0x45, 0x43, 0x5a, 0x2c, 0xd6, 0x1e, 0xaf, 0xce, - 0x89, 0x47, 0x56, 0x4f, 0xb7, 0x76, 0x4d, 0x7e, 0x84, 0x88, 0xfe, 0x95, - 0xf4, 0x7a, 0x15, 0x34, 0xdd, 0x6b, 0xc0, 0xf9, 0xff, 0xd1, 0x43, 0x01, - 0xe7, 0x29, 0x77, 0x24, 0xab, 0xe8, 0x78, 0x02, 0xfd, 0xd8, 0xbf, 0x32, - 0xf4, 0x40, 0xb4, 0x71, 0x0e, 0xe1, 0xa8, 0x80, 0xfc, 0x41, 0xa3, 0xe6, - 0xf4, 0xcf, 0x58, 0x79, 0xf3, 0x42, 0xc0, 0xac, 0x72, 0xf4, 0xb5, 0x34, - 0xe7, 0xc4, 0xab, 0xc4, 0x16, 0x61, 0xf1, 0xbc, 0x12, 0x7f, 0x50, 0x63, - 0x76, 0xeb, 0x1b, 0x53, 0xe3, 0x8b, 0xe6, 0x07, 0xb9, 0xc5, 0x53, 0x88, - 0x4f, 0xc6, 0x70, 0xe1, 0xfb, 0xaa, 0x26, 0x30, 0x8b, 0x43, 0x03, 0x5e, - 0xaa, 0x09, 0x52, 0x59, 0xbb, 0x9c, 0x85, 0x0c, 0x6e, 0xda, 0xdb, 0x6c, - 0x72, 0x5d, 0x18, 0xa7, 0x5d, 0x80, 0xfb, 0x03, 0x73, 0xb2, 0x02, 0x5f, - 0xe6, 0x02, 0x3b, 0x2f, 0x07, 0x32, 0xf4, 0x68, 0xd7, 0x7e, 0xa2, 0x41, - 0x51, 0x39, 0x6a, 0x17, 0x80, 0x6f, 0x42, 0x5b, 0xd2, 0x2e, 0xf6, 0x95, - 0x3c, 0x14, 0x3c, 0xdb, 0x59, 0xf6, 0xac, 0xce, 0x32, 0xf2, 0x28, 0xae, - 0x46, 0xa2, 0x6d, 0xd6, 0x34, 0x96, 0xb7, 0x31, 0xe0, 0x10, 0x29, 0xaf, - 0x79, 0x87, 0x6c, 0xd5, 0x32, 0xe7, 0x4a, 0x60, 0x2e, 0x9b, 0x55, 0xed, - 0xdf, 0xc4, 0x96, 0x0c, 0x30, 0xbf, 0xea, 0xfd, 0x5a, 0xcb, 0xc7, 0xff, - 0x83, 0x0a, 0xda, 0x63, 0x7c, 0xbb, 0xdc, 0x28, 0x06, 0xe1, 0x12, 0x4b, - 0x55, 0x9e, 0x45, 0xc3, 0xa2, 0xe7, 0xf5, 0xef, 0x75, 0x68, 0x8a, 0xd4, - 0x5b, 0x4a, 0x23, 0x50, 0xcb, 0x00, 0xc6, 0x8f, 0x0b, 0x54, 0xd8, 0x56, - 0x00, 0x9d, 0xb8, 0x39, 0x92, 0xb3, 0xb2, 0x0f, 0x88, 0x0e, 0x22, 0xbc, - 0xa8, 0x15, 0xc9, 0xf3, 0x6b, 0x7b, 0x21, 0x45, 0x01, 0xad, 0x8a, 0x7a, - 0x9c, 0x74, 0xb9, 0x3a, 0x14, 0x19, 0x03, 0xa0, 0xb7, 0x7e, 0x71, 0x34, - 0x73, 0x90, 0xdd, 0x61, 0xa3, 0x83, 0xa4, 0x35, 0xf6, 0x46, 0x25, 0x1f, - 0x35, 0xac, 0xaa, 0xcd, 0xb1, 0xd9, 0xaa, 0x66, 0x5d, 0xcb, 0xf5, 0xf0, - 0x95, 0x13, 0x5f, 0xde, 0x5a, 0xaf, 0x67, 0x7e, 0x5c, 0x6e, 0x76, 0x2f, - 0xb4, 0x68, 0x41, 0xeb, 0x02, 0xbc, 0xda, 0x7c, 0x6d, 0x90, 0x1e, 0x91, - 0x1a, 0x79, 0x33, 0xfc, 0x3c, 0x63, 0xbc, 0xb8, 0x2f, 0x3e, 0x49, 0xf3, - 0x79, 0x60, 0xf8, 0x69, 0x21, 0x46, 0xfe, 0x2c, 0x9e, 0x3f, 0x11, 0xce, - 0x9e, 0x53, 0x46, 0xfa, 0x72, 0xcf, 0x0e, 0x8f, 0x97, 0x0d, 0xf1, 0x79, - 0xc0, 0x4c, 0xd9, 0x4f, 0x83, 0x26, 0x1a, 0x39, 0x9e, 0x53, 0x12, 0x6c, - 0x0e, 0xb2, 0x7d, 0x4f, 0x37, 0x1f, 0x96, 0x8a, 0x31, 0x2b, 0xb9, 0x34, - 0x58, 0xc9, 0x7d, 0x83, 0xb5, 0x23, 0x38, 0xef, 0x25, 0xd8, 0x19, 0x9e, - 0x9c, 0x0c, 0x00, 0x38, 0x4b, 0x94, 0x0f, 0x6f, 0xd7, 0xc3, 0xdf, 0x46, - 0xfa, 0xd4, 0x14, 0x5f, 0xf4, 0xd5, 0xe3, 0x51, 0x80, 0xc0, 0xe3, 0x83, - 0x8d, 0xaa, 0x32, 0xdb, 0x4a, 0x2a, 0x2e, 0x91, 0xd5, 0xa7, 0x26, 0xd3, - 0x59, 0x1c, 0x6a, 0x55, 0x2b, 0x89, 0xcd, 0x2f, 0xb1, 0xfe, 0xa9, 0x26, - 0xdf, 0xf0, 0xa8, 0xf9, 0x8f, 0xce, 0x32, 0x87, 0xdc, 0xb1, 0xf9, 0x53, - 0x27, 0xf9, 0x61, 0xa9, 0x75, 0xcb, 0xb8, 0x35, 0x92, 0x1b, 0xd3, 0xce, - 0x69, 0x1a, 0x8b, 0x90, 0x6b, 0x52, 0xa1, 0x69, 0x7c, 0xf9, 0x98, 0x73, - 0x3a, 0x3d, 0xb5, 0x98, 0x0a, 0xf9, 0xa5, 0x70, 0x2e, 0xf1, 0x62, 0x1c, - 0xfa, 0x96, 0x8b, 0x62, 0xeb, 0x33, 0xaf, 0x40, 0xf0, 0x0c, 0xf9, 0x7d, - 0x24, 0xc9, 0x40, 0xf6, 0x66, 0x15, 0x8f, 0x9d, 0x03, 0x1c, 0xaf, 0x54, - 0x33, 0xe9, 0x2c, 0xfb, 0xa8, 0x01, 0xf9, 0x13, 0x64, 0x3c, 0x14, 0x4c, - 0x70, 0xee, 0x54, 0x9a, 0x3f, 0xe0, 0x3f, 0xe5, 0x41, 0x50, 0xf6, 0x9a, - 0x57, 0x69, 0x75, 0x8d, 0xae, 0xee, 0xcd, 0xf5, 0x89, 0x51, 0x7c, 0x19, - 0xaa, 0xa5, 0x3e, 0x2b, 0x27, 0x8c, 0xdb, 0x5f, 0x32, 0x6d, 0x31, 0xb1, - 0xb0, 0x9c, 0xae, 0xa8, 0x49, 0xf7, 0xc7, 0x24, 0x2f, 0x26, 0x32, 0xbc, - 0x35, 0x11, 0x3d, 0x34, 0x91, 0x43, 0x1c, 0xdf, 0x7f, 0x06, 0xbf, 0x77, - 0x28, 0xed, 0x41, 0x70, 0x88, 0xec, 0xb3, 0xec, 0x38, 0xfd, 0xe2, 0x06, - 0xb4, 0x5d, 0xb2, 0xc2, 0x05, 0x63, 0xad, 0x03, 0xe2, 0x25, 0xc4, 0xe7, - 0xc3, 0x65, 0x61, 0x17, 0xaf, 0xd5, 0x74, 0x48, 0x1e, 0x2e, 0x8b, 0x5a, - 0x50, 0x9c, 0xd3, 0xed, 0xbe, 0xb2, 0xba, 0xd4, 0x4f, 0x18, 0x2e, 0xa3, - 0x7e, 0xac, 0xb4, 0x53, 0xbf, 0x5d, 0x88, 0x50, 0x2b, 0xc7, 0x06, 0x5c, - 0xad, 0x17, 0x79, 0xed, 0x45, 0xa8, 0x52, 0x49, 0xe2, 0xf7, 0x28, 0x83, - 0x2f, 0x2a, 0xdd, 0xe4, 0xce, 0x6f, 0xe9, 0x95, 0xc8, 0x56, 0x1b, 0x6b, - 0xd6, 0xbf, 0x1e, 0xc1, 0x27, 0xf2, 0x99, 0xb1, 0x8a, 0x8e, 0x4f, 0xdf, - 0x49, 0x5d, 0x55, 0xb0, 0x1e, 0xdd, 0x6a, 0xb7, 0x34, 0x8a, 0x34, 0x3c, - 0x08, 0x8b, 0x59, 0xe7, 0xb0, 0xca, 0xa2, 0xe2, 0x31, 0x96, 0x7c, 0x39, - 0xdd, 0x41, 0x7e, 0x7d, 0xdf, 0xfe, 0x57, 0xb2, 0x86, 0xd2, 0xb2, 0x1e, - 0x00, 0xb4, 0xbd, 0x0f, 0xa1, 0xa3, 0x48, 0x75, 0xd9, 0xb9, 0x07, 0xc4, - 0x11, 0x21, 0x9b, 0x0b, 0xb1, 0xee, 0x7f, 0x4a, 0x14, 0xed, 0x5b, 0x5d, - 0xc2, 0xca, 0x6a, 0xf4, 0x7e, 0x12, 0x1e, 0x09, 0x44, 0x2c, 0x20, 0xaa, - 0xce, 0x25, 0x5a, 0x2b, 0xc3, 0x5e, 0x80, 0x26, 0x45, 0x47, 0x13, 0xaf, - 0xd8, 0xa6, 0x77, 0x97, 0x13, 0x81, 0xa5, 0xb0, 0x2d, 0x64, 0xcb, 0xf7, - 0xa6, 0x6f, 0x2c, 0x7e, 0x80, 0x9f, 0x15, 0x83, 0x59, 0x02, 0x82, 0xab, - 0x58, 0x20, 0x19, 0x83, 0xaa, 0xa6, 0x1c, 0xc8, 0xa5, 0xe6, 0x68, 0x2d, - 0xa8, 0x14, 0xba, 0x22, 0xb5, 0x61, 0xda, 0x63, 0xd3, 0xfd, 0x6a, 0x9b, - 0xe5, 0xb2, 0x1f, 0xf6, 0xee, 0x7a, 0x9f, 0xab, 0x5a, 0xbb, 0xcc, 0xea, - 0xb3, 0x10, 0x9b, 0x60, 0x7f, 0xcb, 0xc9, 0x53, 0x34, 0x6e, 0xff, 0xf9, - 0x21, 0x74, 0xfb, 0x34, 0x5c, 0x9f, 0x05, 0xfc, 0x86, 0xae, 0x59, 0x31, - 0x5a, 0x4b, 0x99, 0xfb, 0xd9, 0xa4, 0x99, 0x2c, 0x88, 0xa8, 0x9b, 0x9a, - 0x6f, 0x04, 0xd7, 0x53, 0xfa, 0x2e, 0xa7, 0x77, 0x47, 0xff, 0xd8, 0x84, - 0x11, 0x0d, 0x8c, 0x03, 0x7b, 0x51, 0xe5, 0x60, 0x26, 0x1a, 0x59, 0x84, - 0x0d, 0x0c, 0xe4, 0x04, 0xa1, 0x74, 0xb6, 0xac, 0x51, 0x01, 0x2a, 0x2c, - 0x97, 0x12, 0x61, 0x4c, 0x5f, 0xe5, 0xea, 0x30, 0x85, 0x0c, 0x7c, 0x78, - 0xa1, 0x60, 0x93, 0x01, 0x59, 0xbf, 0x2c, 0x42, 0x77, 0x02, 0xb5, 0x10, - 0xdf, 0x0a, 0xd7, 0x2a, 0x1e, 0x4b, 0x30, 0xa1, 0xee, 0xd0, 0x16, 0xac, - 0x60, 0x9a, 0xdb, 0xf5, 0x67, 0x9a, 0x70, 0x92, 0xdc, 0xca, 0x1c, 0x64, - 0xf8, 0x22, 0xa2, 0x2b, 0x16, 0x4f, 0x4e, 0x3d, 0x11, 0xea, 0x62, 0x47, - 0x52, 0xde, 0xd3, 0xc5, 0xcb, 0x94, 0x59, 0xcc, 0x25, 0xba, 0x84, 0x59, - 0x95, 0x13, 0x79, 0x47, 0x33, 0xe9, 0x73, 0xae, 0x85, 0x54, 0xc8, 0xf6, - 0xd8, 0x77, 0x1b, 0xb8, 0x00, 0xf5, 0xf2, 0x09, 0xb5, 0x45, 0xa2, 0x58, - 0x15, 0xdf, 0xd0, 0x6e, 0x47, 0x9d, 0x18, 0x22, 0x4d, 0x6c, 0xad, 0x6d, - 0xf3, 0xa6, 0x8c, 0x09, 0x05, 0x88, 0xc3, 0x4c, 0x13, 0x14, 0x54, 0x3b, - 0xe1, 0x88, 0x1e, 0x17, 0xce, 0x5f, 0xee, 0x19, 0x3c, 0x2c, 0x05, 0xe7, - 0x4e, 0xd7, 0x8e, 0x6d, 0x70, 0x79, 0x19, 0x08, 0x24, 0xe7, 0x12, 0xdc, - 0x8c, 0x40, 0xea, 0x1f, 0x36, 0x9d, 0xce, 0xd5, 0x5b, 0x36, 0x48, 0x48, - 0xcb, 0x48, 0x17, 0x06, 0x05, 0x86, 0x77, 0xbe, 0xbc, 0x67, 0x38, 0x8e, - 0x04, 0xef, 0xbb, 0x27, 0xfe, 0xe5, 0x7e, 0x6d, 0xe3, 0x75, 0xce, 0x70, - 0x61, 0xb6, 0x50, 0x0a, 0xa8, 0xa7, 0x12, 0xd3, 0x3a, 0x39, 0x3e, 0xe3, - 0x91, 0xe2, 0x0c, 0x0a, 0xa9, 0x4e, 0xea, 0xfb, 0xd2, 0x2b, 0x4a, 0x8a, - 0xb5, 0xab, 0x45, 0x65, 0x23, 0x78, 0x45, 0xa4, 0x8a, 0x51, 0x09, 0xc0, - 0x90, 0x40, 0x17, 0xa3, 0x02, 0x6b, 0x06, 0xdd, 0x42, 0x59, 0x9c, 0x54, - 0x74, 0x81, 0xe1, 0x3c, 0xc2, 0x00, 0x38, 0x4e, 0xa5, 0xf5, 0xf1, 0xa5, - 0x66, 0x78, 0x97, 0x97, 0x4a, 0x84, 0xb7, 0x4b, 0x5d, 0x2b, 0x93, 0xe2, - 0xb2, 0x54, 0x47, 0xf8, 0x34, 0x0c, 0xcb, 0x9b, 0x63, 0x79, 0x09, 0xde, - 0x40, 0xd7, 0x5a, 0x83, 0x8a, 0xcd, 0xa0, 0x55, 0x9c, 0x24, 0xbb, 0x31, - 0x4c, 0x2a, 0xbf, 0xbe, 0x42, 0xbe, 0xc3, 0x27, 0x38, 0x90, 0xcc, 0x44, - 0x22, 0x8a, 0x16, 0x44, 0xe7, 0x67, 0x6c, 0x90, 0x71, 0xe2, 0x2e, 0x18, - 0x99, 0x1b, 0x77, 0xfc, 0xdc, 0x4d, 0xc3, 0xd9, 0xf3, 0x97, 0xbc, 0x93, - 0x29, 0x67, 0x7b, 0x52, 0x13, 0xe5, 0xe7, 0xd0, 0xe9, 0x00, 0x38, 0x38, - 0x94, 0xe3, 0x0e, 0x9b, 0x06, 0x59, 0xd7, 0x3b, 0x8f, 0x6f, 0xac, 0x0f, - 0xf7, 0x2a, 0x40, 0x08, 0x6e, 0x4d, 0xce, 0x37, 0xc1, 0x6c, 0x8c, 0xad, - 0xde, 0x3c, 0xa3, 0xfb, 0x70, 0xbd, 0xeb, 0xeb, 0x61, 0xaa, 0xad, 0xe7, - 0x84, 0xf3, 0x24, 0x33, 0xb8, 0x59, 0x31, 0xca, 0xa7, 0x81, 0x99, 0x22, - 0x2b, 0x4a, 0xee, 0x5f, 0xce, 0xa9, 0xfe, 0x66, 0xfd, 0x88, 0x7c, 0x57, - 0x78, 0x26, 0x12, 0x29, 0x1d, 0x1a, 0xf1, 0x6d, 0x1d, 0x8a, 0x0a, 0x3b, - 0xab, 0x72, 0xbb, 0xa8, 0xfc, 0x1e, 0x52, 0xff, 0xd9, 0xf0, 0xda, 0x36, - 0x51, 0x22, 0xdf, 0xc4, 0x4e, 0xac, 0x43, 0x73, 0xf1, 0x1c, 0x1b, 0xf1, - 0x42, 0xa5, 0xab, 0x03, 0x44, 0x4e, 0x6a, 0xbd, 0x60, 0x46, 0x5f, 0x1a, - 0xfb, 0x80, 0x2d, 0x16, 0x1e, 0xf5, 0x80, 0x02, 0x33, 0x3c, 0x78, 0x50, - 0xd5, 0x2f, 0x54, 0xf0, 0xec, 0x2e, 0xbd, 0xe5, 0xb7, 0xfd, 0x74, 0x5a, - 0xc8, 0xca, 0xa7, 0x85, 0x26, 0x52, 0xb9, 0x39, 0xe1, 0x8d, 0xde, 0x63, - 0x59, 0xa7, 0xec, 0xf9, 0x8c, 0x16, 0x1f, 0x70, 0xa5, 0xb5, 0xe7, 0xfd, - 0xc3, 0x5f, 0xca, 0x03, 0x9f, 0xf8, 0x4e, 0x15, 0xd0, 0xa3, 0xe7, 0xdb, - 0xa9, 0xa6, 0x2e, 0x4e, 0x8b, 0x7a, 0x55, 0x68, 0xea, 0xab, 0x90, 0x9b, - 0x52, 0xb9, 0xe5, 0x55, 0x67, 0xdd, 0xc1, 0xe9, 0x16, 0xec, 0x99, 0x01, - 0xae, 0xcc, 0x7b, 0x18, 0x8b, 0x2b, 0x8b, 0x5f, 0x87, 0x9c, 0x5d, 0x4d, - 0xc3, 0x4b, 0x05, 0x38, 0x17, 0x94, 0xf6, 0x24, 0x5f, 0xdd, 0xec, 0x73, - 0xb2, 0x08, 0x24, 0x53, 0x5a, 0x9e, 0xb2, 0xf0, 0xd1, 0x80, 0x6f, 0xf0, - 0x49, 0x01, 0x88, 0xde, 0x33, 0xf0, 0xa0, 0x23, 0x7e, 0xb4, 0xa5, 0xfd, - 0x4f, 0xe7, 0xf9, 0x07, 0x05, 0x32, 0x6a, 0x73, 0xce, 0xe0, 0xc7, 0x6d, - 0xf1, 0xae, 0x48, 0x17, 0x68, 0xdd, 0xb7, 0x63, 0xa7, 0x58, 0x90, 0x8b, - 0x70, 0xb8, 0x05, 0x78, 0xba, 0xa1, 0x7c, 0x0d, 0x8e, 0xf8, 0xc0, 0xf6, - 0xff, 0x78, 0x14, 0xda, 0x87, 0xf3, 0x63, 0x10, 0x7a, 0x46, 0x75, 0x12, - 0x26, 0x3b, 0x9c, 0x0e, 0x5d, 0x1a, 0x91, 0x4f, 0x88, 0xac, 0x02, 0x23, - 0x1b, 0xc9, 0x42, 0xad, 0xe4, 0xb4, 0xd5, 0x3b, 0x11, 0x0e, 0xcc, 0x75, - 0x1f, 0x12, 0xaa, 0x2d, 0x56, 0x40, 0xe9, 0x72, 0x91, 0x91, 0xf2, 0x0c, - 0x34, 0x56, 0xe7, 0xcd, 0x3f, 0xdb, 0xd0, 0x26, 0x71, 0x90, 0x0a, 0x20, - 0x35, 0xf0, 0xc5, 0xf6, 0xe4, 0x13, 0xb7, 0x00, 0x16, 0x00, 0xa5, 0x8f, - 0x55, 0xce, 0x82, 0xda, 0xf7, 0x13, 0x1e, 0x39, 0xd9, 0xb1, 0x86, 0xc1, - 0x62, 0x96, 0xa1, 0xba, 0xd4, 0x3e, 0xe4, 0x1b, 0x16, 0x7d, 0xad, 0x05, - 0xd7, 0x2b, 0x48, 0xfb, 0xb4, 0x44, 0x7b, 0xe9, 0x57, 0xac, 0xc2, 0xe4, - 0xe1, 0x52, 0x2e, 0x4c, 0x43, 0xa7, 0xab, 0x89, 0xb7, 0x9a, 0xd8, 0x35, - 0x41, 0x6a, 0x5c, 0x9a, 0x2c, 0x41, 0x69, 0x74, 0xce, 0xfb, 0x9c, 0x02, - 0x05, 0x2e, 0x6c, 0xee, 0xda, 0xe4, 0xba, 0x89, 0x98, 0xe8, 0x49, 0xc6, - 0x60, 0x9c, 0x75, 0xd3, 0xf2, 0xd1, 0x22, 0xad, 0x25, 0x98, 0x69, 0xa1, - 0x6b, 0x1f, 0x8b, 0xe3, 0x83, 0x8f, 0x4e, 0x48, 0x89, 0x6f, 0x59, 0x36, - 0x27, 0x41, 0x4b, 0x20, 0x21, 0xb5, 0x35, 0x5d, 0xf8, 0x4a, 0xd2, 0x30, - 0x43, 0xf6, 0xa6, 0x78, 0x77, 0xcd, 0x5f, 0xcb, 0x85, 0xc0, 0x70, 0x06, - 0x62, 0xb0, 0x1f, 0xff, 0xcd, 0x7b, 0x4a, 0xb4, 0xb7, 0x31, 0x00, 0x02, - 0xe2, 0x00, 0xce, 0xa1, 0xf7, 0x7a, 0x1a, 0x59, 0xba, 0x7b, 0xa9, 0x58, - 0xdf, 0xa1, 0x0e, 0x1c, 0x12, 0x6a, 0x5b, 0xa0, 0xe4, 0xdf, 0x2d, 0x6f, - 0x89, 0x05, 0x31, 0xad, 0xe2, 0x06, 0x68, 0xbb, 0x45, 0x40, 0x31, 0xf4, - 0xf2, 0xfa, 0x44, 0x0b, 0x13, 0xad, 0x89, 0x3d, 0x01, 0xba, 0x5a, 0x71, - 0x18, 0xcd, 0x90, 0xaf, 0x60, 0x99, 0x48, 0x0f, 0xf8, 0x11, 0xe0, 0x77, - 0x3d, 0x20, 0xd6, 0xc4, 0x8b, 0xfe, 0x60, 0x51, 0xc3, 0x74, 0x17, 0x39, - 0x79, 0x39, 0x2c, 0x4a, 0xf4, 0xcd, 0x47, 0xe9, 0x35, 0x15, 0xa1, 0xd8, - 0x61, 0xb3, 0xcd, 0x81, 0x01, 0x12, 0x5a, 0xe5, 0xcb, 0x23, 0x94, 0xb6, - 0x51, 0x36, 0xd5, 0x9a, 0xab, 0x03, 0x44, 0x42, 0x77, 0xbf, 0x5a, 0xeb, - 0xa3, 0x0e, 0xae, 0x28, 0x94, 0xd6, 0x58, 0x1d, 0x87, 0x01, 0xf5, 0xf1, - 0x52, 0x60, 0xdc, 0xcb, 0x1c, 0x6a, 0x58, 0x0e, 0x2d, 0x27, 0x5b, 0xba, - 0x04, 0xd7, 0x1f, 0xac, 0xb2, 0xeb, 0xb2, 0x9c, 0x97, 0xcf, 0xa4, 0xc4, - 0x98, 0xf1, 0x33, 0x2a, 0xf6, 0x21, 0x71, 0xc1, 0x39, 0xb8, 0xd0, 0xf1, - 0x66, 0x7f, 0x90, 0x85, 0x81, 0x76, 0x8a, 0xc1, 0x36, 0x66, 0xea, 0xa1, - 0x11, 0x4f, 0x46, 0x1b, 0x7d, 0x15, 0xae, 0xef, 0x11, 0x7d, 0xa0, 0x3f, - 0xe4, 0x4e, 0xdf, 0xfc, 0xe5, 0xef, 0x2f, 0xdb, 0x49, 0x03, 0x46, 0xa1, - 0xd6, 0x8a, 0x64, 0x80, 0xcc, 0x45, 0x0d, 0x7f, 0x7e, 0xa9, 0x2f, 0x11, - 0x66, 0x66, 0x78, 0xfe, 0x54, 0xa7, 0x95, 0xef, 0x9e, 0x47, 0xaf, 0x0a, - 0xc3, 0x15, 0x13, 0x8b, 0xca, 0x0d, 0x34, 0xd4, 0xc8, 0x12, 0xc1, 0xee, - 0xfc, 0x4d, 0xc5, 0xde, 0x4b, 0xaa, 0x04, 0x79, 0x7c, 0xae, 0xca, 0xe5, - 0x3d, 0x8b, 0xa5, 0x05, 0x5a, 0x6e, 0x51, 0x49, 0x83, 0x73, 0x0a, 0xc6, - 0x6e, 0x67, 0x6b, 0xec, 0x1b, 0x50, 0x4a, 0xac, 0xec, 0xb9, 0x61, 0xb1, - 0x0d, 0x6f, 0xcb, 0x1c, 0x77, 0x99, 0x83, 0xe3, 0x7c, 0xb8, 0x08, 0xd9, - 0x96, 0x14, 0x3e, 0x7e, 0xef, 0x9c, 0x54, 0x76, 0x96, 0xf4, 0x8e, 0xf9, - 0x02, 0xe5, 0x43, 0xbe, 0x92, 0x24, 0x8a, 0x32, 0xad, 0x66, 0x42, 0x1a, - 0xa3, 0x27, 0x23, 0x4a, 0xa5, 0xdd, 0x25, 0x8f, 0xf1, 0x67, 0x83, 0xe7, - 0xaa, 0xfc, 0x9a, 0x0c, 0x12, 0x54, 0x29, 0x03, 0xfc, 0x86, 0xd7, 0x5b, - 0x5d, 0x8a, 0x30, 0xfd, 0x6b, 0x2d, 0x9a, 0x67, 0xc4, 0x10, 0x2f, 0x1b, - 0xe2, 0x65, 0xb5, 0xe2, 0xe7, 0x10, 0xe1, 0xef, 0x7b, 0xe3, 0xf5, 0xe5, - 0x48, 0xf7, 0xde, 0x5a, 0x29, 0xa4, 0x0c, 0x1c, 0x5b, 0x54, 0x0d, 0x53, - 0x46, 0x95, 0x8c, 0x0c, 0x4e, 0xe3, 0xf2, 0xa1, 0x7a, 0x5b, 0x37, 0xa9, - 0x7a, 0xed, 0xb8, 0x60, 0x44, 0x90, 0x48, 0x74, 0xc8, 0xf0, 0x79, 0xfa, - 0x1a, 0xeb, 0x2c, 0xa8, 0xc7, 0x47, 0x4c, 0x3c, 0x2c, 0x8c, 0x30, 0x1a, - 0x2f, 0xef, 0x41, 0x6e, 0x4e, 0x77, 0x57, 0x5e, 0x49, 0x74, 0xa2, 0x7b, - 0x33, 0xf1, 0x56, 0xcb, 0x9b, 0xa4, 0x9a, 0x1e, 0x81, 0xa3, 0xa1, 0x53, - 0x0e, 0x30, 0xe4, 0x25, 0xa0, 0x73, 0xba, 0x5e, 0x06, 0xac, 0x4a, 0x8e, - 0x39, 0x25, 0xa2, 0x2c, 0x70, 0xfe, 0xde, 0xb3, 0x6c, 0x02, 0x19, 0x3c, - 0xbc, 0xba, 0x57, 0xeb, 0x81, 0x7e, 0x19, 0xc8, 0xa1, 0x47, 0xb1, 0xca, - 0x8d, 0x8d, 0xe0, 0xa9, 0xb7, 0x41, 0x9f, 0x38, 0x9b, 0xfb, 0x3c, 0xcf, - 0xa6, 0x54, 0x30, 0x19, 0x93, 0xb7, 0x4e, 0x13, 0xb1, 0xbe, 0x0d, 0x52, - 0x2a, 0xb8, 0x80, 0x24, 0x2f, 0xa0, 0x42, 0x9c, 0x08, 0x9d, 0x2b, 0xc0, - 0xfd, 0x46, 0x65, 0x37, 0xb8, 0xdc, 0x38, 0x8d, 0x0d, 0x86, 0xba, 0x76, - 0xae, 0x0e, 0x07, 0x95, 0x2f, 0xf2, 0x2b, 0x48, 0xde, 0xa1, 0x3d, 0xa9, - 0x98, 0xc2, 0x05, 0x8c, 0xdb, 0x27, 0x66, 0xad, 0xfd, 0x51, 0x91, 0xe6, - 0x4f, 0xab, 0xcf, 0xb4, 0xd6, 0x73, 0x33, 0xb2, 0x32, 0xe1, 0x62, 0x41, - 0x64, 0xb7, 0xf0, 0xf9, 0xa4, 0x95, 0xcb, 0x81, 0x52, 0x72, 0x93, 0x49, - 0x85, 0xfb, 0x04, 0x09, 0x8d, 0xf4, 0x9a, 0xb1, 0x10, 0x03, 0x90, 0xfb, - 0xfd, 0xe9, 0x36, 0xdb, 0xe4, 0xe2, 0x18, 0xe6, 0xf7, 0x45, 0x3f, 0x80, - 0xd8, 0x85, 0x22, 0xd8, 0xb4, 0x7e, 0x4d, 0xd7, 0x59, 0x96, 0xfc, 0x76, - 0xb6, 0x03, 0x18, 0xa9, 0x0b, 0xa3, 0xc7, 0xf9, 0xf4, 0x13, 0x86, 0x4f, - 0xd1, 0x41, 0x4e, 0x68, 0xc3, 0x08, 0x03, 0x30, 0x6a, 0x56, 0x0b, 0x60, - 0xfa, 0x04, 0x0d, 0xf9, 0x8c, 0xbb, 0x1d, 0xc9, 0xea, 0x94, 0x4f, 0xe8, - 0x26, 0xb1, 0xf3, 0xaa, 0x87, 0x7f, 0x9c, 0x21, 0x1e, 0xe7, 0x58, 0x07, - 0x7a, 0x6e, 0x2e, 0xd9, 0x5f, 0x43, 0x49, 0x31, 0x6e, 0x10, 0x6e, 0xf1, - 0x53, 0x94, 0xb2, 0x82, 0xa4, 0x8a, 0xfc, 0x58, 0x26, 0x0f, 0xae, 0x36, - 0x5a, 0x32, 0x85, 0x9f, 0x3f, 0xf5, 0x4e, 0x13, 0xcc, 0x27, 0x7e, 0x98, - 0x76, 0xd2, 0x7e, 0x5a, 0x5c, 0x39, 0xd1, 0xa3, 0x9d, 0xa8, 0xfb, 0x5c, - 0x7f, 0xbf, 0xe2, 0x06, 0xbb, 0xe6, 0x7b, 0xf2, 0x43, 0x99, 0x66, 0x5b, - 0x94, 0xf9, 0x39, 0xb3, 0x1b, 0xf5, 0xb0, 0x72, 0x3c, 0x5d, 0x7a, 0x2e, - 0x68, 0x06, 0x67, 0xcb, 0xa7, 0x23, 0x32, 0xe0, 0xbc, 0x4b, 0x11, 0x1b, - 0x53, 0xab, 0xb5, 0x94, 0xe4, 0x3d, 0xf9, 0x65, 0xcf, 0xf0, 0xd0, 0xcb, - 0x98, 0xc7, 0x70, 0xa4, 0x6a, 0xd9, 0x4c, 0x4f, 0x5b, 0xc3, 0x6e, 0x3b, - 0x0f, 0x16, 0xa7, 0x19, 0x4d, 0xc5, 0xdc, 0x9a, 0x61, 0x9b, 0x36, 0xc8, - 0x83, 0x4d, 0xcc, 0xe5, 0x26, 0x3a, 0x6e, 0xbb, 0x4c, 0x69, 0x58, 0x68, - 0x36, 0xf0, 0x44, 0xfc, 0xbf, 0x0a, 0x09, 0xca, 0x74, 0xae, 0x51, 0xa4, - 0xe4, 0xb8, 0x35, 0xc0, 0x12, 0x6e, 0x5c, 0xd1, 0x71, 0x03, 0xd1, 0x3f, - 0x43, 0xa9, 0xbe, 0x80, 0xc3, 0xbd, 0xd5, 0x71, 0xad, 0x8e, 0xe1, 0x44, - 0xa2, 0xa5, 0x14, 0x36, 0xa5, 0x95, 0xce, 0xf5, 0xa5, 0xb2, 0xe6, 0xcb, - 0x4a, 0xc3, 0x4b, 0x18, 0xf8, 0xea, 0xd9, 0x70, 0x95, 0xb3, 0xf8, 0x2d, - 0xdc, 0x91, 0xf4, 0x88, 0xc1, 0x43, 0x26, 0xfc, 0xf5, 0x71, 0x04, 0x48, - 0xce, 0x64, 0xd3, 0x9f, 0x51, 0x9f, 0xcb, 0xa0, 0x43, 0x52, 0x7a, 0x57, - 0x3d, 0xd9, 0x87, 0x85, 0xdd, 0x99, 0xf1, 0xc9, 0x7e, 0x2d, 0xa5, 0xac, - 0xf8, 0x9e, 0x12, 0x4d, 0x44, 0x93, 0xc6, 0x4e, 0x57, 0x50, 0xa6, 0x1d, - 0xa7, 0xab, 0xdf, 0xaf, 0x85, 0xab, 0xb7, 0x95, 0x73, 0x47, 0x02, 0xc6, - 0xea, 0x90, 0x1a, 0x72, 0x9a, 0x87, 0x29, 0x65, 0xb9, 0xe3, 0xc4, 0xd1, - 0xaf, 0x08, 0xba, 0xd3, 0x89, 0xcb, 0x24, 0xbf, 0xa4, 0x4b, 0xda, 0x06, - 0x8b, 0x47, 0x33, 0x29, 0x8d, 0x8e, 0x8b, 0x0d, 0xc5, 0xc9, 0x11, 0x4e, - 0xe9, 0xe8, 0x49, 0x26, 0x82, 0xf1, 0x0e, 0x28, 0xf7, 0xfd, 0x22, 0xbd, - 0x29, 0xb5, 0x8c, 0x42, 0x55, 0x1a, 0x7a, 0x26, 0x52, 0xda, 0xf5, 0xf0, - 0xc2, 0x59, 0x70, 0xdd, 0xd2, 0x42, 0x17, 0x51, 0x75, 0x73, 0xcf, 0x70, - 0x32, 0x1b, 0xed, 0x90, 0x68, 0x5f, 0x02, 0xe4, 0x24, 0xc1, 0xce, 0xd0, - 0x26, 0xef, 0xaf, 0x70, 0x3a, 0x85, 0x6e, 0x09, 0x4f, 0xf0, 0xdb, 0xf8, - 0xb4, 0x53, 0x82, 0x4a, 0x95, 0x0b, 0xa8, 0xbb, 0xd4, 0x29, 0x3f, 0x9f, - 0xd0, 0xa2, 0x94, 0xf2, 0xdb, 0x5a, 0x3c, 0x7e, 0xf4, 0x7e, 0x0b, 0xbf, - 0x4f, 0xa9, 0xa4, 0xaa, 0x9b, 0x28, 0xe4, 0x24, 0x0d, 0x32, 0xcd, 0x23, - 0x82, 0x0f, 0xd1, 0x98, 0xd3, 0x22, 0x36, 0xa8, 0x19, 0x9c, 0x3b, 0xfa, - 0xca, 0x19, 0xb1, 0xa3, 0xbf, 0xf5, 0x1d, 0xd1, 0x3a, 0xf5, 0x40, 0xdd, - 0x12, 0xde, 0x5a, 0x91, 0x78, 0x27, 0x54, 0x89, 0xb5, 0x68, 0xf4, 0xa3, - 0xcf, 0x21, 0xff, 0x84, 0x3a, 0xaf, 0xe8, 0x0f, 0x89, 0x7c, 0x5b, 0x94, - 0xcf, 0x8d, 0x6d, 0xb9, 0x57, 0xfe, 0x50, 0x69, 0x50, 0xa2, 0xe5, 0x54, - 0x3e, 0x6c, 0x4a, 0x61, 0xba, 0x36, 0x23, 0x72, 0x33, 0x35, 0x04, 0xf1, - 0xcd, 0x2a, 0x7d, 0xb7, 0x82, 0x2a, 0x0e, 0x0a, 0xe0, 0x7e, 0x6d, 0x03, - 0x5b, 0x04, 0xc4, 0xeb, 0x46, 0x36, 0xb9, 0x5c, 0xa5, 0xcb, 0xdc, 0x4c, - 0x78, 0x00, 0x3f, 0xec, 0x56, 0x5d, 0x80, 0xf0, 0x3a, 0xa2, 0xc9, 0xec, - 0x16, 0xb4, 0xb4, 0x0a, 0x89, 0xdb, 0xf4, 0x58, 0x15, 0x14, 0x30, 0xfa, - 0x88, 0x6d, 0xb6, 0xb3, 0x69, 0x0d, 0x38, 0x15, 0x79, 0xbc, 0x53, 0x29, - 0xef, 0x43, 0x80, 0xe2, 0x25, 0x34, 0x2f, 0x14, 0x7a, 0xc7, 0xee, 0x71, - 0xc0, 0x11, 0x18, 0xcd, 0x52, 0xc3, 0xc8, 0x51, 0xf1, 0x07, 0x6e, 0x5f, - 0xf8, 0xc3, 0x0a, 0xaa, 0x6f, 0x5d, 0xfc, 0x4f, 0xce, 0xba, 0x36, 0x9c, - 0x41, 0x71, 0x4a, 0xd3, 0x75, 0xf9, 0x2c, 0xea, 0xd2, 0x6c, 0x60, 0x10, - 0xbe, 0x3e, 0x40, 0x52, 0x2f, 0xac, 0xa5, 0x5b, 0xd5, 0x06, 0x3a, 0x75, - 0x98, 0xbd, 0x3e, 0x81, 0x05, 0x66, 0x91, 0xb0, 0x50, 0x9b, 0xf0, 0xf6, - 0xd9, 0xa6, 0xe9, 0x5c, 0x19, 0x98, 0xbe, 0x57, 0xd5, 0xa2, 0x1d, 0x11, - 0x22, 0x88, 0xa2, 0x2c, 0x83, 0x8a, 0x28, 0xd6, 0xaf, 0x1c, 0xfb, 0x61, - 0x3b, 0xb9, 0x3b, 0xe5, 0x51, 0xd1, 0xe8, 0x48, 0x50, 0x04, 0x30, 0x01, - 0x2b, 0x51, 0x30, 0x72, 0xd2, 0xc0, 0x41, 0x3d, 0xb2, 0x55, 0x0c, 0x35, - 0x6e, 0xe9, 0x1b, 0x00, 0xe5, 0xd2, 0x6c, 0xdb, 0xd7, 0x11, 0x5d, 0x04, - 0x36, 0x5b, 0x04, 0x01, 0x5a, 0x1a, 0xbf, 0xfc, 0xe9, 0x6d, 0x1d, 0x70, - 0x22, 0x17, 0x0f, 0x5b, 0x67, 0x50, 0xc4, 0x33, 0xf8, 0xba, 0x74, 0x77, - 0x2e, 0x17, 0x9e, 0x49, 0xea, 0x25, 0x49, 0xde, 0x74, 0x3b, 0x86, 0x98, - 0xfe, 0x65, 0x0c, 0x40, 0x23, 0xf7, 0x24, 0x3d, 0x1a, 0x8f, 0x22, 0xe2, - 0xee, 0x2d, 0xe6, 0xb3, 0x5f, 0xbf, 0x35, 0x3b, 0x57, 0x69, 0xcf, 0x24, - 0x89, 0xb2, 0x32, 0x88, 0x48, 0xe8, 0xd8, 0xf3, 0xd2, 0xc6, 0x9d, 0xa7, - 0x15, 0x9d, 0x7a, 0x40, 0x08, 0x18, 0xd3, 0x55, 0x7f, 0x98, 0x60, 0xac, - 0x08, 0x91, 0x12, 0xd2, 0x1b, 0xe1, 0x4d, 0x0f, 0xe1, 0xeb, 0x34, 0xc0, - 0x6e, 0x16, 0x8e, 0x08, 0x70, 0x25, 0x92, 0x85, 0xac, 0xb5, 0xb4, 0x08, - 0x1d, 0xc4, 0xbb, 0x4b, 0x3f, 0x42, 0x5b, 0x35, 0x8c, 0x26, 0x94, 0xa1, - 0xb0, 0x3c, 0xd7, 0x48, 0x38, 0x75, 0xe7, 0x6c, 0x19, 0x38, 0xe9, 0x77, - 0x31, 0x95, 0x7b, 0xec, 0xa1, 0x11, 0xca, 0x1c, 0xe6, 0xbf, 0x39, 0x53, - 0xb9, 0x6c, 0xe4, 0x37, 0x0e, 0xc3, 0xa3, 0x45, 0xe5, 0x6c, 0xe3, 0xe8, - 0x11, 0xbe, 0xff, 0x04, 0xf4, 0x83, 0x43, 0xd9, 0xde, 0xa6, 0x51, 0x71, - 0x41, 0x1a, 0x48, 0xb5, 0x1c, 0x29, 0x98, 0x58, 0x11, 0xda, 0x27, 0x08, - 0x8c, 0x09, 0xf4, 0x30, 0xa3, 0x87, 0x10, 0x2b, 0x1c, 0xcc, 0x8d, 0x7c, - 0x78, 0x3c, 0xd1, 0x1d, 0xcd, 0x76, 0xc4, 0x35, 0x14, 0xa9, 0xe0, 0x9a, - 0x34, 0x71, 0x76, 0x2d, 0x47, 0xb6, 0xdc, 0xe8, 0x41, 0xb7, 0x66, 0x0f, - 0xfb, 0x16, 0xac, 0xa6, 0x56, 0x13, 0x60, 0x6a, 0x98, 0x8f, 0x6c, 0x3d, - 0x90, 0x2b, 0x2e, 0xa1, 0xd0, 0x6c, 0x35, 0x41, 0x40, 0xb1, 0xb1, 0x55, - 0x76, 0xcd, 0x47, 0xca, 0x70, 0x5f, 0x8b, 0x52, 0x84, 0xb2, 0x0c, 0xfe, - 0x38, 0x9b, 0x9f, 0x95, 0xf7, 0x4a, 0x6a, 0x31, 0xd8, 0x0a, 0x72, 0x6b, - 0x80, 0x6f, 0x8f, 0x28, 0xa3, 0x69, 0x72, 0x17, 0x2b, 0x6f, 0xb5, 0x24, - 0x65, 0x1a, 0x11, 0xd5, 0xac, 0x37, 0xd4, 0xf4, 0x79, 0x6b, 0xa2, 0xf4, - 0xf9, 0xa2, 0x06, 0xa8, 0xa5, 0xa8, 0x76, 0xbc, 0x14, 0x02, 0xf7, 0xe0, - 0x57, 0x53, 0x87, 0x66, 0x4f, 0x8d, 0xdc, 0x24, 0xe4, 0x1a, 0xc9, 0x6d, - 0x6e, 0x13, 0x92, 0xd3, 0x36, 0x2a, 0x81, 0xe7, 0x0f, 0x59, 0xb2, 0x1d, - 0xad, 0xdd, 0x92, 0x25, 0xdc, 0x8f, 0x3e, 0x12, 0xe9, 0x16, 0x70, 0x2c, - 0x00, 0xb7, 0x0d, 0xbe, 0x9b, 0x7e, 0x90, 0xfd, 0x5e, 0xfc, 0x13, 0xde, - 0xec, 0xa8, 0x69, 0x22, 0xfd, 0xd5, 0x7a, 0xed, 0xeb, 0x82, 0xd9, 0x30, - 0x4f, 0xde, 0x9b, 0xc3, 0xb5, 0xc5, 0x2d, 0x6d, 0x9a, 0xc3, 0x73, 0x93, - 0xcd, 0x84, 0xca, 0xc8, 0x41, 0x44, 0x3b, 0xd3, 0xe8, 0xd3, 0xa3, 0x31, - 0x0c, 0x2b, 0x5c, 0x91, 0x72, 0xb1, 0xf4, 0x16, 0xa6, 0x7b, 0x1c, 0x95, - 0xe2, 0x35, 0x10, 0x2a, 0x66, 0x9b, 0x58, 0x0b, 0x83, 0x1f, 0x87, 0x35, - 0x6e, 0x81, 0xcd, 0x1c, 0xdc, 0x9f, 0xe7, 0xeb, 0x70, 0x73, 0x1c, 0x1c, - 0x1f, 0x7b, 0x18, 0x97, 0x11, 0x10, 0x07, 0xd7, 0x7c, 0x42, 0x0b, 0xec, - 0x20, 0xaf, 0x24, 0x41, 0x45, 0x8e, 0x9f, 0xb7, 0x00, 0xf3, 0x29, 0x3f, - 0x58, 0x27, 0xcb, 0x39, 0x33, 0x62, 0xe6, 0xe2, 0x33, 0x21, 0x36, 0x46, - 0xba, 0x19, 0xed, 0xf4, 0xb5, 0xd4, 0x16, 0xb3, 0x1b, 0x81, 0xa8, 0x16, - 0xe5, 0x87, 0x80, 0xdb, 0xd7, 0x23, 0xf6, 0x68, 0x01, 0x53, 0x3e, 0x2e, - 0xc6, 0xf6, 0x6c, 0x2b, 0x83, 0x30, 0x1f, 0x83, 0xeb, 0x29, 0x0b, 0x95, - 0x44, 0x30, 0xa2, 0x23, 0x3b, 0xdc, 0x43, 0x75, 0x10, 0x00, 0xa1, 0xaf, - 0xa9, 0xa9, 0xad, 0xc7, 0x40, 0xad, 0xa9, 0xe1, 0x55, 0x8c, 0xfc, 0x16, - 0x9d, 0x56, 0x14, 0xb3, 0xa2, 0x24, 0x62, 0x44, 0xdf, 0x3e, 0xfb, 0xd6, - 0x57, 0x64, 0xfe, 0xde, 0x35, 0xb7, 0xd5, 0x51, 0x65, 0x1a, 0xd9, 0x91, - 0x3c, 0x35, 0xd4, 0xd3, 0x4d, 0x03, 0xe1, 0x35, 0x09, 0xf1, 0xa5, 0x4e, - 0x80, 0x9e, 0xaa, 0x34, 0xf4, 0x7f, 0xf9, 0x20, 0x91, 0xb0, 0x05, 0x74, - 0x16, 0x5f, 0x7c, 0x48, 0x74, 0x99, 0xfc, 0xeb, 0x86, 0x95, 0x20, 0x4b, - 0x83, 0xe4, 0x20, 0xb2, 0x46, 0x71, 0xb2, 0x2d, 0xbf, 0x90, 0x41, 0xfb, - 0xa0, 0x95, 0x9b, 0xa2, 0x01, 0x4a, 0x23, 0xc0, 0x97, 0x19, 0xec, 0x84, - 0xf0, 0x70, 0x18, 0xb3, 0xbc, 0xf0, 0x9c, 0x7f, 0x82, 0xda, 0x86, 0xad, - 0xe4, 0xa8, 0x5a, 0x69, 0x0f, 0x5d, 0xf4, 0x1a, 0xaa, 0xbe, 0x5f, 0xa5, - 0xa1, 0xca, 0x37, 0x3c, 0x78, 0x1e, 0xba, 0xc4, 0x3d, 0xda, 0x5e, 0xa1, - 0x04, 0x5e, 0xd6, 0xe2, 0x86, 0x93, 0xe0, 0xe4, 0x11, 0xd6, 0x9d, 0x2e, - 0xcd, 0xb5, 0x2b, 0x07, 0x1d, 0x4a, 0x4e, 0xed, 0x99, 0xdd, 0x9b, 0xe2, - 0x61, 0x99, 0xbc, 0x86, 0xe1, 0x77, 0x2e, 0xda, 0xa7, 0x35, 0xb5, 0x7c, - 0x64, 0xd2, 0xb9, 0xae, 0xbf, 0xff, 0x98, 0x5e, 0x40, 0xd7, 0xe8, 0xcd, - 0x4e, 0x72, 0x5d, 0x1f, 0x82, 0x9a, 0x84, 0x5f, 0x61, 0xb3, 0x62, 0x5f, - 0xc1, 0xb9, 0x26, 0x73, 0x38, 0x64, 0x8e, 0x6d, 0x6a, 0x77, 0xc4, 0x0b, - 0x81, 0xcf, 0x79, 0x5e, 0x99, 0xb3, 0x9a, 0x26, 0x0c, 0x0c, 0x5f, 0xfc, - 0xe2, 0xaf, 0x01, 0x14, 0xd6, 0x8e, 0x49, 0xba, 0x17, 0x6e, 0x8a, 0xca, - 0x99, 0xff, 0x5f, 0x36, 0x38, 0x19, 0x42, 0x2b, 0xd4, 0xc1, 0x63, 0xf2, - 0xd0, 0x39, 0x72, 0x71, 0xe7, 0xf2, 0x08, 0x29, 0xf2, 0x78, 0x2b, 0xfa, - 0x4f, 0x49, 0x10, 0x00, 0xfa, 0x4a, 0x5a, 0x80, 0xd0, 0xff, 0xa2, 0xf6, - 0xb8, 0x0b, 0x37, 0x4f, 0x03, 0x95, 0x7d, 0xb5, 0x36, 0x34, 0x13, 0x4b, - 0x50, 0x87, 0x54, 0x00, 0x26, 0xc6, 0xa0, 0xff, 0x64, 0x8c, 0x58, 0x09, - 0xc8, 0x16, 0xb9, 0xdf, 0x34, 0xa8, 0x06, 0x1f, 0x8d, 0x24, 0xb2, 0xfc, - 0x0b, 0x4e, 0xbc, 0x1f, 0x85, 0xa5, 0x9f, 0xcf, 0xe8, 0xa1, 0x6f, 0x58, - 0x31, 0x1f, 0x40, 0xf9, 0x18, 0xe5, 0x36, 0x30, 0x70, 0xc0, 0x72, 0x26, - 0x5c, 0x04, 0x53, 0x42, 0xd1, 0x1b, 0x76, 0x0f, 0x24, 0xd9, 0x9e, 0x92, - 0x71, 0x01, 0x64, 0x79, 0x6a, 0x58, 0x4b, 0x56, 0x02, 0xdb, 0xe9, 0x05, - 0x6e, 0xf7, 0xb0, 0x27, 0x3b, 0xc5, 0x5a, 0xd5, 0x80, 0xd6, 0x9c, 0xf1, - 0x3b, 0xc7, 0x25, 0xf8, 0xc1, 0x31, 0x6f, 0xef, 0xc2, 0x36, 0x26, 0xb0, - 0x13, 0xaa, 0x37, 0xbc, 0x3d, 0x3c, 0x5a, 0xb4, 0xf7, 0xab, 0x25, 0xdd, - 0x12, 0x35, 0x28, 0xb2, 0x54, 0x43, 0xfc, 0x27, 0x98, 0x09, 0x42, 0x00, - 0xc8, 0xd5, 0x48, 0x7a, 0xe2, 0xe7, 0xf1, 0xc6, 0xab, 0xfd, 0x4f, 0xe0, - 0x05, 0xe5, 0xd7, 0xc7, 0x6a, 0xe5, 0xff, 0x71, 0x7d, 0xf1, 0x05, 0xa2, - 0x89, 0x91, 0xed, 0xc7, 0xdb, 0xc7, 0xd9, 0x59, 0xc8, 0x10, 0x5d, 0x29, - 0x3a, 0x4b, 0x1b, 0xf6, 0x3f, 0xbd, 0x5a, 0x62, 0xae, 0xe6, 0x27, 0xdc, - 0xa9, 0x5c, 0xef, 0x17, 0xf1, 0x9d, 0x11, 0xf2, 0x22, 0x42, 0x0d, 0xe7, - 0xa2, 0xea, 0xfc, 0x3e, 0x79, 0x27, 0xb1, 0xf1, 0x45, 0xcb, 0x27, 0x42, - 0x03, 0x7b, 0x67, 0xac, 0xd4, 0x69, 0x7a, 0x91, 0xd7, 0x3c, 0x4d, 0xc5, - 0x62, 0x40, 0x89, 0xf1, 0xf6, 0x78, 0x0f, 0x10, 0x18, 0xdc, 0x52, 0x3a, - 0x05, 0xa1, 0x1f, 0x99, 0xb0, 0x0e, 0xec, 0x37, 0xf5, 0x18, 0x53, 0x51, - 0xfe, 0x6e, 0x5c, 0x70, 0x7c, 0x6c, 0x5e, 0x78, 0x61, 0x76, 0x5c, 0x6a, - 0x3e, 0xf4, 0x4e, 0x3c, 0x11, 0x68, 0xfb, 0xa0, 0x78, 0x63, 0x78, 0x00, - 0xf8, 0x9c, 0x99, 0x8d, 0xf4, 0x2a, 0x4a, 0x5f, 0xfb, 0xda, 0x93, 0x79, - 0xba, 0xc8, 0x85, 0x18, 0x90, 0x5c, 0xed, 0x4d, 0x29, 0x20, 0x5f, 0xed, - 0xab, 0x35, 0xb5, 0x27, 0xc5, 0x7d, 0x19, 0xdc, 0xf3, 0x80, 0x3f, 0x32, - 0x1d, 0x91, 0x86, 0x56, 0x3d, 0x2a, 0x56, 0x47, 0x13, 0x81, 0xd0, 0x14, - 0xb3, 0xfc, 0x94, 0xb2, 0x22, 0x81, 0x55, 0xda, 0xfd, 0x79, 0xdf, 0x22, - 0x42, 0xb1, 0x8a, 0x3d, 0x7c, 0x5d, 0xef, 0x7d, 0xc6, 0x5c, 0x3b, 0x93, - 0x9d, 0x3f, 0x27, 0x76, 0xdc, 0x6d, 0x86, 0x3d, 0xc5, 0x47, 0xdf, 0x22, - 0x90, 0x16, 0x83, 0x75, 0xca, 0x3c, 0xe6, 0x8d, 0x1f, 0x94, 0x72, 0xd4, - 0x6f, 0x8c, 0x10, 0x85, 0x5f, 0x40, 0x5b, 0xa8, 0xb5, 0x54, 0x9f, 0xe2, - 0x51, 0x5b, 0x51, 0x82, 0xf4, 0x53, 0x7a, 0x55, 0x38, 0x29, 0xb8, 0x85, - 0x4e, 0xaf, 0x90, 0x6c, 0xd4, 0xae, 0x40, 0x3a, 0xc1, 0xf6, 0xc4, 0x12, - 0x0a, 0x69, 0xcc, 0x52, 0x85, 0x1f, 0xbd, 0x36, 0x64, 0x32, 0x51, 0x1d, - 0x8f, 0xa0, 0x1c, 0xea, 0xc8, 0x6f, 0xeb, 0xee, 0xb1, 0xa6, 0x77, 0x90, - 0x18, 0x7f, 0xcb, 0x5b, 0xb7, 0x92, 0xd1, 0x2b, 0x31, 0xc6, 0x29, 0x9b, - 0x96, 0x7d, 0x90, 0xc5, 0xb3, 0x14, 0x1c, 0x21, 0xa3, 0xb0, 0x32, 0x1a, - 0x23, 0x4e, 0x20, 0xbd, 0x87, 0xfd, 0x66, 0x4d, 0xfe, 0x43, 0xf6, 0x13, - 0x2e, 0x57, 0xb1, 0xc4, 0xb3, 0xf1, 0x8f, 0x9d, 0x01, 0x8e, 0xe1, 0xe9, - 0xf7, 0x73, 0x5a, 0x3f, 0xd4, 0xca, 0xab, 0x29, 0xe6, 0xd2, 0x24, 0x0d, - 0xed, 0x66, 0xfb, 0x91, 0x6b, 0x31, 0x15, 0xce, 0x2e, 0xa7, 0x86, 0x12, - 0x7a, 0x7f, 0x6d, 0x6b, 0xcb, 0xf8, 0xeb, 0x5c, 0xf0, 0x14, 0x21, 0x2f, - 0xa7, 0x36, 0x66, 0x1d, 0x3b, 0x66, 0xeb, 0x19, 0xd8, 0xc4, 0x21, 0x9f, - 0x14, 0x93, 0xf0, 0xa1, 0x5a, 0x8e, 0xbd, 0xcc, 0x2a, 0x61, 0x18, 0xa7, - 0x4a, 0x8f, 0x7c, 0x1c, 0x22, 0x46, 0xbb, 0xcf, 0x7f, 0xc2, 0xfa, 0x6c, - 0x6f, 0x70, 0xe4, 0x1e, 0xa4, 0x13, 0x2f, 0xe9, 0x2d, 0xc8, 0x46, 0xba, - 0x6c, 0x9b, 0xea, 0xd2, 0x77, 0x14, 0x07, 0xab, 0x11, 0xe8, 0x82, 0x72, - 0xab, 0x66, 0x83, 0x76, 0x0d, 0x89, 0xc0, 0xd5, 0xe0, 0x87, 0x0c, 0x54, - 0x88, 0x4e, 0xa7, 0x15, 0xe3, 0x56, 0x52, 0x9b, 0xf8, 0x03, 0x9a, 0xe4, - 0xd4, 0x1a, 0xcd, 0x69, 0xb7, 0x33, 0x45, 0xb0, 0x8c, 0xb0, 0x0c, 0xd9, - 0x19, 0xc5, 0xa9, 0x31, 0x99, 0xe6, 0x25, 0x9a, 0x82, 0x0c, 0x18, 0x94, - 0xf3, 0x7e, 0x8d, 0x9a, 0x50, 0x88, 0xf8, 0x4b, 0x98, 0x51, 0x81, 0x04, - 0x9d, 0xdd, 0xca, 0xba, 0xe2, 0x39, 0x2a, 0x29, 0x41, 0x29, 0x59, 0xb6, - 0xc2, 0xb4, 0xb4, 0x25, 0x98, 0x8a, 0x3e, 0x9e, 0xeb, 0x7f, 0x63, 0xa8, - 0x6b, 0x9f, 0x4c, 0x6f, 0xfb, 0xcd, 0xe6, 0xd7, 0x81, 0x84, 0xc7, 0x44, - 0x90, 0xdb, 0x2c, 0xca, 0xd2, 0x01, 0x7d, 0xaf, 0x4c, 0x67, 0x73, 0xf2, - 0x44, 0x90, 0x62, 0xad, 0xa1, 0x26, 0xd5, 0xf7, 0xba, 0xd0, 0x31, 0x95, - 0x5f, 0x1d, 0xc9, 0x01, 0x7d, 0xc6, 0xbd, 0x6d, 0xd5, 0x75, 0x30, 0x04, - 0xc1, 0x8a, 0x70, 0xc3, 0x76, 0xda, 0x46, 0xa4, 0x1f, 0xc7, 0x44, 0x7d, - 0x73, 0x40, 0x3b, 0x57, 0x7b, 0xb7, 0xfb, 0x97, 0x97, 0x13, 0x1a, 0x94, - 0x7d, 0xf9, 0x67, 0x19, 0xed, 0x26, 0x18, 0x1b, 0xa9, 0x88, 0x66, 0x42, - 0xdd, 0x8f, 0xc1, 0xce, 0xdb, 0x32, 0xd3, 0x6e, 0x3c, 0x21, 0x5e, 0xf7, - 0x5f, 0x84, 0x57, 0xdb, 0x6e, 0x2b, 0x3a, 0x38, 0x0d, 0x0b, 0x2b, 0x68, - 0xa0, 0x21, 0xa7, 0x00, 0xbc, 0x0e, 0x01, 0x63, 0xa7, 0x71, 0x3f, 0x4a, - 0x42, 0x39, 0x25, 0xef, 0xc2, 0x3e, 0x01, 0x1f, 0xd0, 0xb5, 0x81, 0xde, - 0xb8, 0xfc, 0x32, 0x05, 0xe4, 0x0f, 0x68, 0xf9, 0x03, 0xdd, 0x33, 0xca, - 0x3e, 0x23, 0x23, 0x3f, 0xdb, 0x78, 0x34, 0x4a, 0x4e, 0x3b, 0xf1, 0x1d, - 0x32, 0x81, 0x77, 0x20, 0xf8, 0x1c, 0x47, 0x88, 0x04, 0x7a, 0x82, 0x1f, - 0xc4, 0x3c, 0x60, 0x5b, 0xce, 0x93, 0x28, 0xff, 0x35, 0x2a, 0x15, 0x70, - 0xaf, 0x91, 0xb6, 0x60, 0x16, 0xd7, 0xe8, 0xc0, 0x3e, 0x22, 0x60, 0x2a, - 0xe0, 0xe0, 0xd0, 0x9c, 0x53, 0x4d, 0x96, 0x28, 0x5b, 0xa4, 0xe2, 0x0f, - 0x20, 0xe1, 0x14, 0xdd, 0x15, 0x9e, 0x78, 0xdb, 0x18, 0x20, 0xd2, 0x2f, - 0x16, 0x82, 0x09, 0x13, 0x6c, 0x23, 0x76, 0x72, 0x11, 0xef, 0x39, 0xd4, - 0x70, 0x87, 0xf2, 0x55, 0x03, 0x8c, 0xe6, 0xf1, 0x26, 0xef, 0xfa, 0x55, - 0x61, 0x31, 0x3b, 0xe7, 0x47, 0x96, 0xf1, 0x79, 0xe4, 0x47, 0x58, 0x8b, - 0x2f, 0x36, 0x28, 0xe3, 0x5e, 0x8d, 0xa8, 0x3f, 0x3f, 0x73, 0x94, 0x57, - 0xc6, 0x25, 0xb6, 0x2c, 0xda, 0x2c, 0xc2, 0x3b, 0xb1, 0xf9, 0x96, 0xfc, - 0x21, 0xaf, 0xda, 0x04, 0x36, 0x3d, 0xc2, 0xa3, 0x69, 0x64, 0x8b, 0x60, - 0xbd, 0x2f, 0x27, 0x12, 0x55, 0x8d, 0xa4, 0x84, 0x3c, 0x13, 0x11, 0x44, - 0x33, 0xd6, 0xf4, 0xec, 0x35, 0x16, 0xf5, 0x4b, 0x8b, 0xb9, 0xf9, 0xb5, - 0x49, 0x13, 0xcb, 0xbd, 0x31, 0x1a, 0x51, 0xb5, 0x7f, 0x3a, 0x25, 0x52, - 0x0d, 0x8b, 0xbd, 0x59, 0x41, 0xf8, 0x83, 0x1e, 0x41, 0xca, 0x22, 0x1a, - 0xab, 0x46, 0xba, 0xd6, 0xbf, 0x1b, 0x09, 0xec, 0x8d, 0x47, 0x61, 0x84, - 0x7d, 0x2e, 0xd2, 0x64, 0xea, 0xdd, 0xdf, 0x1a, 0x83, 0x4a, 0x2a, 0x1e, - 0x07, 0x83, 0x36, 0xf0, 0xb4, 0x93, 0x37, 0xd6, 0xe6, 0x9f, 0xcf, 0xc7, - 0x9f, 0x00, 0x57, 0xc1, 0x73, 0x01, 0xe0, 0x57, 0x20, 0x05, 0xce, 0xdc, - 0x4e, 0x55, 0xe1, 0x20, 0x10, 0xbd, 0x93, 0x11, 0x99, 0x85, 0x90, 0x0c, - 0xe7, 0xfd, 0x2f, 0x4a, 0xa2, 0x77, 0xf3, 0x05, 0x86, 0x45, 0xea, 0x05, - 0xf8, 0x64, 0x5d, 0xfe, 0xe0, 0x79, 0xfc, 0x65, 0xb9, 0xfa, 0xcd, 0x63, - 0x7b, 0x77, 0x0b, 0xc8, 0xbe, 0x41, 0x99, 0x71, 0xa4, 0xbd, 0xf5, 0x65, - 0x69, 0x3a, 0x4b, 0x94, 0xf4, 0xbb, 0x04, 0x57, 0x14, 0x65, 0xfe, 0x71, - 0xf3, 0x6e, 0x5e, 0x53, 0xa7, 0xfd, 0xde, 0x05, 0xe1, 0xc6, 0x36, 0xed, - 0xde, 0x71, 0x8c, 0xbb, 0xe0, 0xc6, 0xd8, 0xeb, 0x8f, 0xa1, 0xfa, 0xca, - 0xef, 0x27, 0xfc, 0x3d, 0x9e, 0x50, 0xfa, 0xc8, 0x52, 0xd7, 0x69, 0x06, - 0x46, 0x7a, 0x00, 0x9f, 0x73, 0x7b, 0x06, 0x7f, 0xee, 0x6a, 0xb7, 0x65, - 0x9a, 0x63, 0xa4, 0x31, 0x9e, 0xc4, 0x26, 0xf1, 0x32, 0x20, 0xbe, 0x6f, - 0xf1, 0xb2, 0xd9, 0xdb, 0x02, 0xa4, 0x67, 0x48, 0x7d, 0x08, 0x9f, 0xd6, - 0xc5, 0xf4, 0x86, 0x6e, 0x1e, 0xe5, 0x5b, 0x45, 0x0f, 0x39, 0x07, 0x4a, - 0x47, 0xa8, 0x1e, 0x9e, 0x7e, 0x4c, 0x86, 0xb0, 0x5f, 0x9a, 0x72, 0x52, - 0x38, 0xe8, 0x8d, 0x5b, 0x67, 0xe5, 0xce, 0xf2, 0x9e, 0x61, 0x56, 0x38, - 0xec, 0x66, 0x7f, 0x34, 0xc7, 0xb4, 0x2e, 0x67, 0x29, 0x2a, 0xfe, 0x59, - 0xdd, 0xe7, 0x02, 0xbe, 0x70, 0x54, 0xbc, 0x39, 0xe2, 0xdb, 0xb9, 0x80, - 0x5c, 0xe9, 0xb1, 0x70, 0xb2, 0x72, 0x53, 0xe0, 0x13, 0x18, 0x4b, 0xe2, - 0x68, 0x67, 0xea, 0x0c, 0x89, 0x72, 0xb8, 0xf3, 0x4b, 0xb2, 0x04, 0x3a, - 0x91, 0xf9, 0xcb, 0x05, 0xca, 0x3e, 0xc0, 0xf7, 0xb5, 0x50, 0xa4, 0xec, - 0x31, 0x5f, 0x90, 0xb1, 0x41, 0x60, 0x47, 0x6c, 0xa7, 0x30, 0x8a, 0xe9, - 0xac, 0x8e, 0x2b, 0xc3, 0x51, 0x23, 0x42, 0x20, 0xf4, 0x19, 0x56, 0x42, - 0x62, 0x37, 0x7d, 0xc2, 0xa7, 0xa4, 0x68, 0x71, 0x61, 0x83, 0xdb, 0xf8, - 0x84, 0xc4, 0x5d, 0x2e, 0x2a, 0xd7, 0x1e, 0xab, 0x00, 0x1d, 0x8c, 0xd3, - 0xa3, 0x83, 0xeb, 0x01, 0xfb, 0xda, 0x55, 0x23, 0xb8, 0x4f, 0x07, 0x67, - 0xeb, 0x9f, 0x02, 0x2a, 0xb2, 0x3e, 0xd4, 0x2e, 0x7f, 0x21, 0xd4, 0xf1, - 0x20, 0x8a, 0x55, 0x61, 0x7b, 0xe4, 0x36, 0x1d, 0xe6, 0xb7, 0xf8, 0x25, - 0x39, 0xfe, 0x4b, 0xf3, 0xa6, 0xf6, 0x28, 0xff, 0x93, 0x9d, 0xee, 0x4d, - 0xe1, 0x5a, 0x4e, 0x1e, 0x44, 0x79, 0xc4, 0x91, 0x57, 0xcd, 0x45, 0xde, - 0x99, 0x13, 0xdc, 0xf0, 0x59, 0x61, 0xab, 0x0b, 0xda, 0x30, 0xa2, 0x0f, - 0xe7, 0x96, 0x2e, 0x54, 0x2f, 0xa4, 0xbf, 0x5c, 0x9e, 0x84, 0x53, 0xcb, - 0xd4, 0x2b, 0xdb, 0x09, 0x05, 0x2f, 0xea, 0xa3, 0x38, 0x5b, 0x87, 0xf8, - 0x88, 0x6d, 0xfe, 0xaf, 0x7a, 0x2f, 0xd9, 0x76, 0x27, 0xb5, 0x46, 0xdf, - 0xac, 0x27, 0xd6, 0x26, 0x37, 0x2e, 0x23, 0x4f, 0xba, 0x4e, 0x5f, 0x93, - 0x3e, 0xf3, 0x32, 0x8d, 0x46, 0x0e, 0x3a, 0xf4, 0x39, 0x8d, 0x02, 0xed, - 0x82, 0x12, 0xa8, 0x2a, 0x10, 0x51, 0x4b, 0x0e, 0x00, 0x60, 0x7b, 0xad, - 0x8d, 0x48, 0x26, 0xa8, 0x5b, 0x82, 0x03, 0x74, 0xb9, 0x15, 0x92, 0x07, - 0x8a, 0x12, 0x17, 0x79, 0x97, 0x36, 0x33, 0x33, 0x17, 0x26, 0xae, 0x8a, - 0x94, 0x63, 0x5b, 0xa2, 0x63, 0x09, 0x01, 0xc4, 0x0f, 0x3d, 0xa4, 0x83, - 0x2a, 0xf9, 0x59, 0x64, 0x34, 0x90, 0x24, 0x6d, 0xae, 0xf4, 0x9e, 0xc0, - 0x8f, 0xdf, 0x95, 0xee, 0x64, 0xb6, 0xa1, 0xdd, 0x6e, 0x39, 0xc9, 0xa8, - 0x84, 0x71, 0x26, 0x89, 0xa6, 0x25, 0x79, 0xfe, 0xd6, 0xae, 0xca, 0xec, - 0x2d, 0x2d, 0xc7, 0x0d, 0x9f, 0xd1, 0xa7, 0xe3, 0x75, 0x23, 0x64, 0xe2, - 0x64, 0x2d, 0x02, 0x7e, 0x07, 0xbb, 0x25, 0x0b, 0xfa, 0xd1, 0x28, 0x4b, - 0x0d, 0x48, 0x47, 0xa8, 0x27, 0xc0, 0xe5, 0x4f, 0xff, 0xc8, 0x70, 0x3c, - 0xec, 0x3d, 0x92, 0xcc, 0xc3, 0xc3, 0x27, 0x0d, 0xff, 0xb5, 0x93, 0x89, - 0x08, 0xcd, 0x76, 0x0b, 0xf7, 0xb8, 0x19, 0x08, 0x40, 0xcc, 0xff, 0x12, - 0x10, 0xf1, 0x9f, 0x01, 0x9d, 0x17, 0x9d, 0x7e, 0xb5, 0xb7, 0xf6, 0x11, - 0x41, 0xc9, 0x87, 0x09, 0x03, 0x2f, 0x16, 0x67, 0x91, 0xf8, 0xcc, 0x56, - 0x1b, 0x8c, 0x39, 0xda, 0xcb, 0x24, 0xfb, 0xf9, 0x82, 0xd5, 0x61, 0xad, - 0x71, 0x6d, 0x27, 0x8e, 0x17, 0xfd, 0x5e, 0xb4, 0xd1, 0xc9, 0x43, 0x6d, - 0x95, 0x59, 0xe8, 0x38, 0x2b, 0x47, 0x00, 0x60, 0xd3, 0xed, 0xe7, 0xde, - 0x70, 0xce, 0x0b, 0x7a, 0xbf, 0xc2, 0xd8, 0x7e, 0xd3, 0x2d, 0xed, 0x6e, - 0xd6, 0xb2, 0x7f, 0xe0, 0x56, 0x0f, 0x6f, 0x22, 0x6f, 0x60, 0xd3, 0x91, - 0xe9, 0xf6, 0xe0, 0x22, 0xa0, 0xc4, 0xd4, 0xa9, 0x26, 0x28, 0x0d, 0x4a, - 0x60, 0xdd, 0xbc, 0x46, 0xf5, 0x8e, 0x3b, 0x41, 0xc4, 0x99, 0x0a, 0xa7, - 0xd9, 0xcf, 0x5b, 0x49, 0xd0, 0x6b, 0x32, 0x53, 0xd5, 0xe4, 0xb7, 0x30, - 0x53, 0xc4, 0x4c, 0x6c, 0x21, 0x29, 0x04, 0x0a, 0x83, 0xab, 0xd4, 0x5c, - 0xfc, 0xf4, 0x5d, 0xa7, 0x1d, 0xa9, 0x7d, 0x4d, 0x97, 0x1f, 0xdc, 0x1b, - 0x01, 0x2a, 0x61, 0x99, 0x4e, 0xd0, 0x12, 0xf7, 0x6c, 0x3e, 0x01, 0x32, - 0x72, 0x38, 0x3f, 0x92, 0x3e, 0x4d, 0x39, 0xf2, 0x6f, 0x2f, 0x6b, 0x1d, - 0xd5, 0x52, 0x2c, 0x1c, 0x45, 0x50, 0x14, 0x0a, 0xae, 0x7c, 0x2e, 0xf7, - 0x56, 0x82, 0xf6, 0xbb, 0xdd, 0xb9, 0xf2, 0x0d, 0x95, 0x74, 0x1b, 0x11, - 0x03, 0x35, 0xb0, 0x83, 0x5e, 0xf1, 0x08, 0x2d, 0xce, 0x1a, 0x8c, 0x96, - 0xa4, 0x09, 0xba, 0x6e, 0x03, 0x32, 0xb9, 0xaa, 0xab, 0x45, 0x01, 0x92, - 0xb9, 0xf5, 0x74, 0x53, 0x0c, 0xf1, 0x7f, 0xef, 0xf8, 0x57, 0xeb, 0xa3, - 0xb1, 0x24, 0xe0, 0x8c, 0xa3, 0xd9, 0x0d, 0x20, 0x0a, 0xda, 0x15, 0xa8, - 0x5b, 0x17, 0x0d, 0xc1, 0x6b, 0x7f, 0xec, 0xd2, 0x4f, 0xbf, 0x90, 0x09, - 0x19, 0x47, 0xb8, 0x62, 0x8e, 0x94, 0x80, 0xb2, 0xb0, 0x67, 0x59, 0x52, - 0x17, 0x73, 0x0a, 0x18, 0x81, 0xce, 0x35, 0x80, 0xaa, 0xbc, 0x26, 0x1f, - 0x58, 0x0f, 0x3b, 0x26, 0xac, 0xb7, 0x88, 0xad, 0xdd, 0xfe, 0xe8, 0x29, - 0x88, 0x07, 0x80, 0x4e, 0x72, 0xd1, 0x85, 0xd4, 0x12, 0x1b, 0x3c, 0x28, - 0x85, 0x40, 0x4d, 0xf9, 0xbb, 0x11, 0xed, 0x38, 0xb8, 0x45, 0x5f, 0x13, - 0xbc, 0xd0, 0x0f, 0x77, 0x34, 0x67, 0x8f, 0x3f, 0x5c, 0x7e, 0x17, 0xb9, - 0x2f, 0x8b, 0xfc, 0x83, 0x52, 0x72, 0x4b, 0xbc, 0x8e, 0xd4, 0x01, 0x36, - 0x87, 0xdf, 0x21, 0xe9, 0xfc, 0xa8, 0x0e, 0x9c, 0xd1, 0xb7, 0xfc, 0x5a, - 0x0e, 0x82, 0x8c, 0x79, 0x63, 0x8d, 0xff, 0x1b, 0x08, 0x09, 0xca, 0x71, - 0x6f, 0x94, 0x4a, 0x5e, 0x69, 0xb8, 0x29, 0x84, 0x0f, 0x73, 0xaf, 0x28, - 0x31, 0x77, 0x03, 0xee, 0x94, 0x80, 0xda, 0xb5, 0xbc, 0x0b, 0x50, 0xa2, - 0xdc, 0xf6, 0x3c, 0x42, 0xb6, 0x23, 0xfb, 0xd4, 0xa7, 0xfe, 0x2a, 0x2d, - 0x2b, 0xc8, 0xa4, 0xa8, 0xed, 0x20, 0x3f, 0x01, 0x77, 0xfd, 0xa4, 0x9a, - 0xdf, 0x88, 0x22, 0x88, 0x60, 0xeb, 0xf0, 0x83, 0x2d, 0xad, 0x5d, 0x27, - 0xe8, 0xcf, 0xca, 0xa2, 0x2b, 0x7b, 0xb8, 0xf5, 0x6e, 0xae, 0xc5, 0x0d, - 0x30, 0x2f, 0x8f, 0x10, 0x49, 0x21, 0xf8, 0x43, 0x8f, 0xc8, 0x07, 0x5d, - 0x56, 0xcf, 0x40, 0xfb, 0x26, 0xba, 0x65, 0x6f, 0x32, 0x45, 0x52, 0x71, - 0x5f, 0xf7, 0xb0, 0xf0, 0x22, 0xb7, 0x3d, 0x5b, 0x80, 0xa0, 0x78, 0x65, - 0x48, 0x18, 0x5e, 0x06, 0xbf, 0x9f, 0x5f, 0x37, 0xdd, 0xec, 0x7f, 0xbd, - 0xd8, 0x42, 0xfe, 0xdb, 0x32, 0x69, 0x5b, 0xa5, 0x90, 0xbe, 0x89, 0x03, - 0xa7, 0xbf, 0x54, 0x7b, 0x0f, 0xee, 0xd8, 0x8f, 0xfa, 0xa6, 0x84, 0x91, - 0x66, 0x0b, 0x7f, 0xe2, 0xfd, 0x2d, 0xd1, 0x8a, 0xa9, 0x58, 0xe0, 0x45, - 0xc7, 0x86, 0x37, 0x75, 0x22, 0x46, 0x48, 0xa8, 0xf8, 0x36, 0xfb, 0x35, - 0xa1, 0x51, 0xf6, 0xbd, 0xc9, 0xae, 0x15, 0x44, 0xfd, 0x2d, 0xf0, 0x0c, - 0x58, 0x36, 0xb2, 0x09, 0x42, 0x65, 0x2b, 0xab, 0xf0, 0x27, 0x77, 0x4b, - 0xce, 0xfd, 0xe3, 0x7b, 0x9d, 0xf6, 0x9b, 0x43, 0xc2, 0xbb, 0x75, 0x3a, - 0xc2, 0xe1, 0xca, 0x68, 0x4e, 0x39, 0xd3, 0xbc, 0xae, 0xee, 0xd9, 0xf6, - 0x70, 0xbf, 0xa0, 0xdb, 0x7d, 0x66, 0xf8, 0x26, 0xbe, 0x91, 0xe7, 0xd1, - 0xc0, 0x4a, 0x32, 0x88, 0x58, 0x68, 0x65, 0x6e, 0x8f, 0xeb, 0x43, 0x71, - 0x3b, 0x99, 0xec, 0xb7, 0xf7, 0x5c, 0x29, 0xcd, 0x79, 0x84, 0x6e, 0x5f, - 0xfe, 0xe3, 0x0e, 0x04, 0xe9, 0x89, 0x96, 0xff, 0x5d, 0x69, 0xab, 0x1b, - 0x8e, 0x39, 0xd5, 0x95, 0xdf, 0xc8, 0x58, 0x5b, 0x0b, 0x2f, 0x3b, 0x58, - 0x20, 0x34, 0x20, 0x07, 0x95, 0x70, 0xce, 0xac, 0xbf, 0x5f, 0x02, 0xc2, - 0x8d, 0x26, 0x3d, 0x80, 0xd5, 0x52, 0x7f, 0xd0, 0x1d, 0xe4, 0x4e, 0xb2, - 0xad, 0x5a, 0x4d, 0xa4, 0xb6, 0x24, 0x32, 0x62, 0xc0, 0xd2, 0x64, 0xdb, - 0x32, 0xae, 0x29, 0x8b, 0x70, 0x9c, 0xe5, 0x05, 0x42, 0x13, 0x6c, 0x56, - 0x4c, 0x8e, 0x9a, 0x9b, 0xa2, 0xba, 0x24, 0xd5, 0x53, 0x09, 0x58, 0x52, - 0x38, 0xf2, 0xd3, 0xfb, 0x2a, 0x23, 0xd1, 0x38, 0xf0, 0x4d, 0x60, 0x72, - 0xa6, 0x13, 0xf8, 0x78, 0xdc, 0x2d, 0x5e, 0x36, 0xbf, 0xbf, 0x6d, 0xc4, - 0x51, 0x40, 0xaa, 0x29, 0xfd, 0xd4, 0xff, 0x23, 0x16, 0x06, 0xaf, 0x5c, - 0xff, 0xc4, 0x42, 0xea, 0x2c, 0x15, 0x34, 0xdc, 0xd9, 0xa5, 0xaf, 0xe2, - 0xf3, 0xb6, 0xaa, 0x8b, 0x9c, 0x46, 0xb7, 0xc1, 0xf8, 0x3b, 0x83, 0xb4, - 0x72, 0x39, 0x0c, 0x72, 0xf0, 0x39, 0x77, 0xb8, 0xa6, 0xff, 0x6b, 0xfc, - 0x4a, 0x44, 0x0f, 0x90, 0xa8, 0x2b, 0x84, 0xbf, 0xfb, 0x84, 0x92, 0xb3, - 0x52, 0xfd, 0x7e, 0x9d, 0xe9, 0xb0, 0x40, 0x75, 0xec, 0x4f, 0xa5, 0x81, - 0xee, 0xec, 0x4c, 0x89, 0x5c, 0x22, 0xab, 0x18, 0xa5, 0x48, 0x88, 0x8a, - 0x96, 0x65, 0x25, 0x50, 0x9e, 0x71, 0xc6, 0x82, 0x78, 0x58, 0xa1, 0xab, - 0xa3, 0x29, 0x33, 0x95, 0x8b, 0xc1, 0x03, 0x87, 0x8f, 0x10, 0x84, 0xbe, - 0x4c, 0x73, 0xdc, 0x31, 0xba, 0x44, 0x25, 0xbd, 0xaa, 0xf0, 0x91, 0xc6, - 0x6c, 0x11, 0xcb, 0x43, 0x15, 0xa7, 0xab, 0x2d, 0x43, 0xd4, 0x38, 0x21, - 0xb2, 0x3e, 0x1b, 0x66, 0x24, 0x5d, 0x91, 0x8e, 0xf5, 0xa0, 0xb5, 0xa4, - 0xea, 0xae, 0x53, 0x70, 0x50, 0xe4, 0x57, 0xd5, 0xac, 0x86, 0x4f, 0x97, - 0xf3, 0xca, 0x78, 0x00, 0xe9, 0xc4, 0x13, 0x76, 0x06, 0xc3, 0x50, 0x2f, - 0x2d, 0xfa, 0x74, 0xe5, 0x44, 0xc8, 0x6b, 0xac, 0xdc, 0xcc, 0x18, 0x2f, - 0x8a, 0x01, 0x25, 0x5d, 0xd4, 0x49, 0xf9, 0x17, 0x64, 0x6b, 0x2e, 0xc1, - 0xcc, 0x18, 0xfc, 0x2c, 0xc1, 0x1a, 0x2f, 0x90, 0xec, 0xe8, 0x43, 0x5a, - 0xa9, 0x9e, 0xdd, 0x97, 0xd0, 0x14, 0x4e, 0x30, 0xe9, 0x5c, 0xa4, 0xd7, - 0xd6, 0x24, 0x17, 0x2d, 0x7a, 0x65, 0x99, 0x56, 0xa1, 0xf0, 0x81, 0x0f, - 0xe6, 0x9f, 0xaa, 0xd5, 0x1c, 0x3f, 0x35, 0xf9, 0x5a, 0x2a, 0xe0, 0x92, - 0x74, 0xdb, 0x48, 0xb1, 0x0f, 0x41, 0xce, 0xc7, 0x59, 0x95, 0x88, 0x52, - 0x88, 0x76, 0x70, 0x17, 0x37, 0xf8, 0xad, 0xcc, 0x0c, 0xad, 0xce, 0x6d, - 0xeb, 0x36, 0x0a, 0x36, 0xc1, 0x5e, 0x69, 0x18, 0xa5, 0x94, 0x10, 0x45, - 0xed, 0x5c, 0x29, 0x32, 0x41, 0x34, 0xed, 0xb9, 0x25, 0xb2, 0x81, 0x38, - 0xea, 0x13, 0xea, 0x34, 0xcf, 0x27, 0x51, 0xb2, 0xdc, 0x6c, 0x1f, 0x8a, - 0xd3, 0x3d, 0x3d, 0x65, 0x2b, 0x11, 0xd1, 0x72, 0x90, 0xe4, 0x07, 0x95, - 0xdc, 0x5e, 0xdf, 0xc1, 0x86, 0x93, 0x52, 0x1d, 0x84, 0xce, 0x51, 0x92, - 0xe7, 0x79, 0x80, 0x6e, 0xcb, 0x91, 0xde, 0xcc, 0xa1, 0xa0, 0x9d, 0xd4, - 0x7b, 0x77, 0xc7, 0xd7, 0x9a, 0x47, 0x9f, 0xe9, 0x43, 0xc8, 0x54, 0x39, - 0x04, 0x16, 0x73, 0xf5, 0xfd, 0x37, 0x0d, 0x36, 0x8e, 0xbe, 0x9b, 0x10, - 0x1b, 0x79, 0xb8, 0x2d, 0xb2, 0xfc, 0x6b, 0xd6, 0xf7, 0x8d, 0x67, 0x2a, - 0xd0, 0x3d, 0x58, 0xfb, 0x2b, 0x44, 0x73, 0xa8, 0x04, 0x58, 0xfc, 0xb6, - 0x92, 0x8c, 0x25, 0xb5, 0x0d, 0x0b, 0xf2, 0xb7, 0x1f, 0x6d, 0x41, 0xdf, - 0xb9, 0xee, 0xf2, 0x32, 0x5e, 0xfd, 0xad, 0xd5, 0xf0, 0xee, 0x93, 0x3e, - 0x1f, 0x80, 0x7f, 0x54, 0xc1, 0xfb, 0x0b, 0x4d, 0xe9, 0xf7, 0xac, 0xe2, - 0x93, 0xc7, 0x44, 0xd9, 0xd1, 0x00, 0x11, 0x99, 0x16, 0xbd, 0xc5, 0xc2, - 0x73, 0x02, 0xf9, 0xe1, 0xa6, 0x34, 0x10, 0xe0, 0x99, 0x8c, 0x4f, 0x7d, - 0x27, 0xc7, 0x3e, 0x90, 0xe2, 0xd3, 0xa5, 0x83, 0x8f, 0x04, 0x7c, 0x69, - 0x92, 0x09, 0xe8, 0xa9, 0x56, 0xd7, 0x41, 0x84, 0x52, 0x0a, 0xfb, 0x64, - 0x2d, 0x2c, 0xd2, 0x64, 0xd2, 0x83, 0xda, 0x44, 0x99, 0x35, 0x95, 0x01, - 0x33, 0xa7, 0x38, 0xef, 0x0a, 0x69, 0xab, 0x04, 0xa2, 0x50, 0x12, 0x9d, - 0x04, 0x3b, 0x10, 0x1d, 0xd2, 0xfb, 0x5c, 0x6c, 0xd6, 0x23, 0x97, 0x7b, - 0x38, 0xad, 0x44, 0x56, 0x85, 0x86, 0x87, 0x94, 0x27, 0x63, 0x38, 0x93, - 0x00, 0x8e, 0x52, 0x80, 0x36, 0x80, 0xaf, 0x99, 0x14, 0x37, 0x3e, 0x46, - 0xdd, 0x0f, 0x39, 0xa4, 0xbf, 0x96, 0x2b, 0x68, 0x77, 0x39, 0xec, 0x91, - 0x5a, 0xb1, 0x56, 0xcb, 0x67, 0xc7, 0x2b, 0xd2, 0x6f, 0x3d, 0xba, 0xaa, - 0xb1, 0xf3, 0xcc, 0xb8, 0x82, 0x9f, 0x7b, 0x11, 0xec, 0x18, 0xdb, 0x7e, - 0x16, 0xc8, 0x14, 0xac, 0x0b, 0x19, 0xcc, 0x1b, 0x17, 0x92, 0x87, 0x62, - 0xc1, 0x35, 0xe4, 0x32, 0xd6, 0xd5, 0x22, 0x84, 0xb0, 0x9c, 0x7b, 0xde, - 0x1f, 0x23, 0x39, 0x32, 0x60, 0xa5, 0x43, 0x2e, 0x9b, 0x44, 0x30, 0x35, - 0x2d, 0x22, 0xc3, 0x6c, 0xcf, 0xc0, 0x3e, 0x23, 0x8e, 0x68, 0x07, 0xa2, - 0x96, 0xe2, 0x3d, 0x35, 0x7d, 0xbd, 0x17, 0x01, 0x56, 0xf8, 0x0f, 0x17, - 0x4e, 0x7a, 0x49, 0xb3, 0x11, 0xac, 0x0c, 0x6c, 0xe2, 0x83, 0x8c, 0xda, - 0x23, 0x36, 0xd6, 0x97, 0x2b, 0x35, 0xde, 0x56, 0x2a, 0xd0, 0x84, 0x7f, - 0x3f, 0x30, 0x40, 0x6f, 0xb1, 0xa3, 0x9b, 0xf3, 0xd8, 0xdf, 0x23, 0x10, - 0xa6, 0xd0, 0x1b, 0xe3, 0x17, 0x56, 0x61, 0x76, 0x76, 0xfb, 0x7b, 0x6a, - 0x57, 0xd0, 0x8f, 0x71, 0x9f, 0x61, 0x2d, 0x67, 0x55, 0x9b, 0x17, 0x45, - 0xc2, 0x81, 0x4a, 0x4c, 0xce, 0xbf, 0x18, 0x23, 0xe0, 0xcb, 0xe3, 0x4c, - 0x57, 0xbc, 0x07, 0xe9, 0x90, 0x3f, 0x4e, 0xdd, 0x48, 0x6e, 0x1a, 0x00, - 0xcc, 0x7b, 0x2d, 0x71, 0xa8, 0xf5, 0x69, 0xa8, 0x42, 0x8a, 0x03, 0x3f, - 0x4d, 0x6f, 0x1e, 0x79, 0xc5, 0xdb, 0xc2, 0x93, 0xb2, 0x63, 0xa7, 0xf8, - 0x10, 0x20, 0xea, 0xe3, 0x3b, 0x62, 0x23, 0x46, 0x10, 0x86, 0x26, 0xdd, - 0x7f, 0x28, 0x22, 0x20, 0x16, 0x59, 0xee, 0xca, 0xab, 0x74, 0xc0, 0xa1, - 0x66, 0xdd, 0x76, 0x00, 0x43, 0xd8, 0x4c, 0xd5, 0x9a, 0xbd, 0x39, 0x8a, - 0x44, 0x1a, 0x1c, 0x01, 0x4e, 0xb9, 0xa4, 0x64, 0xd8, 0x78, 0x5d, 0x07, - 0xb2, 0x96, 0x64, 0xed, 0x8f, 0x4c, 0xde, 0xc7, 0x76, 0xc1, 0x8e, 0xe7, - 0xaa, 0xe1, 0xe5, 0x72, 0xb8, 0x2f, 0x3c, 0x06, 0x1f, 0x83, 0x3b, 0x63, - 0x12, 0xea, 0x51, 0x0b, 0x35, 0x2c, 0xf8, 0x7d, 0x54, 0x50, 0x49, 0x23, - 0x6b, 0xc9, 0xee, 0xa8, 0x7b, 0x7e, 0x57, 0x77, 0x2a, 0xa9, 0x97, 0x48, - 0x71, 0x98, 0x06, 0x8d, 0x64, 0xce, 0x05, 0x2e, 0x8f, 0x78, 0xfa, 0x61, - 0x37, 0x8a, 0xa9, 0xd2, 0xe0, 0x52, 0x58, 0x9d, 0x24, 0xee, 0x2e, 0x57, - 0x70, 0x57, 0xdc, 0x4f, 0x01, 0xb1, 0xc3, 0x20, 0xcb, 0xcd, 0xa9, 0x71, - 0x22, 0x3e, 0xf3, 0xe2, 0x13, 0x55, 0x60, 0xaf, 0x6f, 0x79, 0x43, 0xcc, - 0xf7, 0x20, 0xc6, 0xc3, 0x07, 0x81, 0x44, 0x8a, 0x93, 0x1a, 0xb9, 0x04, - 0x1c, 0x15, 0x10, 0xe8, 0x3d, 0xaf, 0xb8, 0xa4, 0xe2, 0x6c, 0xdb, 0xae, - 0xca, 0x8a, 0x85, 0x96, 0xe2, 0xe9, 0x66, 0xed, 0x6a, 0x9a, 0x37, 0x01, - 0x85, 0xe8, 0x22, 0xe1, 0x13, 0x4b, 0xb0, 0xdd, 0x7c, 0x8c, 0x88, 0x07, - 0xf0, 0x8a, 0x4c, 0x6f, 0xc3, 0x37, 0x79, 0x3b, 0x1d, 0x56, 0x8f, 0x3c, - 0xb3, 0x36, 0xd2, 0x16, 0xe2, 0x74, 0x30, 0xca, 0x51, 0x0f, 0x6d, 0xab, - 0x15, 0x81, 0x29, 0x2a, 0xbf, 0xe8, 0x71, 0xee, 0x35, 0xa8, 0x9b, 0x6e, - 0x76, 0x3e, 0x20, 0x14, 0x6e, 0x05, 0x16, 0xf3, 0x2a, 0x67, 0x4a, 0xc1, - 0x10, 0xb7, 0x3e, 0x16, 0xc7, 0xa6, 0x70, 0x5b, 0x3d, 0xe9, 0xde, 0xb1, - 0xf1, 0x08, 0xf3, 0x4f, 0x16, 0x94, 0x67, 0x4c, 0x40, 0xbe, 0x17, 0xb3, - 0x4d, 0x5b, 0xb7, 0x21, 0x10, 0x95, 0xff, 0xbe, 0xc6, 0x78, 0xce, 0xd5, - 0x42, 0xa6, 0xde, 0x63, 0xc9, 0x1f, 0x74, 0xbd, 0xad, 0xd3, 0x59, 0x18, - 0x2f, 0xab, 0xb8, 0xf5, 0xc6, 0xc4, 0xff, 0x23, 0x8a, 0x06, 0x8a, 0x8b, - 0xdd, 0x07, 0x93, 0x60, 0xea, 0x13, 0x0e, 0x5d, 0x41, 0x2f, 0x3a, 0x2a, - 0x19, 0x36, 0xd2, 0x56, 0x82, 0x5a, 0x4d, 0x20, 0x7a, 0xb3, 0x85, 0xa6, - 0xdd, 0xe5, 0x65, 0x0d, 0x09, 0xdf, 0x69, 0xf8, 0x19, 0xbc, 0x3e, 0x8e, - 0x52, 0xc3, 0x1d, 0x0c, 0x6c, 0x04, 0xa3, 0x7f, 0x61, 0x6f, 0x3c, 0x3f, - 0x67, 0x88, 0x51, 0x56, 0x2b, 0xea, 0x1e, 0x5b, 0x40, 0x9e, 0x25, 0x5d, - 0x12, 0xed, 0x28, 0xe1, 0xf9, 0x6b, 0x1d, 0x8e, 0xf4, 0xfb, 0xee, 0x73, - 0xe3, 0x0f, 0x1a, 0xe5, 0x30, 0x30, 0x40, 0x7e, 0x75, 0xa6, 0xa3, 0x54, - 0x4b, 0x1d, 0x90, 0x95, 0xa9, 0xe5, 0x2b, 0x8b, 0x8e, 0xa1, 0x8e, 0xda, - 0x53, 0xe0, 0xa2, 0x2e, 0xbb, 0xc2, 0xec, 0x70, 0xa1, 0x94, 0x41, 0x5e, - 0x63, 0xf8, 0x04, 0x82, 0xcf, 0x69, 0x09, 0x14, 0x2b, 0x19, 0x0a, 0x01, - 0xca, 0xd8, 0xc4, 0xe5, 0xa5, 0x31, 0xf5, 0x90, 0x22, 0xb9, 0xf0, 0xb3, - 0x37, 0x32, 0x7e, 0xe9, 0xe1, 0xeb, 0x3a, 0x9a, 0x7c, 0x65, 0x93, 0x04, - 0x86, 0xea, 0x7e, 0x35, 0x88, 0x36, 0x47, 0xe2, 0x19, 0x00, 0xf7, 0x61, - 0x9d, 0xde, 0xc4, 0xc1, 0x98, 0xd7, 0xb9, 0x26, 0x9d, 0xb8, 0x89, 0x54, - 0x60, 0x2d, 0xbb, 0xa5, 0x1d, 0x31, 0xfb, 0xd1, 0xe7, 0xdf, 0x7c, 0x3a, - 0x05, 0xa0, 0xcb, 0x9f, 0xc6, 0x2b, 0xdd, 0xce, 0x34, 0xbc, 0x0b, 0x42, - 0x1f, 0x9f, 0x7c, 0x03, 0xfc, 0x67, 0xe9, 0xe6, 0x8f, 0x60, 0xc9, 0x20, - 0x4a, 0xf9, 0x22, 0x30, 0x4f, 0x56, 0xef, 0x6d, 0xd2, 0x82, 0x3a, 0xbf, - 0x6e, 0xed, 0x31, 0x91, 0x7b, 0xce, 0x67, 0x39, 0x9d, 0xf7, 0x8c, 0x9e, - 0x28, 0xac, 0x9d, 0x56, 0xad, 0x96, 0x97, 0x37, 0x01, 0xbd, 0x86, 0xa9, - 0x41, 0x64, 0x6b, 0xf9, 0x97, 0x83, 0x21, 0x0c, 0x45, 0x62, 0xb0, 0xf9, - 0xdc, 0xe2, 0x35, 0x64, 0x20, 0x32, 0x15, 0x2d, 0x4b, 0xbb, 0x69, 0x38, - 0x06, 0x72, 0xb2, 0x7c, 0xcb, 0xab, 0x85, 0xcd, 0x90, 0x23, 0xa4, 0x1a, - 0x25, 0x83, 0x2d, 0x54, 0x42, 0x52, 0xf9, 0x6b, 0xdf, 0x07, 0x19, 0x04, - 0x74, 0x49, 0x46, 0x12, 0x8d, 0x84, 0xd4, 0xa9, 0xbc, 0x4b, 0x23, 0x86, - 0x34, 0x83, 0x54, 0x9e, 0x98, 0xf5, 0xef, 0x29, 0x05, 0x4f, 0xd8, 0x43, - 0xf8, 0xa1, 0xf2, 0x4c, 0xac, 0x6d, 0xab, 0xa3, 0xc6, 0x31, 0xb2, 0x04, - 0x69, 0x11, 0xff, 0x69, 0xa5, 0x63, 0xba, 0xb6, 0xfd, 0x31, 0x81, 0x7d, - 0xf9, 0x33, 0x80, 0xbd, 0x01, 0xee, 0xab, 0x88, 0x7b, 0xa9, 0x5b, 0x6c, - 0x5b, 0x63, 0x29, 0x61, 0x39, 0x2b, 0xda, 0x2f, 0x1a, 0x37, 0x66, 0xf1, - 0xeb, 0x70, 0x1a, 0x3a, 0x3c, 0x17, 0x08, 0x1d, 0xa8, 0x17, 0x9e, 0x40, - 0x3b, 0x5a, 0xb6, 0x47, 0xe1, 0x09, 0x76, 0x5d, 0x6e, 0x49, 0x1a, 0xba, - 0x86, 0x48, 0xe9, 0x99, 0x27, 0xb0, 0xe2, 0xa9, 0x1b, 0x4f, 0x5d, 0x82, - 0x88, 0x2d, 0x9b, 0xab, 0x1a, 0x02, 0xa2, 0x39, 0x68, 0x16, 0xdf, 0xae, - 0x17, 0x14, 0xf7, 0xe7, 0xa5, 0x2e, 0x4d, 0xd7, 0xce, 0xc9, 0xee, 0x6c, - 0x9e, 0xd3, 0xf9, 0x9e, 0xa0, 0xb0, 0x64, 0x92, 0x7c, 0xa1, 0x42, 0x8b, - 0xf4, 0xef, 0xfd, 0x68, 0xcf, 0xa8, 0x32, 0x95, 0xfd, 0xe5, 0x65, 0x64, - 0x71, 0xf6, 0x8f, 0x97, 0xf1, 0xdf, 0x11, 0x03, 0xc5, 0x29, 0x32, 0x89, - 0x79, 0xde, 0x89, 0x03, 0x29, 0x13, 0x7e, 0x53, 0xd7, 0x4f, 0xd5, 0xbc, - 0xbf, 0x1f, 0xcd, 0x84, 0x8a, 0x80, 0x38, 0x11, 0xec, 0x5c, 0x6b, 0x13, - 0x28, 0xf6, 0x1b, 0x05, 0xed, 0x7e, 0xa4, 0x25, 0x8c, 0x1a, 0x89, 0xe8, - 0x45, 0x65, 0x49, 0x61, 0xef, 0x29, 0x3f, 0x82, 0x9a, 0x59, 0x4b, 0x10, - 0x40, 0xb7, 0xe9, 0x52, 0x23, 0xb4, 0x0a, 0x73, 0xca, 0xcb, 0x74, 0x4f, - 0xe9, 0x29, 0xdb, 0xa4, 0xd7, 0xd5, 0x47, 0xac, 0x87, 0x92, 0x55, 0x76, - 0xac, 0x62, 0xa6, 0xd4, 0x18, 0xb6, 0xf8, 0xc6, 0xf9, 0x78, 0x14, 0xe3, - 0xf0, 0x58, 0xc8, 0x6b, 0x92, 0x8d, 0x29, 0xe3, 0xd6, 0x81, 0xc7, 0xe8, - 0x91, 0x65, 0xea, 0x33, 0x57, 0x5c, 0x26, 0xcd, 0x1b, 0x48, 0x20, 0x10, - 0x9c, 0xdc, 0x39, 0x36, 0x3b, 0xff, 0xdb, 0xf8, 0xbf, 0x78, 0xce, 0x48, - 0x24, 0x62, 0xbf, 0xb9, 0xc8, 0xd9, 0x7c, 0x5d, 0x7f, 0xda, 0x03, 0x51, - 0xa7, 0x73, 0x39, 0xb8, 0x0c, 0x67, 0xe8, 0xf9, 0x3e, 0x89, 0x3f, 0xcf, - 0x1f, 0x26, 0xcd, 0xbd, 0x7f, 0x2c, 0xf0, 0x2c, 0x39, 0xbc, 0xb6, 0xdd, - 0xe6, 0x95, 0xbb, 0xde, 0xe0, 0x74, 0x31, 0x56, 0x32, 0x39, 0x4c, 0x3b, - 0xb2, 0x6d, 0xaa, 0x3b, 0xf8, 0xc7, 0x60, 0xd7, 0x03, 0xa0, 0x2a, 0xe3, - 0xdb, 0x34, 0xad, 0x85, 0xce, 0x3b, 0x39, 0x55, 0xf7, 0xfb, 0xf3, 0x20, - 0x9f, 0x46, 0xc8, 0xa6, 0x0e, 0x6c, 0xae, 0x30, 0x5e, 0xe2, 0x50, 0x29, - 0x06, 0x25, 0x5b, 0xbd, 0xc6, 0x45, 0xd0, 0xc9, 0x34, 0x85, 0xa2, 0x18, - 0xbb, 0xc9, 0x84, 0x16, 0x75, 0xa5, 0x58, 0xf0, 0xc0, 0x09, 0x5c, 0xbf, - 0x58, 0x3f, 0xae, 0x5a, 0x0c, 0xf5, 0x5a, 0x73, 0x93, 0xc0, 0x12, 0xbb, - 0x69, 0xba, 0x7e, 0x61, 0x00, 0x2f, 0x27, 0x6f, 0x5a, 0x31, 0xc5, 0x40, - 0x43, 0x94, 0x2a, 0xb3, 0x26, 0x4e, 0x75, 0x13, 0x1d, 0x9f, 0x9e, 0x73, - 0x07, 0x66, 0x18, 0xe7, 0xa3, 0xbb, 0x49, 0x16, 0x72, 0xa5, 0x98, 0xa0, - 0x7a, 0x5b, 0x1f, 0xf2, 0x8b, 0x6e, 0xa8, 0xf1, 0xd8, 0x9f, 0xcd, 0x51, - 0x38, 0xfd, 0x70, 0xc6, 0xab, 0xce, 0x0a, 0xed, 0x6d, 0x00, 0x11, 0xd5, - 0x91, 0xba, 0xf9, 0x0f, 0x7a, 0x86, 0x2e, 0xd1, 0x12, 0x5e, 0x38, 0x67, - 0x96, 0x9f, 0x36, 0x20, 0x6e, 0xe5, 0x8e, 0x41, 0xe3, 0xa9, 0x1c, 0xd4, - 0xce, 0xb4, 0x02, 0x23, 0x64, 0x3c, 0xc5, 0x78, 0x9b, 0x12, 0x4f, 0x3f, - 0xff, 0x95, 0x7c, 0x04, 0xd8, 0x31, 0x6c, 0x65, 0xb8, 0xfc, 0x1b, 0x3a, - 0xa7, 0x3f, 0x72, 0x84, 0x72, 0xea, 0xb2, 0x83, 0xe8, 0x9d, 0xa8, 0xfa, - 0x23, 0xc5, 0x6c, 0x94, 0x6d, 0xd9, 0xb2, 0x01, 0xe3, 0xc7, 0xec, 0xaa, - 0xa4, 0xcd, 0x75, 0x80, 0x92, 0x13, 0x82, 0x64, 0xdc, 0x94, 0xa0, 0x21, - 0x62, 0x33, 0x56, 0xe9, 0xdb, 0xee, 0x23, 0x79, 0x28, 0x36, 0xa8, 0xdb, - 0x9a, 0x12, 0x1c, 0x67, 0x86, 0x01, 0x83, 0x43, 0x57, 0xd6, 0x3d, 0x67, - 0x25, 0x92, 0xaa, 0x3e, 0xba, 0x61, 0x27, 0xfe, 0xd6, 0xb9, 0x6c, 0x33, - 0xf3, 0xc1, 0x85, 0xb9, 0x74, 0x78, 0x71, 0x6a, 0xf3, 0x85, 0xaa, 0x80, - 0x1d, 0x44, 0x7d, 0x3b, 0xe1, 0xf9, 0x8c, 0xc7, 0x28, 0x01, 0x80, 0xa7, - 0xf8, 0x6b, 0x5f, 0x4c, 0x04, 0x71, 0x5a, 0x51, 0xd4, 0x71, 0x34, 0xcb, - 0x66, 0x97, 0x7c, 0xfa, 0x12, 0x82, 0x0d, 0x29, 0x02, 0xab, 0xf6, 0xbf, - 0x02, 0x9d, 0x45, 0xce, 0xea, 0xe8, 0x3d, 0x13, 0x5e, 0x3c, 0x59, 0xe2, - 0x40, 0xfd, 0x93, 0xef, 0x19, 0x31, 0xf8, 0x3b, 0xe0, 0x28, 0x74, 0x05, - 0x82, 0xd8, 0xbb, 0xe5, 0xa3, 0x67, 0xca, 0xa7, 0xa2, 0xc9, 0xdb, 0x01, - 0xc6, 0xe4, 0xde, 0x0b, 0x08, 0x37, 0xa0, 0x7a, 0x55, 0x89, 0x0d, 0x7c, - 0x19, 0x60, 0x30, 0xcd, 0x82, 0xf7, 0xf6, 0xe1, 0x6a, 0x9c, 0x22, 0x27, - 0x07, 0xf6, 0xcd, 0x8c, 0x8f, 0x8d, 0x70, 0xd1, 0x1c, 0x8e, 0xa6, 0x49, - 0xb7, 0xd7, 0x12, 0x43, 0x75, 0x56, 0x14, 0x33, 0xba, 0xe3, 0x51, 0xb5, - 0x72, 0xd8, 0x3a, 0x41, 0xe1, 0xe1, 0xe5, 0x43, 0x80, 0x63, 0x07, 0xe4, - 0x13, 0x0d, 0x99, 0x87, 0x35, 0x0a, 0x88, 0x53, 0xfe, 0x1e, 0x4b, 0xac, - 0xe9, 0xfe, 0x5d, 0x98, 0xf1, 0x28, 0xda, 0x40, 0xc3, 0xb8, 0x1a, 0xd7, - 0x6c, 0xb6, 0x66, 0x3c, 0x24, 0xa9, 0xc4, 0xe8, 0x4b, 0x4d, 0x7e, 0x29, - 0x49, 0xa0, 0x7e, 0x61, 0x24, 0x14, 0x6e, 0x1a, 0xa2, 0x79, 0x36, 0x36, - 0x27, 0x12, 0xff, 0x05, 0x81, 0xe4, 0xba, 0xda, 0x0c, 0xb8, 0x5e, 0xfc, - 0xf5, 0x93, 0x77, 0x49, 0x8b, 0xa7, 0x16, 0x09, 0xc5, 0xd1, 0x44, 0x66, - 0xbc, 0x4d, 0xa1, 0x2f, 0xf9, 0xfe, 0x0a, 0x75, 0xa0, 0x6b, 0x50, 0x46, - 0x4e, 0x24, 0x2a, 0x70, 0x7c, 0xf5, 0xd5, 0xe3, 0x06, 0xe0, 0x04, 0xed, - 0x01, 0xed, 0x01, 0xa6, 0xf6, 0xd1, 0xb3, 0x07, 0xfa, 0x1c, 0xfb, 0xee, - 0x02, 0x64, 0xc0, 0x65, 0xe5, 0xf5, 0x17, 0x44, 0x9e, 0x24, 0x67, 0x60, - 0x32, 0xf4, 0xa0, 0x13, 0xc6, 0xf3, 0xc0, 0xf4, 0x46, 0xb8, 0x55, 0xbe, - 0x5c, 0x11, 0x20, 0x5e, 0xee, 0xac, 0x8f, 0xb0, 0xe3, 0x95, 0xd4, 0x7e, - 0xbf, 0x51, 0x2c, 0xf7, 0x32, 0xad, 0x9e, 0x79, 0x2c, 0xac, 0x08, 0x69, - 0x88, 0xcf, 0x15, 0x1c, 0xf3, 0x48, 0xbb, 0x65, 0xbb, 0x8d, 0xb3, 0xb3, - 0xdd, 0x0e, 0x0f, 0x73, 0x1f, 0xc8, 0x1e, 0x65, 0x6c, 0x54, 0x6b, 0xe8, - 0x57, 0xa7, 0x61, 0x77, 0x50, 0x21, 0x58, 0x8c, 0xd7, 0x22, 0xd1, 0x20, - 0x0a, 0x9b, 0x99, 0x1f, 0x13, 0x15, 0xa7, 0x01, 0xde, 0xc4, 0x15, 0xed, - 0xe7, 0x2b, 0xa8, 0x0f, 0x61, 0x0f, 0xb8, 0x5a, 0x46, 0xf7, 0x6b, 0xce, - 0x2a, 0x3f, 0xf6, 0x29, 0xe8, 0xc4, 0x1a, 0x65, 0x8f, 0xee, 0xf4, 0xe9, - 0x62, 0x24, 0x45, 0x59, 0x87, 0xa9, 0x14, 0xce, 0x4d, 0x2c, 0x01, 0x7b, - 0xbe, 0xdd, 0x30, 0x43, 0x2c, 0x5e, 0xb5, 0x16, 0x99, 0x30, 0x6a, 0x81, - 0xf9, 0xe6, 0xda, 0x12, 0x92, 0x2b, 0x03, 0xe8, 0x4d, 0x01, 0x19, 0x23, - 0xa4, 0x0e, 0x51, 0xd3, 0x77, 0x3f, 0xe0, 0xfb, 0x1c, 0x1f, 0x97, 0x36, - 0xed, 0x4d, 0xf2, 0xe4, 0x54, 0x21, 0x9d, 0xa8, 0xfd, 0xed, 0x2f, 0x30, - 0x07, 0xb8, 0x9d, 0x18, 0x9f, 0xf0, 0xa2, 0xa6, 0x61, 0xe5, 0xd3, 0xb0, - 0xc7, 0xfb, 0x62, 0x98, 0x34, 0x84, 0x0f, 0xa1, 0x25, 0x78, 0x0e, 0x6e, - 0xc9, 0xb3, 0x85, 0x7b, 0x60, 0xa1, 0x49, 0x24, 0x5a, 0x2c, 0xf2, 0xb9, - 0x84, 0x6c, 0x2f, 0x55, 0x0e, 0x14, 0x96, 0xa1, 0xa1, 0xba, 0xd2, 0xf1, - 0xa7, 0x9e, 0xec, 0x09, 0xb3, 0xed, 0x97, 0xed, 0x77, 0xcc, 0x46, 0x1c, - 0xc8, 0xf5, 0x77, 0xd0, 0xb7, 0xbe, 0x36, 0x7f, 0x2a, 0x45, 0x5c, 0x0f, - 0xa7, 0xf4, 0x42, 0x1d, 0x3b, 0x54, 0x12, 0x0e, 0xcd, 0x2f, 0x3a, 0x63, - 0x83, 0xc5, 0x59, 0x75, 0x53, 0x81, 0x39, 0x5d, 0x69, 0x88, 0xa9, 0x9b, - 0xb5, 0x23, 0x70, 0x7d, 0x38, 0x14, 0x28, 0x19, 0x1e, 0xdd, 0x14, 0x8b, - 0x5e, 0xd2, 0x2f, 0xf8, 0xe0, 0x65, 0x5a, 0x10, 0x02, 0x02, 0x14, 0xbc, - 0x88, 0x74, 0xaf, 0x60, 0x4e, 0xb3, 0x7e, 0x13, 0xe2, 0x43, 0x5e, 0x4f, - 0xbe, 0xae, 0x66, 0x3c, 0xfb, 0x88, 0x8d, 0xf4, 0x0a, 0xb1, 0x0f, 0x97, - 0xe1, 0x8e, 0xd5, 0xf0, 0x3e, 0xf9, 0x06, 0xeb, 0x68, 0xea, 0x2f, 0x6d, - 0xaa, 0x16, 0x32, 0xee, 0xb3, 0xa4, 0x6e, 0x56, 0x83, 0xb8, 0x20, 0xb6, - 0x8a, 0x90, 0xfc, 0x3f, 0xa8, 0x5d, 0xd0, 0x3f, 0xcd, 0xb6, 0x39, 0x3f, - 0xd6, 0x79, 0xb2, 0x88, 0x23, 0x8b, 0x20, 0x96, 0x0a, 0x19, 0x04, 0xa1, - 0xd0, 0x31, 0xef, 0x8f, 0x21, 0xe0, 0x48, 0x82, 0x31, 0x37, 0xf6, 0xe7, - 0x9f, 0x13, 0x4d, 0x52, 0xf4, 0x6d, 0x71, 0x7e, 0x24, 0x8d, 0xca, 0xab, - 0x1c, 0xe5, 0xf5, 0x4c, 0x1f, 0x4e, 0x13, 0xff, 0x24, 0x3f, 0x56, 0x03, - 0x3a, 0x38, 0x0b, 0x06, 0x89, 0x6f, 0xef, 0x5a, 0xa7, 0x3b, 0xf3, 0x39, - 0xf0, 0xea, 0xfe, 0x1f, 0xde, 0x3b, 0xea, 0xd6, 0x11, 0x69, 0x93, 0xed, - 0x43, 0x14, 0xc1, 0x10, 0xeb, 0x0a, 0x7f, 0xd4, 0x58, 0xe1, 0x61, 0x50, - 0x18, 0x20, 0x6c, 0x34, 0x3e, 0xd3, 0x14, 0x60, 0x39, 0xfc, 0x3a, 0x7f, - 0x02, 0x0e, 0x11, 0xe4, 0xcc, 0xab, 0xf0, 0x75, 0xf6, 0x82, 0x3d, 0x53, - 0x9f, 0x6e, 0x91, 0x07, 0x49, 0xde, 0x59, 0xf6, 0xd4, 0x5c, 0x9f, 0xda, - 0x7f, 0x18, 0xc4, 0x2b, 0x7f, 0x29, 0x00, 0xf0, 0x74, 0xb7, 0xd0, 0x94, - 0x31, 0xba, 0x3e, 0x73, 0x18, 0x27, 0xec, 0x7b, 0x19, 0x02, 0x3c, 0xae, - 0xbc, 0xb4, 0x28, 0x97, 0xe9, 0x7a, 0xb1, 0x54, 0xc0, 0x25, 0xe6, 0xd3, - 0xe0, 0xa3, 0xae, 0x85, 0x03, 0x63, 0xca, 0x8d, 0x2a, 0x73, 0xfb, 0x23, - 0x2b, 0xaf, 0x10, 0xcc, 0x4e, 0xb0, 0x68, 0xf7, 0x25, 0x47, 0x03, 0x33, - 0x66, 0xa5, 0xc2, 0x1b, 0xb6, 0xa6, 0xaa, 0xa3, 0xdf, 0xd9, 0x8f, 0x25, - 0xa7, 0xbe, 0xb6, 0x35, 0x5d, 0x4f, 0x00, 0x97, 0x3e, 0xb5, 0x75, 0x0d, - 0xd9, 0xa6, 0xec, 0x51, 0x6b, 0x1d, 0x02, 0x03, 0x9a, 0xa8, 0x61, 0xbd, - 0x53, 0x74, 0xe1, 0xb5, 0x05, 0x61, 0x89, 0xaa, 0x15, 0x30, 0xef, 0x72, - 0x52, 0xfe, 0xb7, 0x1a, 0x65, 0x00, 0x82, 0xd3, 0xfb, 0x0b, 0x94, 0xed, - 0x7c, 0xea, 0x55, 0x4a, 0x1e, 0x1a, 0xd6, 0x5c, 0xc2, 0xe2, 0x6c, 0x71, - 0xb8, 0xe7, 0x27, 0xfb, 0x50, 0x84, 0x4b, 0x93, 0x33, 0xc4, 0xaf, 0x45, - 0x6a, 0x8d, 0x94, 0x56, 0x07, 0x8e, 0xdd, 0xc7, 0x80, 0xc3, 0xbb, 0x57, - 0x6b, 0x7b, 0x27, 0xb6, 0x40, 0x6c, 0xf9, 0x9e, 0xcb, 0x82, 0xff, 0x10, - 0x1c, 0x83, 0x71, 0x7b, 0xf6, 0xa7, 0xf6, 0x86, 0x4a, 0xaa, 0x2c, 0x29, - 0x77, 0x1d, 0x89, 0xd8, 0xe6, 0xd5, 0x5c, 0x22, 0x41, 0xc3, 0x20, 0xe5, - 0xed, 0x95, 0x04, 0xf7, 0xdd, 0xe9, 0xd0, 0xee, 0x95, 0x90, 0xd6, 0xbc, - 0xec, 0x09, 0x19, 0x06, 0xd0, 0x96, 0x81, 0x23, 0xe1, 0x6d, 0x29, 0x6a, - 0x18, 0x47, 0x0c, 0x40, 0xda, 0xc0, 0x98, 0x26, 0x27, 0x82, 0x66, 0x4c, - 0x0c, 0x78, 0xf6, 0xa5, 0x9a, 0xb5, 0x4c, 0x5b, 0x59, 0x9a, 0xa6, 0xb6, - 0xf3, 0xff, 0x7c, 0x07, 0x50, 0xd2, 0x70, 0xeb, 0x3d, 0xb9, 0x1b, 0xf8, - 0xed, 0x8b, 0x8c, 0x24, 0x58, 0x31, 0xcf, 0x5c, 0xd9, 0x66, 0x39, 0xe8, - 0x0e, 0x5b, 0x86, 0x5d, 0x0b, 0x74, 0x55, 0x37, 0xa6, 0xc7, 0xb8, 0xec, - 0x38, 0x9b, 0x17, 0x11, 0x74, 0x16, 0xfd, 0x48, 0x6f, 0x5f, 0x02, 0x3b, - 0x13, 0xae, 0x79, 0x4c, 0x54, 0x58, 0x64, 0x8e, 0xd3, 0xe3, 0xf0, 0x6f, - 0x0e, 0x41, 0x87, 0x89, 0xc4, 0xd4, 0xba, 0xdb, 0x48, 0x94, 0x24, 0x6a, - 0x57, 0x50, 0x95, 0xcc, 0x05, 0x6f, 0x1f, 0xe9, 0xc4, 0x2f, 0x9a, 0x90, - 0x53, 0xb3, 0x8c, 0x42, 0x15, 0x70, 0xb2, 0x2d, 0xc5, 0xf1, 0x79, 0xc9, - 0xae, 0xe5, 0xb4, 0x31, 0x63, 0x57, 0x0f, 0xcd, 0x49, 0xbf, 0x4a, 0x1e, - 0xd2, 0xae, 0xff, 0xd5, 0x23, 0x04, 0x48, 0x90, 0x5c, 0xb1, 0x79, 0xae, - 0x9f, 0xb5, 0xf3, 0xc1, 0xc1, 0xaa, 0x33, 0x1d, 0x31, 0x2a, 0xcb, 0x60, - 0x34, 0x9a, 0x29, 0xf9, 0x1b, 0xff, 0x9c, 0xae, 0xcf, 0x09, 0xa4, 0x16, - 0x97, 0xf4, 0xac, 0x22, 0x93, 0x9b, 0xb0, 0xc4, 0xdb, 0x9f, 0x04, 0x10, - 0x25, 0x3a, 0x41, 0xbd, 0xd4, 0x33, 0x30, 0xc1, 0x0a, 0x47, 0xe8, 0xbc, - 0xcf, 0x56, 0x20, 0xad, 0xad, 0xcc, 0x46, 0x01, 0x7d, 0x79, 0xdc, 0xf8, - 0x50, 0xac, 0x93, 0x17, 0xf2, 0x26, 0xcc, 0x16, 0xb5, 0x92, 0xd1, 0xea, - 0x01, 0x8f, 0x7e, 0x33, 0xef, 0x40, 0xdd, 0x50, 0xfa, 0x75, 0xef, 0xae, - 0x64, 0xcf, 0x02, 0x89, 0x0f, 0x3d, 0x1f, 0x7c, 0xca, 0xb7, 0xf7, 0xd5, - 0x82, 0x50, 0x0c, 0xf2, 0x8e, 0xd8, 0xc6, 0xa5, 0x64, 0x10, 0x26, 0xf5, - 0x20, 0xd7, 0x63, 0x03, 0xdc, 0xc4, 0x2e, 0x47, 0x81, 0x57, 0xd6, 0x92, - 0xca, 0x45, 0x78, 0xca, 0xe2, 0x18, 0xd0, 0x3f, 0xcd, 0x1b, 0x8a, 0xdd, - 0x2d, 0x34, 0x72, 0x73, 0x8d, 0xde, 0x89, 0xb2, 0x21, 0xd3, 0x93, 0x64, - 0xcf, 0x5c, 0x6b, 0x69, 0x6e, 0xa8, 0xfd, 0x52, 0xa8, 0x06, 0xa8, 0x9a, - 0x81, 0x42, 0x4e, 0x74, 0x79, 0x93, 0x07, 0x3c, 0xcb, 0xc2, 0xa3, 0x29, - 0x35, 0xb4, 0x49, 0xf1, 0xd9, 0x8e, 0xd5, 0x85, 0xeb, 0x4a, 0xd5, 0xe0, - 0x37, 0x16, 0x9e, 0x75, 0xf8, 0x08, 0xe7, 0x47, 0x98, 0xca, 0x7e, 0x00, - 0x9f, 0x2c, 0x11, 0xb7, 0x5d, 0x61, 0x8c, 0x58, 0x97, 0x52, 0xf7, 0x12, - 0x82, 0x22, 0xb6, 0xa4, 0xd4, 0xc1, 0xb2, 0x52, 0x21, 0xbe, 0xd9, 0x0d, - 0x0c, 0x72, 0x8f, 0x45, 0xa9, 0x22, 0x8d, 0xae, 0xf7, 0x12, 0xd0, 0xf6, - 0x6d, 0x7e, 0x44, 0x7a, 0xf8, 0xa8, 0x75, 0xfc, 0xb0, 0xf0, 0xbe, 0xeb, - 0x00, 0xa6, 0x64, 0x5f, 0xe4, 0x78, 0x70, 0xb5, 0xbf, 0x4b, 0x08, 0xb9, - 0xc5, 0x34, 0x73, 0xf9, 0x01, 0x55, 0x48, 0xf8, 0xff, 0xb3, 0x9c, 0xe3, - 0xe5, 0x47, 0xbc, 0x29, 0x6b, 0xf2, 0x64, 0xfd, 0xac, 0x3e, 0x2a, 0x8c, - 0x98, 0x54, 0xd4, 0xda, 0x4d, 0x87, 0xb1, 0x2b, 0xd3, 0x0d, 0x50, 0xb8, - 0xd5, 0x4f, 0xd6, 0x3a, 0x82, 0xe0, 0xbc, 0x28, 0x28, 0x38, 0xd9, 0x53, - 0x5b, 0xeb, 0xbc, 0x3a, 0xc1, 0x1b, 0x19, 0x8b, 0xc3, 0xba, 0x76, 0x2b, - 0x61, 0xd0, 0x11, 0x0f, 0x1b, 0x7c, 0xac, 0x0a, 0x72, 0x30, 0xd8, 0x22, - 0x90, 0x3b, 0x0d, 0x77, 0x79, 0x78, 0x80, 0x56, 0x27, 0x80, 0xb9, 0x57, - 0x33, 0x3a, 0x4b, 0x64, 0x9b, 0x71, 0xd4, 0x67, 0xb2, 0xd0, 0x1f, 0x6e, - 0xe1, 0xb6, 0xc8, 0x73, 0x30, 0x2a, 0x32, 0x10, 0xdf, 0xd7, 0x19, 0xfe, - 0x05, 0x77, 0x18, 0xa4, 0xe5, 0x9d, 0xed, 0x3a, 0xb2, 0xa8, 0x17, 0x61, - 0x58, 0x60, 0x07, 0xd8, 0xdb, 0xdb, 0x40, 0x6e, 0x0a, 0xf8, 0x39, 0xc2, - 0x79, 0xac, 0x22, 0x21, 0x6f, 0x2d, 0xfb, 0x98, 0xbc, 0x72, 0xe1, 0xda, - 0xca, 0x62, 0x8b, 0x12, 0x56, 0x35, 0x3b, 0x1a, 0x51, 0x09, 0x49, 0xdb, - 0x7d, 0xe3, 0x4b, 0x2f, 0x6f, 0x7e, 0x03, 0x1c, 0x75, 0xbb, 0x80, 0x50, - 0x22, 0xb0, 0xa2, 0x23, 0x20, 0xbc, 0x94, 0x68, 0x0b, 0x2f, 0xfa, 0x99, - 0xc0, 0xf3, 0xe4, 0xcd, 0x72, 0xd3, 0x30, 0xf8, 0xd2, 0xc9, 0x1f, 0x60, - 0xcd, 0x02, 0xb9, 0x48, 0x1f, 0x07, 0x52, 0x17, 0xf8, 0xcf, 0x93, 0x3a, - 0xb1, 0x10, 0x59, 0x98, 0x60, 0x3d, 0x17, 0x09, 0x42, 0x68, 0xc0, 0x7e, - 0x93, 0xde, 0x63, 0xc3, 0x0e, 0x77, 0x91, 0x36, 0xbe, 0x14, 0xea, 0xb6, - 0x43, 0x3e, 0x5d, 0x34, 0x87, 0xbd, 0xe9, 0x61, 0x98, 0x34, 0x00, 0x55, - 0x90, 0x11, 0xa2, 0x96, 0x60, 0xf0, 0x2a, 0x7d, 0xd1, 0xba, 0x6c, 0x04, - 0x27, 0x00, 0xaa, 0x01, 0xd1, 0x6f, 0x34, 0x03, 0x00, 0x7c, 0x3b, 0x7c, - 0x76, 0x44, 0x32, 0xfd, 0x2d, 0x3a, 0x96, 0x78, 0x6c, 0x5a, 0x3f, 0xce, - 0xe7, 0x76, 0x3f, 0x7b, 0x35, 0x4a, 0x0c, 0x7b, 0xc7, 0xe2, 0x63, 0x00, - 0xb9, 0x79, 0xe2, 0xe1, 0x48, 0xd9, 0xe0, 0x22, 0xc7, 0x21, 0x63, 0xec, - 0x3e, 0x75, 0x84, 0xec, 0xe8, 0x2f, 0xe8, 0xa1, 0x03, 0x8a, 0x27, 0xf4, - 0xae, 0xb1, 0xaf, 0x73, 0x32, 0x29, 0x51, 0x41, 0xd1, 0x72, 0xeb, 0x27, - 0x8f, 0x05, 0xbf, 0x87, 0x53, 0xf4, 0xb7, 0xd2, 0xb7, 0xae, 0x97, 0x14, - 0x0e, 0x36, 0xb3, 0xbf, 0xdc, 0x94, 0x0d, 0x51, 0x6c, 0x80, 0xa0, 0x19, - 0x15, 0xa3, 0x80, 0xd7, 0x6a, 0x70, 0x45, 0x10, 0x4b, 0xee, 0x5e, 0x29, - 0xc2, 0xd3, 0x07, 0x77, 0x2e, 0xe2, 0xdf, 0x09, 0x51, 0x8b, 0x2e, 0x0e, - 0xae, 0x22, 0xed, 0xff, 0x29, 0xbb, 0x19, 0x74, 0x2a, 0x75, 0x76, 0x59, - 0xdc, 0x3e, 0x97, 0xbf, 0x2a, 0xbf, 0x33, 0x4a, 0x0f, 0x00, 0x93, 0xe9, - 0xf8, 0x02, 0x4f, 0x65, 0xc4, 0x68, 0xfa, 0xb9, 0x1c, 0x33, 0x4b, 0x42, - 0xc2, 0x9b, 0x30, 0xa5, 0xdd, 0x4d, 0xdb, 0x2b, 0x4e, 0xf8, 0x9c, 0x4f, - 0xc6, 0x0a, 0xe6, 0x11, 0x85, 0xeb, 0x54, 0x07, 0x6f, 0x1f, 0x95, 0xfb, - 0x3f, 0x93, 0x54, 0xa2, 0xad, 0xd7, 0x9c, 0xa8, 0x23, 0xb2, 0x68, 0x50, - 0x7c, 0x5e, 0x5f, 0x83, 0x32, 0x79, 0x66, 0x6c, 0xc9, 0x32, 0x18, 0x9c, - 0xbc, 0x8f, 0x82, 0xb8, 0xe5, 0xed, 0x70, 0xf8, 0x08, 0x74, 0x7a, 0x17, - 0x08, 0x34, 0x18, 0xfd, 0xc3, 0xc8, 0x64, 0x4f, 0xde, 0xa8, 0xa6, 0x73, - 0xb5, 0x7e, 0x2b, 0xda, 0x36, 0xa7, 0xa0, 0x8e, 0x5c, 0xe2, 0x33, 0xac, - 0x23, 0x28, 0xd2, 0xb8, 0x97, 0x68, 0x48, 0x77, 0x3c, 0x5a, 0xe1, 0x00, - 0xb2, 0x73, 0x44, 0x1d, 0xcb, 0x68, 0x9a, 0xda, 0x34, 0xfb, 0x28, 0x00, - 0xba, 0xb4, 0x9c, 0xe5, 0xe4, 0xd4, 0x0a, 0x11, 0xb3, 0x87, 0x25, 0xac, - 0x26, 0x74, 0xc4, 0x54, 0x9f, 0xbd, 0x67, 0x76, 0xb3, 0x02, 0xff, 0x60, - 0x43, 0x9b, 0xbe, 0xb7, 0xb4, 0xcb, 0x47, 0x9d, 0x3b, 0x1e, 0x88, 0x54, - 0x3a, 0xcc, 0xae, 0xa5, 0xb7, 0xed, 0x98, 0x83, 0xf5, 0xb1, 0xce, 0x5e, - 0x69, 0x94, 0x50, 0xab, 0x3e, 0x9c, 0x5d, 0xdb, 0xb0, 0xda, 0xaa, 0x93, - 0x44, 0x1f, 0xc7, 0x7f, 0xd8, 0x88, 0x55, 0x3b, 0x3a, 0xe5, 0x46, 0x12, - 0x81, 0xe0, 0xc5, 0x46, 0x16, 0xe6, 0x60, 0x88, 0x8a, 0x49, 0x45, 0xfb, - 0x6c, 0x3b, 0x95, 0xd8, 0xdc, 0x2a, 0xcc, 0xbe, 0x54, 0xde, 0x9a, 0x60, - 0xb8, 0x14, 0xcb, 0x31, 0xb3, 0xe8, 0xf1, 0xa0, 0xe9, 0x15, 0xb3, 0x75, - 0x03, 0x5d, 0xdf, 0x33, 0xeb, 0x79, 0x0a, 0x4e, 0x1a, 0x80, 0x3d, 0x8f, - 0xbc, 0xa8, 0x1a, 0xac, 0x1c, 0xca, 0x43, 0xa6, 0x9e, 0x61, 0xdf, 0x50, - 0x4e, 0x49, 0x8b, 0x81, 0x7f, 0x7b, 0x75, 0xd4, 0x09, 0x2b, 0xc8, 0xe2, - 0xa4, 0x5e, 0x02, 0x22, 0xa1, 0xba, 0xee, 0x90, 0x11, 0x3c, 0x7c, 0xca, - 0x67, 0x6e, 0xa3, 0xbf, 0xb2, 0xfa, 0xcf, 0x15, 0xb8, 0x7e, 0x41, 0xd3, - 0xfb, 0xeb, 0xd5, 0x0d, 0xd2, 0x13, 0x0c, 0x12, 0xb9, 0x6f, 0x76, 0xdb, - 0x95, 0x1c, 0xa7, 0x18, 0x4d, 0x9f, 0xb3, 0x32, 0xeb, 0xc3, 0x25, 0xdd, - 0x9c, 0xcf, 0x16, 0xe0, 0x40, 0x88, 0x33, 0x34, 0xf5, 0x6e, 0x96, 0xde, - 0xd9, 0x4e, 0xab, 0x5a, 0x2a, 0x50, 0x5b, 0xc3, 0x36, 0x1f, 0xf2, 0xfe, - 0x8d, 0x2f, 0x4c, 0x55, 0x78, 0x84, 0xca, 0x46, 0x7b, 0xa6, 0x7a, 0x6c, - 0x61, 0xdc, 0x3d, 0x12, 0x16, 0x5e, 0xdc, 0xcb, 0x32, 0xba, 0xda, 0x38, - 0x5f, 0x52, 0xc3, 0x73, 0xb7, 0x4c, 0x01, 0x77, 0x18, 0xd6, 0x96, 0xc0, - 0xa8, 0xfb, 0x06, 0xba, 0x87, 0x31, 0x39, 0x74, 0x24, 0x56, 0x57, 0x04, - 0x56, 0xb8, 0xe2, 0x62, 0xcb, 0xc4, 0x1f, 0xaf, 0xa4, 0x70, 0x08, 0x11, - 0x80, 0x45, 0x7a, 0xc2, 0xe3, 0x12, 0x6b, 0x4b, 0x2b, 0x34, 0xe7, 0xa6, - 0x45, 0x6c, 0x89, 0xef, 0xc3, 0xbc, 0x12, 0xb7, 0x58, 0x49, 0x48, 0x51, - 0xc9, 0xef, 0x63, 0x4f, 0x33, 0xf0, 0xe4, 0x67, 0xad, 0x16, 0x2b, 0xaf, - 0xfc, 0xe7, 0x3f, 0x0a, 0x8d, 0x32, 0xf5, 0x28, 0x14, 0x3e, 0x35, 0xf5, - 0xcd, 0x42, 0xdf, 0x20, 0x8c, 0x07, 0x05, 0x83, 0x3d, 0xb7, 0xe3, 0xa6, - 0x38, 0xc8, 0x9c, 0x95, 0x26, 0xbb, 0xe7, 0xaf, 0x4a, 0x88, 0x7e, 0xa2, - 0x50, 0x88, 0x8a, 0xc8, 0x8b, 0x08, 0x2d, 0x03, 0xf2, 0x8d, 0x54, 0x9d, - 0x89, 0xd0, 0x94, 0xac, 0x41, 0x59, 0x1d, 0x9e, 0xf2, 0xc7, 0x87, 0xa4, - 0x0f, 0x41, 0xff, 0x87, 0xdc, 0x92, 0x83, 0x80, 0x50, 0x85, 0x5c, 0x51, - 0x6b, 0xbd, 0xad, 0xde, 0x1c, 0x56, 0x17, 0xd6, 0x21, 0xf2, 0x8c, 0x85, - 0x4d, 0xdb, 0x6e, 0x1e, 0x88, 0xc9, 0x9e, 0x31, 0x28, 0x5a, 0x29, 0x9f, - 0x59, 0xf0, 0x01, 0xe3, 0xdc, 0x3d, 0x86, 0x12, 0x5f, 0x56, 0x30, 0xc1, - 0x5e, 0x3c, 0x4a, 0x40, 0x78, 0xa3, 0xcf, 0xdb, 0x0d, 0xf0, 0xd7, 0xa0, - 0xb0, 0xe3, 0x35, 0xd9, 0xcc, 0x00, 0x6f, 0x0b, 0x9d, 0x0f, 0x11, 0x1e, - 0x0b, 0x59, 0x44, 0xd9, 0x2b, 0x9d, 0x46, 0x3f, 0x47, 0x45, 0x1f, 0x84, - 0xfa, 0x11, 0xd5, 0xdd, 0x5a, 0x57, 0x96, 0xd1, 0x6a, 0x33, 0xa0, 0xd7, - 0xfb, 0xcb, 0x52, 0x6e, 0xe3, 0x71, 0x65, 0x87, 0xe8, 0x41, 0x29, 0xe5, - 0x57, 0x83, 0xe4, 0x1d, 0xe3, 0x93, 0x69, 0xbb, 0x0b, 0x15, 0xc8, 0x7f, - 0xda, 0x52, 0xdb, 0x20, 0xc5, 0x00, 0xf2, 0x41, 0xae, 0x0e, 0x6b, 0x0e, - 0xb5, 0x32, 0x90, 0xe2, 0x8c, 0xdd, 0x71, 0x06, 0x0e, 0x03, 0xc8, 0xa3, - 0x7e, 0xd7, 0x36, 0xba, 0xad, 0x0f, 0x35, 0x4f, 0x58, 0x4a, 0x6a, 0xa6, - 0x9a, 0xb6, 0x43, 0x10, 0x3d, 0x05, 0x70, 0x7b, 0xea, 0xe9, 0x5c, 0xa1, - 0x4b, 0xd0, 0x4a, 0x46, 0xb8, 0x35, 0xb6, 0xca, 0x9b, 0x39, 0x87, 0xbf, - 0xe6, 0xfa, 0x59, 0x52, 0x20, 0x24, 0xd8, 0x12, 0xcb, 0x7f, 0xb9, 0x5e, - 0xd5, 0xf8, 0xb6, 0xc4, 0xec, 0x44, 0xd9, 0x95, 0x4f, 0x70, 0x28, 0x26, - 0xa8, 0xda, 0xec, 0x3c, 0x12, 0x80, 0xd2, 0xa7, 0x6f, 0xa8, 0x86, 0xb7, - 0xb7, 0x18, 0x49, 0x55, 0xbe, 0x6a, 0xfc, 0xbc, 0x02, 0xfd, 0x9f, 0x5e, - 0xfe, 0xb1, 0x2f, 0xae, 0xd9, 0x69, 0x8f, 0xec, 0x82, 0x88, 0xb2, 0xd6, - 0x82, 0x35, 0xdb, 0x85, 0x58, 0xba, 0xc1, 0x9c, 0x85, 0x5f, 0x8f, 0xa9, - 0x3e, 0x9f, 0xfb, 0xf6, 0x9d, 0x39, 0xa4, 0xae, 0xd0, 0xa2, 0x53, 0xfc, - 0x13, 0x11, 0x28, 0x0d, 0x5c, 0x09, 0x90, 0x23, 0x0c, 0x35, 0xf1, 0x52, - 0x68, 0x67, 0xb8, 0x70, 0x6b, 0x92, 0x1c, 0x8d, 0xbe, 0x6b, 0x3c, 0x1e, - 0xe6, 0x49, 0x43, 0x8e, 0x9e, 0x18, 0x02, 0x75, 0x3b, 0x05, 0x19, 0x03, - 0x45, 0x80, 0x0b, 0xd5, 0x24, 0x99, 0x75, 0x73, 0x75, 0x13, 0x49, 0x76, - 0x83, 0xb0, 0x25, 0x9f, 0xbc, 0x47, 0x3c, 0x47, 0x89, 0xb0, 0x72, 0x0d, - 0x4e, 0x0d, 0x9e, 0x54, 0x8f, 0xae, 0xfa, 0xd8, 0x2d, 0x73, 0x5e, 0xa3, - 0x94, 0xa0, 0x31, 0x05, 0x51, 0xe4, 0x61, 0xbd, 0x9e, 0x42, 0x5b, 0x35, - 0x72, 0xaf, 0x70, 0x65, 0xc8, 0x31, 0x8f, 0x0d, 0x28, 0x7f, 0x68, 0x33, - 0x56, 0x4c, 0xf6, 0x12, 0x5b, 0xb0, 0xa0, 0xbc, 0xae, 0x97, 0x9d, 0x66, - 0x9a, 0xac, 0x99, 0xda, 0xd5, 0x9c, 0x00, 0xa3, 0xbc, 0xad, 0x9d, 0xf7, - 0x4e, 0xd5, 0xd5, 0x44, 0x74, 0x54, 0x76, 0xd8, 0x05, 0x1e, 0x28, 0xdb, - 0x7c, 0xee, 0xac, 0xac, 0x40, 0x3c, 0xeb, 0x54, 0xa8, 0x8a, 0xb1, 0x81, - 0x7e, 0x4a, 0x7b, 0xb5, 0xcd, 0x4f, 0x0a, 0x59, 0xce, 0xdb, 0x94, 0xba, - 0x22, 0x3f, 0x9b, 0xb8, 0xba, 0x1c, 0x4a, 0x7e, 0xf9, 0xcc, 0x0a, 0xf2, - 0x74, 0xcc, 0x2a, 0x98, 0xf0, 0xee, 0x8c, 0xfc, 0xb1, 0xd7, 0xcc, 0xd5, - 0x32, 0xb5, 0x56, 0xd8, 0xf6, 0xba, 0xc5, 0xf5, 0x8e, 0x94, 0x94, 0xe6, - 0x27, 0x12, 0x19, 0x85, 0x71, 0x57, 0xef, 0x90, 0xed, 0xc4, 0xa6, 0xf6, - 0xf7, 0x30, 0x35, 0x87, 0x87, 0x7f, 0x23, 0xb4, 0x0a, 0x3c, 0xca, 0x95, - 0xb7, 0x3d, 0x53, 0x07, 0x49, 0xb6, 0xea, 0x54, 0xcb, 0xa3, 0x5b, 0x02, - 0xd2, 0x97, 0x4a, 0xd8, 0xf5, 0x31, 0xdb, 0x01, 0x51, 0x65, 0xc6, 0x4e, - 0x35, 0x2c, 0x8a, 0xd6, 0x1d, 0x00, 0x95, 0x01, 0x8b, 0xbb, 0xe0, 0x6a, - 0xc4, 0x3d, 0xed, 0x32, 0x49, 0x20, 0xf1, 0x8a, 0xc8, 0x6c, 0x98, 0x68, - 0x51, 0x1b, 0xec, 0x17, 0x65, 0x5d, 0x5f, 0x0e, 0x7e, 0x99, 0xa3, 0x88, - 0x9e, 0x37, 0xb7, 0x1f, 0xf0, 0x98, 0x17, 0xee, 0xee, 0x1f, 0xab, 0x06, - 0x9a, 0x2c, 0xfc, 0x03, 0x15, 0x72, 0xa1, 0x82, 0x01, 0xf2, 0xe6, 0x8d, - 0xf8, 0x0e, 0x11, 0x65, 0xc4, 0x09, 0x1b, 0x1f, 0x9d, 0x77, 0xee, 0xfe, - 0x65, 0xed, 0x7b, 0xb9, 0x6b, 0x75, 0xe0, 0x9e, 0x77, 0x75, 0x3b, 0xb2, - 0x6c, 0x85, 0xd1, 0xec, 0xe8, 0x63, 0xf1, 0xa2, 0x9b, 0x3b, 0x0a, 0xdb, - 0x1d, 0x77, 0xc1, 0xf3, 0x37, 0x72, 0x4e, 0x80, 0xd4, 0x0a, 0x74, 0x19, - 0x83, 0xaa, 0xf1, 0x8e, 0x33, 0xee, 0x57, 0x56, 0x28, 0x6c, 0x5b, 0xc9, - 0x05, 0x4e, 0x52, 0xe1, 0x7f, 0x32, 0x61, 0x09, 0x2f, 0x8f, 0x08, 0x18, - 0x47, 0x53, 0xeb, 0x6a, 0x46, 0x0c, 0x9b, 0xa0, 0x76, 0x78, 0xc9, 0xb4, - 0x17, 0xf9, 0xb1, 0xa0, 0x10, 0xbd, 0x91, 0x8b, 0x4b, 0x52, 0x4c, 0xa2, - 0x24, 0xd2, 0xc3, 0x6a, 0x2c, 0x07, 0xf5, 0x63, 0x7e, 0xff, 0x69, 0x15, - 0x3d, 0x77, 0x59, 0x67, 0x15, 0x3a, 0x99, 0xd8, 0x97, 0xbc, 0xe9, 0xb7, - 0xb5, 0x61, 0xcc, 0x2a, 0xa4, 0xf5, 0xd4, 0x9f, 0xf2, 0x0a, 0x9c, 0x76, - 0xb9, 0x11, 0x6f, 0x8f, 0x1b, 0x97, 0x63, 0x72, 0xc9, 0x47, 0xfc, 0xd0, - 0x4b, 0xbd, 0xa6, 0xab, 0xb9, 0x61, 0x66, 0x0f, 0x1b, 0x4a, 0xd2, 0xe5, - 0xf6, 0xab, 0x56, 0xce, 0x87, 0x5d, 0x07, 0x9f, 0x43, 0xc5, 0x5d, 0x2f, - 0x96, 0x69, 0x1b, 0x80, 0xec, 0x4d, 0x13, 0x38, 0x35, 0xce, 0x5f, 0xd6, - 0x83, 0xeb, 0xb1, 0xe4, 0xc1, 0x64, 0x13, 0x0e, 0x04, 0x94, 0x33, 0x82, - 0xa5, 0x11, 0x01, 0x68, 0x1c, 0x97, 0x2e, 0xb0, 0xfe, 0xc9, 0x43, 0xe2, - 0x35, 0x91, 0x09, 0x7c, 0x25, 0x43, 0xd8, 0x48, 0x77, 0x12, 0xf7, 0x06, - 0x51, 0x23, 0xcf, 0x16, 0xbe, 0xd9, 0x23, 0xed, 0x1d, 0xad, 0x2e, 0xa4, - 0x19, 0xf2, 0xff, 0xc9, 0xd9, 0xec, 0x8d, 0x56, 0x8b, 0xea, 0xbd, 0x35, - 0x88, 0xfa, 0xd9, 0x8a, 0x9c, 0xc5, 0xa7, 0xb6, 0xb7, 0xad, 0xaf, 0xc8, - 0x80, 0xdd, 0x35, 0x47, 0x76, 0x71, 0x0f, 0xcc, 0xf7, 0xb0, 0xef, 0x4e, - 0xae, 0x4f, 0xe0, 0x59, 0x28, 0x8f, 0xc4, 0x69, 0xe1, 0x25, 0x85, 0x07, - 0xff, 0xae, 0x36, 0xdc, 0x10, 0xd3, 0x41, 0xae, 0x04, 0xaa, 0x12, 0x99, - 0xa9, 0x3d, 0xd7, 0xe6, 0x56, 0x05, 0x07, 0x8d, 0xa2, 0xc3, 0x25, 0xbf, - 0x65, 0x1a, 0xde, 0xd1, 0xdc, 0x95, 0x1d, 0xb4, 0x3e, 0x72, 0xf4, 0x6b, - 0x25, 0x84, 0x91, 0xcb, 0xd5, 0x61, 0x0c, 0xce, 0x99, 0x0a, 0xf9, 0x68, - 0x6b, 0xf4, 0x69, 0x04, 0x9d, 0x50, 0x67, 0x20, 0x41, 0x92, 0x47, 0x45, - 0x32, 0x3a, 0xf4, 0xdd, 0xec, 0x99, 0x5a, 0x5e, 0xe3, 0xf2, 0xf7, 0x8b, - 0x56, 0xe3, 0xb2, 0x50, 0x29, 0x22, 0xdf, 0xde, 0x2d, 0x13, 0xbe, 0x4b, - 0x11, 0x42, 0xb4, 0xb3, 0xb8, 0x60, 0x99, 0x1e, 0xcc, 0x34, 0x78, 0x8d, - 0x8f, 0x0a, 0xa9, 0xc4, 0xcd, 0x05, 0x5e, 0x31, 0xdd, 0xb4, 0x90, 0x31, - 0xe9, 0x31, 0xba, 0xdd, 0x40, 0x33, 0x63, 0x3c, 0x20, 0x53, 0x41, 0xdd, - 0x13, 0xf9, 0xdb, 0x92, 0xbb, 0x99, 0x92, 0x3b, 0x26, 0xe0, 0x9b, 0x92, - 0xa8, 0x3d, 0xae, 0x2e, 0x28, 0x9d, 0x4d, 0x89, 0x35, 0x74, 0x68, 0x01, - 0x1c, 0x45, 0x51, 0xc0, 0x1b, 0x8e, 0x5d, 0xa6, 0x2d, 0xf4, 0xb7, 0x8b, - 0xc6, 0x63, 0x2e, 0x7f, 0xc1, 0xf1, 0x1a, 0x83, 0xbc, 0x94, 0xb1, 0x94, - 0x8b, 0x48, 0x0c, 0x9a, 0x55, 0x7e, 0x69, 0x78, 0x77, 0x6d, 0xc0, 0x8d, - 0xd4, 0x98, 0x66, 0xea, 0x93, 0x37, 0x13, 0x52, 0x70, 0xee, 0x68, 0x59, - 0xf7, 0x21, 0x7a, 0x41, 0x1f, 0x75, 0x5d, 0xb1, 0x7a, 0xca, 0xe7, 0x62, - 0x5f, 0x4d, 0xb4, 0xd8, 0xce, 0xf8, 0x0b, 0x7a, 0xf2, 0x79, 0xd4, 0x4b, - 0xd6, 0x11, 0x12, 0xe3, 0xad, 0xa5, 0x0f, 0x02, 0x31, 0xc9, 0x57, 0x05, - 0x9e, 0x6a, 0xa6, 0xd0, 0x07, 0x89, 0xd1, 0x85, 0x46, 0x16, 0xbd, 0x80, - 0x8d, 0xaa, 0x6e, 0xd2, 0x88, 0xc4, 0xd2, 0x04, 0xf0, 0x2a, 0x93, 0xef, - 0xd1, 0xbb, 0x8e, 0x6f, 0xb9, 0x7d, 0xf9, 0xe0, 0x4f, 0x2a, 0x00, 0xef, - 0xdf, 0x23, 0x4b, 0xb9, 0xfe, 0x86, 0x83, 0x92, 0x9a, 0xfc, 0x6b, 0x49, - 0x83, 0x22, 0x18, 0x3e, 0xa1, 0xb5, 0x1d, 0xf8, 0xff, 0xf3, 0x00, 0x7d, - 0x69, 0xa5, 0x57, 0xfe, 0xe7, 0x2d, 0xcf, 0x62, 0xbe, 0xb3, 0x6c, 0xfd, - 0x2e, 0x33, 0x51, 0x90, 0xd6, 0xed, 0x7c, 0x68, 0x88, 0xd4, 0x4b, 0x3b, - 0x67, 0x1a, 0xf0, 0xd3, 0xee, 0xe4, 0xa7, 0x86, 0x3b, 0xd9, 0xa8, 0x28, - 0x8d, 0x98, 0xa4, 0x25, 0x41, 0xf5, 0x0f, 0xcc, 0xea, 0x2c, 0x9d, 0xb3, - 0xcf, 0xcb, 0xc0, 0xb5, 0xc1, 0x93, 0xf7, 0x8d, 0xfb, 0xc4, 0xd8, 0x53, - 0xc2, 0x57, 0x27, 0x8d, 0xff, 0x01, 0x14, 0x89, 0xc8, 0x8d, 0xc3, 0x63, - 0xca, 0x80, 0x4f, 0x5c, 0x09, 0x83, 0x09, 0x1d, 0xfa, 0xbf, 0xf7, 0xa1, - 0xf1, 0x95, 0x74, 0x16, 0xe0, 0xd6, 0xec, 0xed, 0xa3, 0x91, 0xae, 0x86, - 0xef, 0x16, 0xfa, 0x54, 0x22, 0x15, 0x31, 0x6c, 0xd1, 0xfc, 0x8c, 0x78, - 0xc0, 0xc4, 0x3b, 0x5a, 0x25, 0x26, 0x57, 0x6f, 0x16, 0xe5, 0x34, 0x2e, - 0xc5, 0x8d, 0xcb, 0xe3, 0x04, 0xbb, 0x4a, 0x78, 0x36, 0x0a, 0x9c, 0x04, - 0x20, 0xb9, 0x48, 0x21, 0x91, 0xc8, 0xa7, 0xa8, 0xbe, 0xe2, 0xf7, 0x79, - 0x3f, 0x12, 0x7a, 0x34, 0x98, 0x03, 0x8f, 0xdc, 0x13, 0x9c, 0x00, 0x12, - 0x9d, 0x6b, 0xc3, 0xc0, 0xf6, 0xd0, 0x9f, 0xe1, 0x2a, 0x80, 0x7b, 0x87, - 0x65, 0x3b, 0x36, 0xf9, 0x94, 0xe3, 0x05, 0x52, 0x77, 0xbf, 0x5f, 0x9e, - 0xdf, 0xf8, 0xbc, 0x2f, 0x2a, 0x32, 0x36, 0xf2, 0xef, 0xb9, 0xc8, 0x37, - 0x8a, 0xd8, 0xaa, 0x53, 0xe2, 0x89, 0x88, 0x42, 0xed, 0x28, 0x21, 0xc9, - 0xc4, 0xa3, 0x8f, 0x6c, 0x66, 0xf1, 0x11, 0xb6, 0x46, 0xdb, 0x3b, 0xd0, - 0xc1, 0xa0, 0xf8, 0x1f, 0xce, 0x45, 0xd0, 0xb3, 0xd0, 0x3b, 0xfa, 0xb8, - 0x11, 0xc6, 0xe5, 0xbb, 0x1e, 0x20, 0x7f, 0x3e, 0xc9, 0xf1, 0x03, 0x3a, - 0xe5, 0x00, 0xca, 0x74, 0x33, 0xe5, 0x8a, 0xb4, 0xc7, 0xf0, 0xa0, 0x1f, - 0xab, 0xba, 0x2b, 0x18, 0xf9, 0xc5, 0x28, 0x48, 0xf8, 0xda, 0xb6, 0xd7, - 0xc3, 0xce, 0xd8, 0x6a, 0xac, 0x08, 0x93, 0x8c, 0x47, 0x93, 0xc2, 0x89, - 0x48, 0xe9, 0x81, 0x16, 0x69, 0x8f, 0x80, 0x85, 0x04, 0x32, 0xe0, 0x9b, - 0xff, 0x88, 0xb0, 0xa6, 0x55, 0x19, 0x77, 0xd3, 0x07, 0xb2, 0x80, 0x3d, - 0xb6, 0xf9, 0xeb, 0x4c, 0xb0, 0x55, 0x0a, 0x48, 0x46, 0x02, 0x85, 0x86, - 0x7a, 0x49, 0xf8, 0xe9, 0x0a, 0x70, 0xab, 0x6d, 0x8d, 0x02, 0x3d, 0xde, - 0xd2, 0x23, 0x53, 0x5e, 0x8a, 0x88, 0xfa, 0x62, 0x1f, 0x22, 0xea, 0x31, - 0xea, 0x2b, 0x62, 0x37, 0xea, 0x4e, 0x78, 0x4d, 0x37, 0x12, 0x24, 0x11, - 0xca, 0xd4, 0x20, 0xb1, 0x70, 0xd0, 0xbf, 0x44, 0x18, 0x3f, 0x6f, 0x53, - 0x95, 0x95, 0x17, 0xcb, 0x9c, 0x44, 0x84, 0xfd, 0x05, 0x62, 0xe3, 0xff, - 0xb1, 0xe6, 0x11, 0x38, 0x51, 0x56, 0x51, 0x5e, 0x97, 0x95, 0xf1, 0xcf, - 0x35, 0xeb, 0x15, 0x6a, 0x52, 0xb0, 0x7d, 0xdb, 0x9b, 0x96, 0x94, 0xa0, - 0xce, 0x38, 0x53, 0x6e, 0xbb, 0xa5, 0xca, 0xaa, 0xdd, 0x31, 0x13, 0x6e, - 0x2c, 0xab, 0xc3, 0xdd, 0xa1, 0x22, 0x47, 0x47, 0x5b, 0xbd, 0xc3, 0xc3, - 0x2a, 0x01, 0x3e, 0x97, 0xc6, 0x1a, 0x05, 0x7a, 0xea, 0x84, 0xa0, 0x59, - 0x41, 0x2f, 0x25, 0x69, 0x9c, 0xde, 0xf0, 0x7a, 0xfe, 0x6f, 0xc6, 0xdd, - 0x34, 0x40, 0xa3, 0x4f, 0xf4, 0x71, 0x37, 0xd7, 0x4c, 0xfa, 0x4a, 0x19, - 0x50, 0xc8, 0x7e, 0xed, 0x5f, 0x98, 0xb5, 0x1c, 0x44, 0xd2, 0x4c, 0x92, - 0x1b, 0x4e, 0x75, 0x7c, 0x44, 0xce, 0x9a, 0x42, 0xb1, 0xfe, 0xf6, 0x47, - 0x81, 0xde, 0x45, 0x81, 0x92, 0x44, 0xb2, 0x03, 0x47, 0x87, 0xcd, 0x6b, - 0x79, 0xa6, 0xf6, 0x0d, 0x81, 0xf2, 0xb3, 0xde, 0x31, 0x51, 0x9e, 0x22, - 0x6f, 0x8b, 0xd9, 0x91, 0xfe, 0xf3, 0xa4, 0x91, 0x5c, 0x03, 0x07, 0x4c, - 0x55, 0x08, 0xef, 0x2b, 0x52, 0x8c, 0xf9, 0xf0, 0xdb, 0xfc, 0x65, 0x36, - 0xd8, 0x5f, 0x75, 0x86, 0xe6, 0x83, 0x96, 0xa1, 0xf7, 0xb1, 0xfe, 0xf7, - 0x69, 0x49, 0xb3, 0x9c, 0xf3, 0x6a, 0x91, 0x8a, 0x55, 0xfe, 0x0a, 0xc1, - 0x90, 0x6e, 0x28, 0xf4, 0x15, 0xd9, 0x32, 0x65, 0xa9, 0xc6, 0x98, 0xc5, - 0x8f, 0xe7, 0x57, 0xd0, 0x40, 0x9c, 0xe9, 0x45, 0xb6, 0x8c, 0x42, 0xe2, - 0x60, 0x73, 0xf5, 0x64, 0xa1, 0x49, 0x61, 0x76, 0xd3, 0x03, 0x29, 0x90, - 0xc3, 0xd1, 0x29, 0x40, 0xca, 0x05, 0x4a, 0xff, 0xfa, 0xaf, 0x98, 0xd6, - 0x6f, 0x5a, 0x1d, 0xc3, 0xdf, 0x70, 0x6d, 0x7e, 0x22, 0xbd, 0x50, 0xeb, - 0x05, 0x26, 0xdb, 0x35, 0xc4, 0x34, 0x89, 0xd6, 0xf9, 0x0d, 0x6e, 0x26, - 0x59, 0x90, 0xfc, 0xc4, 0x0e, 0x61, 0x01, 0x11, 0xd4, 0xc7, 0x05, 0x34, - 0x72, 0x36, 0xe1, 0xfb, 0x0e, 0x9c, 0x86, 0x9b, 0x69, 0x84, 0xbe, 0xb0, - 0xf8, 0x3c, 0x22, 0x19, 0x1b, 0xff, 0x24, 0xec, 0xbb, 0x86, 0xd3, 0x11, - 0x80, 0xab, 0x68, 0x33, 0x6c, 0xa5, 0xca, 0x31, 0xf3, 0x85, 0x61, 0xe0, - 0x23, 0xee, 0x46, 0x91, 0xa5, 0xb8, 0xe6, 0x2e, 0x03, 0x81, 0xbc, 0xa1, - 0xf7, 0x80, 0x56, 0x30, 0xbc, 0x45, 0x3a, 0xab, 0xe8, 0x2b, 0xe1, 0xc8, - 0xd4, 0x4b, 0x0d, 0xe0, 0x6f, 0x44, 0xd2, 0xd2, 0xda, 0x1b, 0xd5, 0x57, - 0x14, 0x1a, 0x16, 0x60, 0x9f, 0xf9, 0x67, 0xad, 0x66, 0x9d, 0xf5, 0x48, - 0xd3, 0x29, 0xfc, 0x95, 0x4e, 0x79, 0x0e, 0x19, 0x75, 0xb5, 0x19, 0xc7, - 0x4a, 0xa7, 0xe0, 0xa5, 0x08, 0x0c, 0xcb, 0x2a, 0xd0, 0x0d, 0xc2, 0x13, - 0xa8, 0xd7, 0xc9, 0x4f, 0x01, 0x50, 0x1a, 0x86, 0xa2, 0xe1, 0x59, 0xf8, - 0x29, 0xf1, 0xd9, 0x80, 0xe5, 0xf2, 0x6c, 0x2c, 0x38, 0x17, 0x11, 0x54, - 0xf0, 0x7f, 0x37, 0x07, 0xa7, 0x8b, 0xca, 0x4c, 0x49, 0x09, 0x7b, 0x33, - 0xba, 0xd1, 0xc0, 0x5f, 0x04, 0x22, 0x22, 0xec, 0xb8, 0xa4, 0xc8, 0xa2, - 0x46, 0x18, 0x22, 0x12, 0xb3, 0x37, 0x9d, 0xa5, 0x4f, 0xa5, 0x32, 0x5a, - 0x1a, 0xb0, 0x21, 0xec, 0x38, 0x1d, 0x6a, 0x38, 0x93, 0x26, 0x3b, 0xa0, - 0xd4, 0x3d, 0x63, 0x95, 0x58, 0x1c, 0x68, 0x75, 0x59, 0xb4, 0xd0, 0x4c, - 0x99, 0x21, 0xd2, 0x89, 0x54, 0x85, 0x98, 0xc9, 0x08, 0x86, 0x41, 0x45, - 0xab, 0x32, 0x3e, 0x1f, 0x19, 0xe3, 0x72, 0xd5, 0xe0, 0xc8, 0x90, 0x63, - 0x96, 0x1a, 0x70, 0x7f, 0x14, 0xb3, 0xd7, 0x20, 0x51, 0xe1, 0xab, 0xbe, - 0xa5, 0x52, 0x6d, 0x72, 0xef, 0x58, 0x9e, 0x17, 0x59, 0x5d, 0x30, 0xae, - 0x2c, 0x99, 0x1a, 0x94, 0x1b, 0x30, 0x1e, 0xc8, 0xf4, 0x54, 0x3b, 0xfe, - 0xd0, 0xc8, 0xd9, 0x31, 0x6f, 0x08, 0xf0, 0x5f, 0xb3, 0xd6, 0xaa, 0x10, - 0x7e, 0x53, 0xc7, 0x89, 0x4a, 0xc8, 0xe5, 0x92, 0x77, 0x78, 0x5b, 0xbc, - 0x17, 0x17, 0xa5, 0xc2, 0xd0, 0x3b, 0x7e, 0xc7, 0x21, 0x41, 0x3f, 0x63, - 0x34, 0x92, 0xcb, 0xc3, 0xb3, 0x1b, 0x2a, 0x6a, 0x8e, 0x2a, 0x5e, 0xaa, - 0xc9, 0x65, 0x53, 0x7c, 0x0c, 0x7d, 0x48, 0xea, 0xec, 0x89, 0xd5, 0x1f, - 0x3f, 0x33, 0xe2, 0x10, 0x50, 0xff, 0xe9, 0x5f, 0x29, 0xc0, 0x20, 0xec, - 0x6b, 0xe7, 0x2f, 0x17, 0x1f, 0xb4, 0x7b, 0xc9, 0x9b, 0x32, 0xda, 0xf3, - 0x21, 0x94, 0x84, 0x30, 0x34, 0x02, 0xa0, 0x10, 0xe8, 0xe4, 0xdb, 0x1d, - 0x6b, 0x36, 0x0a, 0x4d, 0xb6, 0xb5, 0x18, 0x21, 0xa3, 0x8a, 0x0c, 0x3a, - 0xcd, 0x3c, 0x15, 0xbd, 0x15, 0x36, 0x7d, 0x82, 0x51, 0x51, 0x30, 0x4a, - 0x46, 0x45, 0xb1, 0x70, 0xd7, 0xe8, 0x70, 0xd7, 0xdc, 0xfc, 0xeb, 0x81, - 0x7b, 0xe2, 0x47, 0x34, 0x8a, 0xb5, 0x8e, 0xa5, 0x4d, 0xf6, 0xeb, 0x37, - 0x6f, 0xf6, 0xcf, 0x29, 0x1e, 0x0e, 0xa1, 0x1e, 0x82, 0xdd, 0xc8, 0x43, - 0xb9, 0xf7, 0x36, 0xef, 0x97, 0xf7, 0xa6, 0x78, 0x76, 0xf9, 0x9d, 0xf4, - 0x9b, 0xec, 0x70, 0x82, 0x00, 0xa0, 0xab, 0xae, 0x89, 0xd6, 0x02, 0xcb, - 0xbc, 0x33, 0x5c, 0x44, 0x44, 0x48, 0xf5, 0xfd, 0xc6, 0x13, 0x4b, 0xf1, - 0xc2, 0x8d, 0x66, 0x61, 0x9c, 0xcd, 0xcc, 0xc6, 0x14, 0x1d, 0xc2, 0x3d, - 0x9f, 0x19, 0x3a, 0xae, 0x84, 0x85, 0x11, 0xb5, 0x3b, 0x81, 0x13, 0xff, - 0xd6, 0xa6, 0x7f, 0x10, 0x70, 0xfd, 0x2c, 0xf1, 0x63, 0x2c, 0xde, 0x9f, - 0x18, 0xd2, 0xf5, 0x38, 0xc8, 0xf8, 0x2f, 0xd0, 0x62, 0x94, 0xb0, 0x5f, - 0x87, 0xab, 0xe7, 0xad, 0xb6, 0x1d, 0x77, 0xa3, 0x52, 0x9b, 0xc0, 0x39, - 0x31, 0xb2, 0x7d, 0x83, 0xe7, 0xd4, 0xdb, 0x3b, 0xa8, 0xe2, 0xad, 0xb9, - 0xf3, 0x09, 0x08, 0x25, 0x59, 0x45, 0xb2, 0x11, 0x13, 0x25, 0xc9, 0x43, - 0xc0, 0x5a, 0x67, 0x84, 0x55, 0x10, 0xf9, 0x2d, 0xec, 0x67, 0xf1, 0xcf, - 0x04, 0x19, 0x42, 0x46, 0x8e, 0x2d, 0x5f, 0xc0, 0x2c, 0x98, 0x30, 0x0e, - 0x3c, 0x7b, 0x55, 0xd8, 0xcd, 0xfe, 0x3a, 0x43, 0xbf, 0x6c, 0x9f, 0x9f, - 0x27, 0xfa, 0x52, 0x47, 0xb8, 0xf9, 0xfe, 0x0e, 0x2f, 0xef, 0x04, 0x17, - 0xb0, 0x45, 0xba, 0xce, 0xb3, 0xaf, 0xef, 0x66, 0x18, 0xc1, 0x04, 0xab, - 0x5e, 0x13, 0x05, 0x55, 0x53, 0x49, 0xe4, 0x06, 0x53, 0xa2, 0x07, 0x57, - 0x1f, 0xcc, 0xa0, 0xc0, 0xde, 0x9a, 0xad, 0xe9, 0xd4, 0xd2, 0xe3, 0x8d, - 0x81, 0x53, 0xc6, 0x5e, 0x4c, 0x87, 0x22, 0xe3, 0xf0, 0xee, 0x31, 0x26, - 0x5c, 0x1d, 0x03, 0x31, 0x9e, 0x3a, 0xc3, 0x8c, 0xc8, 0xd2, 0x17, 0xc0, - 0xae, 0x67, 0xbe, 0x78, 0x35, 0xa6, 0x38, 0x85, 0x66, 0x5d, 0xb9, 0x94, - 0xf5, 0x69, 0x41, 0x4a, 0x62, 0x4c, 0x92, 0x45, 0xba, 0xd7, 0x7f, 0xb4, - 0xd4, 0x17, 0xdf, 0x89, 0x8b, 0x71, 0xaa, 0xcb, 0x4c, 0xad, 0x22, 0xb5, - 0x26, 0xd0, 0x30, 0xc5, 0xb4, 0xe6, 0xa3, 0x2e, 0x09, 0xc6, 0x06, 0x0b, - 0x50, 0x0e, 0x6c, 0x7a, 0x78, 0x8d, 0x1a, 0x3a, 0x8b, 0xe2, 0xfc, 0x0e, - 0x84, 0x04, 0x9f, 0x80, 0xa8, 0x2c, 0xbb, 0xa7, 0x63, 0x8d, 0xe2, 0x7b, - 0xa2, 0xe0, 0x05, 0x1e, 0x7c, 0x98, 0xa0, 0x2e, 0xe0, 0x23, 0xb8, 0x5e, - 0x52, 0x67, 0xba, 0x02, 0xa0, 0xfb, 0xec, 0x97, 0xdc, 0x53, 0x17, 0x06, - 0xa2, 0x6c, 0x11, 0x33, 0xdb, 0x7e, 0xa1, 0x5e, 0x4a, 0x29, 0x35, 0xc2, - 0x3e, 0x2f, 0x32, 0x06, 0xcc, 0x75, 0x5e, 0x07, 0x9a, 0x05, 0xaf, 0x45, - 0x12, 0xe2, 0xb6, 0x6d, 0xa8, 0x41, 0x5f, 0x6a, 0xe9, 0x78, 0x35, 0xe1, - 0xcf, 0x55, 0x42, 0x55, 0xe6, 0xc7, 0x9a, 0x24, 0xea, 0x1e, 0x25, 0xfc, - 0xeb, 0x8a, 0x56, 0x11, 0x12, 0x13, 0x99, 0xef, 0x3e, 0x4a, 0xa9, 0x59, - 0x31, 0x51, 0x76, 0x79, 0x1b, 0x80, 0xe5, 0xc7, 0x54, 0x11, 0x7b, 0x64, - 0xcc, 0x60, 0x7d, 0xba, 0x10, 0x03, 0x37, 0x2e, 0x70, 0xee, 0x75, 0x9d, - 0x3c, 0x78, 0x68, 0x55, 0x54, 0xfe, 0xd2, 0x96, 0x4e, 0x5f, 0x9f, 0xe5, - 0x65, 0xc9, 0xd3, 0xcf, 0xf3, 0x4b, 0x20, 0xde, 0x93, 0xcb, 0x95, 0xf6, - 0xdd, 0x47, 0x92, 0xff, 0x11, 0x8b, 0x3a, 0x06, 0xb4, 0xc0, 0x92, 0x92, - 0xe1, 0xfe, 0xd1, 0xa5, 0x5f, 0x51, 0xf8, 0xda, 0xe1, 0x4e, 0x26, 0x0b, - 0x6f, 0xf1, 0x47, 0xac, 0x55, 0x76, 0xa1, 0x1c, 0xe6, 0x25, 0xe5, 0xaa, - 0x04, 0xfe, 0x5a, 0x2d, 0x34, 0x7f, 0x6f, 0x79, 0x74, 0xa4, 0x80, 0x3b, - 0xf7, 0xa6, 0x54, 0xb8, 0xe3, 0x3b, 0xd0, 0x92, 0xbb, 0x08, 0x86, 0xe3, - 0x9d, 0xc5, 0xa9, 0x58, 0x93, 0xf2, 0x08, 0xcb, 0xcf, 0x97, 0xcc, 0x11, - 0xdf, 0x53, 0xf8, 0x02, 0x9d, 0x39, 0x21, 0xee, 0xfb, 0x4b, 0xc9, 0x06, - 0x18, 0x20, 0xea, 0x64, 0x58, 0x2f, 0xd1, 0x1e, 0xa4, 0xef, 0x04, 0x5a, - 0xdc, 0x8d, 0x61, 0x20, 0xbf, 0xe0, 0x0a, 0x4f, 0xad, 0xcb, 0x66, 0xae, - 0x25, 0x95, 0x48, 0xf5, 0x89, 0x30, 0xc0, 0x6d, 0xfd, 0x7c, 0x67, 0x65, - 0x08, 0x1b, 0x5d, 0x0b, 0xa5, 0x8d, 0x33, 0xbc, 0x26, 0x42, 0xed, 0x93, - 0x27, 0x91, 0xd7, 0x78, 0x38, 0x32, 0xb4, 0x52, 0xf3, 0x60, 0xea, 0x31, - 0x96, 0x32, 0xdb, 0x8d, 0xb4, 0x05, 0xf1, 0x0e, 0xe7, 0xf6, 0x3f, 0xb5, - 0x34, 0xbb, 0x25, 0x93, 0xb1, 0x2f, 0x8f, 0xe8, 0x1a, 0x32, 0x7e, 0x10, - 0xf4, 0x84, 0x49, 0x83, 0x09, 0x5c, 0x65, 0xfa, 0x71, 0x22, 0xb9, 0x61, - 0x83, 0x36, 0xc7, 0xd5, 0x58, 0x60, 0x69, 0x3b, 0xb2, 0x38, 0xf1, 0xf3, - 0x3b, 0x8d, 0x9b, 0xa6, 0xb1, 0x58, 0x8c, 0xa2, 0x9d, 0xc5, 0x75, 0x0f, - 0x98, 0x1e, 0x3f, 0x60, 0x44, 0x9e, 0xa9, 0x7f, 0x00, 0x99, 0x00, 0x6a, - 0xf4, 0x5e, 0xbf, 0x61, 0x07, 0x60, 0x6f, 0x6f, 0x3a, 0xb9, 0x53, 0x78, - 0x61, 0x7f, 0x38, 0xda, 0x2f, 0x29, 0x5c, 0x68, 0x12, 0x2b, 0xb8, 0x5a, - 0xf2, 0xce, 0xd4, 0x5c, 0x34, 0x01, 0x11, 0x68, 0xb0, 0x34, 0xb2, 0xe2, - 0x6e, 0x47, 0x06, 0x2b, 0xbc, 0x06, 0x83, 0x61, 0x90, 0xa6, 0x94, 0x4e, - 0x78, 0x0d, 0x8a, 0xb6, 0xd6, 0xf6, 0xec, 0x33, 0xec, 0x0a, 0x68, 0xbb, - 0x09, 0x57, 0x51, 0x5d, 0x99, 0x9e, 0x52, 0x12, 0x5f, 0x12, 0x1f, 0xf0, - 0x2c, 0x28, 0x72, 0xcf, 0xf4, 0x27, 0xf5, 0x8a, 0xe3, 0x23, 0xdf, 0xf1, - 0x9f, 0xcd, 0x19, 0x22, 0x4c, 0x10, 0xde, 0xd2, 0x28, 0x35, 0xd7, 0x79, - 0xea, 0x19, 0xc6, 0xdc, 0x77, 0x29, 0x55, 0x77, 0xab, 0xc0, 0x6f, 0x5c, - 0xa7, 0x4c, 0x9c, 0x84, 0x0c, 0x6c, 0x01, 0x8c, 0xc6, 0x52, 0x9b, 0x01, - 0xfa, 0x25, 0x77, 0x67, 0x58, 0x0d, 0x4a, 0x84, 0x39, 0x86, 0xb6, 0x16, - 0xde, 0x16, 0x51, 0x86, 0xa9, 0x2f, 0x49, 0x48, 0xc4, 0x4c, 0xc2, 0xd0, - 0x2d, 0xaf, 0x38, 0x75, 0x94, 0x04, 0x62, 0xeb, 0x7f, 0x7b, 0xc0, 0x70, - 0xfd, 0xf7, 0xca, 0x0a, 0x36, 0xfd, 0x0c, 0xbe, 0xfb, 0x69, 0x33, 0x88, - 0xd0, 0xcb, 0xd4, 0x30, 0xf2, 0x5d, 0xd2, 0xdc, 0xe1, 0x45, 0x77, 0x39, - 0x05, 0xc1, 0x19, 0xb1, 0x09, 0x32, 0x19, 0xb2, 0xcd, 0x43, 0xe2, 0x94, - 0x5c, 0xb5, 0x55, 0x38, 0x1f, 0x30, 0x9a, 0xad, 0xc8, 0x61, 0xf4, 0x81, - 0xb2, 0xfb, 0x0a, 0x64, 0x09, 0xb6, 0x1b, 0xb0, 0x52, 0xc3, 0x47, 0x79, - 0xd2, 0xa8, 0x80, 0xe0, 0x56, 0xc6, 0x50, 0xad, 0xc2, 0xb4, 0x78, 0x7a, - 0x17, 0xb0, 0x58, 0xae, 0x50, 0xd4, 0xfe, 0x35, 0x4a, 0x4f, 0x4d, 0x1e, - 0x63, 0xe6, 0xfa, 0x83, 0x8a, 0x54, 0x6f, 0x47, 0xd0, 0x47, 0x07, 0xad, - 0xe9, 0x1c, 0xa1, 0x27, 0xc3, 0x37, 0x4f, 0xed, 0xf5, 0x32, 0xf4, 0xa6, - 0xaa, 0x44, 0x63, 0x6e, 0x7c, 0x69, 0xbb, 0x19, 0xa6, 0x4b, 0xb6, 0xa3, - 0xea, 0xe8, 0x97, 0x00, 0x75, 0xb6, 0x45, 0xee, 0xae, 0xce, 0x96, 0x9d, - 0xb2, 0xdf, 0x2e, 0x79, 0x06, 0x2d, 0xe9, 0xc5, 0x83, 0x16, 0xf5, 0x39, - 0xc6, 0x81, 0xba, 0x59, 0x0d, 0x6c, 0xbb, 0x02, 0xd4, 0xaf, 0x0c, 0x17, - 0x91, 0x71, 0x08, 0x37, 0xa0, 0x70, 0x05, 0x29, 0x20, 0x4b, 0x6e, 0x89, - 0x0b, 0xe9, 0xae, 0xf7, 0x29, 0xbc, 0x6c, 0x6d, 0xcd, 0x78, 0x14, 0xfa, - 0x0d, 0xd9, 0xc4, 0xd2, 0xaf, 0x7a, 0x8e, 0x4b, 0x18, 0x3e, 0xe5, 0x58, - 0xdd, 0x15, 0x1d, 0x61, 0xbf, 0xe5, 0x8c, 0x53, 0x6c, 0xdb, 0xe7, 0xb6, - 0x59, 0xba, 0x63, 0x4d, 0x63, 0xc4, 0x2b, 0xbb, 0xa8, 0x83, 0xf6, 0x90, - 0x26, 0xcc, 0xbf, 0xca, 0xd4, 0xa0, 0x08, 0x6c, 0x8e, 0xf9, 0x64, 0xa9, - 0x2e, 0xd7, 0x3c, 0x1c, 0x36, 0x9e, 0x1d, 0x40, 0xba, 0x76, 0x54, 0x9f, - 0x18, 0x61, 0x4f, 0x66, 0x28, 0x37, 0x4e, 0xb4, 0x95, 0xa6, 0x97, 0x4f, - 0x13, 0x8e, 0x31, 0xc9, 0x71, 0x77, 0xdc, 0x37, 0x0d, 0x2c, 0x77, 0x8d, - 0x4b, 0xb6, 0xc1, 0xa7, 0x77, 0x13, 0x0b, 0xf6, 0xa9, 0x99, 0x5d, 0xfc, - 0x29, 0xbc, 0x4b, 0x6a, 0x16, 0x74, 0xb3, 0xb4, 0x73, 0xba, 0x6a, 0xe2, - 0x32, 0xc4, 0x25, 0xa4, 0x14, 0x52, 0xee, 0x16, 0x09, 0x23, 0xfc, 0xc4, - 0x2a, 0x2e, 0x29, 0xab, 0xa6, 0x2f, 0x82, 0x65, 0xe8, 0x79, 0x38, 0x65, - 0x0d, 0x82, 0xb5, 0x5e, 0xf6, 0x97, 0xd6, 0x9e, 0x53, 0x09, 0xde, 0x29, - 0x2b, 0xcd, 0x2a, 0x0d, 0x69, 0x16, 0x3a, 0xa1, 0xa0, 0xfa, 0x07, 0x74, - 0x52, 0x60, 0x32, 0x9c, 0x74, 0x30, 0xb2, 0xf9, 0x97, 0x80, 0xde, 0x36, - 0x21, 0x72, 0x19, 0x9c, 0xf3, 0x17, 0x9a, 0x0b, 0x12, 0xb5, 0x3f, 0x72, - 0x33, 0x4e, 0x8b, 0x8b, 0x32, 0xf9, 0x39, 0xa2, 0xbb, 0xe3, 0x10, 0x2c, - 0x62, 0xf4, 0x0f, 0x8f, 0x2d, 0x40, 0x72, 0x3a, 0xfb, 0x53, 0x4d, 0x57, - 0x45, 0xe0, 0x78, 0x0f, 0x47, 0x12, 0x2b, 0xd9, 0xd2, 0x1d, 0x65, 0x19, - 0x77, 0xb8, 0x84, 0x78, 0x50, 0x9c, 0xbd, 0x2e, 0x51, 0x6b, 0x62, 0x2d, - 0x48, 0x7a, 0xf1, 0xd0, 0x25, 0x3b, 0xc3, 0x67, 0xdc, 0x03, 0x50, 0x2b, - 0x7d, 0xc8, 0xda, 0xe8, 0xe7, 0x20, 0x64, 0xc2, 0x0c, 0x90, 0x55, 0xb5, - 0x71, 0x82, 0x5f, 0xdc, 0xc1, 0x03, 0xa1, 0x12, 0xb3, 0x55, 0x11, 0x3c, - 0x95, 0x0d, 0xd9, 0xdd, 0xa7, 0xaf, 0xfa, 0x74, 0x26, 0x99, 0x49, 0xab, - 0x25, 0xf8, 0x2a, 0xc2, 0xd3, 0xc5, 0xf6, 0x3c, 0xca, 0x04, 0xd3, 0x6f, - 0x52, 0xde, 0x35, 0x7c, 0xc4, 0x72, 0x2b, 0xe9, 0x3f, 0x8d, 0x2f, 0xe6, - 0xc5, 0xb7, 0x61, 0x11, 0x8f, 0x73, 0xc6, 0x6f, 0xb9, 0xdc, 0x6c, 0x30, - 0x25, 0x73, 0x8f, 0xc0, 0x7b, 0x7f, 0x49, 0xb1, 0xc2, 0x0f, 0x3f, 0x2e, - 0x31, 0xd8, 0x40, 0xb4, 0x0a, 0x65, 0x6d, 0xe1, 0xb2, 0x56, 0x2e, 0x27, - 0x5e, 0x6f, 0x6f, 0x0b, 0x11, 0xeb, 0xfd, 0xfa, 0x4c, 0xaf, 0x41, 0x37, - 0x00, 0x69, 0x3c, 0x20, 0x3c, 0x30, 0xc3, 0x2a, 0x5e, 0x02, 0xea, 0x15, - 0x22, 0x9a, 0x69, 0x68, 0xc5, 0x92, 0x89, 0xad, 0xa9, 0x69, 0x3b, 0x5f, - 0xdf, 0x74, 0xc1, 0x2d, 0xcd, 0x81, 0xd5, 0x6b, 0xa4, 0x39, 0x20, 0xe5, - 0x41, 0xcd, 0xc7, 0x93, 0x98, 0xb9, 0xb3, 0x98, 0x9e, 0x4a, 0x7e, 0xc2, - 0xfb, 0x6b, 0x8e, 0x3d, 0x2e, 0x5c, 0xed, 0x9c, 0x1d, 0x57, 0x68, 0x02, - 0x99, 0x70, 0x3c, 0x86, 0x4f, 0x06, 0x85, 0xc4, 0x01, 0xda, 0x8c, 0x88, - 0xda, 0xdc, 0x3d, 0xc9, 0x10, 0x89, 0x33, 0x86, 0x44, 0x93, 0x71, 0x65, - 0x5d, 0x9b, 0x81, 0x4c, 0x37, 0x27, 0x03, 0x26, 0x9f, 0x62, 0x6d, 0xed, - 0xbb, 0xca, 0x30, 0x5b, 0x9b, 0x53, 0xfa, 0x83, 0x64, 0x79, 0x93, 0x67, - 0x93, 0xc3, 0x58, 0x27, 0x76, 0xb3, 0x19, 0x1b, 0xf4, 0x57, 0xc0, 0x81, - 0xe9, 0x42, 0x40, 0xe4, 0x8c, 0x1a, 0xaf, 0x67, 0x4c, 0x1d, 0xd4, 0x03, - 0x63, 0xfc, 0xef, 0x30, 0x45, 0x59, 0x42, 0xaa, 0xde, 0xc6, 0x5d, 0x75, - 0x92, 0xa4, 0x23, 0x49, 0x41, 0xa7, 0x42, 0x70, 0xc6, 0xf7, 0x35, 0x36, - 0xdf, 0x25, 0x96, 0xb4, 0xd6, 0xef, 0x5e, 0x9d, 0xf4, 0x2a, 0xd4, 0x3a, - 0x6b, 0xe4, 0xdb, 0xe0, 0xfa, 0x1e, 0x43, 0xef, 0x5e, 0x05, 0x7d, 0xdb, - 0x19, 0x7a, 0xde, 0x0f, 0xe6, 0xfb, 0x5a, 0xc6, 0x16, 0xd2, 0x78, 0xf7, - 0x4b, 0xe4, 0xe7, 0x9e, 0xa7, 0x74, 0x47, 0xb9, 0x81, 0x5b, 0x56, 0xcc, - 0x22, 0x17, 0x1a, 0x30, 0x95, 0x37, 0x6c, 0x2a, 0xd9, 0x4e, 0xf4, 0x2b, - 0x29, 0x11, 0x68, 0xff, 0x79, 0xc6, 0x0e, 0xf8, 0x33, 0xf2, 0x6e, 0xfb, - 0xb6, 0x38, 0xa7, 0x9a, 0x9f, 0x15, 0x74, 0xab, 0x6a, 0x12, 0xb6, 0xe6, - 0xfa, 0xa5, 0x98, 0x40, 0xd8, 0x42, 0x89, 0xa5, 0xe7, 0xa8, 0x8f, 0xca, - 0x95, 0x12, 0x87, 0xdf, 0x75, 0xd2, 0xa6, 0xde, 0x7a, 0x9e, 0xa0, 0x4d, - 0xd1, 0x49, 0x9f, 0xb6, 0x86, 0x19, 0xe3, 0xad, 0x04, 0xfd, 0x74, 0xae, - 0x1e, 0xce, 0x1e, 0x6a, 0xa0, 0x4f, 0x11, 0x70, 0xdd, 0xc7, 0xef, 0x61, - 0x00, 0x9d, 0xaa, 0x46, 0x68, 0x19, 0x4a, 0x54, 0xb3, 0x8b, 0xd1, 0x4c, - 0xb2, 0x1d, 0x2f, 0xc9, 0x31, 0x5b, 0x6a, 0xcd, 0x28, 0x09, 0x39, 0x1c, - 0xef, 0xa1, 0x4c, 0x2c, 0xdb, 0xff, 0x41, 0x58, 0x7a, 0x16, 0x93, 0x2b, - 0x18, 0x5b, 0xd8, 0xc0, 0x6e, 0x7a, 0xeb, 0xe6, 0x57, 0x67, 0x24, 0x82, - 0x46, 0x68, 0x19, 0x33, 0xea, 0x60, 0x6e, 0xc8, 0xdf, 0xfb, 0x91, 0xf2, - 0x0a, 0x54, 0xdd, 0x70, 0xd9, 0x67, 0x61, 0xe3, 0xb7, 0x51, 0x62, 0x36, - 0x2b, 0x1b, 0x01, 0x3f, 0x33, 0x5c, 0x3d, 0xa5, 0x3e, 0x5b, 0xd6, 0xa5, - 0xe6, 0x66, 0x6e, 0x97, 0x4a, 0x64, 0x4c, 0x49, 0xcb, 0x4c, 0x54, 0xeb, - 0xa9, 0xcc, 0x1f, 0xbb, 0x3f, 0x8e, 0xf4, 0xd9, 0xe0, 0x41, 0xca, 0xcd, - 0x08, 0x0c, 0xdc, 0x48, 0xa0, 0xc0, 0x99, 0x12, 0xe8, 0xa9, 0x6f, 0x97, - 0xb5, 0x6b, 0x08, 0xdd, 0x79, 0xab, 0x65, 0x4b, 0x8d, 0x2e, 0x2c, 0xbe, - 0x80, 0x74, 0x61, 0x6a, 0xf1, 0xc8, 0x90, 0xb4, 0x16, 0x12, 0x2d, 0xe1, - 0xb4, 0xe5, 0x2b, 0x1d, 0x30, 0xd0, 0xc3, 0x5f, 0x36, 0xa5, 0x3a, 0x4e, - 0xa5, 0xb3, 0xdc, 0xa1, 0xb0, 0x8f, 0xcd, 0x6f, 0x08, 0xc4, 0x92, 0x2b, - 0xfe, 0x5e, 0xc7, 0x5b, 0xab, 0x15, 0xd4, 0xf9, 0x4f, 0xc6, 0xa0, 0x4b, - 0x75, 0xb0, 0x77, 0xce, 0x66, 0xc7, 0x80, 0x77, 0x41, 0x3f, 0xd8, 0xe9, - 0x9e, 0x11, 0xe8, 0x13, 0x22, 0xa9, 0x72, 0x9c, 0x70, 0xcc, 0xd7, 0xe7, - 0x17, 0xff, 0x69, 0xf5, 0xbd, 0x92, 0x40, 0x79, 0x19, 0x28, 0xb4, 0x8e, - 0x00, 0x05, 0x46, 0x53, 0x66, 0xf6, 0xe8, 0x4d, 0x79, 0x38, 0xa9, 0x38, - 0x46, 0xa7, 0x70, 0x64, 0x8d, 0x32, 0x2c, 0xe0, 0xc5, 0x65, 0x0e, 0x82, - 0x60, 0x25, 0x58, 0x84, 0xd4, 0x91, 0xf7, 0xe0, 0xe8, 0x87, 0x1d, 0xba, - 0x86, 0xa5, 0xb4, 0x11, 0x69, 0x6e, 0xc5, 0x2f, 0xdd, 0xa5, 0xa0, 0xaa, - 0x11, 0x91, 0xba, 0xe6, 0x0d, 0xb0, 0xd2, 0x72, 0xe7, 0x4a, 0x87, 0x5e, - 0x31, 0xbc, 0x28, 0xea, 0x89, 0x9b, 0xf9, 0x1d, 0xf8, 0x7c, 0x66, 0x3b, - 0x96, 0xce, 0xed, 0x48, 0x59, 0x55, 0x63, 0xc0, 0x86, 0x06, 0xda, 0xd7, - 0xb4, 0x5f, 0x86, 0x52, 0xdf, 0x69, 0xbc, 0xee, 0x36, 0x74, 0x21, 0xa6, - 0x74, 0x4b, 0xe2, 0x57, 0x0e, 0xb7, 0x1f, 0xb5, 0x35, 0x65, 0x89, 0x61, - 0xfa, 0x25, 0x1d, 0xba, 0x37, 0xae, 0xaa, 0x2b, 0x38, 0xd2, 0x30, 0xa1, - 0x36, 0x98, 0x3c, 0x48, 0xd7, 0xfa, 0xb7, 0xfb, 0x73, 0xb5, 0x6c, 0x24, - 0x57, 0x6d, 0xb5, 0x60, 0xe4, 0xf5, 0x7e, 0xf4, 0x17, 0x64, 0xf7, 0x98, - 0xbc, 0xad, 0x1c, 0x76, 0xbb, 0x5f, 0x69, 0xee, 0x86, 0x2a, 0x34, 0x6d, - 0x83, 0x94, 0x85, 0x74, 0xe9, 0x01, 0x38, 0x69, 0x3a, 0x69, 0xbb, 0xf8, - 0xe4, 0x23, 0xfa, 0x14, 0xaa, 0xf5, 0xca, 0xe4, 0x8b, 0xff, 0x31, 0x87, - 0xe3, 0x4d, 0x18, 0x1e, 0xe3, 0xf5, 0x52, 0x9f, 0x62, 0xe4, 0xea, 0xa6, - 0x2f, 0xf0, 0xc9, 0x60, 0xcf, 0x3b, 0x7f, 0x6d, 0x3c, 0xbc, 0xe9, 0xdd, - 0x22, 0x2f, 0xa3, 0x94, 0x37, 0x9f, 0x0e, 0xbc, 0x70, 0x75, 0x95, 0x51, - 0x8f, 0xa0, 0xd1, 0x47, 0x1e, 0x50, 0xda, 0x0f, 0x24, 0xfb, 0x7b, 0xe2, - 0x30, 0x89, 0x6c, 0x53, 0x06, 0xb8, 0xcb, 0x15, 0x93, 0x07, 0x24, 0x40, - 0xef, 0x99, 0x60, 0x8d, 0x66, 0x17, 0x57, 0x95, 0x4e, 0x78, 0x9c, 0x8b, - 0x58, 0x6b, 0x52, 0x33, 0x78, 0x60, 0x9a, 0x87, 0x14, 0x10, 0xff, 0x50, - 0xf0, 0x5e, 0x81, 0x91, 0xbe, 0xb5, 0xe6, 0x9c, 0xd7, 0x4d, 0x26, 0x5f, - 0x4e, 0x82, 0x81, 0x68, 0xdf, 0xc4, 0x57, 0xa7, 0x9a, 0x42, 0x98, 0x4d, - 0x81, 0x7b, 0xc4, 0xdb, 0x88, 0x97, 0x08, 0xbe, 0x36, 0x98, 0x69, 0x61, - 0xfd, 0x6a, 0x0b, 0x4b, 0x50, 0x4e, 0x05, 0x34, 0x8a, 0x69, 0x92, 0x83, - 0xa5, 0xe9, 0x68, 0x33, 0x74, 0x95, 0x4a, 0xbd, 0x3c, 0x1a, 0x2b, 0x0b, - 0xd4, 0xe0, 0x23, 0x40, 0x86, 0x03, 0x8b, 0x24, 0xdb, 0x8d, 0xf4, 0x52, - 0x41, 0x56, 0xf1, 0xc2, 0x67, 0x92, 0x2b, 0x43, 0xe7, 0x21, 0x71, 0x50, - 0x12, 0xa1, 0xd9, 0x31, 0x01, 0x0c, 0x6a, 0x48, 0x5d, 0x29, 0x8e, 0x92, - 0x33, 0x4e, 0x51, 0xea, 0xdd, 0x4a, 0xbc, 0x57, 0x02, 0x2c, 0xa4, 0x31, - 0xf6, 0x55, 0x68, 0xcd, 0x6c, 0x95, 0xfc, 0xa4, 0xcb, 0x57, 0x31, 0xd8, - 0x8f, 0xe8, 0x49, 0xe1, 0x65, 0x2c, 0xce, 0xce, 0x83, 0x53, 0xa9, 0xb9, - 0x1d, 0x29, 0x8e, 0x69, 0xb3, 0xff, 0x4a, 0x71, 0x76, 0xaf, 0x52, 0x46, - 0xb5, 0x90, 0xbf, 0x3c, 0x36, 0xbe, 0x23, 0x17, 0x48, 0xfb, 0x7c, 0x17, - 0x9c, 0x2d, 0x60, 0x4e, 0x8c, 0xac, 0x84, 0x14, 0x34, 0x03, 0x96, 0xab, - 0x04, 0x84, 0x34, 0x14, 0xdb, 0xf5, 0xe7, 0x32, 0x3a, 0x92, 0xef, 0x98, - 0x1b, 0x80, 0x63, 0x30, 0x24, 0xf8, 0x77, 0xbf, 0xe5, 0xbd, 0x83, 0x61, - 0xd6, 0xe2, 0x50, 0x48, 0xeb, 0xb8, 0x6d, 0x24, 0x39, 0xed, 0xa0, 0x66, - 0x9c, 0xb0, 0x07, 0xd4, 0x87, 0x0a, 0xc5, 0x9a, 0xd9, 0xe7, 0xca, 0xc2, - 0x64, 0xe6, 0xb4, 0xd1, 0x5d, 0x1b, 0x0b, 0xe6, 0xa3, 0xf2, 0xe9, 0xc8, - 0xa2, 0x1e, 0x24, 0xe8, 0x44, 0x5a, 0x4b, 0x57, 0x85, 0x64, 0xe5, 0x04, - 0xa0, 0xfd, 0x26, 0x18, 0x34, 0xc2, 0x63, 0x83, 0x45, 0x0b, 0xf4, 0x35, - 0xbf, 0x5d, 0xca, 0xa7, 0x89, 0xaa, 0x28, 0x2a, 0xf0, 0xe1, 0x08, 0xe5, - 0x49, 0x71, 0xae, 0xa4, 0xd0, 0x4d, 0xf9, 0x8c, 0x3a, 0xde, 0x70, 0x85, - 0x36, 0xc7, 0x0e, 0x7d, 0x7c, 0x21, 0xac, 0x66, 0x62, 0x96, 0x93, 0xde, - 0xa9, 0xd0, 0x10, 0x52, 0xc8, 0x59, 0x70, 0xe4, 0x6e, 0x78, 0xf3, 0xab, - 0x59, 0x1a, 0x82, 0x26, 0x39, 0x93, 0x51, 0xf6, 0x23, 0xc7, 0xd6, 0xf4, - 0x60, 0xaf, 0x5d, 0xf9, 0x4c, 0x2f, 0xb9, 0x87, 0x4d, 0x56, 0x1a, 0xf5, - 0xa3, 0xb9, 0xa1, 0xcf, 0x70, 0x3d, 0xfe, 0x60, 0x44, 0x7a, 0x88, 0xf2, - 0xb7, 0x9c, 0x12, 0x98, 0x7b, 0x10, 0x32, 0xd2, 0x1f, 0xae, 0x2d, 0xed, - 0x44, 0x38, 0xd9, 0xc2, 0x2f, 0x86, 0xc3, 0xf3, 0x0d, 0x4d, 0x27, 0x91, - 0x9a, 0x6e, 0x5a, 0x04, 0x0c, 0xf7, 0xba, 0x26, 0xfc, 0x47, 0xab, 0x97, - 0x54, 0xb5, 0x9e, 0x37, 0x48, 0x4e, 0xa4, 0x30, 0x70, 0xfb, 0xef, 0x62, - 0x25, 0xfb, 0xe4, 0x7d, 0xbe, 0x01, 0x7c, 0xf7, 0x9b, 0x14, 0x55, 0x0e, - 0x81, 0x58, 0x13, 0x87, 0x26, 0x38, 0x04, 0xc6, 0x71, 0xb7, 0xdc, 0x35, - 0x60, 0x4a, 0xd2, 0xbd, 0x4d, 0xad, 0x97, 0x37, 0x3e, 0xbd, 0x31, 0x04, - 0x2f, 0xb4, 0x9e, 0xb1, 0x4d, 0x1a, 0x55, 0x7d, 0xd1, 0x04, 0xcd, 0x52, - 0xa9, 0x63, 0x25, 0xb4, 0xae, 0xa8, 0x10, 0x4e, 0x76, 0xb0, 0xa9, 0x39, - 0xb9, 0x35, 0xc1, 0x0c, 0x16, 0xb4, 0xa2, 0xd7, 0xda, 0xc0, 0xa4, 0x8c, - 0x39, 0x49, 0xd2, 0xf6, 0xce, 0x6f, 0x9f, 0x3b, 0xc5, 0xe6, 0x5e, 0xf4, - 0xd5, 0x16, 0x89, 0x59, 0xa3, 0xdb, 0x30, 0x70, 0xee, 0x09, 0x64, 0x3a, - 0x5a, 0x95, 0x89, 0x91, 0x2d, 0x2a, 0x7b, 0xd0, 0xb4, 0x7b, 0xb0, 0xdf, - 0x41, 0x80, 0x59, 0xfd, 0x43, 0x52, 0x97, 0xd3, 0xfa, 0x5f, 0x0a, 0x6c, - 0x16, 0x95, 0x29, 0xda, 0x01, 0xea, 0x7f, 0xc1, 0x9e, 0x1e, 0x5e, 0x17, - 0x1c, 0xcf, 0x2e, 0x41, 0xc8, 0xcc, 0x1d, 0x9e, 0x2d, 0xec, 0x9f, 0x72, - 0xf6, 0x20, 0xf4, 0xfd, 0xfb, 0x9d, 0xa6, 0x0e, 0x6b, 0xac, 0xd5, 0x9b, - 0x26, 0x63, 0x93, 0x13, 0xc0, 0x5d, 0xf5, 0xa7, 0x3e, 0x9e, 0x95, 0x6f, - 0x77, 0xa3, 0x94, 0xc3, 0xfc, 0x3f, 0x74, 0x2c, 0x97, 0x08, 0x86, 0x48, - 0x77, 0xa5, 0x2d, 0xd5, 0x80, 0x37, 0x86, 0x65, 0x4e, 0x24, 0x71, 0xa3, - 0xf5, 0xc7, 0x57, 0xe8, 0x3b, 0x97, 0x7d, 0x6a, 0x1b, 0xee, 0xc4, 0x5c, - 0xde, 0x43, 0x59, 0x97, 0xcd, 0x96, 0xf6, 0xa8, 0xd4, 0xab, 0xb3, 0x67, - 0x08, 0x5a, 0xb4, 0xd6, 0x33, 0x02, 0x88, 0x97, 0xe7, 0x8a, 0x7f, 0xfc, - 0xa2, 0xdf, 0xed, 0xca, 0x9a, 0xdd, 0x6b, 0x85, 0x6c, 0x47, 0x06, 0x16, - 0x92, 0xa0, 0xa3, 0x00, 0xf1, 0xb7, 0x0e, 0xcc, 0x7f, 0xbb, 0x04, 0x0a, - 0x92, 0x2e, 0xd5, 0xea, 0x9e, 0x20, 0xaf, 0x67, 0x14, 0x33, 0x17, 0xf9, - 0xea, 0x89, 0x2c, 0x7f, 0x6f, 0x00, 0x4e, 0x4e, 0x90, 0x74, 0x3c, 0xed, - 0x8e, 0xf5, 0xf6, 0x96, 0x0f, 0xed, 0x58, 0xed, 0xea, 0x65, 0xf0, 0x49, - 0x06, 0xe5, 0xcc, 0x1c, 0xe6, 0xaf, 0x92, 0x5f, 0x87, 0x1b, 0x54, 0xe6, - 0x12, 0x72, 0x6f, 0xae, 0xf2, 0xfb, 0x61, 0x29, 0x51, 0x11, 0x25, 0xad, - 0x3c, 0xf8, 0xd2, 0x47, 0x0d, 0xcf, 0xb2, 0x02, 0x91, 0x89, 0x8f, 0xc0, - 0xdb, 0x1e, 0x2a, 0x3c, 0xa8, 0x41, 0x2c, 0x4b, 0x9b, 0xfd, 0xdc, 0x3f, - 0x21, 0x04, 0x64, 0xc3, 0x75, 0x53, 0xdb, 0xe4, 0x4d, 0xde, 0xf1, 0x3e, - 0x66, 0x19, 0x74, 0xd9, 0x95, 0x9d, 0x98, 0x4d, 0xec, 0x21, 0x38, 0x21, - 0xc4, 0x50, 0x4d, 0x90, 0xdf, 0xea, 0x8a, 0x6b, 0xba, 0x1e, 0x9d, 0x35, - 0x43, 0x86, 0x82, 0x3f, 0x26, 0xe9, 0x48, 0x22, 0x63, 0x16, 0x0e, 0x9b, - 0x5e, 0x33, 0x8f, 0x93, 0xe9, 0x2a, 0x99, 0xd3, 0x04, 0x74, 0xdd, 0x96, - 0xa5, 0xf4, 0xef, 0x5a, 0x68, 0x71, 0x75, 0x8c, 0x72, 0x52, 0xc1, 0x30, - 0x9d, 0x57, 0x65, 0x1d, 0xb9, 0xdb, 0x4f, 0x22, 0xc3, 0x61, 0x33, 0x67, - 0x3f, 0x13, 0xd5, 0x70, 0xfb, 0x68, 0xa7, 0xac, 0x52, 0x3c, 0xac, 0x19, - 0x34, 0xf0, 0x4f, 0x33, 0xb4, 0x89, 0xa9, 0xca, 0x58, 0x2f, 0xa0, 0x79, - 0x26, 0x47, 0x72, 0xfb, 0x70, 0xc3, 0x45, 0xf6, 0x4c, 0x9a, 0x55, 0xd5, - 0xeb, 0x07, 0x55, 0x2e, 0x1e, 0xac, 0x3e, 0x7d, 0xb2, 0xb3, 0xc9, 0xb8, - 0x05, 0x05, 0x8c, 0xae, 0x43, 0xa6, 0xd0, 0x80, 0xf3, 0x21, 0x14, 0x09, - 0x2e, 0xfe, 0xab, 0xd8, 0xc8, 0xeb, 0x4d, 0xd7, 0xfa, 0x76, 0xb6, 0xdc, - 0x12, 0x5c, 0xeb, 0xd6, 0x1a, 0x76, 0x7a, 0x28, 0xab, 0xef, 0x8f, 0x27, - 0x8c, 0xe9, 0xe6, 0xdf, 0xf5, 0xc8, 0xae, 0x7c, 0xa7, 0xfe, 0x27, 0x42, - 0x17, 0xb9, 0x40, 0xc2, 0x40, 0x0a, 0x9c, 0x39, 0xc8, 0xb1, 0xb0, 0xc6, - 0xd1, 0x72, 0x64, 0xea, 0x54, 0x91, 0x00, 0x32, 0x93, 0x14, 0x5e, 0x2a, - 0x4b, 0x99, 0xbf, 0xfb, 0x48, 0xbe, 0x86, 0x23, 0x12, 0x4a, 0x5b, 0xc4, - 0x59, 0x55, 0x0e, 0xc5, 0xbf, 0x68, 0x27, 0xab, 0x80, 0x95, 0x02, 0x1e, - 0xcc, 0x8b, 0x47, 0xec, 0xc1, 0xae, 0x4f, 0x53, 0x80, 0xf9, 0x9e, 0x93, - 0xa4, 0xc3, 0xe4, 0xc7, 0xfe, 0x6b, 0x90, 0x2e, 0x70, 0x9e, 0x7c, 0x00, - 0x81, 0xe4, 0xf1, 0x5d, 0xa9, 0xe6, 0x94, 0x96, 0x9b, 0x52, 0x31, 0x4b, - 0x4a, 0x93, 0xb2, 0xee, 0xa1, 0x7a, 0x7f, 0x7f, 0xab, 0x3a, 0x08, 0x82, - 0x45, 0xae, 0x89, 0x23, 0xa5, 0x3b, 0x89, 0x3a, 0xaa, 0xdc, 0x43, 0x1c, - 0x2a, 0xe2, 0x05, 0x41, 0xc5, 0xcb, 0x00, 0xd5, 0xed, 0x81, 0x71, 0x92, - 0xef, 0x89, 0x4f, 0xa3, 0x75, 0xa0, 0xc5, 0x66, 0x3d, 0x9a, 0x04, 0x65, - 0x74, 0x56, 0xe2, 0x40, 0x46, 0xca, 0x44, 0x16, 0x00, 0xae, 0xb8, 0xd6, - 0x86, 0xad, 0x5b, 0x52, 0xfc, 0x3e, 0xce, 0xbc, 0x95, 0x64, 0xab, 0x19, - 0xa9, 0xaa, 0x1b, 0xe9, 0xd9, 0x9f, 0xea, 0x73, 0xad, 0xc1, 0xc7, 0x44, - 0x7b, 0xf8, 0x93, 0xa6, 0x25, 0x0c, 0x72, 0x4b, 0x49, 0xf2, 0x75, 0x9b, - 0xaf, 0x12, 0xbb, 0xab, 0xa0, 0x38, 0x52, 0xac, 0xd4, 0x7d, 0x7f, 0x3e, - 0xe0, 0x13, 0xe1, 0xf0, 0xec, 0x4d, 0x9c, 0x16, 0x85, 0x97, 0x84, 0x0d, - 0x08, 0x75, 0xf7, 0xc7, 0xac, 0xd2, 0xb9, 0x83, 0x1a, 0x7a, 0x6d, 0x34, - 0xdb, 0xd8, 0xbd, 0x0c, 0x3e, 0x4c, 0x16, 0x15, 0x94, 0x11, 0x6c, 0x12, - 0x51, 0x17, 0x09, 0x24, 0x62, 0xf2, 0xd8, 0xe1, 0x1a, 0x92, 0x5c, 0x0a, - 0x21, 0x9a, 0x83, 0xa4, 0x9b, 0xd6, 0xab, 0x7c, 0x43, 0x3d, 0xcf, 0x9c, - 0x8d, 0xeb, 0x0d, 0x6c, 0xe2, 0x92, 0xb8, 0x48, 0x65, 0xdc, 0x3f, 0xb0, - 0xf9, 0x49, 0x46, 0x77, 0x7f, 0x05, 0x75, 0x0c, 0x3c, 0xce, 0x73, 0x66, - 0xce, 0xec, 0x88, 0x05, 0x9d, 0xf2, 0x40, 0x71, 0xb3, 0x54, 0xfa, 0xfd, - 0x84, 0xba, 0x8d, 0x00, 0x20, 0x21, 0x5f, 0xb0, 0x0a, 0x1d, 0x40, 0x96, - 0x03, 0x91, 0xb9, 0x87, 0xaa, 0x49, 0xa6, 0x5e, 0x6e, 0xfe, 0x06, 0xa9, - 0x3a, 0xf8, 0x77, 0xbc, 0x64, 0x98, 0x0f, 0x23, 0xa6, 0xd7, 0xe7, 0x6b, - 0x33, 0xd1, 0x4a, 0xa1, 0x85, 0xb3, 0x36, 0x1e, 0x5f, 0x04, 0x67, 0x3f, - 0x70, 0xb8, 0xd4, 0x62, 0xde, 0x84, 0x59, 0x97, 0x59, 0x7e, 0xb5, 0x92, - 0x28, 0x4b, 0xe8, 0x15, 0x45, 0xa0, 0x49, 0xba, 0x11, 0x27, 0x72, 0x51, - 0xb8, 0x81, 0xb4, 0x66, 0x9c, 0x09, 0x60, 0x03, 0x0d, 0xae, 0xef, 0xfb, - 0x87, 0xff, 0xa6, 0x14, 0x11, 0x3c, 0x4d, 0x46, 0x75, 0x66, 0x0c, 0x37, - 0x95, 0x6c, 0x0d, 0xc9, 0xf7, 0x66, 0xc8, 0x81, 0x4b, 0xd3, 0xd9, 0x92, - 0xbe, 0x14, 0xaf, 0xf4, 0xb2, 0x33, 0xe7, 0x2f, 0x88, 0xf9, 0x9a, 0x3d, - 0x52, 0xbd, 0x1f, 0xcb, 0x7b, 0xf3, 0x82, 0x9f, 0x6c, 0x0c, 0x31, 0x68, - 0x61, 0xf1, 0xbc, 0xc1, 0xc8, 0xe6, 0xdf, 0x11, 0xdf, 0x94, 0x20, 0xbe, - 0xe2, 0xd7, 0x60, 0x95, 0xf1, 0x4e, 0x7a, 0xcc, 0x28, 0x98, 0x22, 0x9b, - 0x7b, 0x79, 0x8f, 0xa9, 0xf7, 0xd0, 0x5b, 0x5c, 0x9e, 0x4e, 0x4b, 0xc5, - 0xa4, 0xc0, 0x23, 0xd1, 0xb1, 0x3a, 0x7e, 0x7f, 0x75, 0xaf, 0xb3, 0x54, - 0xdc, 0x44, 0x30, 0xda, 0x1b, 0x77, 0x5e, 0x51, 0xda, 0xbc, 0x07, 0xba, - 0x18, 0x09, 0xea, 0xb5, 0x94, 0x67, 0xf1, 0xd2, 0x50, 0xbe, 0xaa, 0x76, - 0x19, 0x9f, 0x71, 0xf4, 0xe3, 0x02, 0x00, 0x1c, 0xf5, 0xb5, 0xaa, 0x8d, - 0x96, 0x07, 0x0a, 0x1a, 0x4a, 0x3d, 0x49, 0xcc, 0x80, 0xca, 0x20, 0x36, - 0x45, 0x7b, 0xfb, 0xe7, 0x82, 0x45, 0x56, 0x8c, 0x60, 0xe5, 0xb4, 0x46, - 0xe4, 0x15, 0x4a, 0xc5, 0x3d, 0x43, 0xbf, 0xf3, 0xac, 0xdc, 0x3c, 0xce, - 0x61, 0xed, 0xc3, 0x06, 0xc7, 0xf3, 0xdb, 0x82, 0x5d, 0x79, 0x5e, 0x67, - 0xf4, 0x9d, 0xd5, 0x9d, 0x37, 0xdb, 0xc9, 0x0d, 0xe2, 0xdf, 0xef, 0xc0, - 0x9f, 0x1e, 0x02, 0xd0, 0x21, 0x5d, 0xdf, 0x24, 0xc8, 0x93, 0x8e, 0x9a, - 0xf7, 0x3c, 0x26, 0xb7, 0x3a, 0xa0, 0xa9, 0x0b, 0x48, 0x21, 0x82, 0x1e, - 0xb8, 0xc3, 0xca, 0xf2, 0x6d, 0xad, 0x07, 0x79, 0x28, 0x8b, 0x91, 0xcc, - 0xb7, 0x44, 0x03, 0x38, 0x00, 0xb6, 0x56, 0x2e, 0x61, 0xc4, 0x84, 0x1d, - 0x41, 0x04, 0xf3, 0x6f, 0x55, 0xcd, 0xfd, 0x9d, 0xe8, 0x00, 0xa7, 0xc8, - 0x6f, 0xad, 0x62, 0xc0, 0xcb, 0xef, 0x39, 0xeb, 0x38, 0x5d, 0xe6, 0x8b, - 0xdf, 0x88, 0xd6, 0xbd, 0x82, 0x2c, 0xf9, 0x2e, 0xd8, 0xcb, 0xce, 0x8a, - 0x45, 0x4d, 0xa2, 0xbb, 0xc8, 0xfd, 0x1b, 0xf2, 0x84, 0x2b, 0xd8, 0x32, - 0xf2, 0xc7, 0x30, 0x0d, 0x61, 0xb2, 0x80, 0x03, 0x66, 0x05, 0xc0, 0x12, - 0xef, 0xbf, 0x2f, 0xb8, 0x26, 0xb3, 0xac, 0x2b, 0x9d, 0x05, 0xfe, 0x83, - 0xdf, 0x61, 0x6b, 0x54, 0x3e, 0x60, 0x01, 0x07, 0xe4, 0x9d, 0x3d, 0x55, - 0x27, 0xbe, 0x9b, 0xdb, 0x73, 0x24, 0x1f, 0x6f, 0xc1, 0x88, 0xcb, 0x23, - 0xdb, 0x6b, 0xd6, 0xc0, 0x0e, 0xd2, 0xfa, 0xbc, 0xf2, 0x10, 0x0e, 0x8c, - 0xb8, 0x3f, 0x47, 0x52, 0x7d, 0xbf, 0x8a, 0xa4, 0x1a, 0xba, 0x18, 0xb2, - 0x35, 0x71, 0x4d, 0xac, 0xe5, 0xf1, 0xd1, 0xd5, 0xe3, 0xd7, 0xf5, 0x68, - 0xb7, 0x7f, 0xa4, 0x91, 0x76, 0x0c, 0x61, 0x6c, 0xd6, 0x6c, 0x39, 0x29, - 0xc1, 0xaf, 0x3a, 0xb6, 0xae, 0x22, 0xb4, 0x29, 0x70, 0x5d, 0x7a, 0x8b, - 0x37, 0xf5, 0xce, 0xb2, 0x83, 0x4d, 0xaa, 0xa5, 0x89, 0x05, 0x46, 0xca, - 0xf3, 0x05, 0x6d, 0x62, 0x75, 0xbc, 0x42, 0x43, 0x73, 0xe4, 0x68, 0x6e, - 0xca, 0x84, 0xe7, 0x62, 0xe2, 0xb7, 0x72, 0xaf, 0xc1, 0xdc, 0x02, 0x2d, - 0xa4, 0x36, 0x30, 0x90, 0xa0, 0x92, 0x95, 0x96, 0xc0, 0x26, 0xd7, 0x17, - 0x57, 0x5a, 0x22, 0x9c, 0xb1, 0x2d, 0xa8, 0x6b, 0xd3, 0xff, 0xb5, 0xb7, - 0xde, 0x4f, 0xd8, 0x9a, 0xa6, 0xf2, 0xb2, 0x82, 0xea, 0x5c, 0x6b, 0x14, - 0xe3, 0x0b, 0x71, 0x55, 0x16, 0xfa, 0x9d, 0x74, 0x5c, 0xdf, 0xdc, 0xb8, - 0x37, 0x83, 0x3a, 0x85, 0xc0, 0xf7, 0x4d, 0x98, 0xa5, 0x46, 0x35, 0x01, - 0x57, 0xd5, 0xb1, 0x48, 0x66, 0xfe, 0x2c, 0x8a, 0x53, 0x8c, 0xc3, 0xb7, - 0x22, 0xa7, 0xe8, 0x6e, 0x82, 0x76, 0x4c, 0x40, 0x8f, 0x14, 0xe1, 0x5a, - 0x05, 0xd0, 0x4f, 0x90, 0x9f, 0x93, 0x83, 0x62, 0x54, 0x10, 0xfc, 0x89, - 0x16, 0x7e, 0x72, 0x7f, 0xd0, 0xbb, 0xc8, 0x35, 0xa0, 0x52, 0xdc, 0x76, - 0xdf, 0x6d, 0xfa, 0x9c, 0x17, 0x2c, 0x8e, 0x09, 0x8a, 0xd3, 0x48, 0xef, - 0x4e, 0xf8, 0x70, 0xff, 0x5d, 0x55, 0x03, 0xf0, 0x6e, 0xba, 0xf0, 0x8d, - 0x19, 0x1f, 0x17, 0x30, 0x8f, 0x72, 0x0c, 0xee, 0xe9, 0x98, 0x3c, 0x65, - 0xad, 0xe0, 0x5d, 0x2e, 0x05, 0x3b, 0xee, 0xeb, 0xad, 0x1d, 0xef, 0x39, - 0xbb, 0x3c, 0x7b, 0xdc, 0x7e, 0x72, 0x13, 0xa8, 0x9d, 0x2d, 0xc3, 0x1e, - 0xc0, 0xcc, 0x0f, 0xc8, 0x49, 0xed, 0xf4, 0x36, 0x9f, 0x4a, 0xea, 0xf7, - 0x7f, 0xec, 0x19, 0x41, 0x81, 0x6c, 0xdd, 0x98, 0x11, 0xe7, 0x8e, 0xf9, - 0x5b, 0xf1, 0x1f, 0x38, 0x70, 0x1d, 0xad, 0x38, 0xa4, 0x73, 0x6a, 0x5f, - 0x8b, 0x29, 0x12, 0x9c, 0x6c, 0x75, 0x65, 0x43, 0xe8, 0xdb, 0x6b, 0xb8, - 0x90, 0x4f, 0x40, 0xe4, 0x9a, 0xa0, 0x79, 0x18, 0x15, 0xa2, 0x57, 0xfd, - 0x27, 0x84, 0xa7, 0x84, 0x53, 0xf5, 0x31, 0x89, 0x3e, 0x54, 0x5a, 0x75, - 0x6c, 0x37, 0x78, 0x23, 0x32, 0x56, 0xb3, 0x1e, 0x0e, 0x53, 0x77, 0xe1, - 0x32, 0xdd, 0x63, 0x28, 0x0d, 0xf1, 0xac, 0x7b, 0x02, 0x37, 0x11, 0x22, - 0x56, 0x57, 0xfa, 0xd4, 0x83, 0x89, 0x9e, 0xa3, 0xcd, 0xa4, 0xc1, 0xf3, - 0xea, 0x41, 0x04, 0x60, 0xc5, 0xdb, 0xae, 0x7e, 0xd1, 0x7b, 0x60, 0x8b, - 0xf1, 0x69, 0x38, 0x29, 0x8a, 0xf5, 0x24, 0x7c, 0xa8, 0x8b, 0x5a, 0x63, - 0x5e, 0x29, 0x8e, 0xf6, 0xa7, 0x65, 0x6b, 0x5f, 0xa4, 0xad, 0x7a, 0xf9, - 0xce, 0x5f, 0x8f, 0xdd, 0x21, 0x40, 0xd3, 0x02, 0x5d, 0xc3, 0x8b, 0x55, - 0x8c, 0x2f, 0x03, 0x61, 0x2c, 0xb8, 0xc1, 0xaf, 0xe1, 0x69, 0x01, 0x69, - 0x6f, 0xb8, 0x8a, 0x2f, 0xcf, 0x5d, 0x40, 0x33, 0x5e, 0x20, 0x9e, 0xdf, - 0x85, 0x2d, 0x92, 0x3b, 0x89, 0x08, 0x77, 0xfe, 0x1d, 0x28, 0xee, 0xae, - 0x91, 0x2d, 0x95, 0x47, 0xa6, 0xc1, 0x5b, 0x13, 0x23, 0x59, 0xd2, 0x05, - 0xcf, 0xd1, 0x0a, 0xef, 0xdd, 0x6b, 0x66, 0x85, 0x3c, 0x6f, 0x0a, 0x18, - 0xb3, 0x81, 0x67, 0x78, 0xe9, 0x28, 0x2d, 0xa4, 0xf9, 0x0a, 0xe3, 0x59, - 0xab, 0xed, 0x7b, 0x30, 0xff, 0x8a, 0x53, 0xa7, 0x06, 0x23, 0x3f, 0xa4, - 0x2a, 0x2f, 0xa2, 0xb0, 0x1b, 0x18, 0x2b, 0xa7, 0xb1, 0x9a, 0xfd, 0xa1, - 0x93, 0x89, 0x6b, 0xc0, 0x15, 0x7f, 0x16, 0xab, 0x2f, 0x22, 0x4d, 0xd4, - 0xed, 0x46, 0xac, 0x3a, 0x15, 0x91, 0x57, 0x2c, 0x75, 0xac, 0xf2, 0x1e, - 0xe6, 0x04, 0xe6, 0xa9, 0x5c, 0xf9, 0x3e, 0xca, 0x55, 0xd6, 0x19, 0xaf, - 0xe4, 0xdd, 0x10, 0xb0, 0xfa, 0x34, 0xe6, 0x99, 0xb7, 0xff, 0x5a, 0xcd, - 0x4c, 0x3c, 0x78, 0x29, 0x0e, 0xb0, 0x6b, 0x4b, 0x2a, 0xae, 0x34, 0x71, - 0xad, 0x85, 0xa0, 0xae, 0xb7, 0x56, 0xec, 0x01, 0x8f, 0x2f, 0x1a, 0x0e, - 0x6f, 0x79, 0x4b, 0x53, 0x2c, 0x65, 0xa9, 0x78, 0x59, 0x3a, 0xb8, 0x8d, - 0xc2, 0x5a, 0x18, 0xc0, 0xbb, 0x39, 0x39, 0x7e, 0x02, 0x5c, 0xa4, 0x64, - 0x41, 0xdf, 0xc3, 0xd0, 0x4c, 0x5f, 0x31, 0xdb, 0x69, 0x8f, 0x5c, 0xca, - 0xe5, 0x99, 0x16, 0xb6, 0xbb, 0x50, 0x5f, 0xe6, 0x29, 0xb6, 0x79, 0x2e, - 0xbd, 0xfd, 0x58, 0x7a, 0xea, 0x0e, 0xdd, 0x90, 0x85, 0xd0, 0x48, 0xa0, - 0x87, 0xf0, 0x31, 0xd8, 0x61, 0xae, 0x8b, 0x56, 0x2f, 0x3c, 0xa3, 0x43, - 0xee, 0x07, 0x74, 0xa2, 0xb7, 0xe5, 0xc7, 0xdd, 0xa0, 0x03, 0x71, 0xe2, - 0x48, 0xb5, 0x9e, 0xf2, 0xcf, 0x01, 0x6c, 0x29, 0x9f, 0x90, 0x84, 0xc9, - 0x9a, 0xed, 0x64, 0x29, 0x90, 0xe9, 0x11, 0x54, 0x14, 0xac, 0x19, 0x00, - 0xea, 0x2f, 0x9c, 0xde, 0x03, 0x2b, 0xca, 0x69, 0x49, 0xaa, 0x34, 0xc8, - 0xb2, 0x63, 0x02, 0xb3, 0xaa, 0xfa, 0x7e, 0xa1, 0x5b, 0xed, 0xaf, 0xa4, - 0x23, 0x9d, 0xa2, 0x5d, 0x42, 0x2a, 0x7b, 0xc4, 0x4b, 0x09, 0x49, 0x90, - 0x25, 0x0e, 0x67, 0xbc, 0xe2, 0x37, 0x25, 0x44, 0x75, 0x73, 0x78, 0xbc, - 0x49, 0x30, 0xa5, 0x45, 0x96, 0x44, 0x18, 0xb1, 0x57, 0x50, 0x3c, 0x49, - 0x2d, 0x69, 0xb4, 0xc2, 0x0f, 0x16, 0xa3, 0xfc, 0x5b, 0xf0, 0x4f, 0xcd, - 0x5f, 0x1e, 0x9c, 0x8a, 0xe2, 0xa3, 0x08, 0x9e, 0x86, 0x9a, 0x60, 0x20, - 0x08, 0xfe, 0x6e, 0xd7, 0xa9, 0x03, 0xc3, 0x0c, 0xfa, 0x1b, 0xe7, 0x2a, - 0xa6, 0x51, 0xc3, 0x7d, 0xbf, 0x0a, 0x19, 0x22, 0xb9, 0x2f, 0x64, 0xd2, - 0x61, 0x24, 0x3d, 0x5b, 0x27, 0x1a, 0x4d, 0xc1, 0x2a, 0x1a, 0xf0, 0x75, - 0xbc, 0x92, 0xac, 0xd0, 0xe0, 0x3b, 0x4f, 0xa1, 0xe8, 0x01, 0x22, 0x17, - 0x17, 0x2e, 0xf5, 0x13, 0x37, 0x23, 0xf1, 0xe1, 0x6d, 0x7b, 0xd5, 0xfe, - 0x95, 0x6b, 0x42, 0x65, 0xce, 0x80, 0xcc, 0x43, 0x80, 0xb2, 0xfb, 0xbc, - 0xfd, 0xec, 0xbb, 0xb2, 0x6c, 0x15, 0xc3, 0x55, 0xf5, 0xb5, 0xb4, 0x6e, - 0xb0, 0x2d, 0x28, 0xbd, 0x87, 0x8a, 0x6f, 0xcf, 0x90, 0x96, 0x88, 0x21, - 0x23, 0xb8, 0xf8, 0x6a, 0xf7, 0xd1, 0xc5, 0x6f, 0x8b, 0x63, 0x0e, 0xb0, - 0x03, 0x51, 0xe7, 0x64, 0x86, 0x89, 0x62, 0x8c, 0xb6, 0x26, 0x56, 0xa6, - 0xd5, 0xf9, 0x0b, 0x5a, 0xad, 0x64, 0xa0, 0x23, 0x21, 0x20, 0x10, 0x30, - 0x56, 0x1f, 0x54, 0x6a, 0xb4, 0xb6, 0xa5, 0x7d, 0x17, 0x30, 0x85, 0xc8, - 0x1a, 0x0a, 0x3d, 0x1a, 0xc2, 0x0a, 0xc4, 0xcb, 0x1f, 0xd1, 0x4c, 0x59, - 0x97, 0xf2, 0xfb, 0x03, 0x06, 0x20, 0x15, 0xfd, 0x70, 0x61, 0x1d, 0xc0, - 0x73, 0xc0, 0xe7, 0xea, 0x5a, 0xdb, 0x54, 0x67, 0x2c, 0xc0, 0x72, 0x75, - 0x3c, 0x10, 0x02, 0xa8, 0x56, 0xa7, 0x5c, 0xfb, 0x7c, 0x77, 0xe4, 0x5f, - 0x7b, 0x4c, 0x6e, 0x12, 0xab, 0xa4, 0x99, 0xfb, 0x26, 0x69, 0xdc, 0x2f, - 0x49, 0x5b, 0x7b, 0x3a, 0xb5, 0xb4, 0xdc, 0x5a, 0x61, 0x19, 0xd0, 0xa8, - 0xa7, 0x60, 0xcc, 0x03, 0xb4, 0x63, 0x28, 0xaa, 0x19, 0xd4, 0x0d, 0xf3, - 0xf6, 0xfb, 0x88, 0xc4, 0x81, 0x28, 0x02, 0x39, 0x6a, 0x4c, 0x41, 0xc3, - 0x41, 0x6a, 0x04, 0x7c, 0x05, 0x0b, 0x6e, 0x56, 0x98, 0x19, 0xa5, 0xea, - 0x57, 0xbf, 0xbd, 0x75, 0x9b, 0x79, 0x18, 0xae, 0xf8, 0xee, 0x9b, 0x65, - 0x03, 0xc5, 0xe8, 0x17, 0x4e, 0x2e, 0x86, 0x96, 0x1a, 0x4e, 0xda, 0xd0, - 0xa8, 0x7f, 0x57, 0x79, 0xe5, 0x23, 0xfb, 0xca, 0xe6, 0xb5, 0x2a, 0x58, - 0x39, 0x83, 0xe9, 0x8e, 0x70, 0xb5, 0x20, 0x3e, 0x9e, 0x54, 0x84, 0xf2, - 0x4a, 0x7a, 0xb1, 0x79, 0x02, 0xee, 0xac, 0x4b, 0xdc, 0x1a, 0xbb, 0x40, - 0x2b, 0x18, 0x60, 0x10, 0x31, 0x33, 0x38, 0x50, 0xfa, 0xb3, 0x68, 0xfa, - 0xe7, 0xdc, 0x5d, 0x7e, 0xf2, 0xa2, 0xb1, 0x11, 0xf9, 0x76, 0xf3, 0x51, - 0x0b, 0xe2, 0x97, 0xe8, 0x4e, 0x87, 0x96, 0x58, 0xc9, 0x18, 0xa5, 0x61, - 0xbf, 0xae, 0xec, 0x49, 0x13, 0xf0, 0x87, 0x44, 0x82, 0x31, 0x46, 0x7c, - 0x3a, 0x4f, 0x66, 0x3f, 0x52, 0x2a, 0x5f, 0x7d, 0xf5, 0x32, 0x87, 0x33, - 0xdb, 0x80, 0x92, 0xc2, 0x92, 0xe2, 0x43, 0x82, 0xe0, 0x18, 0xf0, 0xb2, - 0xd5, 0x90, 0x06, 0x64, 0x23, 0x6f, 0x7c, 0x4f, 0x97, 0xee, 0x1f, 0xa0, - 0x8d, 0x0b, 0xc6, 0xfc, 0x5e, 0x52, 0x51, 0x53, 0xde, 0x17, 0x65, 0x98, - 0xcf, 0xe0, 0x00, 0x4d, 0x9c, 0x33, 0x07, 0xe0, 0xd6, 0x2c, 0xf8, 0xba, - 0xda, 0x2c, 0x24, 0xc9, 0x49, 0xa4, 0x60, 0xba, 0x4d, 0xf1, 0x75, 0x0f, - 0x95, 0xa0, 0x56, 0xaa, 0xef, 0x47, 0x9f, 0xda, 0x72, 0x1f, 0x01, 0x0b, - 0x0d, 0x72, 0x41, 0x5e, 0xa8, 0x97, 0xb6, 0x0a, 0x9a, 0x23, 0xb4, 0x9e, - 0x93, 0x0b, 0xa3, 0x79, 0xd6, 0x52, 0x2d, 0x7f, 0x7f, 0xe0, 0x08, 0x2a, - 0x35, 0x28, 0xf1, 0x06, 0x5f, 0x72, 0xdf, 0x22, 0x25, 0xea, 0x7f, 0x07, - 0x65, 0x1b, 0x33, 0x5e, 0x6f, 0xec, 0xc8, 0x3c, 0xca, 0x62, 0xef, 0x16, - 0x0e, 0xbb, 0xe0, 0xb2, 0xd5, 0x9e, 0x16, 0xf1, 0x57, 0x95, 0x28, 0xc5, - 0x8d, 0x09, 0xd7, 0x24, 0x82, 0x44, 0xd7, 0x80, 0xf3, 0x60, 0x55, 0x8c, - 0xcd, 0x68, 0xf1, 0x33, 0x22, 0x07, 0x08, 0x80, 0x8d, 0xc8, 0xe7, 0xcf, - 0x9d, 0x15, 0x31, 0x8f, 0x85, 0x51, 0x78, 0x38, 0xa3, 0xa4, 0x35, 0x44, - 0xbc, 0x9f, 0xc0, 0x7d, 0xbc, 0xbb, 0xee, 0xd1, 0x19, 0x7d, 0x1d, 0x22, - 0x4a, 0xa3, 0x0f, 0xa6, 0xa6, 0xf0, 0xba, 0x47, 0x3f, 0xe6, 0xa4, 0x76, - 0x9e, 0x8f, 0x76, 0x6f, 0xc3, 0xda, 0x47, 0x0e, 0x20, 0xc8, 0x68, 0x98, - 0x1c, 0x79, 0x9f, 0x64, 0x2f, 0xdf, 0x28, 0x7e, 0x81, 0x75, 0x42, 0x8f, - 0x24, 0xe4, 0x3e, 0xb4, 0xd4, 0xed, 0x66, 0xbe, 0xeb, 0xeb, 0x95, 0xed, - 0x68, 0x54, 0x8c, 0x98, 0xb3, 0x47, 0xe3, 0x03, 0xa2, 0x94, 0x71, 0x7f, - 0x7e, 0x59, 0xfc, 0x16, 0x58, 0x3a, 0xd9, 0xb6, 0x5d, 0xcf, 0x9b, 0x8e, - 0x30, 0x33, 0xfb, 0x7d, 0x87, 0xfb, 0xf9, 0x7d, 0xe6, 0x1d, 0x45, 0x47, - 0x1b, 0xad, 0x06, 0xec, 0xfc, 0x9e, 0x06, 0xa6, 0x56, 0x72, 0xbc, 0x9b, - 0x90, 0xc9, 0x68, 0x6b, 0x52, 0x1e, 0x91, 0x07, 0x92, 0x40, 0xea, 0xa3, - 0x37, 0xac, 0xdd, 0x35, 0x8d, 0x6b, 0x75, 0x9f, 0xc6, 0x95, 0x1d, 0x9e, - 0xef, 0x9c, 0x64, 0x81, 0xf1, 0x75, 0xfd, 0x28, 0xd6, 0xd6, 0x87, 0xb0, - 0x3f, 0xab, 0x9b, 0x81, 0xee, 0x15, 0x3e, 0xd0, 0x39, 0x5f, 0x1f, 0x0b, - 0x8f, 0x79, 0x39, 0x40, 0x02, 0x86, 0x00, 0x4f, 0x9a, 0xd4, 0x43, 0x45, - 0xcb, 0x77, 0xac, 0xac, 0x1e, 0x1b, 0xd6, 0x05, 0xf5, 0x5f, 0xcc, 0x85, - 0xa5, 0x97, 0x20, 0x24, 0x89, 0x13, 0xaf, 0x71, 0x37, 0x2a, 0xb0, 0xda, - 0x30, 0xc0, 0xce, 0x15, 0x70, 0xdd, 0xe2, 0xff, 0x55, 0x92, 0xbf, 0x50, - 0xfb, 0x0f, 0x36, 0x92, 0xc0, 0x8a, 0x91, 0x60, 0xab, 0xf3, 0xac, 0x65, - 0x4e, 0xfd, 0xeb, 0x47, 0x4c, 0xf9, 0x3a, 0x4f, 0x14, 0x58, 0x8e, 0x95, - 0x51, 0xf8, 0x4a, 0xeb, 0x83, 0x0f, 0x7f, 0xbd, 0xcc, 0x22, 0xc6, 0xb0, - 0x10, 0x7f, 0xa0, 0x7f, 0xf0, 0x91, 0xd6, 0x74, 0xb8, 0x0e, 0xac, 0xb5, - 0xc7, 0x28, 0xf6, 0x9e, 0x1b, 0x6c, 0xed, 0x67, 0x67, 0x76, 0xbe, 0x7b, - 0xc2, 0xe1, 0xa9, 0x3e, 0x26, 0x61, 0xf7, 0xa0, 0xe2, 0xd0, 0x10, 0x76, - 0x60, 0xfd, 0x47, 0x4b, 0x20, 0xee, 0x73, 0xf3, 0x23, 0xed, 0xf5, 0xef, - 0xba, 0x43, 0x74, 0x61, 0x6b, 0x2c, 0x7a, 0x78, 0x2f, 0x10, 0xe0, 0x6a, - 0xde, 0xb1, 0x03, 0xa4, 0xe9, 0x31, 0xaf, 0x8d, 0xb5, 0x6c, 0x6a, 0x73, - 0xfe, 0x3f, 0xb6, 0x4f, 0x69, 0xf4, 0x7d, 0x11, 0x73, 0x18, 0xf8, 0xf9, - 0x62, 0xe5, 0x7d, 0x87, 0x85, 0x13, 0xe6, 0x37, 0xfb, 0x35, 0xa6, 0x5c, - 0xc9, 0x5e, 0x49, 0xd3, 0xcd, 0x63, 0x92, 0x74, 0x09, 0x88, 0x01, 0xb8, - 0x10, 0xb6, 0x0d, 0x3d, 0x67, 0x7b, 0x09, 0x14, 0x85, 0xd6, 0xe7, 0x78, - 0xe9, 0x3d, 0xbd, 0x14, 0x67, 0xf3, 0x0e, 0xc1, 0x88, 0x18, 0x34, 0xc7, - 0x29, 0xaf, 0x2a, 0x87, 0x07, 0x80, 0x2d, 0x4e, 0xeb, 0x08, 0x29, 0x41, - 0x01, 0x58, 0x39, 0x19, 0x26, 0x02, 0xa6, 0x7f, 0x1d, 0x07, 0xd3, 0x49, - 0x2d, 0x49, 0x08, 0x55, 0x5b, 0x28, 0x28, 0x3d, 0x3c, 0xc5, 0x64, 0x5c, - 0x95, 0xc6, 0x38, 0x24, 0xd3, 0xea, 0xae, 0x2e, 0x91, 0xd6, 0x5a, 0xa8, - 0x24, 0xaa, 0x7e, 0x7f, 0x59, 0x06, 0xf7, 0x29, 0x1c, 0x4b, 0x61, 0x16, - 0xe7, 0xd0, 0x72, 0x4d, 0x96, 0x87, 0xb0, 0x20, 0xcc, 0x0c, 0x2c, 0x62, - 0x0f, 0x5f, 0x19, 0x4a, 0x74, 0x1d, 0x72, 0xd7, 0x1b, 0x32, 0x13, 0x78, - 0xb9, 0xd8, 0x03, 0x2b, 0x80, 0x3c, 0xa8, 0x3e, 0x27, 0x43, 0x7d, 0x20, - 0x6b, 0x03, 0xba, 0x0f, 0x31, 0x33, 0xb2, 0xc8, 0x38, 0xda, 0x08, 0xb8, - 0x78, 0xaa, 0x64, 0x3b, 0x64, 0x2a, 0x3f, 0x13, 0xdd, 0x7c, 0xe1, 0x3f, - 0x7d, 0x0c, 0x16, 0x53, 0xd5, 0x06, 0x20, 0xf0, 0x5b, 0x8e, 0xf4, 0x8e, - 0x61, 0x9a, 0x77, 0x00, 0x4d, 0xb2, 0x59, 0xb7, 0x0f, 0x58, 0x52, 0x82, - 0x6f, 0x35, 0x5d, 0xdb, 0xe0, 0x9e, 0x23, 0xba, 0x48, 0xa4, 0x57, 0xd8, - 0xd5, 0xe0, 0x00, 0xd0, 0x2e, 0xff, 0xe4, 0x0a, 0x6b, 0xa7, 0x06, 0x2f, - 0xb5, 0xb7, 0x1f, 0x02, 0xb6, 0x7f, 0x09, 0xaa, 0x2d, 0x4b, 0x12, 0x6a, - 0xa6, 0x60, 0xc0, 0xa6, 0x69, 0xe5, 0x0d, 0xd1, 0xb0, 0xf6, 0xc0, 0x23, - 0x62, 0x09, 0xe7, 0xcc, 0xaf, 0x79, 0x4b, 0x35, 0x60, 0x48, 0x57, 0xa8, - 0x9d, 0xb0, 0x81, 0x38, 0x63, 0x42, 0x86, 0x5f, 0xb9, 0x25, 0xd9, 0x37, - 0x42, 0x8c, 0x2e, 0xed, 0x69, 0x6f, 0x6a, 0x5b, 0x66, 0x73, 0x7b, 0xa6, - 0xe4, 0x72, 0x83, 0x78, 0x15, 0x2d, 0xdb, 0x47, 0x39, 0xd9, 0xc3, 0x4c, - 0x3d, 0x0e, 0x31, 0x65, 0x12, 0xf0, 0x23, 0xd0, 0xf6, 0x36, 0x0d, 0x07, - 0xe5, 0x1a, 0x00, 0x6f, 0x23, 0x18, 0x77, 0x0b, 0x31, 0x71, 0x7f, 0xe0, - 0x81, 0x61, 0xeb, 0x2f, 0x21, 0x51, 0x3b, 0x33, 0x10, 0x1f, 0xb4, 0x9c, - 0xe0, 0xd1, 0xdd, 0x54, 0x68, 0xa1, 0x11, 0x5d, 0x19, 0xa0, 0x61, 0xfc, - 0x2d, 0x93, 0xdf, 0x6e, 0x5d, 0xb1, 0x14, 0x65, 0xa3, 0xf8, 0x25, 0x8b, - 0xf6, 0x10, 0x70, 0x5f, 0x46, 0xd0, 0x3f, 0x40, 0xab, 0x5b, 0xc8, 0x13, - 0x55, 0x2b, 0xf1, 0xeb, 0xb9, 0x16, 0xfb, 0x7a, 0x13, 0xe4, 0x47, 0x51, - 0xb5, 0xf4, 0xf9, 0x7c, 0xa8, 0x94, 0x41, 0x95, 0x92, 0x6f, 0x3d, 0xe4, - 0x02, 0x61, 0x35, 0x15, 0x05, 0x0d, 0x80, 0xc4, 0x36, 0x3b, 0x4c, 0x90, - 0xbb, 0x38, 0xbe, 0x3b, 0x4a, 0xe8, 0x3f, 0xcc, 0x8a, 0xe0, 0x74, 0x22, - 0x5a, 0xec, 0xf1, 0xec, 0x72, 0xb2, 0xe2, 0x0d, 0xde, 0xc4, 0x17, 0xfd, - 0xe6, 0x8b, 0x47, 0xa5, 0x1e, 0x92, 0x4d, 0x82, 0x76, 0x1d, 0xcb, 0x78, - 0xbe, 0x60, 0x4c, 0xa1, 0x4d, 0xbe, 0xf7, 0x0f, 0xea, 0x86, 0x4d, 0x7e, - 0xe0, 0x50, 0xec, 0x69, 0x77, 0x30, 0x70, 0x3e, 0x18, 0x3b, 0x84, 0xf1, - 0xf4, 0x6d, 0x81, 0x29, 0x8a, 0xdb, 0xce, 0xb7, 0xeb, 0xfa, 0xa9, 0x3a, - 0xc2, 0x8e, 0x29, 0xfd, 0x1d, 0xbc, 0xf7, 0x80, 0x93, 0x09, 0x5e, 0x9e, - 0x86, 0xdd, 0xda, 0xe1, 0x0e, 0xb7, 0x7b, 0x5b, 0xfd, 0xb0, 0x07, 0x16, - 0xdf, 0x19, 0x5d, 0x2f, 0x0e, 0xd0, 0x6a, 0x0b, 0x42, 0x9a, 0xcb, 0xa5, - 0x17, 0x78, 0x79, 0xad, 0xa4, 0xe2, 0x9e, 0x1b, 0xeb, 0xce, 0x9d, 0x54, - 0x78, 0x60, 0x2e, 0xa5, 0x66, 0xa1, 0xbd, 0xc4, 0xd6, 0x55, 0xe9, 0x7c, - 0x23, 0x41, 0x0f, 0xad, 0x76, 0xdd, 0xf8, 0xab, 0x34, 0xa7, 0x31, 0x66, - 0x48, 0x24, 0xac, 0x04, 0x8a, 0xb5, 0xf6, 0xc3, 0x40, 0x20, 0xc9, 0x7c, - 0x19, 0x77, 0xad, 0x34, 0x12, 0xd7, 0xd3, 0x8c, 0xee, 0xc4, 0xdf, 0x17, - 0x0e, 0x7c, 0x98, 0xe5, 0xae, 0xbb, 0x2e, 0x7a, 0x54, 0x5e, 0xeb, 0x44, - 0x8c, 0xe7, 0xf4, 0xab, 0xd7, 0x26, 0x04, 0x7b, 0x4a, 0xaf, 0x92, 0xd0, - 0x42, 0xf0, 0x9d, 0xd0, 0xff, 0x0c, 0xed, 0xaf, 0x43, 0xb8, 0x83, 0xed, - 0x16, 0x7c, 0x7e, 0xe0, 0xb8, 0xab, 0xb6, 0xcb, 0x71, 0x7d, 0x98, 0x1f, - 0xd3, 0x3c, 0x1b, 0xfc, 0x0f, 0x2a, 0xe2, 0x2f, 0xa9, 0x27, 0x76, 0x75, - 0xab, 0xe2, 0x53, 0x0e, 0x70, 0xb6, 0x9c, 0x16, 0x24, 0xcd, 0x5e, 0xfb, - 0x96, 0x2c, 0x41, 0x40, 0x54, 0x5f, 0x4e, 0x28, 0x32, 0xd1, 0xcf, 0xb8, - 0x54, 0xe3, 0xaf, 0x8f, 0x90, 0x53, 0x3a, 0x61, 0x9d, 0x3f, 0x92, 0x29, - 0x03, 0x84, 0xb6, 0x75, 0x96, 0xda, 0x14, 0x2e, 0x01, 0x46, 0x6d, 0xd6, - 0x2a, 0x5c, 0xac, 0x08, 0x61, 0x40, 0x8e, 0xa3, 0x94, 0x94, 0x1c, 0x34, - 0x7e, 0x80, 0xc4, 0xb1, 0xec, 0x24, 0xef, 0x93, 0xe7, 0xd6, 0x6f, 0xc9, - 0xd5, 0x32, 0x39, 0x1b, 0x1a, 0x9c, 0xf3, 0xaf, 0x38, 0x76, 0xca, 0x37, - 0x9a, 0xf8, 0x18, 0xaf, 0x82, 0x27, 0x17, 0x62, 0xcf, 0xcc, 0x7c, 0x99, - 0x5b, 0xda, 0xda, 0x48, 0x15, 0x2e, 0xfe, 0xd1, 0x0a, 0xf4, 0xcd, 0x83, - 0x83, 0xff, 0xaa, 0xf4, 0x30, 0x9a, 0xab, 0x22, 0xb0, 0x65, 0xe0, 0x58, - 0x86, 0x80, 0x61, 0x01, 0x05, 0x9b, 0x59, 0xb4, 0xc5, 0xcd, 0xd3, 0x11, - 0x1f, 0x26, 0xe9, 0x05, 0xf4, 0x5c, 0xf9, 0x7d, 0xe9, 0x0a, 0x9c, 0xf1, - 0xa5, 0xd1, 0x7c, 0x98, 0xb8, 0x14, 0x22, 0x23, 0x5b, 0xcf, 0x5f, 0x59, - 0xbc, 0x1c, 0x67, 0x20, 0x3b, 0xf3, 0x97, 0x66, 0x86, 0x3c, 0x6b, 0xc8, - 0x70, 0x73, 0x8f, 0x75, 0x0f, 0x98, 0x04, 0x2e, 0xa9, 0xbc, 0xc8, 0x0a, - 0x99, 0xed, 0xc9, 0x68, 0xcb, 0x1c, 0x77, 0xf9, 0x2c, 0xff, 0x9c, 0x74, - 0x1a, 0x18, 0x3b, 0x49, 0x92, 0x1d, 0xd6, 0xe9, 0x38, 0x5c, 0xf7, 0x03, - 0x93, 0x60, 0x51, 0x50, 0xb0, 0xc6, 0x3c, 0x2d, 0xea, 0x7d, 0xc2, 0xd8, - 0x79, 0x06, 0x36, 0xd3, 0x38, 0x56, 0xf8, 0x09, 0x20, 0xd2, 0xc3, 0xb0, - 0x92, 0x62, 0x25, 0x04, 0xd7, 0x28, 0xc0, 0xe0, 0xf3, 0xfb, 0x06, 0x28, - 0xbc, 0x93, 0xe8, 0x1c, 0x26, 0xaf, 0xa2, 0x02, 0xd3, 0xd7, 0x64, 0x23, - 0x33, 0xb6, 0x6d, 0xb9, 0xc3, 0x11, 0x2e, 0x27, 0x7d, 0xf0, 0xb5, 0xdd, - 0xaa, 0x31, 0xaa, 0x84, 0x33, 0x84, 0x55, 0x37, 0xf2, 0xa7, 0x22, 0x5b, - 0x59, 0x56, 0x7e, 0xea, 0x41, 0xfc, 0x0f, 0xd2, 0xfb, 0x97, 0xe5, 0x93, - 0x21, 0xf5, 0x65, 0x67, 0xc7, 0xed, 0x9c, 0xcf, 0x6e, 0xcd, 0x4f, 0xb7, - 0xa5, 0x0e, 0x71, 0xae, 0x25, 0xff, 0x19, 0x9a, 0x7a, 0xe1, 0x9e, 0x18, - 0xce, 0x4e, 0x19, 0x23, 0x01, 0xe2, 0xf4, 0xec, 0x3d, 0xb0, 0x06, 0x1d, - 0xc9, 0x22, 0xc3, 0x83, 0xe3, 0xee, 0xa7, 0xf7, 0xcd, 0x9c, 0x41, 0xe1, - 0x82, 0x97, 0x7a, 0xc0, 0xaa, 0xb1, 0xd7, 0x78, 0xc0, 0xbb, 0x4a, 0xc1, - 0x16, 0xb8, 0xd2, 0xcc, 0xf0, 0xa8, 0x92, 0xff, 0x2a, 0x00, 0x75, 0xd5, - 0x26, 0xec, 0x1b, 0x89, 0x88, 0x2c, 0xd4, 0x3c, 0x52, 0x8a, 0x22, 0x17, - 0xf7, 0x9a, 0x55, 0x74, 0xf1, 0x23, 0x96, 0xe3, 0xf9, 0x33, 0x7f, 0xed, - 0xce, 0x72, 0x12, 0xd2, 0xd5, 0x70, 0xec, 0x53, 0xa5, 0x60, 0xb9, 0x19, - 0x38, 0x3f, 0xbc, 0x7d, 0xad, 0xbb, 0x63, 0x10, 0xac, 0x98, 0x69, 0x48, - 0x99, 0xd9, 0xaa, 0x0d, 0x78, 0x58, 0xfa, 0xe5, 0xdf, 0x74, 0x54, 0x8b, - 0xb3, 0x9b, 0x7f, 0x19, 0x8e, 0x0a, 0x0d, 0xa5, 0x55, 0xa8, 0x14, 0xd0, - 0x39, 0xfe, 0x6f, 0x99, 0x5c, 0x32, 0x83, 0x3d, 0x67, 0x88, 0x30, 0x55, - 0x01, 0xef, 0x81, 0x37, 0xd4, 0xab, 0xe4, 0x82, 0x59, 0x11, 0x80, 0x53, - 0xd9, 0xf6, 0x06, 0x37, 0x2a, 0xba, 0xb2, 0x43, 0xb8, 0x49, 0xfc, 0xad, - 0x8e, 0x5d, 0xa0, 0xca, 0xf3, 0x84, 0xd5, 0x72, 0x14, 0x54, 0x2f, 0x1a, - 0x37, 0x86, 0xd6, 0xbe, 0x13, 0x26, 0xf1, 0x39, 0x31, 0xc8, 0xee, 0x08, - 0x3e, 0x31, 0xf4, 0x32, 0xe4, 0x6b, 0x77, 0xea, 0x7c, 0x96, 0x1c, 0x24, - 0x3d, 0xe3, 0x38, 0xb2, 0x13, 0x0a, 0xad, 0x54, 0xc2, 0xf4, 0x4d, 0x3d, - 0x2a, 0x8b, 0x60, 0xf7, 0x43, 0x1a, 0x04, 0x2e, 0x61, 0xe0, 0xf0, 0xe6, - 0x3a, 0x6f, 0x0e, 0x62, 0x57, 0xfa, 0xa1, 0x4e, 0x0c, 0x8f, 0xe9, 0x89, - 0xfa, 0x01, 0x01, 0x3c, 0xe3, 0xad, 0xae, 0x81, 0x6f, 0x16, 0x4f, 0x72, - 0xe9, 0xa3, 0x98, 0x88, 0xda, 0xfc, 0x19, 0x0c, 0x3f, 0x52, 0x7b, 0xff, - 0xef, 0x3d, 0xaf, 0xed, 0x6a, 0x2f, 0xb5, 0x96, 0x06, 0xef, 0x77, 0x8a, - 0xa5, 0x42, 0x12, 0x90, 0xe5, 0x0a, 0x22, 0xa0, 0x22, 0xab, 0xad, 0x03, - 0x56, 0x35, 0x5b, 0x5b, 0x41, 0x35, 0xc8, 0xb2, 0x3f, 0x3b, 0x5e, 0xaf, - 0x9c, 0x2b, 0x21, 0x41, 0xbc, 0xb3, 0x65, 0x1b, 0x88, 0xcc, 0xe9, 0x72, - 0x7b, 0xdd, 0xc9, 0x31, 0xc4, 0xf1, 0x32, 0xa0, 0x6a, 0x09, 0x60, 0xeb, - 0xa7, 0x3a, 0xbb, 0xb4, 0x72, 0x53, 0x7a, 0x5d, 0xa4, 0x90, 0x95, 0x52, - 0x39, 0x48, 0xfe, 0x26, 0x75, 0x8e, 0x4d, 0x25, 0xa9, 0x9e, 0x0f, 0xc5, - 0xe2, 0xb5, 0xe6, 0xf8, 0xa8, 0xd6, 0x65, 0x11, 0xcd, 0x5b, 0xb1, 0x42, - 0x9d, 0x51, 0x8b, 0x84, 0x2f, 0xab, 0x77, 0x4d, 0x35, 0xb7, 0x77, 0x93, - 0x35, 0x54, 0x68, 0x70, 0x09, 0xba, 0xa9, 0xe6, 0x8e, 0x75, 0x8f, 0x7c, - 0xe0, 0x51, 0x73, 0x16, 0x0d, 0x4b, 0x32, 0xe7, 0x6d, 0x79, 0x8b, 0xbc, - 0xf5, 0xdb, 0x93, 0x79, 0xc3, 0x04, 0xbd, 0x19, 0xb4, 0x11, 0xc0, 0x5e, - 0x15, 0x25, 0x62, 0x5e, 0x70, 0x99, 0x9b, 0x9c, 0xe3, 0x42, 0x84, 0x7e, - 0x66, 0xb9, 0xd0, 0xc8, 0xea, 0x25, 0x00, 0xdd, 0x51, 0xe5, 0xc6, 0x34, - 0x05, 0x5b, 0xea, 0x60, 0x5a, 0x42, 0xe5, 0x2f, 0xee, 0x75, 0x7d, 0xe1, - 0x3a, 0x67, 0xb1, 0x7f, 0xee, 0x11, 0xd4, 0x02, 0x7e, 0x7f, 0x1a, 0x71, - 0x19, 0xec, 0xb4, 0x4f, 0x0b, 0x29, 0x54, 0xbe, 0xd9, 0x19, 0xb6, 0x09, - 0x3e, 0xd8, 0x4d, 0x5f, 0x11, 0x67, 0xf0, 0x30, 0xa0, 0x8f, 0x02, 0x74, - 0x45, 0x50, 0x65, 0xa8, 0x6d, 0xfd, 0x7a, 0x8c, 0x04, 0xbb, 0x14, 0x6b, - 0x72, 0x66, 0xd2, 0x37, 0x22, 0xee, 0x3d, 0x02, 0x66, 0x61, 0xd3, 0x2f, - 0xa0, 0x35, 0x50, 0x4d, 0x3d, 0x48, 0xf4, 0xdd, 0x0a, 0xaa, 0x4c, 0xbb, - 0x74, 0x37, 0xac, 0x27, 0x5f, 0x95, 0x9d, 0xba, 0x68, 0xf7, 0xaf, 0x61, - 0x9e, 0xff, 0xf2, 0xfc, 0xbf, 0x07, 0xc9, 0xa0, 0x7a, 0x03, 0x23, 0x19, - 0xc8, 0xa4, 0x70, 0x10, 0x8c, 0xd4, 0xd7, 0xd8, 0x50, 0x01, 0x5f, 0xff, - 0x3d, 0xce, 0xf6, 0x36, 0x02, 0xfe, 0x19, 0xb1, 0xf8, 0x77, 0x69, 0x4b, - 0x35, 0x92, 0xed, 0xda, 0x0f, 0xa7, 0x76, 0xbf, 0x5f, 0x56, 0x90, 0x6b, - 0x7c, 0xca, 0x85, 0x77, 0xb8, 0xfe, 0x8e, 0x64, 0xe2, 0x87, 0xe2, 0x2e, - 0x71, 0xe4, 0x5e, 0x3d, 0x80, 0x02, 0xa2, 0x8c, 0x17, 0xfe, 0x48, 0x1d, - 0xd5, 0xed, 0x5e, 0x1a, 0x93, 0x4e, 0x0f, 0xee, 0x2c, 0x5d, 0x48, 0x5f, - 0x87, 0xe4, 0x2a, 0x56, 0x06, 0xe6, 0xbf, 0x4b, 0xd4, 0x1d, 0x29, 0x8e, - 0xb3, 0x92, 0xfa, 0x36, 0x2c, 0x3a, 0x2e, 0x0d, 0xb0, 0xed, 0x94, 0x61, - 0x62, 0xe0, 0x15, 0x40, 0xae, 0xeb, 0x11, 0x40, 0x1e, 0x6d, 0x77, 0x02, - 0x64, 0xab, 0x40, 0x4b, 0x1f, 0x40, 0xf1, 0x1a, 0x76, 0xf0, 0x7f, 0x82, - 0x03, 0x87, 0x43, 0xb2, 0x38, 0xb9, 0x7f, 0xe9, 0x95, 0xa6, 0xcd, 0x3d, - 0xfb, 0xbf, 0xb2, 0x43, 0x0b, 0x95, 0x5d, 0xea, 0x97, 0x7c, 0xa5, 0xaf, - 0x65, 0xda, 0xd8, 0x83, 0x72, 0xa7, 0xb0, 0xeb, 0xc5, 0x03, 0x00, 0xcc, - 0xf5, 0x5a, 0xb3, 0x25, 0x27, 0x45, 0x63, 0x4f, 0x13, 0xc9, 0x0b, 0x62, - 0xee, 0x3a, 0x45, 0x08, 0xe5, 0xd6, 0xbd, 0xf0, 0x41, 0xb2, 0xe8, 0xdf, - 0x8c, 0x08, 0x45, 0x22, 0xe2, 0x49, 0xf9, 0x4c, 0x99, 0xed, 0x18, 0x17, - 0x90, 0x55, 0x78, 0xa5, 0x78, 0x5d, 0x91, 0xb0, 0xa7, 0x5c, 0x5d, 0x2d, - 0xf4, 0xf0, 0x65, 0x3c, 0xdf, 0x53, 0x32, 0xc8, 0x93, 0x9d, 0x09, 0x6c, - 0x2b, 0xdc, 0x10, 0xe2, 0x9b, 0xe3, 0x51, 0x50, 0x46, 0x7c, 0x48, 0x9a, - 0x5d, 0x0c, 0x3c, 0x55, 0x2f, 0xc1, 0x7c, 0xe2, 0x46, 0xc7, 0x5c, 0xc6, - 0x01, 0xd2, 0xaf, 0xdd, 0x44, 0x43, 0x25, 0x5b, 0x0d, 0x3b, 0x28, 0xa6, - 0x76, 0x2f, 0x53, 0x84, 0x77, 0xd6, 0xeb, 0x62, 0x77, 0x6e, 0xd5, 0x92, - 0xe3, 0x3e, 0x34, 0x99, 0xe2, 0x72, 0xa8, 0x93, 0x68, 0xc6, 0xe9, 0xfe, - 0x72, 0x53, 0xab, 0xc3, 0x24, 0x3f, 0xaa, 0x6e, 0x0a, 0x3b, 0xb3, 0x61, - 0xe1, 0x22, 0x41, 0xd8, 0xfb, 0x83, 0x97, 0x41, 0x62, 0x26, 0xdf, 0x89, - 0x1c, 0x16, 0xdd, 0x07, 0x6a, 0xa7, 0x79, 0x02, 0x5f, 0xca, 0x8d, 0x1e, - 0x68, 0xf0, 0x09, 0xc7, 0x57, 0x1d, 0xec, 0xda, 0x56, 0x4d, 0xa2, 0xcc, - 0x51, 0xf5, 0xa7, 0x2c, 0x2c, 0x0c, 0x8a, 0x8a, 0xcb, 0x53, 0xdc, 0x04, - 0x31, 0x70, 0x7c, 0xd2, 0x66, 0xc3, 0x71, 0x5e, 0x00, 0xe5, 0xf6, 0x69, - 0x93, 0x20, 0xb9, 0x6e, 0xfa, 0x2f, 0x9d, 0x35, 0xd2, 0xde, 0x97, 0x63, - 0xe3, 0x7d, 0xf8, 0xcc, 0x1d, 0x99, 0x29, 0x3d, 0x74, 0x3f, 0x59, 0x85, - 0x65, 0xd7, 0xb0, 0xb1, 0xce, 0xd8, 0x2c, 0xc3, 0x67, 0x8f, 0xd4, 0xcd, - 0x8a, 0xd5, 0x0c, 0x3a, 0x5e, 0xf7, 0x16, 0xb0, 0x56, 0x4e, 0x8c, 0xc7, - 0xe7, 0x90, 0x79, 0xb2, 0x18, 0xde, 0x2c, 0xd0, 0x6b, 0x71, 0x6e, 0x98, - 0x16, 0x2a, 0x63, 0x68, 0x8e, 0x63, 0xe8, 0x01, 0xc9, 0x48, 0x7d, 0xa4, - 0x48, 0x69, 0xc4, 0x64, 0x62, 0xdb, 0xb3, 0x04, 0xe0, 0x51, 0x88, 0x42, - 0x25, 0x73, 0xff, 0x8b, 0xa4, 0x42, 0x40, 0x87, 0xfd, 0x63, 0x57, 0x5c, - 0xd1, 0x3c, 0x1e, 0x29, 0x96, 0xc7, 0x2b, 0x96, 0xe9, 0x9b, 0x10, 0x55, - 0x76, 0xc0, 0x5d, 0x68, 0xf2, 0x50, 0x16, 0xd4, 0x98, 0x76, 0xe2, 0x65, - 0xa8, 0x00, 0xc5, 0xeb, 0xf6, 0x6c, 0xec, 0xca, 0x3b, 0x28, 0xbe, 0xd2, - 0x38, 0xe1, 0xbd, 0x81, 0x6a, 0xf9, 0xfd, 0x74, 0xc1, 0x40, 0x86, 0x77, - 0x77, 0x22, 0x90, 0xf8, 0xa6, 0x35, 0x79, 0x99, 0xd2, 0x26, 0xb5, 0xe2, - 0x54, 0x3a, 0x2a, 0xa0, 0x5f, 0x0d, 0xe2, 0x1b, 0x47, 0x35, 0xf5, 0x23, - 0xd3, 0xfb, 0x73, 0xbb, 0x5f, 0xb0, 0xa7, 0xc7, 0x40, 0x04, 0xa1, 0x64, - 0x79, 0x7e, 0x42, 0x64, 0xe0, 0xdb, 0xb0, 0x2c, 0x54, 0xba, 0xcc, 0x39, - 0x5c, 0x13, 0x32, 0x7a, 0xc3, 0x71, 0x11, 0xb9, 0x46, 0x66, 0x2b, 0xda, - 0xa5, 0x80, 0x85, 0x81, 0x5f, 0x80, 0xab, 0x7a, 0x03, 0x0d, 0xa2, 0x3b, - 0xef, 0x82, 0x66, 0x34, 0x39, 0xaa, 0x34, 0x3e, 0xb2, 0xfb, 0x89, 0x9c, - 0x8e, 0xd2, 0x54, 0x66, 0xd7, 0x8c, 0x51, 0xf8, 0x3b, 0xa9, 0xb7, 0xf1, - 0x1e, 0xdb, 0x6f, 0xe7, 0x0b, 0x48, 0x82, 0xa7, 0x37, 0x16, 0xcb, 0x77, - 0x29, 0x10, 0x8f, 0xb3, 0xd5, 0xf0, 0xde, 0x53, 0xa3, 0xc3, 0xb2, 0x44, - 0x63, 0x01, 0x29, 0xd1, 0xfe, 0xae, 0x1c, 0xcd, 0x83, 0xbd, 0xf3, 0x30, - 0xc1, 0x52, 0xdf, 0xee, 0x0e, 0xff, 0xe0, 0x73, 0x1c, 0x2d, 0x57, 0xf4, - 0xf8, 0xbf, 0x74, 0x67, 0x4c, 0xd6, 0x5b, 0x2e, 0xad, 0xf7, 0xc1, 0x9e, - 0xa4, 0x3a, 0xb8, 0x69, 0x38, 0xad, 0x98, 0x2d, 0xed, 0x5b, 0x81, 0x69, - 0x53, 0x80, 0x94, 0xe5, 0x57, 0xaa, 0xec, 0x1b, 0x20, 0x1a, 0x1e, 0x10, - 0x07, 0x64, 0x6d, 0xef, 0x0a, 0xb3, 0xcd, 0xe8, 0xa5, 0xf8, 0x92, 0x4c, - 0xf5, 0xc1, 0xf7, 0xe0, 0x3b, 0xb0, 0x68, 0x65, 0x1f, 0x8b, 0x8c, 0xa3, - 0x70, 0x52, 0xd2, 0xf7, 0x84, 0x3f, 0xb7, 0xee, 0x49, 0xb9, 0x2b, 0x3f, - 0x42, 0x83, 0xf0, 0xd4, 0x5a, 0x99, 0x2e, 0x0b, 0xb1, 0xd1, 0x4b, 0x8d, - 0x5e, 0x8e, 0x7f, 0xb3, 0xed, 0x38, 0x47, 0x30, 0xf5, 0x4f, 0x52, 0x7f, - 0x30, 0x56, 0x1e, 0xd6, 0xf4, 0xe6, 0x57, 0x9c, 0x89, 0x92, 0xda, 0x9d, - 0xe4, 0x17, 0x8e, 0x3f, 0x5a, 0x4b, 0x6c, 0x9c, 0x5f, 0x17, 0x20, 0x36, - 0xc6, 0x77, 0x04, 0x2b, 0x82, 0x09, 0x8b, 0x9e, 0xaa, 0x67, 0x37, 0x84, - 0x1a, 0xba, 0xe9, 0x05, 0x40, 0x17, 0x44, 0x36, 0xed, 0xbf, 0x3c, 0x43, - 0xef, 0x52, 0xca, 0x96, 0xc9, 0xaa, 0x55, 0x58, 0xd4, 0x3c, 0xc5, 0xa7, - 0x5c, 0x9c, 0x3b, 0x68, 0xa5, 0xcd, 0x81, 0x1f, 0xba, 0x6c, 0xa7, 0xf0, - 0x6b, 0x41, 0xe3, 0x98, 0x35, 0x41, 0x8c, 0xa6, 0x30, 0xc4, 0x7a, 0x7d, - 0x9d, 0xdd, 0x28, 0xd1, 0xb1, 0x16, 0xeb, 0xe7, 0x6c, 0x4f, 0xe5, 0x8b, - 0x0a, 0xb5, 0xa9, 0x85, 0xbc, 0xef, 0x3c, 0x66, 0x04, 0x22, 0x1b, 0xd9, - 0xf6, 0xa0, 0xad, 0x5a, 0xa7, 0x99, 0x28, 0x2a, 0x32, 0xd1, 0x6b, 0xd6, - 0x0b, 0x87, 0x9a, 0x90, 0xd9, 0x3a, 0x4c, 0x6a, 0xf3, 0x25, 0x52, 0x6f, - 0x4c, 0xb5, 0x8c, 0x06, 0x93, 0x07, 0x9c, 0xec, 0x42, 0x05, 0x63, 0x64, - 0xd3, 0x1e, 0x25, 0xb5, 0xf0, 0xfc, 0x4a, 0x85, 0xaf, 0xe0, 0xcb, 0x4d, - 0x76, 0x20, 0x93, 0x4d, 0x90, 0x73, 0x19, 0xf2, 0x5f, 0x0e, 0x65, 0xbf, - 0xf7, 0x53, 0x4e, 0x2a, 0xa2, 0xb6, 0x42, 0x72, 0xcd, 0x13, 0xeb, 0x53, - 0xda, 0x34, 0xc2, 0x90, 0xa0, 0xe9, 0x9a, 0x54, 0xb2, 0x70, 0x58, 0x01, - 0xde, 0x21, 0x83, 0x3d, 0x51, 0x9a, 0x43, 0x50, 0x18, 0xe6, 0xd3, 0x2c, - 0xed, 0x65, 0xf8, 0x00, 0xf3, 0x6f, 0x02, 0x13, 0xde, 0xd0, 0x81, 0xb7, - 0x20, 0x18, 0xbe, 0x54, 0x16, 0x81, 0x2c, 0x69, 0x35, 0x57, 0x7f, 0x16, - 0xcd, 0xba, 0xa6, 0xff, 0xca, 0x9c, 0xe6, 0x90, 0x77, 0x3c, 0x73, 0x71, - 0x04, 0x77, 0x8e, 0xc2, 0x73, 0xb7, 0x92, 0x51, 0xb3, 0x12, 0x24, 0xed, - 0xb2, 0x71, 0xb8, 0x12, 0x79, 0x2c, 0xd5, 0x76, 0xfb, 0x44, 0x75, 0x16, - 0x8c, 0xa4, 0x61, 0x91, 0x07, 0xae, 0x7d, 0x86, 0xa6, 0x16, 0x61, 0xa4, - 0x38, 0xb6, 0xfa, 0x96, 0x8d, 0x77, 0xfe, 0x3e, 0x7b, 0x71, 0x84, 0x4c, - 0x1d, 0x0e, 0x9c, 0x34, 0x9a, 0xc1, 0xbf, 0x48, 0xe6, 0xa4, 0x68, 0x29, - 0xe9, 0x91, 0x94, 0x8a, 0x9c, 0xb6, 0xad, 0x14, 0x6f, 0xc0, 0x40, 0x70, - 0x82, 0xe2, 0xa2, 0x17, 0x90, 0x57, 0x16, 0xcb, 0x57, 0x86, 0x13, 0x7f, - 0xbe, 0x0a, 0x8f, 0xe4, 0x88, 0xa1, 0xae, 0x57, 0xd5, 0x6e, 0xfd, 0x83, - 0x48, 0xed, 0x39, 0xc7, 0xad, 0xe0, 0x3b, 0xf8, 0x17, 0x8c, 0x59, 0x28, - 0x65, 0xd5, 0x91, 0xad, 0x7d, 0x92, 0xb3, 0x0b, 0x10, 0x92, 0x06, 0x48, - 0x68, 0x19, 0x80, 0x6a, 0xaa, 0x9d, 0x6c, 0x27, 0x48, 0x37, 0x74, 0x47, - 0xbb, 0xfa, 0x2b, 0x5f, 0xfc, 0x23, 0x72, 0xdd, 0x7a, 0x90, 0x2c, 0x60, - 0x1c, 0x4b, 0x19, 0xb4, 0x31, 0x79, 0x0e, 0x07, 0xce, 0x0b, 0x4f, 0x0f, - 0x83, 0xa4, 0x37, 0x6e, 0xa0, 0xbb, 0x26, 0x3e, 0x07, 0x9a, 0x1b, 0x5f, - 0x49, 0x5f, 0xcf, 0x80, 0x44, 0x16, 0x78, 0x06, 0xec, 0x4f, 0xbd, 0x88, - 0xbd, 0x8a, 0x39, 0x49, 0x1d, 0x24, 0x7e, 0xa5, 0x6d, 0xee, 0x0e, 0x51, - 0x9e, 0xc8, 0xdd, 0xa2, 0xa1, 0x9a, 0xac, 0xde, 0x85, 0x2d, 0xf9, 0x76, - 0x4e, 0x3d, 0xf7, 0x86, 0x57, 0x3a, 0xe3, 0x69, 0xa5, 0x94, 0x0e, 0xec, - 0x2b, 0x90, 0x81, 0x24, 0xf3, 0xdf, 0xdc, 0x18, 0x77, 0xe6, 0x9e, 0x39, - 0xbe, 0x6c, 0x78, 0x7c, 0x76, 0xd8, 0x97, 0x1a, 0xb0, 0xbf, 0x3c, 0xf4, - 0x1d, 0xed, 0xdb, 0x5c, 0x82, 0x99, 0xff, 0x66, 0x6b, 0x14, 0x4d, 0x1e, - 0x15, 0x5c, 0xaa, 0x49, 0x49, 0x1b, 0xa7, 0xf5, 0x3d, 0x2c, 0xf9, 0x9d, - 0x52, 0x3f, 0xcb, 0xa3, 0xef, 0x70, 0xd3, 0x2e, 0x3b, 0x54, 0x80, 0x3e, - 0xe8, 0x28, 0x79, 0x1c, 0x56, 0x9d, 0x7b, 0x34, 0xb3, 0x0a, 0x7a, 0x58, - 0x60, 0x54, 0xc1, 0x33, 0x5f, 0x40, 0x71, 0xe0, 0xe6, 0x7c, 0x18, 0x8e, - 0x33, 0x97, 0x29, 0x01, 0xc8, 0x71, 0xac, 0x7d, 0xb4, 0x5f, 0xa1, 0x88, - 0x4f, 0x33, 0x20, 0x60, 0xfd, 0x7b, 0x00, 0x8f, 0xd9, 0x86, 0x19, 0xc7, - 0x15, 0x95, 0x3e, 0x5f, 0x8c, 0x4f, 0xf5, 0x39, 0xeb, 0x20, 0xbb, 0xda, - 0xb7, 0x79, 0x5c, 0x16, 0x5c, 0x45, 0xb1, 0xf7, 0xf0, 0xfc, 0x0c, 0xaf, - 0x7a, 0xc1, 0x42, 0x79, 0x3c, 0xdf, 0xa2, 0xdb, 0xcf, 0x23, 0xa5, 0x09, - 0xb5, 0x26, 0xe3, 0x10, 0x17, 0xd5, 0x97, 0xfb, 0x09, 0x12, 0x47, 0xd8, - 0x46, 0xdb, 0x14, 0x22, 0x53, 0x50, 0x15, 0x18, 0xb8, 0x1d, 0xb5, 0x64, - 0x6a, 0x63, 0xf4, 0xf9, 0xe9, 0x78, 0x4a, 0x64, 0x2c, 0x26, 0xdc, 0x02, - 0x36, 0xa4, 0xf6, 0x58, 0x52, 0x41, 0xa1, 0xe6, 0x63, 0x1d, 0x45, 0xbd, - 0xe2, 0x73, 0xf2, 0x5f, 0x36, 0x69, 0x53, 0xa3, 0x45, 0x85, 0x58, 0x0b, - 0x76, 0x72, 0xb3, 0x02, 0x06, 0xd7, 0xd2, 0xdf, 0x5f, 0xce, 0xa7, 0x0c, - 0xd9, 0x43, 0x37, 0xce, 0xe1, 0x18, 0x57, 0x4a, 0xcc, 0x37, 0xe3, 0x6e, - 0xb5, 0x54, 0x85, 0x95, 0x1d, 0x47, 0x13, 0x2d, 0xaf, 0x89, 0x06, 0x27, - 0x91, 0xf8, 0x37, 0x5f, 0xeb, 0xe7, 0x6d, 0x89, 0x40, 0xb8, 0x19, 0xac, - 0xcd, 0xa6, 0x5a, 0x09, 0xab, 0x30, 0x64, 0x09, 0x34, 0xa0, 0x21, 0xea, - 0xe4, 0xb6, 0x55, 0xee, 0x5b, 0xc7, 0x3d, 0x6e, 0x2d, 0xd0, 0x66, 0x51, - 0x12, 0xba, 0x5b, 0xd4, 0xc0, 0x9b, 0x9c, 0x70, 0xf1, 0xf3, 0xa4, 0x05, - 0xdf, 0x5d, 0xca, 0xf7, 0x0b, 0x0d, 0xf3, 0xeb, 0xc4, 0xd1, 0xf5, 0xb0, - 0xd6, 0x10, 0xd4, 0xdb, 0x4b, 0xda, 0x69, 0xfe, 0x66, 0x9b, 0xb8, 0x51, - 0x4e, 0x7e, 0x16, 0xd9, 0x46, 0xac, 0xaf, 0x64, 0x2e, 0x69, 0x47, 0xe1, - 0x14, 0x9a, 0x9c, 0xd0, 0x9e, 0x7e, 0x2e, 0x0d, 0x5a, 0x36, 0x89, 0x8f, - 0xe9, 0x81, 0x63, 0x04, 0x02, 0x14, 0x7a, 0x52, 0xf0, 0x9f, 0x9e, 0xe3, - 0x1f, 0x6a, 0x78, 0x9f, 0x96, 0x23, 0x6f, 0xee, 0x26, 0x3b, 0x47, 0x72, - 0xbc, 0x87, 0xd2, 0x35, 0x21, 0xfc, 0x56, 0x55, 0x5d, 0xba, 0xd2, 0x17, - 0x00, 0x71, 0x92, 0x33, 0xf4, 0x42, 0xd0, 0x94, 0xa5, 0xa5, 0x07, 0x24, - 0xaf, 0xb8, 0x58, 0x80, 0xe6, 0x44, 0x22, 0x7f, 0xf0, 0xd1, 0x10, 0x0d, - 0xcc, 0xdd, 0x9e, 0xcb, 0x45, 0x3c, 0x15, 0x26, 0xf8, 0xbf, 0xdc, 0x70, - 0x3d, 0x41, 0x7f, 0xfe, 0x45, 0x01, 0x1c, 0x6e, 0xce, 0xa7, 0xb2, 0x0c, - 0x1f, 0xc6, 0xc5, 0xaf, 0xc8, 0x33, 0x4d, 0x4d, 0x94, 0x81, 0x0f, 0xb1, - 0x88, 0x1c, 0x59, 0xf4, 0x8f, 0xf7, 0x36, 0xf0, 0xef, 0x56, 0x82, 0x23, - 0xed, 0xa4, 0xd9, 0xf3, 0xc7, 0x7a, 0x49, 0xca, 0x06, 0x33, 0xe7, 0xd2, - 0xd3, 0xdd, 0xaf, 0x30, 0x99, 0xab, 0x0b, 0x45, 0xeb, 0xf7, 0x38, 0x32, - 0x8f, 0xb0, 0x7b, 0xe4, 0xf2, 0xfd, 0xce, 0x85, 0xb8, 0x46, 0x69, 0x07, - 0xf7, 0x4b, 0xf8, 0x66, 0x06, 0xa3, 0xff, 0x0e, 0x27, 0xe9, 0xdb, 0x91, - 0x7b, 0x56, 0x49, 0xc7, 0x91, 0x20, 0x15, 0x3e, 0xf4, 0x21, 0x77, 0xae, - 0x6d, 0x38, 0xff, 0x73, 0xac, 0x1d, 0x78, 0x14, 0xe6, 0x3a, 0x14, 0x5f, - 0x5c, 0x1a, 0xb2, 0xb5, 0xa5, 0x63, 0x47, 0x4d, 0x79, 0x52, 0x51, 0x77, - 0x94, 0x79, 0xa9, 0x0c, 0xe7, 0xd2, 0x68, 0x57, 0xf2, 0x79, 0xb7, 0xbf, - 0x1a, 0xc6, 0x1a, 0x6e, 0xce, 0xa4, 0x00, 0xf2, 0x12, 0x0a, 0x57, 0x48, - 0xd8, 0x5d, 0xad, 0x50, 0xd3, 0xba, 0x4c, 0x12, 0xb2, 0xaf, 0x76, 0x84, - 0xa6, 0xf3, 0xa6, 0xff, 0x75, 0xb2, 0x99, 0xa3, 0xaa, 0x82, 0x5b, 0x9d, - 0x79, 0x29, 0xec, 0x24, 0x4e, 0x11, 0x49, 0xf9, 0x79, 0xe8, 0xef, 0x9e, - 0x67, 0xb7, 0xea, 0x29, 0xbf, 0x39, 0x47, 0x3b, 0x10, 0xb6, 0x6f, 0x94, - 0x79, 0x8c, 0x4f, 0xc9, 0x97, 0x73, 0xeb, 0xee, 0xec, 0x26, 0xfa, 0x08, - 0x78, 0x8a, 0xbd, 0xde, 0x46, 0x1f, 0x18, 0xef, 0x3b, 0x77, 0x43, 0xa8, - 0x35, 0x14, 0x14, 0xaf, 0x80, 0x20, 0x19, 0x7d, 0x92, 0x7a, 0x07, 0x1b, - 0x75, 0x14, 0x88, 0xe4, 0xfa, 0xbe, 0x2a, 0x4b, 0x65, 0xc7, 0x7f, 0x6b, - 0x71, 0x60, 0xca, 0x83, 0xe2, 0xd5, 0x6a, 0x2b, 0xfb, 0xf1, 0x8c, 0x09, - 0xfb, 0xfd, 0xd8, 0x6a, 0xe9, 0x68, 0xd5, 0x0e, 0xdd, 0xc0, 0xf2, 0xb4, - 0x68, 0x1f, 0xba, 0x22, 0x0f, 0xdd, 0x8f, 0x7a, 0x4c, 0xe5, 0x6d, 0x39, - 0x32, 0xfc, 0x8e, 0xab, 0x8a, 0xe9, 0x09, 0x18, 0xd0, 0x41, 0xd8, 0x64, - 0x2d, 0x3b, 0xc2, 0x05, 0x16, 0x35, 0x75, 0x66, 0xb9, 0xb8, 0xd0, 0x32, - 0xc6, 0x57, 0xf4, 0x68, 0xef, 0x11, 0xc3, 0x02, 0x9f, 0xa7, 0x25, 0x06, - 0xd1, 0x37, 0x85, 0x66, 0x86, 0x0d, 0x42, 0x0e, 0x3f, 0x10, 0x8f, 0x20, - 0xec, 0xd8, 0x14, 0xa7, 0x37, 0x3e, 0x6b, 0x58, 0x34, 0x2b, 0xc6, 0x7d, - 0xb5, 0xe5, 0x09, 0xb3, 0x47, 0x66, 0x8c, 0x02, 0xf0, 0xe4, 0x09, 0xe2, - 0xa8, 0xe5, 0x26, 0xb4, 0x1c, 0xd6, 0x54, 0x45, 0xe6, 0x0f, 0x84, 0x61, - 0x75, 0x0a, 0x5f, 0xf8, 0x34, 0xe2, 0x68, 0xe4, 0xc6, 0xd8, 0x76, 0xa8, - 0x4c, 0xf4, 0xae, 0x01, 0x13, 0x6c, 0x32, 0x4f, 0xcd, 0x61, 0x0b, 0x61, - 0x6e, 0x6f, 0xb0, 0x3a, 0xb7, 0x17, 0x8c, 0xae, 0xcf, 0x26, 0x55, 0x81, - 0x89, 0xb7, 0x57, 0x2b, 0x88, 0xe9, 0xb0, 0x9c, 0x6a, 0x75, 0xb7, 0x85, - 0xbf, 0x29, 0xb4, 0x77, 0x63, 0x25, 0x53, 0x19, 0x59, 0xd2, 0xba, 0xfc, - 0x9f, 0xf8, 0xdc, 0xbb, 0x6a, 0xf4, 0xc3, 0xdf, 0xf6, 0xd3, 0x5c, 0xf9, - 0xca, 0x23, 0x17, 0xe9, 0x41, 0x2a, 0xbc, 0x70, 0xf8, 0x6f, 0xb6, 0x8a, - 0x2b, 0xd6, 0x2e, 0xaf, 0x24, 0x44, 0xc1, 0xe5, 0x09, 0xd4, 0x9f, 0xc6, - 0xfc, 0x17, 0x7d, 0xe0, 0xdf, 0xad, 0xe4, 0x87, 0x8c, 0x6e, 0x0e, 0xd3, - 0x5c, 0x8c, 0x2e, 0xbb, 0xfb, 0xc9, 0x70, 0x67, 0xb7, 0xa4, 0xe7, 0x6a, - 0xd7, 0x57, 0x19, 0xef, 0x17, 0x40, 0x80, 0x32, 0x08, 0x7e, 0x38, 0xbd, - 0xba, 0xb3, 0x3b, 0xd7, 0xf8, 0xc9, 0x9c, 0x5b, 0x11, 0x1f, 0xc2, 0x60, - 0xe9, 0x3f, 0xd3, 0xeb, 0x8f, 0x84, 0x4a, 0x7a, 0x46, 0x94, 0x70, 0x70, - 0x1c, 0xf7, 0x72, 0x95, 0xd3, 0x15, 0xf9, 0x8c, 0xb0, 0x77, 0xbc, 0x6a, - 0xf5, 0x2d, 0x10, 0x81, 0x8f, 0x53, 0x0c, 0x64, 0x09, 0x0a, 0xd4, 0x4c, - 0x1b, 0x7a, 0x10, 0xb5, 0x17, 0x7e, 0xaf, 0xb9, 0xce, 0x2f, 0xe1, 0x18, - 0x80, 0x62, 0xc7, 0x1e, 0x43, 0xa1, 0x75, 0x19, 0x71, 0x0b, 0x54, 0x05, - 0x28, 0xff, 0x35, 0xf2, 0xac, 0x0d, 0xf7, 0x1a, 0x50, 0x91, 0xe5, 0x4f, - 0x8a, 0x8c, 0x39, 0x32, 0x48, 0xb4, 0x53, 0x54, 0x4f, 0x90, 0xc3, 0xb7, - 0x01, 0xe0, 0x44, 0xc7, 0xda, 0x6d, 0xb8, 0xa5, 0x1a, 0xe3, 0xfe, 0x42, - 0x06, 0xc0, 0x12, 0xa9, 0x09, 0xca, 0x11, 0x00, 0x23, 0xfd, 0xfd, 0xe4, - 0x60, 0x33, 0x08, 0x8d, 0x2e, 0x85, 0x4a, 0xe5, 0x69, 0x10, 0x4f, 0x5f, - 0x21, 0xc1, 0xe4, 0x13, 0x69, 0x19, 0xc3, 0x08, 0x87, 0xf6, 0x85, 0x4d, - 0x54, 0xc9, 0x8e, 0x8e, 0x15, 0xa2, 0xe2, 0xf1, 0xa1, 0x18, 0xb9, 0xd2, - 0x41, 0x3b, 0x46, 0xe5, 0x21, 0x9e, 0x79, 0x6a, 0xbd, 0xc3, 0xcb, 0x09, - 0x41, 0xbc, 0xb5, 0x67, 0x3b, 0x4f, 0x1e, 0x1a, 0xaa, 0x01, 0xcf, 0x57, - 0x54, 0x2d, 0x88, 0x26, 0x78, 0x42, 0xff, 0x25, 0x3f, 0xc3, 0x98, 0x47, - 0x27, 0x74, 0x13, 0xba, 0xa4, 0xb2, 0xae, 0x65, 0x56, 0xe8, 0xe9, 0x94, - 0x02, 0x68, 0x6c, 0x3b, 0x87, 0x98, 0x97, 0x84, 0x0e, 0x63, 0x16, 0x40, - 0x34, 0x27, 0x02, 0x93, 0xe5, 0xa4, 0xd2, 0x60, 0x1d, 0x98, 0x70, 0xf4, - 0xbc, 0x2f, 0xfc, 0x93, 0x5a, 0xa0, 0xd7, 0x04, 0x26, 0xf2, 0x86, 0x47, - 0x7d, 0x47, 0x5a, 0x09, 0x40, 0xb1, 0xac, 0x53, 0x91, 0x1f, 0x06, 0x31, - 0xd6, 0x9a, 0xe4, 0x25, 0xf4, 0xbb, 0x11, 0x9a, 0x98, 0x4a, 0xac, 0x19, - 0x2d, 0x0f, 0xa3, 0xb2, 0x61, 0xf7, 0xaf, 0x10, 0xda, 0x6a, 0xfc, 0xc5, - 0x58, 0x4c, 0x06, 0x53, 0xde, 0xb2, 0xe5, 0x7c, 0x1c, 0xe8, 0xc8, 0xcd, - 0x21, 0xbb, 0x70, 0x56, 0xcf, 0x75, 0x05, 0xe8, 0x31, 0xd6, 0x0b, 0xfa, - 0x11, 0xb4, 0xe8, 0x64, 0xb2, 0xd5, 0x07, 0x84, 0xd7, 0x44, 0xee, 0x86, - 0xf7, 0x7e, 0x21, 0xc0, 0xaa, 0xae, 0xf3, 0xe0, 0xe2, 0x61, 0x74, 0xb6, - 0x4f, 0x4e, 0xdf, 0xd6, 0xff, 0xaa, 0xec, 0x9d, 0xfc, 0x9f, 0x9b, 0x2c, - 0x0d, 0x23, 0x20, 0x7b, 0x8e, 0x8a, 0x49, 0xb1, 0x47, 0x51, 0x6e, 0xf7, - 0x5c, 0x76, 0xaa, 0x5c, 0x8a, 0x8c, 0x1a, 0x06, 0x75, 0x4b, 0xb9, 0xb1, - 0xab, 0x36, 0xd9, 0x6d, 0xb0, 0x8f, 0xd6, 0xd9, 0x91, 0xaa, 0x99, 0xe2, - 0x8e, 0x7d, 0xfe, 0x19, 0x8f, 0xbe, 0x1e, 0xa8, 0x7e, 0x80, 0xe4, 0x37, - 0x36, 0x83, 0xd7, 0x6a, 0xeb, 0xde, 0xd5, 0x46, 0xd8, 0xca, 0x73, 0x5a, - 0xe0, 0x54, 0x26, 0xd9, 0x13, 0xf2, 0x49, 0x77, 0xd8, 0x93, 0x6b, 0x5a, - 0x8c, 0x7b, 0xf3, 0xab, 0x2c, 0x65, 0xd2, 0xd0, 0x76, 0xb0, 0x7a, 0x45, - 0xf8, 0x52, 0x72, 0x8a, 0x18, 0xbe, 0x90, 0xee, 0x9b, 0x48, 0x06, 0xb5, - 0x9e, 0x05, 0x06, 0xba, 0xa4, 0xd5, 0x4d, 0xbf, 0xcc, 0x5d, 0x8d, 0x10, - 0x67, 0x08, 0xff, 0x7e, 0xf1, 0x9a, 0x0f, 0xb8, 0xce, 0xb4, 0xa2, 0xcb, - 0x1e, 0xcf, 0xd2, 0xe5, 0x14, 0xcb, 0x05, 0xd6, 0x08, 0xc4, 0x56, 0x69, - 0xac, 0xf0, 0xb2, 0x0f, 0x49, 0x97, 0x5e, 0xb3, 0xe5, 0x9f, 0xab, 0xf2, - 0x07, 0xb2, 0x08, 0x7c, 0x86, 0x36, 0x07, 0xb8, 0xc3, 0xa2, 0xb3, 0x26, - 0x7c, 0xde, 0x85, 0x25, 0xf0, 0x14, 0x04, 0xc0, 0x87, 0xcb, 0x48, 0xfa, - 0x2f, 0x4c, 0x41, 0xd0, 0x07, 0x4a, 0x83, 0xeb, 0xa3, 0x6a, 0xaa, 0x45, - 0x45, 0x6b, 0x88, 0xcf, 0xaf, 0x98, 0x7e, 0x37, 0x20, 0xe6, 0xcf, 0x11, - 0xb5, 0x39, 0xf8, 0x0f, 0x4d, 0x86, 0x3b, 0x63, 0x98, 0xb3, 0x64, 0x5b, - 0xf3, 0xb0, 0xd1, 0x13, 0x6b, 0xff, 0x7b, 0x8b, 0x84, 0x03, 0xda, 0xa1, - 0x64, 0xe0, 0xa3, 0x36, 0xb2, 0xe4, 0x07, 0xcc, 0xa0, 0xc7, 0x2f, 0xfe, - 0x26, 0x30, 0x86, 0xa6, 0x9e, 0x85, 0x5d, 0x76, 0x4b, 0x8d, 0x32, 0x80, - 0x18, 0x1b, 0x9e, 0xb2, 0x4d, 0x1c, 0x6c, 0xd1, 0x8b, 0x9b, 0x11, 0xab, - 0x53, 0x53, 0x33, 0xd3, 0xa9, 0x2b, 0x09, 0x47, 0xcc, 0x33, 0x52, 0xde, - 0x31, 0x66, 0x16, 0x82, 0x2b, 0xac, 0xb6, 0x3b, 0x5a, 0xae, 0x0e, 0xfd, - 0xb2, 0x05, 0xbd, 0x4f, 0x47, 0x6f, 0x4b, 0xd1, 0x3e, 0xad, 0xae, 0x53, - 0x6e, 0x8f, 0x09, 0x5d, 0x4a, 0xd5, 0xc0, 0x56, 0x94, 0xef, 0x8a, 0x44, - 0x6b, 0xf3, 0x90, 0x7b, 0x96, 0x2a, 0xc0, 0x30, 0xfe, 0xeb, 0x28, 0xea, - 0x8a, 0x0a, 0x7c, 0x03, 0x7a, 0xcd, 0xb4, 0x2a, 0x3b, 0x25, 0x2b, 0x46, - 0x46, 0xad, 0xae, 0x47, 0x50, 0x7c, 0x42, 0xc0, 0xe3, 0x49, 0xba, 0x5d, - 0x7f, 0x7f, 0xc1, 0x1e, 0x05, 0x8c, 0x13, 0xc9, 0x5e, 0x75, 0xad, 0xbc, - 0xf5, 0x27, 0xf7, 0x2c, 0x09, 0xa6, 0x00, 0x75, 0x3b, 0x6c, 0x25, 0x51, - 0x3a, 0xd7, 0x2e, 0x16, 0xc5, 0x1a, 0xc9, 0xc0, 0x14, 0x37, 0x4a, 0x12, - 0x69, 0x99, 0x91, 0x99, 0xef, 0x5a, 0xc8, 0x47, 0xb2, 0xb5, 0x09, 0xb1, - 0xbb, 0xa5, 0xe5, 0x58, 0x36, 0x8e, 0x4c, 0xc5, 0x2f, 0x99, 0x2e, 0x85, - 0xa9, 0xcb, 0xd4, 0x82, 0xce, 0xc6, 0xa2, 0xe6, 0x68, 0xf1, 0xa0, 0xf2, - 0xc1, 0x53, 0xc1, 0x6b, 0x72, 0xe2, 0x11, 0x40, 0xd6, 0x4a, 0x98, 0x8c, - 0x0a, 0xbb, 0x2c, 0xfb, 0xb4, 0xd0, 0x0d, 0x15, 0xe6, 0xe3, 0x2a, 0x91, - 0x39, 0x5c, 0x80, 0x73, 0xa7, 0x58, 0x90, 0xf0, 0x5c, 0x17, 0x3f, 0xe6, - 0x15, 0x88, 0x6b, 0xe4, 0x14, 0x31, 0x4e, 0x20, 0x10, 0x61, 0xad, 0x96, - 0x64, 0x33, 0x9a, 0xd0, 0xe9, 0x7b, 0x2e, 0xab, 0xa3, 0x3b, 0x10, 0x6f, - 0x1e, 0xc4, 0xc4, 0xc9, 0xa6, 0x6b, 0x0d, 0xb7, 0xfc, 0x51, 0xc1, 0x61, - 0x74, 0x6a, 0x3a, 0x43, 0xc4, 0x5c, 0xe4, 0xca, 0xf5, 0x8c, 0x17, 0x20, - 0x1d, 0x0f, 0x4a, 0x6f, 0xd9, 0xf1, 0x6e, 0xc8, 0x2f, 0x92, 0x7f, 0x0f, - 0x26, 0x58, 0x64, 0x97, 0x58, 0x4c, 0x97, 0xfa, 0x26, 0x44, 0x15, 0xd3, - 0xd3, 0x0e, 0xa5, 0x5f, 0xd3, 0xae, 0x89, 0x7b, 0xdf, 0x53, 0xc7, 0x06, - 0xe0, 0xa2, 0xdd, 0xfb, 0x40, 0x17, 0xf7, 0xd1, 0x71, 0x3c, 0x8d, 0x7b, - 0xef, 0x31, 0x73, 0x74, 0x80, 0xab, 0x4d, 0xb1, 0xe7, 0xca, 0xe4, 0x4a, - 0x45, 0x9f, 0xa1, 0x7a, 0x07, 0xee, 0xd6, 0x1d, 0xf1, 0xcc, 0x9e, 0xdd, - 0x45, 0xd0, 0x2b, 0x33, 0x43, 0x52, 0x6c, 0xc7, 0x5e, 0x4c, 0x85, 0xca, - 0x2b, 0x09, 0xd5, 0xc1, 0x78, 0x19, 0x37, 0xe8, 0x61, 0x68, 0x1b, 0x88, - 0x6c, 0xb8, 0x2a, 0x12, 0x20, 0x95, 0x3a, 0xbe, 0x11, 0xde, 0xab, 0x35, - 0x58, 0x8e, 0x21, 0x98, 0x8c, 0x67, 0x6f, 0x0d, 0xe5, 0xfa, 0xe9, 0x54, - 0x0b, 0x5d, 0x21, 0x1a, 0x8d, 0x70, 0xba, 0x67, 0xf7, 0x12, 0xa2, 0xa1, - 0x24, 0x23, 0x52, 0x4e, 0xd3, 0x4e, 0xd6, 0x2b, 0x9e, 0x4a, 0xcd, 0x12, - 0xd6, 0x45, 0xdd, 0x3d, 0xca, 0xb7, 0xda, 0xef, 0x5f, 0xa5, 0xd9, 0xa8, - 0xdd, 0xb6, 0xa7, 0xde, 0xe4, 0xa0, 0x85, 0x16, 0x80, 0x9b, 0xb4, 0x93, - 0x64, 0x71, 0x50, 0x9c, 0x72, 0x04, 0x4f, 0x4d, 0xda, 0xa0, 0x4c, 0x5d, - 0x21, 0xab, 0x32, 0x32, 0x1e, 0x51, 0x25, 0xb4, 0x0c, 0x7b, 0xa8, 0x88, - 0x08, 0xf9, 0xbd, 0x17, 0x91, 0x35, 0x62, 0x7c, 0xf2, 0x71, 0x01, 0xc2, - 0xea, 0xd3, 0x1e, 0xab, 0x62, 0xf1, 0x4b, 0x1d, 0x7d, 0xec, 0xd1, 0x46, - 0x21, 0xf9, 0x44, 0x6c, 0x34, 0x9d, 0x41, 0xb3, 0x53, 0xa7, 0xca, 0x19, - 0x32, 0x26, 0xa9, 0x5f, 0xd8, 0x53, 0x68, 0xe1, 0x92, 0xda, 0x51, 0x6c, - 0x33, 0x49, 0x8b, 0x43, 0x4d, 0xaf, 0x4c, 0xb0, 0xc4, 0xa5, 0x16, 0x30, - 0xa4, 0x06, 0xf7, 0xec, 0xdb, 0xc8, 0xe4, 0x56, 0x35, 0x51, 0x6c, 0xda, - 0x25, 0xa3, 0x3e, 0xc0, 0x34, 0x9e, 0xba, 0x67, 0x1c, 0xff, 0x8e, 0xec, - 0xb7, 0x7c, 0x82, 0x34, 0x3c, 0xf7, 0x8a, 0x96, 0xbe, 0x1f, 0xdd, 0x92, - 0x56, 0x97, 0x57, 0xba, 0x65, 0xb8, 0x68, 0xb6, 0x11, 0xb0, 0x36, 0x29, - 0x71, 0x4d, 0x88, 0x06, 0x2e, 0x42, 0x4d, 0xb2, 0x89, 0x40, 0x83, 0xf9, - 0x76, 0xe2, 0x7d, 0x9a, 0xfa, 0x46, 0x5c, 0x49, 0x41, 0xd8, 0x20, 0xea, - 0x29, 0xd3, 0xea, 0x8b, 0xcc, 0x5e, 0xa5, 0x5f, 0xc7, 0x23, 0x68, 0x75, - 0x57, 0xd8, 0x19, 0x3f, 0x63, 0xec, 0x78, 0x95, 0x1c, 0xa3, 0x8f, 0x7f, - 0x5b, 0xa4, 0x16, 0xcd, 0xae, 0x77, 0x0d, 0xed, 0xb6, 0x43, 0x3d, 0xeb, - 0xc0, 0x2a, 0x0d, 0xfd, 0x54, 0x82, 0x1a, 0x7b, 0x18, 0x39, 0xcb, 0xed, - 0xa7, 0xbb, 0xe6, 0xda, 0x78, 0x1c, 0x26, 0xd2, 0x72, 0x91, 0xd6, 0x73, - 0xe8, 0xef, 0x79, 0x12, 0xed, 0xce, 0x45, 0x74, 0x64, 0x97, 0x9a, 0xc3, - 0x52, 0xf8, 0xd3, 0x58, 0xf4, 0xff, 0x52, 0xe7, 0x1d, 0x4e, 0x00, 0xcf, - 0xdf, 0x28, 0xee, 0x46, 0x18, 0x59, 0xac, 0x22, 0x9c, 0xc9, 0x7c, 0x45, - 0x22, 0xcc, 0x9c, 0xf0, 0x57, 0xfa, 0xe6, 0x34, 0x0b, 0x70, 0xdd, 0x17, - 0x6a, 0x50, 0x47, 0x84, 0x9c, 0x91, 0x4a, 0xc5, 0x87, 0x1a, 0xc3, 0x16, - 0x1f, 0xd4, 0x03, 0x9b, 0xc6, 0x4b, 0x4a, 0x1d, 0x9e, 0x59, 0xf8, 0x62, - 0x48, 0xbd, 0x6b, 0x49, 0xf1, 0x26, 0x5e, 0x6e, 0x98, 0xf6, 0xd0, 0x2c, - 0x21, 0x92, 0x50, 0x1f, 0x4e, 0x0c, 0xb2, 0x79, 0x7a, 0x0b, 0x1e, 0xc4, - 0xcb, 0xab, 0xb4, 0x3c, 0x76, 0x29, 0x74, 0x05, 0x19, 0x0e, 0x40, 0xe3, - 0xad, 0xfa, 0x87, 0x14, 0xbb, 0x68, 0x1e, 0x8f, 0xfb, 0xf2, 0xc4, 0x9c, - 0x9d, 0xce, 0xfb, 0x23, 0xcd, 0x73, 0x0a, 0xf3, 0x16, 0x68, 0xfc, 0x2c, - 0x89, 0x95, 0xc2, 0x10, 0x57, 0x31, 0x30, 0x69, 0x1e, 0x70, 0xa7, 0xe8, - 0x36, 0xc8, 0x86, 0x6c, 0xac, 0xeb, 0x0b, 0x4c, 0x6b, 0xdb, 0xbb, 0x13, - 0x89, 0x6f, 0x6c, 0xa8, 0x6b, 0x62, 0x68, 0x9d, 0x50, 0x0f, 0xfb, 0x83, - 0x9e, 0x06, 0xf8, 0x26, 0xfe, 0xb2, 0xe1, 0x82, 0xc3, 0x01, 0x11, 0xd5, - 0xd5, 0x60, 0xbf, 0xa5, 0x47, 0xd7, 0x3b, 0xc8, 0xbc, 0x78, 0xe3, 0x49, - 0x40, 0x6b, 0x01, 0x9e, 0xe9, 0x92, 0xee, 0x9a, 0xab, 0xe7, 0x3c, 0x49, - 0x49, 0x64, 0xff, 0x9a, 0xc8, 0x1e, 0x0c, 0x3c, 0xa6, 0x2c, 0x7e, 0x48, - 0x52, 0xc5, 0x3c, 0xa9, 0xd0, 0xf2, 0xdc, 0xa0, 0xbf, 0xe2, 0x27, 0x0e, - 0x3b, 0xf4, 0x02, 0x2f, 0x9a, 0x51, 0x15, 0x65, 0x6a, 0x04, 0xe5, 0x11, - 0x7f, 0x21, 0x87, 0x48, 0x41, 0xdc, 0x44, 0x09, 0xc9, 0x52, 0x82, 0xd7, - 0x69, 0x76, 0xec, 0xe8, 0x8a, 0x0b, 0x21, 0xae, 0xb2, 0x5b, 0xfe, 0xbb, - 0xae, 0x25, 0x8e, 0x32, 0x7e, 0x56, 0xd0, 0xfb, 0x93, 0xc4, 0x23, 0xc1, - 0x31, 0xc0, 0x91, 0xe5, 0x24, 0x0b, 0xc3, 0x4e, 0xa7, 0x8f, 0x3e, 0xee, - 0xfb, 0x61, 0xf4, 0xc0, 0x87, 0xd7, 0x30, 0x03, 0xde, 0x2e, 0xf9, 0x2b, - 0xe6, 0xcd, 0x73, 0x36, 0x4a, 0x24, 0x81, 0xc8, 0xa1, 0xec, 0xf4, 0xa1, - 0x5d, 0xad, 0x5f, 0x23, 0x49, 0x56, 0x9d, 0x44, 0x7e, 0xb3, 0x14, 0x4e, - 0x10, 0x49, 0x5b, 0x5f, 0x59, 0xd1, 0x98, 0xf1, 0x78, 0xde, 0x53, 0x17, - 0xe0, 0xb6, 0xff, 0xff, 0x58, 0xb6, 0x29, 0x2c, 0xde, 0xb6, 0xe2, 0x1d, - 0x27, 0xd6, 0xfe, 0xad, 0x26, 0x29, 0x8e, 0x6a, 0x1b, 0x98, 0xfe, 0xf0, - 0x4a, 0xf6, 0x02, 0xc3, 0x17, 0xcb, 0xb8, 0x9f, 0x1a, 0xc0, 0xb0, 0xb4, - 0x92, 0xf6, 0xc7, 0x45, 0xea, 0x61, 0x06, 0xf2, 0x4b, 0x99, 0x57, 0xeb, - 0x1e, 0x43, 0xe1, 0x3d, 0x25, 0x25, 0x08, 0x89, 0x66, 0x2b, 0x13, 0xcf, - 0xa8, 0x84, 0x01, 0x53, 0x2a, 0xf5, 0x1c, 0xca, 0x92, 0x19, 0x10, 0xbb, - 0x68, 0x5c, 0x27, 0x14, 0xe0, 0x45, 0x0b, 0xfd, 0x3f, 0x8f, 0x00, 0x74, - 0x17, 0x53, 0xc4, 0x36, 0x3b, 0x05, 0x61, 0x2d, 0x94, 0xb3, 0x0a, 0x7e, - 0x67, 0x08, 0x65, 0x17, 0xc9, 0x1c, 0xba, 0xd7, 0xc0, 0x74, 0x2c, 0xdd, - 0xe9, 0x51, 0xad, 0x19, 0x5f, 0x2d, 0x52, 0x1a, 0x16, 0x97, 0xd8, 0x85, - 0xb8, 0x92, 0x9c, 0x55, 0x42, 0x18, 0x88, 0x05, 0x18, 0x85, 0x3e, 0xba, - 0xf8, 0xb5, 0x9b, 0x21, 0xd6, 0xfd, 0x86, 0xc7, 0xda, 0x86, 0x4a, 0x0b, - 0xcb, 0xd8, 0xe5, 0x0d, 0xc7, 0xa2, 0xac, 0xb4, 0xa7, 0x04, 0x10, 0x9e, - 0xea, 0x3c, 0xe6, 0xef, 0xe2, 0xb9, 0x04, 0x26, 0xa6, 0x37, 0x0f, 0x8d, - 0xcb, 0x4c, 0xeb, 0x2e, 0x2c, 0xe5, 0x51, 0x09, 0xda, 0xc3, 0xc1, 0x1c, - 0x0a, 0xd6, 0xf2, 0x3f, 0xe9, 0x3a, 0x72, 0xa0, 0x76, 0xda, 0xb8, 0xb9, - 0xe2, 0x62, 0xd1, 0xb3, 0xf7, 0x01, 0xac, 0xca, 0xef, 0x3a, 0x90, 0xfa, - 0x11, 0xd7, 0x35, 0xe3, 0x08, 0x8c, 0x7b, 0xa5, 0xcf, 0xad, 0x36, 0x09, - 0x25, 0xfe, 0x05, 0x65, 0x1e, 0xe1, 0x6e, 0x60, 0xea, 0x4d, 0x40, 0x61, - 0x6d, 0xd3, 0x8c, 0x53, 0x85, 0xb6, 0x4d, 0xc3, 0xca, 0xf3, 0x64, 0x06, - 0x3a, 0x12, 0xf2, 0x72, 0xf3, 0x8c, 0xc3, 0xeb, 0xe7, 0x60, 0x53, 0x8e, - 0xa7, 0x50, 0x41, 0x07, 0xa4, 0x78, 0x3c, 0xf9, 0x84, 0x01, 0x16, 0x74, - 0x22, 0xc0, 0x30, 0x22, 0x64, 0x9f, 0x4a, 0x74, 0xe3, 0x58, 0x77, 0x25, - 0x4c, 0x29, 0x9d, 0x26, 0x4f, 0x5d, 0x89, 0xf3, 0xb8, 0xa3, 0x1c, 0xe6, - 0x90, 0x58, 0x1e, 0x26, 0x1c, 0xfa, 0x44, 0x6b, 0x2a, 0x49, 0x76, 0x7f, - 0xbb, 0xbf, 0x81, 0xd8, 0x70, 0x32, 0xb4, 0xb9, 0x8b, 0x1e, 0x59, 0xa9, - 0xb9, 0x8b, 0x6b, 0x8b, 0x08, 0x5c, 0x07, 0xa6, 0x22, 0x48, 0x1a, 0xf8, - 0x48, 0xf0, 0xb9, 0x48, 0xa8, 0xb1, 0xdd, 0xdc, 0xdb, 0x9d, 0xf1, 0x35, - 0x31, 0x61, 0x8b, 0xe4, 0x53, 0xd3, 0xe9, 0xe8, 0xf1, 0xf4, 0x08, 0xde, - 0x26, 0x30, 0xfa, 0x77, 0x2b, 0x7c, 0x35, 0x2d, 0x43, 0xd3, 0x9e, 0xee, - 0x13, 0x5d, 0x1a, 0x52, 0xba, 0x7d, 0x1c, 0xde, 0x6a, 0x81, 0xbc, 0xeb, - 0xe5, 0xe1, 0x8e, 0xca, 0x72, 0x7e, 0xad, 0xce, 0xf0, 0x46, 0x3d, 0xf4, - 0x70, 0x20, 0x68, 0xe1, 0x5b, 0x4d, 0x02, 0xd4, 0xb1, 0x4c, 0xe5, 0x06, - 0xc9, 0xa9, 0x10, 0x86, 0x1f, 0x17, 0x37, 0xf5, 0x9d, 0xeb, 0x89, 0x79, - 0xc0, 0x96, 0x67, 0xa9, 0x50, 0x72, 0x2b, 0x34, 0xc5, 0x5d, 0x69, 0x11, - 0x15, 0xd1, 0xab, 0x24, 0x65, 0xfd, 0xd3, 0x65, 0x2f, 0x98, 0xc2, 0x00, - 0x10, 0x34, 0x4f, 0xc8, 0x49, 0xb0, 0x80, 0xdc, 0x2d, 0x70, 0xf7, 0x7e, - 0x7e, 0x8e, 0x69, 0xaa, 0x14, 0x4b, 0xd4, 0x5a, 0x8a, 0x0d, 0xa9, 0x38, - 0xdb, 0x2b, 0x4e, 0x3b, 0x35, 0x28, 0x04, 0xbb, 0x0e, 0x39, 0xd0, 0x57, - 0x00, 0x59, 0x8a, 0xd6, 0x7d, 0x4c, 0x18, 0x89, 0x84, 0x43, 0x75, 0xc7, - 0x03, 0x01, 0x9e, 0xe7, 0x8d, 0x42, 0x9f, 0xc5, 0xe1, 0x45, 0x8a, 0x06, - 0x94, 0x50, 0x29, 0x81, 0x73, 0x16, 0x9e, 0x1e, 0x37, 0x88, 0x0a, 0x9b, - 0x8a, 0x92, 0xe9, 0xa8, 0xc7, 0xc4, 0xbb, 0x1f, 0xf0, 0x5a, 0xa6, 0xb7, - 0x54, 0x52, 0x04, 0xdf, 0x2f, 0x05, 0x39, 0x88, 0x27, 0xad, 0x1a, 0xd3, - 0x87, 0x04, 0x1c, 0x0d, 0x8d, 0x70, 0xe3, 0x77, 0xf9, 0x16, 0xad, 0x92, - 0x7c, 0x09, 0x87, 0x90, 0x71, 0x7d, 0x7e, 0x1d, 0x8c, 0xb2, 0x9c, 0x33, - 0x3f, 0xe5, 0xd2, 0xef, 0xda, 0xf4, 0x3d, 0x66, 0x2b, 0x86, 0x9f, 0x92, - 0x40, 0x75, 0x61, 0x4b, 0xd1, 0xf8, 0xd7, 0xd2, 0x42, 0xaa, 0x31, 0x84, - 0x9a, 0x0c, 0xb7, 0xeb, 0x77, 0x2d, 0xf6, 0x6d, 0xd7, 0xe2, 0x3c, 0x7a, - 0x2e, 0xda, 0xab, 0x09, 0xd6, 0xce, 0x12, 0x19, 0x68, 0xdc, 0x48, 0x6b, - 0xfc, 0x4e, 0x3f, 0x43, 0x8b, 0xdb, 0x77, 0xf4, 0x98, 0x8f, 0xf6, 0xa1, - 0x46, 0xb0, 0xae, 0x33, 0xf2, 0xd9, 0xf4, 0x88, 0xc9, 0x80, 0xc8, 0x3d, - 0x56, 0xed, 0x31, 0x2d, 0x95, 0x37, 0x76, 0xa1, 0x2d, 0x2c, 0xa3, 0xcd, - 0x9d, 0x28, 0x06, 0xd7, 0x98, 0x1d, 0x02, 0xad, 0xab, 0x3f, 0x7f, 0xd1, - 0xa0, 0x46, 0x8d, 0xa0, 0x18, 0x40, 0x35, 0x2d, 0xe1, 0x90, 0x3a, 0x89, - 0xb6, 0x36, 0x09, 0x06, 0x14, 0x1c, 0x0b, 0x3a, 0x8c, 0xa2, 0x86, 0xb3, - 0xa0, 0xe6, 0x27, 0x59, 0xe2, 0xbb, 0xad, 0x7d, 0x42, 0x08, 0x29, 0x62, - 0x0e, 0x44, 0x98, 0x53, 0xfe, 0x14, 0x2b, 0xd3, 0xb1, 0x10, 0x79, 0xb2, - 0xcc, 0x13, 0x01, 0x65, 0x25, 0x9e, 0x10, 0x1b, 0x46, 0x95, 0xf6, 0xe6, - 0x76, 0xa1, 0x71, 0x8a, 0xa9, 0x88, 0x46, 0x42, 0x0b, 0xca, 0x3c, 0x3c, - 0x9c, 0xbf, 0x5f, 0xa0, 0xfa, 0xb3, 0x5b, 0x08, 0x02, 0x67, 0x91, 0xfd, - 0x00, 0x01, 0xf9, 0x20, 0x87, 0x2a, 0x0a, 0x79, 0x3d, 0x86, 0x27, 0x83, - 0x42, 0x23, 0xc2, 0xd1, 0x4c, 0x7e, 0xb0, 0x4f, 0x89, 0xd5, 0x12, 0x45, - 0x68, 0x5f, 0xe5, 0xf6, 0x15, 0xe6, 0x8f, 0x1b, 0xc7, 0xfd, 0x8f, 0x4d, - 0x4f, 0x8f, 0x6b, 0x84, 0xdc, 0x3e, 0x3a, 0xb1, 0x37, 0xd4, 0x8c, 0xe8, - 0x22, 0x88, 0x7e, 0x25, 0x89, 0x61, 0x9c, 0x7b, 0x29, 0x32, 0xf4, 0x39, - 0x36, 0x91, 0xe7, 0x6f, 0xb0, 0x6f, 0xcb, 0x23, 0xd1, 0x27, 0xe8, 0x8d, - 0xa1, 0x96, 0x4c, 0xca, 0x31, 0x99, 0x92, 0x86, 0xe0, 0x72, 0xc4, 0xd4, - 0x1b, 0x1b, 0xdf, 0xe2, 0xe7, 0x1e, 0x45, 0x79, 0xae, 0x32, 0xff, 0x3a, - 0x8c, 0xb9, 0x88, 0x8b, 0xcd, 0xd3, 0xa3, 0x53, 0xe3, 0xdb, 0x4a, 0x35, - 0xe4, 0xfc, 0xb1, 0x74, 0xd8, 0xdf, 0xb2, 0xf2, 0xac, 0xfe, 0x40, 0xc0, - 0x12, 0x82, 0x58, 0x0c, 0x21, 0x6b, 0x31, 0xd0, 0xa3, 0xb3, 0x97, 0x87, - 0x8b, 0x7c, 0xdd, 0x58, 0xc0, 0xa8, 0x78, 0xb0, 0xc4, 0x36, 0x21, 0x4a, - 0xa6, 0xd5, 0xe5, 0x2c, 0xb0, 0xba, 0x2f, 0x98, 0x6b, 0xad, 0xfb, 0x77, - 0x9d, 0x2f, 0x63, 0x75, 0xe5, 0x02, 0xfb, 0xf4, 0x88, 0xd6, 0x89, 0x02, - 0x9b, 0x74, 0xd2, 0x63, 0x14, 0x3a, 0x7c, 0xb7, 0x70, 0xc1, 0x40, 0x21, - 0xa2, 0x76, 0x94, 0x31, 0x81, 0x60, 0x35, 0x61, 0x0e, 0xe0, 0x28, 0x2a, - 0xfe, 0xdb, 0xde, 0xe3, 0xda, 0xc0, 0x45, 0xfd, 0x7a, 0xcf, 0xdd, 0xaf, - 0x4b, 0x76, 0x78, 0x0f, 0xd7, 0xea, 0x3b, 0x52, 0x77, 0x80, 0xb6, 0x66, - 0x9c, 0xfe, 0x67, 0xce, 0xb5, 0x0a, 0xee, 0x75, 0x51, 0x67, 0xa1, 0x87, - 0xf9, 0xbf, 0x0e, 0xa7, 0x5d, 0xb6, 0x41, 0xc5, 0x4f, 0xd7, 0x18, 0xea, - 0xf4, 0x85, 0x44, 0x99, 0xef, 0xe4, 0x16, 0x20, 0xa2, 0x50, 0xc8, 0x12, - 0xe2, 0x16, 0xe7, 0x0c, 0xc0, 0x06, 0x26, 0x1b, 0x54, 0x8e, 0xc6, 0xab, - 0x6a, 0x9c, 0x6b, 0x58, 0xd6, 0x71, 0x45, 0x2c, 0xaa, 0xf4, 0xa6, 0xe7, - 0x86, 0xeb, 0xfb, 0x5c, 0x22, 0xfd, 0x16, 0xa8, 0x17, 0x36, 0x7d, 0x41, - 0xd2, 0xa0, 0x8a, 0x4a, 0xf0, 0x2d, 0x4c, 0xf1, 0xf7, 0x23, 0xe9, 0xd3, - 0x0f, 0x84, 0x9c, 0xf6, 0xf7, 0x3e, 0xac, 0xb7, 0x7d, 0x5d, 0x54, 0x09, - 0x54, 0x08, 0x89, 0x10, 0x2a, 0xd1, 0xa7, 0x11, 0x9f, 0x82, 0x63, 0x75, - 0x52, 0x17, 0xa5, 0x86, 0x62, 0x2a, 0x14, 0x54, 0x67, 0x29, 0x09, 0xf5, - 0x07, 0xec, 0x00, 0x25, 0xc4, 0x47, 0x63, 0x02, 0x96, 0x0a, 0x99, 0x9a, - 0x67, 0xb3, 0xe5, 0xbe, 0x71, 0x95, 0x1c, 0x99, 0x3f, 0x75, 0xf4, 0xa4, - 0x4b, 0x00, 0xff, 0x7c, 0x26, 0xcb, 0x6c, 0xce, 0x24, 0xd8, 0x2e, 0xf6, - 0x25, 0x76, 0x7c, 0xd9, 0x30, 0xbc, 0xe6, 0x60, 0xfc, 0x2c, 0x31, 0x03, - 0x88, 0x42, 0x17, 0x8a, 0xdf, 0x79, 0xbc, 0x76, 0xc7, 0x65, 0xab, 0x42, - 0xbf, 0x0d, 0xd2, 0x37, 0xfa, 0x85, 0xa7, 0x8f, 0x8d, 0xd0, 0xe9, 0x69, - 0xa9, 0x54, 0x22, 0xdc, 0xe5, 0x61, 0xdf, 0xf4, 0x4b, 0xcd, 0xe8, 0x5f, - 0x2e, 0x01, 0xd5, 0x14, 0x9f, 0x98, 0xb3, 0xe5, 0x47, 0x4f, 0xf5, 0xbd, - 0xd2, 0xba, 0xc5, 0x1c, 0xa2, 0xf5, 0xe4, 0x97, 0x3d, 0x37, 0x7b, 0x12, - 0xc5, 0x61, 0xc2, 0xf8, 0x89, 0x41, 0xe1, 0x28, 0xdd, 0x79, 0x88, 0x21, - 0xa3, 0x04, 0x97, 0xfe, 0x80, 0x75, 0xbf, 0x8a, 0xce, 0x37, 0x5b, 0x1b, - 0x51, 0xab, 0x46, 0x7a, 0x3b, 0x1c, 0x11, 0x79, 0xcf, 0x0d, 0x12, 0x8a, - 0xe4, 0xd9, 0xc0, 0xe6, 0x7c, 0xfd, 0xc1, 0xd5, 0x23, 0x95, 0xf8, 0x5f, - 0x1e, 0xe0, 0x78, 0x1d, 0x75, 0xa4, 0x5d, 0xd7, 0xd7, 0x3d, 0xaf, 0x5a, - 0x01, 0xe1, 0x00, 0x3b, 0xba, 0xed, 0xbc, 0x31, 0xbd, 0x7c, 0xe1, 0xf0, - 0xd3, 0xa4, 0xa9, 0x68, 0xd3, 0x24, 0x9d, 0xb8, 0xe4, 0xa1, 0x0c, 0x13, - 0x7f, 0x9f, 0xf6, 0x95, 0xdb, 0xee, 0x3a, 0x18, 0x7f, 0x25, 0x99, 0x8f, - 0x41, 0x70, 0x7f, 0x8d, 0x83, 0xe6, 0x10, 0x55, 0x67, 0x86, 0x21, 0x3d, - 0xbe, 0x4d, 0x6a, 0x2e, 0x43, 0xfb, 0x93, 0x41, 0x38, 0x72, 0xb8, 0xf2, - 0x95, 0xbf, 0xb0, 0xfe, 0x4f, 0xba, 0x0a, 0x79, 0x1b, 0x57, 0xe0, 0xec, - 0x51, 0x6c, 0x91, 0x0a, 0x7b, 0x09, 0xc5, 0x6f, 0x06, 0x37, 0x1d, 0x5e, - 0xf6, 0xb6, 0x8d, 0xcc, 0x77, 0xc5, 0x17, 0xbd, 0xdd, 0x93, 0x6e, 0x8c, - 0x14, 0x6a, 0xc3, 0x3b, 0xfd, 0x27, 0x08, 0x0e, 0x56, 0x3b, 0x9d, 0x2d, - 0x27, 0x6a, 0x55, 0x65, 0xaa, 0xbf, 0x8f, 0x96, 0xb3, 0xea, 0x97, 0x13, - 0x19, 0xef, 0x0e, 0xc7, 0x3b, 0x35, 0xd2, 0x8b, 0x49, 0xb2, 0x3a, 0x67, - 0xbe, 0xa3, 0xd5, 0xe8, 0xd5, 0xfa, 0x89, 0x25, 0xb4, 0x9c, 0x74, 0xb8, - 0x29, 0xe4, 0x82, 0x7b, 0x11, 0xd9, 0x1f, 0x58, 0xe1, 0x23, 0xe9, 0x16, - 0x40, 0xd5, 0xeb, 0x38, 0x7a, 0x3d, 0xd4, 0x65, 0x86, 0xa0, 0x45, 0x53, - 0x68, 0x96, 0x13, 0x59, 0x9e, 0x35, 0x46, 0x43, 0xc5, 0xe0, 0xae, 0x4a, - 0x3b, 0x33, 0x52, 0x63, 0x3c, 0x1c, 0x8b, 0x9b, 0xa5, 0x37, 0xd5, 0x1f, - 0x71, 0x1f, 0xc9, 0x56, 0x83, 0x4a, 0xa9, 0x76, 0x57, 0x49, 0xa9, 0x26, - 0x73, 0xfb, 0x4c, 0x93, 0x33, 0xd9, 0x7a, 0x0e, 0x60, 0x74, 0x5a, 0x87, - 0x5c, 0xe4, 0x4d, 0xf4, 0x76, 0xec, 0x00, 0xf8, 0x85, 0xef, 0x37, 0x90, - 0x49, 0x35, 0x17, 0x2b, 0xb8, 0xcc, 0xee, 0x1f, 0x2c, 0x90, 0xbc, 0x86, - 0xf6, 0x4f, 0xf9, 0x5c, 0x01, 0x16, 0x94, 0x04, 0xf3, 0xda, 0x13, 0xbb, - 0x9c, 0x39, 0x18, 0xc9, 0x2f, 0x87, 0x67, 0x68, 0xec, 0x27, 0x0c, 0xb8, - 0x86, 0x85, 0xc2, 0x64, 0x0d, 0x4b, 0xf2, 0x0e, 0xdf, 0x30, 0xce, 0xe9, - 0x2c, 0x91, 0x12, 0x74, 0xfc, 0x1e, 0x76, 0x84, 0x6c, 0xc1, 0x98, 0x11, - 0x03, 0x60, 0xa8, 0x0a, 0x2e, 0xc8, 0x1b, 0x02, 0xd4, 0x97, 0xdd, 0x49, - 0xc6, 0xd0, 0x6d, 0xd0, 0x1e, 0xdf, 0xd2, 0x54, 0xe3, 0x67, 0xe8, 0x37, - 0xf8, 0x57, 0x1d, 0x85, 0x60, 0x2f, 0x84, 0xa0, 0x4d, 0xb5, 0xe6, 0xd7, - 0x66, 0x2b, 0x53, 0xa5, 0x02, 0x52, 0x1f, 0x96, 0xf9, 0xb4, 0x11, 0x5b, - 0xf8, 0x85, 0x57, 0x21, 0x48, 0x28, 0x02, 0x88, 0xf9, 0x62, 0xbc, 0x36, - 0x47, 0x44, 0xf8, 0x33, 0xda, 0x54, 0x84, 0xb0, 0x1f, 0x45, 0xc5, 0x3e, - 0x8d, 0xe1, 0xc5, 0x25, 0x6f, 0x91, 0x34, 0xf5, 0xef, 0xf2, 0xe7, 0x2d, - 0x05, 0xc7, 0x6d, 0x96, 0xd3, 0x2e, 0x0e, 0xac, 0x48, 0xc6, 0x86, 0x8f, - 0x14, 0x42, 0x7c, 0x60, 0x63, 0xdc, 0x0d, 0x6e, 0xb4, 0x3a, 0x6a, 0x80, - 0x5f, 0x96, 0x43, 0xdd, 0xc5, 0x5c, 0x84, 0xce, 0x1b, 0x45, 0x1e, 0x24, - 0x04, 0xda, 0x48, 0x1e, 0x0b, 0xa3, 0x1b, 0xe2, 0xc6, 0x45, 0x45, 0x1d, - 0xfb, 0x6d, 0xf0, 0xd4, 0x28, 0x50, 0x98, 0xa0, 0x29, 0xc3, 0x00, 0x0e, - 0xe7, 0x3f, 0x35, 0x20, 0x2a, 0x2c, 0x87, 0xde, 0x59, 0x47, 0x4c, 0x2b, - 0xfc, 0xf4, 0x33, 0x32, 0x24, 0xa5, 0xc1, 0xf3, 0xc0, 0x89, 0x62, 0x21, - 0x16, 0xbd, 0xdc, 0x2b, 0xef, 0x3f, 0xb0, 0x4e, 0x5a, 0x40, 0x06, 0x9b, - 0x96, 0x7a, 0x81, 0x07, 0xd6, 0x68, 0x2e, 0xa8, 0xcf, 0x8c, 0xd7, 0xc9, - 0x21, 0xb9, 0xc4, 0x61, 0x02, 0xfa, 0x0b, 0xdc, 0x28, 0x7e, 0x45, 0xa1, - 0xbd, 0x78, 0x92, 0x0f, 0xba, 0x23, 0x88, 0x4e, 0x6b, 0xc3, 0x7e, 0x95, - 0x31, 0x52, 0x2d, 0xd7, 0x89, 0x5a, 0x79, 0xff, 0x18, 0x5d, 0xc4, 0xf5, - 0x4f, 0x7b, 0xb6, 0x87, 0x6a, 0xfd, 0x4d, 0xaa, 0x19, 0xc3, 0x85, 0x7a, - 0x08, 0x8f, 0x03, 0x8b, 0x88, 0xa8, 0x2c, 0xf9, 0x21, 0x6d, 0x14, 0x1d, - 0xf0, 0xc2, 0x73, 0x13, 0x11, 0x1b, 0x74, 0x9b, 0x34, 0x77, 0x04, 0xab, - 0x0a, 0x66, 0x67, 0xef, 0x03, 0x76, 0xc5, 0x0e, 0xf1, 0x2f, 0x2f, 0x5d, - 0x7b, 0xaa, 0x67, 0x27, 0xa6, 0x41, 0x85, 0xf5, 0xef, 0x12, 0x84, 0x68, - 0x04, 0x77, 0x7f, 0xc2, 0xeb, 0x02, 0xc5, 0x42, 0x91, 0xeb, 0xe6, 0x1d, - 0x84, 0x43, 0xa1, 0x7a, 0x13, 0x95, 0xab, 0x7d, 0x23, 0x9d, 0xf1, 0xd3, - 0x24, 0x0c, 0x57, 0x4f, 0xfc, 0x22, 0xe6, 0xe7, 0x4d, 0x97, 0xb9, 0xa1, - 0xda, 0x83, 0x0c, 0xba, 0x01, 0xd5, 0x95, 0x0d, 0x81, 0xc8, 0x66, 0x80, - 0xcf, 0x6d, 0x54, 0x59, 0x53, 0xff, 0x63, 0xf5, 0xae, 0xb6, 0xad, 0x02, - 0x6b, 0xc8, 0x9a, 0x24, 0x8f, 0x5c, 0x3c, 0xc3, 0xc5, 0x7c, 0x9e, 0x11, - 0xeb, 0xdc, 0x78, 0x36, 0x9b, 0x03, 0xd3, 0xf5, 0x9e, 0x97, 0x01, 0x01, - 0x8a, 0xa6, 0x56, 0xb9, 0x70, 0xdb, 0xfc, 0xad, 0x94, 0x4d, 0xe9, 0xce, - 0x72, 0x5a, 0x7a, 0xb7, 0xf4, 0x7c, 0xe0, 0x9a, 0xd1, 0xeb, 0x38, 0xf1, - 0x54, 0xa7, 0x40, 0xe0, 0x99, 0xd6, 0x14, 0x91, 0xb5, 0xf8, 0x43, 0xcb, - 0xf6, 0x4c, 0xa2, 0x18, 0x7b, 0xe8, 0xcc, 0x78, 0xca, 0x64, 0xe3, 0x2e, - 0xeb, 0xee, 0x09, 0x9c, 0x0d, 0x76, 0x23, 0xa3, 0x8e, 0x11, 0x1c, 0x41, - 0x94, 0xd2, 0xce, 0x06, 0x49, 0x6f, 0x8b, 0xef, 0xd5, 0x86, 0x97, 0x50, - 0x9f, 0xd1, 0xa9, 0x01, 0x9b, 0xf5, 0x40, 0x1a, 0xd5, 0xdc, 0x26, 0xa1, - 0x8e, 0x53, 0x2e, 0x05, 0xfa, 0x33, 0x93, 0xec, 0x09, 0x5f, 0x35, 0xc3, - 0x5e, 0x48, 0x62, 0x03, 0x2a, 0xca, 0x6e, 0x2b, 0x94, 0xb5, 0xe8, 0xaa, - 0x91, 0xe3, 0x99, 0x83, 0xc3, 0xe3, 0x40, 0xd9, 0xe7, 0x1b, 0x51, 0xa7, - 0xfc, 0x83, 0x6d, 0x4d, 0x65, 0x19, 0xc9, 0xb3, 0x93, 0x8e, 0x18, 0xea, - 0xa1, 0x75, 0x15, 0x91, 0xa0, 0xa0, 0xdb, 0x26, 0x45, 0xcd, 0x38, 0x0a, - 0x13, 0x2b, 0x10, 0x7b, 0x42, 0x9a, 0x81, 0x40, 0xed, 0x4c, 0xb1, 0xcf, - 0xed, 0xdf, 0x55, 0x33, 0x47, 0xa4, 0x2b, 0x44, 0xe4, 0x73, 0x79, 0xdc, - 0x69, 0xb5, 0xb6, 0x3c, 0x57, 0xca, 0xa3, 0x42, 0x7a, 0x63, 0x5b, 0x6b, - 0xb0, 0xa1, 0xa8, 0x2d, 0xf1, 0x3e, 0x99, 0xa1, 0x03, 0xeb, 0x89, 0x57, - 0xf5, 0xaf, 0x5f, 0xf8, 0xd7, 0x21, 0xd3, 0xcb, 0x66, 0xa5, 0x26, 0x9d, - 0xd7, 0x86, 0x8e, 0xa5, 0x2e, 0x3f, 0x1b, 0xef, 0xb7, 0x78, 0x57, 0x35, - 0xca, 0x5f, 0x4b, 0xe3, 0xd4, 0xdd, 0x2a, 0xae, 0xa9, 0xf1, 0xe7, 0x8d, - 0x54, 0x2f, 0xba, 0x37, 0xcb, 0xc1, 0xd5, 0xc6, 0x6d, 0x0a, 0x6b, 0x08, - 0x57, 0x21, 0x84, 0x2f, 0xfe, 0x2c, 0x13, 0xfb, 0x13, 0x56, 0x67, 0xe1, - 0x85, 0x6f, 0xcc, 0x57, 0xd2, 0x78, 0x4f, 0x55, 0x03, 0xf0, 0xe3, 0xd9, - 0xf7, 0xcb, 0x95, 0x89, 0xa6, 0xc0, 0x17, 0x6b, 0x4e, 0x6f, 0x9d, 0x23, - 0x30, 0x19, 0xda, 0x70, 0xd2, 0x7b, 0xdf, 0x3f, 0x93, 0xa5, 0x09, 0x7d, - 0xbc, 0x9b, 0xc7, 0xea, 0x54, 0xe4, 0xaf, 0x7c, 0x96, 0x0e, 0x26, 0x61, - 0xff, 0xd8, 0x3b, 0x6c, 0x37, 0xfd, 0x1e, 0xea, 0xdd, 0xd7, 0x43, 0xf9, - 0x1a, 0x6b, 0x1c, 0xa0, 0xfd, 0xf3, 0x14, 0xe9, 0xd1, 0x7d, 0xf8, 0x04, - 0xc5, 0x53, 0xe5, 0x14, 0x2c, 0x5c, 0xb4, 0x25, 0x2c, 0xf5, 0xab, 0x95, - 0xd8, 0xcc, 0xfb, 0x32, 0x6a, 0x48, 0xdb, 0x69, 0x41, 0xec, 0xa9, 0xb3, - 0x6c, 0xe7, 0xce, 0x0f, 0xbb, 0x70, 0x69, 0xba, 0x24, 0x9e, 0x32, 0xd6, - 0x78, 0x65, 0xd1, 0xe4, 0x25, 0x45, 0xb1, 0x87, 0x34, 0x82, 0xd9, 0x21, - 0xa1, 0x09, 0xcb, 0x5e, 0x18, 0xb8, 0x93, 0xa6, 0x37, 0xa3, 0x1b, 0xfa, - 0x8c, 0x7f, 0xec, 0xf5, 0x11, 0xaf, 0x17, 0xa0, 0xec, 0x0d, 0x62, 0xec, - 0x12, 0xc2, 0x30, 0xb1, 0xc2, 0x74, 0xe5, 0xb4, 0xdc, 0x5b, 0xe7, 0x4e, - 0x4b, 0xb9, 0xef, 0x35, 0xa0, 0x29, 0xc8, 0x8e, 0x88, 0xbb, 0x1c, 0x3f, - 0xf8, 0x8d, 0x23, 0xa0, 0xc3, 0x7a, 0x30, 0x45, 0x11, 0xf1, 0xcf, 0x58, - 0x43, 0xa3, 0x7b, 0x67, 0x98, 0x56, 0x11, 0x50, 0x78, 0x9a, 0xa3, 0x5a, - 0xe2, 0x94, 0xb9, 0x4f, 0x9d, 0x24, 0xfb, 0x9c, 0x5c, 0x98, 0xaa, 0x05, - 0x64, 0xe1, 0x05, 0x23, 0xeb, 0x56, 0x26, 0xbb, 0x28, 0x10, 0x37, 0x02, - 0x97, 0x9e, 0x55, 0xd4, 0x71, 0x1b, 0x68, 0xdc, 0x67, 0xc5, 0x33, 0x60, - 0xfc, 0xc2, 0x6d, 0x52, 0xff, 0xe8, 0x39, 0x16, 0xce, 0xeb, 0x64, 0x90, - 0xac, 0x79, 0xde, 0xac, 0x27, 0xff, 0x61, 0xe9, 0xf1, 0x87, 0x15, 0x9c, - 0xd2, 0xa7, 0x52, 0x75, 0x60, 0x6c, 0x67, 0x16, 0xf2, 0xc8, 0x48, 0x52, - 0x7a, 0x25, 0x5d, 0x64, 0xf0, 0x39, 0xaa, 0xa3, 0xf9, 0xa0, 0x1e, 0x52, - 0x88, 0xfe, 0x50, 0xb8, 0x97, 0x62, 0x01, 0x05, 0xbd, 0xd6, 0x2e, 0xbb, - 0x48, 0xb1, 0xf0, 0x9f, 0x71, 0x99, 0x27, 0x28, 0x64, 0x57, 0xa9, 0xa8, - 0xfc, 0x4f, 0xbf, 0xe4, 0xb0, 0xb0, 0x94, 0x0e, 0xee, 0xe2, 0xf6, 0x2a, - 0x7b, 0x57, 0x9f, 0x0b, 0x54, 0xc9, 0x2f, 0xc8, 0x5f, 0xc0, 0x94, 0xb7, - 0x42, 0x6d, 0x3b, 0x6a, 0xff, 0xe7, 0x88, 0x62, 0xc5, 0xca, 0x33, 0x3b, - 0xbc, 0x1c, 0x79, 0x1a, 0x6f, 0x31, 0x48, 0xf9, 0x63, 0x36, 0x70, 0x56, - 0xd7, 0xca, 0x68, 0xff, 0xe9, 0x03, 0xae, 0x5f, 0x83, 0x06, 0xa1, 0xed, - 0x3a, 0xe3, 0xe2, 0x3a, 0x8b, 0x2b, 0xfb, 0x39, 0x63, 0x8a, 0xb1, 0x59, - 0x64, 0xdd, 0x9f, 0x11, 0xdc, 0xd5, 0x6d, 0xf1, 0x06, 0x70, 0xfe, 0xe6, - 0xb4, 0xa6, 0x7c, 0xd8, 0xb3, 0x10, 0x41, 0x21, 0x1d, 0xdb, 0xdc, 0x16, - 0x36, 0x39, 0xc9, 0x69, 0x98, 0x32, 0x7f, 0x13, 0x56, 0x90, 0x74, 0x37, - 0x77, 0xa8, 0x53, 0xdb, 0x4b, 0x6a, 0x51, 0x32, 0x12, 0x41, 0xef, 0xb2, - 0xbf, 0x4a, 0xfc, 0x02, 0x6a, 0xc3, 0x24, 0xe0, 0xd0, 0x4e, 0xee, 0x5f, - 0x48, 0x23, 0x9e, 0x42, 0xe8, 0x09, 0x9d, 0xb2, 0xc1, 0x2a, 0xe0, 0x0b, - 0xce, 0xc1, 0x99, 0x1e, 0x3c, 0x24, 0x35, 0xf2, 0x5a, 0x3d, 0xfa, 0x09, - 0x14, 0xf5, 0xe5, 0x4e, 0xed, 0xff, 0x82, 0xb2, 0x7b, 0xb2, 0xc1, 0x33, - 0x37, 0xd3, 0x5c, 0x6d, 0x90, 0x78, 0x58, 0xbf, 0x7f, 0x1e, 0x0f, 0x4f, - 0xba, 0x32, 0x24, 0xdd, 0xe6, 0xcc, 0xaf, 0xab, 0x7c, 0xe5, 0xb6, 0xf9, - 0x8e, 0xe7, 0x9f, 0x56, 0x86, 0xdc, 0x80, 0x5e, 0x0b, 0x6e, 0x90, 0x7d, - 0x22, 0x22, 0xc7, 0xe8, 0x07, 0xc6, 0xa0, 0xe9, 0x1f, 0x88, 0x7a, 0x5a, - 0x36, 0xf9, 0x1f, 0x89, 0xf6, 0x2a, 0xdf, 0x7e, 0x82, 0x9d, 0xe6, 0x22, - 0x4b, 0x06, 0x0e, 0xa8, 0xf8, 0x94, 0xa6, 0x2a, 0x89, 0x2a, 0xe1, 0xa6, - 0x6c, 0xe1, 0x84, 0xc7, 0xff, 0xf8, 0x17, 0x39, 0xd1, 0xe6, 0x05, 0x28, - 0xd5, 0x39, 0xba, 0xef, 0x72, 0x1c, 0x61, 0x73, 0x16, 0xb0, 0x5b, 0x47, - 0x98, 0x2d, 0x56, 0xa0, 0x77, 0xab, 0x79, 0xdd, 0x24, 0x00, 0x1a, 0xb3, - 0x0a, 0xcb, 0xea, 0x79, 0xaf, 0x20, 0xaf, 0xcb, 0x7e, 0x42, 0xed, 0x48, - 0x7c, 0x3c, 0x43, 0x14, 0xb2, 0xfb, 0x48, 0x27, 0x36, 0x30, 0xe3, 0xb8, - 0x55, 0xc1, 0x83, 0xd4, 0x8b, 0xfa, 0xb8, 0x66, 0x32, 0xd3, 0xb9, 0xec, - 0x7b, 0x12, 0x5c, 0x77, 0x76, 0x8e, 0x24, 0x82, 0xbe, 0x61, 0xb0, 0x51, - 0xc0, 0x18, 0x69, 0x2d, 0x83, 0xd2, 0xaf, 0x1d, 0xac, 0xc6, 0x9d, 0x87, - 0xed, 0x3e, 0xa6, 0x7b, 0x37, 0x37, 0xaf, 0xd5, 0xca, 0xd3, 0xf6, 0xa2, - 0xc9, 0xcd, 0x62, 0x24, 0x23, 0xa1, 0x80, 0xf6, 0x8f, 0x9e, 0x70, 0xc3, - 0x20, 0x48, 0xe0, 0x63, 0xdc, 0xa2, 0x56, 0xec, 0xc0, 0x91, 0x0e, 0x0b, - 0x2e, 0x59, 0xec, 0x4e, 0xb4, 0x18, 0xf9, 0x31, 0x9f, 0x61, 0xcd, 0x45, - 0x00, 0x42, 0x6d, 0x86, 0x5a, 0xed, 0xb4, 0x3b, 0x43, 0xc1, 0x02, 0x42, - 0xa7, 0x7b, 0x46, 0x13, 0x3d, 0xbb, 0xc7, 0xca, 0x04, 0x82, 0x66, 0xa8, - 0x6e, 0x40, 0x83, 0x3d, 0x74, 0xe0, 0x86, 0xb5, 0x8d, 0x36, 0xe6, 0x48, - 0x01, 0xcf, 0x9d, 0x5d, 0xdd, 0xb8, 0xa3, 0x00, 0xab, 0x39, 0x9e, 0x69, - 0x8b, 0x7f, 0x7f, 0x31, 0xa9, 0x08, 0x5f, 0x54, 0x47, 0x55, 0x9e, 0x66, - 0x87, 0x31, 0x61, 0xb0, 0xcf, 0xa1, 0x7e, 0xaf, 0xc3, 0x5d, 0x06, 0xcc, - 0x49, 0x1b, 0x6d, 0x50, 0x27, 0x8b, 0xbc, 0x60, 0xcb, 0x58, 0x91, 0x81, - 0x14, 0x49, 0xe4, 0x1f, 0xb4, 0x31, 0x58, 0x9f, 0x45, 0x47, 0xe4, 0x84, - 0x3e, 0xae, 0x85, 0xcf, 0xd4, 0x0b, 0x80, 0xcc, 0x4e, 0x1a, 0x59, 0x33, - 0xb2, 0x34, 0xfd, 0x53, 0x02, 0xe8, 0xa3, 0x70, 0x07, 0xf5, 0x7a, 0x80, - 0x63, 0x33, 0xff, 0xa8, 0x9c, 0xa4, 0xce, 0x32, 0x24, 0xd2, 0x5d, 0x5f, - 0xb8, 0xd8, 0x9b, 0x86, 0x6e, 0xee, 0x37, 0xea, 0x3c, 0xbc, 0xf5, 0x56, - 0xde, 0x2e, 0x2e, 0xe0, 0x86, 0x4b, 0x53, 0xde, 0xd1, 0x20, 0x8c, 0x80, - 0xdd, 0x1e, 0xcd, 0xe6, 0x9c, 0x74, 0xae, 0x06, 0xf1, 0x45, 0xa8, 0xf5, - 0xc6, 0x43, 0xae, 0xbd, 0x91, 0xcc, 0xb1, 0x2f, 0xb9, 0xc9, 0xce, 0xe8, - 0x2b, 0x37, 0x53, 0xa4, 0x9c, 0x97, 0x3c, 0xef, 0xcd, 0xd9, 0x04, 0x05, - 0x4f, 0x97, 0x58, 0x6e, 0x1f, 0x1b, 0x51, 0x5a, 0x6a, 0x01, 0x85, 0x80, - 0x8e, 0xe3, 0x57, 0xf6, 0x6b, 0xbf, 0xe8, 0x0c, 0x93, 0x9c, 0x74, 0x5a, - 0x1b, 0xb7, 0x40, 0x55, 0xcc, 0x53, 0xcc, 0xf8, 0xcf, 0xd7, 0xe5, 0xa7, - 0xe2, 0x67, 0x66, 0x85, 0xda, 0xa5, 0x74, 0x1b, 0x75, 0x9f, 0x5f, 0x1c, - 0x62, 0xd0, 0x94, 0xb8, 0xdf, 0xbd, 0x2a, 0x34, 0xea, 0x1a, 0x30, 0x9c, - 0x25, 0x83, 0x75, 0x1f, 0xa9, 0x7d, 0x6a, 0x0c, 0x7e, 0xb9, 0x22, 0xcc, - 0xe9, 0xa6, 0xbb, 0x85, 0xf9, 0x9e, 0xe1, 0x8b, 0x6e, 0xed, 0xdf, 0xa2, - 0x20, 0x4f, 0x36, 0x9a, 0x6d, 0x37, 0x69, 0x98, 0x69, 0xfb, 0xd1, 0x13, - 0xa1, 0x82, 0x19, 0x3e, 0x8e, 0xc7, 0xf0, 0x0d, 0xd8, 0xad, 0x8b, 0xf3, - 0x96, 0x7a, 0xb0, 0x30, 0xa1, 0x22, 0x06, 0xb3, 0x4b, 0x58, 0x97, 0xc8, - 0x19, 0xaf, 0x26, 0x38, 0x7a, 0xf3, 0x7b, 0x5c, 0xc7, 0x64, 0x20, 0x5f, - 0x53, 0x89, 0x9a, 0x07, 0x44, 0x29, 0xac, 0x64, 0x79, 0xb7, 0x81, 0x33, - 0x7e, 0x37, 0x27, 0x8c, 0xf4, 0xfc, 0xc7, 0xdb, 0x48, 0xa7, 0x64, 0xdd, - 0xf1, 0xe5, 0x87, 0x88, 0x3d, 0x15, 0x02, 0x71, 0x3b, 0xe8, 0xab, 0x6f, - 0xb2, 0x50, 0x09, 0xda, 0x4c, 0xdd, 0x5e, 0x42, 0x04, 0xb5, 0x5a, 0x58, - 0xa9, 0x40, 0xd7, 0xf6, 0x9f, 0xf5, 0x46, 0x8f, 0x65, 0xe5, 0xc0, 0x68, - 0x8f, 0x39, 0xe3, 0x4c, 0x32, 0xaf, 0x53, 0xd1, 0x6f, 0x01, 0xa6, 0xfe, - 0xf8, 0x57, 0x82, 0x58, 0x72, 0x1d, 0x5d, 0xed, 0xbe, 0x7f, 0xe8, 0x01, - 0x32, 0x24, 0x6f, 0xf6, 0xd6, 0x94, 0x1a, 0x4c, 0x3c, 0x8b, 0xc0, 0x3d, - 0xb7, 0x75, 0x1d, 0x20, 0x64, 0xd0, 0xff, 0xfd, 0xa7, 0xac, 0x40, 0xfe, - 0xe4, 0x70, 0x7f, 0xab, 0x4f, 0xe8, 0xd0, 0xe2, 0x3a, 0xf6, 0x5c, 0x23, - 0xf4, 0x1c, 0xa1, 0x84, 0x62, 0x41, 0xf1, 0x89, 0x8f, 0x8a, 0xa1, 0x15, - 0x19, 0x9f, 0x8c, 0x07, 0x4f, 0xf9, 0x43, 0x6d, 0x06, 0x04, 0xf9, 0x42, - 0xd5, 0xe9, 0x82, 0x79, 0xff, 0xe4, 0xf4, 0x7f, 0x76, 0x26, 0xc7, 0x9b, - 0x33, 0x62, 0x46, 0xa3, 0x9e, 0x02, 0x2b, 0x68, 0x1b, 0x29, 0x6e, 0x03, - 0x34, 0x8f, 0xd9, 0x61, 0xad, 0x2f, 0xde, 0xde, 0x43, 0xf4, 0x81, 0xd8, - 0x8c, 0xd0, 0x1d, 0xa9, 0xce, 0x28, 0x5e, 0x0f, 0xa7, 0xa7, 0x7f, 0xd6, - 0x3a, 0x6e, 0xcf, 0xa4, 0x90, 0x2f, 0x7c, 0x57, 0xbf, 0xe3, 0xcc, 0xda, - 0x01, 0x96, 0x61, 0xdf, 0x95, 0x2a, 0xf4, 0xa9, 0x87, 0x19, 0x53, 0x57, - 0x4a, 0x95, 0xc5, 0x9b, 0xa1, 0x31, 0x44, 0x70, 0xf1, 0x74, 0x20, 0x8a, - 0xbc, 0x44, 0xd1, 0x02, 0x8f, 0xb6, 0x86, 0x15, 0xc6, 0xdd, 0x82, 0x68, - 0xc4, 0xb6, 0xb5, 0x8e, 0xe4, 0xb0, 0xad, 0xa9, 0x84, 0x71, 0x99, 0xef, - 0x75, 0xf8, 0x6f, 0x4c, 0x59, 0x47, 0x8e, 0xa4, 0x48, 0x2a, 0xaf, 0x8c, - 0xec, 0xbb, 0xad, 0x98, 0x6c, 0x22, 0x1d, 0x18, 0x61, 0x7f, 0x1c, 0x73, - 0xba, 0xcc, 0x21, 0xa2, 0x1d, 0x07, 0xf1, 0x70, 0xbc, 0x22, 0x92, 0x9a, - 0x8d, 0xa0, 0x4c, 0x69, 0x95, 0x31, 0x9a, 0x86, 0x61, 0x9f, 0x23, 0xaa, - 0x51, 0x26, 0x2e, 0xf0, 0xbf, 0x4b, 0x34, 0xec, 0x09, 0x2e, 0x1a, 0xf0, - 0x0b, 0xff, 0xb5, 0xfc, 0x1f, 0xcb, 0x21, 0x5a, 0xbd, 0x44, 0x3d, 0x43, - 0x92, 0xa3, 0x53, 0x2c, 0xef, 0x7f, 0x3d, 0xdc, 0x06, 0x5e, 0xcb, 0x03, - 0x3d, 0x92, 0xfe, 0xe9, 0x34, 0x79, 0x5c, 0x94, 0xed, 0xbf, 0x69, 0xb8, - 0x1e, 0xf1, 0xd4, 0xff, 0x32, 0x9b, 0x63, 0x61, 0x02, 0xf3, 0x4f, 0xb0, - 0xa2, 0x86, 0x89, 0x4f, 0x5b, 0xbb, 0x8d, 0x45, 0xf4, 0x6f, 0x65, 0x2e, - 0xbe, 0x42, 0x24, 0x7f, 0x48, 0xe7, 0xac, 0x47, 0xf1, 0x53, 0x1e, 0x94, - 0xc6, 0x46, 0xd5, 0x6e, 0x82, 0x59, 0x9f, 0x97, 0xe9, 0x81, 0x04, 0xf9, - 0x49, 0xa4, 0x0a, 0x49, 0x38, 0xa3, 0xc5, 0xbc, 0x9e, 0x34, 0x24, 0xae, - 0xfc, 0xf1, 0x34, 0x52, 0x68, 0xef, 0x12, 0xb6, 0x90, 0x6d, 0x8d, 0x3f, - 0x48, 0x1c, 0x24, 0x22, 0x74, 0x6a, 0xda, 0x33, 0xe3, 0xc1, 0xed, 0xcf, - 0xc3, 0x00, 0x8d, 0xec, 0xa0, 0xe5, 0x27, 0x5b, 0x29, 0x30, 0x25, 0x2f, - 0x7d, 0x05, 0xad, 0xfd, 0x4b, 0xb1, 0xd4, 0xbe, 0x88, 0x72, 0x5a, 0x06, - 0x63, 0x23, 0xfd, 0x3c, 0xd0, 0xbe, 0x7d, 0x3f, 0x72, 0x9c, 0x3f, 0xf5, - 0xf9, 0xb1, 0x17, 0x57, 0xf2, 0x16, 0xf0, 0x4e, 0x97, 0xa4, 0x2d, 0x2f, - 0xeb, 0x65, 0x22, 0xae, 0x98, 0xa6, 0xb8, 0x82, 0x95, 0x9a, 0x32, 0x4c, - 0x86, 0x10, 0x68, 0xa6, 0xb2, 0x82, 0x7e, 0x43, 0x8c, 0x9a, 0x3c, 0x5f, - 0xf3, 0x80, 0x99, 0x7e, 0x74, 0xcb, 0xc1, 0xef, 0xba, 0x58, 0xfc, 0x4d, - 0x53, 0xd8, 0x90, 0x50, 0x0f, 0x2e, 0x63, 0x33, 0x2f, 0x36, 0x95, 0xca, - 0x86, 0x59, 0xf5, 0x69, 0x80, 0xe0, 0x2d, 0x30, 0xb3, 0x3a, 0xf9, 0x79, - 0x1b, 0x8b, 0xaf, 0x61, 0xc5, 0x77, 0x4c, 0xf5, 0xdf, 0xea, 0xac, 0x19, - 0x7b, 0x74, 0x46, 0x36, 0x03, 0x71, 0xdd, 0x64, 0xba, 0xe6, 0x1d, 0x9a, - 0x12, 0xc0, 0xfd, 0x3e, 0xa5, 0x13, 0x5f, 0xa8, 0xf5, 0x88, 0x1e, 0x6c, - 0x97, 0xe5, 0x2e, 0xf6, 0xc4, 0x24, 0xb3, 0x7c, 0xa2, 0xc6, 0xa4, 0x5c, - 0x85, 0xd9, 0x1c, 0xfa, 0x3a, 0x8e, 0x32, 0xe9, 0xf4, 0x8a, 0xfd, 0x99, - 0x59, 0x96, 0x51, 0xbc, 0xf8, 0xf4, 0x74, 0xfb, 0x29, 0x56, 0xfd, 0x71, - 0x9f, 0xc7, 0x13, 0x5b, 0x33, 0xbf, 0x01, 0x15, 0x49, 0xc7, 0xc8, 0x3c, - 0xc5, 0x3c, 0xcd, 0x5a, 0x81, 0x02, 0xad, 0x0e, 0xd8, 0x9e, 0x07, 0x8c, - 0x3e, 0xe9, 0xc1, 0xd5, 0x37, 0x12, 0x3c, 0x5a, 0x0f, 0x1d, 0x84, 0xee, - 0x71, 0x22, 0xab, 0xa3, 0xe8, 0x0b, 0x8d, 0xd5, 0xb2, 0x7e, 0xee, 0x80, - 0x36, 0x58, 0x19, 0x75, 0x0e, 0x8e, 0x7b, 0x15, 0xdb, 0x68, 0xeb, 0x6b, - 0x57, 0xb5, 0xc1, 0x9e, 0x9d, 0x1e, 0x1e, 0xd1, 0x17, 0x43, 0xe0, 0x70, - 0x81, 0x5a, 0xdd, 0x88, 0x52, 0xdb, 0xe9, 0x07, 0xbf, 0x08, 0xc0, 0x5e, - 0x01, 0x51, 0xcd, 0x2c, 0x2a, 0x58, 0xbb, 0xd6, 0x72, 0x9a, 0xa6, 0xe5, - 0x3a, 0x25, 0x8b, 0x54, 0xc3, 0x07, 0xf4, 0x7c, 0x66, 0xbf, 0x10, 0xe8, - 0xbc, 0x10, 0xb3, 0x08, 0x1c, 0xd8, 0x35, 0x1d, 0x2a, 0x55, 0x19, 0x9f, - 0x64, 0xef, 0x21, 0x0d, 0x6f, 0xba, 0x05, 0xa5, 0xe9, 0xaa, 0xd9, 0xe1, - 0x10, 0x08, 0x30, 0x6e, 0x47, 0xf0, 0x63, 0x94, 0x6e, 0x2c, 0xdc, 0xfd, - 0x20, 0x0b, 0xab, 0x67, 0x23, 0xeb, 0x87, 0x01, 0xb7, 0x0b, 0xe3, 0x32, - 0x13, 0x03, 0x64, 0xbd, 0x5d, 0x60, 0xa9, 0x48, 0x22, 0x65, 0x22, 0xb4, - 0x9a, 0xe0, 0x62, 0xc3, 0xd9, 0xd6, 0x94, 0xc9, 0x79, 0xe9, 0xf4, 0xa2, - 0x63, 0x83, 0x7e, 0x53, 0xda, 0x6c, 0x80, 0xb6, 0x16, 0x7a, 0x02, 0x94, - 0xb1, 0xe5, 0xe8, 0xf6, 0x5e, 0x0a, 0x00, 0xf1, 0xfc, 0xce, 0x4f, 0xe8, - 0x37, 0xd9, 0x9f, 0x68, 0x77, 0x2c, 0xc9, 0x6b, 0x24, 0x18, 0xac, 0x1b, - 0xd0, 0xda, 0x16, 0x23, 0xc8, 0x8c, 0x9f, 0x79, 0x6e, 0xaa, 0xf9, 0x7d, - 0x62, 0x54, 0xc7, 0xa4, 0x4e, 0x01, 0x01, 0x20, 0x31, 0x36, 0x67, 0x89, - 0xca, 0x4c, 0xae, 0x1e, 0x44, 0x11, 0x20, 0x3c, 0xb7, 0x47, 0x99, 0x0b, - 0xa1, 0xbd, 0xd8, 0x2b, 0xe8, 0xa7, 0xf0, 0x1a, 0xf9, 0x44, 0x3b, 0x77, - 0x2d, 0x49, 0x30, 0xfc, 0xf4, 0x7d, 0xe2, 0x21, 0x11, 0x7c, 0x86, 0x01, - 0xfb, 0x75, 0xc7, 0xb9, 0xd9, 0x8c, 0xa0, 0x74, 0xfa, 0xbe, 0xcb, 0x76, - 0x66, 0x4c, 0x1e, 0xf7, 0xab, 0xef, 0x92, 0x9b, 0xd6, 0x59, 0xa6, 0x39, - 0x5f, 0x65, 0x30, 0x81, 0xe7, 0xd8, 0x85, 0x7a, 0xea, 0x50, 0x8b, 0x6b, - 0x85, 0xaa, 0x0b, 0xf1, 0x00, 0x2d, 0xbb, 0x31, 0xfe, 0x0c, 0x4e, 0xf8, - 0xce, 0xa5, 0xd5, 0xcf, 0xaf, 0xf3, 0xe1, 0xb9, 0xee, 0x16, 0x8e, 0x5f, - 0x7c, 0x2d, 0x0d, 0xa3, 0xdb, 0x40, 0x6b, 0xc2, 0x9d, 0x00, 0xf7, 0x1d, - 0x05, 0x0c, 0x84, 0x73, 0xb0, 0xbb, 0x35, 0x8d, 0x5b, 0x14, 0x46, 0x1a, - 0xea, 0x21, 0xce, 0x58, 0x45, 0xf2, 0xd3, 0x12, 0x7c, 0xba, 0xba, 0x0e, - 0x8e, 0xf6, 0xb3, 0xf0, 0x57, 0x65, 0x82, 0x8c, 0xde, 0x1e, 0x0f, 0x2d, - 0x76, 0x87, 0xa4, 0x34, 0x9b, 0x20, 0x3b, 0x2b, 0x02, 0xd3, 0x68, 0x33, - 0x95, 0x64, 0xab, 0xd0, 0x82, 0x60, 0x95, 0x93, 0xef, 0x5a, 0xf0, 0x55, - 0x6e, 0x04, 0x30, 0x97, 0x95, 0x71, 0xd0, 0x6b, 0x00, 0xbe, 0x27, 0xbd, - 0x7c, 0x5f, 0x3b, 0xe8, 0x34, 0x94, 0xdc, 0x1a, 0x6f, 0xe8, 0x97, 0xb8, - 0x8f, 0x23, 0x63, 0xae, 0xa2, 0x3c, 0xfd, 0x77, 0x86, 0xfe, 0xc6, 0xc1, - 0xd9, 0x5c, 0x18, 0xf7, 0xc7, 0x2c, 0xb4, 0xac, 0x43, 0xd4, 0xfd, 0x31, - 0xa0, 0xa5, 0x8f, 0x13, 0xee, 0x19, 0x33, 0x0d, 0x8d, 0x3a, 0xcf, 0x73, - 0xd3, 0xae, 0x66, 0xe6, 0x37, 0xea, 0x68, 0x52, 0xf4, 0xa5, 0x0a, 0xa0, - 0x7b, 0x19, 0x5c, 0xde, 0xb6, 0x62, 0x6c, 0x5a, 0x8b, 0x58, 0x22, 0xf1, - 0xff, 0x99, 0xa2, 0x40, 0xbd, 0x61, 0xa3, 0x05, 0xea, 0x40, 0x77, 0x83, - 0x26, 0xe6, 0xcd, 0xf0, 0x67, 0xb6, 0xf2, 0xe3, 0x68, 0xb7, 0x4d, 0xde, - 0x22, 0xee, 0x9b, 0x6d, 0x50, 0x5f, 0x34, 0x5a, 0x2d, 0x93, 0xba, 0x81, - 0xf2, 0x0f, 0x7c, 0x90, 0xad, 0x5a, 0x70, 0xe8, 0x12, 0x93, 0x9c, 0x7b, - 0xee, 0xf1, 0x33, 0x04, 0x99, 0x43, 0x3f, 0x60, 0xf0, 0x11, 0x5b, 0x3e, - 0x38, 0x63, 0x63, 0xd9, 0xc4, 0x97, 0x41, 0x14, 0x17, 0x91, 0xb2, 0xcc, - 0x64, 0xd5, 0x84, 0xe7, 0x33, 0x64, 0xa7, 0xa2, 0x2a, 0x1c, 0x02, 0x0f, - 0xb6, 0x21, 0x6b, 0x4a, 0x56, 0x7e, 0x53, 0x4d, 0x3a, 0x8b, 0xb9, 0x55, - 0xb5, 0xe4, 0x1c, 0x42, 0x59, 0x7f, 0xc0, 0xd4, 0x6b, 0x56, 0xd1, 0xf9, - 0x57, 0xce, 0xf6, 0xc2, 0xea, 0xb0, 0xa8, 0xf5, 0x15, 0x9d, 0x27, 0x5d, - 0x85, 0xab, 0x58, 0x50, 0xa3, 0x56, 0x94, 0xc8, 0xa3, 0xb2, 0xd5, 0xe0, - 0xf5, 0x9f, 0x58, 0x37, 0x53, 0x13, 0x54, 0xaf, 0xb6, 0x06, 0x0b, 0x4a, - 0x66, 0x4a, 0xdb, 0x15, 0x3d, 0x72, 0xad, 0x86, 0x8e, 0x31, 0x86, 0x3c, - 0x2e, 0x8e, 0x1c, 0xf8, 0x7d, 0x0f, 0x7a, 0x4a, 0xba, 0x20, 0xfb, 0xc4, - 0x9b, 0xf3, 0x16, 0xa6, 0x98, 0x17, 0x1c, 0x9c, 0xa1, 0x91, 0x13, 0xb0, - 0xf3, 0x27, 0xf1, 0x48, 0xb3, 0xda, 0x3c, 0x07, 0xeb, 0x99, 0x20, 0xad, - 0xc3, 0x42, 0xa0, 0x2b, 0x76, 0xf6, 0x86, 0x6b, 0xa6, 0x16, 0x89, 0x6f, - 0xcc, 0x8b, 0x7c, 0xc0, 0x0d, 0x39, 0x54, 0x63, 0x8f, 0x90, 0x62, 0xa6, - 0x80, 0x60, 0xe1, 0x1f, 0x2b, 0xa2, 0x63, 0x70, 0xac, 0x1b, 0xb5, 0x3c, - 0x48, 0x56, 0xd6, 0x3b, 0x68, 0x54, 0x3a, 0x45, 0x25, 0x0d, 0xff, 0x62, - 0x92, 0x35, 0x6c, 0x4d, 0x93, 0x92, 0x46, 0xb5, 0x37, 0xc2, 0x5a, 0x67, - 0x99, 0x64, 0x04, 0xab, 0xc1, 0xb8, 0xb9, 0x78, 0x37, 0x69, 0x70, 0x4c, - 0x24, 0xe6, 0x7e, 0xc4, 0xa0, 0xce, 0x44, 0x68, 0xc5, 0xd2, 0x8c, 0x6f, - 0xab, 0x60, 0x99, 0x64, 0x6d, 0xc6, 0x98, 0xa2, 0x0b, 0xbc, 0xdd, 0x91, - 0x90, 0x8a, 0xd5, 0x8e, 0xa4, 0xde, 0x98, 0xe8, 0x14, 0x88, 0x6c, 0x22, - 0xc5, 0xaa, 0x44, 0x4a, 0xd2, 0x83, 0x3a, 0x8c, 0xea, 0x9f, 0x08, 0x82, - 0x52, 0x34, 0xdd, 0x24, 0xc5, 0x1a, 0x70, 0xed, 0x4a, 0x3b, 0x48, 0x12, - 0x53, 0x44, 0x1a, 0xd8, 0x30, 0xa3, 0xd1, 0x1f, 0x77, 0x6f, 0x98, 0x0e, - 0x4b, 0x88, 0x4d, 0x83, 0x41, 0x70, 0xd9, 0x65, 0x5a, 0x77, 0xcd, 0x70, - 0x73, 0xf1, 0x60, 0x76, 0x35, 0xae, 0x20, 0x52, 0x49, 0x81, 0x8f, 0xce, - 0x62, 0x05, 0x66, 0x1c, 0x63, 0xfb, 0xd4, 0x13, 0xc2, 0x8e, 0xf4, 0xc6, - 0x74, 0xe8, 0xfd, 0xcd, 0x0b, 0x87, 0x28, 0xd0, 0x29, 0x2b, 0x1e, 0x04, - 0xc5, 0x4a, 0x26, 0xf2, 0x66, 0x45, 0xd3, 0x4a, 0x63, 0xbc, 0xf0, 0x38, - 0x71, 0x8b, 0x58, 0x5c, 0xcc, 0x15, 0xa5, 0x05, 0x66, 0xd8, 0xde, 0x6c, - 0x02, 0x86, 0x6a, 0xe1, 0xa1, 0x52, 0x65, 0x7a, 0xae, 0x6f, 0x39, 0xbd, - 0x98, 0xd0, 0x73, 0x1d, 0x72, 0xc9, 0x86, 0x02, 0x73, 0x5d, 0xa8, 0xd7, - 0x90, 0x96, 0x40, 0x31, 0x3d, 0x7f, 0xd4, 0xab, 0x21, 0xb2, 0xf1, 0xb9, - 0xcb, 0xe0, 0x87, 0xc4, 0x73, 0xc1, 0xaa, 0x5f, 0x84, 0xa6, 0x0b, 0xbb, - 0x4f, 0x48, 0x4a, 0x9b, 0x30, 0x93, 0x5d, 0x57, 0xc5, 0x90, 0xb0, 0x2c, - 0x39, 0x78, 0x1c, 0xd5, 0x73, 0x8f, 0xa5, 0xf0, 0x64, 0x31, 0x7c, 0x20, - 0x3e, 0x2a, 0x76, 0x70, 0x43, 0xb9, 0xab, 0x2e, 0x3b, 0x4e, 0xd6, 0x50, - 0xcc, 0x26, 0xb0, 0xb6, 0x26, 0xb2, 0xe6, 0x58, 0x7f, 0x39, 0x98, 0x22, - 0x62, 0x19, 0x43, 0x34, 0x3c, 0x17, 0xcd, 0x35, 0x53, 0xd8, 0x31, 0xf9, - 0x4b, 0x94, 0x33, 0xc8, 0x68, 0x3a, 0x31, 0xcf, 0x18, 0x97, 0x8f, 0x86, - 0xe0, 0x2c, 0x67, 0xfd, 0x32, 0x80, 0x32, 0x14, 0x9c, 0xaf, 0x7c, 0x37, - 0x11, 0xdb, 0xd3, 0xf9, 0x67, 0x9e, 0x3b, 0xa0, 0x5b, 0xe3, 0x47, 0xdd, - 0x5a, 0x2e, 0x81, 0xc0, 0x75, 0xcd, 0x8d, 0x59, 0x1e, 0xa4, 0x3c, 0x9b, - 0xf0, 0xe9, 0x3b, 0x41, 0x28, 0x6e, 0x91, 0xfa, 0x84, 0x54, 0xdd, 0xa5, - 0x16, 0x72, 0xdf, 0xa3, 0x95, 0x96, 0x74, 0x77, 0x4a, 0x73, 0x99, 0x20, - 0x3a, 0x16, 0x3a, 0x3c, 0x5b, 0x56, 0xdc, 0x6d, 0xf6, 0x38, 0xe6, 0x02, - 0xfd, 0x5b, 0x52, 0xdc, 0xfe, 0x72, 0xa3, 0x73, 0x17, 0x3d, 0x0c, 0x58, - 0x2b, 0x2f, 0xb5, 0xb0, 0xb2, 0xfd, 0x70, 0x2a, 0xcb, 0x36, 0xe9, 0xcf, - 0x50, 0x64, 0xcc, 0xe2, 0x45, 0xd4, 0x8e, 0x01, 0xa7, 0xae, 0x83, 0xd1, - 0x34, 0x58, 0x0b, 0x21, 0xa1, 0x00, 0x37, 0xee, 0xec, 0xa7, 0x32, 0xae, - 0x1e, 0xb4, 0xde, 0xe1, 0x06, 0x59, 0x9c, 0x8c, 0x86, 0xe7, 0xee, 0xd5, - 0xd0, 0x06, 0x31, 0x7a, 0x6e, 0xc6, 0xb2, 0x0c, 0x13, 0x03, 0x84, 0x82, - 0xcd, 0x36, 0xe3, 0x81, 0x7a, 0x1d, 0xa4, 0xab, 0x8b, 0x1a, 0x8e, 0x40, - 0x5f, 0x92, 0x9f, 0x33, 0xa3, 0x04, 0x1a, 0x40, 0x1e, 0x85, 0xaf, 0x24, - 0x64, 0x9b, 0x62, 0x31, 0xe0, 0xec, 0xbb, 0x68, 0x2e, 0x9d, 0x9f, 0xad, - 0x00, 0x3c, 0x90, 0x11, 0x92, 0x52, 0x82, 0x15, 0x6e, 0x2a, 0x1a, 0xb8, - 0x13, 0xeb, 0x64, 0x2d, 0x83, 0xfe, 0xa1, 0x5f, 0x8e, 0xc9, 0x64, 0x5e, - 0x4e, 0xa2, 0x71, 0x40, 0x75, 0x32, 0x16, 0x81, 0x00, 0x0d, 0x97, 0x1b, - 0x26, 0xb9, 0xef, 0x6f, 0x45, 0xa4, 0x54, 0x6a, 0x8a, 0x90, 0x63, 0x6c, - 0x43, 0xaf, 0x32, 0xed, 0x71, 0x92, 0xcd, 0xc0, 0x49, 0xd4, 0x93, 0xb9, - 0x9c, 0xaf, 0x5e, 0xfb, 0x44, 0xdd, 0xdc, 0x4a, 0x9a, 0xc4, 0x42, 0x85, - 0xbc, 0x60, 0x38, 0x22, 0xf6, 0x26, 0xe0, 0x6c, 0x6a, 0x2d, 0x97, 0x8a, - 0x53, 0xbb, 0x2d, 0x9d, 0xc7, 0x40, 0x36, 0x83, 0x99, 0xb7, 0x41, 0x6e, - 0x79, 0x18, 0x73, 0x7f, 0xf5, 0x8c, 0x61, 0x9f, 0x2f, 0x95, 0xc6, 0xac, - 0x75, 0x0d, 0x9a, 0xd9, 0x0c, 0xee, 0xc4, 0x77, 0x28, 0x7a, 0xa2, 0x59, - 0x2a, 0x77, 0x2e, 0x97, 0x61, 0x33, 0x87, 0x09, 0x76, 0xde, 0xab, 0xb9, - 0xcf, 0x76, 0x93, 0x2d, 0x83, 0x19, 0xba, 0x82, 0xb7, 0x68, 0xbf, 0x9b, - 0xae, 0x10, 0xe2, 0x18, 0xaf, 0x0b, 0xcc, 0x01, 0xc5, 0xa7, 0x01, 0xe7, - 0xff, 0xfd, 0x13, 0x74, 0xc8, 0xe1, 0xbe, 0xb5, 0x00, 0x4f, 0x5f, 0x6a, - 0x32, 0x28, 0xaa, 0x31, 0x49, 0xbe, 0xfd, 0x25, 0x5f, 0xee, 0x48, 0x38, - 0x90, 0xf4, 0x3b, 0x8a, 0x18, 0x12, 0x44, 0x1b, 0xf8, 0xd3, 0x11, 0x41, - 0x0d, 0xba, 0x54, 0x3d, 0x18, 0x12, 0x1d, 0x44, 0x07, 0x9c, 0xd6, 0xf9, - 0x01, 0x39, 0xfc, 0x36, 0xac, 0x9d, 0x8c, 0x14, 0x00, 0xf5, 0x68, 0xb1, - 0x13, 0x0d, 0xfd, 0xba, 0x97, 0x55, 0x0a, 0xe4, 0x9c, 0xde, 0x17, 0x8c, - 0x98, 0xd8, 0x4b, 0x3d, 0x19, 0xca, 0x0a, 0xab, 0xfd, 0xb5, 0x4e, 0x14, - 0x47, 0xd9, 0xb2, 0x34, 0x83, 0xc2, 0xe9, 0x42, 0x57, 0xc9, 0x2b, 0xcf, - 0x78, 0x3e, 0xce, 0xf9, 0xe5, 0xfa, 0x92, 0x4f, 0xda, 0xbd, 0x85, 0x66, - 0x50, 0xc2, 0xcd, 0xf2, 0x7e, 0xc9, 0xd3, 0x5c, 0x35, 0x7e, 0xef, 0xe4, - 0xfa, 0x55, 0x7d, 0xf8, 0x8a, 0x5d, 0xb1, 0x47, 0xde, 0xa8, 0x17, 0xcd, - 0xe6, 0x8a, 0x74, 0x1a, 0x89, 0x71, 0x0c, 0xd1, 0x89, 0x3b, 0x18, 0x33, - 0xd7, 0xae, 0x07, 0x29, 0xce, 0x7b, 0xed, 0x17, 0xd1, 0x09, 0xe5, 0xbc, - 0xbf, 0x0e, 0x1b, 0x73, 0xac, 0x47, 0x5c, 0xf0, 0x87, 0xa8, 0xda, 0xc3, - 0xe8, 0x80, 0xb3, 0x43, 0xe3, 0xd5, 0x0f, 0xe3, 0x85, 0x2c, 0x96, 0x47, - 0x82, 0xa0, 0x67, 0x73, 0xf7, 0x47, 0x5a, 0x60, 0xea, 0x3f, 0x49, 0x0a, - 0x50, 0x9b, 0x81, 0x1b, 0xb5, 0x0e, 0x47, 0x13, 0xc0, 0xbf, 0x4a, 0x1f, - 0x2c, 0x4d, 0x34, 0xcc, 0xeb, 0x5b, 0x94, 0xc5, 0x87, 0xe8, 0xe7, 0x77, - 0x33, 0x4b, 0x45, 0x58, 0xc1, 0x38, 0x40, 0xaf, 0x55, 0x72, 0xbe, 0xba, - 0x78, 0x7c, 0xcd, 0x79, 0x28, 0xdb, 0x2e, 0x40, 0x2b, 0xdf, 0x12, 0x03, - 0x33, 0x6c, 0x54, 0xc0, 0x81, 0x9d, 0x96, 0xaa, 0xd7, 0x6b, 0x92, 0xc8, - 0xde, 0xe6, 0x4b, 0x17, 0xda, 0xe4, 0xd7, 0x96, 0x9e, 0x5f, 0x27, 0xb2, - 0x64, 0x1d, 0x8d, 0x9a, 0xec, 0x0e, 0xd5, 0x31, 0xdc, 0x2f, 0x33, 0x06, - 0x07, 0x2d, 0x7e, 0x59, 0xb5, 0xe9, 0x54, 0x9d, 0x57, 0x02, 0xd0, 0xa1, - 0x68, 0xce, 0xa3, 0x1b, 0x50, 0x04, 0x7b, 0x83, 0x1b, 0x8c, 0x60, 0x52, - 0x1d, 0xb0, 0xf0, 0x0c, 0x42, 0x0d, 0xf2, 0x08, 0x00, 0x5d, 0x19, 0xb1, - 0xca, 0x6f, 0x36, 0x4c, 0x79, 0x66, 0x75, 0xd3, 0xcd, 0x76, 0xf0, 0x03, - 0x16, 0x2b, 0xf4, 0xef, 0xe0, 0x69, 0xc5, 0xb0, 0x67, 0x21, 0x3d, 0x0c, - 0x82, 0xb8, 0x1b, 0xb0, 0xeb, 0x3e, 0xc6, 0xa0, 0x59, 0x77, 0xe4, 0xf2, - 0x69, 0x00, 0x46, 0x14, 0x38, 0x3d, 0xd9, 0x43, 0xbd, 0xbf, 0x13, 0x27, - 0xf3, 0x0e, 0xcf, 0x7d, 0x28, 0x0d, 0x6c, 0xd4, 0xd5, 0x3c, 0xaf, 0x99, - 0x73, 0x8e, 0x10, 0x08, 0x58, 0xa9, 0x36, 0x22, 0xca, 0x01, 0xe8, 0x94, - 0xae, 0xa7, 0x34, 0x13, 0xd1, 0x00, 0x60, 0xf1, 0x65, 0x9b, 0x8f, 0xca, - 0xf7, 0x44, 0x9e, 0xa4, 0xa6, 0x2f, 0x51, 0x27, 0x59, 0xb4, 0x06, 0xe6, - 0xbf, 0xda, 0x91, 0xe8, 0x33, 0xb4, 0x46, 0xb7, 0x4f, 0xa8, 0x66, 0x79, - 0xdf, 0xf7, 0xf2, 0x11, 0xac, 0xb4, 0xb2, 0x4e, 0xb1, 0x0c, 0x71, 0xea, - 0x5a, 0xd7, 0x0e, 0xcc, 0xf6, 0x18, 0xa0, 0xd1, 0x99, 0x04, 0x9d, 0x65, - 0x33, 0x79, 0xef, 0xd7, 0xf7, 0x84, 0x07, 0x28, 0xa5, 0x5a, 0x3e, 0xb8, - 0x2c, 0x2c, 0x85, 0xf9, 0xa9, 0x77, 0xe4, 0xf7, 0x72, 0xf8, 0x21, 0x8a, - 0x57, 0x2f, 0x3b, 0xd9, 0x87, 0x69, 0xa9, 0x5c, 0xdc, 0xa5, 0xd5, 0x43, - 0x8b, 0xb2, 0x91, 0x39, 0x7e, 0x4f, 0x43, 0x8f, 0xaf, 0x44, 0xc9, 0x80, - 0x24, 0x93, 0x05, 0xce, 0x45, 0xf4, 0x39, 0x47, 0x7a, 0xda, 0x77, 0x67, - 0xe3, 0x19, 0x14, 0x87, 0xe1, 0xf0, 0x36, 0xd2, 0xcb, 0x60, 0x40, 0xb9, - 0x5f, 0x53, 0xd3, 0x66, 0x0e, 0x8b, 0x40, 0xbd, 0x1b, 0x54, 0xe3, 0xe4, - 0xf5, 0x13, 0x48, 0xa4, 0x47, 0x66, 0xb2, 0x8d, 0xfe, 0xa6, 0x88, 0x5a, - 0x19, 0x39, 0x2b, 0xbb, 0x01, 0x60, 0x77, 0xf0, 0x5a, 0x8b, 0x53, 0xf9, - 0x8e, 0x3a, 0xd5, 0x86, 0xf1, 0x7b, 0x18, 0xd2, 0x72, 0x46, 0xbe, 0xe4, - 0x1d, 0xa7, 0xa6, 0x26, 0xd5, 0x15, 0xa3, 0xd8, 0x61, 0x6b, 0x6e, 0x89, - 0x3a, 0xc6, 0x35, 0x1a, 0xc4, 0x8c, 0x06, 0xce, 0x67, 0x58, 0xf2, 0xd5, - 0x23, 0x2a, 0xe9, 0x77, 0xf2, 0x68, 0xde, 0x0c, 0xf7, 0x3b, 0x62, 0x3f, - 0x90, 0xa0, 0x5e, 0xa6, 0x22, 0xf1, 0x32, 0xb8, 0xa8, 0xf8, 0x86, 0x9a, - 0xda, 0xed, 0xab, 0x63, 0x38, 0x2d, 0xa4, 0x83, 0x07, 0x8e, 0xed, 0x30, - 0xa8, 0xa6, 0xe3, 0xc5, 0x52, 0x19, 0xa1, 0xec, 0x12, 0xa3, 0x88, 0x42, - 0xc9, 0xc4, 0x30, 0x19, 0xae, 0xa7, 0xbe, 0x12, 0xf9, 0xf1, 0x70, 0x23, - 0x2f, 0x9c, 0xff, 0x4d, 0x08, 0x3e, 0xf3, 0x6f, 0x90, 0x19, 0xbb, 0x7a, - 0x11, 0x63, 0x6b, 0xa2, 0x5f, 0x61, 0x56, 0x64, 0xa6, 0x99, 0xdb, 0x5c, - 0x39, 0x64, 0x95, 0x4b, 0x92, 0x2c, 0xd5, 0x6e, 0x14, 0x41, 0xd2, 0x34, - 0x29, 0xaf, 0xfb, 0xaa, 0xf3, 0x62, 0x61, 0x08, 0xf0, 0xbc, 0xb9, 0x37, - 0x1e, 0x82, 0x6b, 0x44, 0x4e, 0x12, 0xca, 0x7c, 0xce, 0xea, 0x88, 0x39, - 0x27, 0xeb, 0x38, 0x74, 0x0e, 0xff, 0xb5, 0xff, 0xbf, 0x61, 0xc8, 0x3a, - 0x1a, 0x96, 0xb4, 0x39, 0x0c, 0x22, 0x01, 0x9e, 0x8d, 0x55, 0x3d, 0x5d, - 0xca, 0x1b, 0x6a, 0x4d, 0x1a, 0x58, 0x22, 0x8f, 0x1c, 0x05, 0xc9, 0x55, - 0xed, 0x66, 0x72, 0x5c, 0xef, 0xc4, 0x51, 0x53, 0xe0, 0xf2, 0x67, 0x6a, - 0x08, 0x19, 0x73, 0x56, 0xea, 0x9a, 0x16, 0x75, 0xa7, 0x40, 0x11, 0x6a, - 0x16, 0xd5, 0x4a, 0x11, 0x17, 0xe2, 0xa4, 0x0e, 0x53, 0x43, 0xa5, 0x67, - 0x4e, 0xf1, 0xd0, 0x0a, 0x90, 0x81, 0xe0, 0xc3, 0xa6, 0xaf, 0xd3, 0x7f, - 0x99, 0xb2, 0xfc, 0x8e, 0xe3, 0x3f, 0x1f, 0x69, 0xa7, 0xb3, 0x03, 0xec, - 0xf7, 0x7e, 0x7e, 0xa3, 0xbe, 0x7b, 0x7a, 0xb6, 0x1a, 0x23, 0xaa, 0xd6, - 0x79, 0x1d, 0xfb, 0x55, 0xc0, 0x78, 0xce, 0xef, 0x27, 0x4f, 0xf8, 0xac, - 0x66, 0xe0, 0xa7, 0x65, 0xe5, 0x84, 0x77, 0xd2, 0x93, 0x12, 0x52, 0xe2, - 0x8d, 0x41, 0xce, 0x46, 0x48, 0x43, 0x8e, 0x46, 0x94, 0x86, 0x74, 0x92, - 0x1b, 0x92, 0xa8, 0xb9, 0xd1, 0x9e, 0x45, 0x7d, 0x87, 0xed, 0x77, 0xa4, - 0xef, 0x78, 0x2e, 0xb6, 0xd9, 0x91, 0xcc, 0x15, 0x66, 0x11, 0xc0, 0xb2, - 0x70, 0x68, 0xc9, 0xb9, 0x9c, 0x9e, 0xb0, 0x32, 0xf5, 0x07, 0xde, 0x09, - 0xad, 0x61, 0x6c, 0xf4, 0xc8, 0x94, 0xe6, 0x2b, 0x53, 0x88, 0x08, 0xbb, - 0x75, 0x04, 0x97, 0xc3, 0xb7, 0x1b, 0x16, 0x4e, 0xe1, 0x4e, 0x9c, 0x25, - 0x4c, 0x2e, 0x7e, 0x6d, 0xfe, 0xa4, 0xbb, 0xeb, 0x10, 0x20, 0x12, 0x68, - 0xb0, 0x26, 0x44, 0x6c, 0x42, 0x36, 0x46, 0x16, 0xb3, 0x4f, 0x69, 0xb7, - 0x13, 0x49, 0x30, 0x03, 0x78, 0xf1, 0x99, 0x23, 0x43, 0x0c, 0x04, 0xfa, - 0x18, 0xb2, 0x2b, 0x6b, 0x42, 0x01, 0x0a, 0x63, 0x0f, 0x68, 0x23, 0x73, - 0xc3, 0x79, 0x93, 0xf1, 0x2a, 0xd1, 0xb0, 0xea, 0x3a, 0x4e, 0x3a, 0x13, - 0xf2, 0x7a, 0xcc, 0x2c, 0x71, 0xf2, 0xce, 0x07, 0x87, 0x16, 0xc6, 0xc7, - 0x26, 0x61, 0x8e, 0x6d, 0x45, 0x2f, 0x6f, 0xbb, 0xf8, 0x92, 0xb3, 0xe1, - 0xa5, 0xe0, 0x16, 0x43, 0x15, 0xa4, 0xd2, 0xe1, 0x2a, 0xbb, 0xab, 0xed, - 0xbb, 0xe8, 0x6c, 0x92, 0x1e, 0x4a, 0xf2, 0xc4, 0x10, 0x3d, 0xe9, 0x7b, - 0xe1, 0xdf, 0xcd, 0x28, 0x8c, 0x86, 0x7d, 0x29, 0x9b, 0x1c, 0xfc, 0x8b, - 0x81, 0x3f, 0x5b, 0xba, 0x31, 0x93, 0xd9, 0x1b, 0x86, 0xb0, 0x34, 0xa1, - 0x6a, 0xa2, 0x96, 0xec, 0x5b, 0x53, 0x11, 0xa0, 0x19, 0xa1, 0x60, 0xda, - 0x54, 0x71, 0x60, 0x06, 0x7c, 0x0c, 0xb7, 0xf2, 0x70, 0xe7, 0xda, 0x3e, - 0x9d, 0xf3, 0xfe, 0x9f, 0x59, 0xc0, 0x45, 0xed, 0x28, 0x71, 0xcd, 0x2f, - 0xd4, 0xce, 0x81, 0xfe, 0xd3, 0x23, 0xfe, 0x10, 0xdb, 0x99, 0x7d, 0x74, - 0x80, 0x3d, 0xcb, 0xb3, 0xe9, 0x7c, 0x96, 0xb1, 0xc3, 0xce, 0x65, 0x88, - 0xb3, 0x09, 0x9f, 0x06, 0x7b, 0x4b, 0x77, 0x8f, 0x49, 0x98, 0x84, 0x69, - 0x9a, 0xf9, 0x2b, 0x58, 0x25, 0x7b, 0x30, 0x3b, 0x1b, 0x24, 0x6c, 0x37, - 0x03, 0x3a, 0x50, 0x64, 0x69, 0x1c, 0xd2, 0x00, 0x59, 0x62, 0x8d, 0x20, - 0xb4, 0xb6, 0xda, 0xec, 0x99, 0xd1, 0xdc, 0x30, 0xca, 0x38, 0xd0, 0x94, - 0x7d, 0xd5, 0xe0, 0x28, 0x9f, 0xa2, 0x5e, 0x7e, 0x6e, 0x44, 0xc8, 0x45, - 0x6e, 0xcc, 0x4a, 0xb2, 0xf3, 0xbf, 0xd4, 0x42, 0x96, 0x21, 0x81, 0xe0, - 0x5c, 0x85, 0xed, 0x7b, 0x4a, 0x78, 0xec, 0x2b, 0x6c, 0xfd, 0x3c, 0xf3, - 0xcf, 0x00, 0x85, 0x77, 0xf6, 0xaa, 0x48, 0xed, 0x3e, 0xf0, 0x1d, 0xa4, - 0xe6, 0x63, 0x36, 0x3b, 0xd0, 0x42, 0xc3, 0x9c, 0xdf, 0x4f, 0x9a, 0x88, - 0x8d, 0x19, 0x24, 0xe2, 0x58, 0xd1, 0x92, 0xcb, 0x43, 0x71, 0xc0, 0x86, - 0x69, 0x89, 0xfc, 0x0e, 0xdb, 0xde, 0x23, 0xaf, 0x53, 0x1f, 0x9d, 0xcc, - 0x80, 0x91, 0x57, 0x08, 0xc7, 0x3f, 0xd9, 0x09, 0x82, 0x57, 0xe3, 0xf7, - 0xa2, 0x9c, 0x14, 0x53, 0xe9, 0xa8, 0xd4, 0x51, 0xc7, 0x1a, 0x55, 0x42, - 0x45, 0x18, 0xdb, 0x8f, 0x28, 0xb7, 0xee, 0x72, 0x3c, 0xdf, 0x6e, 0x44, - 0x60, 0xa3, 0x2e, 0x3e, 0x60, 0xaa, 0xa1, 0x2e, 0x5c, 0xa6, 0xae, 0x84, - 0x8c, 0x00, 0x2f, 0xc9, 0x77, 0x8c, 0x37, 0xfe, 0x42, 0x58, 0x21, 0x99, - 0x74, 0x3b, 0x88, 0x21, 0x02, 0xfd, 0x3d, 0x39, 0xd2, 0x04, 0x25, 0xed, - 0x2a, 0x90, 0xed, 0x9a, 0xb9, 0x2a, 0xef, 0xb2, 0xd6, 0x19, 0x00, 0xd8, - 0xc1, 0xfb, 0x93, 0x6e, 0xf6, 0x16, 0xa8, 0x66, 0x61, 0xee, 0xc6, 0x6c, - 0x82, 0x09, 0x36, 0x25, 0x31, 0x86, 0x50, 0x1e, 0xda, 0xf2, 0x0d, 0x4c, - 0x71, 0xfa, 0x4d, 0x42, 0xd9, 0xba, 0xbd, 0xe9, 0xee, 0x07, 0x11, 0x51, - 0xf2, 0x37, 0x63, 0x12, 0xac, 0xad, 0xce, 0xe3, 0x12, 0xdc, 0x83, 0xfb, - 0x57, 0x65, 0x5a, 0x0d, 0x8c, 0xae, 0xc5, 0x77, 0xe5, 0x56, 0xa7, 0x80, - 0x13, 0x79, 0xf4, 0x5c, 0xb1, 0x9d, 0xfa, 0xc1, 0xa3, 0xa0, 0xca, 0x16, - 0x8f, 0xbb, 0xbb, 0xbb, 0x55, 0x5f, 0x79, 0xcc, 0xce, 0x15, 0x36, 0xcd, - 0x82, 0x21, 0xb5, 0xbb, 0xc6, 0x2c, 0xf6, 0xce, 0x50, 0xd7, 0x0e, 0x63, - 0x96, 0x71, 0x0f, 0x93, 0x95, 0x84, 0xeb, 0xe3, 0x03, 0x52, 0x0b, 0x83, - 0x4f, 0x17, 0xbe, 0xf4, 0x23, 0xf8, 0x50, 0x35, 0x76, 0x7e, 0xc2, 0x67, - 0x3f, 0xc9, 0x70, 0xeb, 0x1f, 0x4b, 0x80, 0xdb, 0xc8, 0x53, 0x87, 0xd6, - 0xd2, 0x2f, 0x52, 0x43, 0x26, 0x71, 0xf3, 0xf7, 0x11, 0x3f, 0xd1, 0x79, - 0x7a, 0x93, 0x8e, 0xcb, 0xe4, 0x81, 0x0b, 0xd8, 0xbb, 0xc9, 0x35, 0x6d, - 0x3f, 0xcd, 0xb1, 0xb1, 0x55, 0x53, 0x20, 0xd8, 0xf0, 0x23, 0xab, 0xe9, - 0x8c, 0x1e, 0xbe, 0x8a, 0x6e, 0xc4, 0x05, 0x5b, 0x76, 0xb7, 0x8c, 0x8f, - 0xff, 0x48, 0x97, 0x48, 0x3f, 0x22, 0xfc, 0x3e, 0xf2, 0x5b, 0x43, 0x38, - 0x50, 0x96, 0x72, 0xd7, 0x90, 0xe0, 0xfa, 0x00, 0x96, 0x3c, 0x9d, 0x45, - 0xc0, 0x48, 0x22, 0xb6, 0xe6, 0x4e, 0xab, 0x6b, 0xe1, 0xb5, 0x58, 0x7b, - 0xf5, 0xf6, 0x6d, 0x8d, 0xcf, 0xaf, 0xff, 0x90, 0x7b, 0x7b, 0x9c, 0xd6, - 0x39, 0x73, 0xc0, 0x16, 0x76, 0xc2, 0x04, 0xda, 0x6f, 0x7f, 0xc5, 0x04, - 0x4e, 0xe3, 0x3a, 0x11, 0xb1, 0x63, 0x58, 0xe3, 0x42, 0x98, 0xd2, 0x34, - 0x4c, 0xbe, 0x90, 0x99, 0x05, 0x94, 0x66, 0x62, 0xe6, 0x29, 0x07, 0x6b, - 0x74, 0x59, 0x2d, 0x34, 0x3c, 0xf3, 0xb1, 0x6a, 0x86, 0x90, 0x1a, 0x5b, - 0xa7, 0xb0, 0x44, 0xfa, 0x2a, 0xb8, 0xcc, 0xd4, 0xea, 0xf0, 0x86, 0xaf, - 0x67, 0x47, 0xd0, 0x99, 0x58, 0x1f, 0x31, 0x4f, 0xca, 0xc0, 0xee, 0xbc, - 0x47, 0x49, 0x1a, 0xdd, 0xcd, 0x6b, 0x3e, 0x2e, 0xb3, 0xdd, 0xe6, 0xd3, - 0xd1, 0x08, 0x4f, 0x87, 0x12, 0x6a, 0x1a, 0x76, 0x66, 0x39, 0x9a, 0xe3, - 0x46, 0x08, 0x0b, 0x0a, 0x2d, 0xa6, 0x85, 0xf7, 0x7d, 0x15, 0x5f, 0xc7, - 0x55, 0xab, 0x63, 0x81, 0x3a, 0x70, 0x61, 0xcd, 0x53, 0xff, 0x3d, 0x98, - 0x6d, 0x05, 0x00, 0x71, 0x08, 0x33, 0x0e, 0x71, 0xc0, 0x34, 0x95, 0x25, - 0x53, 0x14, 0xc1, 0xd6, 0x38, 0xd6, 0xef, 0x7f, 0xae, 0x4b, 0x6d, 0xe4, - 0xef, 0xd6, 0x2a, 0x0a, 0x06, 0x4c, 0xb6, 0x80, 0xde, 0x1a, 0x69, 0xae, - 0x07, 0xb7, 0xa6, 0x5b, 0x23, 0x6d, 0xf3, 0x33, 0xe3, 0xe8, 0x6a, 0xb2, - 0x15, 0x28, 0x60, 0xf1, 0x30, 0x1f, 0xd7, 0x99, 0xf7, 0x1b, 0x56, 0x31, - 0x23, 0xee, 0x23, 0x4b, 0x8c, 0x64, 0xf7, 0xfc, 0xa9, 0x7f, 0x03, 0x4a, - 0xbc, 0xc0, 0x7e, 0x2d, 0x80, 0xca, 0xa8, 0xe4, 0xd5, 0xf0, 0xf1, 0xad, - 0x38, 0xab, 0x9e, 0x47, 0xdc, 0x72, 0xc4, 0x5e, 0x85, 0xa3, 0xe2, 0xd1, - 0x7f, 0xa9, 0xc9, 0xe4, 0x96, 0xea, 0x88, 0x94, 0x02, 0x77, 0x95, 0x15, - 0xe6, 0x59, 0x97, 0xd4, 0x5d, 0xdb, 0xc7, 0x9a, 0x4b, 0x28, 0x11, 0x93, - 0x15, 0x5c, 0x08, 0x7a, 0x70, 0x8f, 0xcc, 0x32, 0x14, 0x6d, 0xc8, 0xcd, - 0x2d, 0xf1, 0x6d, 0xe1, 0xda, 0xed, 0xf7, 0xf3, 0xff, 0x9d, 0xc9, 0x2a, - 0x4e, 0x6c, 0xd1, 0xef, 0x30, 0xe6, 0x43, 0x96, 0x22, 0x96, 0x4f, 0xd5, - 0x9e, 0x2a, 0xe8, 0x90, 0x48, 0x9c, 0x01, 0x03, 0x01, 0x54, 0x72, 0x2b, - 0xc7, 0x4f, 0x8f, 0xc1, 0x9d, 0xb4, 0xf8, 0xe8, 0x49, 0xd7, 0xcc, 0x43, - 0x7b, 0x75, 0x5a, 0xec, 0xad, 0xef, 0xd1, 0xff, 0x41, 0xce, 0x2e, 0x48, - 0xc8, 0xf9, 0xaa, 0x88, 0x7a, 0x62, 0x38, 0x8d, 0x4d, 0xfb, 0x35, 0x2d, - 0x20, 0x7c, 0x13, 0x90, 0xb2, 0x39, 0x60, 0xf0, 0xfa, 0x20, 0x31, 0x0d, - 0x27, 0x44, 0x41, 0x78, 0xeb, 0x39, 0x07, 0x6f, 0xe2, 0xa9, 0x15, 0xbb, - 0xd6, 0x70, 0xaa, 0x28, 0xe2, 0xfd, 0xbc, 0x29, 0xf1, 0x66, 0xf4, 0x74, - 0x8c, 0x1d, 0x60, 0xce, 0xec, 0x39, 0x69, 0xd1, 0xa2, 0xd7, 0x64, 0x26, - 0xd9, 0xaf, 0xb6, 0x09, 0xec, 0x93, 0x77, 0xd7, 0x8b, 0xd6, 0x60, 0xc3, - 0x84, 0x78, 0xef, 0x2a, 0x3e, 0xc0, 0x20, 0x8a, 0x6f, 0xd9, 0xae, 0x26, - 0x1e, 0x06, 0xe4, 0x0e, 0xac, 0xe1, 0xda, 0x5d, 0x29, 0xcc, 0x86, 0xb1, - 0xc6, 0xe6, 0x3e, 0xe5, 0xda, 0xf2, 0xdb, 0xe4, 0xa2, 0x51, 0xca, 0x64, - 0x87, 0x33, 0x7c, 0xf0, 0x35, 0x62, 0x8c, 0x82, 0xea, 0x8f, 0xde, 0x8e, - 0xae, 0x08, 0x0f, 0x28, 0x0d, 0xd5, 0x25, 0x5c, 0x0a, 0xdd, 0xbe, 0xf9, - 0xdc, 0x57, 0xac, 0xd1, 0x79, 0xcb, 0x03, 0xb9, 0x31, 0xea, 0xa2, 0x66, - 0xc8, 0x6e, 0xa0, 0xfa, 0x51, 0x93, 0xd5, 0xae, 0x75, 0xef, 0xc9, 0x3e, - 0xe0, 0xf2, 0x25, 0xab, 0x12, 0xe2, 0x40, 0xf3, 0xf3, 0x2a, 0x77, 0x58, - 0x87, 0x73, 0x96, 0x26, 0x52, 0x8b, 0x83, 0x88, 0x8f, 0xa1, 0x81, 0x3a, - 0xa1, 0xff, 0x3c, 0xd1, 0x37, 0xdf, 0xa5, 0x98, 0x12, 0xcd, 0xd8, 0xf3, - 0x29, 0x5a, 0x98, 0xe9, 0xcd, 0x23, 0x1a, 0xd0, 0xd9, 0x21, 0xc6, 0x69, - 0xfc, 0xd1, 0xe5, 0x44, 0x00, 0xe3, 0xe4, 0x2e, 0x7c, 0xe9, 0xf4, 0x54, - 0xcf, 0x8c, 0xeb, 0xed, 0x1a, 0xd3, 0x31, 0x69, 0xa0, 0x18, 0x2f, 0xd0, - 0x80, 0xae, 0x3d, 0xed, 0x2e, 0xec, 0x83, 0xef, 0x17, 0x44, 0x31, 0xb6, - 0xc1, 0x9c, 0xfe, 0x3d, 0x8a, 0xf6, 0x3c, 0x57, 0x55, 0xc9, 0x27, 0x4c, - 0x62, 0x33, 0x4f, 0xfe, 0x76, 0xff, 0x04, 0x0d, 0x71, 0x0e, 0xe7, 0x1d, - 0xe2, 0xf5, 0x73, 0xeb, 0xaf, 0x79, 0x47, 0xf7, 0xc5, 0x48, 0xa0, 0x84, - 0x7f, 0x3b, 0xac, 0x2a, 0xdd, 0x32, 0x87, 0x96, 0x19, 0x02, 0x6d, 0xbf, - 0x76, 0x05, 0xba, 0xb0, 0x10, 0x66, 0xd8, 0x4b, 0x03, 0x38, 0xa2, 0xcd, - 0x91, 0x7d, 0x6b, 0x06, 0xc7, 0xa9, 0x6c, 0x94, 0x20, 0x3d, 0xda, 0x94, - 0xe4, 0x6c, 0x71, 0xed, 0x48, 0xce, 0x52, 0xc0, 0x73, 0x7a, 0xdc, 0x08, - 0x47, 0xf6, 0x7b, 0x65, 0x40, 0x39, 0xbb, 0xc3, 0x64, 0xe4, 0x7e, 0xde, - 0xed, 0x0b, 0x62, 0xbe, 0xef, 0x9b, 0x9a, 0x4e, 0x43, 0x60, 0x64, 0x9f, - 0x6d, 0xe3, 0x3e, 0x30, 0xe6, 0x5b, 0xde, 0xf3, 0x39, 0x7b, 0xfd, 0x03, - 0xcc, 0x25, 0x66, 0x67, 0x18, 0x25, 0x63, 0xb9, 0x49, 0x80, 0xb6, 0x30, - 0x66, 0x06, 0xf2, 0x30, 0x25, 0xeb, 0x37, 0x53, 0x26, 0x74, 0xe1, 0x20, - 0xa5, 0xec, 0xac, 0xbd, 0xb7, 0x3e, 0x0e, 0x1a, 0x2c, 0x9c, 0x79, 0xf1, - 0x0e, 0xc7, 0x82, 0xd2, 0x6b, 0x80, 0x2f, 0xf5, 0x1f, 0xbb, 0xeb, 0x10, - 0x74, 0x34, 0x09, 0x86, 0x1d, 0xab, 0x0e, 0x5b, 0xb6, 0x32, 0x46, 0x5a, - 0xc3, 0xd6, 0x9f, 0x76, 0x11, 0x00, 0xe4, 0xc6, 0xcf, 0x89, 0xa9, 0xd0, - 0x23, 0xa8, 0x0d, 0x66, 0x37, 0xaf, 0xe4, 0x93, 0x0b, 0xd0, 0x58, 0x95, - 0x4f, 0xc3, 0x61, 0xa9, 0xa2, 0x2b, 0xf7, 0xb8, 0xc7, 0x40, 0x4d, 0x4d, - 0xfc, 0x08, 0x08, 0x5e, 0xb9, 0xdd, 0x97, 0xa8, 0xc6, 0x01, 0xf8, 0xf9, - 0x5b, 0xc8, 0x0a, 0xc0, 0x27, 0xa4, 0x79, 0xe8, 0x7a, 0xa9, 0xf6, 0x61, - 0x75, 0xd2, 0xf8, 0xe5, 0x78, 0xbd, 0xef, 0x40, 0x58, 0xad, 0x88, 0x1b, - 0x24, 0xda, 0xe5, 0x99, 0x24, 0xf6, 0x67, 0xc1, 0x72, 0x21, 0xb0, 0x68, - 0x4d, 0xf4, 0xfe, 0x9a, 0x7b, 0xce, 0x04, 0x25, 0x8a, 0x89, 0x44, 0x10, - 0x5f, 0x92, 0xbf, 0x47, 0x68, 0xb1, 0x51, 0x1f, 0x56, 0x37, 0x37, 0x51, - 0x2c, 0xa3, 0xb5, 0x61, 0xbb, 0xa3, 0x1f, 0xd7, 0x6a, 0xac, 0xa6, 0xdb, - 0xd8, 0xaa, 0xfe, 0x78, 0x84, 0xc5, 0x8d, 0xe5, 0xa4, 0x0c, 0x53, 0x75, - 0x95, 0xc8, 0x61, 0xb3, 0x8d, 0x4e, 0x9c, 0x71, 0x20, 0xf4, 0xb4, 0x03, - 0x3b, 0x31, 0xa3, 0xf3, 0x7c, 0x14, 0xdc, 0xf6, 0xb5, 0x61, 0x54, 0x5e, - 0xb8, 0x51, 0xe8, 0xb5, 0x02, 0xae, 0x46, 0x83, 0xee, 0x6d, 0x86, 0xaf, - 0x63, 0x2b, 0x76, 0xa8, 0xbb, 0x97, 0xab, 0xe2, 0x34, 0x68, 0x53, 0xc6, - 0x6a, 0xac, 0x13, 0xda, 0x1f, 0x53, 0x15, 0xba, 0x59, 0x31, 0x3f, 0x60, - 0x3b, 0x7b, 0x5e, 0xbf, 0x17, 0x87, 0x17, 0xd3, 0xd4, 0x04, 0x0a, 0x7e, - 0x9a, 0x12, 0x5d, 0x02, 0x00, 0xc4, 0x64, 0x2f, 0xb5, 0x2d, 0xe2, 0x6b, - 0x11, 0xc0, 0xe5, 0xb4, 0xbd, 0x3c, 0xcd, 0x8b, 0xb5, 0xf7, 0x23, 0x2e, - 0x9d, 0x75, 0xa4, 0xcd, 0x6a, 0xc4, 0xfc, 0xfa, 0xa0, 0x84, 0x61, 0x50, - 0x79, 0xfc, 0xf2, 0x54, 0x8f, 0xf8, 0xd2, 0x9f, 0x95, 0xe0, 0x6c, 0x1f, - 0x1f, 0xe9, 0xde, 0xac, 0xf1, 0x94, 0x3a, 0xa9, 0xbc, 0xb2, 0x60, 0xae, - 0x7f, 0x36, 0xc0, 0x36, 0x17, 0x18, 0x54, 0x2c, 0x1d, 0x56, 0xec, 0xc2, - 0xc7, 0xbf, 0x07, 0x0d, 0xf4, 0xf1, 0x98, 0xc2, 0x11, 0xc9, 0x15, 0xff, - 0x8a, 0x1c, 0xc0, 0xc1, 0xc2, 0x2c, 0x8d, 0x5d, 0x9f, 0x18, 0xe7, 0x15, - 0x03, 0x96, 0xfb, 0xad, 0xe0, 0xc3, 0x4c, 0xed, 0xad, 0x66, 0xfd, 0x09, - 0xb8, 0xb7, 0x66, 0xe7, 0xc7, 0x3d, 0xb3, 0x15, 0x86, 0x69, 0xd9, 0x6e, - 0x34, 0x38, 0xe2, 0x01, 0x88, 0xa2, 0x89, 0x47, 0x4c, 0x9e, 0x64, 0x44, - 0xf9, 0x23, 0x91, 0x8f, 0xf6, 0x59, 0xb4, 0xae, 0xe8, 0x68, 0x5c, 0xa8, - 0xc1, 0xdb, 0xe6, 0xb6, 0x2e, 0x61, 0x21, 0xfc, 0xd4, 0x3e, 0xbf, 0x88, - 0xc0, 0x40, 0xe4, 0x03, 0xc0, 0x19, 0x8b, 0xaa, 0xff, 0x29, 0xce, 0xd1, - 0x34, 0xce, 0xad, 0xbe, 0x03, 0x32, 0x16, 0xdb, 0x4b, 0xdb, 0xed, 0x32, - 0x2f, 0x79, 0x08, 0xff, 0xba, 0xf2, 0xaa, 0x89, 0x6c, 0x85, 0x0b, 0x5b, - 0x6c, 0x64, 0x7e, 0x25, 0x81, 0x90, 0xec, 0xae, 0xbd, 0x15, 0x36, 0x8a, - 0x94, 0xd8, 0x03, 0x2f, 0x0a, 0x52, 0x85, 0x2c, 0xd6, 0x1f, 0x18, 0x6a, - 0x0b, 0x7c, 0xee, 0x49, 0xb7, 0x59, 0xff, 0xd5, 0xf0, 0xe7, 0x8e, 0x32, - 0xb1, 0xc5, 0x00, 0x09, 0x77, 0x07, 0x65, 0x62, 0x21, 0xd4, 0x3f, 0x49, - 0x50, 0x91, 0x17, 0x57, 0xa7, 0xad, 0x9d, 0x35, 0xb3, 0x63, 0xcb, 0x14, - 0x01, 0xe4, 0xec, 0x7a, 0xb5, 0x34, 0xd3, 0x1b, 0x7e, 0xb3, 0x12, 0xcc, - 0x05, 0x68, 0x02, 0x29, 0xa8, 0x62, 0x7b, 0xaa, 0xf9, 0x5c, 0xc2, 0x9c, - 0x78, 0x3b, 0x39, 0x47, 0x39, 0x72, 0x52, 0x5d, 0x8e, 0x68, 0xad, 0xf5, - 0xe9, 0x82, 0x7d, 0xbd, 0xf3, 0xcf, 0x2a, 0xc7, 0x65, 0x31, 0xfa, 0xb0, - 0xec, 0x8e, 0x36, 0xbf, 0xb5, 0x4d, 0xd5, 0x49, 0x07, 0x7e, 0xe4, 0xe2, - 0xcf, 0xbb, 0xc9, 0x03, 0xdc, 0x2d, 0xa6, 0x09, 0xc7, 0xf3, 0x2c, 0x39, - 0xa5, 0x3a, 0x07, 0xc7, 0x7a, 0x65, 0x56, 0xd5, 0x59, 0x0f, 0x4b, 0x4e, - 0x7d, 0x83, 0x84, 0x2a, 0xdc, 0x18, 0x8a, 0xcb, 0x19, 0xeb, 0x6d, 0xe7, - 0x6d, 0x64, 0xf2, 0x22, 0xf3, 0xc2, 0xb9, 0x73, 0x80, 0x14, 0x7f, 0xef, - 0xa0, 0xf4, 0xf1, 0xec, 0x3f, 0xc9, 0xf8, 0x84, 0x83, 0xa2, 0x3a, 0x01, - 0xcc, 0x5f, 0x27, 0x73, 0x03, 0x40, 0x10, 0xc4, 0x75, 0xb4, 0xaa, 0x5f, - 0x9a, 0xf9, 0x74, 0x54, 0x9d, 0xd5, 0x41, 0x8a, 0x7e, 0x79, 0x24, 0x7a, - 0xf5, 0x38, 0xf1, 0xfd, 0x0f, 0x3b, 0x2e, 0xab, 0x67, 0x73, 0x4b, 0x0d, - 0xa1, 0xf2, 0x5d, 0x05, 0xe1, 0x8e, 0x87, 0xff, 0xb1, 0x49, 0x0c, 0xa4, - 0xa3, 0xec, 0xfd, 0xd7, 0xc6, 0x93, 0x8d, 0xb1, 0x37, 0x71, 0xcb, 0xfc, - 0x04, 0xd5, 0x83, 0x4f, 0xdb, 0xaa, 0xe8, 0xfb, 0x4a, 0xa0, 0x27, 0x98, - 0xd4, 0x9e, 0x16, 0x1c, 0x2b, 0x91, 0x4a, 0x72, 0xa5, 0xa3, 0x54, 0x9a, - 0x71, 0xfb, 0xca, 0xa2, 0xcb, 0x28, 0x0e, 0xea, 0xa8, 0x4f, 0x89, 0x20, - 0x6f, 0x9b, 0x50, 0xae, 0x17, 0x5c, 0xd0, 0x4f, 0x2c, 0x76, 0x85, 0xe6, - 0x1a, 0xf5, 0x3b, 0x53, 0x7a, 0x34, 0x36, 0xaa, 0x94, 0x03, 0x34, 0xd7, - 0x89, 0xf5, 0xd7, 0x5e, 0x57, 0x63, 0xf4, 0x63, 0x81, 0xc2, 0x84, 0x48, - 0x73, 0x84, 0x4e, 0x85, 0xee, 0x6e, 0xf9, 0xc7, 0xa0, 0xf5, 0xa0, 0x93, - 0x1f, 0xed, 0x8e, 0x90, 0x81, 0x64, 0xa2, 0xe0, 0xde, 0xc1, 0xf4, 0xc0, - 0x0d, 0x01, 0x13, 0x77, 0x59, 0x97, 0x5a, 0x70, 0xf3, 0x56, 0x12, 0x16, - 0x2f, 0xd3, 0x01, 0x28, 0xd7, 0xd3, 0x82, 0x80, 0xf7, 0x5c, 0xf5, 0xea, - 0x5e, 0x47, 0x31, 0x77, 0xb7, 0x81, 0x3f, 0x7c, 0xe3, 0x0d, 0xe2, 0x2d, - 0x7c, 0x66, 0x36, 0xd3, 0x92, 0xbf, 0x7d, 0xfe, 0x94, 0x4f, 0xd2, 0x51, - 0x64, 0xdc, 0x14, 0x5e, 0x6f, 0x38, 0x93, 0x46, 0x58, 0xdd, 0xcc, 0xbd, - 0xb2, 0x41, 0x4f, 0xe0, 0xfe, 0xa3, 0x19, 0x01, 0xd9, 0xa6, 0x35, 0x13, - 0xb6, 0x70, 0x9d, 0xb4, 0x50, 0x54, 0x2b, 0x50, 0xa8, 0x4b, 0x49, 0x7d, - 0xd8, 0x77, 0x52, 0xfc, 0xed, 0x05, 0x9b, 0xeb, 0x11, 0x60, 0x0d, 0xe9, - 0x93, 0x90, 0x18, 0xbf, 0xe3, 0xd4, 0xe7, 0xcc, 0x23, 0xde, 0x13, 0x8e, - 0x73, 0x97, 0x5c, 0x2b, 0x69, 0x0c, 0x1c, 0xde, 0x9a, 0xff, 0x62, 0x90, - 0x3e, 0x88, 0x2a, 0xcf, 0x23, 0x66, 0x3f, 0xb1, 0x29, 0x46, 0xac, 0xee, - 0x82, 0xe4, 0x66, 0x18, 0xe6, 0x8e, 0xf7, 0x8d, 0xe8, 0x8e, 0x5c, 0x70, - 0xa9, 0x26, 0xb0, 0xae, 0xdc, 0xe5, 0xaa, 0x60, 0xfe, 0xa4, 0x1f, 0xfd, - 0x57, 0x26, 0xbc, 0xca, 0x10, 0xdd, 0xf8, 0x03, 0x51, 0xb6, 0xb7, 0x53, - 0x87, 0xb1, 0xaa, 0xb9, 0x85, 0x6c, 0x99, 0x83, 0xf3, 0x3e, 0x56, 0xe6, - 0x68, 0x22, 0xb4, 0x73, 0xef, 0x13, 0x5b, 0x87, 0x8f, 0xc0, 0x90, 0x7b, - 0xf3, 0xf4, 0x63, 0x07, 0x00, 0x5b, 0x6d, 0xad, 0xe9, 0x06, 0x0a, 0xf0, - 0x81, 0xaa, 0xf4, 0x85, 0x0d, 0x07, 0x63, 0x97, 0xbd, 0xe8, 0x1f, 0x75, - 0xee, 0xbf, 0x46, 0xa9, 0xa4, 0x56, 0x30, 0x66, 0x12, 0xbe, 0x1a, 0x68, - 0x45, 0x8c, 0xc3, 0x1a, 0x8a, 0x9d, 0xa8, 0xde, 0xb9, 0x30, 0x32, 0x9b, - 0xaf, 0x75, 0x74, 0x65, 0xd5, 0x53, 0x4c, 0x7b, 0x4e, 0x8d, 0x7c, 0x4c, - 0xc7, 0x62, 0x40, 0x73, 0xad, 0x87, 0x66, 0x81, 0x91, 0x82, 0x8b, 0xa4, - 0xa3, 0x09, 0xb1, 0x8f, 0x5d, 0x92, 0x7a, 0xfa, 0xaf, 0xac, 0x54, 0x02, - 0x3f, 0x2e, 0x0d, 0xe1, 0xb1, 0x89, 0x74, 0xdb, 0x27, 0x15, 0xa4, 0x77, - 0xd8, 0x1b, 0x1f, 0xb1, 0x8f, 0x3e, 0x80, 0x69, 0x23, 0xeb, 0xdd, 0x4b, - 0x76, 0x72, 0xf0, 0xb8, 0xd5, 0x7f, 0xbd, 0xce, 0x3a, 0x0d, 0xba, 0xe2, - 0x08, 0x31, 0xc8, 0x1c, 0x26, 0x2f, 0x7f, 0xb6, 0x38, 0x41, 0xeb, 0x9b, - 0x43, 0x47, 0x0f, 0x18, 0x93, 0xb1, 0xab, 0xda, 0xaf, 0xe6, 0xaa, 0xbd, - 0x49, 0x8e, 0x97, 0x97, 0x16, 0x38, 0x80, 0x2d, 0xb2, 0x01, 0x0e, 0x56, - 0x30, 0x23, 0xa0, 0xc4, 0x59, 0x55, 0xbd, 0x2d, 0x3d, 0x11, 0xe6, 0xfa, - 0x85, 0xea, 0xed, 0xda, 0x2d, 0x59, 0x73, 0x77, 0x1f, 0xd2, 0x13, 0x58, - 0x76, 0x8c, 0x31, 0xb7, 0x9c, 0xa9, 0x77, 0x17, 0x60, 0xcd, 0x37, 0x9d, - 0x02, 0x82, 0x61, 0x6f, 0x1c, 0xfd, 0xf0, 0x6b, 0xfb, 0x7f, 0x7f, 0xe6, - 0x22, 0x95, 0x70, 0x5e, 0x05, 0xf0, 0xda, 0xef, 0xa9, 0xe0, 0xd1, 0xfb, - 0x9a, 0xf9, 0x21, 0xee, 0x9c, 0xfb, 0x28, 0x36, 0xca, 0xe9, 0x0c, 0xad, - 0xb8, 0x3c, 0xf3, 0xa4, 0x02, 0x11, 0x6a, 0x88, 0x3b, 0xec, 0xe0, 0x59, - 0x62, 0xa7, 0x84, 0x16, 0x64, 0x18, 0x17, 0xe9, 0x06, 0x98, 0xc9, 0x17, - 0xd5, 0xbd, 0xe0, 0x2c, 0x58, 0x2f, 0xd4, 0xac, 0x8b, 0x5d, 0x33, 0xbd, - 0x65, 0xef, 0x7d, 0x5b, 0x55, 0x83, 0xe6, 0x70, 0x23, 0xfa, 0x67, 0xa9, - 0xcb, 0x71, 0x3c, 0x70, 0x12, 0x11, 0x29, 0x51, 0x0e, 0x11, 0x29, 0x23, - 0x52, 0x72, 0xbf, 0x13, 0x99, 0x04, 0xfd, 0x44, 0x76, 0x4b, 0x25, 0xcf, - 0x1c, 0x84, 0x25, 0x7d, 0xcc, 0xaa, 0x7b, 0x0e, 0x3d, 0x0a, 0x4d, 0x87, - 0x94, 0x8a, 0xf1, 0x33, 0xe0, 0x77, 0x15, 0x2c, 0x0b, 0xc7, 0xb0, 0xf4, - 0x41, 0xe3, 0xb9, 0xe1, 0xc8, 0x6e, 0xe8, 0x66, 0x76, 0x6f, 0x41, 0xb7, - 0x8f, 0xf7, 0xac, 0x2b, 0xae, 0xe6, 0x7b, 0x45, 0xad, 0x12, 0x3a, 0x49, - 0xe5, 0x35, 0x14, 0xe1, 0x8b, 0x3f, 0x36, 0xa5, 0x23, 0x6e, 0x43, 0x42, - 0x4c, 0x1c, 0x14, 0xb8, 0x73, 0x88, 0x22, 0x33, 0x0e, 0x50, 0xe3, 0x7c, - 0xc5, 0xa2, 0xdf, 0x24, 0x62, 0x6b, 0xd8, 0x2f, 0x89, 0x11, 0x53, 0xb5, - 0x90, 0x81, 0x48, 0x5d, 0xab, 0xe8, 0x45, 0xd6, 0x12, 0x0a, 0x38, 0x6b, - 0x24, 0x17, 0x74, 0x0c, 0x8d, 0xad, 0x9d, 0x19, 0x01, 0x77, 0xea, 0x65, - 0xa7, 0x77, 0x00, 0x2c, 0x9d, 0x4b, 0x86, 0x6a, 0x75, 0x61, 0x4d, 0x79, - 0xc7, 0x7d, 0xc8, 0x2c, 0x90, 0x76, 0xbe, 0x41, 0x78, 0x8d, 0xcb, 0x63, - 0x25, 0xff, 0x8d, 0x8c, 0xa8, 0x02, 0x17, 0x9e, 0x96, 0x06, 0xd8, 0x9a, - 0xac, 0x78, 0x69, 0x7a, 0x99, 0x9e, 0xdf, 0x7d, 0x07, 0x52, 0xf1, 0x36, - 0x05, 0x58, 0x0d, 0x67, 0xe3, 0x30, 0x73, 0x3f, 0xd1, 0x33, 0x41, 0x12, - 0x3f, 0x5c, 0x6d, 0xad, 0xc1, 0x7f, 0xef, 0x4c, 0x94, 0x18, 0x6a, 0x58, - 0x6a, 0xb4, 0x76, 0xe1, 0x03, 0x27, 0x8f, 0xb2, 0x8f, 0xa7, 0x37, 0xca, - 0xbe, 0x1b, 0x5d, 0xd6, 0x16, 0x70, 0x61, 0xf5, 0xbe, 0x4b, 0x02, 0x7e, - 0x1f, 0xb5, 0x0b, 0x96, 0xf9, 0x24, 0x45, 0x77, 0x03, 0x27, 0x32, 0xe4, - 0x03, 0xcd, 0x05, 0x95, 0x84, 0x72, 0x68, 0xdd, 0x40, 0x42, 0x56, 0xad, - 0xc9, 0xc6, 0x5a, 0x9a, 0x24, 0x83, 0x24, 0x61, 0x5d, 0x74, 0x8d, 0xff, - 0xb4, 0x01, 0x1d, 0x81, 0xd3, 0x8c, 0xae, 0x25, 0xd9, 0xc1, 0x72, 0x81, - 0xec, 0x3e, 0xcc, 0x9c, 0x1b, 0x5e, 0x44, 0xea, 0xaa, 0xd8, 0x2b, 0x19, - 0x4c, 0x48, 0xaf, 0x05, 0xad, 0x9b, 0x4e, 0x29, 0x81, 0xa6, 0xd2, 0x4b, - 0xb4, 0xf8, 0xdb, 0x61, 0x2c, 0x5a, 0x0c, 0xd0, 0x9a, 0xa0, 0x71, 0x00, - 0x02, 0x89, 0xc0, 0x30, 0x01, 0xe0, 0x9c, 0x81, 0x92, 0x49, 0x42, 0xb6, - 0x32, 0xdb, 0x3d, 0x3e, 0xd0, 0x33, 0xe1, 0x3d, 0xe3, 0xf1, 0x3e, 0xc2, - 0x4f, 0x8d, 0xec, 0xa6, 0xe2, 0xcc, 0x3d, 0xef, 0x40, 0x7e, 0xbd, 0x47, - 0x36, 0xff, 0x6e, 0x17, 0x0a, 0x7e, 0x5d, 0x58, 0xe4, 0x2a, 0x49, 0xe4, - 0x62, 0x22, 0x46, 0xc0, 0x20, 0xa8, 0x17, 0x77, 0x80, 0x76, 0x99, 0xa4, - 0x20, 0x2b, 0x2c, 0xc6, 0x66, 0xb8, 0x61, 0x72, 0x41, 0xbb, 0x12, 0x94, - 0x7a, 0xed, 0xf5, 0x4c, 0x18, 0x1c, 0x2c, 0x79, 0x8b, 0x55, 0x8f, 0x2d, - 0xc7, 0x43, 0x96, 0xae, 0xa3, 0xf2, 0x05, 0x08, 0xe4, 0x35, 0x90, 0x68, - 0x86, 0x6c, 0x05, 0xc1, 0xd3, 0xa2, 0xa5, 0xf8, 0x11, 0x00, 0xda, 0x53, - 0xa5, 0x36, 0xbd, 0x33, 0x24, 0xcf, 0x9b, 0x67, 0x4d, 0x4c, 0x1a, 0x58, - 0x66, 0x67, 0x15, 0x36, 0xf2, 0xce, 0xe0, 0x18, 0x24, 0x91, 0xf8, 0x8b, - 0x3a, 0x6d, 0xfd, 0xde, 0x04, 0x6a, 0x9a, 0x36, 0x29, 0xe9, 0x69, 0x61, - 0xeb, 0x83, 0xd7, 0xcc, 0x83, 0xac, 0x46, 0x9c, 0xa3, 0x40, 0x5c, 0xba, - 0x97, 0x72, 0xb6, 0xfc, 0x4b, 0x93, 0xb1, 0xee, 0x6d, 0x1a, 0xac, 0x73, - 0x14, 0x0c, 0x20, 0x20, 0xf0, 0x3a, 0xb0, 0x06, 0xfd, 0xf2, 0x0d, 0x3e, - 0xb1, 0xcd, 0x25, 0x57, 0xc9, 0x92, 0xf3, 0x80, 0x3a, 0x44, 0x9b, 0x74, - 0x68, 0xf3, 0x67, 0x4f, 0xf2, 0x1f, 0x24, 0xc1, 0x3f, 0x99, 0x99, 0x4f, - 0x01, 0x05, 0x6e, 0x56, 0x56, 0xec, 0xa3, 0x19, 0x7e, 0xbf, 0x10, 0xec, - 0x83, 0x2d, 0x3f, 0x0f, 0x81, 0x06, 0x57, 0x84, 0x27, 0xd5, 0x5b, 0xac, - 0xf4, 0x37, 0xcf, 0x7c, 0x10, 0x0c, 0xa9, 0x81, 0xd4, 0x19, 0x6e, 0x0c, - 0x36, 0x49, 0x14, 0x76, 0xd0, 0x02, 0x54, 0x8d, 0xd3, 0xb7, 0x86, 0xc0, - 0xf4, 0x4f, 0xc6, 0x52, 0xec, 0x94, 0x57, 0xc1, 0x9d, 0x11, 0x29, 0x4f, - 0x39, 0x4f, 0x44, 0x5f, 0x81, 0x27, 0x69, 0xda, 0xac, 0x51, 0xe6, 0x1c, - 0x7e, 0x13, 0xee, 0xa5, 0x33, 0xcc, 0xc8, 0x90, 0x1d, 0x8d, 0xdf, 0x58, - 0xd1, 0x8a, 0xdb, 0x50, 0x91, 0x4e, 0x74, 0xdd, 0x12, 0xc1, 0x2d, 0xec, - 0xf9, 0x6c, 0xe6, 0x72, 0xdc, 0x37, 0xc4, 0x89, 0x7d, 0xc8, 0x8d, 0xed, - 0x84, 0x89, 0x2f, 0x83, 0xf1, 0x28, 0x78, 0x89, 0xff, 0x6d, 0x0f, 0x6c, - 0x12, 0x62, 0x1f, 0xfc, 0xb7, 0x58, 0x90, 0x2b, 0x35, 0xfd, 0x83, 0xfd, - 0xb9, 0x17, 0xdd, 0xa1, 0x90, 0xf1, 0x7e, 0x75, 0x9f, 0x5a, 0x62, 0x0b, - 0x5b, 0xd6, 0x70, 0x31, 0x54, 0x10, 0x4c, 0x1d, 0x5d, 0x36, 0x33, 0x31, - 0x94, 0x21, 0x23, 0xa1, 0xc4, 0x80, 0x28, 0x03, 0x8f, 0x59, 0x3e, 0x6a, - 0x3d, 0x68, 0x5b, 0xdf, 0xbf, 0xfb, 0x8f, 0x87, 0x3d, 0x8d, 0x74, 0xc8, - 0xc8, 0x47, 0x33, 0xfb, 0x8a, 0x35, 0xdb, 0x3f, 0xf1, 0x04, 0x8d, 0x2c, - 0x13, 0x1a, 0x18, 0xb2, 0x72, 0x4f, 0xb0, 0x7f, 0x89, 0xd1, 0x0b, 0xcb, - 0x71, 0x0c, 0xb9, 0x08, 0xab, 0x83, 0x11, 0x5d, 0xb8, 0x72, 0xe0, 0x5e, - 0xd8, 0xd1, 0x8e, 0x0b, 0x6f, 0x31, 0x1c, 0x4f, 0x87, 0x2c, 0x1a, 0x81, - 0x34, 0x9d, 0x4e, 0x8a, 0xb8, 0x8a, 0x8e, 0xce, 0xba, 0xd1, 0x82, 0x52, - 0x8c, 0x1e, 0xd2, 0x86, 0x56, 0x0e, 0x5b, 0xb5, 0x70, 0x94, 0x9b, 0xd8, - 0x04, 0x05, 0xf8, 0x60, 0x16, 0x5d, 0x74, 0x80, 0x65, 0x85, 0x95, 0x86, - 0xef, 0x09, 0x1a, 0xe2, 0xed, 0xde, 0x24, 0xf5, 0x6c, 0x75, 0xf3, 0xdb, - 0xdb, 0xfb, 0x84, 0x32, 0x76, 0x16, 0xe9, 0x34, 0xb4, 0x40, 0x73, 0xd3, - 0x6f, 0xa7, 0x06, 0x32, 0x93, 0xd1, 0xe1, 0x3a, 0xe3, 0x61, 0x94, 0xe6, - 0x87, 0x7f, 0x6c, 0x9f, 0x65, 0xfa, 0xd4, 0x95, 0xdc, 0xad, 0xe4, 0x9a, - 0x6f, 0x44, 0x69, 0x12, 0xb4, 0xf7, 0x81, 0x6e, 0x59, 0x4c, 0x1f, 0xeb, - 0x4a, 0xd1, 0xd5, 0x87, 0x19, 0x9a, 0xbe, 0xe0, 0xe0, 0x49, 0x88, 0xe8, - 0xab, 0x79, 0xdd, 0xb4, 0x9d, 0x1f, 0x7a, 0xc2, 0xad, 0xd5, 0x83, 0x01, - 0x31, 0xe8, 0xc6, 0x63, 0x9b, 0xe6, 0x01, 0x04, 0x39, 0x98, 0xf7, 0x1e, - 0xc3, 0x66, 0x2c, 0xeb, 0x2f, 0x7c, 0x8d, 0xbd, 0xb6, 0xef, 0xa5, 0x7a, - 0xc9, 0xb7, 0xba, 0xbb, 0x09, 0x42, 0x76, 0x09, 0xbe, 0xce, 0x11, 0x0f, - 0xb8, 0xd7, 0x8d, 0x52, 0x0f, 0xd1, 0x12, 0xae, 0x77, 0x01, 0x13, 0x8e, - 0x1c, 0x69, 0xd2, 0xbb, 0x02, 0x21, 0xc6, 0xd7, 0x87, 0xc1, 0x06, 0x56, - 0x7c, 0xb1, 0x0d, 0xb9, 0x97, 0x16, 0x18, 0x87, 0xee, 0xe3, 0x8e, 0x49, - 0xe9, 0x81, 0xb2, 0x30, 0xd2, 0x31, 0xdc, 0x14, 0x18, 0x65, 0xc3, 0x68, - 0xf0, 0x1e, 0x9b, 0x8b, 0x74, 0xe8, 0x40, 0xa4, 0xc1, 0x2c, 0x4c, 0x26, - 0xeb, 0x89, 0xc4, 0xb5, 0x50, 0xc9, 0xa1, 0x9b, 0xc5, 0x8b, 0xdf, 0x81, - 0xc6, 0xd2, 0x3d, 0x39, 0x29, 0xa0, 0xa5, 0xd4, 0x0c, 0xcf, 0x52, 0x07, - 0xc3, 0x7f, 0x8b, 0xca, 0x87, 0x5f, 0xa8, 0x0c, 0xff, 0x0c, 0x65, 0x56, - 0xdb, 0x69, 0x13, 0xa9, 0xff, 0x0a, 0xea, 0x67, 0x8b, 0xfd, 0x83, 0x83, - 0xe5, 0x22, 0x21, 0x92, 0x33, 0x78, 0x86, 0x4a, 0x53, 0x49, 0x2d, 0xa3, - 0x9c, 0x69, 0xdd, 0x72, 0x08, 0xd1, 0x50, 0x6e, 0xca, 0xc4, 0xed, 0x74, - 0xe2, 0x77, 0x20, 0xbf, 0x23, 0x50, 0x51, 0xfb, 0x57, 0x7e, 0x8c, 0x2e, - 0xf2, 0xcb, 0x3d, 0x4b, 0x20, 0xc2, 0x6e, 0x30, 0xad, 0xf6, 0x90, 0x1d, - 0x70, 0xe2, 0x0d, 0x6b, 0xa6, 0xa6, 0x89, 0xe0, 0x6a, 0x5b, 0xba, 0xee, - 0x5d, 0x63, 0xb3, 0x4f, 0xa1, 0x81, 0xe1, 0xb0, 0x52, 0x3c, 0xf2, 0x40, - 0x98, 0xe1, 0x96, 0x36, 0xc1, 0x26, 0x84, 0x71, 0xd9, 0xef, 0xf5, 0xf6, - 0x39, 0x0f, 0xea, 0x01, 0xec, 0x81, 0xf4, 0x37, 0x53, 0xec, 0xd7, 0x65, - 0x63, 0x70, 0x8a, 0x67, 0x98, 0x57, 0x62, 0xef, 0x49, 0x5b, 0x8a, 0xdf, - 0xb1, 0x71, 0xe3, 0xa8, 0xf5, 0x30, 0xc2, 0x20, 0xe5, 0x94, 0x9d, 0x02, - 0x4e, 0x8e, 0xf3, 0xd5, 0xb0, 0x70, 0x6e, 0xc1, 0x8f, 0x87, 0x4e, 0x5e, - 0x92, 0x38, 0x77, 0xc0, 0x75, 0x69, 0xa0, 0xba, 0x5c, 0x3e, 0x16, 0xc4, - 0x63, 0x7c, 0x86, 0xe0, 0x6d, 0x1f, 0x47, 0x70, 0x6c, 0x80, 0xe9, 0x3c, - 0x1b, 0x94, 0x30, 0x12, 0xd5, 0xad, 0x2e, 0x4e, 0xa7, 0xd6, 0xe2, 0xf4, - 0x28, 0x4b, 0x20, 0x09, 0x65, 0xd0, 0xb6, 0x52, 0xbd, 0xd9, 0xa3, 0x30, - 0x14, 0x94, 0x20, 0x14, 0x05, 0x04, 0x76, 0x95, 0xaa, 0x9c, 0x66, 0xd6, - 0xc4, 0x8a, 0x3a, 0x56, 0xe0, 0x75, 0xf9, 0x04, 0x9d, 0xc3, 0x11, 0xf9, - 0xd7, 0xe2, 0xd9, 0xf3, 0x75, 0xfe, 0x69, 0x85, 0x60, 0x4f, 0xe7, 0x5d, - 0x62, 0x00, 0x34, 0x8a, 0xb6, 0x64, 0x06, 0xb8, 0x69, 0x5a, 0xed, 0xf7, - 0x6f, 0xd0, 0xf5, 0x1e, 0x6d, 0x7b, 0x79, 0x88, 0x96, 0x54, 0x2f, 0x78, - 0x59, 0xc2, 0x92, 0x97, 0x71, 0x07, 0xc3, 0x7d, 0xf7, 0xca, 0x41, 0x1a, - 0x11, 0x1e, 0x12, 0x06, 0xbe, 0xe2, 0xaf, 0x04, 0x4f, 0x20, 0xb7, 0x6d, - 0xdb, 0xf3, 0x01, 0x85, 0x8e, 0xdd, 0x65, 0xd0, 0xd6, 0x18, 0x97, 0xee, - 0xcc, 0xc1, 0xe5, 0x62, 0x64, 0xac, 0x46, 0x2a, 0x4c, 0xbd, 0xeb, 0x40, - 0xdb, 0x57, 0x4a, 0x6b, 0xd2, 0xbc, 0x32, 0xde, 0x2b, 0xde, 0x84, 0x6c, - 0x70, 0x8c, 0x8d, 0xb6, 0xcb, 0x75, 0xd1, 0x65, 0xb4, 0x66, 0xa5, 0x76, - 0xcd, 0xde, 0xe4, 0xf0, 0x74, 0x98, 0x21, 0x66, 0x69, 0x61, 0xb6, 0x51, - 0x44, 0x37, 0xe4, 0xe1, 0xba, 0x58, 0x9e, 0x84, 0x5c, 0x0f, 0x32, 0x9d, - 0x0f, 0x1f, 0x23, 0xc3, 0x32, 0xa4, 0x23, 0x12, 0x24, 0x71, 0xb8, 0x7e, - 0xac, 0x14, 0x0a, 0x1e, 0xa6, 0x26, 0x22, 0xaa, 0x25, 0xbb, 0x88, 0xd2, - 0x5a, 0x44, 0x8d, 0x22, 0xd8, 0xa7, 0xee, 0x10, 0x70, 0xd5, 0xb7, 0x3d, - 0x00, 0xae, 0x20, 0x74, 0x3d, 0xf2, 0xee, 0xe5, 0x70, 0x9e, 0x0b, 0x39, - 0x00, 0x78, 0x9d, 0xe8, 0xa6, 0xca, 0x68, 0x83, 0xfa, 0x41, 0x19, 0xdf, - 0xa5, 0x01, 0x2d, 0x0b, 0x13, 0xa8, 0x5e, 0x62, 0xab, 0xa1, 0xd4, 0xb9, - 0xde, 0x0e, 0xfd, 0xca, 0x23, 0xac, 0x7d, 0x66, 0x29, 0x7e, 0xf7, 0xd6, - 0x5d, 0x67, 0xd5, 0x7f, 0xb0, 0x17, 0x38, 0xf4, 0x00, 0xe0, 0x9c, 0x1a, - 0x7c, 0x00, 0x66, 0xfd, 0xca, 0xdd, 0x9b, 0x72, 0x7a, 0x8c, 0x0d, 0x8b, - 0x5e, 0x05, 0x58, 0xef, 0x3a, 0x27, 0x5c, 0x4d, 0x1e, 0x97, 0x61, 0xbd, - 0xaf, 0x03, 0x89, 0x3b, 0x53, 0x28, 0x18, 0x50, 0x6c, 0x0d, 0x00, 0x7c, - 0xee, 0xf2, 0xbc, 0xdf, 0x37, 0x5e, 0x92, 0xb0, 0x2a, 0xd3, 0xf2, 0x0a, - 0xac, 0x0a, 0x12, 0xb9, 0x80, 0x00, 0xd7, 0xe8, 0xac, 0x7a, 0xfe, 0xb0, - 0xc4, 0x80, 0xa6, 0x17, 0x00, 0xc9, 0x1b, 0x28, 0xd8, 0x6d, 0xa2, 0x1a, - 0xb4, 0x9d, 0xdb, 0x37, 0xdd, 0xd0, 0x46, 0x58, 0x8b, 0x39, 0x88, 0x56, - 0x16, 0xbb, 0x36, 0x0a, 0x5e, 0x14, 0x3e, 0x4d, 0xf0, 0xff, 0xbc, 0xb0, - 0x30, 0x16, 0x67, 0xc6, 0x3e, 0x85, 0x86, 0xdb, 0x25, 0x14, 0xb6, 0x1a, - 0x16, 0x7f, 0x9e, 0x43, 0xf8, 0x27, 0xc9, 0xba, 0x6c, 0xce, 0x22, 0x1e, - 0xd4, 0x68, 0x92, 0x0a, 0xf3, 0x62, 0x2c, 0xf8, 0x2a, 0x33, 0xe0, 0x65, - 0xdd, 0x73, 0x5e, 0x78, 0x8e, 0x06, 0x67, 0x21, 0xe0, 0x9d, 0x95, 0x15, - 0xbe, 0x83, 0x49, 0x21, 0xa1, 0x39, 0x1f, 0x22, 0x61, 0x3f, 0x8e, 0x39, - 0x0c, 0xa8, 0xf1, 0x16, 0xde, 0x14, 0x94, 0xb2, 0xd4, 0x49, 0x8b, 0xde, - 0xd8, 0xff, 0x5a, 0x76, 0x29, 0x28, 0xe9, 0x18, 0xa5, 0x96, 0x71, 0xe4, - 0x92, 0x3d, 0x82, 0x78, 0x09, 0x62, 0x32, 0xe9, 0x99, 0x9f, 0xcd, 0x7c, - 0x15, 0x6f, 0x2b, 0xea, 0xe5, 0x6f, 0xb6, 0x72, 0x25, 0xc6, 0xd5, 0x9a, - 0x5c, 0xc7, 0x5b, 0xf4, 0x46, 0x84, 0x8c, 0x99, 0xaa, 0xcc, 0xc7, 0x91, - 0xd4, 0xa3, 0xf0, 0x9a, 0xef, 0xca, 0xde, 0x79, 0x19, 0xc0, 0x74, 0x66, - 0xeb, 0x35, 0x51, 0xa8, 0xf6, 0x2b, 0xf8, 0x35, 0xae, 0x3e, 0xe3, 0x4b, - 0x7a, 0x82, 0x3c, 0x39, 0x37, 0xb6, 0x28, 0x59, 0x20, 0xb2, 0xa9, 0x97, - 0x80, 0x9c, 0x85, 0x2a, 0x6e, 0xb7, 0x86, 0x9d, 0xf2, 0xb3, 0x26, 0xfb, - 0x2d, 0xf3, 0x6f, 0xa5, 0x5d, 0xb5, 0xa4, 0x84, 0x1f, 0x30, 0xae, 0xc0, - 0xdc, 0x22, 0x0a, 0xc6, 0xef, 0xad, 0x71, 0xa3, 0xa9, 0x27, 0x96, 0x43, - 0x6c, 0x26, 0xf3, 0xb5, 0x0e, 0x7a, 0x6f, 0x03, 0xe5, 0x19, 0xb1, 0x7c, - 0x03, 0x17, 0x2e, 0x60, 0x26, 0x2e, 0xef, 0xb4, 0x8a, 0xe2, 0x5a, 0x33, - 0x58, 0x16, 0x3c, 0xbf, 0xb1, 0x65, 0x93, 0x3f, 0x8a, 0x15, 0x94, 0xeb, - 0xef, 0xa9, 0xc7, 0x63, 0x8e, 0xc5, 0xf7, 0x5f, 0xa2, 0x6a, 0xd7, 0xe9, - 0x6e, 0x4f, 0x60, 0xe6, 0x8e, 0xdd, 0xc8, 0x69, 0x86, 0x36, 0xfd, 0x32, - 0x2a, 0xda, 0xe3, 0xf7, 0x48, 0x62, 0x8b, 0x85, 0x40, 0xba, 0xac, 0x66, - 0x8a, 0xa9, 0x4f, 0xfe, 0x4c, 0xc7, 0xb8, 0x6b, 0xc8, 0x09, 0x8b, 0x94, - 0x3d, 0xed, 0x2e, 0x9f, 0xee, 0x85, 0x6c, 0x02, 0x74, 0x10, 0x96, 0xf9, - 0xee, 0xc0, 0x20, 0xe0, 0xa2, 0x0e, 0xcc, 0x41, 0x95, 0x50, 0x1a, 0x1c, - 0x42, 0x2f, 0x18, 0x65, 0xd8, 0x95, 0x4a, 0x5d, 0x41, 0x16, 0xd5, 0xba, - 0x21, 0x1f, 0x67, 0x0a, 0x45, 0x10, 0x1a, 0xbb, 0xa7, 0x3c, 0x5e, 0x8d, - 0x7a, 0xc7, 0x76, 0x9a, 0xa5, 0x39, 0x1d, 0x1a, 0xb7, 0x19, 0x71, 0x10, - 0x90, 0xc5, 0xe5, 0x76, 0xe8, 0xbc, 0xac, 0x9f, 0x61, 0xbf, 0xc8, 0x8c, - 0x0f, 0xc6, 0x87, 0xb7, 0x05, 0x60, 0x23, 0x4c, 0x05, 0x7d, 0x58, 0xd1, - 0x9e, 0x79, 0xc9, 0xd8, 0xd5, 0x9d, 0x20, 0x27, 0x25, 0x10, 0xa3, 0x59, - 0x79, 0x9a, 0x1f, 0xf0, 0xa9, 0xde, 0xb1, 0x2a, 0x51, 0x5f, 0x40, 0xe3, - 0xaa, 0xb3, 0x7d, 0xcd, 0xbd, 0x3c, 0x0f, 0xef, 0xe6, 0xc0, 0x11, 0xc6, - 0x81, 0xc9, 0x1a, 0x00, 0x22, 0x6f, 0x1b, 0xb4, 0x05, 0xee, 0x47, 0xa2, - 0x37, 0x38, 0x12, 0x8a, 0x78, 0x04, 0x24, 0xc0, 0xae, 0xfc, 0xf7, 0xe6, - 0x80, 0x71, 0x3b, 0x9d, 0xe3, 0x22, 0x04, 0x51, 0x5b, 0x3a, 0x08, 0xeb, - 0xde, 0xf0, 0xb2, 0xa7, 0x1c, 0x14, 0xf4, 0x0a, 0x44, 0x24, 0x6a, 0xa2, - 0xc1, 0x03, 0x0a, 0x65, 0xc8, 0x5c, 0xfc, 0x12, 0x99, 0xd5, 0x77, 0x3f, - 0x0b, 0x62, 0x48, 0x9a, 0x97, 0x68, 0xc1, 0x3e, 0x0e, 0xc9, 0xaf, 0xb5, - 0xaf, 0xe8, 0x0c, 0x11, 0x7e, 0x37, 0xa7, 0xa7, 0x04, 0x15, 0xa8, 0x53, - 0xae, 0xf1, 0xf8, 0xff, 0x39, 0x75, 0xf6, 0xf3, 0x35, 0xd2, 0x76, 0x3c, - 0x4d, 0x16, 0x9b, 0x7e, 0xea, 0x28, 0x64, 0xa4, 0x4c, 0x78, 0xbf, 0x7f, - 0xcb, 0x68, 0x44, 0x16, 0x68, 0x12, 0x5d, 0x38, 0xe7, 0x0b, 0xe8, 0xeb, - 0x64, 0x50, 0xd3, 0x82, 0xd0, 0xdf, 0x83, 0xcb, 0xed, 0x2d, 0xed, 0x09, - 0x6f, 0x99, 0xc6, 0x5a, 0x97, 0x27, 0x44, 0x10, 0xd3, 0x16, 0x10, 0xc6, - 0xc6, 0xa7, 0xc1, 0x7b, 0x45, 0xf0, 0x2a, 0x4f, 0x26, 0x80, 0x3b, 0xb0, - 0xe9, 0xf8, 0xef, 0xc7, 0x3b, 0xf9, 0x94, 0x21, 0x9a, 0xfa, 0x89, 0xad, - 0xa2, 0xd9, 0xb6, 0x04, 0x72, 0xdc, 0x98, 0xdc, 0x60, 0x4d, 0x01, 0xee, - 0x84, 0xc8, 0x15, 0x05, 0xc4, 0x5d, 0x00, 0x59, 0xd5, 0x63, 0x1f, 0x6f, - 0x07, 0x12, 0x69, 0x0f, 0xb4, 0xd2, 0xb7, 0x0e, 0x09, 0xb7, 0xb7, 0x26, - 0xc0, 0xf0, 0x4b, 0x40, 0x0c, 0xcf, 0x00, 0x89, 0x21, 0x1b, 0x4d, 0x99, - 0xdc, 0x54, 0xfc, 0xee, 0x35, 0x80, 0xc1, 0x70, 0xd6, 0xc6, 0x71, 0x94, - 0x31, 0x82, 0x54, 0xe0, 0x31, 0xec, 0x44, 0xdd, 0xee, 0x92, 0xfc, 0xef, - 0xc2, 0x83, 0x1c, 0x46, 0x54, 0xe9, 0xc9, 0xa9, 0x80, 0x00, 0x9f, 0x99, - 0x5b, 0xf7, 0x85, 0x65, 0x25, 0x7e, 0x06, 0xd1, 0xed, 0x0f, 0x84, 0xd3, - 0x2f, 0x76, 0xea, 0x70, 0x26, 0xa0, 0x00, 0x21, 0x3a, 0xfd, 0x85, 0xa6, - 0x3c, 0xc8, 0x53, 0x1b, 0x23, 0x85, 0xd0, 0xbb, 0xbd, 0xd8, 0xd8, 0xb1, - 0xe9, 0x35, 0x5f, 0x40, 0x2c, 0x52, 0x7a, 0xc8, 0x7e, 0x17, 0xe1, 0x9e, - 0x63, 0xd5, 0xf9, 0x92, 0x39, 0xaa, 0xdd, 0x42, 0x4b, 0x2b, 0xc3, 0x73, - 0x74, 0x89, 0x6e, 0xc8, 0x2c, 0x91, 0x91, 0xd4, 0x6e, 0x2b, 0xef, 0x1e, - 0x55, 0x3a, 0x73, 0x54, 0xcd, 0x4c, 0xb7, 0xc7, 0xf2, 0x3e, 0x73, 0x3c, - 0x6f, 0xbb, 0xe7, 0x40, 0xaf, 0xba, 0xcc, 0x34, 0x45, 0x66, 0xff, 0x54, - 0x24, 0x42, 0xd3, 0x15, 0x12, 0x2d, 0xcc, 0x19, 0x31, 0x26, 0x36, 0x24, - 0x25, 0x8a, 0x0b, 0x1a, 0xe7, 0x15, 0x1b, 0xf7, 0x52, 0xcd, 0x71, 0x2a, - 0xaa, 0xc6, 0x15, 0x41, 0x02, 0xdf, 0xf2, 0x51, 0x2f, 0x70, 0x72, 0xfb, - 0xc7, 0x8b, 0x2c, 0x5a, 0x08, 0x8a, 0x1b, 0x5d, 0x50, 0x3f, 0xac, 0x10, - 0x9a, 0x7d, 0xe3, 0xc2, 0x2d, 0xf4, 0x35, 0x37, 0xf6, 0xc0, 0x2e, 0x05, - 0xd7, 0x4c, 0x9b, 0x15, 0x25, 0xcc, 0x18, 0xc7, 0xfc, 0xbe, 0x45, 0x5b, - 0xd9, 0x28, 0x2e, 0xc3, 0x4c, 0xc0, 0xd8, 0xff, 0xcc, 0xdc, 0x8f, 0x70, - 0xc6, 0x04, 0x28, 0x8b, 0x6e, 0x12, 0x19, 0x9a, 0x7b, 0x7a, 0x08, 0xa2, - 0x79, 0xfc, 0x29, 0x88, 0xf6, 0x40, 0x9f, 0xcf, 0xa5, 0x0d, 0x54, 0x85, - 0x40, 0xb8, 0xd9, 0xd5, 0x3c, 0x34, 0x06, 0x80, 0x03, 0x01, 0xe0, 0x0a, - 0xde, 0x8f, 0xe0, 0xd4, 0xab, 0xf3, 0x6c, 0x3c, 0x06, 0x8a, 0x9e, 0xae, - 0x90, 0x9e, 0xe9, 0xca, 0xc1, 0x8f, 0x84, 0x20, 0x82, 0xc5, 0x68, 0xba, - 0xbb, 0xcc, 0x1a, 0xf5, 0xae, 0xa9, 0x84, 0x1a, 0xb0, 0xd2, 0x89, 0x0f, - 0x2f, 0x2c, 0x78, 0xcf, 0xf1, 0x80, 0x87, 0xb5, 0x2e, 0x1c, 0x46, 0x0f, - 0xd8, 0x64, 0xd6, 0xad, 0x13, 0x10, 0xd9, 0xf0, 0x8f, 0x0b, 0xc0, 0x5b, - 0x71, 0xff, 0xe0, 0xe6, 0x50, 0xd7, 0xcd, 0x68, 0xa8, 0x2e, 0x9c, 0x6d, - 0xd4, 0x91, 0xc6, 0x07, 0x15, 0x0f, 0x90, 0x21, 0xfa, 0xbd, 0xaa, 0x32, - 0x12, 0x7a, 0x5a, 0x48, 0xdb, 0x27, 0xed, 0x8f, 0xcd, 0x8c, 0xf3, 0x16, - 0x97, 0xe4, 0x45, 0xbe, 0x83, 0x22, 0x24, 0xe7, 0xe9, 0xf9, 0x80, 0x0b, - 0x81, 0x58, 0x8b, 0x41, 0x97, 0x4a, 0xd9, 0x69, 0x38, 0x9a, 0x92, 0x67, - 0xa0, 0x73, 0xcb, 0x99, 0xf2, 0xa4, 0x25, 0xc6, 0xfd, 0xa8, 0xd6, 0xd4, - 0xb5, 0x08, 0x97, 0x74, 0xd9, 0xfe, 0x9b, 0x52, 0xa8, 0x0b, 0xbb, 0x21, - 0x22, 0xbd, 0x6e, 0x0a, 0x83, 0xe1, 0x34, 0x3a, 0xef, 0x6a, 0x52, 0xdb, - 0xad, 0x4a, 0x4b, 0x19, 0xd3, 0x44, 0xd8, 0x5c, 0xaa, 0xec, 0x88, 0xf8, - 0xc1, 0xce, 0x66, 0x10, 0x7b, 0x53, 0x50, 0xa6, 0xeb, 0xb1, 0x9f, 0x13, - 0x2f, 0x29, 0x43, 0xf8, 0x42, 0xef, 0x56, 0xb9, 0x3f, 0xbe, 0xb4, 0xdd, - 0x5a, 0xf4, 0x19, 0x05, 0xe2, 0x47, 0x64, 0xea, 0x02, 0xba, 0xc7, 0xb5, - 0x55, 0x58, 0xe3, 0xf2, 0x7c, 0x58, 0xfd, 0xc2, 0x5d, 0x33, 0xdc, 0x62, - 0xbe, 0x13, 0x90, 0x08, 0x1b, 0xda, 0xc1, 0xdb, 0x16, 0x08, 0x30, 0x79, - 0xb5, 0x49, 0xe0, 0xad, 0x29, 0xf1, 0x1e, 0xbb, 0x19, 0x97, 0xeb, 0x97, - 0x0e, 0xad, 0xfa, 0xf7, 0xb5, 0xeb, 0x4e, 0x4a, 0xd0, 0x34, 0x5d, 0x47, - 0x2a, 0x6a, 0x57, 0xe9, 0x8d, 0x0c, 0x05, 0x04, 0x3e, 0x68, 0x39, 0x32, - 0xf3, 0xe7, 0x03, 0x87, 0x52, 0xd0, 0x73, 0xec, 0x47, 0x1a, 0xea, 0xb8, - 0x6d, 0x45, 0xd7, 0x2b, 0x80, 0xba, 0x07, 0xd0, 0xd3, 0x21, 0xb5, 0x20, - 0x12, 0xd7, 0xf0, 0x01, 0x13, 0x18, 0x06, 0x3c, 0x82, 0x27, 0x8b, 0xde, - 0xfa, 0xe7, 0xa2, 0x15, 0xc5, 0xa0, 0x71, 0x67, 0x15, 0x47, 0x2e, 0xfa, - 0xd8, 0x5a, 0xfb, 0xec, 0xad, 0x4a, 0xc5, 0xb1, 0x8e, 0x8c, 0xcd, 0xc8, - 0xa2, 0x27, 0xcc, 0xdd, 0x39, 0x24, 0x05, 0xc2, 0xbb, 0x4e, 0x1f, 0x5d, - 0xd9, 0x39, 0x63, 0xdb, 0x58, 0x88, 0x13, 0x02, 0x68, 0xc6, 0x12, 0x80, - 0x9c, 0x08, 0xe9, 0x89, 0x39, 0x6e, 0xf4, 0xfd, 0x73, 0x8c, 0xb5, 0x0f, - 0x86, 0xa3, 0xc6, 0x1d, 0x58, 0xd0, 0x78, 0xd9, 0xa8, 0x01, 0xe9, 0x34, - 0xf6, 0xfa, 0xb9, 0xc5, 0xd9, 0xe9, 0x1d, 0x83, 0x2a, 0x63, 0x52, 0x73, - 0x5f, 0x11, 0x34, 0x7f, 0xb2, 0xb0, 0xeb, 0x52, 0x35, 0x18, 0xe6, 0xfd, - 0x03, 0xb5, 0xc0, 0x06, 0x48, 0x9e, 0xae, 0x9e, 0x4e, 0xbc, 0x85, 0xd1, - 0x6e, 0xbf, 0xc8, 0x59, 0x40, 0x4f, 0x9b, 0xab, 0x7e, 0x79, 0xaf, 0x9f, - 0x1c, 0x54, 0xb2, 0x22, 0x75, 0x84, 0x30, 0x40, 0xb9, 0xb5, 0x37, 0xfc, - 0x01, 0x6c, 0x32, 0x35, 0x27, 0xf1, 0xac, 0xba, 0xb5, 0x60, 0x03, 0x18, - 0x7c, 0xe1, 0xf2, 0x0e, 0x22, 0x19, 0xe5, 0xe5, 0xaa, 0xf6, 0xcc, 0xde, - 0x3d, 0x57, 0x16, 0xf6, 0x1a, 0xc3, 0x5b, 0xad, 0x6b, 0x33, 0xd2, 0x13, - 0xd8, 0xb1, 0x9a, 0x14, 0x9e, 0x4f, 0x27, 0x98, 0x38, 0x92, 0x79, 0xf3, - 0xe8, 0x09, 0x9b, 0xdd, 0xb5, 0x1d, 0x66, 0x6c, 0x2e, 0x7e, 0x9f, 0x8a, - 0xc0, 0x82, 0x85, 0x39, 0x00, 0xac, 0xcf, 0xde, 0xa1, 0xca, 0x10, 0xb1, - 0x96, 0x1e, 0x1b, 0x5f, 0x6a, 0x9f, 0x02, 0x52, 0xba, 0xf4, 0xc4, 0xf8, - 0xce, 0x26, 0xa9, 0x3f, 0x6f, 0xd0, 0x7f, 0x18, 0x28, 0x3c, 0xce, 0x2b, - 0xd7, 0xd0, 0x45, 0x41, 0x94, 0xd9, 0x69, 0xb0, 0x0b, 0xda, 0x60, 0x8f, - 0x1f, 0x76, 0xdc, 0xa0, 0xa8, 0x91, 0x3e, 0xdf, 0x4d, 0x19, 0x6c, 0x33, - 0xf2, 0xa1, 0x6c, 0x25, 0x41, 0x83, 0x05, 0xed, 0x4e, 0x95, 0xf0, 0x66, - 0x1e, 0x88, 0x5f, 0xc0, 0xc3, 0xcc, 0x74, 0x67, 0x04, 0x07, 0x45, 0x76, - 0x17, 0x22, 0x67, 0x18, 0xc3, 0xd6, 0x51, 0x8c, 0x40, 0xac, 0xaa, 0x01, - 0x6a, 0x1f, 0x8c, 0x9f, 0x26, 0xdc, 0x53, 0x04, 0x13, 0x42, 0x25, 0xfe, - 0xde, 0xb8, 0xf3, 0x3b, 0x9e, 0xb5, 0x9d, 0x71, 0xa8, 0x44, 0x9e, 0x6d, - 0x31, 0xb8, 0x54, 0xa6, 0x47, 0xfa, 0x08, 0xe8, 0x1d, 0x5a, 0x5a, 0xf7, - 0x59, 0xaf, 0x06, 0x5f, 0xe8, 0xff, 0xbb, 0x7b, 0x21, 0xae, 0x69, 0x07, - 0x9f, 0x7c, 0xc7, 0x38, 0xa2, 0xc6, 0x7d, 0x3d, 0x20, 0xf8, 0xf5, 0x73, - 0xc7, 0xcb, 0xe6, 0xbf, 0xf6, 0x2c, 0xb1, 0x50, 0x74, 0xdb, 0x0b, 0xea, - 0xd1, 0xeb, 0x7e, 0x68, 0x85, 0x36, 0xe7, 0x96, 0x4e, 0xf6, 0x9d, 0x61, - 0x0f, 0x2e, 0x0c, 0x87, 0x88, 0x7e, 0xc8, 0x3d, 0xc8, 0x1d, 0x32, 0xce, - 0x5a, 0xc6, 0x0e, 0xf1, 0x0b, 0x4b, 0xe9, 0x26, 0x1a, 0x04, 0x50, 0x9e, - 0xfb, 0x5c, 0xf2, 0x2f, 0xb1, 0x14, 0xe0, 0xae, 0x4b, 0xe7, 0x50, 0x95, - 0xfb, 0xab, 0x11, 0xe7, 0x9b, 0xce, 0xa6, 0xfb, 0x54, 0xc8, 0xef, 0x82, - 0xe5, 0xc1, 0xcc, 0x70, 0xe7, 0xa5, 0x1d, 0x2b, 0x04, 0x58, 0xad, 0x47, - 0x3a, 0xc7, 0xb8, 0x07, 0xc8, 0x6c, 0x39, 0x1e, 0xff, 0xb6, 0xf5, 0xfd, - 0x2e, 0x03, 0xd0, 0xd6, 0x57, 0xb9, 0x3e, 0xb8, 0xf5, 0x84, 0xde, 0x8a, - 0x0b, 0xd7, 0xc6, 0x6c, 0x4a, 0x46, 0x60, 0x24, 0xd3, 0x92, 0x48, 0x09, - 0x69, 0x9a, 0x08, 0xcf, 0xf4, 0x38, 0xc3, 0x62, 0xe1, 0x99, 0xf7, 0x03, - 0x3d, 0x2d, 0x1a, 0x17, 0x25, 0x1d, 0xf6, 0x54, 0x00, 0xab, 0x4f, 0x80, - 0x05, 0x1d, 0x0c, 0x40, 0xc8, 0xcc, 0xc2, 0x1b, 0x15, 0x07, 0xad, 0x19, - 0x94, 0x96, 0xf0, 0xb2, 0x46, 0xa0, 0x61, 0xb4, 0x95, 0xcc, 0x7f, 0xe3, - 0x4f, 0x4f, 0x90, 0xa1, 0x3d, 0xdc, 0xec, 0x23, 0x5e, 0xdd, 0x16, 0x86, - 0x99, 0xd6, 0xa6, 0x83, 0xeb, 0x16, 0xad, 0x86, 0x6c, 0xf8, 0x60, 0xea, - 0xa4, 0xfc, 0x40, 0x30, 0x89, 0x29, 0x41, 0xfe, 0xc5, 0x23, 0x24, 0x09, - 0x96, 0x39, 0xfa, 0x27, 0xe2, 0x9c, 0x8b, 0x00, 0xe8, 0xba, 0x4b, 0x30, - 0x41, 0xb3, 0x24, 0x93, 0xa1, 0x4c, 0x47, 0x58, 0xf4, 0x4f, 0xf5, 0xf6, - 0x72, 0x96, 0xa7, 0x47, 0x70, 0x83, 0xf2, 0xa1, 0x31, 0x7d, 0x0a, 0xcd, - 0xf8, 0xac, 0x04, 0x79, 0x28, 0x2d, 0xf2, 0xba, 0x75, 0x62, 0x50, 0x46, - 0xbe, 0xc3, 0x54, 0x8f, 0x5e, 0xef, 0xf8, 0xe1, 0xf6, 0xa3, 0x8b, 0x6d, - 0xa7, 0x9d, 0xa0, 0x3b, 0x5a, 0x4b, 0x43, 0x01, 0x92, 0x6a, 0xf6, 0x6a, - 0xe6, 0x26, 0xed, 0xf6, 0x9c, 0xdb, 0x52, 0xf3, 0xec, 0x68, 0x18, 0x12, - 0x69, 0x9c, 0x67, 0x0c, 0x24, 0x2d, 0xa1, 0x32, 0x4a, 0xa7, 0x09, 0x35, - 0x63, 0x34, 0x12, 0x96, 0x59, 0xde, 0xd7, 0xe7, 0x5e, 0x16, 0x9d, 0xa4, - 0x43, 0xee, 0xf8, 0xb4, 0x0a, 0x40, 0x22, 0x2f, 0x8d, 0xe2, 0xd0, 0xb9, - 0xe4, 0x7a, 0xf3, 0x87, 0xbf, 0x1c, 0x8a, 0xe3, 0xe8, 0xa5, 0x2b, 0xfa, - 0x64, 0x37, 0x69, 0x2d, 0x68, 0xd2, 0x30, 0xa2, 0x25, 0x5f, 0x1c, 0xcc, - 0x0e, 0xe2, 0x3d, 0xf6, 0x52, 0x4b, 0x65, 0x86, 0x8e, 0x9d, 0x1b, 0x38, - 0xbf, 0x5f, 0x22, 0xe3, 0x61, 0x3b, 0x42, 0x14, 0x0e, 0x14, 0xcb, 0x1b, - 0x2f, 0x36, 0xf6, 0x83, 0x8a, 0x96, 0x6d, 0xa4, 0x49, 0x32, 0x67, 0xd5, - 0x1a, 0x25, 0xcf, 0x15, 0x90, 0x30, 0x33, 0x26, 0xf2, 0x9c, 0x41, 0x87, - 0xa6, 0x9c, 0x69, 0x52, 0x04, 0xc3, 0x94, 0x72, 0xac, 0x3c, 0x99, 0x83, - 0x53, 0x9e, 0xa1, 0xaf, 0x86, 0x40, 0x0b, 0x5e, 0xfb, 0x2e, 0x26, 0xa5, - 0x7a, 0x62, 0x9f, 0x0b, 0x57, 0x2d, 0xe8, 0xb4, 0x56, 0xda, 0xb5, 0x94, - 0x30, 0xa1, 0xe7, 0x91, 0x6c, 0x19, 0x8a, 0xa1, 0xe1, 0x1b, 0x49, 0x58, - 0x9a, 0xbd, 0x34, 0xc2, 0x38, 0x33, 0xf6, 0x42, 0xee, 0x94, 0x5a, 0x3d, - 0x2a, 0x3c, 0x14, 0xc5, 0x4b, 0x33, 0xb6, 0xe4, 0x52, 0x59, 0x94, 0x63, - 0x44, 0x10, 0x32, 0x63, 0xa5, 0x28, 0xeb, 0x50, 0x50, 0xbc, 0x88, 0x68, - 0xae, 0x8e, 0x93, 0x79, 0x7b, 0x8d, 0xc8, 0xc1, 0xa1, 0xdc, 0x6b, 0xd4, - 0x88, 0x5a, 0xcc, 0x22, 0xf1, 0xbc, 0xed, 0xab, 0x2b, 0xfc, 0xd8, 0x9d, - 0xa8, 0x9c, 0x36, 0xba, 0x0b, 0xb6, 0xc5, 0xf7, 0x58, 0x3c, 0xd3, 0x06, - 0xbe, 0x7a, 0x8c, 0xf5, 0xac, 0x90, 0x42, 0xd1, 0xaf, 0x4f, 0x74, 0xaf, - 0x8e, 0xb0, 0x8c, 0xfd, 0x4b, 0x6b, 0x68, 0x67, 0xd0, 0xf9, 0xe3, 0xf8, - 0x4f, 0xcb, 0x9a, 0x50, 0x18, 0xe4, 0x5f, 0x9f, 0x4c, 0x24, 0x0f, 0xce, - 0x48, 0x17, 0x94, 0x76, 0x49, 0x5e, 0x19, 0x88, 0x09, 0xf2, 0x79, 0xfb, - 0xc4, 0x53, 0xea, 0xab, 0x76, 0x61, 0x98, 0x93, 0xee, 0x33, 0xc2, 0x24, - 0x10, 0x47, 0x34, 0xef, 0xc3, 0x41, 0x07, 0xcc, 0xf3, 0x6a, 0x61, 0xd7, - 0xb8, 0x01, 0xac, 0x5d, 0x45, 0x43, 0xcd, 0x2f, 0x74, 0x7e, 0xc9, 0x74, - 0x5d, 0xf8, 0x24, 0xfc, 0x0e, 0xd9, 0x9d, 0x0a, 0xe1, 0x28, 0xab, 0x06, - 0xfa, 0x45, 0xc6, 0x24, 0xe1, 0x8e, 0x0c, 0x94, 0x49, 0x52, 0xfd, 0x06, - 0x21, 0x47, 0x66, 0x23, 0x91, 0xdc, 0xf8, 0x13, 0x58, 0xf2, 0x7a, 0x7f, - 0x6d, 0xa9, 0x2d, 0x3e, 0xc8, 0x5c, 0xeb, 0x42, 0xf7, 0x47, 0x6f, 0x67, - 0xf7, 0xee, 0x7e, 0xf8, 0x42, 0x69, 0x64, 0x70, 0x21, 0xe0, 0x6f, 0x65, - 0xde, 0x9c, 0x6f, 0x58, 0xfa, 0xa7, 0xef, 0xc7, 0x8a, 0xf4, 0x4c, 0x33, - 0xda, 0x5f, 0x31, 0x2e, 0x1b, 0x00, 0x05, 0x3a, 0x79, 0x7f, 0xc0, 0xb6, - 0xfd, 0x48, 0xf2, 0xc9, 0x07, 0xd6, 0x98, 0xa9, 0x95, 0x95, 0xc2, 0xb7, - 0x7b, 0xcf, 0xad, 0xcd, 0x1e, 0x73, 0x2b, 0xb7, 0xd9, 0x4c, 0x5a, 0x45, - 0x48, 0xba, 0xde, 0x49, 0x16, 0x34, 0x38, 0xc7, 0x28, 0x41, 0x42, 0x15, - 0xf9, 0x71, 0xfb, 0x1a, 0xa1, 0xa4, 0x4e, 0x09, 0xf9, 0x26, 0xe4, 0x9f, - 0xb3, 0xa8, 0x41, 0x87, 0xf8, 0x80, 0xd7, 0x9f, 0x83, 0xa3, 0x0f, 0x9f, - 0x29, 0x92, 0x8d, 0x84, 0x7e, 0x25, 0xfc, 0xd1, 0x48, 0x72, 0x34, 0x64, - 0xe6, 0x47, 0xea, 0x28, 0x85, 0xa7, 0x7b, 0x7d, 0x46, 0xc7, 0x59, 0x70, - 0x2e, 0xcc, 0x64, 0xde, 0xbb, 0x59, 0xc8, 0x90, 0xc6, 0x27, 0x84, 0xb9, - 0xc1, 0xc8, 0x40, 0x00, 0xd9, 0x2f, 0xf6, 0x1b, 0x0d, 0xfc, 0xc6, 0x88, - 0x45, 0x1f, 0x93, 0xca, 0x26, 0x59, 0xd3, 0x45, 0xa6, 0xfa, 0x22, 0x7d, - 0x8c, 0xeb, 0x8a, 0x5e, 0x96, 0x0a, 0x47, 0x05, 0xea, 0xd9, 0x1b, 0xb4, - 0xee, 0x26, 0x84, 0x15, 0x70, 0x34, 0x57, 0x1f, 0xe5, 0x51, 0xef, 0x83, - 0xff, 0x04, 0x89, 0x07, 0xae, 0x31, 0x40, 0x9c, 0x09, 0xbd, 0xb3, 0x6f, - 0x4e, 0x1b, 0x38, 0x57, 0xe6, 0xb5, 0x98, 0x8c, 0x3c, 0x51, 0xc7, 0xa7, - 0x70, 0xa1, 0x6c, 0x6d, 0x6d, 0x0a, 0x69, 0x73, 0xd5, 0x56, 0x54, 0xb6, - 0x27, 0x64, 0x37, 0x76, 0xa1, 0xaa, 0x1d, 0x58, 0x18, 0x9b, 0xe0, 0x35, - 0x41, 0xf7, 0x99, 0x13, 0xdb, 0xae, 0x2e, 0x74, 0xcf, 0xbb, 0x24, 0x78, - 0x10, 0x3d, 0x79, 0x99, 0x82, 0x0b, 0x37, 0xc8, 0xf2, 0x84, 0x22, 0x64, - 0x21, 0x73, 0x67, 0xb2, 0x93, 0x79, 0x0a, 0x9b, 0x05, 0x32, 0x2c, 0x98, - 0x6c, 0x4d, 0xd4, 0x10, 0xdf, 0x26, 0x46, 0x77, 0xa5, 0x32, 0xb2, 0x22, - 0x74, 0xf0, 0xca, 0xc8, 0x86, 0xc7, 0xbe, 0xfc, 0x7c, 0xc2, 0x21, 0x1b, - 0xfb, 0xa6, 0x28, 0xff, 0xc5, 0x80, 0xc0, 0x1f, 0x27, 0xeb, 0x4d, 0xbb, - 0x90, 0x44, 0x2b, 0xfd, 0x5e, 0x6f, 0x48, 0x59, 0x7d, 0x7e, 0xb9, 0xb4, - 0x3c, 0x58, 0x29, 0x5d, 0x28, 0x5b, 0x8a, 0x8f, 0xfd, 0x46, 0x6d, 0x30, - 0x96, 0x80, 0x62, 0x4b, 0xc9, 0x59, 0xb0, 0x91, 0x14, 0x19, 0xfb, 0x58, - 0xb5, 0xcd, 0xea, 0xa3, 0xa6, 0xe0, 0xd3, 0x03, 0xa7, 0xe0, 0x4d, 0xe0, - 0xf2, 0x8a, 0x56, 0x22, 0xbb, 0x5f, 0x63, 0xf0, 0xd0, 0xd5, 0x0d, 0x8c, - 0x92, 0x2a, 0xc7, 0x6c, 0x4e, 0x1f, 0x04, 0xb0, 0xd5, 0x50, 0x47, 0xef, - 0xca, 0xd6, 0xa6, 0x75, 0x0c, 0x71, 0xba, 0x0f, 0x59, 0xa0, 0x3d, 0x4e, - 0xf7, 0xcf, 0xf8, 0xb6, 0x7f, 0x4c, 0xa0, 0xde, 0x1c, 0x52, 0xc4, 0xc5, - 0xdf, 0x24, 0x40, 0xb9, 0x9e, 0x47, 0x67, 0x99, 0xc2, 0x0d, 0x87, 0xc4, - 0x16, 0xe1, 0x6b, 0xf4, 0xf0, 0x63, 0x29, 0x11, 0x80, 0x1b, 0xeb, 0xbe, - 0x92, 0xcc, 0x14, 0xc0, 0xab, 0x38, 0xc9, 0xd3, 0xb3, 0xe2, 0xee, 0x0c, - 0x57, 0xc4, 0x70, 0x21, 0x0f, 0xd7, 0x07, 0xd3, 0x91, 0x60, 0xbb, 0xb0, - 0x16, 0xb2, 0xee, 0xc3, 0xaf, 0x3b, 0x2d, 0x28, 0xa5, 0xd0, 0xfc, 0xc8, - 0xfd, 0xf5, 0xc4, 0x12, 0x8a, 0x25, 0x91, 0xd3, 0x15, 0xa5, 0xe3, 0x81, - 0x34, 0x34, 0x43, 0x9f, 0x84, 0xc3, 0x4a, 0xa8, 0x6b, 0x58, 0xdc, 0xe5, - 0x3a, 0x76, 0xdb, 0x0f, 0x2f, 0xea, 0x3f, 0x08, 0x6b, 0x70, 0xaf, 0x81, - 0xa4, 0x69, 0x37, 0x57, 0x54, 0x64, 0x0a, 0x83, 0xc0, 0x4d, 0x24, 0x17, - 0xc5, 0xdb, 0x89, 0xda, 0x1c, 0xba, 0x2c, 0x39, 0x18, 0x8d, 0x91, 0x2d, - 0x08, 0xb7, 0xd7, 0x54, 0x54, 0x75, 0xd4, 0x9d, 0x85, 0x0b, 0x26, 0x1c, - 0x66, 0xe3, 0xb7, 0x8d, 0x07, 0xa5, 0x35, 0xbb, 0xa3, 0xa9, 0x74, 0x31, - 0x6e, 0xbb, 0x3f, 0x34, 0x24, 0x52, 0xaa, 0x71, 0xfb, 0x32, 0x38, 0x5f, - 0x48, 0x9b, 0xb6, 0xbb, 0x36, 0x49, 0x37, 0x34, 0xc7, 0xc9, 0xbb, 0x6c, - 0xdd, 0x39, 0xce, 0x92, 0xd6, 0x8d, 0xb3, 0x40, 0x40, 0x88, 0x60, 0xba, - 0x60, 0x75, 0xe3, 0xb0, 0x1b, 0x85, 0x5d, 0x35, 0x8a, 0x4e, 0xc7, 0xd7, - 0x3e, 0x1b, 0xf0, 0xf1, 0x01, 0x1e, 0x6e, 0xc7, 0x11, 0xb9, 0x7f, 0x8d, - 0xb6, 0x75, 0x24, 0x46, 0xd8, 0x15, 0x4d, 0x3d, 0x0f, 0x8e, 0x0e, 0x1a, - 0x02, 0x06, 0x94, 0xd4, 0xeb, 0x4b, 0xce, 0xf9, 0x7a, 0xc5, 0x74, 0xfe, - 0x8c, 0x69, 0x77, 0xee, 0x8d, 0x8b, 0x26, 0x6e, 0x47, 0x86, 0x01, 0x4e, - 0x2e, 0x55, 0xda, 0x49, 0x3b, 0xa2, 0x5d, 0xa7, 0x8c, 0x45, 0x44, 0xa2, - 0x77, 0x25, 0xa6, 0x2b, 0x24, 0xb1, 0xf5, 0xc1, 0xdf, 0xc2, 0xdb, 0xc9, - 0xfb, 0x9e, 0x4e, 0x80, 0x6a, 0x14, 0x03, 0xba, 0xf9, 0x88, 0x11, 0xdf, - 0xc3, 0xb9, 0x9b, 0x25, 0x6b, 0x4d, 0x9a, 0x01, 0x59, 0x6b, 0x03, 0x00, - 0x5c, 0x1e, 0x1a, 0x53, 0x96, 0xdf, 0xae, 0xbe, 0x30, 0x92, 0xe1, 0xdf, - 0x35, 0x33, 0xd5, 0x53, 0xb9, 0xc1, 0xa4, 0x44, 0x29, 0x8c, 0x1d, 0xe2, - 0xfd, 0x6b, 0xc9, 0x9b, 0x7d, 0xdd, 0x4d, 0x66, 0x41, 0x05, 0xba, 0x34, - 0x28, 0x70, 0x6a, 0x6d, 0xe9, 0x67, 0xe7, 0x0f, 0x03, 0xad, 0x78, 0x32, - 0x8c, 0xe5, 0xb9, 0x88, 0x8f, 0x90, 0xf2, 0xe0, 0xb5, 0x3c, 0x3b, 0x1e, - 0x34, 0x4c, 0x97, 0xb7, 0x88, 0x0f, 0x04, 0x32, 0xda, 0x7f, 0x6c, 0x36, - 0xab, 0xf5, 0xca, 0xbe, 0x33, 0x7c, 0x80, 0x38, 0x68, 0x87, 0x48, 0x56, - 0x20, 0x4e, 0x0f, 0x24, 0x0e, 0xf6, 0xb4, 0xd8, 0xe9, 0x6a, 0xb8, 0xb9, - 0xbf, 0x8a, 0xa5, 0xcd, 0x42, 0xa5, 0x31, 0x71, 0xc3, 0x3a, 0xca, 0x32, - 0xf8, 0xd6, 0xc4, 0x42, 0x91, 0xb5, 0xfb, 0x8e, 0xb2, 0x79, 0xe9, 0x7d, - 0xe8, 0xdb, 0x3d, 0x1e, 0x60, 0x62, 0xa9, 0x43, 0x44, 0x7e, 0x28, 0xa2, - 0x42, 0x9f, 0x33, 0x70, 0x91, 0x21, 0x94, 0x38, 0xb8, 0x2d, 0x51, 0x97, - 0x93, 0x8f, 0xa5, 0x0e, 0x30, 0x1e, 0xb9, 0x12, 0xa8, 0x66, 0x29, 0xda, - 0x43, 0x49, 0x4e, 0x36, 0x02, 0xf1, 0x69, 0x29, 0xaf, 0x72, 0x29, 0x25, - 0x16, 0xb6, 0x66, 0x25, 0x52, 0x52, 0x42, 0xbc, 0xba, 0x44, 0xf8, 0xda, - 0xc1, 0x1a, 0x4b, 0x45, 0xce, 0xd4, 0xb8, 0x14, 0xfb, 0x29, 0x08, 0xdb, - 0xa0, 0x5d, 0x0e, 0x4e, 0xc3, 0x72, 0xb8, 0xa2, 0xb7, 0x44, 0x46, 0x98, - 0x28, 0x3d, 0xde, 0x22, 0xa7, 0xfc, 0x7d, 0x25, 0xb4, 0x20, 0xed, 0x57, - 0x30, 0xf4, 0xa8, 0x57, 0x74, 0x12, 0xe4, 0xd8, 0x04, 0xb6, 0x21, 0x89, - 0x39, 0xd5, 0xcd, 0x3a, 0x15, 0xd0, 0x32, 0x0b, 0xd4, 0x3d, 0x62, 0xbd, - 0x91, 0x2e, 0x1f, 0x91, 0xfa, 0xc2, 0x49, 0x87, 0x75, 0x0b, 0xd8, 0x29, - 0x79, 0xd9, 0xbf, 0xf6, 0x85, 0xbf, 0xea, 0x62, 0x2f, 0x24, 0xaf, 0x92, - 0xb2, 0x68, 0x7d, 0x10, 0xf9, 0x2b, 0x59, 0x5a, 0xec, 0x1c, 0xed, 0x08, - 0x2c, 0xa1, 0x86, 0xd8, 0xd9, 0x5f, 0x6e, 0xa2, 0xa0, 0xa0, 0x68, 0x4f, - 0x02, 0x9c, 0x16, 0x34, 0xdc, 0x1f, 0x9f, 0x87, 0x96, 0x28, 0x6c, 0xd5, - 0xbd, 0x76, 0xd6, 0x7a, 0x1f, 0x12, 0x1c, 0x00, 0xc1, 0x00, 0x8e, 0xbf, - 0xb4, 0xaa, 0x05, 0xca, 0xeb, 0xd2, 0x29, 0x23, 0x07, 0x50, 0x87, 0x6f, - 0x23, 0xea, 0x1c, 0x4d, 0x11, 0x55, 0x06, 0x8d, 0xaa, 0x5e, 0xbe, 0x1e, - 0x56, 0x30, 0x15, 0xa1, 0xf8, 0x5d, 0xa2, 0xea, 0x3a, 0x79, 0xad, 0x22, - 0x53, 0x4f, 0x56, 0xd4, 0x98, 0xeb, 0x71, 0x23, 0x45, 0x5b, 0x43, 0xbd, - 0xc8, 0xe2, 0xb0, 0xed, 0x0b, 0xb6, 0x28, 0xc0, 0xa4, 0xf3, 0x3a, 0x19, - 0x39, 0x3b, 0x26, 0x45, 0xad, 0x82, 0x29, 0x0d, 0x56, 0xe0, 0x6a, 0xa8, - 0x63, 0xd7, 0xa4, 0xc5, 0x68, 0x91, 0x36, 0x09, 0x1d, 0xa5, 0x71, 0x2b, - 0x2f, 0x2a, 0xc9, 0xb0, 0x19, 0xe8, 0x4c, 0x60, 0xca, 0xea, 0x09, 0x0b, - 0xe6, 0xb7, 0xae, 0x47, 0x18, 0x12, 0xa3, 0x0a, 0xd1, 0xba, 0x49, 0x1e, - 0xeb, 0x81, 0x39, 0xfc, 0x12, 0x6d, 0x89, 0xa1, 0x48, 0x50, 0xdb, 0xa8, - 0xb1, 0xa6, 0xe2, 0xcd, 0x6a, 0x89, 0xfe, 0xc5, 0x23, 0xc3, 0x16, 0x7c, - 0x06, 0x84, 0xbd, 0x37, 0xdf, 0x13, 0x2f, 0x1a, 0xf7, 0xeb, 0xdd, 0xce, - 0x45, 0x47, 0x5c, 0x5e, 0x1e, 0x22, 0x32, 0x7c, 0xf4, 0xf7, 0xb0, 0xa6, - 0xf4, 0x31, 0xd3, 0x82, 0x4e, 0x21, 0xbd, 0x1c, 0x91, 0x4e, 0x8e, 0xed, - 0xb1, 0xf2, 0xba, 0xe6, 0xcf, 0x83, 0x79, 0xb9, 0x82, 0xa3, 0x1e, 0xf0, - 0x0f, 0xcd, 0xe4, 0x64, 0x05, 0x84, 0x45, 0xea, 0xcf, 0xc8, 0x81, 0xc7, - 0x58, 0xc9, 0xc0, 0x73, 0x65, 0x6e, 0xba, 0xbd, 0x43, 0xe8, 0x7b, 0x0e, - 0xaf, 0x65, 0x3e, 0x5b, 0x74, 0xc1, 0x6b, 0xfb, 0xac, 0xce, 0xdd, 0x40, - 0x1c, 0xa5, 0xec, 0x7f, 0x24, 0x6b, 0x73, 0x6a, 0x84, 0xa2, 0x6d, 0x13, - 0x7c, 0xba, 0x62, 0x23, 0x6d, 0xd1, 0xd2, 0x15, 0x81, 0xc6, 0xc1, 0x77, - 0x0c, 0xd6, 0x68, 0x76, 0xf4, 0xae, 0xb1, 0x25, 0x81, 0x91, 0x53, 0xf3, - 0x5e, 0xb3, 0x2b, 0x6c, 0xfe, 0x51, 0xdd, 0x64, 0x34, 0x53, 0x77, 0x8b, - 0x20, 0x06, 0xd1, 0x15, 0x4a, 0xc1, 0x2d, 0xe5, 0x62, 0x91, 0xe3, 0x3d, - 0x1f, 0xdd, 0x85, 0xd7, 0xcf, 0x13, 0xa3, 0xdb, 0x8c, 0x90, 0x82, 0x90, - 0xa8, 0x59, 0x44, 0x71, 0x5e, 0x44, 0x9c, 0x48, 0x69, 0x89, 0x7c, 0xd2, - 0x50, 0xcc, 0x50, 0xb1, 0x2e, 0x90, 0x0e, 0xa4, 0x5b, 0x6b, 0x66, 0x53, - 0xc4, 0x29, 0x0c, 0x62, 0x88, 0x4b, 0xc8, 0xca, 0xec, 0xf4, 0x03, 0x27, - 0xe3, 0xdf, 0xa7, 0x42, 0x26, 0x18, 0x82, 0x5c, 0x7f, 0x23, 0x92, 0xe9, - 0xa2, 0x15, 0x08, 0x35, 0xc1, 0x2f, 0x99, 0xbb, 0xe2, 0xc1, 0xae, 0xc8, - 0xc3, 0x43, 0xc4, 0x43, 0xd1, 0xf6, 0xd6, 0x88, 0x51, 0x1b, 0x87, 0x47, - 0x51, 0x38, 0xfd, 0xed, 0x44, 0xf6, 0x03, 0x60, 0xb1, 0xf9, 0x42, 0xdf, - 0xf7, 0x72, 0x66, 0xe2, 0x07, 0x4a, 0xa2, 0x7e, 0x9f, 0x76, 0x76, 0xef, - 0x3d, 0x65, 0x91, 0xe9, 0x63, 0x05, 0xce, 0x0b, 0x91, 0x9e, 0xe4, 0xd2, - 0x2d, 0xef, 0x8d, 0x92, 0xc9, 0x92, 0x5a, 0x20, 0xd3, 0x62, 0x9a, 0x9e, - 0xc3, 0xba, 0x15, 0xed, 0xa7, 0x44, 0xe6, 0x2c, 0xa3, 0x09, 0x81, 0x45, - 0x31, 0xe7, 0x42, 0x47, 0x5d, 0x85, 0x43, 0x5d, 0xf2, 0xb5, 0xa5, 0x08, - 0x88, 0xb9, 0x5d, 0x0a, 0xe5, 0xdd, 0xb3, 0x93, 0xd1, 0x34, 0x9c, 0x89, - 0xd9, 0x18, 0x17, 0x7a, 0x04, 0x75, 0x74, 0xc6, 0x74, 0xd0, 0xfa, 0x5a, - 0x57, 0xe2, 0xfd, 0x86, 0xc1, 0xd2, 0x2a, 0x3d, 0x22, 0xfc, 0xcd, 0x5a, - 0x6b, 0xe2, 0x98, 0xc5, 0xf4, 0x65, 0x79, 0xe5, 0x24, 0x4d, 0x7e, 0x87, - 0x68, 0x17, 0xf9, 0xe0, 0x38, 0xa5, 0x0f, 0xbc, 0x14, 0xa7, 0xb8, 0x5d, - 0xef, 0xdf, 0x51, 0x12, 0x03, 0x04, 0x0b, 0x92, 0xf3, 0x5b, 0x67, 0x5f, - 0x45, 0x63, 0x57, 0x25, 0x13, 0x28, 0xce, 0x06, 0xe6, 0xa5, 0x5a, 0x3c, - 0x9e, 0xc8, 0xcd, 0xe3, 0x6f, 0xa3, 0x0c, 0x36, 0x5d, 0x00, 0x81, 0x13, - 0x5b, 0x47, 0x62, 0x08, 0xe1, 0x44, 0x89, 0x28, 0xb0, 0x76, 0xa6, 0x75, - 0x38, 0xea, 0xcc, 0xb6, 0x1c, 0xb4, 0x1c, 0xb8, 0x52, 0x0a, 0xda, 0x79, - 0x05, 0xa7, 0xc7, 0xf5, 0x8b, 0x1b, 0x7a, 0x08, 0x4e, 0x50, 0xb0, 0x8a, - 0x00, 0x8a, 0x80, 0x6c, 0x31, 0x13, 0x1e, 0xb5, 0x11, 0x78, 0x8c, 0x24, - 0x57, 0x7b, 0x35, 0x71, 0x01, 0x7f, 0xc4, 0xb8, 0xda, 0xb7, 0xbb, 0xa8, - 0x66, 0x8c, 0xbb, 0x55, 0xb7, 0x41, 0x23, 0xf0, 0x98, 0x45, 0xf8, 0x2e, - 0x86, 0xa0, 0x84, 0x90, 0x82, 0xc8, 0x56, 0xac, 0xb7, 0x02, 0x9b, 0xb1, - 0x3c, 0x6e, 0x62, 0xa0, 0x0a, 0x72, 0x47, 0xec, 0x8d, 0x8c, 0x9b, 0x23, - 0xa5, 0x91, 0xc2, 0xf1, 0xb3, 0xb7, 0xb5, 0x82, 0xcc, 0x96, 0x6b, 0x13, - 0x08, 0x93, 0xcb, 0xf6, 0x65, 0x17, 0xed, 0x80, 0x89, 0x00, 0xd3, 0x3e, - 0xa5, 0x38, 0xb6, 0xab, 0xea, 0x05, 0xa6, 0xa9, 0xaa, 0xcf, 0x65, 0x81, - 0x23, 0x20, 0x93, 0x65, 0xde, 0xf6, 0xe9, 0x1a, 0xc3, 0x85, 0x73, 0x17, - 0xd6, 0xd7, 0xfe, 0x6b, 0xad, 0x38, 0x64, 0xee, 0xcb, 0xfe, 0x4b, 0x61, - 0x0c, 0xcd, 0x3b, 0x34, 0x87, 0xea, 0xe5, 0x34, 0x74, 0x7c, 0x14, 0x93, - 0x48, 0xdb, 0x60, 0x8f, 0x0b, 0xf7, 0x72, 0xa3, 0xb6, 0x80, 0xb2, 0x71, - 0x14, 0xfc, 0xcb, 0x7e, 0x7d, 0xf2, 0xb9, 0x91, 0x73, 0x99, 0xde, 0xfc, - 0x0c, 0xe2, 0x27, 0xbb, 0x62, 0x52, 0x58, 0xae, 0x4e, 0x0b, 0x8b, 0x34, - 0x2d, 0x45, 0x1c, 0x01, 0xe6, 0xd9, 0xfa, 0xfd, 0xd9, 0x51, 0xd4, 0xae, - 0x65, 0x48, 0xe6, 0x95, 0x7d, 0x5c, 0xca, 0x4e, 0x30, 0x72, 0x17, 0x5d, - 0xea, 0xca, 0x56, 0xb7, 0xac, 0xf4, 0x9d, 0x3b, 0xbe, 0x33, 0x75, 0x61, - 0x39, 0x0a, 0x1c, 0x27, 0x0b, 0x18, 0x8f, 0xae, 0x8d, 0x75, 0xa2, 0x1d, - 0xef, 0x79, 0xd7, 0x5e, 0x11, 0xa3, 0x6c, 0x7a, 0x82, 0x76, 0x9e, 0xe9, - 0x29, 0x70, 0xa9, 0x32, 0x9f, 0x5b, 0x11, 0x3e, 0x8e, 0x09, 0xdf, 0x94, - 0x5d, 0xaa, 0x5f, 0xf2, 0xb3, 0xca, 0x29, 0x1d, 0x8c, 0x9a, 0x84, 0x3a, - 0xc0, 0x64, 0x46, 0xe6, 0x88, 0x7f, 0x83, 0x49, 0x15, 0x93, 0x69, 0xd3, - 0x88, 0x4e, 0x3d, 0xb4, 0xa6, 0x5f, 0x7f, 0x81, 0xb4, 0xdc, 0x90, 0x6b, - 0x15, 0xc6, 0x95, 0xb3, 0xc0, 0x53, 0x7d, 0xb9, 0x10, 0xca, 0x93, 0xbd, - 0x63, 0x3a, 0x12, 0xeb, 0x4f, 0xbe, 0x34, 0xf6, 0x30, 0x55, 0x66, 0x4d, - 0x64, 0x36, 0xfb, 0xa5, 0x71, 0xad, 0x60, 0x46, 0x64, 0xb9, 0xa1, 0x54, - 0x8d, 0x8d, 0x2f, 0x21, 0x7d, 0xbf, 0x15, 0x7c, 0x8f, 0x7b, 0xaa, 0x2d, - 0x8f, 0xa8, 0xd0, 0x97, 0xa3, 0x18, 0x75, 0xc3, 0xda, 0x48, 0x16, 0xbd, - 0xc3, 0x77, 0xc6, 0x73, 0x85, 0x3b, 0x13, 0x92, 0xa4, 0x9b, 0xcc, 0xdc, - 0xaf, 0x6d, 0x98, 0xa7, 0x8a, 0x1b, 0xc8, 0x2d, 0x2b, 0xc1, 0xf9, 0x34, - 0x0e, 0x72, 0xdd, 0x38, 0xba, 0x34, 0x0d, 0xf6, 0x02, 0xf4, 0x49, 0xe3, - 0x56, 0x1a, 0xb1, 0x0d, 0xfe, 0xdc, 0x35, 0x99, 0x87, 0x0b, 0xf5, 0xd7, - 0x3e, 0xc3, 0x80, 0x05, 0xeb, 0x8d, 0x35, 0xa8, 0x76, 0x69, 0xd4, 0xdb, - 0xdf, 0xb0, 0xba, 0x4f, 0xe1, 0x05, 0xdd, 0xbc, 0x06, 0x88, 0xe0, 0x7d, - 0x01, 0xee, 0xd5, 0x78, 0xd0, 0xa4, 0x4c, 0x3c, 0xc2, 0x6c, 0xc3, 0x6f, - 0x26, 0x35, 0x69, 0x49, 0xb5, 0xaa, 0x00, 0x48, 0xe4, 0x60, 0x1a, 0x61, - 0x6b, 0xc6, 0xdf, 0x23, 0x5c, 0xb9, 0x23, 0x3e, 0x0e, 0x79, 0x21, 0x46, - 0x47, 0x27, 0xf1, 0xb9, 0x4b, 0x4b, 0xe3, 0x44, 0x8c, 0xe0, 0x93, 0x35, - 0x8d, 0xe2, 0x50, 0x1f, 0x10, 0x33, 0x08, 0x6b, 0xd8, 0x49, 0x2a, 0x1b, - 0xec, 0xea, 0x2a, 0x5e, 0x75, 0xf7, 0x83, 0x9f, 0x8f, 0xae, 0xbd, 0x35, - 0x32, 0xc6, 0xa3, 0x3c, 0x0a, 0xb7, 0xed, 0x8d, 0x19, 0xc7, 0xbe, 0x1d, - 0x21, 0x8d, 0xf0, 0xf3, 0x6f, 0x7e, 0x98, 0xf5, 0x83, 0x30, 0xff, 0x0f, - 0xdf, 0x47, 0xd4, 0xea, 0xfd, 0xa0, 0xf4, 0xb5, 0x4a, 0xd7, 0xb6, 0xe7, - 0x57, 0x44, 0x44, 0x3e, 0x51, 0x24, 0x8a, 0x8c, 0xcd, 0x4c, 0x40, 0x9a, - 0x1c, 0x77, 0x18, 0x2f, 0xe8, 0x7a, 0x8b, 0x82, 0x81, 0x61, 0x50, 0x82, - 0x6e, 0x63, 0x38, 0x7a, 0x0d, 0xa8, 0x3b, 0x06, 0x9c, 0x7e, 0x83, 0xb6, - 0x28, 0xe5, 0x00, 0x66, 0x95, 0xf3, 0x98, 0x12, 0xfe, 0xc1, 0x8a, 0x2e, - 0x55, 0xcd, 0xbe, 0x3a, 0xa1, 0xa1, 0xca, 0xe6, 0x55, 0x51, 0xa4, 0x63, - 0xa0, 0x8b, 0x8d, 0x69, 0xb4, 0x37, 0xa7, 0x4d, 0x76, 0x69, 0xd1, 0xd7, - 0x4e, 0xf4, 0x52, 0x4a, 0x1a, 0x8f, 0x52, 0xc1, 0x0f, 0x9e, 0x66, 0xda, - 0x60, 0x21, 0x00, 0xe1, 0x1c, 0x33, 0x3b, 0x73, 0xf2, 0xe0, 0x54, 0x4d, - 0x6f, 0xfb, 0x7a, 0xee, 0x97, 0x66, 0x10, 0xf2, 0x77, 0x1d, 0x46, 0xbf, - 0xfe, 0x16, 0x6a, 0x89, 0x2f, 0xcd, 0x61, 0x51, 0x36, 0x6a, 0x59, 0x96, - 0x57, 0xa7, 0x5b, 0x04, 0xb7, 0xb3, 0x63, 0x22, 0x29, 0x5f, 0x5f, 0x7d, - 0xe8, 0xe5, 0x68, 0xbf, 0xa1, 0xa7, 0xae, 0x28, 0xc0, 0x69, 0x2e, 0x95, - 0x13, 0x80, 0xe2, 0xcc, 0x7d, 0x9b, 0xd7, 0x2c, 0x3a, 0x38, 0xb0, 0x73, - 0x83, 0x01, 0x80, 0xaf, 0xe4, 0x2e, 0x3d, 0x9f, 0xc5, 0xa8, 0x66, 0xcf, - 0x0e, 0xc5, 0xe8, 0x78, 0xa3, 0x53, 0xf6, 0xd5, 0x2a, 0x41, 0xca, 0xcd, - 0x20, 0x11, 0xd1, 0xf1, 0xd5, 0x9a, 0x82, 0xd2, 0x12, 0xa6, 0xa6, 0xe9, - 0x0d, 0x5f, 0x2a, 0xf6, 0xbc, 0x6f, 0x8a, 0xfd, 0xd9, 0xb7, 0x34, 0x4d, - 0xf4, 0x73, 0x54, 0x61, 0x9a, 0xfe, 0x63, 0x19, 0xa3, 0xc8, 0x9d, 0xfd, - 0xa7, 0x90, 0x72, 0x9f, 0x9f, 0x7c, 0xf7, 0x33, 0xbe, 0x65, 0x0f, 0x5c, - 0x8c, 0x60, 0xac, 0xaa, 0x3f, 0x9e, 0xed, 0x1d, 0x87, 0x9a, 0x42, 0x7c, - 0x82, 0x11, 0x5a, 0xa1, 0x52, 0xda, 0xbb, 0x3f, 0x91, 0xad, 0x8e, 0x24, - 0xde, 0xdc, 0x3f, 0xe2, 0xe0, 0x6f, 0x26, 0x14, 0x17, 0x2b, 0x1c, 0x78, - 0x7c, 0x46, 0x62, 0x7f, 0xc3, 0x44, 0xd3, 0x05, 0x0a, 0x87, 0x3e, 0xc2, - 0x14, 0x35, 0x12, 0x55, 0x13, 0x93, 0x63, 0x3b, 0x14, 0x69, 0x0d, 0xcb, - 0x07, 0x1c, 0x47, 0x80, 0xe5, 0xda, 0xe5, 0x25, 0x04, 0x6c, 0x28, 0x5a, - 0xcd, 0x10, 0x1c, 0x15, 0xb6, 0xed, 0xcb, 0x3a, 0xa1, 0x58, 0x97, 0x2b, - 0x36, 0xdb, 0xae, 0xed, 0x32, 0x07, 0x0d, 0xfd, 0x9a, 0x21, 0x62, 0x47, - 0xd4, 0x53, 0x95, 0x85, 0x50, 0xde, 0xd9, 0xe4, 0x73, 0x72, 0x90, 0x12, - 0x86, 0x56, 0xae, 0xc4, 0x8c, 0x8a, 0x2b, 0xeb, 0xde, 0x93, 0xdc, 0x64, - 0x87, 0x88, 0x75, 0x6a, 0x4c, 0x5f, 0xae, 0xfd, 0xc3, 0x5e, 0xb3, 0xb0, - 0x1a, 0x67, 0x93, 0x43, 0xaa, 0xd4, 0xc7, 0x7b, 0x16, 0x8f, 0x26, 0x2c, - 0xe4, 0x92, 0xfd, 0x5d, 0x68, 0xe3, 0xc0, 0x63, 0x9a, 0xbf, 0x14, 0xd4, - 0xe4, 0x4a, 0xff, 0xd8, 0x5c, 0xfa, 0x8e, 0xe5, 0xaa, 0xa6, 0x5c, 0x13, - 0x77, 0xab, 0xf4, 0xb4, 0x69, 0x97, 0xe5, 0x47, 0x8e, 0x0f, 0xfd, 0xfa, - 0xb9, 0x88, 0x73, 0xc4, 0xcc, 0x6e, 0x91, 0xfb, 0x66, 0xb8, 0x8e, 0x62, - 0x56, 0xb7, 0x59, 0x28, 0xe6, 0x3e, 0x04, 0x2f, 0x1b, 0xba, 0xc3, 0x1f, - 0x30, 0x03, 0x2a, 0x83, 0x81, 0x5d, 0x16, 0x44, 0xfc, 0x78, 0x1d, 0x36, - 0xaf, 0x3b, 0x4f, 0xea, 0x04, 0x16, 0xaa, 0xc6, 0xcf, 0x7c, 0x48, 0x08, - 0x0f, 0xec, 0x64, 0x4f, 0x6e, 0x2d, 0xa5, 0xb4, 0x89, 0x6d, 0x15, 0x5a, - 0xdc, 0xde, 0x6e, 0xe4, 0xe9, 0x53, 0xbe, 0x6c, 0x94, 0x78, 0xbb, 0x77, - 0x38, 0x25, 0xa6, 0x78, 0x14, 0x7b, 0xf3, 0x2b, 0xcc, 0x7a, 0x91, 0xa8, - 0xfd, 0x93, 0xfe, 0x3a, 0x1d, 0xdb, 0x42, 0x2e, 0x27, 0x77, 0x54, 0xc7, - 0xcb, 0x26, 0xe0, 0x43, 0xa4, 0xba, 0xd6, 0xa7, 0x03, 0x0b, 0xc7, 0x26, - 0x23, 0x1f, 0xe9, 0xd0, 0x19, 0xe7, 0x39, 0x00, 0x19, 0x99, 0xcc, 0xad, - 0x57, 0x3d, 0xf7, 0x38, 0x48, 0x4c, 0xdb, 0xa2, 0xdf, 0x6b, 0x4b, 0x3f, - 0x26, 0xea, 0xac, 0x85, 0x8c, 0x79, 0x98, 0x37, 0x44, 0x3c, 0x79, 0x65, - 0x82, 0x1e, 0x33, 0x99, 0x3b, 0xd8, 0x42, 0xbb, 0xf6, 0x46, 0x6a, 0x73, - 0xc2, 0x58, 0xb4, 0x18, 0x28, 0xd4, 0xb4, 0xbf, 0xa6, 0xfa, 0x12, 0x50, - 0xcf, 0x97, 0x67, 0x94, 0x8f, 0x9e, 0xf3, 0x1a, 0xdc, 0x4f, 0x6e, 0x5c, - 0x24, 0xe6, 0xa7, 0x5d, 0x6b, 0xc8, 0x69, 0x0d, 0x44, 0xad, 0xc6, 0x95, - 0xb2, 0xeb, 0x1d, 0x9c, 0xc1, 0x9c, 0xc1, 0x5f, 0x52, 0xdb, 0x19, 0x7d, - 0xf1, 0x76, 0x04, 0xe1, 0x54, 0x18, 0x4b, 0xd5, 0x0d, 0xcc, 0x8f, 0x53, - 0x43, 0x44, 0x1f, 0x55, 0x77, 0xf0, 0xaf, 0x36, 0x7e, 0x43, 0x83, 0x52, - 0xb1, 0xed, 0x67, 0x44, 0xd3, 0x4d, 0xb8, 0xb1, 0x45, 0x03, 0x42, 0x3c, - 0x7c, 0x7d, 0xe1, 0x7b, 0x43, 0x1b, 0x62, 0xdb, 0xde, 0xb7, 0xcb, 0x98, - 0x3c, 0xaf, 0x2a, 0x41, 0x06, 0x2b, 0xfb, 0x1b, 0x22, 0x2b, 0xda, 0xa6, - 0x85, 0xc1, 0xec, 0x6c, 0xcf, 0x44, 0xdd, 0x94, 0x79, 0x26, 0x16, 0x43, - 0x43, 0x03, 0x90, 0xf0, 0x75, 0x7f, 0x21, 0xd2, 0x4b, 0x8f, 0xbf, 0x33, - 0x03, 0x5d, 0xc7, 0x68, 0x64, 0x36, 0x9a, 0x66, 0x0c, 0x6d, 0x05, 0x36, - 0x92, 0x7f, 0xc0, 0xcf, 0x6e, 0x86, 0x4f, 0xfb, 0x9a, 0x13, 0x16, 0x97, - 0x1e, 0x60, 0xbd, 0xd7, 0x09, 0xf5, 0x66, 0xc0, 0x82, 0xb6, 0xd1, 0x25, - 0x5b, 0x85, 0x2a, 0x63, 0x9c, 0xbf, 0x14, 0x7f, 0x4c, 0xef, 0x39, 0xa4, - 0x3f, 0xc4, 0x8d, 0xb4, 0x41, 0xec, 0x00, 0xa6, 0xa3, 0x0c, 0xf7, 0x2b, - 0x61, 0xf4, 0x6b, 0x92, 0x19, 0x75, 0xd5, 0xba, 0x5d, 0x5c, 0x3b, 0x5f, - 0x69, 0xb7, 0x3c, 0x55, 0xfc, 0xd3, 0x9a, 0xc0, 0x47, 0x81, 0x0f, 0xa2, - 0x5a, 0xee, 0x32, 0x56, 0x95, 0xe3, 0x47, 0x82, 0x5d, 0xa4, 0x62, 0x4e, - 0xcb, 0xe1, 0x48, 0x33, 0x8c, 0xa0, 0x3b, 0x9c, 0xfc, 0xc9, 0xe4, 0xd0, - 0x18, 0x19, 0x0f, 0x14, 0x89, 0xf8, 0x77, 0x51, 0x00, 0x67, 0xee, 0x48, - 0x9a, 0x22, 0x74, 0x65, 0x91, 0x35, 0x50, 0x3e, 0x11, 0x38, 0xed, 0xf2, - 0xf7, 0x08, 0xc5, 0x93, 0x6b, 0xa4, 0xcb, 0x6a, 0x84, 0x24, 0x81, 0x8a, - 0xcd, 0xd7, 0xe7, 0x9d, 0xa5, 0x69, 0x8d, 0x8a, 0x63, 0x5c, 0x9c, 0x52, - 0xa5, 0x48, 0x4e, 0x27, 0xe7, 0x9a, 0xce, 0x72, 0xed, 0x7a, 0x9c, 0xf4, - 0xf4, 0x6c, 0x52, 0x81, 0x03, 0xa3, 0xa9, 0x09, 0xd6, 0x60, 0xdc, 0x36, - 0x68, 0x0a, 0x75, 0x96, 0xaa, 0x38, 0x9c, 0xa7, 0x07, 0x18, 0xa2, 0x00, - 0x3f, 0x62, 0x3c, 0xc0, 0x1c, 0x7d, 0x72, 0x5f, 0x7d, 0xec, 0x6e, 0x4a, - 0x5a, 0x07, 0x06, 0x07, 0x89, 0x6e, 0x84, 0xa5, 0x3f, 0x9d, 0x5b, 0x5d, - 0x15, 0x75, 0x40, 0x67, 0xec, 0x46, 0x3f, 0xaa, 0x09, 0x8c, 0x52, 0xd4, - 0xcd, 0x9e, 0x70, 0x34, 0xec, 0xf4, 0x20, 0x0d, 0x6c, 0x12, 0xf7, 0xd9, - 0xe5, 0xb9, 0x71, 0x1a, 0x8e, 0xdd, 0x83, 0xed, 0xa1, 0xb6, 0x16, 0xee, - 0x46, 0x90, 0x2b, 0xa1, 0xdb, 0x02, 0x73, 0x5d, 0x17, 0x17, 0x7d, 0xb7, - 0x1f, 0x27, 0x22, 0x22, 0xd3, 0x3d, 0x7f, 0xdb, 0xcb, 0x75, 0x57, 0xb0, - 0x7d, 0xe4, 0xa2, 0xf4, 0x5b, 0x6f, 0xcc, 0x66, 0x6b, 0xd8, 0x10, 0x09, - 0xb4, 0xc6, 0x4e, 0x8f, 0xe9, 0x51, 0x6b, 0x74, 0x7e, 0xa7, 0x87, 0x1d, - 0xe0, 0x4d, 0x29, 0x90, 0x6e, 0x73, 0x06, 0xc0, 0x7f, 0x8d, 0x0e, 0x8e, - 0xfd, 0x94, 0x44, 0x77, 0x30, 0x3c, 0x2f, 0xce, 0x32, 0x80, 0x7f, 0x1c, - 0xee, 0x1c, 0xa7, 0x01, 0x3a, 0x87, 0x8d, 0x02, 0xf7, 0x7b, 0x14, 0x93, - 0xe0, 0xec, 0x2f, 0xcc, 0xa2, 0x8e, 0x8d, 0x23, 0x94, 0xa2, 0x2c, 0x94, - 0xef, 0xae, 0xb2, 0x7c, 0xb4, 0xe7, 0x07, 0x02, 0xdb, 0x4b, 0xc2, 0x6e, - 0xd0, 0x12, 0xfe, 0xa1, 0x39, 0x91, 0x20, 0xbb, 0x6e, 0xcf, 0x01, 0x80, - 0x35, 0x36, 0xe4, 0x88, 0xf9, 0x50, 0xd6, 0x96, 0x08, 0x31, 0x31, 0xf8, - 0x32, 0x87, 0x5c, 0x9a, 0x07, 0x55, 0xd4, 0xe0, 0x89, 0xe8, 0x62, 0x69, - 0xcd, 0x6c, 0xc3, 0x67, 0x1d, 0xc9, 0x1c, 0xfa, 0xc5, 0xa7, 0x17, 0xa0, - 0x39, 0xf8, 0x9d, 0x68, 0xa0, 0xd5, 0x2f, 0x77, 0x82, 0xf9, 0xdf, 0x1e, - 0x38, 0xec, 0x7d, 0xb7, 0x82, 0x45, 0xa5, 0x7e, 0x78, 0x2e, 0x3c, 0x28, - 0x38, 0x8b, 0x4d, 0xc2, 0x05, 0x3e, 0xcd, 0xee, 0x7c, 0x6f, 0xc8, 0x11, - 0x5f, 0x78, 0xdd, 0x6e, 0xf2, 0x2b, 0x07, 0x85, 0xbd, 0x60, 0x4e, 0x58, - 0x98, 0x45, 0x2c, 0xfa, 0xf0, 0xab, 0xac, 0x39, 0x4a, 0x9e, 0x8e, 0x96, - 0x58, 0xc9, 0xfd, 0x10, 0x08, 0x01, 0xae, 0x98, 0x5e, 0x95, 0x29, 0xb1, - 0x26, 0xb4, 0x9f, 0x99, 0xc1, 0xd1, 0x26, 0xc6, 0x99, 0xde, 0x06, 0x9c, - 0xa3, 0xcb, 0x26, 0xd0, 0x0b, 0x65, 0x26, 0xef, 0x9c, 0xd5, 0x93, 0x71, - 0xaf, 0x86, 0xec, 0x83, 0x37, 0xe3, 0x81, 0xa6, 0x63, 0xc3, 0xfa, 0x3f, - 0xdb, 0x0a, 0x9a, 0x79, 0x86, 0xb7, 0x4b, 0x6e, 0x33, 0x34, 0x36, 0x45, - 0x91, 0x30, 0x68, 0x61, 0x23, 0xec, 0x52, 0x54, 0x45, 0xe6, 0xf8, 0xcb, - 0x91, 0xfa, 0x93, 0x1c, 0x15, 0xe5, 0x54, 0x8e, 0x8c, 0xde, 0x0e, 0xbb, - 0x34, 0x38, 0xc7, 0x35, 0x7a, 0xc0, 0xc3, 0x58, 0x29, 0x09, 0x89, 0xa6, - 0xf6, 0xfb, 0x81, 0x5a, 0xbb, 0xef, 0x95, 0x64, 0x1f, 0x1b, 0x03, 0xad, - 0x53, 0x4b, 0x88, 0x85, 0x69, 0x9d, 0x0b, 0x26, 0x3f, 0xb6, 0x6b, 0x4e, - 0xae, 0x5e, 0x23, 0xcb, 0xd5, 0x44, 0x27, 0x8c, 0x77, 0x74, 0x4d, 0x15, - 0xe9, 0xce, 0x73, 0x9d, 0xd3, 0x64, 0xed, 0x64, 0xc4, 0xd6, 0x2f, 0x92, - 0x7d, 0x5c, 0x69, 0x91, 0x4b, 0x15, 0x5a, 0x5b, 0x25, 0xf3, 0x53, 0x9d, - 0x60, 0x01, 0x6f, 0x98, 0xee, 0xa2, 0xfb, 0x2f, 0x02, 0x91, 0x18, 0xad, - 0xf0, 0xb2, 0x01, 0x70, 0x2e, 0x9d, 0x2f, 0x82, 0x12, 0x9e, 0xdd, 0x02, - 0x5b, 0x4e, 0xd7, 0x48, 0x94, 0x38, 0x28, 0x30, 0x0e, 0x19, 0x2f, 0x81, - 0x2e, 0x0e, 0xe6, 0xe5, 0x9c, 0x63, 0x18, 0xed, 0x0e, 0xf0, 0x9a, 0x39, - 0xab, 0x54, 0x49, 0x5d, 0x4d, 0x83, 0xcc, 0x5f, 0x79, 0x97, 0xfb, 0xae, - 0xe6, 0xd8, 0x94, 0x2e, 0xd4, 0xcc, 0xcc, 0xd3, 0x1a, 0x50, 0xef, 0x84, - 0x21, 0xc0, 0x2a, 0x3a, 0xa2, 0x09, 0xf6, 0xbc, 0x40, 0x8d, 0x09, 0x72, - 0x85, 0x16, 0x91, 0x9f, 0x0d, 0x6e, 0xea, 0x9c, 0x94, 0x73, 0xff, 0x2f, - 0x72, 0x70, 0x6a, 0x6a, 0x4a, 0x44, 0x3a, 0x9d, 0xfe, 0x86, 0x1f, 0xe7, - 0xe0, 0x08, 0x38, 0x7b, 0x49, 0x99, 0x8d, 0x02, 0x34, 0xed, 0x04, 0xc7, - 0xaf, 0x09, 0x4f, 0xfa, 0x8a, 0x44, 0x80, 0x6c, 0x0b, 0x4e, 0xc8, 0xb3, - 0xe4, 0x69, 0xc1, 0xa0, 0x32, 0x06, 0x86, 0x1d, 0x76, 0x53, 0xb4, 0x74, - 0x2a, 0x7f, 0xff, 0x30, 0x4a, 0x0f, 0xd2, 0x8a, 0xd5, 0x32, 0xc6, 0xa2, - 0x15, 0x7c, 0x5d, 0x53, 0x0c, 0xb2, 0x92, 0x5c, 0xfb, 0x89, 0x39, 0xbf, - 0x7f, 0x3b, 0xe9, 0xd0, 0x8a, 0xe5, 0xfd, 0xb5, 0x60, 0x49, 0xc9, 0x71, - 0x02, 0xf3, 0x03, 0xb3, 0xbe, 0xc5, 0xe9, 0xe8, 0x00, 0x8b, 0x6c, 0xad, - 0x9c, 0x75, 0x37, 0xf3, 0xf8, 0xa9, 0x1d, 0xb5, 0xfd, 0x8e, 0x7e, 0x10, - 0x13, 0x21, 0x6f, 0x18, 0x4d, 0xc7, 0x6a, 0x1a, 0xd1, 0xcc, 0x70, 0x85, - 0xde, 0x7b, 0xca, 0x9a, 0x1e, 0xa9, 0x6d, 0xf6, 0x7a, 0x75, 0xf8, 0xb4, - 0x9d, 0xcd, 0xcf, 0x38, 0x08, 0x16, 0x6b, 0x2e, 0xd8, 0xe0, 0xc5, 0x9d, - 0x13, 0xa6, 0x12, 0xac, 0x93, 0xea, 0xd9, 0x4c, 0xf6, 0x79, 0x5b, 0xe4, - 0x4b, 0xd1, 0xec, 0xc2, 0x4c, 0x90, 0x84, 0x41, 0xdb, 0x3e, 0x83, 0x75, - 0x4f, 0x25, 0xb3, 0x85, 0x44, 0xbd, 0x69, 0x11, 0xb7, 0x8c, 0xf4, 0x5e, - 0x56, 0x96, 0x70, 0xec, 0x22, 0x73, 0x93, 0x76, 0xab, 0xe9, 0xf1, 0x99, - 0xfa, 0xa9, 0x38, 0x48, 0x38, 0x81, 0x97, 0x12, 0x6d, 0x3c, 0xbb, 0x6b, - 0xa3, 0x37, 0xbe, 0xfb, 0x43, 0x72, 0x68, 0x5e, 0xb9, 0x28, 0xe7, 0xc6, - 0xf6, 0x26, 0x73, 0xe2, 0x7e, 0xae, 0xb9, 0x8b, 0xde, 0x20, 0x1f, 0x42, - 0x72, 0xd5, 0x4a, 0x15, 0x0b, 0x1c, 0xe0, 0xce, 0x4c, 0x53, 0x6b, 0xf2, - 0xb3, 0x01, 0x2a, 0xe3, 0x1a, 0xf4, 0x42, 0xf7, 0xdc, 0x27, 0xdd, 0x29, - 0xe6, 0x03, 0x18, 0x34, 0x7f, 0x1b, 0x36, 0x1a, 0x61, 0x2c, 0x6d, 0x93, - 0x42, 0x4c, 0xdd, 0xdb, 0x2c, 0x2e, 0x1f, 0xaf, 0x42, 0x7b, 0x0e, 0xdb, - 0x26, 0x51, 0xb0, 0x90, 0x97, 0xba, 0x2a, 0xc6, 0x9b, 0xaa, 0xbe, 0x96, - 0x5e, 0xd4, 0x2e, 0x30, 0xf1, 0x69, 0xb2, 0x8c, 0xb9, 0x63, 0x25, 0xd2, - 0x25, 0x73, 0xca, 0xbd, 0xb6, 0xdf, 0x80, 0x4e, 0x22, 0x79, 0xad, 0x27, - 0x50, 0x99, 0xff, 0x29, 0x28, 0x16, 0xe4, 0x2d, 0xed, 0xd7, 0xad, 0xb2, - 0xeb, 0x38, 0xe5, 0x06, 0x44, 0x0c, 0xc7, 0xee, 0x69, 0x7c, 0x8b, 0xc0, - 0x06, 0xfc, 0xa3, 0xa6, 0x8e, 0x60, 0x2f, 0x24, 0x6b, 0x7a, 0x69, 0xcd, - 0xb2, 0x3a, 0xb3, 0x7d, 0xf3, 0x1d, 0x37, 0xf1, 0x4d, 0xe4, 0xfd, 0x53, - 0x06, 0x4c, 0x18, 0xd7, 0x40, 0x7f, 0x1c, 0xd9, 0xf3, 0x5d, 0xba, 0x39, - 0x36, 0x91, 0x67, 0xf9, 0x29, 0x0a, 0x55, 0x34, 0xd6, 0x46, 0xf0, 0x7e, - 0x91, 0x31, 0x4b, 0xed, 0x9a, 0xfb, 0x47, 0xa2, 0x6e, 0xf4, 0xd8, 0xb7, - 0xea, 0x8a, 0x0e, 0xe3, 0x1e, 0xee, 0x24, 0x36, 0x3f, 0xf8, 0x17, 0x68, - 0x77, 0x3a, 0x77, 0x9d, 0xbb, 0x55, 0xf3, 0x77, 0x0b, 0xc6, 0x40, 0x15, - 0x08, 0x4d, 0x1b, 0x2f, 0x12, 0xd9, 0xe2, 0x83, 0xeb, 0x54, 0x47, 0x99, - 0xa7, 0x50, 0x01, 0xbf, 0x9e, 0xca, 0x58, 0x71, 0x25, 0xf6, 0x6d, 0xb4, - 0x50, 0x1d, 0x63, 0xe9, 0xb5, 0x35, 0x20, 0xac, 0x82, 0x66, 0xfb, 0x19, - 0x7a, 0xc5, 0x29, 0xab, 0xc8, 0x20, 0x0e, 0x8c, 0x26, 0xda, 0xd4, 0x2e, - 0x9c, 0x46, 0xe0, 0x6e, 0x13, 0x7a, 0x35, 0xc5, 0x00, 0x64, 0x4a, 0x12, - 0xaa, 0xd0, 0xad, 0x39, 0x71, 0xa4, 0x94, 0x4a, 0x76, 0x16, 0xdf, 0xbf, - 0x83, 0x18, 0x76, 0xfe, 0x36, 0x95, 0x7c, 0x89, 0xf0, 0xc2, 0x3d, 0x5e, - 0x0b, 0x66, 0x31, 0x84, 0x65, 0xac, 0xba, 0xcd, 0x17, 0xa1, 0x96, 0x99, - 0x1f, 0x02, 0x74, 0xf9, 0xfe, 0xf2, 0x43, 0x88, 0xa5, 0xb5, 0x16, 0x96, - 0xd8, 0xd3, 0x29, 0x03, 0xba, 0x5b, 0x8d, 0x44, 0x0d, 0xeb, 0x4f, 0x78, - 0xee, 0xa3, 0xbc, 0x35, 0xef, 0xae, 0xff, 0x19, 0x4b, 0x3d, 0x6d, 0x6a, - 0x00, 0x19, 0xc2, 0xd7, 0x75, 0x74, 0x9f, 0x91, 0x86, 0x8d, 0x0d, 0x58, - 0x9d, 0xb4, 0xc0, 0xb1, 0xc1, 0x1b, 0x55, 0x30, 0x48, 0x7c, 0x05, 0x58, - 0x2f, 0xec, 0x47, 0x1e, 0x47, 0xdf, 0x0d, 0x9f, 0xc8, 0xa7, 0x97, 0xe3, - 0x9e, 0x24, 0x20, 0xe8, 0xd0, 0xa3, 0x08, 0x69, 0x5f, 0x41, 0xf8, 0xef, - 0x28, 0x3d, 0xce, 0xb3, 0x46, 0xb1, 0xe1, 0xa3, 0x92, 0xfc, 0x5d, 0x65, - 0xba, 0x84, 0x4e, 0xe3, 0x0a, 0x43, 0x81, 0x6a, 0xff, 0x18, 0x38, 0xb6, - 0xa1, 0x61, 0xd7, 0x03, 0x69, 0x34, 0x82, 0x62, 0x21, 0x7c, 0xc6, 0xa4, - 0x62, 0xc5, 0xfd, 0x62, 0x7f, 0xfe, 0x7c, 0xff, 0x53, 0xd8, 0xed, 0xb8, - 0x17, 0xed, 0x02, 0x9d, 0x95, 0xe9, 0x51, 0xa2, 0xd5, 0x56, 0x9f, 0xbd, - 0x69, 0x6f, 0x1c, 0x28, 0xd0, 0xea, 0xce, 0x63, 0x65, 0xfa, 0xb4, 0xbf, - 0x7f, 0x63, 0x40, 0xc7, 0xf5, 0x1c, 0x8a, 0x86, 0x35, 0x95, 0x19, 0xc8, - 0x60, 0x42, 0x57, 0x8c, 0xd7, 0x68, 0x8c, 0xab, 0x62, 0x92, 0x00, 0x45, - 0x7f, 0xf1, 0xca, 0x72, 0x7b, 0x45, 0xe1, 0x31, 0x99, 0xb0, 0xed, 0x26, - 0xf8, 0xd6, 0x3a, 0x18, 0xdd, 0xd1, 0xb5, 0xa4, 0x26, 0xfd, 0xee, 0x1b, - 0x3c, 0x0e, 0x0e, 0xbb, 0x84, 0x5a, 0x66, 0x0c, 0x69, 0xd7, 0x39, 0x63, - 0x93, 0xdf, 0x60, 0x8a, 0x1f, 0xe1, 0x14, 0x90, 0xaa, 0xb0, 0x4e, 0xb9, - 0xb8, 0x8d, 0xc0, 0xbc, 0xe3, 0xa0, 0x92, 0x1e, 0xe1, 0xc7, 0x5d, 0xc3, - 0x3e, 0xc8, 0xfe, 0x7e, 0x5e, 0x3e, 0xb5, 0x15, 0x44, 0x77, 0x82, 0x02, - 0xb0, 0x04, 0x9d, 0x9e, 0x7c, 0xf5, 0x43, 0x1c, 0x5d, 0xcf, 0x86, 0x29, - 0xea, 0x6a, 0x82, 0xae, 0xc8, 0xf8, 0xb9, 0x74, 0x19, 0x68, 0x1a, 0x79, - 0x3e, 0x3d, 0xa9, 0x0a, 0xbc, 0x4d, 0x63, 0x97, 0x97, 0x6e, 0xfd, 0x72, - 0xe4, 0xf4, 0x06, 0xde, 0x25, 0x54, 0x8d, 0xba, 0x66, 0xf2, 0xa1, 0x41, - 0x67, 0xbd, 0x2c, 0xa7, 0xa9, 0x40, 0x6b, 0x2c, 0xfd, 0x8c, 0x00, 0x49, - 0x81, 0x25, 0x72, 0x7b, 0xbd, 0x16, 0x24, 0xd4, 0x21, 0x9e, 0x97, 0xe3, - 0xeb, 0x42, 0x08, 0x1a, 0x2f, 0x43, 0xdf, 0x87, 0xe8, 0xcc, 0x1f, 0x54, - 0xc3, 0xd6, 0x0f, 0xc4, 0x6c, 0x38, 0xcd, 0x1a, 0xe5, 0xcf, 0xbc, 0x09, - 0xb2, 0x20, 0x52, 0x1f, 0x4e, 0x64, 0xdd, 0xa9, 0x59, 0x99, 0xdf, 0xd3, - 0x23, 0x93, 0x57, 0xda, 0x1a, 0x24, 0xbb, 0x50, 0x6f, 0x9d, 0x9f, 0xc4, - 0xfb, 0xc1, 0x75, 0xdb, 0x44, 0x1e, 0xc4, 0x49, 0x10, 0xc5, 0x71, 0xa8, - 0xbc, 0xbf, 0xed, 0xe5, 0xbc, 0x23, 0x98, 0x07, 0x03, 0x17, 0x19, 0x6c, - 0x1a, 0x9c, 0x93, 0x9f, 0xa1, 0x75, 0xb2, 0xb8, 0x9a, 0xe3, 0x3b, 0xd0, - 0xb2, 0x6d, 0x04, 0x64, 0xe5, 0x6f, 0xf8, 0xdd, 0xcb, 0x1a, 0x95, 0x69, - 0x29, 0xac, 0x0a, 0x8a, 0x13, 0xe2, 0x2e, 0x37, 0x22, 0xb1, 0xf3, 0x6e, - 0x8e, 0x75, 0x61, 0x33, 0xd2, 0x4e, 0x8f, 0xbc, 0x26, 0x43, 0xda, 0x21, - 0x6d, 0xbe, 0x95, 0x8d, 0x2f, 0x3f, 0xc1, 0x5a, 0x01, 0x38, 0x84, 0x0b, - 0x17, 0x22, 0x54, 0xde, 0x14, 0xb2, 0xb2, 0xaf, 0x42, 0xb7, 0xbc, 0x25, - 0x28, 0xf3, 0x78, 0xd9, 0xfc, 0xbe, 0xa9, 0x1c, 0xfd, 0xd6, 0x52, 0x42, - 0x1a, 0xa4, 0x4e, 0x84, 0xc1, 0x89, 0xe0, 0x7d, 0x42, 0x07, 0xdd, 0x0f, - 0xe0, 0xe8, 0xc3, 0x77, 0xc1, 0xfb, 0x35, 0xb5, 0x1f, 0xeb, 0x50, 0x21, - 0xf9, 0x45, 0x44, 0x56, 0xd2, 0x13, 0x76, 0x83, 0xe6, 0x84, 0x34, 0x94, - 0xff, 0x87, 0xe6, 0x3d, 0x3e, 0x8e, 0xc2, 0x3d, 0x5f, 0x8d, 0x01, 0x79, - 0xaf, 0x93, 0x7b, 0x7c, 0x1a, 0x59, 0x43, 0xf8, 0x02, 0xb4, 0x88, 0xe8, - 0x6e, 0x64, 0xb8, 0xb9, 0x32, 0x7b, 0x7d, 0x62, 0xd9, 0x4f, 0x8f, 0x29, - 0xae, 0x11, 0xb8, 0xcd, 0x0e, 0x05, 0x03, 0xda, 0xfc, 0xc4, 0x94, 0xf1, - 0xd6, 0xfc, 0xe4, 0x06, 0x9c, 0x46, 0x36, 0xb2, 0xf2, 0xa7, 0xc1, 0x01, - 0x37, 0x60, 0xa9, 0xd6, 0x91, 0xd3, 0x74, 0xbd, 0x5e, 0x9b, 0x65, 0x64, - 0x7c, 0x9b, 0x8e, 0x09, 0x8c, 0xe1, 0x1d, 0xc3, 0xee, 0xdf, 0xc8, 0xf0, - 0x44, 0x9d, 0x61, 0x16, 0xf8, 0xeb, 0xbc, 0x71, 0x1d, 0x83, 0x4a, 0x87, - 0x1a, 0xe6, 0x34, 0x07, 0x1f, 0xe1, 0x61, 0xae, 0xcd, 0xf6, 0x62, 0xc8, - 0x0b, 0x95, 0x01, 0xdc, 0x63, 0xcf, 0xff, 0x25, 0x80, 0x97, 0xa7, 0xfe, - 0x29, 0x53, 0x44, 0x5c, 0x58, 0x4a, 0xbc, 0x34, 0x59, 0xe4, 0xd4, 0xa5, - 0x95, 0x51, 0xe3, 0x8e, 0xce, 0x3e, 0x6e, 0xd5, 0x09, 0xe1, 0x43, 0x04, - 0x7e, 0x3a, 0x4e, 0x13, 0x7f, 0x3c, 0x7a, 0xf2, 0x5d, 0xc6, 0x9f, 0xc5, - 0x83, 0x8d, 0x9b, 0x3c, 0xc3, 0xcb, 0xd1, 0xee, 0x4c, 0x6d, 0x13, 0x05, - 0x3f, 0xb8, 0xfc, 0x2d, 0xfe, 0xf7, 0x00, 0x96, 0xac, 0xe8, 0xd2, 0x2f, - 0x8c, 0x95, 0xea, 0xb3, 0x1b, 0xd4, 0xd2, 0xd4, 0xb0, 0x21, 0x6d, 0x56, - 0xd0, 0x5f, 0xbe, 0x93, 0xa7, 0xc2, 0x2c, 0x6e, 0x0f, 0xd8, 0xf5, 0xaf, - 0x85, 0x2b, 0xdb, 0xcc, 0x71, 0x06, 0x10, 0xd5, 0x1b, 0x4b, 0xd2, 0x6f, - 0xfc, 0x94, 0xe6, 0x8e, 0xdc, 0x34, 0x20, 0xba, 0xbc, 0xcb, 0x3d, 0x56, - 0xc1, 0x5d, 0x48, 0xb2, 0x3f, 0xba, 0x51, 0x0d, 0x94, 0xee, 0x85, 0xf5, - 0x23, 0x7f, 0xd3, 0x8a, 0xb5, 0xc0, 0xff, 0x65, 0xf0, 0x08, 0xdd, 0x66, - 0xc3, 0x43, 0xca, 0x76, 0x3e, 0x4d, 0xfc, 0x9d, 0x80, 0xc1, 0xa9, 0x3a, - 0x95, 0x72, 0x6d, 0xdd, 0xde, 0x98, 0xf8, 0x7a, 0x53, 0x98, 0xa6, 0x5f, - 0x69, 0x92, 0x77, 0x5d, 0x03, 0x0b, 0x1d, 0x00, 0xef, 0x56, 0x93, 0xb2, - 0xaa, 0xfe, 0x83, 0x7c, 0xd0, 0x98, 0x94, 0x16, 0xdf, 0x4b, 0xce, 0x14, - 0x24, 0x8f, 0x72, 0xac, 0xdc, 0x69, 0xa7, 0x7a, 0xa9, 0xca, 0x70, 0x5c, - 0x1f, 0x18, 0xf3, 0x76, 0xc9, 0x64, 0xfa, 0xc9, 0xd4, 0x46, 0xf0, 0xdb, - 0x5e, 0x12, 0x2a, 0xa6, 0x58, 0xd1, 0x59, 0xed, 0x3a, 0x65, 0x5b, 0x09, - 0x0e, 0x04, 0x04, 0xb2, 0xdd, 0xb6, 0x39, 0xcc, 0x95, 0xd5, 0x32, 0xcc, - 0xe3, 0xb0, 0xf0, 0xc6, 0xb1, 0xb6, 0x4d, 0xe3, 0xb0, 0xf7, 0xe4, 0xb8, - 0xd0, 0xf8, 0xad, 0xdb, 0x69, 0xd3, 0x53, 0xea, 0xad, 0xb2, 0x5f, 0x12, - 0x8c, 0xfb, 0xbf, 0x46, 0xe7, 0x09, 0x72, 0x30, 0xa9, 0x4a, 0xc4, 0x95, - 0x2f, 0x1d, 0xd9, 0x13, 0x79, 0x1a, 0xd4, 0x1a, 0x05, 0xe6, 0x10, 0x3a, - 0xe5, 0x87, 0x7f, 0x62, 0x97, 0x5e, 0xa6, 0xc9, 0x02, 0x1e, 0x3d, 0x8c, - 0x58, 0x6a, 0x5d, 0x0d, 0x7d, 0x4e, 0x02, 0xcc, 0x12, 0xf5, 0xdc, 0x24, - 0x8f, 0xee, 0x36, 0xad, 0x99, 0x3b, 0x99, 0x24, 0x2d, 0x4f, 0xae, 0x41, - 0xc3, 0xee, 0x30, 0xc6, 0xf2, 0xee, 0x2b, 0x43, 0x07, 0x73, 0xf6, 0xa6, - 0x36, 0xcb, 0x9b, 0xee, 0xd0, 0x93, 0xbb, 0x2a, 0xfc, 0x91, 0x0a, 0xfe, - 0x51, 0x2a, 0x7b, 0x9b, 0xd5, 0xa6, 0x3e, 0x20, 0x86, 0xfc, 0x30, 0xb1, - 0x7c, 0x0d, 0x07, 0x29, 0x34, 0xb3, 0x2b, 0x6f, 0xd7, 0x55, 0x51, 0x95, - 0x31, 0xc1, 0x27, 0x81, 0x67, 0x72, 0x52, 0xfa, 0x73, 0x82, 0xf8, 0xc2, - 0x91, 0x13, 0x63, 0xe8, 0xfd, 0x28, 0xff, 0xd0, 0x12, 0xa1, 0xed, 0x53, - 0xc2, 0x17, 0x27, 0xb4, 0x71, 0x9b, 0x8f, 0x33, 0x65, 0xff, 0xb3, 0x96, - 0x1b, 0x6b, 0x1b, 0xd9, 0x75, 0xeb, 0x19, 0x81, 0x6d, 0x9f, 0x36, 0x43, - 0x82, 0x1f, 0x58, 0x7f, 0x5f, 0x82, 0x9f, 0x5b, 0x07, 0x3b, 0x72, 0x04, - 0x73, 0x0d, 0x4c, 0xd9, 0x75, 0xe1, 0x51, 0x09, 0x13, 0x62, 0xb7, 0x9b, - 0xd5, 0xd5, 0x56, 0x7c, 0x7c, 0xba, 0x8e, 0x75, 0xdb, 0x6a, 0x01, 0xcf, - 0x6d, 0x44, 0x20, 0x79, 0x35, 0x0f, 0xf7, 0xd8, 0x4d, 0x33, 0xdd, 0x62, - 0x09, 0x49, 0x56, 0x56, 0xc1, 0xa1, 0xbc, 0x45, 0xd7, 0x25, 0x13, 0xfb, - 0x83, 0x15, 0x2c, 0xcb, 0xa3, 0xff, 0x43, 0x9b, 0x52, 0xd5, 0x2a, 0x1a, - 0x53, 0xfa, 0xf3, 0x27, 0xf1, 0xdb, 0x51, 0x32, 0x7a, 0x1f, 0xc4, 0x61, - 0x76, 0x70, 0xce, 0xbe, 0xb7, 0xee, 0xe4, 0xc0, 0x6c, 0x14, 0x93, 0x87, - 0x83, 0x7c, 0xb6, 0x0f, 0xcc, 0x70, 0x88, 0x84, 0x9b, 0x3d, 0x86, 0x88, - 0x72, 0x78, 0x95, 0x9a, 0xc3, 0x59, 0x62, 0xea, 0x23, 0x34, 0x61, 0xf5, - 0x02, 0x61, 0x53, 0xdc, 0x31, 0x8c, 0x1f, 0x15, 0xf3, 0xbf, 0x72, 0xa3, - 0x5b, 0x9d, 0xe5, 0x0a, 0x6d, 0x68, 0x6d, 0x6d, 0x66, 0xa7, 0xe1, 0xc3, - 0x7f, 0xd6, 0xad, 0xd6, 0x2e, 0xe6, 0x80, 0x8e, 0x3a, 0xe7, 0x4b, 0x30, - 0x6c, 0x32, 0x73, 0xe4, 0xb0, 0xe6, 0x7e, 0xdf, 0xdf, 0x1c, 0x3c, 0x5a, - 0xb7, 0xd8, 0x93, 0x13, 0x2f, 0x80, 0x90, 0xc4, 0xdc, 0xa6, 0x95, 0xd8, - 0x50, 0x1c, 0x7e, 0x55, 0xf7, 0xe7, 0x2e, 0x53, 0xf4, 0x6b, 0xef, 0x52, - 0x67, 0xf2, 0xe0, 0x44, 0xb9, 0xd7, 0x92, 0x91, 0xdb, 0x83, 0x13, 0x94, - 0xa0, 0xbc, 0x37, 0xd4, 0xfd, 0xf3, 0x7b, 0xb6, 0xb9, 0x9c, 0x8d, 0x1a, - 0xd4, 0x13, 0xd5, 0x52, 0x1c, 0xef, 0x8a, 0xa5, 0xe6, 0x73, 0x50, 0x79, - 0x08, 0xaf, 0xfa, 0x99, 0x80, 0xd0, 0x9f, 0x58, 0xc9, 0x66, 0xf8, 0x7a, - 0x34, 0x89, 0xd3, 0xf0, 0x20, 0x37, 0x3e, 0x43, 0x48, 0xa5, 0xee, 0x2a, - 0xd1, 0xd5, 0x96, 0xcd, 0x37, 0x05, 0x41, 0x47, 0x95, 0x75, 0x32, 0xe2, - 0x53, 0x10, 0xb4, 0x3c, 0x90, 0x95, 0xf3, 0x51, 0x2e, 0x08, 0xfb, 0x11, - 0x87, 0x54, 0x07, 0x56, 0x98, 0x5f, 0x88, 0x3f, 0x1b, 0xca, 0x7a, 0xcd, - 0xcf, 0x91, 0xe4, 0x6f, 0x25, 0x4b, 0x51, 0x88, 0xa8, 0x08, 0x38, 0xf2, - 0xe2, 0xe5, 0xa2, 0xfc, 0x3c, 0xb0, 0xed, 0x39, 0xd1, 0xfc, 0x1e, 0x09, - 0x94, 0xe2, 0x10, 0x1f, 0xc7, 0xb3, 0xeb, 0x3b, 0x25, 0x9c, 0x7d, 0x8f, - 0x44, 0x3d, 0xef, 0x3d, 0x61, 0xb6, 0xdd, 0xc1, 0x30, 0xd8, 0x1d, 0xaf, - 0x80, 0x01, 0xb3, 0x31, 0x5d, 0xa8, 0xc3, 0x9e, 0xa9, 0xbd, 0x24, 0xd3, - 0x80, 0xb3, 0xda, 0xd1, 0x72, 0xb6, 0x24, 0xec, 0x9f, 0x82, 0x65, 0x30, - 0xa6, 0xcb, 0xfb, 0xec, 0x5c, 0xe7, 0xd2, 0x7e, 0xba, 0x7d, 0x0c, 0x8f, - 0xe9, 0x43, 0x2b, 0xed, 0x0f, 0xd8, 0x8e, 0x9c, 0xdc, 0x89, 0xdd, 0x92, - 0xf7, 0x2c, 0x68, 0xa9, 0x58, 0xe3, 0x01, 0xd1, 0x26, 0x53, 0xbb, 0x61, - 0x65, 0xb4, 0x48, 0xd4, 0x94, 0xf0, 0x8f, 0x25, 0x70, 0x05, 0xdd, 0xa7, - 0x18, 0x78, 0x15, 0xf9, 0x90, 0x23, 0xe5, 0xdb, 0x54, 0x78, 0xb7, 0x64, - 0x37, 0xe1, 0x29, 0xe7, 0xa2, 0x0a, 0xb9, 0x1b, 0xe8, 0x91, 0x0a, 0xfc, - 0x06, 0x42, 0x93, 0x57, 0x03, 0x15, 0x42, 0xb9, 0x3d, 0x2e, 0x76, 0x78, - 0xd2, 0x3a, 0xc4, 0x49, 0xe5, 0xe2, 0xa2, 0x50, 0xf2, 0x9c, 0x7b, 0x42, - 0x82, 0xad, 0x08, 0x7d, 0x1a, 0x5b, 0x27, 0x3c, 0x4c, 0x23, 0xbe, 0x4c, - 0x2a, 0xd7, 0x80, 0xc8, 0x3b, 0xb1, 0x90, 0x4f, 0xa0, 0x21, 0x1e, 0x19, - 0x41, 0x73, 0xc9, 0x7d, 0xae, 0x18, 0x22, 0xbb, 0x08, 0x44, 0x98, 0x19, - 0x2c, 0xe3, 0x6d, 0xdc, 0xb6, 0x8b, 0xec, 0x11, 0xa6, 0x5b, 0xd6, 0x73, - 0x1f, 0xb6, 0x8d, 0x96, 0x70, 0x5c, 0x60, 0x14, 0x63, 0x3a, 0x7c, 0xc8, - 0xc5, 0x33, 0x72, 0x63, 0x3f, 0xca, 0xee, 0xa3, 0x4c, 0x41, 0xe7, 0x73, - 0xdd, 0xac, 0xd0, 0x8b, 0x2d, 0xa2, 0xf1, 0xd3, 0xd8, 0x65, 0x83, 0xb7, - 0xf6, 0x89, 0x62, 0x67, 0xdd, 0xbe, 0x93, 0xc9, 0x9e, 0xbc, 0xdd, 0x67, - 0x30, 0xac, 0x96, 0x16, 0x80, 0x5c, 0xa6, 0x89, 0x8f, 0xf6, 0x55, 0x73, - 0x45, 0xf9, 0xc3, 0x9a, 0x59, 0x0e, 0x7e, 0xc9, 0xce, 0xb4, 0xff, 0x4b, - 0x6f, 0x5f, 0x50, 0x74, 0x16, 0xf9, 0xea, 0xd7, 0x5f, 0xa7, 0x30, 0xa7, - 0xb5, 0xbf, 0xcf, 0x8f, 0x10, 0x67, 0xce, 0x49, 0x79, 0x85, 0x9e, 0x45, - 0xd8, 0xb3, 0xd1, 0x2a, 0x73, 0x25, 0x6c, 0x26, 0x06, 0x84, 0x2e, 0x31, - 0x0b, 0x7f, 0x55, 0x12, 0xdd, 0x33, 0xe0, 0x08, 0x6b, 0x63, 0xfb, 0xd4, - 0xc4, 0xf9, 0x40, 0x43, 0x77, 0x5e, 0x1e, 0xa9, 0x22, 0x45, 0xb5, 0x43, - 0x48, 0xdf, 0x44, 0x2d, 0x18, 0xd9, 0xaa, 0x65, 0x4b, 0x91, 0x9b, 0x5e, - 0x72, 0x16, 0x54, 0xc4, 0x3f, 0x6d, 0x40, 0x86, 0x4c, 0xb7, 0x6e, 0xcf, - 0x51, 0x1a, 0x0d, 0x71, 0xc3, 0xd6, 0x4f, 0x6f, 0xad, 0xd2, 0xaf, 0x54, - 0x32, 0xe1, 0xe6, 0xa4, 0x5d, 0x40, 0x56, 0xae, 0x94, 0x6b, 0x6d, 0xf9, - 0x75, 0x24, 0x34, 0x6e, 0x90, 0x0e, 0x03, 0x04, 0xae, 0x68, 0x08, 0xad, - 0x34, 0x83, 0x2a, 0x58, 0x75, 0x35, 0x96, 0xaf, 0x37, 0x4e, 0x4f, 0x97, - 0x29, 0x43, 0xc7, 0x7d, 0xda, 0x33, 0x39, 0x9e, 0x9c, 0x7b, 0xde, 0xba, - 0x02, 0x97, 0x6d, 0x05, 0x23, 0x7b, 0x50, 0x9e, 0x98, 0x28, 0x5d, 0x8c, - 0xaa, 0xc3, 0x70, 0x2c, 0x70, 0xb1, 0x9e, 0x0d, 0x2c, 0xcc, 0x82, 0xce, - 0x8d, 0x1a, 0x88, 0x84, 0xe6, 0x41, 0x2a, 0x80, 0x98, 0xc5, 0xe7, 0x5e, - 0xfc, 0xc5, 0xc9, 0xcc, 0x87, 0x3c, 0x47, 0x03, 0x7b, 0x98, 0x06, 0x59, - 0x12, 0x3c, 0xfa, 0x03, 0xfc, 0x31, 0x2e, 0x5a, 0xca, 0x92, 0xea, 0x3c, - 0xd1, 0x71, 0xb5, 0xf8, 0x17, 0x4d, 0xdc, 0x2f, 0x5f, 0x8d, 0x5c, 0x04, - 0xc9, 0xb7, 0xf4, 0x6f, 0x04, 0x7a, 0x12, 0x33, 0x63, 0x0e, 0x18, 0xb5, - 0xde, 0x9c, 0xb9, 0xf7, 0xf3, 0x73, 0xf8, 0x96, 0xfa, 0x54, 0x89, 0x16, - 0xe7, 0x82, 0xde, 0xe8, 0x39, 0xb4, 0xb2, 0xff, 0xc6, 0xc2, 0x11, 0x8d, - 0xa3, 0x7b, 0xe8, 0x5c, 0x55, 0x4e, 0x3e, 0x81, 0xde, 0x18, 0x60, 0xb5, - 0x81, 0x88, 0xa0, 0xce, 0xa6, 0x11, 0xfb, 0x6f, 0x28, 0xdf, 0x6b, 0x1b, - 0x87, 0x6a, 0xbd, 0xee, 0xf4, 0xce, 0x89, 0x7c, 0x2e, 0xb1, 0x50, 0x5f, - 0x61, 0x53, 0xb7, 0xee, 0xb0, 0x0d, 0x18, 0x8b, 0x7a, 0x84, 0xd2, 0x68, - 0x40, 0x8c, 0x8c, 0x0c, 0x4f, 0x4c, 0x20, 0xc5, 0x21, 0xd6, 0xb9, 0x49, - 0x2b, 0x43, 0x94, 0x63, 0x5a, 0x92, 0xf2, 0x40, 0x29, 0x02, 0xeb, 0xb2, - 0xcc, 0x94, 0x99, 0xf3, 0x97, 0xa6, 0x49, 0x3e, 0xf5, 0x1e, 0x9d, 0xb3, - 0x12, 0xec, 0xb3, 0xa6, 0x35, 0xc6, 0x66, 0x9e, 0xeb, 0xc6, 0xe3, 0xd3, - 0x16, 0x99, 0x44, 0xa0, 0x63, 0x86, 0x6c, 0x66, 0xb7, 0xc1, 0x02, 0xfc, - 0x40, 0x22, 0x6c, 0xda, 0x6c, 0x0c, 0xe0, 0x4c, 0x5a, 0xe8, 0xe8, 0x23, - 0x1a, 0x8d, 0x82, 0xa9, 0x67, 0x72, 0x51, 0x10, 0xd5, 0x4e, 0xf1, 0x30, - 0x49, 0x05, 0x18, 0x51, 0x72, 0xe3, 0xa5, 0xce, 0xd1, 0x34, 0x41, 0x59, - 0xaf, 0xb3, 0xe8, 0xe4, 0xe6, 0x37, 0x9f, 0xf2, 0xf1, 0xdf, 0xe1, 0x8e, - 0xd3, 0xf8, 0xbb, 0x09, 0x95, 0x04, 0xdc, 0x74, 0xe3, 0x12, 0x4b, 0x31, - 0xb9, 0x4d, 0xcf, 0x6c, 0x6d, 0xb1, 0x3d, 0xff, 0x42, 0xef, 0xe3, 0x0b, - 0x14, 0xe4, 0xe7, 0xc3, 0x7d, 0x46, 0x80, 0x6a, 0xcd, 0xdb, 0x70, 0x82, - 0x37, 0x8e, 0xd0, 0x03, 0x0d, 0xda, 0x04, 0x0e, 0x40, 0x8d, 0xec, 0x77, - 0x7a, 0x1a, 0xeb, 0xe1, 0x68, 0xfc, 0xd4, 0x4b, 0xa0, 0xfb, 0xac, 0x25, - 0x67, 0x3a, 0x46, 0x44, 0xc7, 0xf8, 0x92, 0x46, 0xa6, 0xf9, 0x87, 0x9c, - 0xea, 0xea, 0x82, 0xe7, 0xe5, 0xb3, 0xe7, 0xfb, 0x73, 0x18, 0xe4, 0x88, - 0xe4, 0x17, 0x2b, 0xd1, 0xb0, 0x83, 0xd9, 0xb2, 0x38, 0x55, 0x49, 0x7f, - 0x19, 0x9a, 0x92, 0xd8, 0xab, 0x62, 0x2e, 0xd0, 0x60, 0xdc, 0xd3, 0x2a, - 0x47, 0x76, 0x0d, 0x03, 0xe2, 0x86, 0x2d, 0x1d, 0x17, 0x72, 0x0d, 0x99, - 0xf3, 0x92, 0xd6, 0xb9, 0x97, 0x57, 0xd4, 0xd5, 0x2d, 0x0d, 0xe9, 0x4e, - 0x6c, 0xe5, 0xdf, 0xd0, 0x28, 0x67, 0x4c, 0x93, 0xf7, 0x58, 0x36, 0xa0, - 0x74, 0xb6, 0x22, 0xa1, 0x2c, 0x95, 0xdf, 0x60, 0x4a, 0x8d, 0x80, 0x4c, - 0x74, 0xa4, 0x7b, 0xa4, 0xa0, 0xd8, 0x8e, 0xdb, 0x63, 0xd1, 0xeb, 0xcd, - 0x53, 0x20, 0x3b, 0x30, 0x86, 0xe8, 0xe6, 0x74, 0xaa, 0x2b, 0x9c, 0xa7, - 0xde, 0x61, 0xe2, 0x37, 0x11, 0xa5, 0x9e, 0x70, 0x68, 0x2d, 0x8a, 0x5a, - 0x39, 0x35, 0x14, 0xaa, 0x01, 0x5c, 0x87, 0x3a, 0x7a, 0xe2, 0x3f, 0xa1, - 0x74, 0xb3, 0x5e, 0xb7, 0xd9, 0x04, 0x84, 0x65, 0xc9, 0x0f, 0xa5, 0x11, - 0x98, 0x6d, 0xd1, 0xb4, 0x9f, 0xf8, 0x26, 0xc0, 0xfc, 0x03, 0x6e, 0x00, - 0xe1, 0xab, 0xb0, 0x53, 0x98, 0xae, 0xa6, 0x6a, 0x2b, 0x8e, 0x41, 0xb3, - 0xdc, 0xb9, 0x8b, 0xa6, 0xb9, 0x60, 0xce, 0xdd, 0x53, 0xf1, 0x98, 0x36, - 0xff, 0x4f, 0xe2, 0x0e, 0x98, 0x6e, 0xa4, 0xed, 0x48, 0x2d, 0x14, 0xc0, - 0x42, 0x47, 0x66, 0x83, 0x26, 0xeb, 0x5f, 0xbe, 0xe4, 0x4b, 0x96, 0xfe, - 0xd7, 0x76, 0xc5, 0x04, 0x9e, 0xbb, 0x3d, 0xd9, 0xc8, 0xbf, 0x1c, 0x7d, - 0x59, 0x82, 0xcc, 0x6c, 0x19, 0x2e, 0x5c, 0x51, 0xe0, 0x66, 0x1b, 0x61, - 0xed, 0xe3, 0x09, 0xa4, 0x29, 0x3a, 0x0c, 0x0d, 0x56, 0x73, 0x06, 0x82, - 0xf7, 0xbd, 0xc9, 0xdf, 0x0c, 0xb6, 0x54, 0x74, 0x50, 0xe9, 0xb0, 0x46, - 0xff, 0x64, 0x31, 0x30, 0x06, 0x02, 0xdb, 0xb0, 0xe8, 0xf9, 0xa4, 0x2f, - 0xf9, 0x62, 0xd4, 0x9a, 0x7c, 0x13, 0xf5, 0xca, 0x5e, 0x42, 0xf2, 0x3d, - 0xe5, 0xf7, 0x6b, 0x1d, 0x1f, 0x06, 0xff, 0xa7, 0xe4, 0xf6, 0x57, 0x4f, - 0xae, 0x9d, 0x03, 0xe1, 0x28, 0x17, 0x22, 0x3b, 0x96, 0xf4, 0xc0, 0x8b, - 0xf4, 0x73, 0x83, 0x76, 0xd2, 0x92, 0x94, 0x1f, 0xa8, 0xdb, 0x8e, 0x95, - 0x00, 0x6c, 0x1e, 0xae, 0x13, 0x3d, 0x0b, 0xf2, 0x2b, 0xb4, 0x08, 0x69, - 0x2d, 0xab, 0x3e, 0x5b, 0x70, 0x4e, 0x11, 0x82, 0xf2, 0x09, 0x8d, 0x92, - 0xd8, 0xad, 0x9f, 0xc4, 0xc1, 0xff, 0x34, 0x34, 0xa4, 0x64, 0x39, 0x70, - 0x66, 0x12, 0x8e, 0xaf, 0x3a, 0x8d, 0x26, 0xb6, 0x53, 0x36, 0xfa, 0xcf, - 0x66, 0xf1, 0x53, 0x7a, 0x5b, 0xf0, 0xf7, 0x82, 0x11, 0xfe, 0xc9, 0x19, - 0x3f, 0x14, 0x3a, 0x59, 0x00, 0x59, 0x95, 0x65, 0x01, 0x1b, 0xb2, 0xae, - 0x5d, 0xfd, 0xa9, 0xf8, 0xc2, 0xd7, 0x4b, 0x72, 0x14, 0xe4, 0x40, 0xb7, - 0x83, 0x79, 0x93, 0xb9, 0x78, 0xdb, 0xa7, 0x8f, 0x56, 0xf6, 0x03, 0x8a, - 0x30, 0xe4, 0x33, 0xfc, 0x12, 0x71, 0xc1, 0xd8, 0x5e, 0x45, 0x9c, 0x17, - 0xae, 0xb2, 0x98, 0x7d, 0xaa, 0xbb, 0xcf, 0x97, 0xf8, 0xa4, 0x8a, 0xe6, - 0x52, 0x80, 0x14, 0x75, 0xd1, 0x17, 0x1a, 0x97, 0x0f, 0x2a, 0x37, 0x64, - 0x29, 0xd5, 0x64, 0x65, 0x21, 0xd9, 0x00, 0xe7, 0xc8, 0x7a, 0xeb, 0xec, - 0xaa, 0x91, 0x72, 0xa9, 0x30, 0x8c, 0x83, 0x1a, 0xca, 0x00, 0xae, 0xa4, - 0x5b, 0xf1, 0xe6, 0x3b, 0xea, 0xf6, 0x3e, 0x6e, 0xc9, 0x64, 0x5e, 0xc9, - 0xf9, 0x0c, 0x90, 0x94, 0x34, 0xa4, 0x45, 0x9d, 0xb0, 0x0c, 0x1c, 0xaa, - 0xf8, 0xaa, 0x8b, 0x2e, 0xa7, 0xc2, 0xd0, 0x46, 0xa5, 0x94, 0x68, 0xb5, - 0x69, 0x38, 0xb5, 0x74, 0x44, 0xa5, 0xbd, 0x8f, 0xce, 0xd9, 0xa0, 0x7c, - 0xb0, 0xb4, 0xa6, 0x8d, 0xac, 0x78, 0xa9, 0x80, 0x55, 0xea, 0x81, 0xd0, - 0xb1, 0x28, 0xa9, 0xb1, 0x51, 0xe9, 0xdb, 0x87, 0x66, 0xf3, 0x58, 0xdb, - 0x3d, 0x5c, 0xbe, 0xf3, 0x2d, 0xac, 0xd7, 0xc9, 0x74, 0x38, 0xcf, 0x75, - 0xa7, 0x85, 0xd3, 0x13, 0x90, 0xdb, 0x4c, 0x15, 0x5a, 0x45, 0x69, 0x52, - 0x6c, 0x1b, 0x8e, 0xae, 0xb0, 0x06, 0xb5, 0x6e, 0x38, 0x0b, 0x91, 0xe0, - 0xa5, 0x97, 0xae, 0x08, 0x42, 0x17, 0xab, 0xc9, 0xcd, 0x5b, 0x38, 0xb0, - 0x0f, 0xaa, 0x6f, 0x90, 0x7f, 0xbe, 0x1b, 0xe3, 0xd8, 0xa4, 0x2e, 0xf3, - 0xdb, 0xa2, 0xdd, 0x69, 0xd8, 0x02, 0xf9, 0x8f, 0x81, 0xb3, 0xa3, 0x65, - 0x68, 0x65, 0x80, 0x9a, 0x64, 0x2e, 0xcf, 0xe6, 0xd2, 0x44, 0x81, 0x3a, - 0x71, 0xb5, 0xa0, 0x80, 0x41, 0xee, 0x26, 0x70, 0x12, 0x0b, 0xbe, 0x34, - 0x12, 0x63, 0xa2, 0x6e, 0x54, 0x8e, 0xb5, 0x6e, 0x5d, 0x89, 0x4e, 0x56, - 0x74, 0x10, 0x23, 0x9d, 0x80, 0x20, 0x9d, 0x04, 0xcf, 0x1d, 0xfb, 0x29, - 0x35, 0xd8, 0x39, 0x72, 0x16, 0x64, 0x1a, 0x2b, 0xfc, 0x6f, 0xc4, 0x99, - 0x6c, 0x55, 0xd4, 0xff, 0xe5, 0x17, 0x62, 0x51, 0xc9, 0x0f, 0x59, 0x3f, - 0x25, 0x93, 0x3a, 0x29, 0xb6, 0x8f, 0xa5, 0xeb, 0x9a, 0xdb, 0x2b, 0x5e, - 0xd5, 0x2a, 0x76, 0x32, 0xfb, 0x72, 0x2c, 0x6e, 0xe4, 0x9f, 0xc2, 0x46, - 0x59, 0xa6, 0xff, 0xb5, 0x9c, 0x52, 0x94, 0x36, 0x5e, 0x69, 0x9b, 0x78, - 0x77, 0xd9, 0x29, 0x14, 0xda, 0x62, 0xf5, 0xde, 0xc1, 0xb9, 0x63, 0xab, - 0xa3, 0xb2, 0x19, 0x9d, 0x14, 0xb8, 0x46, 0xa0, 0x50, 0xc2, 0x9d, 0x28, - 0x75, 0x06, 0x41, 0xa6, 0xd2, 0xef, 0xb1, 0x5a, 0x1a, 0x60, 0x34, 0xc9, - 0x56, 0x39, 0xb0, 0x38, 0x73, 0xe0, 0x6d, 0x20, 0xbc, 0xce, 0x97, 0x49, - 0xf5, 0xce, 0xd6, 0x2d, 0x27, 0x03, 0x87, 0x29, 0x39, 0x0e, 0x66, 0x2c, - 0x3d, 0xb3, 0x7b, 0xb9, 0x0c, 0xd5, 0x84, 0xe7, 0x89, 0x3b, 0xfe, 0x38, - 0xb2, 0xc7, 0x92, 0x84, 0xd9, 0xd8, 0x7f, 0xf6, 0xc8, 0xde, 0x7c, 0x1a, - 0x88, 0x44, 0x2b, 0x35, 0xcc, 0x55, 0x3f, 0x0e, 0x63, 0xf3, 0x76, 0xd6, - 0xab, 0xfc, 0xbe, 0xc7, 0xc3, 0x6e, 0xb0, 0x11, 0x31, 0x82, 0x09, 0x4e, - 0x94, 0xaf, 0xf4, 0x18, 0x06, 0x10, 0xd8, 0x1e, 0x8f, 0x67, 0xbf, 0x8e, - 0xa9, 0x90, 0xba, 0xd9, 0x72, 0x1d, 0xd3, 0x8e, 0x60, 0x78, 0xd6, 0x18, - 0xee, 0x83, 0x97, 0x5b, 0x9b, 0xa6, 0x18, 0x4e, 0xf8, 0x88, 0xb2, 0x0b, - 0x7a, 0x10, 0x5f, 0x25, 0x69, 0x32, 0xbe, 0x45, 0xf9, 0xba, 0xa1, 0x46, - 0x2e, 0xfa, 0x52, 0x57, 0x3b, 0xbe, 0x25, 0x59, 0xd7, 0xad, 0x2f, 0xde, - 0xc1, 0x82, 0x30, 0x1b, 0x0f, 0x8a, 0x65, 0x8c, 0x55, 0x1d, 0xbb, 0xbd, - 0xec, 0x87, 0xf0, 0x1f, 0x3a, 0x23, 0x7d, 0xe8, 0x8b, 0xbb, 0x4e, 0x4d, - 0x40, 0x09, 0x92, 0xc6, 0xcb, 0x7e, 0xcc, 0x57, 0xae, 0x00, 0xe0, 0x8d, - 0xda, 0x05, 0x2c, 0xad, 0xfa, 0xc5, 0x54, 0xf4, 0xdd, 0xe0, 0x3f, 0x3d, - 0xd7, 0xa6, 0x1b, 0x26, 0x18, 0x7a, 0x0b, 0x08, 0x17, 0x6d, 0xa5, 0x88, - 0x72, 0xc9, 0xb1, 0x62, 0x74, 0xf2, 0xbd, 0x3e, 0xb3, 0x77, 0xd6, 0x5a, - 0x1f, 0x51, 0x5e, 0x33, 0x16, 0x12, 0x82, 0x79, 0x6a, 0xdc, 0xa9, 0x5b, - 0x53, 0x6b, 0x45, 0x45, 0xd6, 0xe9, 0x28, 0xd9, 0x7b, 0x98, 0x1d, 0xe9, - 0x46, 0xd9, 0x67, 0xdf, 0x8b, 0x94, 0xcc, 0xd2, 0x41, 0xc3, 0xbc, 0x87, - 0x8d, 0xc4, 0xf4, 0x97, 0xae, 0x30, 0x29, 0x58, 0x12, 0x31, 0x9a, 0x40, - 0x11, 0x55, 0xf6, 0x08, 0x10, 0xb3, 0x55, 0xbd, 0x36, 0x1d, 0x3a, 0x6f, - 0xbe, 0xf4, 0x77, 0xbd, 0xd3, 0x69, 0xdb, 0x46, 0xb1, 0x31, 0x8f, 0x6e, - 0x1b, 0x39, 0x22, 0x85, 0x83, 0x6a, 0x6e, 0x41, 0xf4, 0x20, 0x94, 0x16, - 0xee, 0xbe, 0xf2, 0x22, 0x69, 0x74, 0x92, 0x41, 0xde, 0xfa, 0x0d, 0x7a, - 0xed, 0x28, 0xcc, 0x1e, 0xe8, 0xc8, 0xa9, 0x0f, 0x0e, 0x45, 0xcb, 0x1a, - 0x89, 0xab, 0xe4, 0x08, 0xa5, 0x0a, 0x54, 0x42, 0xf3, 0xb6, 0x7d, 0x73, - 0xfa, 0xe8, 0x86, 0x79, 0x08, 0xd2, 0xee, 0x77, 0xe8, 0xde, 0xb6, 0x8e, - 0xd5, 0x46, 0x33, 0xcd, 0xa8, 0x22, 0x07, 0x7f, 0xad, 0x19, 0xa9, 0x91, - 0x51, 0xc9, 0x32, 0x99, 0x15, 0xbf, 0xc3, 0x09, 0x77, 0x0d, 0xdc, 0xcb, - 0xff, 0xc1, 0x41, 0x42, 0xc3, 0x33, 0x9a, 0x7d, 0xaf, 0x8e, 0x34, 0xc0, - 0xd5, 0x64, 0xa1, 0xc6, 0x68, 0x65, 0xba, 0x54, 0xda, 0xbe, 0x5b, 0xad, - 0x64, 0x18, 0x6f, 0x68, 0xb7, 0x70, 0x84, 0xf9, 0xf7, 0x4c, 0x32, 0xc1, - 0x24, 0x6f, 0xc5, 0xdc, 0x7e, 0x41, 0xb2, 0x5b, 0xd6, 0x8f, 0xaa, 0xc1, - 0x60, 0x6c, 0xf0, 0x47, 0x89, 0xc8, 0x2a, 0x18, 0x66, 0xbd, 0x03, 0xd9, - 0x73, 0x24, 0x0b, 0xbd, 0x37, 0x4a, 0x65, 0x81, 0xbe, 0xfa, 0x95, 0x97, - 0x1b, 0xc0, 0x9a, 0x99, 0xcc, 0xa4, 0xd1, 0xce, 0x83, 0xb9, 0xfe, 0x15, - 0xff, 0x04, 0x1f, 0xb8, 0x3e, 0x6d, 0x90, 0x4b, 0x6c, 0xb5, 0x7c, 0x1c, - 0x4e, 0xf6, 0x28, 0x00, 0xc5, 0x52, 0x0e, 0x54, 0x32, 0x4b, 0xf6, 0xc1, - 0x74, 0xf6, 0x44, 0xa6, 0x50, 0x6d, 0xc1, 0x55, 0xf7, 0xd2, 0x92, 0xa4, - 0xe3, 0xd9, 0x4d, 0x27, 0x1e, 0xe3, 0x0e, 0x17, 0x9c, 0xf3, 0xb8, 0x7b, - 0x55, 0xa9, 0x06, 0x67, 0x9c, 0x5c, 0xce, 0x07, 0x2d, 0x2d, 0xc8, 0x7d, - 0xa4, 0x21, 0xf7, 0x79, 0x05, 0xec, 0xfd, 0x9c, 0x6c, 0xd6, 0xa2, 0x8f, - 0x51, 0x50, 0x0e, 0x37, 0xa2, 0x3c, 0x28, 0xd5, 0x32, 0xe2, 0x67, 0x3b, - 0x0e, 0xaa, 0xbd, 0x85, 0x31, 0x69, 0x05, 0x31, 0x03, 0x75, 0x7e, 0x31, - 0x11, 0xf2, 0xa8, 0xbb, 0x64, 0x90, 0x9c, 0x56, 0xd6, 0xda, 0xfe, 0x20, - 0x65, 0x4b, 0xaa, 0x9b, 0x87, 0x8e, 0x4c, 0x62, 0xc8, 0xb3, 0x4d, 0xf3, - 0x3c, 0x3e, 0x9b, 0x7a, 0x91, 0x36, 0x45, 0xcc, 0x65, 0x78, 0xc9, 0xc8, - 0x8b, 0x91, 0xf0, 0x5b, 0x48, 0x89, 0x2b, 0xc8, 0xff, 0xd0, 0x7e, 0x32, - 0x4b, 0x8f, 0x22, 0x98, 0xf5, 0xa8, 0x8f, 0x93, 0xce, 0x8f, 0x93, 0x82, - 0x68, 0x2c, 0x4c, 0x18, 0x94, 0x7e, 0xad, 0xe6, 0x29, 0x6f, 0x39, 0xd2, - 0x5b, 0x80, 0xdd, 0x12, 0x92, 0x3d, 0xca, 0xc6, 0xcc, 0x6c, 0xac, 0x7b, - 0x4b, 0xe5, 0xd9, 0x2b, 0x1a, 0xbf, 0x17, 0xb4, 0xff, 0x19, 0xfa, 0xf6, - 0xfc, 0x52, 0x63, 0xa8, 0x1a, 0x31, 0x3f, 0x7c, 0x51, 0x70, 0xea, 0x07, - 0x21, 0x9a, 0xc3, 0xc0, 0x67, 0x4d, 0xda, 0xce, 0xde, 0xd9, 0x2e, 0x0d, - 0x8e, 0xbd, 0xff, 0xc7, 0x28, 0x87, 0x6d, 0x11, 0xda, 0xc0, 0x02, 0x51, - 0x08, 0xb6, 0xff, 0x02, 0x3d, 0x75, 0xbe, 0x53, 0x02, 0x90, 0x0f, 0xc6, - 0x3b, 0x1e, 0x5a, 0x44, 0x82, 0x24, 0x85, 0x2f, 0x77, 0x0f, 0x93, 0x5a, - 0x40, 0x57, 0xb3, 0x02, 0xc9, 0x01, 0x93, 0xa0, 0x4f, 0x50, 0xb3, 0xd4, - 0xe9, 0x4e, 0xbf, 0xbf, 0xed, 0x4c, 0xc2, 0xf0, 0x63, 0x55, 0xf8, 0x15, - 0x82, 0x4c, 0x8e, 0x8c, 0x7e, 0x6c, 0x16, 0x79, 0xff, 0xce, 0x8e, 0xd4, - 0x0a, 0x17, 0x07, 0x60, 0xdc, 0x25, 0xad, 0x21, 0x42, 0x52, 0x4d, 0xb3, - 0x98, 0xda, 0x4a, 0x5b, 0x7c, 0x3b, 0x34, 0x6d, 0x89, 0x16, 0x03, 0x44, - 0x15, 0xdf, 0xc1, 0x6a, 0x99, 0x6a, 0xd0, 0x10, 0xa2, 0x4f, 0xc0, 0xa8, - 0x03, 0xf7, 0xa6, 0x3d, 0x53, 0x7c, 0x83, 0xfe, 0x2b, 0x18, 0xc2, 0xb4, - 0xdc, 0xdf, 0xa3, 0x6a, 0x02, 0xe5, 0xbf, 0x16, 0xcd, 0x1d, 0x7b, 0xbc, - 0x70, 0x96, 0x6b, 0x15, 0x00, 0x9f, 0x3c, 0x30, 0xfc, 0x5e, 0x40, 0x26, - 0x42, 0xb1, 0x83, 0x89, 0x8b, 0x81, 0x4e, 0xd4, 0x86, 0x85, 0x62, 0x6f, - 0xcb, 0xec, 0xe1, 0xf6, 0xbb, 0x37, 0x4a, 0x23, 0xc8, 0x1e, 0x3c, 0xcd, - 0x28, 0x77, 0xb1, 0xa7, 0xeb, 0x0a, 0x4e, 0xca, 0xa4, 0xeb, 0xd7, 0xf3, - 0x4f, 0x14, 0xd0, 0xb6, 0xe2, 0xc9, 0xdf, 0x39, 0x5a, 0x20, 0x45, 0x0c, - 0xe6, 0x84, 0x30, 0xcc, 0x21, 0x5a, 0xf6, 0x51, 0x9e, 0xa9, 0xb3, 0x27, - 0x77, 0x44, 0x3f, 0x09, 0x03, 0x37, 0xc6, 0x06, 0x67, 0x9d, 0xd6, 0x1c, - 0x8b, 0x7b, 0x9c, 0x2b, 0x61, 0x14, 0xda, 0x4f, 0xb4, 0x0d, 0x56, 0x7b, - 0xba, 0x5e, 0xe2, 0xb6, 0x73, 0x90, 0x04, 0xfa, 0xc1, 0xf5, 0xb5, 0x8f, - 0x3b, 0xbb, 0x58, 0xf3, 0x0d, 0x52, 0x36, 0x28, 0xec, 0xe7, 0x78, 0xd3, - 0xdc, 0x4f, 0xb7, 0x26, 0x06, 0x3c, 0xc3, 0xb5, 0x0f, 0x05, 0x24, 0x56, - 0x23, 0xc2, 0x8c, 0x89, 0xff, 0xc1, 0x3c, 0x42, 0x0a, 0xcc, 0xdb, 0xa0, - 0x06, 0x96, 0xd4, 0x2b, 0xf3, 0xea, 0x09, 0xfb, 0xd9, 0x39, 0xc5, 0x85, - 0x53, 0xa4, 0x5a, 0x2d, 0xab, 0x2b, 0xc8, 0x43, 0x1e, 0x20, 0xc5, 0xe3, - 0x03, 0x84, 0x0d, 0x90, 0x13, 0xf2, 0xb4, 0xf4, 0x46, 0x08, 0x2a, 0x35, - 0xc7, 0x4a, 0x63, 0x3c, 0xe0, 0x99, 0x7c, 0x52, 0x4e, 0x56, 0x36, 0x54, - 0x79, 0xc2, 0xa6, 0xca, 0x2b, 0xd6, 0x09, 0x98, 0x75, 0x16, 0x18, 0xab, - 0x27, 0x6c, 0x77, 0x27, 0x12, 0xaf, 0x97, 0xd4, 0x2f, 0x02, 0xe2, 0x3f, - 0x63, 0x55, 0x6b, 0xfb, 0xb8, 0x04, 0x4e, 0xac, 0xcd, 0x3d, 0xb8, 0x58, - 0x48, 0x58, 0x5c, 0xf9, 0x1f, 0x86, 0x58, 0x81, 0x3b, 0x26, 0xb9, 0xd1, - 0xf7, 0x2c, 0xea, 0xc6, 0xd7, 0x62, 0x8f, 0x66, 0x5d, 0x4f, 0x33, 0x44, - 0xc3, 0xd8, 0xed, 0x49, 0xf5, 0x48, 0xbd, 0x23, 0x3a, 0x1d, 0x28, 0x86, - 0x85, 0x29, 0x43, 0x8b, 0x9e, 0xc8, 0x14, 0x5d, 0x2e, 0xeb, 0x3a, 0x5c, - 0x2c, 0x4b, 0xa4, 0xf7, 0x79, 0xb3, 0xb0, 0xce, 0xca, 0x56, 0x8e, 0x57, - 0x6f, 0xe0, 0x34, 0xa9, 0xca, 0x97, 0x33, 0x8d, 0xb6, 0x4c, 0xff, 0xb9, - 0xb6, 0x8e, 0x2d, 0x56, 0x3f, 0x50, 0x98, 0x6f, 0x8b, 0x67, 0x19, 0xe3, - 0xb2, 0x91, 0x4a, 0x54, 0x02, 0xd6, 0x85, 0x04, 0xcf, 0x4f, 0x06, 0x7f, - 0x4c, 0x7b, 0x6d, 0xe4, 0xfc, 0xf6, 0xae, 0xf4, 0xc5, 0x9c, 0xc8, 0x91, - 0xaa, 0x5f, 0x2f, 0xd8, 0x84, 0x01, 0x21, 0xcf, 0xa2, 0x59, 0x64, 0x43, - 0xbf, 0xcc, 0xc6, 0x2e, 0xd3, 0xc5, 0x8b, 0x9a, 0xbf, 0x2d, 0x21, 0x79, - 0xb3, 0x02, 0x87, 0x85, 0x73, 0x15, 0xde, 0x85, 0x01, 0x11, 0x0a, 0x23, - 0x5c, 0x16, 0x27, 0x08, 0x87, 0xe0, 0x65, 0x1d, 0xbc, 0x59, 0x86, 0x57, - 0xf6, 0xdc, 0x12, 0x05, 0x6e, 0xb4, 0x34, 0x7e, 0xa0, 0x8a, 0x60, 0xd1, - 0x1f, 0x24, 0xd5, 0x5e, 0x9d, 0x72, 0x9d, 0x16, 0x03, 0xcb, 0xdf, 0x1d, - 0x81, 0xce, 0x67, 0xde, 0x47, 0x5b, 0x7e, 0x20, 0x09, 0xdd, 0xfd, 0x08, - 0xd1, 0xf2, 0x31, 0x25, 0x7a, 0x92, 0x4e, 0x0e, 0x87, 0x18, 0x4b, 0xb1, - 0x5b, 0xc6, 0x5e, 0xd7, 0xc0, 0x70, 0x4f, 0xe5, 0xc9, 0xb5, 0x0d, 0x54, - 0x76, 0xfe, 0x3f, 0x65, 0x7c, 0xe5, 0x77, 0x72, 0x88, 0x1d, 0x16, 0x8d, - 0x07, 0xd6, 0xb8, 0x83, 0xba, 0xd7, 0x7a, 0x77, 0xcf, 0xc0, 0x61, 0xd3, - 0xb3, 0x8d, 0x2d, 0x7f, 0x4a, 0x8e, 0xd5, 0xb7, 0xe6, 0xb0, 0x69, 0xde, - 0x49, 0x2d, 0x2f, 0x41, 0xea, 0xcc, 0xcd, 0x3c, 0x0a, 0xf8, 0xff, 0x03, - 0xc8, 0xdf, 0x06, 0xec, 0xeb, 0xed, 0xda, 0x0c, 0xed, 0xa9, 0x5c, 0x2f, - 0x40, 0x9a, 0xae, 0xdf, 0xb5, 0xe2, 0x14, 0xb9, 0x6d, 0xb8, 0xf4, 0x18, - 0x32, 0xaf, 0x6c, 0x84, 0x78, 0xb2, 0xd0, 0xcc, 0x51, 0xcb, 0xaa, 0x1c, - 0x28, 0x83, 0xc4, 0x55, 0x19, 0x0a, 0x2c, 0x9b, 0x46, 0xbd, 0x77, 0xcd, - 0x79, 0xb4, 0x91, 0x1c, 0xdd, 0x6c, 0xd8, 0x71, 0x6e, 0x8b, 0x4f, 0x7e, - 0x1b, 0xc8, 0xa0, 0x5f, 0xcb, 0x53, 0xf6, 0xe2, 0x08, 0xe1, 0x2b, 0x18, - 0xea, 0x41, 0xc9, 0x1c, 0xfb, 0xac, 0xdd, 0xd6, 0x2a, 0x86, 0x0b, 0x65, - 0x85, 0x9c, 0x35, 0xf9, 0xe2, 0x6b, 0xf9, 0x81, 0xa6, 0x47, 0x9a, 0x33, - 0xdb, 0x9e, 0x8f, 0xa4, 0x3f, 0x82, 0x14, 0x48, 0xc1, 0x06, 0x68, 0x1b, - 0x2c, 0x03, 0x1b, 0x57, 0x30, 0x21, 0x22, 0x21, 0x30, 0xa9, 0xc5, 0xf1, - 0xf3, 0xaf, 0x24, 0xc3, 0x7b, 0x5d, 0x17, 0xc0, 0x6e, 0xfe, 0xdd, 0x7f, - 0x16, 0xcf, 0x17, 0x9a, 0xf4, 0x6e, 0xe9, 0xf1, 0x29, 0x41, 0x91, 0x02, - 0x59, 0xe4, 0x58, 0xb7, 0xa4, 0xe8, 0x4a, 0xfb, 0xb2, 0x50, 0x1f, 0x29, - 0xd2, 0xfb, 0xac, 0xf6, 0x3a, 0x81, 0x83, 0x3f, 0xf3, 0x3b, 0x06, 0x45, - 0xd7, 0x09, 0x83, 0x33, 0xd2, 0x98, 0x2a, 0x6c, 0x9b, 0xf7, 0x4d, 0x29, - 0x05, 0xf9, 0x8e, 0xaf, 0x12, 0x8f, 0x05, 0x04, 0xa2, 0x0d, 0x95, 0x76, - 0xb3, 0xea, 0x89, 0x58, 0xa5, 0x51, 0x1d, 0xa7, 0xd0, 0x0b, 0xbd, 0x85, - 0xb8, 0x4f, 0xf7, 0x56, 0xa7, 0x17, 0xff, 0x6c, 0xa3, 0xe2, 0x6c, 0xbd, - 0x52, 0x7e, 0x9a, 0x53, 0x38, 0xf0, 0xcc, 0xc6, 0x45, 0x44, 0x0c, 0xc2, - 0xeb, 0x0e, 0x65, 0x90, 0xec, 0x7a, 0x32, 0x05, 0x59, 0xa4, 0x03, 0x1b, - 0x01, 0xbc, 0x53, 0xb6, 0x90, 0x7d, 0xbc, 0xcc, 0x43, 0x04, 0x3a, 0x17, - 0xf6, 0xcb, 0x34, 0xd7, 0x70, 0xb0, 0x83, 0x2c, 0x2f, 0x7c, 0x7b, 0x98, - 0xef, 0xf6, 0x39, 0x67, 0x2d, 0x54, 0x68, 0x9b, 0xb1, 0x8e, 0xe4, 0x54, - 0x5b, 0xd1, 0xbb, 0x5b, 0x8f, 0x38, 0x19, 0xfb, 0xb6, 0x36, 0x29, 0xec, - 0xa5, 0x10, 0xc7, 0x64, 0x6e, 0x1b, 0xc6, 0xa0, 0xf6, 0x54, 0xeb, 0x10, - 0xeb, 0x7c, 0xb5, 0x22, 0x42, 0xa8, 0x50, 0x36, 0x2b, 0xa3, 0xf9, 0x65, - 0x7f, 0x93, 0xc2, 0x37, 0x6b, 0xa3, 0xe6, 0xa4, 0xd6, 0xb7, 0xbd, 0x6a, - 0x32, 0x2b, 0x6d, 0x8c, 0xd2, 0x80, 0x8d, 0x59, 0xe7, 0xe2, 0x7f, 0x3f, - 0xd3, 0xd9, 0xc4, 0xeb, 0x62, 0x2f, 0x09, 0x9a, 0x98, 0x38, 0xd6, 0xd3, - 0x17, 0xc7, 0x3b, 0x2c, 0x65, 0x86, 0xd9, 0xf0, 0xb0, 0xb8, 0x97, 0xdc, - 0xfc, 0xea, 0x01, 0x54, 0xe6, 0x39, 0x17, 0x99, 0x00, 0xc6, 0x77, 0x5c, - 0x45, 0xae, 0xb2, 0x0a, 0xc5, 0xb4, 0x1b, 0x6c, 0x35, 0x09, 0x5a, 0xaf, - 0x32, 0x0c, 0x07, 0xdc, 0xdf, 0x51, 0xf4, 0x0f, 0xb0, 0xfa, 0x6e, 0x5e, - 0x83, 0x1c, 0xcd, 0x3f, 0xcb, 0x01, 0x88, 0x87, 0xa8, 0xd1, 0xaf, 0x4b, - 0x54, 0x7e, 0x76, 0x33, 0x3d, 0xac, 0x80, 0x64, 0xca, 0x79, 0xe2, 0x3c, - 0xe5, 0xbf, 0x84, 0x5f, 0x2d, 0xad, 0x0d, 0x30, 0xb7, 0x1e, 0x28, 0xe2, - 0x17, 0xff, 0x32, 0xeb, 0xc7, 0xc0, 0x5c, 0x45, 0x67, 0x25, 0x08, 0xb7, - 0x11, 0x72, 0x29, 0x1a, 0x87, 0x10, 0xd5, 0xd8, 0x98, 0xf1, 0x07, 0x88, - 0x03, 0x31, 0x31, 0x2c, 0xd3, 0xef, 0x7d, 0xb6, 0x53, 0xbf, 0xf3, 0xf9, - 0xcf, 0xe2, 0x3e, 0x6f, 0xab, 0x07, 0x6b, 0x97, 0x19, 0x7c, 0x0f, 0x28, - 0xd2, 0xd7, 0x21, 0x68, 0x23, 0xdd, 0xa7, 0xe7, 0x67, 0x28, 0xbb, 0xe8, - 0x94, 0xb5, 0x13, 0x71, 0x67, 0x39, 0xb8, 0x56, 0x51, 0x50, 0xe5, 0xbe, - 0x22, 0x8f, 0x66, 0x7e, 0x94, 0xeb, 0xae, 0xab, 0x25, 0x6b, 0x24, 0x99, - 0x1d, 0x9d, 0x57, 0xcd, 0x01, 0x07, 0xcc, 0xf1, 0x83, 0xee, 0xae, 0x1f, - 0x99, 0xb1, 0x2d, 0xa8, 0x22, 0xfb, 0x27, 0xe8, 0x5c, 0xc1, 0x6a, 0xb7, - 0xce, 0x36, 0x62, 0xd4, 0x97, 0x0c, 0x1d, 0x36, 0x95, 0x1f, 0xb1, 0x36, - 0xab, 0x5b, 0xe1, 0x10, 0x52, 0x42, 0xbf, 0xee, 0x12, 0x28, 0xdc, 0x72, - 0x7c, 0x65, 0x70, 0x92, 0x49, 0xc2, 0xe2, 0xaa, 0x42, 0xc6, 0x71, 0xf6, - 0x95, 0xf5, 0x9b, 0x4f, 0x41, 0x65, 0xfd, 0xbf, 0x1b, 0xe7, 0xa2, 0xbf, - 0x56, 0x07, 0x22, 0xcf, 0xb2, 0x63, 0x90, 0x79, 0xab, 0xa9, 0xe2, 0xba, - 0x8f, 0x23, 0xab, 0x93, 0x85, 0x70, 0x8e, 0x45, 0x79, 0xcb, 0x7f, 0xf1, - 0x22, 0x47, 0xab, 0x66, 0x70, 0x95, 0x55, 0x10, 0x1b, 0x31, 0xa1, 0x06, - 0xd8, 0x02, 0x8f, 0x9c, 0xaa, 0x1b, 0x12, 0x50, 0x95, 0x14, 0xb5, 0xef, - 0xdd, 0x2e, 0x7f, 0xcb, 0xef, 0xf9, 0x79, 0x6d, 0xa6, 0x49, 0xeb, 0x27, - 0x40, 0x97, 0xea, 0x25, 0x61, 0x34, 0x21, 0x9b, 0xd2, 0x8b, 0xb1, 0x65, - 0xa5, 0x2b, 0x8b, 0xca, 0x3f, 0xd0, 0x33, 0x79, 0x43, 0x9c, 0x4b, 0x89, - 0x1f, 0xec, 0x38, 0xb8, 0x84, 0xcc, 0x26, 0x8d, 0x12, 0x1f, 0x72, 0x07, - 0x1c, 0x87, 0xbc, 0x3b, 0x52, 0x71, 0xff, 0xcf, 0x32, 0x49, 0xcb, 0x82, - 0x2a, 0xf7, 0x5a, 0x36, 0x57, 0x84, 0x19, 0x31, 0xfc, 0x36, 0xaf, 0x82, - 0x22, 0xc1, 0xd7, 0x95, 0x60, 0x5d, 0x3b, 0xf4, 0x96, 0x44, 0xd6, 0xae, - 0x1a, 0x50, 0x86, 0xbb, 0x33, 0xd3, 0x48, 0x0a, 0xea, 0x6a, 0x3a, 0xe7, - 0x3b, 0xf0, 0x22, 0x2a, 0x51, 0xb0, 0x4b, 0x63, 0x1f, 0x20, 0x73, 0x44, - 0x27, 0x86, 0xd7, 0xa4, 0x51, 0xca, 0x13, 0xa3, 0xee, 0x05, 0xf3, 0x4e, - 0x5f, 0xee, 0x03, 0x02, 0x75, 0x26, 0xf1, 0x4e, 0x45, 0x96, 0x8e, 0xb1, - 0xc0, 0xfe, 0x74, 0x15, 0xb8, 0xf2, 0xc0, 0x19, 0x4b, 0x8c, 0xf8, 0xa1, - 0x47, 0x06, 0x0f, 0x92, 0x13, 0x6f, 0x37, 0x05, 0x24, 0x03, 0x1b, 0xfb, - 0xd0, 0xd2, 0x0e, 0x3f, 0x39, 0x6a, 0x0a, 0xf7, 0x7e, 0x70, 0xda, 0x9b, - 0x8a, 0x67, 0x50, 0x76, 0x04, 0x7a, 0xff, 0xd2, 0x6d, 0xfc, 0x96, 0x48, - 0xab, 0x6c, 0xc5, 0x6d, 0x11, 0x74, 0x55, 0x5f, 0xc6, 0x25, 0x7a, 0x2b, - 0x0e, 0x1b, 0x24, 0xb3, 0x9a, 0x5b, 0x37, 0x25, 0xda, 0x21, 0x9f, 0xfc, - 0xf3, 0x32, 0x75, 0xb5, 0xe1, 0x86, 0x8d, 0xb4, 0xea, 0x17, 0x0e, 0xc8, - 0x20, 0xc7, 0x7b, 0x6b, 0x5c, 0x6c, 0x6e, 0x35, 0xb5, 0x34, 0x38, 0xc1, - 0xee, 0xcf, 0x3b, 0xb4, 0xa8, 0xc1, 0x45, 0x01, 0xd7, 0xf9, 0x62, 0x85, - 0xf3, 0x24, 0x2e, 0x9a, 0xc4, 0x91, 0xd9, 0xd0, 0xe9, 0x5a, 0x2d, 0xe0, - 0x46, 0xcb, 0xc3, 0x82, 0xf2, 0x98, 0xf6, 0xa0, 0x62, 0x5f, 0x43, 0x86, - 0xc0, 0xc4, 0xa2, 0xaa, 0xfe, 0x1e, 0xf8, 0x47, 0xe5, 0xb5, 0x9f, 0xb5, - 0x09, 0x24, 0x5e, 0xcd, 0x36, 0xb6, 0x0f, 0x91, 0x04, 0x6e, 0x9f, 0xa1, - 0x4a, 0x11, 0x83, 0x89, 0xe2, 0xdf, 0x8d, 0xee, 0x74, 0xb4, 0x4f, 0x5a, - 0x02, 0x68, 0x85, 0x25, 0x04, 0x9d, 0x3a, 0x9f, 0xdc, 0x8a, 0x66, 0xfb, - 0xc7, 0x02, 0x37, 0x40, 0x0f, 0x13, 0xc7, 0xb9, 0x31, 0x1a, 0xa4, 0x78, - 0x45, 0xc8, 0x70, 0xad, 0xa6, 0x30, 0x75, 0x99, 0xd4, 0x9b, 0x4a, 0x57, - 0xb8, 0x8e, 0xd1, 0x46, 0x99, 0x7d, 0xf8, 0xc9, 0xd7, 0x75, 0xf8, 0x78, - 0xac, 0xa6, 0x5f, 0x3f, 0x33, 0xb5, 0x74, 0x91, 0x80, 0x9f, 0x7b, 0xc2, - 0x5d, 0x7a, 0xf8, 0xa5, 0x89, 0xb9, 0x6d, 0x99, 0x20, 0xea, 0x59, 0xb3, - 0x29, 0x89, 0xce, 0x98, 0x9e, 0xea, 0xf4, 0xdd, 0x17, 0xa9, 0x61, 0x33, - 0x27, 0x8a, 0x30, 0x9b, 0x35, 0x80, 0xa0, 0x72, 0xd7, 0x95, 0xf9, 0x15, - 0x9c, 0x02, 0x87, 0x32, 0x2a, 0xf1, 0xe5, 0x67, 0xa3, 0xcb, 0x2e, 0xaf, - 0xec, 0x43, 0x62, 0x95, 0x12, 0xca, 0xe6, 0xdd, 0x35, 0x57, 0x3d, 0xda, - 0xaf, 0x99, 0x1f, 0x30, 0x41, 0x64, 0x2b, 0x09, 0xce, 0xe0, 0x2f, 0x7b, - 0x5f, 0x86, 0x85, 0xe7, 0xb4, 0xab, 0x13, 0xf2, 0x73, 0x4f, 0x60, 0xfe, - 0x3a, 0xae, 0xa4, 0xdb, 0x5c, 0x34, 0x7f, 0x33, 0xc9, 0x0f, 0x69, 0x61, - 0x08, 0x12, 0x7e, 0xd4, 0x36, 0x13, 0xc3, 0xc5, 0x9e, 0x4b, 0x06, 0x13, - 0x3e, 0x17, 0xd9, 0x9f, 0x3f, 0xad, 0xca, 0xf1, 0x53, 0xea, 0x96, 0xdd, - 0x8a, 0xb6, 0x85, 0xa4, 0x8d, 0xe1, 0x6d, 0x39, 0x00, 0x02, 0x91, 0x0c, - 0x35, 0x94, 0xee, 0xe0, 0x87, 0x84, 0x5c, 0x55, 0xcb, 0x1f, 0xf6, 0xcb, - 0xe6, 0x3c, 0xb8, 0x6b, 0x93, 0x9f, 0x73, 0x5b, 0x61, 0x30, 0xe1, 0x98, - 0x8d, 0xa4, 0x2f, 0x3b, 0x23, 0x5b, 0x59, 0xdf, 0xd8, 0x04, 0x42, 0x78, - 0x82, 0xb9, 0x71, 0xd3, 0x9d, 0xd7, 0xd9, 0xeb, 0xc0, 0x57, 0xce, 0xa9, - 0x8a, 0x4f, 0xf8, 0x74, 0xb8, 0xac, 0x52, 0xd1, 0x8e, 0xcc, 0xa4, 0xab, - 0x9a, 0xbc, 0xfe, 0x39, 0x28, 0x29, 0x7f, 0x34, 0x9e, 0xe9, 0xad, 0xd1, - 0x58, 0xb6, 0x8f, 0x31, 0xa3, 0x5e, 0x9a, 0xea, 0x99, 0xa6, 0x05, 0x06, - 0x5e, 0xb8, 0xee, 0x3d, 0x18, 0x3b, 0x09, 0x2f, 0x6d, 0xa9, 0xb8, 0xae, - 0x20, 0x3f, 0x0f, 0xa7, 0x92, 0x03, 0x62, 0x82, 0xdf, 0x82, 0x3f, 0x73, - 0xb0, 0xe9, 0x7a, 0xc0, 0xc5, 0x68, 0x27, 0xc5, 0xfc, 0x1d, 0xc8, 0x76, - 0x98, 0xa2, 0x4f, 0xf8, 0xe0, 0xd1, 0xaa, 0xa3, 0x63, 0x33, 0x37, 0xd6, - 0x8e, 0x46, 0x8d, 0x7d, 0x58, 0xad, 0x8f, 0xa0, 0xc1, 0xca, 0x71, 0x06, - 0xb2, 0x1b, 0xc7, 0xb0, 0x34, 0x9e, 0x4d, 0xab, 0xe2, 0x97, 0x84, 0xd8, - 0x55, 0xa4, 0x23, 0xed, 0x2c, 0xd1, 0xca, 0x56, 0x78, 0xa5, 0xa1, 0x10, - 0xc3, 0x27, 0xd3, 0xb4, 0x25, 0x8e, 0x89, 0x59, 0x8e, 0x4e, 0xbd, 0x3d, - 0xac, 0xc3, 0x14, 0xa4, 0x90, 0xbd, 0xb8, 0xa3, 0xa1, 0xcf, 0x22, 0x4b, - 0x32, 0xb3, 0x45, 0x04, 0x70, 0x73, 0xc9, 0x71, 0x76, 0x1b, 0x41, 0x8b, - 0xda, 0x5a, 0x2d, 0xd9, 0x5a, 0x15, 0xa1, 0xf4, 0x9c, 0x8d, 0xb8, 0x54, - 0xae, 0xc1, 0x9a, 0x19, 0x0b, 0x6f, 0x0b, 0x7f, 0x5a, 0x94, 0x89, 0xe3, - 0x9c, 0xd2, 0x95, 0x61, 0x47, 0xa9, 0xf6, 0xf2, 0xe7, 0xb2, 0x39, 0xcc, - 0x5b, 0xfd, 0x69, 0xd1, 0x29, 0xb9, 0xa7, 0xd8, 0xc1, 0x11, 0xd2, 0x5c, - 0xaa, 0xde, 0x40, 0x22, 0xf2, 0x4c, 0x12, 0x6b, 0xcd, 0x2d, 0xcc, 0x73, - 0xb4, 0x7e, 0x2d, 0x16, 0xed, 0x30, 0xe7, 0x55, 0x9f, 0x61, 0xdf, 0x2e, - 0xaf, 0xd0, 0x61, 0x19, 0xc9, 0x32, 0x90, 0x34, 0x43, 0x31, 0xe2, 0xd3, - 0xe6, 0xe8, 0x7b, 0x55, 0x20, 0xdb, 0x7f, 0xb4, 0x9d, 0x4f, 0xf1, 0xd1, - 0x01, 0x15, 0x26, 0xc9, 0xbf, 0xca, 0xc2, 0x67, 0x4e, 0xb5, 0x3d, 0xdd, - 0xc5, 0x05, 0x93, 0xbf, 0xac, 0x28, 0xac, 0x53, 0x79, 0xfa, 0x63, 0xab, - 0x27, 0xbf, 0x0c, 0x11, 0xbf, 0x53, 0xee, 0x0a, 0x96, 0xe2, 0x2a, 0xb6, - 0xa4, 0x97, 0x9f, 0x37, 0x3d, 0xb5, 0x27, 0x6f, 0x1a, 0xd7, 0xbf, 0x97, - 0x46, 0xd0, 0x21, 0xea, 0x6f, 0x2a, 0x16, 0xc6, 0xf7, 0xde, 0x9e, 0x5e, - 0x12, 0x04, 0xe6, 0x36, 0xfd, 0x34, 0xd1, 0x11, 0xb6, 0x42, 0x4c, 0xaa, - 0xc2, 0x97, 0x82, 0xc4, 0x78, 0x98, 0x6d, 0x19, 0x4e, 0x3c, 0x2a, 0x8c, - 0x4c, 0xd9, 0xcb, 0xf8, 0x42, 0xad, 0x9b, 0x6f, 0x54, 0x78, 0x50, 0x2b, - 0x72, 0xbf, 0xac, 0x64, 0xa9, 0xf3, 0xf7, 0x9a, 0xd2, 0x34, 0x17, 0xd8, - 0xc7, 0xe0, 0x37, 0x6f, 0x49, 0x9b, 0x56, 0xcb, 0x38, 0xe3, 0x7a, 0xf6, - 0x14, 0x8e, 0x7a, 0x17, 0x81, 0x4c, 0xb8, 0x68, 0x8d, 0xbe, 0xcd, 0x56, - 0xbd, 0x39, 0x26, 0x68, 0x0d, 0x99, 0xb3, 0x8a, 0x91, 0x2e, 0x86, 0xad, - 0x6a, 0x5a, 0x28, 0x55, 0x3b, 0x03, 0x8a, 0x0a, 0xf2, 0x5f, 0xd8, 0xa2, - 0x84, 0x8b, 0xf3, 0xd4, 0x48, 0x86, 0x3c, 0xb0, 0x56, 0x88, 0x9c, 0x17, - 0x95, 0x9d, 0xbb, 0x00, 0x8e, 0x47, 0x52, 0x74, 0xa1, 0xbe, 0x37, 0x71, - 0x96, 0x8e, 0xbe, 0xdf, 0xe4, 0xe3, 0x6d, 0x95, 0x1e, 0x46, 0x61, 0x9b, - 0x2b, 0x4d, 0x5e, 0x01, 0x94, 0x91, 0xcd, 0x29, 0x9d, 0x62, 0xba, 0x7c, - 0x6a, 0x93, 0xeb, 0x5a, 0xeb, 0xf8, 0xe7, 0xc7, 0x9c, 0x89, 0x74, 0x72, - 0xac, 0x51, 0x9f, 0x80, 0x8b, 0x7c, 0x68, 0x5a, 0xd0, 0xd5, 0x08, 0xa0, - 0x9c, 0x55, 0x54, 0x16, 0x03, 0x9a, 0xa6, 0x01, 0x06, 0x9e, 0x64, 0x24, - 0x83, 0x5a, 0x1a, 0x40, 0xce, 0x71, 0xce, 0xb4, 0xb1, 0x1b, 0x74, 0x91, - 0x2f, 0xe4, 0x9a, 0xe2, 0x94, 0xc8, 0x63, 0x63, 0x31, 0x2e, 0x7f, 0x0d, - 0x08, 0x25, 0xd4, 0x2a, 0xe8, 0x0c, 0xdb, 0x7f, 0x1a, 0x94, 0x35, 0xb2, - 0x11, 0xd0, 0xe4, 0x6a, 0x2a, 0x83, 0x59, 0x26, 0xa8, 0xcd, 0x75, 0x58, - 0xaa, 0x55, 0x08, 0xb9, 0xa6, 0xe1, 0xcc, 0x39, 0x75, 0xd6, 0xe6, 0xc0, - 0x40, 0x7a, 0x64, 0x06, 0x7d, 0x0f, 0x01, 0x4d, 0xbf, 0x85, 0x5e, 0x35, - 0x60, 0x35, 0x6b, 0x7f, 0x9a, 0xf6, 0x90, 0x96, 0x31, 0xfc, 0xd4, 0x44, - 0xd2, 0x79, 0x52, 0x1f, 0x9b, 0x30, 0xc8, 0x10, 0xd3, 0xff, 0x82, 0x0c, - 0x3f, 0xb8, 0x03, 0x7b, 0x3c, 0x85, 0xc5, 0xa8, 0x9d, 0xc0, 0x4e, 0xab, - 0x4b, 0x61, 0xa7, 0xda, 0xf3, 0x0a, 0xfc, 0xc6, 0x43, 0x4b, 0x6e, 0xa9, - 0x6e, 0x5b, 0x69, 0x93, 0x75, 0xd6, 0x03, 0x74, 0xf4, 0x1d, 0x73, 0x2c, - 0x07, 0x49, 0x96, 0x92, 0xe8, 0x33, 0xae, 0xd4, 0x37, 0xea, 0x7a, 0x73, - 0x43, 0x67, 0xcf, 0x60, 0x54, 0x4f, 0xeb, 0x6a, 0xc4, 0xd9, 0x8b, 0xe7, - 0x81, 0xcf, 0x66, 0x3f, 0x3b, 0x6c, 0x26, 0x76, 0xca, 0x9a, 0x5f, 0x6e, - 0x78, 0x08, 0x20, 0x2f, 0xda, 0xa1, 0xd2, 0x8e, 0x6c, 0x6b, 0xda, 0x2e, - 0xe0, 0x0a, 0x7a, 0x46, 0xc5, 0xd4, 0x9b, 0x4b, 0x54, 0x57, 0x25, 0xb3, - 0x0b, 0x0b, 0x80, 0xf1, 0xb6, 0xda, 0x43, 0x78, 0xf7, 0x6f, 0xd4, 0x16, - 0xf1, 0x42, 0x3f, 0x46, 0xd6, 0xd5, 0x02, 0x83, 0x9e, 0x25, 0x93, 0x6a, - 0x5a, 0x46, 0xa6, 0x5f, 0xed, 0xe7, 0x30, 0xe2, 0x9b, 0xa6, 0x81, 0x48, - 0x8c, 0x2c, 0xef, 0x1c, 0x93, 0xde, 0xe9, 0x72, 0xa6, 0x4d, 0x2a, 0xd9, - 0x8f, 0xff, 0x26, 0xce, 0xbf, 0x07, 0x16, 0x59, 0x7c, 0x6f, 0xfc, 0xa2, - 0x13, 0x35, 0x70, 0x5f, 0x9b, 0x1b, 0x79, 0x91, 0x23, 0x40, 0x4e, 0x84, - 0x78, 0x24, 0x1a, 0xd0, 0xc3, 0xf5, 0x65, 0x4c, 0x1c, 0xf3, 0xa6, 0x19, - 0x3d, 0xd6, 0x2f, 0x6e, 0x16, 0x13, 0xbe, 0x63, 0x06, 0xa0, 0x3f, 0x06, - 0xc4, 0x86, 0x2f, 0x4e, 0xfb, 0x7e, 0xa3, 0x9a, 0x72, 0xd4, 0xdc, 0xf5, - 0xc4, 0x47, 0x7c, 0xf3, 0xbe, 0x74, 0x65, 0x4a, 0x4e, 0x4e, 0xd5, 0xe2, - 0xa1, 0x83, 0x46, 0x9b, 0x71, 0x1c, 0x19, 0x77, 0x72, 0x64, 0x67, 0x86, - 0xf2, 0xf5, 0x71, 0x89, 0xbb, 0x58, 0xc3, 0xa8, 0xfb, 0xf5, 0xe5, 0xe9, - 0x6a, 0x2f, 0x74, 0xfd, 0x88, 0x49, 0x19, 0x7a, 0x51, 0x38, 0x7d, 0xc7, - 0x10, 0x04, 0x90, 0xfa, 0xa6, 0xef, 0xbc, 0xa8, 0x08, 0x6d, 0xd0, 0x82, - 0x4c, 0xeb, 0xac, 0xff, 0x20, 0x76, 0x1e, 0x59, 0x09, 0xa9, 0x70, 0xa3, - 0xd1, 0x6b, 0x2d, 0x1a, 0x32, 0x41, 0x59, 0x8c, 0xe4, 0x91, 0x5c, 0x34, - 0x23, 0x6d, 0x21, 0xae, 0x24, 0x1d, 0x73, 0x58, 0x80, 0x8d, 0x52, 0x34, - 0x9e, 0x61, 0xe3, 0x45, 0xf7, 0x9a, 0x2b, 0x70, 0xc0, 0x21, 0x5b, 0x46, - 0x22, 0x2b, 0xe9, 0x93, 0x20, 0x6c, 0x7b, 0xcd, 0x48, 0xfd, 0xdc, 0x4f, - 0xa3, 0xec, 0x62, 0xe5, 0xb5, 0x92, 0x7a, 0xc3, 0x41, 0x7f, 0x9a, 0xc9, - 0xfa, 0x83, 0x0e, 0xe8, 0x38, 0xbe, 0x4b, 0x47, 0xf9, 0x00, 0xb2, 0xce, - 0xca, 0x25, 0x3e, 0xd4, 0xd7, 0x6d, 0x69, 0x35, 0x66, 0xeb, 0xac, 0x63, - 0x54, 0x95, 0x97, 0x9d, 0x21, 0x69, 0xad, 0xa8, 0x89, 0xec, 0xbd, 0x15, - 0xa5, 0x70, 0x70, 0x76, 0x3e, 0x71, 0xed, 0x17, 0x2f, 0xa8, 0xbc, 0xb6, - 0xdf, 0x31, 0x1d, 0x2c, 0x47, 0x70, 0x36, 0xc4, 0xfe, 0x76, 0x7f, 0xb1, - 0xc0, 0x49, 0x55, 0x46, 0x5e, 0xde, 0xfe, 0x7d, 0x24, 0xca, 0x7c, 0x3a, - 0x33, 0xe5, 0xf9, 0x9c, 0xef, 0x60, 0x40, 0x6b, 0x9a, 0x2a, 0x66, 0xe5, - 0x2f, 0xcb, 0xba, 0x90, 0xe2, 0x47, 0xec, 0x9d, 0x2b, 0xfa, 0x75, 0x9e, - 0xca, 0xe7, 0x27, 0x4d, 0x64, 0x88, 0x3a, 0xff, 0xf1, 0xb3, 0x1b, 0xed, - 0xdd, 0xaf, 0x73, 0x2e, 0x44, 0x4c, 0xe4, 0x51, 0x91, 0x9f, 0xff, 0x9e, - 0x22, 0x23, 0x7e, 0x18, 0xb2, 0xd4, 0x91, 0xf8, 0xb4, 0x97, 0xc4, 0x41, - 0x44, 0x36, 0x55, 0x47, 0xd2, 0x20, 0x5e, 0xc0, 0x8d, 0xc7, 0x3d, 0x29, - 0x2c, 0x27, 0x81, 0xa2, 0xf5, 0xec, 0x90, 0xf9, 0x6a, 0x0d, 0xd8, 0xd4, - 0xa9, 0x73, 0x79, 0x01, 0xf4, 0x86, 0xb0, 0x6d, 0x93, 0x86, 0x33, 0x3f, - 0xcb, 0x57, 0xa4, 0x40, 0x2a, 0x3d, 0x62, 0xe8, 0x33, 0x5e, 0x06, 0x4d, - 0x07, 0x4f, 0xff, 0x1d, 0xba, 0xad, 0x5a, 0x35, 0x03, 0xd3, 0x9f, 0x99, - 0x83, 0x61, 0x36, 0xe3, 0x98, 0x11, 0x2b, 0x5c, 0x24, 0xba, 0x8e, 0x66, - 0xda, 0xc5, 0xc7, 0xaa, 0xb5, 0x07, 0x50, 0xc7, 0x79, 0x22, 0x87, 0x47, - 0x82, 0x8e, 0xca, 0x9b, 0x7f, 0x68, 0x0d, 0xc5, 0xa2, 0x0b, 0x85, 0x65, - 0xee, 0x0c, 0xd4, 0x51, 0x7a, 0x20, 0x65, 0xce, 0xf3, 0x66, 0xae, 0x9d, - 0x57, 0x9f, 0xe9, 0x34, 0xf6, 0x3a, 0x76, 0x7c, 0x9b, 0x4c, 0x8f, 0xe3, - 0x23, 0x1f, 0x11, 0x28, 0x8a, 0x7d, 0x52, 0x07, 0x07, 0x1e, 0xd6, 0xc1, - 0x26, 0xab, 0xd5, 0x8d, 0x3f, 0xb2, 0xec, 0xf9, 0xa6, 0x8d, 0x3f, 0x04, - 0x01, 0xcd, 0xeb, 0x47, 0xff, 0xeb, 0x6b, 0xb4, 0x15, 0x8c, 0x90, 0xb7, - 0xa3, 0x81, 0x33, 0x53, 0x7c, 0xf1, 0x38, 0x8e, 0xb6, 0x25, 0x83, 0x1c, - 0x95, 0x1b, 0xdd, 0xba, 0x30, 0xb4, 0x9d, 0xd2, 0x79, 0x3a, 0x40, 0xc0, - 0xd3, 0x65, 0x3e, 0x76, 0xb3, 0x98, 0x94, 0x1f, 0x0f, 0x53, 0xd1, 0xf3, - 0x7a, 0x6a, 0x20, 0x0c, 0xe6, 0x5f, 0x2f, 0x18, 0x7b, 0x74, 0x48, 0x45, - 0xf9, 0xac, 0x13, 0xad, 0x8c, 0xd8, 0xdd, 0xf7, 0xe9, 0x14, 0x0e, 0xa9, - 0x6c, 0x9c, 0xc8, 0x3b, 0x2b, 0xfd, 0xec, 0x02, 0x5b, 0xe0, 0xcd, 0x15, - 0x96, 0xc1, 0xdf, 0x73, 0xe1, 0x2c, 0xcf, 0x0c, 0x0b, 0x99, 0x9c, 0x59, - 0x5c, 0x5d, 0x04, 0x1e, 0x59, 0x46, 0xde, 0x9c, 0xc3, 0xad, 0x86, 0xdb, - 0xb7, 0xdc, 0x20, 0x3e, 0xc1, 0xa1, 0x68, 0x8e, 0x61, 0x24, 0x52, 0x67, - 0xd7, 0x02, 0x9c, 0x94, 0xb6, 0xab, 0x77, 0x35, 0x18, 0x4c, 0xe4, 0xd0, - 0xce, 0x97, 0x2f, 0x23, 0x63, 0x83, 0xe1, 0x65, 0x5a, 0x44, 0x57, 0x6a, - 0xfa, 0x00, 0xc8, 0x29, 0x8c, 0x13, 0x00, 0x32, 0xba, 0x9c, 0xb7, 0xd4, - 0xc8, 0x2f, 0x5b, 0x82, 0x4f, 0xd9, 0xfd, 0x3a, 0x89, 0x98, 0xbb, 0xa8, - 0x56, 0xe1, 0xac, 0x71, 0xc8, 0x35, 0x6f, 0xce, 0xfb, 0x46, 0x7a, 0xed, - 0x2f, 0x96, 0xda, 0x60, 0x1a, 0x95, 0x19, 0x05, 0x5c, 0x55, 0x35, 0xbd, - 0xde, 0x31, 0x41, 0x4a, 0x68, 0xe5, 0x35, 0x2a, 0x3e, 0xc7, 0x55, 0xf4, - 0x6c, 0xe1, 0x9e, 0xb9, 0x93, 0x9c, 0x1d, 0x04, 0xf6, 0x3b, 0x67, 0xd0, - 0x65, 0xfb, 0xce, 0x87, 0x5f, 0x61, 0x65, 0x0b, 0x36, 0xef, 0x6e, 0x4d, - 0x29, 0x48, 0x58, 0x82, 0x9f, 0x59, 0x4c, 0x65, 0x1a, 0xb0, 0xec, 0x28, - 0x35, 0x30, 0x16, 0x4d, 0x59, 0x6c, 0x74, 0xdf, 0x1a, 0x5d, 0x90, 0x18, - 0xcd, 0x4b, 0x90, 0xac, 0x7f, 0x29, 0xc2, 0x17, 0xf1, 0x32, 0xe0, 0xfc, - 0x5f, 0x45, 0xfe, 0x94, 0x48, 0x25, 0x18, 0x1f, 0xd3, 0xf9, 0x25, 0xda, - 0x63, 0xca, 0xef, 0x04, 0xd6, 0x62, 0x27, 0x1b, 0x47, 0xb2, 0xf2, 0x6b, - 0x72, 0x74, 0x2e, 0x31, 0x13, 0x4a, 0xe0, 0x05, 0x53, 0xbe, 0xf4, 0x8d, - 0xe9, 0xa8, 0xb2, 0x4a, 0xf2, 0x4c, 0x80, 0xb3, 0xdf, 0x24, 0x2c, 0x2b, - 0x83, 0x6d, 0xca, 0xc4, 0x06, 0xc2, 0x07, 0x4b, 0xd9, 0x6b, 0xff, 0x95, - 0x72, 0x83, 0xd9, 0xcc, 0x5c, 0x42, 0x38, 0xa9, 0xd2, 0xe7, 0x74, 0xa1, - 0xb7, 0x02, 0x29, 0xc5, 0xac, 0xdd, 0xe4, 0x4f, 0xc4, 0x92, 0xcf, 0xd0, - 0x74, 0x77, 0x5f, 0x24, 0x60, 0x6c, 0xe8, 0xb3, 0xe4, 0xbe, 0x32, 0xba, - 0x0d, 0xa2, 0xf6, 0x30, 0x32, 0xf4, 0xf2, 0xf3, 0x1d, 0x2b, 0x92, 0xe8, - 0xb4, 0x92, 0x85, 0xb2, 0x59, 0x53, 0x1d, 0xff, 0xe3, 0x88, 0x2d, 0xdf, - 0xe0, 0xf2, 0x67, 0x61, 0xf9, 0x53, 0x8d, 0x19, 0x68, 0x96, 0xd4, 0x00, - 0x8e, 0xed, 0x09, 0x04, 0x1d, 0x77, 0xf5, 0xf8, 0x3b, 0xb0, 0x3a, 0x57, - 0x63, 0xb2, 0x36, 0x02, 0xd1, 0x90, 0xbd, 0x0d, 0xbc, 0x70, 0x4d, 0xb0, - 0x54, 0x15, 0x2b, 0x83, 0x4a, 0x46, 0xe7, 0xd6, 0x09, 0x0f, 0x7a, 0xa0, - 0xad, 0x40, 0x79, 0x8c, 0x81, 0x75, 0xa7, 0xf4, 0x5e, 0x4d, 0xf9, 0xa1, - 0xcb, 0x2d, 0x5b, 0x08, 0x92, 0xd4, 0x0a, 0x04, 0xeb, 0xfc, 0x6a, 0x03, - 0x05, 0xb7, 0x01, 0xf3, 0xab, 0x6a, 0x42, 0xd4, 0x17, 0xa1, 0x6e, 0x96, - 0x7c, 0xd0, 0xc0, 0xc6, 0x8a, 0x2f, 0x47, 0x48, 0xc0, 0x1a, 0xab, 0x8b, - 0x1c, 0x55, 0xbd, 0x80, 0x74, 0xa4, 0x12, 0xb4, 0xb5, 0x96, 0x98, 0x73, - 0x84, 0xbe, 0xd7, 0x5a, 0x37, 0xd4, 0x50, 0x84, 0x15, 0xe0, 0x11, 0x2f, - 0xa9, 0x7c, 0x1b, 0xe8, 0xab, 0x6f, 0x39, 0xe7, 0x4f, 0xab, 0xa2, 0xc8, - 0x29, 0x4a, 0xc1, 0x16, 0x38, 0x01, 0x91, 0xc3, 0x9d, 0x5d, 0xa8, 0x38, - 0x01, 0x97, 0x40, 0x9e, 0x37, 0x85, 0xd4, 0xfa, 0x30, 0xf0, 0x55, 0xcf, - 0x63, 0x0c, 0xcb, 0x79, 0x7b, 0xb4, 0x19, 0x30, 0xaa, 0xa3, 0x25, 0x00, - 0x23, 0x2c, 0x39, 0x2f, 0x41, 0xf0, 0x6e, 0xcc, 0x96, 0x93, 0x13, 0xe8, - 0x76, 0xce, 0xdc, 0x33, 0x43, 0x64, 0x79, 0x7a, 0x50, 0xf8, 0xbe, 0x17, - 0xe2, 0x17, 0x9c, 0x15, 0xd6, 0x11, 0xce, 0xcf, 0xed, 0x4c, 0xe4, 0x1b, - 0xc8, 0xe3, 0x8c, 0xc3, 0x15, 0x62, 0x5a, 0x51, 0x98, 0xe7, 0xfd, 0x4a, - 0xa3, 0xad, 0x71, 0x51, 0xb8, 0x35, 0x49, 0x40, 0x61, 0x05, 0xe2, 0x4f, - 0x2b, 0x20, 0x2c, 0x4c, 0xda, 0xb2, 0x85, 0xeb, 0xdb, 0xad, 0xee, 0x6a, - 0xca, 0x94, 0xf2, 0xf9, 0x4d, 0x22, 0xf2, 0xe8, 0xa8, 0x6b, 0x3b, 0x59, - 0xbd, 0xfb, 0x43, 0xf3, 0x87, 0xf9, 0xc9, 0x04, 0x79, 0x0a, 0x3e, 0xb1, - 0x0e, 0xab, 0xe1, 0xd3, 0xdf, 0xdc, 0x81, 0x0f, 0xe1, 0xf0, 0x16, 0x1d, - 0xb3, 0x96, 0xb4, 0xe0, 0xba, 0xfc, 0xa1, 0x8a, 0xfa, 0xb7, 0x18, 0x24, - 0xf3, 0xc7, 0x1b, 0x3d, 0xf0, 0xe9, 0x3a, 0x52, 0x66, 0xea, 0x8e, 0x2b, - 0x68, 0x9e, 0xa3, 0xcb, 0xad, 0x9b, 0xaa, 0x90, 0x07, 0x27, 0x83, 0x10, - 0x84, 0x2f, 0x1c, 0x89, 0x67, 0xd0, 0xf3, 0x53, 0x8d, 0x53, 0xbb, 0xf8, - 0x42, 0xcc, 0xa3, 0x3f, 0xc7, 0x8e, 0x2b, 0xcc, 0x45, 0x2c, 0xca, 0xd5, - 0xdd, 0x35, 0x48, 0x3e, 0xc1, 0xbf, 0x1f, 0x78, 0x26, 0x91, 0x1a, 0xf4, - 0xdb, 0xfa, 0x9c, 0x79, 0x22, 0x03, 0xf6, 0x4a, 0xc0, 0x81, 0xde, 0xb7, - 0xa6, 0x08, 0x9a, 0x07, 0x72, 0x1c, 0xab, 0x9e, 0x2a, 0x8d, 0xc0, 0x27, - 0x32, 0x96, 0xd3, 0x31, 0x62, 0xe2, 0x06, 0xac, 0x12, 0x05, 0xce, 0xb3, - 0xb9, 0x11, 0xd0, 0x92, 0xe8, 0x9e, 0x1d, 0x92, 0x31, 0xee, 0x9a, 0x39, - 0x07, 0xcb, 0x50, 0x9a, 0x06, 0x31, 0xe1, 0x0d, 0x29, 0xda, 0x39, 0x49, - 0xd4, 0x36, 0x0b, 0xec, 0x19, 0x03, 0x39, 0xab, 0xf5, 0x01, 0x06, 0xc9, - 0x4f, 0x51, 0x79, 0xb8, 0x76, 0x08, 0xdd, 0x78, 0x55, 0x40, 0xbb, 0xa7, - 0x2a, 0x40, 0xce, 0xcb, 0x41, 0xc8, 0xdd, 0xdd, 0x0f, 0x55, 0x7f, 0xa7, - 0x83, 0x90, 0xc6, 0x77, 0x84, 0x54, 0x81, 0x5b, 0x92, 0x49, 0xde, 0x18, - 0xd5, 0xf8, 0x04, 0x5d, 0x14, 0x10, 0x94, 0x9b, 0x42, 0xda, 0x2f, 0x19, - 0x85, 0x01, 0xb0, 0xd1, 0x03, 0xd4, 0xf8, 0x62, 0xdb, 0xbd, 0xd0, 0x9d, - 0xf4, 0x3b, 0x63, 0x5f, 0x72, 0xa4, 0x96, 0x81, 0x83, 0xd0, 0xcc, 0x68, - 0x36, 0xea, 0x19, 0xbc, 0xdd, 0x47, 0xb8, 0x85, 0xca, 0xd2, 0xad, 0xc0, - 0x47, 0xf4, 0x47, 0xa1, 0x26, 0xcb, 0xcd, 0x2a, 0xbf, 0x8c, 0xd2, 0x75, - 0x47, 0x94, 0x2b, 0x28, 0x21, 0xef, 0x68, 0x6f, 0x70, 0x2c, 0x03, 0x7e, - 0xa0, 0xd8, 0xea, 0x8b, 0x66, 0xae, 0xcb, 0x59, 0xab, 0xdd, 0xcf, 0x04, - 0x19, 0xb2, 0xe1, 0x4c, 0xdb, 0xa0, 0x72, 0xd9, 0xf5, 0x44, 0xfd, 0x00, - 0x83, 0x73, 0x15, 0x12, 0x2d, 0xa5, 0xe7, 0xaa, 0x9c, 0xb2, 0xae, 0x80, - 0x95, 0x08, 0xa9, 0xef, 0x96, 0xb2, 0x79, 0x9f, 0x4a, 0x6c, 0xc8, 0x66, - 0xc0, 0x99, 0xbe, 0x9a, 0x45, 0x67, 0x52, 0xe5, 0xec, 0x31, 0xac, 0x6d, - 0x48, 0x77, 0x46, 0x09, 0x59, 0xbd, 0x90, 0x41, 0xb8, 0xbf, 0x5b, 0x42, - 0x51, 0x1d, 0x97, 0xfd, 0x42, 0xe9, 0xba, 0x84, 0xd4, 0x2b, 0x3b, 0xbf, - 0x91, 0x21, 0xa7, 0x28, 0x7c, 0x3e, 0x01, 0x66, 0xc0, 0x44, 0xb9, 0x92, - 0x9d, 0x1c, 0x4e, 0xe1, 0x25, 0x1c, 0x71, 0xb7, 0x85, 0x46, 0x00, 0xfe, - 0x0d, 0x26, 0xb1, 0x16, 0xf8, 0x10, 0x03, 0xaa, 0x79, 0x92, 0xf9, 0x24, - 0x6b, 0x0a, 0x88, 0x25, 0x73, 0x69, 0x0b, 0xe4, 0x14, 0x20, 0x6a, 0x5b, - 0xe6, 0x4c, 0x40, 0x02, 0x81, 0xf6, 0x65, 0xb7, 0x3c, 0x8d, 0x61, 0x0c, - 0x1c, 0x50, 0x64, 0xb5, 0xdb, 0x27, 0xc6, 0xa3, 0x2a, 0x8a, 0xff, 0xe5, - 0xe8, 0x17, 0x94, 0x80, 0x58, 0x04, 0x56, 0x2a, 0xa9, 0xa8, 0x6a, 0x3a, - 0x25, 0xc1, 0x3e, 0x3c, 0x2c, 0x53, 0xe5, 0x17, 0x78, 0xbe, 0x76, 0xe5, - 0x1c, 0x7a, 0x45, 0x1c, 0x27, 0x91, 0x43, 0x11, 0xf8, 0xaa, 0xff, 0xbe, - 0xbe, 0x98, 0x4a, 0x1e, 0x6a, 0x57, 0x27, 0x16, 0x3d, 0x19, 0xcf, 0xf5, - 0x1e, 0x43, 0x3b, 0x4d, 0xdf, 0x18, 0x24, 0x21, 0xef, 0xb1, 0x9f, 0x7d, - 0x74, 0x0b, 0xa7, 0xd5, 0x3b, 0xa7, 0xe7, 0x6c, 0x12, 0x36, 0x55, 0xde, - 0x1f, 0xb6, 0x14, 0x26, 0xcd, 0xe1, 0x3b, 0xc6, 0x25, 0xbb, 0x2e, 0xd7, - 0xad, 0xe8, 0x97, 0xf8, 0x1d, 0x0d, 0x8f, 0x44, 0x0b, 0x4c, 0x5a, 0x35, - 0x3a, 0x48, 0xb8, 0xc4, 0x49, 0xff, 0x1f, 0x27, 0xe9, 0x96, 0x5b, 0x1d, - 0x03, 0xee, 0xd8, 0x96, 0xeb, 0x0e, 0xc7, 0xf8, 0x47, 0x1e, 0xa2, 0x6e, - 0x10, 0xe2, 0x31, 0xa1, 0xa6, 0x40, 0x3f, 0x89, 0x72, 0x28, 0xe2, 0x16, - 0x71, 0x93, 0xed, 0x11, 0x68, 0x78, 0x5d, 0x9e, 0xa9, 0x9d, 0x23, 0x5d, - 0xc6, 0xac, 0xd0, 0x59, 0x83, 0xa2, 0xcd, 0x08, 0xa2, 0x35, 0x5d, 0x1d, - 0xc4, 0xe5, 0x31, 0x7c, 0x17, 0x03, 0xc5, 0xfc, 0xeb, 0xe2, 0xd8, 0x70, - 0x4b, 0x8a, 0x18, 0xf9, 0x60, 0x23, 0xe8, 0xf5, 0x58, 0x5a, 0xd9, 0x44, - 0x68, 0xce, 0x6f, 0xbf, 0x1b, 0x64, 0x94, 0xc0, 0x85, 0x4c, 0xcf, 0x90, - 0x14, 0xb9, 0x5d, 0xfa, 0xf4, 0xc0, 0x3b, 0xb9, 0xc1, 0x4b, 0xd5, 0x94, - 0x98, 0x2b, 0xe0, 0x61, 0x69, 0x78, 0xc8, 0x76, 0x6a, 0x07, 0x62, 0xb7, - 0x83, 0xa5, 0x04, 0xe2, 0xb4, 0xe3, 0x82, 0xb0, 0xf2, 0x6f, 0x42, 0x96, - 0x93, 0x32, 0x84, 0xaa, 0x26, 0xd8, 0x8c, 0x37, 0x64, 0x24, 0x35, 0xc2, - 0x88, 0x64, 0x00, 0xb6, 0x6d, 0x4d, 0xae, 0x51, 0xe0, 0xa3, 0xd7, 0x09, - 0xa1, 0x2f, 0xd3, 0xa8, 0xc4, 0x88, 0xda, 0xd1, 0x90, 0xa6, 0x87, 0x70, - 0xc1, 0x58, 0x1a, 0x3a, 0xfb, 0x85, 0x5e, 0xe4, 0x1b, 0x6b, 0xf9, 0x98, - 0x48, 0x15, 0x73, 0x94, 0x3e, 0x63, 0x68, 0x17, 0x1d, 0x70, 0x47, 0x82, - 0x7a, 0x61, 0x16, 0x8e, 0x70, 0xa4, 0xa1, 0xc7, 0x29, 0x1f, 0x74, 0x28, - 0xfe, 0xf3, 0xdf, 0x9a, 0x88, 0x52, 0x81, 0x41, 0xe2, 0x32, 0x53, 0x01, - 0x95, 0xcc, 0xcb, 0xb2, 0x74, 0x1f, 0x84, 0xd8, 0x7a, 0xe0, 0x8f, 0xf2, - 0xfc, 0x9d, 0xa8, 0x3e, 0xc2, 0xd8, 0x2e, 0x37, 0xa2, 0xda, 0x6e, 0x0f, - 0xa8, 0x80, 0x86, 0x44, 0xf0, 0x0f, 0x5e, 0x28, 0x4a, 0x5a, 0x68, 0x55, - 0x47, 0xf2, 0xe3, 0xec, 0xbf, 0xa8, 0xee, 0x3d, 0x2e, 0x42, 0x1c, 0x0c, - 0x90, 0x79, 0xd2, 0x3f, 0x78, 0x1f, 0x89, 0xc0, 0x14, 0x7f, 0xaf, 0xbb, - 0x9c, 0x14, 0xae, 0x48, 0x44, 0xaf, 0xa0, 0x95, 0xab, 0xce, 0x97, 0x7e, - 0x1a, 0xb4, 0xbd, 0x1c, 0xf9, 0x84, 0xdf, 0xe6, 0xf4, 0x14, 0x3b, 0xa3, - 0x3b, 0x9a, 0xf7, 0x5f, 0xb1, 0x42, 0x3e, 0xa9, 0x85, 0x91, 0x70, 0x74, - 0x2a, 0xfa, 0x16, 0x60, 0xa8, 0x21, 0x81, 0x72, 0x5e, 0xc4, 0x6c, 0x2a, - 0xe7, 0x27, 0xad, 0x9e, 0x2d, 0xb2, 0x25, 0xf5, 0x53, 0x9c, 0x2c, 0xfe, - 0xf5, 0x0d, 0x60, 0x4b, 0x2e, 0x31, 0x7d, 0xab, 0xe6, 0x94, 0xc3, 0xcf, - 0xb1, 0xda, 0x89, 0xc4, 0xaf, 0x3c, 0x22, 0xcf, 0x89, 0x89, 0x9d, 0xe4, - 0xf9, 0x1b, 0x97, 0x9e, 0x15, 0x4f, 0x92, 0x1e, 0x34, 0x81, 0xe5, 0x09, - 0x11, 0x00, 0xb0, 0x17, 0x3b, 0xce, 0x4b, 0x66, 0xf1, 0xab, 0x03, 0xc7, - 0x11, 0x0c, 0xe8, 0xea, 0x6d, 0x37, 0xd0, 0x36, 0xef, 0x68, 0x9b, 0xe1, - 0x40, 0x60, 0x0e, 0xf3, 0xf7, 0xc2, 0x2a, 0xbf, 0xd6, 0xa8, 0x90, 0x4e, - 0xf2, 0x89, 0x77, 0x8d, 0x9e, 0x7a, 0x65, 0x59, 0xcb, 0x0a, 0xea, 0x9d, - 0x84, 0xdc, 0x7c, 0x7d, 0x3c, 0xd0, 0xa2, 0x35, 0x66, 0xaa, 0x0b, 0x68, - 0xfc, 0x98, 0x27, 0xef, 0x57, 0xbc, 0x69, 0xb1, 0x06, 0xa2, 0x42, 0x91, - 0xdd, 0x20, 0x4f, 0x2c, 0x04, 0x86, 0xa6, 0x46, 0x6a, 0xe7, 0x54, 0x71, - 0x4a, 0x06, 0xb8, 0x9f, 0xfc, 0x4e, 0x67, 0x72, 0xc0, 0xe3, 0x76, 0xd1, - 0xb4, 0x29, 0x67, 0xe6, 0xe1, 0xac, 0xe5, 0x84, 0x58, 0xf4, 0xd2, 0x9c, - 0xf7, 0x54, 0x46, 0x49, 0xc7, 0x15, 0x8a, 0xa0, 0x6e, 0x63, 0x2d, 0x4a, - 0xc8, 0x53, 0xc5, 0x60, 0x56, 0x74, 0xf9, 0x35, 0xf6, 0xfb, 0x6f, 0xd7, - 0x1b, 0x4f, 0xb3, 0x15, 0x2d, 0x92, 0x17, 0x32, 0xb8, 0x95, 0xcd, 0x57, - 0xa1, 0x69, 0xfc, 0x12, 0xec, 0x01, 0xb8, 0xe9, 0xc3, 0xd4, 0x0f, 0x8e, - 0x3f, 0xf2, 0x3f, 0xab, 0xd3, 0x87, 0x62, 0x69, 0x5e, 0x57, 0x00, 0x40, - 0x47, 0xba, 0x37, 0xfe, 0x71, 0x80, 0xf9, 0xc0, 0x97, 0x47, 0xf8, 0xbc, - 0xd9, 0x8b, 0x0a, 0x57, 0x6a, 0xb2, 0x5b, 0xf9, 0x2e, 0x2e, 0x6f, 0xfe, - 0x27, 0xfd, 0xcc, 0x61, 0x72, 0x72, 0xc7, 0x8b, 0x74, 0xf8, 0xcd, 0x55, - 0xa5, 0x86, 0x4c, 0x33, 0xe7, 0x7a, 0xab, 0x03, 0xf1, 0xf1, 0x1e, 0x4b, - 0xf6, 0x43, 0x90, 0x6f, 0x92, 0x67, 0x67, 0xf7, 0x21, 0x10, 0x2c, 0xbf, - 0x59, 0x3a, 0xae, 0xce, 0x48, 0x0f, 0x1c, 0xf5, 0x48, 0x29, 0x27, 0x81, - 0xc6, 0xf3, 0x3f, 0xef, 0xc6, 0x72, 0xa3, 0x99, 0x33, 0xd8, 0x4c, 0x24, - 0x88, 0xf1, 0x29, 0xd8, 0x4f, 0xaf, 0xe4, 0x80, 0x82, 0xa8, 0xfe, 0x20, - 0x98, 0x43, 0xb7, 0xb4, 0x42, 0xf0, 0xd7, 0x2e, 0x8b, 0xce, 0xc4, 0x33, - 0x12, 0x80, 0xbb, 0x4e, 0xde, 0x45, 0x8d, 0xd4, 0xe7, 0x09, 0x34, 0x58, - 0x92, 0x93, 0xa0, 0x8d, 0x24, 0x84, 0x8b, 0xf0, 0xbd, 0x6b, 0x56, 0xac, - 0xdc, 0x54, 0xfe, 0x00, 0x3d, 0x73, 0xf8, 0x24, 0xca, 0xad, 0xc0, 0x06, - 0x63, 0xf7, 0xed, 0x33, 0xb6, 0xe1, 0xb8, 0xc8, 0xc1, 0xde, 0xb0, 0x2d, - 0x4e, 0xdc, 0xde, 0xe4, 0xb2, 0x4a, 0xa8, 0x99, 0xcc, 0x49, 0x7a, 0x16, - 0xca, 0xf5, 0x79, 0x2e, 0xa9, 0x51, 0xdd, 0x03, 0x22, 0xb2, 0x25, 0x3b, - 0x85, 0x08, 0x8c, 0x3d, 0xc9, 0x2e, 0x9c, 0x0e, 0x45, 0xc5, 0xd5, 0x2b, - 0x0e, 0xdc, 0x7d, 0x2c, 0xbd, 0x35, 0x34, 0x04, 0xb0, 0x1c, 0x32, 0x34, - 0xd0, 0xa7, 0xb4, 0xeb, 0x1a, 0xa6, 0x27, 0xfd, 0xbc, 0x98, 0x18, 0x7d, - 0xcb, 0xab, 0xea, 0x1e, 0x15, 0x16, 0xf2, 0x46, 0xd9, 0x6f, 0xd8, 0x3a, - 0x08, 0xce, 0xa2, 0x05, 0xd3, 0xa7, 0xdd, 0xaf, 0x9e, 0x04, 0x66, 0x7f, - 0xef, 0x67, 0xe1, 0x2b, 0x0a, 0x00, 0x60, 0x8d, 0x4c, 0x71, 0xa3, 0x3c, - 0x7e, 0xe3, 0xf4, 0x8f, 0x75, 0x20, 0x54, 0xe0, 0x2e, 0x5a, 0x2c, 0x25, - 0x8d, 0x92, 0xef, 0x89, 0x5e, 0xbf, 0xd5, 0xfe, 0x1a, 0x99, 0x92, 0x02, - 0x53, 0x3a, 0xd2, 0xfc, 0x95, 0x47, 0xc7, 0x0c, 0x25, 0x9e, 0x6b, 0x59, - 0x7c, 0x03, 0xb4, 0xc5, 0x43, 0x53, 0xd0, 0x51, 0x7f, 0x0a, 0x0d, 0x9c, - 0x50, 0x95, 0xe5, 0xd6, 0xa3, 0xf4, 0x52, 0x96, 0x64, 0xa6, 0xfd, 0x1e, - 0xf1, 0x34, 0x4f, 0xeb, 0xf8, 0x50, 0x7e, 0x8f, 0xec, 0xc5, 0x12, 0x04, - 0x49, 0x1c, 0x12, 0xd7, 0x33, 0xe7, 0xd7, 0x84, 0x86, 0xca, 0xbe, 0xee, - 0xb2, 0x36, 0x4f, 0x09, 0xed, 0xe7, 0xd6, 0xa5, 0x84, 0x3e, 0x18, 0xa7, - 0x66, 0x8d, 0x4f, 0x5e, 0x4c, 0x3e, 0x16, 0x3f, 0x9b, 0x1f, 0x13, 0x0f, - 0xe1, 0x0e, 0x22, 0x8a, 0x5f, 0xf0, 0x78, 0x2e, 0xf4, 0xed, 0x73, 0xd5, - 0x1e, 0xa9, 0xbd, 0x3a, 0xa0, 0x85, 0x75, 0xac, 0xd8, 0x50, 0xb8, 0x9d, - 0xb4, 0x9f, 0xca, 0x7b, 0x73, 0x28, 0x80, 0x6d, 0x1b, 0x65, 0xd6, 0xf3, - 0x5a, 0xed, 0x71, 0x38, 0x8d, 0x0d, 0x3a, 0x6f, 0xa5, 0x6f, 0x0f, 0x4c, - 0x63, 0x74, 0xad, 0x06, 0x77, 0x42, 0xfc, 0x35, 0x3f, 0x7b, 0x20, 0x4f, - 0x5f, 0x18, 0xd3, 0xa3, 0x99, 0xee, 0x7a, 0x7d, 0x8f, 0xf7, 0xea, 0x21, - 0x3c, 0x17, 0xfa, 0x4d, 0xbb, 0x4c, 0x34, 0x60, 0x45, 0x87, 0x07, 0x5c, - 0x92, 0x99, 0x87, 0xbb, 0x42, 0xab, 0x2d, 0x77, 0x2c, 0xe0, 0xb3, 0xbb, - 0xdd, 0x65, 0xb3, 0x00, 0x5f, 0x80, 0xb5, 0x49, 0x8e, 0x09, 0x01, 0x2d, - 0x81, 0x13, 0x86, 0x63, 0x44, 0x76, 0x16, 0x9a, 0x41, 0xb7, 0x93, 0xa7, - 0xa0, 0x88, 0x18, 0x2e, 0x2c, 0x08, 0x80, 0x4e, 0x31, 0x1a, 0xe8, 0xa8, - 0x70, 0x30, 0x33, 0x36, 0x94, 0xae, 0xed, 0x8e, 0x66, 0x12, 0x0e, 0x31, - 0x25, 0x30, 0xe0, 0x84, 0x77, 0xff, 0xa9, 0x37, 0xc4, 0xa2, 0x99, 0xab, - 0x6d, 0x4f, 0xc5, 0x34, 0x5e, 0x1d, 0x14, 0x6b, 0x63, 0x50, 0xbe, 0x48, - 0x5c, 0xba, 0x45, 0x38, 0xb6, 0x1f, 0x1e, 0xcd, 0x2e, 0xfd, 0xaf, 0x61, - 0x36, 0x7b, 0xbe, 0x60, 0x13, 0x08, 0xd5, 0x74, 0x62, 0x0a, 0xb7, 0x01, - 0x14, 0xeb, 0x69, 0x5f, 0xfe, 0xc5, 0x80, 0x73, 0xa6, 0x11, 0xd4, 0x65, - 0xe7, 0xbe, 0x72, 0x4a, 0x13, 0x33, 0xdd, 0x11, 0xca, 0x4d, 0x2a, 0xa1, - 0x37, 0x0a, 0x8e, 0xd6, 0xc2, 0x93, 0x22, 0x00, 0xdc, 0x54, 0x9b, 0xb7, - 0xa3, 0x38, 0xb3, 0x90, 0x9c, 0x53, 0x46, 0x41, 0x1d, 0xde, 0x1f, 0x0b, - 0xa1, 0x42, 0x84, 0xbd, 0xae, 0x3b, 0x3a, 0x15, 0x2f, 0x39, 0xf6, 0x6d, - 0x13, 0x8a, 0x79, 0xd1, 0xa5, 0xd4, 0xeb, 0xc9, 0x42, 0xa9, 0x6f, 0xe5, - 0x8b, 0x66, 0x13, 0x1a, 0x86, 0x1a, 0x7b, 0xb5, 0x04, 0x69, 0x13, 0xc9, - 0x35, 0xc2, 0x45, 0xa4, 0x3f, 0x4f, 0x8c, 0x05, 0x02, 0xe6, 0xbe, 0xd2, - 0x96, 0xe8, 0xe0, 0x40, 0x3e, 0xb4, 0x75, 0x0a, 0x30, 0x3d, 0xe0, 0x2a, - 0x57, 0x23, 0xe5, 0x04, 0x4c, 0xe6, 0x77, 0xb3, 0x0d, 0x4a, 0xa1, 0x44, - 0x8a, 0xf7, 0x7d, 0x3d, 0x76, 0xfd, 0x42, 0xef, 0xb9, 0xc0, 0x0b, 0x42, - 0xb1, 0xd2, 0xc4, 0x3d, 0xae, 0x4b, 0xa7, 0x83, 0x27, 0x89, 0xee, 0xa1, - 0x3c, 0x6f, 0x38, 0xd6, 0x81, 0x17, 0x77, 0xa9, 0x4b, 0xb1, 0x83, 0x66, - 0x87, 0x54, 0x95, 0x66, 0x23, 0x0c, 0x83, 0x61, 0x76, 0xa9, 0xb5, 0x73, - 0x0a, 0x2c, 0xcc, 0x9f, 0xc2, 0xee, 0x85, 0x46, 0xb9, 0x23, 0xe7, 0x75, - 0xab, 0xe4, 0xe5, 0x17, 0xe2, 0xd9, 0x58, 0x16, 0x56, 0x8f, 0x62, 0xac, - 0xa2, 0x71, 0xe9, 0x35, 0x62, 0x15, 0x1d, 0x76, 0x82, 0xc6, 0xed, 0x42, - 0x75, 0xa2, 0xa7, 0x99, 0x05, 0xf7, 0xdb, 0xd3, 0x20, 0x71, 0x1c, 0x3a, - 0xe3, 0x6a, 0x02, 0xf9, 0xe6, 0x69, 0x47, 0xd7, 0x70, 0xe6, 0x27, 0x5a, - 0xe6, 0xaf, 0x5a, 0x11, 0xe9, 0xcf, 0x70, 0xe0, 0xa4, 0x05, 0xf9, 0xf2, - 0x4d, 0x9c, 0x15, 0xa7, 0xed, 0x5a, 0x9e, 0x4f, 0x71, 0x75, 0x4a, 0xf8, - 0x12, 0xdd, 0x5b, 0x2d, 0xcd, 0x92, 0xd5, 0xb7, 0x70, 0xce, 0xa9, 0xb1, - 0xf5, 0x49, 0x43, 0x94, 0x23, 0x7a, 0xea, 0xdb, 0xe9, 0xa0, 0xdd, 0x74, - 0xc7, 0x26, 0x76, 0xc8, 0x38, 0x4b, 0x3c, 0x83, 0x60, 0x94, 0xcf, 0x04, - 0xb5, 0x2b, 0xc7, 0x7f, 0x8f, 0xbc, 0x6e, 0xcc, 0x09, 0x7c, 0x64, 0xac, - 0x3e, 0x58, 0xd3, 0x80, 0xa8, 0xa0, 0x46, 0x33, 0x45, 0x9d, 0x20, 0xcd, - 0x10, 0xf2, 0x43, 0x5d, 0xe5, 0x2f, 0xba, 0x5d, 0xc2, 0x70, 0x06, 0x62, - 0xf7, 0x80, 0x8b, 0xf7, 0x39, 0xd5, 0x61, 0x80, 0x7c, 0x31, 0xff, 0xe2, - 0xac, 0x39, 0x82, 0xdc, 0x7b, 0x79, 0x78, 0x9a, 0x64, 0xb5, 0x5d, 0xf1, - 0x75, 0x38, 0x12, 0xf1, 0xe5, 0x5e, 0xe6, 0x52, 0xff, 0xea, 0x08, 0x06, - 0xc4, 0x25, 0x31, 0x92, 0x7e, 0x9e, 0x89, 0xb5, 0x33, 0xed, 0x98, 0xf3, - 0x7b, 0x75, 0x99, 0x15, 0x1e, 0xf4, 0x97, 0xa1, 0x8c, 0xea, 0xc2, 0x2f, - 0xf2, 0xdf, 0xf8, 0xa3, 0xc9, 0xbf, 0xea, 0xa9, 0x36, 0x0a, 0x51, 0xf8, - 0x92, 0x35, 0x90, 0x2f, 0x2b, 0xf1, 0xd5, 0xad, 0x43, 0xc4, 0x40, 0x4d, - 0x56, 0xdb, 0xd6, 0xac, 0xfe, 0x6c, 0x43, 0x9f, 0x1e, 0x54, 0x5e, 0x42, - 0x50, 0xa1, 0xf5, 0x35, 0x51, 0xf4, 0x5d, 0xc6, 0x0c, 0x3e, 0x1d, 0x24, - 0x9c, 0x06, 0xce, 0xd1, 0x88, 0xec, 0x02, 0xfb, 0x50, 0x0f, 0x65, 0xab, - 0x93, 0x3f, 0x94, 0x11, 0x7e, 0x82, 0x60, 0xda, 0xde, 0x41, 0xd7, 0x80, - 0x07, 0xe5, 0x65, 0x29, 0x69, 0x09, 0xe8, 0xf6, 0x15, 0xe1, 0x0a, 0x79, - 0x91, 0xd1, 0x4f, 0x9d, 0x3f, 0xef, 0x4d, 0x63, 0x58, 0x39, 0xd5, 0x7a, - 0xe4, 0x12, 0xbd, 0x8c, 0x34, 0xda, 0xc3, 0x72, 0x39, 0xb7, 0xbd, 0xfa, - 0x5b, 0xa0, 0xc5, 0x17, 0x73, 0xab, 0x9f, 0x49, 0x35, 0x0e, 0xbb, 0x74, - 0x18, 0xfc, 0x40, 0x98, 0xac, 0x4a, 0x06, 0x70, 0x16, 0xab, 0x23, 0x8a, - 0x02, 0x5d, 0x0d, 0x43, 0x64, 0x0d, 0x8c, 0x69, 0x39, 0x04, 0xb5, 0x8c, - 0x41, 0x27, 0x3d, 0xd3, 0xfb, 0x49, 0x97, 0x91, 0x21, 0x6c, 0xc7, 0x53, - 0xa3, 0xf1, 0xb4, 0x26, 0x28, 0x1c, 0x3f, 0xc2, 0xdb, 0x35, 0x19, 0x50, - 0xa5, 0x86, 0x43, 0xae, 0x45, 0xde, 0x27, 0xc3, 0x9d, 0x6c, 0xf3, 0x95, - 0x63, 0x89, 0x7c, 0xae, 0xe9, 0x29, 0x0d, 0xfb, 0x9c, 0xe4, 0xad, 0xca, - 0x76, 0xdb, 0xf2, 0x02, 0xb5, 0xea, 0x17, 0x76, 0xa8, 0x08, 0x54, 0xfb, - 0x7d, 0xd8, 0x6f, 0x22, 0x2a, 0xc8, 0x38, 0x40, 0x7e, 0xdb, 0xe8, 0x5c, - 0x02, 0x98, 0xb1, 0x9c, 0x25, 0x22, 0xdd, 0xb3, 0xe5, 0x1f, 0x8f, 0xb3, - 0xc7, 0xef, 0xd8, 0x53, 0xcf, 0xdf, 0x28, 0x42, 0xb1, 0xd4, 0x23, 0x9c, - 0x14, 0x2f, 0xbf, 0x41, 0x96, 0xe4, 0xb0, 0xee, 0x2c, 0xbb, 0x24, 0xff, - 0x4d, 0xfd, 0xab, 0xa5, 0xad, 0xbb, 0x87, 0x83, 0xc2, 0x7d, 0x9a, 0xe0, - 0xd0, 0x8b, 0x39, 0x33, 0x91, 0xe6, 0x5d, 0x36, 0x81, 0x68, 0x25, 0x61, - 0xa0, 0x46, 0x01, 0xdb, 0x19, 0xda, 0x44, 0xbc, 0x25, 0x65, 0xe2, 0xf1, - 0x8b, 0xbb, 0xc4, 0xd2, 0xb0, 0xca, 0x6c, 0x89, 0xac, 0x14, 0x5d, 0x1a, - 0x64, 0x15, 0xd8, 0xfc, 0x72, 0x91, 0x19, 0xcf, 0x2d, 0x13, 0xea, 0xad, - 0x09, 0xae, 0xb4, 0x71, 0x51, 0x67, 0x50, 0x85, 0x5e, 0x2a, 0x00, 0x4b, - 0x0c, 0xfc, 0x1f, 0xb8, 0xe9, 0xc2, 0x79, 0x18, 0x1e, 0xc2, 0x84, 0x25, - 0x43, 0xca, 0x10, 0xa0, 0x50, 0xae, 0x61, 0x1c, 0xfe, 0xbe, 0x8b, 0xe9, - 0x17, 0x12, 0xae, 0x25, 0xd6, 0xb0, 0x74, 0xf3, 0x99, 0xfd, 0x06, 0x26, - 0x8e, 0x9a, 0x9f, 0xb1, 0x06, 0x4e, 0x2d, 0x9e, 0x03, 0xed, 0xb5, 0x7c, - 0x2a, 0x7e, 0xc5, 0x2f, 0x76, 0x50, 0x2c, 0xca, 0x12, 0x08, 0x22, 0x94, - 0x8d, 0x0d, 0xa4, 0x46, 0xfe, 0x30, 0x65, 0xec, 0x49, 0x05, 0xda, 0x69, - 0x0c, 0xd6, 0x38, 0xc5, 0x0d, 0x0a, 0x45, 0x00, 0x37, 0x68, 0xb1, 0x0f, - 0x2e, 0x95, 0x46, 0x72, 0xba, 0x95, 0x1a, 0xd4, 0xed, 0x6b, 0x1b, 0x00, - 0x43, 0x29, 0x91, 0x28, 0x6b, 0x38, 0x40, 0xd9, 0x95, 0x17, 0x64, 0xd7, - 0xad, 0xf7, 0xc9, 0x57, 0x4d, 0x76, 0x20, 0xfa, 0xa3, 0xf5, 0x69, 0x2f, - 0x42, 0xea, 0x13, 0x29, 0xaf, 0xf7, 0x6f, 0x9e, 0x6c, 0xa0, 0x83, 0xb0, - 0xff, 0x5a, 0x0b, 0xed, 0x27, 0xde, 0x15, 0x56, 0x40, 0x3c, 0xe3, 0x5c, - 0xb0, 0x14, 0x9e, 0xe1, 0x32, 0xd1, 0x13, 0xfe, 0x0e, 0xce, 0x0f, 0x63, - 0x40, 0xdb, 0x5d, 0xe0, 0x77, 0xa8, 0xdc, 0x20, 0xf3, 0xff, 0x5d, 0x3c, - 0x63, 0x87, 0xee, 0x0a, 0xec, 0x6b, 0x71, 0xc6, 0x49, 0x9a, 0x15, 0x58, - 0x47, 0x42, 0x2f, 0x9e, 0x94, 0xd6, 0x57, 0x41, 0xb5, 0x03, 0x16, 0xc9, - 0xfd, 0x1c, 0x4a, 0x2f, 0xf6, 0x96, 0x34, 0xc2, 0x7e, 0xc4, 0x28, 0xba, - 0xeb, 0x46, 0xe8, 0x2f, 0xb9, 0xa8, 0xe1, 0x42, 0x2e, 0x5a, 0xf0, 0x97, - 0x13, 0x82, 0x7b, 0x94, 0x34, 0x06, 0xcf, 0x03, 0xfe, 0x4f, 0x73, 0xc2, - 0x52, 0x1f, 0xd5, 0x03, 0xe4, 0x0d, 0xfa, 0x0d, 0xd3, 0x38, 0xb7, 0x10, - 0x47, 0x91, 0x72, 0xda, 0xd6, 0x9e, 0x2c, 0xce, 0xa0, 0x5f, 0x33, 0x42, - 0xeb, 0x32, 0x20, 0xf6, 0x88, 0xd1, 0xa9, 0x2e, 0x84, 0xcf, 0x7f, 0xa8, - 0x7b, 0x62, 0xe8, 0x2d, 0xf5, 0x3f, 0x3b, 0xe7, 0xc0, 0x89, 0xf4, 0x8d, - 0xd3, 0xdf, 0x5c, 0x11, 0xc1, 0x06, 0x1c, 0x4a, 0x59, 0xa2, 0x36, 0x49, - 0x95, 0xd3, 0xc7, 0x4b, 0xff, 0xa7, 0xbf, 0x95, 0x49, 0x39, 0x76, 0x55, - 0xe6, 0x50, 0xab, 0xea, 0x41, 0xd2, 0x5c, 0xb7, 0x8f, 0xe7, 0x68, 0xb0, - 0xfe, 0x41, 0x9d, 0x04, 0x76, 0x35, 0xa9, 0xf5, 0x73, 0x88, 0x5d, 0xf3, - 0xad, 0x59, 0x92, 0x82, 0x10, 0xe8, 0xf5, 0xca, 0x56, 0x94, 0x87, 0xaf, - 0x49, 0x97, 0x86, 0x4e, 0x58, 0xa1, 0x7c, 0xdd, 0x9c, 0xe1, 0xd7, 0xe0, - 0xa7, 0x0b, 0xb9, 0xb1, 0xe1, 0xc1, 0xd9, 0xdc, 0xe2, 0x19, 0xef, 0x40, - 0xab, 0xaa, 0x38, 0x7c, 0x76, 0x9b, 0x14, 0xab, 0x32, 0xb1, 0xcc, 0x59, - 0xd1, 0x26, 0x13, 0x32, 0x5f, 0x7b, 0xe8, 0xc4, 0xd8, 0xba, 0x83, 0xbe, - 0x7d, 0x13, 0xe5, 0xb9, 0x60, 0x9c, 0xc0, 0xf1, 0xec, 0x22, 0x16, 0x8f, - 0xb8, 0x1d, 0xe0, 0x8a, 0x6b, 0xa1, 0x07, 0x0e, 0xcd, 0x15, 0xfd, 0xfd, - 0x47, 0x98, 0x81, 0x18, 0x6a, 0x3c, 0xdb, 0x6e, 0xee, 0x33, 0x93, 0x65, - 0xc6, 0x81, 0xb6, 0x56, 0xa8, 0x16, 0x70, 0x07, 0xbf, 0x1e, 0x3f, 0xd0, - 0x1f, 0x84, 0xe7, 0x78, 0x7a, 0x43, 0xf3, 0xea, 0x82, 0x5c, 0x07, 0x67, - 0xe7, 0x3f, 0x26, 0x71, 0xa5, 0xce, 0xb1, 0x54, 0xd3, 0xc3, 0xf9, 0x31, - 0x10, 0xdf, 0xd1, 0x7b, 0x90, 0x97, 0xec, 0xfd, 0xa6, 0x64, 0xfa, 0x7b, - 0xc6, 0xf5, 0x4e, 0xa0, 0x33, 0x1c, 0x54, 0xd8, 0xef, 0x87, 0x57, 0xbb, - 0x56, 0xa0, 0x98, 0x32, 0x31, 0x03, 0xfb, 0xe7, 0xdf, 0x17, 0xbd, 0xa4, - 0xd4, 0x38, 0x0c, 0xf4, 0x87, 0x57, 0x85, 0x58, 0xd4, 0x2c, 0x56, 0xef, - 0xb5, 0x69, 0xcf, 0x9e, 0x66, 0xa0, 0xaf, 0xd4, 0x3b, 0x4c, 0x63, 0x10, - 0xa0, 0x73, 0x5b, 0xba, 0xab, 0x07, 0xdb, 0xb1, 0x02, 0x80, 0x48, 0x80, - 0xd2, 0x66, 0x55, 0x7f, 0x34, 0x79, 0x57, 0xac, 0x7e, 0xed, 0xf7, 0xfe, - 0x3c, 0xd8, 0x12, 0x5a, 0x50, 0xfd, 0xff, 0xec, 0x48, 0xeb, 0xc7, 0xae, - 0x3b, 0x41, 0x00, 0x9d, 0x7b, 0xb8, 0x0e, 0x0b, 0x4b, 0x33, 0x42, 0x07, - 0xa8, 0x38, 0x2d, 0x23, 0xf0, 0x0e, 0x4f, 0x6d, 0xd5, 0x86, 0xcf, 0x80, - 0xd4, 0x16, 0xd5, 0x51, 0xa5, 0x75, 0x50, 0x37, 0x1a, 0x57, 0xac, 0x79, - 0x1d, 0xd9, 0xed, 0x36, 0x44, 0xe3, 0x95, 0xdf, 0xd4, 0x7f, 0xe6, 0x95, - 0x09, 0x79, 0x06, 0xca, 0x9b, 0x48, 0xe4, 0x50, 0x7e, 0xfa, 0xb8, 0xf6, - 0xa2, 0x6d, 0x4a, 0x44, 0x66, 0x52, 0x7b, 0xc8, 0x14, 0xca, 0xbf, 0xb0, - 0x06, 0x48, 0x5f, 0x3d, 0xa2, 0xc1, 0x4d, 0x9b, 0xed, 0x15, 0xbc, 0x74, - 0x63, 0x64, 0x53, 0x32, 0xb7, 0x78, 0xbb, 0x2a, 0x0c, 0xa4, 0xc2, 0x1d, - 0x41, 0x20, 0xbe, 0xf3, 0xa1, 0x28, 0xf4, 0x04, 0xd9, 0x9d, 0x40, 0x90, - 0xa8, 0xac, 0xb8, 0xf9, 0x3c, 0x8b, 0x69, 0xc1, 0x2a, 0x13, 0x1d, 0xd6, - 0x2e, 0x38, 0x9d, 0x0e, 0x04, 0x54, 0x1d, 0x4b, 0xf2, 0x62, 0x81, 0x0a, - 0xda, 0x44, 0x3e, 0x45, 0x25, 0x27, 0x4e, 0x83, 0xf4, 0xab, 0x66, 0xe9, - 0x48, 0x3b, 0xcb, 0x4f, 0x03, 0x36, 0x34, 0x59, 0xca, 0xdc, 0x24, 0xcc, - 0xf6, 0x09, 0x07, 0xb7, 0x7c, 0xcf, 0x27, 0xdb, 0x46, 0xba, 0x54, 0x26, - 0x81, 0x0f, 0x76, 0x45, 0x73, 0x3a, 0x7e, 0xcd, 0x28, 0xb8, 0x0b, 0x75, - 0x8b, 0x19, 0xb2, 0x5a, 0xa5, 0xcc, 0x74, 0xb4, 0x4b, 0xa8, 0x77, 0x77, - 0x10, 0x94, 0x10, 0x1e, 0x8a, 0xc9, 0x54, 0xfd, 0x50, 0xa7, 0x8a, 0xcd, - 0xa4, 0x87, 0x4c, 0x6b, 0x4c, 0x2b, 0x53, 0x86, 0x13, 0x3d, 0x66, 0xe2, - 0x4e, 0x60, 0x54, 0x95, 0x29, 0x62, 0x07, 0x3b, 0x74, 0x79, 0x9f, 0x98, - 0x86, 0x6c, 0x93, 0xae, 0xfc, 0xb1, 0xe7, 0x1a, 0xba, 0xae, 0x2a, 0xb0, - 0xe4, 0x9b, 0x64, 0x72, 0xb5, 0xcb, 0xf3, 0x8b, 0xf4, 0x9d, 0xeb, 0x67, - 0x55, 0xe3, 0x23, 0xd0, 0x28, 0xf7, 0x07, 0x34, 0x2a, 0x21, 0x07, 0x3d, - 0x6c, 0x0e, 0x81, 0x84, 0xcc, 0x10, 0xd8, 0xa4, 0x70, 0x4c, 0x98, 0x2d, - 0x19, 0x79, 0x75, 0x17, 0x6b, 0xdd, 0x2b, 0x26, 0x6a, 0x44, 0x14, 0x05, - 0x72, 0x0b, 0x14, 0x7e, 0xfa, 0xb5, 0x94, 0x10, 0xf9, 0x3f, 0x74, 0xf4, - 0x3d, 0x82, 0x3a, 0x47, 0x5d, 0x02, 0x80, 0x01, 0x3a, 0x5e, 0xca, 0x70, - 0x37, 0x9f, 0x84, 0x0d, 0x73, 0x30, 0x81, 0x2a, 0x6e, 0xfa, 0x55, 0x56, - 0x27, 0xd1, 0x7e, 0xbf, 0x36, 0x1f, 0x07, 0x82, 0xad, 0x4e, 0x5c, 0xb7, - 0xb2, 0x82, 0xca, 0x42, 0xe7, 0x03, 0x07, 0xde, 0xb9, 0x44, 0x79, 0x7a, - 0xc7, 0x5c, 0xd7, 0xae, 0x7f, 0xcd, 0xf2, 0x2a, 0xd3, 0x18, 0x5c, 0xf9, - 0x0e, 0xd1, 0x6b, 0xe1, 0x02, 0x23, 0xe7, 0xea, 0x38, 0x1f, 0x3e, 0xbc, - 0x20, 0x06, 0x27, 0xb4, 0x8c, 0xc2, 0xe9, 0xb9, 0x8a, 0x5b, 0x34, 0x42, - 0xd5, 0x07, 0x81, 0x7d, 0x74, 0xaa, 0x38, 0x1b, 0xfb, 0x2a, 0x62, 0xa6, - 0x41, 0x67, 0xd2, 0x12, 0x7e, 0x12, 0x5c, 0x36, 0x87, 0x16, 0x3f, 0x3e, - 0xa6, 0xd0, 0xff, 0x9c, 0x2b, 0x94, 0x55, 0x78, 0xda, 0xaf, 0x5e, 0xf1, - 0xf2, 0xea, 0x3b, 0xa1, 0x09, 0x86, 0xeb, 0x09, 0x09, 0x78, 0x79, 0x87, - 0xcd, 0x8f, 0xcf, 0xa0, 0x50, 0x52, 0xd5, 0xee, 0xaa, 0x11, 0x48, 0x18, - 0x0c, 0x26, 0xa5, 0xe5, 0xf9, 0x95, 0x9e, 0xa3, 0x81, 0xbe, 0x28, 0x15, - 0x1e, 0xf0, 0x13, 0xf0, 0x4b, 0x10, 0xbc, 0x73, 0xa8, 0x9f, 0x5c, 0xc3, - 0xa9, 0xc6, 0xf6, 0x3a, 0x51, 0x86, 0x05, 0xa0, 0x25, 0x53, 0xdd, 0xaa, - 0x83, 0xff, 0x6c, 0xde, 0xdd, 0x80, 0x14, 0x1b, 0xe3, 0x58, 0xed, 0xf6, - 0x54, 0x7d, 0xcf, 0x24, 0xfc, 0xa5, 0xf1, 0x16, 0x47, 0xa6, 0x55, 0x10, - 0x3b, 0x85, 0xaa, 0x61, 0x3c, 0xb3, 0xb7, 0x40, 0x99, 0xd4, 0x8b, 0x91, - 0x11, 0xd1, 0xa0, 0xfd, 0xfe, 0x09, 0xcd, 0x33, 0x1e, 0x0b, 0x90, 0xdc, - 0x78, 0xa5, 0x4b, 0x1e, 0x36, 0xaf, 0x39, 0x2d, 0x2c, 0x88, 0x4d, 0x44, - 0x18, 0x52, 0x72, 0xfc, 0x7b, 0x30, 0x18, 0x1b, 0x52, 0x5b, 0x8f, 0x5b, - 0xfe, 0xe9, 0x84, 0xcd, 0xa5, 0x6e, 0x23, 0xc0, 0x0a, 0xa3, 0x02, 0x91, - 0xc0, 0x57, 0x90, 0xa8, 0x81, 0xe3, 0x80, 0xaf, 0x01, 0x41, 0xa4, 0x99, - 0x44, 0x43, 0x0e, 0x49, 0xb3, 0x75, 0xc5, 0xb0, 0xdc, 0xe2, 0x0d, 0x6e, - 0x66, 0x8a, 0x0e, 0x84, 0xa3, 0x64, 0xf0, 0x97, 0x42, 0x85, 0x26, 0x46, - 0x0e, 0x8e, 0x87, 0x39, 0xb9, 0xd7, 0x54, 0x92, 0x93, 0xf3, 0xb8, 0xf2, - 0x59, 0xdc, 0xc8, 0x91, 0x02, 0x11, 0xab, 0xf1, 0x8e, 0x9d, 0xf6, 0x77, - 0xa2, 0xa0, 0xbe, 0xb1, 0xdd, 0x05, 0x79, 0x42, 0x8a, 0x16, 0x47, 0xef, - 0x21, 0xcc, 0x42, 0xec, 0xb8, 0x15, 0xdb, 0xc6, 0xfc, 0x1a, 0xb0, 0x19, - 0x81, 0x39, 0xac, 0xd0, 0xe5, 0x45, 0x62, 0xa2, 0xdf, 0xc4, 0x01, 0x2a, - 0x37, 0xf2, 0xa7, 0xd6, 0x39, 0xb1, 0x67, 0xc7, 0x6d, 0x3e, 0x86, 0xda, - 0xea, 0x5d, 0xb8, 0xfb, 0xa1, 0x34, 0xff, 0xe5, 0x5d, 0x7e, 0xea, 0x7c, - 0xd5, 0x60, 0xfc, 0x4c, 0xa8, 0xf6, 0xd0, 0xc4, 0x81, 0x2d, 0xa3, 0x1c, - 0x72, 0xba, 0x00, 0xe4, 0xc2, 0x78, 0xa2, 0xd6, 0x18, 0xf1, 0x03, 0x93, - 0xf4, 0xac, 0xe6, 0x31, 0x2b, 0x44, 0x60, 0xe9, 0x15, 0x5b, 0x8a, 0xad, - 0x44, 0xb9, 0xfe, 0xf3, 0x92, 0x94, 0x1e, 0x45, 0x5e, 0x59, 0xc6, 0x46, - 0x3d, 0x94, 0xd5, 0x1f, 0x3a, 0xf5, 0xc5, 0x2d, 0x3b, 0x59, 0x60, 0xfd, - 0xe3, 0x8e, 0xa6, 0x21, 0xa6, 0xa9, 0x1c, 0x3e, 0xdb, 0x5a, 0xc0, 0x66, - 0x05, 0xfc, 0x99, 0x75, 0x62, 0xee, 0x08, 0xaf, 0x9c, 0x3a, 0xff, 0xe1, - 0x6e, 0x0c, 0x57, 0xb5, 0xdf, 0x76, 0xa5, 0x32, 0xc1, 0x81, 0x46, 0x48, - 0x96, 0x24, 0x39, 0x53, 0xb9, 0x2b, 0x89, 0xea, 0xc7, 0x8f, 0xcd, 0x08, - 0x15, 0xcf, 0xbf, 0x56, 0x99, 0x98, 0xfc, 0x59, 0xd8, 0xd5, 0xab, 0xf8, - 0xa3, 0x17, 0x5b, 0x97, 0xaf, 0x03, 0x42, 0x8f, 0x1d, 0x3b, 0x20, 0x1b, - 0xa0, 0x21, 0xf8, 0xe4, 0xf2, 0x88, 0x19, 0x25, 0x84, 0xf9, 0x6e, 0xe0, - 0x46, 0x3a, 0x55, 0x80, 0xe6, 0x43, 0x4a, 0xdd, 0x39, 0xac, 0x42, 0x9d, - 0x9e, 0xb9, 0x43, 0x52, 0xa5, 0xee, 0x98, 0x40, 0xa6, 0xe1, 0xe1, 0x9a, - 0x37, 0x47, 0x83, 0x6b, 0x0f, 0xf8, 0x2a, 0x2a, 0x06, 0x66, 0x40, 0xc5, - 0xb5, 0x17, 0xde, 0xcb, 0x94, 0x65, 0xe7, 0x44, 0x4d, 0x1e, 0xff, 0x94, - 0x96, 0xe6, 0x9d, 0xe9, 0x79, 0x6e, 0xb6, 0x2d, 0x85, 0xca, 0xa5, 0x3e, - 0x8e, 0x1f, 0x77, 0x9d, 0x45, 0x58, 0xda, 0xca, 0x89, 0x86, 0x37, 0xa8, - 0xdc, 0x2c, 0xfd, 0xa0, 0x45, 0x0d, 0xef, 0x2a, 0x85, 0xea, 0x90, 0xfb, - 0x4a, 0x1b, 0xa1, 0x78, 0xa2, 0x89, 0xfc, 0xe4, 0x84, 0x9a, 0x62, 0x8c, - 0xfa, 0x46, 0x20, 0x10, 0x29, 0x18, 0xbf, 0xb4, 0xed, 0x86, 0x7e, 0x75, - 0x0f, 0xcd, 0x6a, 0x73, 0x24, 0x0c, 0xe3, 0x59, 0x47, 0x27, 0x10, 0x92, - 0x56, 0x12, 0xf4, 0x4e, 0xc3, 0x83, 0xa2, 0x57, 0xcc, 0x61, 0x3a, 0x0a, - 0x29, 0x00, 0x94, 0xea, 0x05, 0x89, 0x3a, 0x9f, 0x70, 0x7e, 0xe1, 0xc0, - 0x7c, 0xaf, 0x0f, 0x74, 0xfd, 0x54, 0x8d, 0x59, 0xa9, 0xd3, 0xb9, 0x5e, - 0xf6, 0x2b, 0x72, 0x7d, 0x1c, 0xb7, 0x91, 0xf3, 0x61, 0x42, 0x4d, 0x76, - 0xc7, 0x03, 0x6b, 0x27, 0x2e, 0x1e, 0xe4, 0x24, 0x4b, 0xd3, 0x74, 0x1f, - 0xbd, 0x88, 0x7a, 0xc8, 0x5a, 0x2e, 0x01, 0xa3, 0x67, 0xb5, 0x44, 0x47, - 0xcf, 0xb0, 0x43, 0x6f, 0xc7, 0x5f, 0xec, 0x99, 0xa8, 0x14, 0x11, 0xcd, - 0x82, 0x45, 0xbf, 0x74, 0x40, 0x6f, 0x59, 0x15, 0x22, 0xa8, 0x77, 0x67, - 0x0e, 0xdc, 0x9e, 0x51, 0x23, 0xd5, 0xb0, 0x38, 0x37, 0x13, 0xae, 0x35, - 0xfa, 0x16, 0xe0, 0xf0, 0xe1, 0x5f, 0xe0, 0x74, 0x50, 0x40, 0xcb, 0x38, - 0x64, 0xe7, 0x13, 0xb3, 0x20, 0x46, 0x8f, 0x90, 0xf3, 0x22, 0x91, 0xc9, - 0x55, 0x7b, 0xf1, 0xa8, 0x5c, 0x9e, 0x80, 0xb7, 0x91, 0xb1, 0xf1, 0x05, - 0x0a, 0x21, 0xf3, 0xe7, 0x50, 0xb7, 0xfe, 0x73, 0xc2, 0x98, 0x59, 0xdf, - 0xbc, 0x6b, 0xed, 0xb3, 0xf0, 0x0d, 0x33, 0xca, 0xd7, 0x7b, 0x98, 0x31, - 0xbd, 0x11, 0xea, 0xe3, 0x27, 0xec, 0x82, 0xf3, 0x88, 0x43, 0x1e, 0x2d, - 0x0f, 0xc6, 0xec, 0x13, 0x1c, 0x4e, 0x1b, 0xb9, 0xa5, 0xbd, 0x37, 0xfe, - 0x2c, 0x33, 0x9b, 0x99, 0x68, 0xc7, 0xcb, 0xef, 0x61, 0x32, 0x9b, 0xa1, - 0x96, 0x8c, 0x0d, 0x8e, 0xd2, 0xb9, 0xb6, 0xeb, 0x90, 0x74, 0x60, 0x2a, - 0x35, 0x56, 0x45, 0x4a, 0x8c, 0x9e, 0xc9, 0x62, 0x0c, 0x47, 0xb9, 0xab, - 0xa6, 0x1e, 0xcb, 0x5c, 0x69, 0x38, 0x1b, 0x70, 0x3a, 0xfb, 0xc0, 0x69, - 0xb8, 0xe8, 0x89, 0x6b, 0x40, 0xbb, 0x6e, 0x18, 0x21, 0x47, 0x04, 0xd5, - 0x4d, 0xf7, 0x7c, 0x5d, 0x19, 0x11, 0xac, 0x8a, 0x41, 0xc0, 0xd9, 0x47, - 0x06, 0xd5, 0x9c, 0x74, 0x63, 0x1c, 0x72, 0x24, 0x0a, 0xc7, 0x39, 0x28, - 0xb4, 0xb1, 0xc3, 0x71, 0xa7, 0x31, 0x43, 0x2d, 0x91, 0xf9, 0xc2, 0x7b, - 0xca, 0x91, 0x5e, 0x55, 0x39, 0xed, 0xe9, 0x19, 0x55, 0x5c, 0xad, 0xce, - 0x73, 0x8e, 0x9e, 0xba, 0xfd, 0x86, 0xbe, 0x44, 0x0a, 0x58, 0xc8, 0x9a, - 0x79, 0x2a, 0xd1, 0x87, 0x76, 0xe9, 0xf3, 0x95, 0xa7, 0x4a, 0xe9, 0x0a, - 0xec, 0x36, 0xba, 0xb0, 0xa7, 0xf9, 0x37, 0x72, 0x16, 0x3a, 0x12, 0xce, - 0x6a, 0x6d, 0xed, 0xae, 0x20, 0x7b, 0xee, 0x13, 0x65, 0x68, 0x2b, 0x21, - 0x39, 0x5f, 0x2c, 0x68, 0x22, 0xbd, 0x60, 0x05, 0x68, 0x97, 0xe8, 0x95, - 0x62, 0xe4, 0xea, 0xc2, 0x8d, 0xb1, 0x5d, 0x60, 0x3c, 0x00, 0xae, 0x26, - 0xd8, 0x11, 0xa2, 0x77, 0x16, 0xe8, 0xa5, 0x8c, 0xcc, 0x0b, 0x78, 0xf2, - 0x34, 0x46, 0x1b, 0x92, 0x46, 0x1e, 0xda, 0xa9, 0x4d, 0xb0, 0xdc, 0x15, - 0x00, 0x3a, 0xdb, 0xba, 0x1d, 0x0a, 0xbb, 0xd0, 0xb4, 0x72, 0xd9, 0x44, - 0x2c, 0xf6, 0x74, 0x98, 0x2b, 0x5a, 0x98, 0x1b, 0x43, 0x66, 0xeb, 0x85, - 0xe7, 0x71, 0x4f, 0x14, 0xe6, 0x49, 0xa3, 0xcf, 0xbb, 0x33, 0x28, 0xed, - 0x44, 0xd1, 0xc5, 0x3b, 0x6e, 0x7d, 0x18, 0x92, 0x94, 0x8e, 0x71, 0x88, - 0x97, 0x36, 0xf9, 0x62, 0xfd, 0xd8, 0xa1, 0xdb, 0x98, 0xf5, 0x62, 0x9b, - 0x2b, 0x11, 0x74, 0xaa, 0xb1, 0x06, 0x8f, 0xa7, 0xdc, 0x0a, 0x1f, 0x38, - 0x55, 0x71, 0xc7, 0x04, 0x62, 0xf9, 0xbe, 0x56, 0x09, 0x0d, 0x0a, 0x95, - 0xe9, 0x84, 0xd8, 0xa5, 0xa7, 0x3e, 0x6b, 0xea, 0x3d, 0x1a, 0x7f, 0x7b, - 0xf3, 0x54, 0xf6, 0x2f, 0xc2, 0x13, 0x55, 0x63, 0x98, 0x96, 0xf5, 0x92, - 0x36, 0x78, 0xad, 0xd8, 0xf6, 0x91, 0x1b, 0x75, 0xd1, 0x86, 0x6a, 0x50, - 0x44, 0x65, 0x85, 0x9e, 0x1a, 0x5b, 0xb4, 0xa8, 0x6c, 0x96, 0xd7, 0x0e, - 0x58, 0x2f, 0x3a, 0x06, 0x86, 0x39, 0xd5, 0x28, 0xd3, 0x4f, 0x1a, 0x61, - 0x47, 0xc5, 0x80, 0xf6, 0xa1, 0x64, 0xf5, 0x8c, 0x04, 0x61, 0x08, 0x09, - 0xd0, 0x02, 0xf5, 0x55, 0x4a, 0x63, 0xc4, 0xfd, 0x7a, 0xf6, 0xe7, 0x3b, - 0xf2, 0xf5, 0x81, 0x22, 0xf3, 0x04, 0x4e, 0xa6, 0x09, 0x5d, 0xb3, 0x86, - 0x23, 0x50, 0xcb, 0xb3, 0x51, 0x9a, 0xf6, 0xe9, 0x6f, 0x11, 0xca, 0x5f, - 0xd4, 0x92, 0xc0, 0x3a, 0xb7, 0xf2, 0x65, 0x9c, 0x7f, 0x17, 0x86, 0xf2, - 0xfc, 0x5f, 0x3e, 0xe8, 0x84, 0x74, 0xc5, 0x36, 0x09, 0x2d, 0x21, 0x82, - 0xb4, 0xf4, 0x74, 0xc7, 0xdb, 0x31, 0xca, 0xa3, 0x4e, 0xa7, 0x46, 0x7d, - 0xb6, 0x15, 0x27, 0x67, 0x52, 0xb9, 0x88, 0xf1, 0x69, 0xab, 0xed, 0xdc, - 0xc8, 0x97, 0x6d, 0xa0, 0x1c, 0x95, 0x85, 0x74, 0x81, 0xce, 0x12, 0xc2, - 0xe3, 0x8b, 0x0d, 0x38, 0xb6, 0xec, 0x7b, 0xd4, 0xa8, 0x07, 0x4b, 0x20, - 0x34, 0xf3, 0x0f, 0x5c, 0xd7, 0xd0, 0x95, 0xd0, 0x24, 0xb7, 0xa7, 0x99, - 0xcf, 0xd0, 0x90, 0xa0, 0x29, 0x9c, 0x82, 0x9e, 0x27, 0x5a, 0x32, 0x51, - 0x2a, 0xfb, 0x17, 0xb2, 0x22, 0x62, 0xc8, 0x12, 0x14, 0x24, 0xe4, 0x0b, - 0xfd, 0x37, 0xc3, 0xab, 0x30, 0xcd, 0xaa, 0x8f, 0x1b, 0x08, 0x31, 0x89, - 0x59, 0xdd, 0xff, 0x91, 0x91, 0xd1, 0x02, 0x7d, 0xa7, 0x65, 0xe7, 0xe7, - 0x3e, 0x33, 0xb9, 0x7a, 0x9f, 0x7a, 0x24, 0xd0, 0xc6, 0x63, 0x1e, 0x62, - 0x31, 0x39, 0xdd, 0xed, 0x45, 0x27, 0x6d, 0x4d, 0x8a, 0xbb, 0xd5, 0x62, - 0xba, 0x7a, 0x62, 0x9c, 0xd0, 0xc3, 0xdd, 0x69, 0xdb, 0x52, 0x31, 0x16, - 0xf8, 0xd2, 0x45, 0x10, 0x81, 0x3b, 0xc7, 0x99, 0x18, 0xe4, 0x12, 0x7a, - 0x23, 0xd0, 0x23, 0x5f, 0x29, 0x91, 0xb5, 0x9b, 0xe9, 0xf1, 0xcd, 0x43, - 0xc8, 0x97, 0x7f, 0xc0, 0xb2, 0xda, 0x5f, 0xa2, 0xc4, 0x4e, 0x78, 0x86, - 0xbc, 0x55, 0x8a, 0xd1, 0x21, 0x92, 0x68, 0x79, 0x18, 0x6a, 0xce, 0x46, - 0x37, 0xbd, 0xf7, 0x53, 0x20, 0x03, 0x38, 0x11, 0xed, 0x01, 0x45, 0xcf, - 0x0d, 0x2d, 0xaf, 0x2e, 0x88, 0xf6, 0x2a, 0x63, 0xda, 0x3b, 0xaf, 0x4b, - 0x25, 0xa8, 0x9d, 0xb0, 0x48, 0x24, 0x24, 0x1d, 0x89, 0xa3, 0xf2, 0xc6, - 0x98, 0x41, 0x7f, 0xb7, 0x69, 0xea, 0xf5, 0x3f, 0xc1, 0x57, 0x05, 0x72, - 0x64, 0x77, 0x88, 0x2a, 0xa3, 0xfb, 0x96, 0xf9, 0x3f, 0x77, 0xfc, 0xb9, - 0xa2, 0x61, 0x1b, 0xa8, 0xf7, 0x68, 0x79, 0x17, 0x7d, 0xbc, 0x96, 0x70, - 0x9a, 0x2b, 0xa4, 0xb6, 0xa0, 0xb2, 0x1d, 0x3c, 0x9e, 0xe5, 0xb5, 0x82, - 0x3c, 0x42, 0xcf, 0x88, 0x11, 0x5a, 0x5c, 0x39, 0xd6, 0xbf, 0xbd, 0x77, - 0x89, 0x8d, 0xf6, 0xa4, 0x37, 0x9f, 0x8e, 0xd4, 0x61, 0x5c, 0x05, 0x66, - 0x24, 0xcb, 0xb1, 0x9e, 0xcf, 0x71, 0xcc, 0x56, 0xd6, 0x05, 0xaa, 0x09, - 0x4b, 0x5f, 0xa0, 0x42, 0x24, 0xa8, 0x49, 0xe2, 0x8d, 0xd9, 0x85, 0xc9, - 0xe0, 0x0c, 0x7b, 0x95, 0xc3, 0xce, 0x17, 0x3f, 0x07, 0x5f, 0xc8, 0x8d, - 0x7c, 0x7f, 0xfa, 0x4f, 0x1e, 0xfc, 0xa5, 0xab, 0x60, 0x0f, 0x79, 0xf2, - 0xba, 0xa5, 0x0f, 0xa4, 0x54, 0xc8, 0x10, 0xe5, 0xb6, 0x4a, 0x82, 0xd3, - 0xea, 0x51, 0x09, 0xdc, 0x28, 0x5a, 0x84, 0x9b, 0xcc, 0x15, 0x10, 0x5c, - 0xe4, 0x63, 0xab, 0xe4, 0xcb, 0x23, 0x91, 0x09, 0x03, 0x7c, 0x7c, 0xe5, - 0x70, 0x1a, 0x29, 0x88, 0x89, 0x53, 0xca, 0x49, 0xa5, 0xc7, 0x35, 0x17, - 0x1a, 0xfa, 0x5e, 0xe5, 0xce, 0xe4, 0x06, 0xab, 0x7e, 0x0c, 0x58, 0x87, - 0x57, 0x8b, 0xe0, 0x7d, 0x5b, 0xd2, 0xba, 0x31, 0x7d, 0x9a, 0x86, 0xe1, - 0x08, 0xc6, 0xd9, 0x6c, 0xe1, 0x42, 0x74, 0xcc, 0xe8, 0x18, 0x08, 0x71, - 0xd7, 0xd8, 0xb2, 0xff, 0x28, 0x56, 0x91, 0x7a, 0xd8, 0x3b, 0x7e, 0xf8, - 0x3e, 0xfe, 0xc2, 0xec, 0xdd, 0x8a, 0x2e, 0x5b, 0xe6, 0xc1, 0x25, 0x77, - 0xc5, 0x08, 0x8b, 0xbb, 0xb5, 0x11, 0x18, 0x9a, 0xdb, 0x5a, 0x29, 0xac, - 0x69, 0xfb, 0x58, 0xb0, 0xd1, 0x43, 0x3a, 0xc1, 0xfc, 0x02, 0x74, 0x26, - 0x13, 0xa0, 0x8f, 0x6a, 0x43, 0xab, 0x45, 0x2c, 0x87, 0x19, 0xfb, 0xfe, - 0xb8, 0x82, 0xb5, 0x54, 0x97, 0x53, 0x13, 0xa6, 0xde, 0x38, 0x02, 0x35, - 0xb7, 0xf4, 0x8f, 0xdb, 0x35, 0x64, 0xcb, 0x81, 0xe3, 0xf8, 0x6f, 0x2d, - 0x05, 0xed, 0xc1, 0x92, 0xdd, 0x12, 0x5b, 0xc1, 0x36, 0x55, 0x9e, 0xff, - 0xe0, 0x94, 0xd7, 0x9a, 0x3c, 0xfe, 0xbc, 0xd1, 0x19, 0x08, 0x01, 0xcf, - 0x33, 0xf7, 0x8a, 0x83, 0xfa, 0xd6, 0x37, 0x40, 0xbc, 0xc7, 0x0e, 0xb1, - 0x80, 0xab, 0xfd, 0xbd, 0xee, 0x46, 0x3c, 0x75, 0xa6, 0xd3, 0xf6, 0x0c, - 0x9a, 0x80, 0xfb, 0x2e, 0x29, 0xa3, 0xcf, 0xa1, 0xdf, 0x68, 0x13, 0xba, - 0xac, 0x45, 0x6c, 0x73, 0xd0, 0xf3, 0x55, 0x3b, 0x91, 0x4c, 0x6d, 0x00, - 0x1e, 0xb4, 0x5f, 0x78, 0x99, 0xc2, 0xc3, 0xbc, 0x3e, 0x5b, 0x8c, 0x16, - 0xc0, 0x33, 0x1d, 0x89, 0x46, 0x59, 0xfc, 0x5a, 0x23, 0xd3, 0xe1, 0x0f, - 0xe8, 0x8f, 0x8b, 0xd0, 0x8a, 0xf2, 0x2e, 0xdd, 0x2b, 0x38, 0xe8, 0xd1, - 0x64, 0xd1, 0xe2, 0x17, 0xd9, 0xab, 0x97, 0x79, 0xf3, 0x09, 0xfd, 0x97, - 0x92, 0xaa, 0x7a, 0x20, 0xfd, 0x9a, 0xdb, 0xd6, 0x99, 0x19, 0x5b, 0xee, - 0x95, 0x28, 0x77, 0x55, 0x59, 0xd7, 0x0b, 0x73, 0x4b, 0xef, 0x95, 0xa9, - 0xfa, 0xbb, 0x07, 0x87, 0xa5, 0x0b, 0x99, 0x5d, 0xe4, 0xa5, 0x8e, 0x39, - 0x88, 0xaf, 0x06, 0x8f, 0x08, 0x6d, 0x30, 0xad, 0xe8, 0x79, 0x6c, 0x30, - 0xc7, 0x5a, 0xee, 0x40, 0x42, 0xb6, 0x91, 0x80, 0xe7, 0x2e, 0x69, 0xdb, - 0xb7, 0x56, 0xa1, 0xa3, 0x8f, 0x09, 0xd3, 0xc4, 0x3a, 0x72, 0xf9, 0x47, - 0xfd, 0x7d, 0x17, 0x00, 0x0c, 0xc5, 0xf9, 0x74, 0xa4, 0xf4, 0xfa, 0xa5, - 0x6b, 0x98, 0x1a, 0xc4, 0xfb, 0x34, 0x88, 0xfe, 0x56, 0x2f, 0x25, 0xa1, - 0xc0, 0x61, 0xa5, 0xec, 0x04, 0x65, 0x7f, 0x0c, 0x83, 0xfd, 0x0d, 0x3f, - 0x1c, 0x78, 0xea, 0x55, 0x59, 0x4f, 0x8b, 0xe0, 0xf7, 0xa6, 0xc8, 0x96, - 0x77, 0xac, 0x10, 0x55, 0x04, 0x23, 0xd6, 0x41, 0x52, 0xb1, 0x52, 0x3e, - 0x46, 0x20, 0xab, 0xe4, 0x9b, 0x62, 0xae, 0xb3, 0xff, 0x9e, 0x7a, 0x13, - 0xfb, 0x65, 0x02, 0xb7, 0x01, 0xd3, 0xff, 0xff, 0x87, 0x80, 0x08, 0x71, - 0xee, 0x99, 0x14, 0x66, 0x63, 0x5b, 0xfc, 0x55, 0xdc, 0x26, 0x28, 0x73, - 0xa0, 0x31, 0x81, 0x89, 0x4d, 0x6a, 0x1d, 0x61, 0x56, 0xf7, 0x01, 0x50, - 0xf5, 0x42, 0x65, 0x37, 0x7f, 0xc7, 0x38, 0x08, 0xf8, 0xd7, 0x14, 0xad, - 0x7b, 0xeb, 0xec, 0x13, 0xcc, 0x74, 0xb2, 0xc0, 0x66, 0xc7, 0xf9, 0x61, - 0x49, 0x04, 0x32, 0x5e, 0x98, 0xe1, 0xd2, 0xad, 0x6d, 0x80, 0x0e, 0xd3, - 0xe3, 0x48, 0x32, 0x36, 0x5a, 0x78, 0x4e, 0xa2, 0x27, 0xde, 0xad, 0xd4, - 0x69, 0x1e, 0x57, 0x5d, 0x3d, 0x23, 0x5b, 0x13, 0x24, 0xed, 0x71, 0x3c, - 0x96, 0x85, 0x32, 0xc8, 0xdb, 0xe7, 0xcf, 0x2a, 0x5c, 0x3d, 0xdd, 0x14, - 0x02, 0xb1, 0x7c, 0xba, 0xe9, 0x87, 0x21, 0x4f, 0x23, 0x30, 0xf3, 0x21, - 0x0d, 0x1f, 0xf1, 0xde, 0xff, 0x77, 0x4b, 0xe0, 0x26, 0x17, 0x97, 0x6a, - 0x27, 0x5f, 0xc2, 0x30, 0x3b, 0x1a, 0x09, 0x12, 0x45, 0x8a, 0x72, 0x3b, - 0x11, 0x53, 0x0b, 0x07, 0x44, 0x4e, 0xec, 0x0c, 0xcb, 0xb1, 0x03, 0x78, - 0xf8, 0x58, 0xe3, 0x13, 0xca, 0x91, 0x33, 0x96, 0xed, 0xf8, 0x21, 0x8e, - 0x3a, 0xac, 0xd9, 0xf1, 0x97, 0x59, 0xa6, 0x65, 0x6f, 0xae, 0x3a, 0x4c, - 0x3d, 0x89, 0xa3, 0x78, 0xaa, 0x76, 0xb0, 0xf4, 0x86, 0x2a, 0x6b, 0xbe, - 0x59, 0xd8, 0xb9, 0x69, 0xca, 0xd7, 0x1c, 0x73, 0xe2, 0x10, 0xd3, 0x72, - 0x7a, 0x41, 0x3f, 0x3f, 0xb8, 0xf5, 0xa5, 0x0f, 0x2a, 0x72, 0xb1, 0x16, - 0x1d, 0xca, 0x75, 0x67, 0x6b, 0xf2, 0x3d, 0xf0, 0xf0, 0x32, 0x65, 0x72, - 0x45, 0x84, 0x13, 0xf7, 0xfc, 0xfe, 0x7c, 0xd2, 0x26, 0xeb, 0xe3, 0xc8, - 0xe6, 0x1d, 0x23, 0x1d, 0x8f, 0x12, 0x5d, 0xc0, 0xdc, 0x3d, 0x4b, 0x47, - 0x0a, 0x29, 0x2e, 0xe5, 0x6a, 0xe8, 0x22, 0xc1, 0xd3, 0x13, 0xff, 0x8b, - 0xd8, 0xca, 0xcd, 0x7a, 0x7c, 0x09, 0x8b, 0x28, 0x2c, 0x37, 0x3d, 0x86, - 0x03, 0xfc, 0xf4, 0xb9, 0x02, 0x3a, 0x4d, 0x1e, 0x54, 0xf0, 0xc5, 0x9c, - 0x87, 0x8e, 0x43, 0x4b, 0x41, 0xc1, 0xf2, 0x9a, 0x80, 0xae, 0x7e, 0x9f, - 0x20, 0xd0, 0xcf, 0xb9, 0x11, 0xf2, 0x9d, 0x8f, 0xdc, 0x9a, 0xd1, 0xf8, - 0x02, 0x48, 0xb1, 0xb7, 0x45, 0xdb, 0xc0, 0xe1, 0x59, 0x4d, 0x08, 0xf8, - 0x6a, 0xce, 0x3d, 0xb4, 0xcc, 0x4f, 0x28, 0x56, 0x60, 0x2f, 0xd1, 0x39, - 0xec, 0x51, 0xee, 0x45, 0xf8, 0x74, 0xb5, 0x99, 0xa1, 0xb7, 0x95, 0x06, - 0x35, 0x08, 0xfc, 0xca, 0x7a, 0xd1, 0xcf, 0xd5, 0xb5, 0xfe, 0xa4, 0xb2, - 0xda, 0x5e, 0x0e, 0xd5, 0x48, 0x71, 0x65, 0x07, 0x2f, 0xe7, 0x1d, 0xa3, - 0x5e, 0x79, 0x06, 0x61, 0xfa, 0xe2, 0xae, 0x15, 0x9d, 0xd7, 0x66, 0x16, - 0x10, 0xad, 0x18, 0x16, 0xfe, 0xec, 0xcc, 0xb9, 0x6e, 0x83, 0xa3, 0xe6, - 0xed, 0x73, 0x86, 0xdf, 0x91, 0xba, 0xba, 0x6a, 0x6c, 0x19, 0xda, 0xb1, - 0x90, 0xd7, 0x11, 0x68, 0x4f, 0x66, 0x31, 0xae, 0xdd, 0x5c, 0x4b, 0xce, - 0x0c, 0x97, 0xb8, 0xf2, 0x55, 0x04, 0xca, 0x85, 0xa7, 0x42, 0x43, 0x0f, - 0xb7, 0xb2, 0x1c, 0x40, 0x3a, 0x24, 0xb6, 0xb3, 0xdf, 0xce, 0x2e, 0xaa, - 0xa4, 0xad, 0x5c, 0x5b, 0xda, 0x2a, 0xeb, 0x33, 0xe9, 0x4c, 0xa6, 0x5e, - 0x2a, 0x4a, 0xd6, 0x0e, 0xfc, 0x44, 0x26, 0x09, 0x32, 0x0a, 0x8c, 0x06, - 0x1f, 0x9f, 0x08, 0x5e, 0x08, 0x1d, 0x07, 0x0a, 0xcc, 0x72, 0x01, 0xae, - 0x88, 0x3a, 0x16, 0x29, 0x56, 0x7b, 0x5a, 0xdd, 0x56, 0x03, 0x56, 0xb7, - 0xdc, 0x12, 0x33, 0xe7, 0x02, 0xee, 0x6d, 0x76, 0xc0, 0x74, 0x6d, 0xed, - 0x25, 0xc4, 0x27, 0x06, 0x6e, 0x2a, 0x1e, 0xd3, 0xbb, 0x2f, 0xfb, 0x3d, - 0x70, 0x83, 0xd2, 0x75, 0xe3, 0x85, 0x35, 0xdd, 0x3b, 0xfd, 0x37, 0x3c, - 0x79, 0x5e, 0x27, 0x42, 0xfd, 0x22, 0x25, 0xae, 0x45, 0x55, 0xee, 0x8c, - 0xc9, 0x05, 0x98, 0x53, 0x3a, 0xfe, 0x5a, 0xbb, 0x45, 0x34, 0x93, 0x93, - 0xf3, 0x3b, 0x00, 0x8a, 0x24, 0x8d, 0xd1, 0xd3, 0xfb, 0xc3, 0x45, 0xab, - 0x9e, 0xea, 0x6d, 0x46, 0xf3, 0xec, 0x83, 0x6a, 0x9a, 0x40, 0xb2, 0x7c, - 0xf6, 0xb8, 0xe4, 0x76, 0x71, 0x9a, 0xcf, 0x0b, 0x6c, 0x88, 0x4f, 0x5f, - 0x0e, 0x2b, 0x54, 0x02, 0xbc, 0xce, 0x96, 0xa3, 0xe6, 0x50, 0xce, 0xf7, - 0x71, 0xc9, 0x37, 0xe3, 0x3e, 0x38, 0x7c, 0xa7, 0xb0, 0x1b, 0xeb, 0x90, - 0x8a, 0x72, 0x86, 0x95, 0xe9, 0x3f, 0x35, 0x6a, 0x1b, 0xa1, 0x8b, 0xd7, - 0x10, 0x97, 0xf4, 0x6c, 0xae, 0x26, 0x5c, 0x3d, 0xc8, 0xd0, 0x4c, 0x61, - 0x75, 0x73, 0x90, 0x9c, 0x32, 0x7e, 0xe9, 0xfe, 0x2a, 0x77, 0x6f, 0x43, - 0x4b, 0x46, 0x57, 0x03, 0x6b, 0x19, 0xaa, 0x6f, 0x84, 0xa4, 0xeb, 0xba, - 0xe0, 0x88, 0x41, 0xf6, 0xb2, 0x47, 0xca, 0x88, 0x3f, 0x41, 0x32, 0x38, - 0x58, 0x58, 0x86, 0x4b, 0xec, 0x37, 0xd2, 0x57, 0x32, 0x32, 0xf4, 0xc9, - 0xd1, 0xcf, 0x9d, 0xec, 0x9a, 0xaf, 0x39, 0x7d, 0x3b, 0x24, 0x6b, 0x9e, - 0xc7, 0xbb, 0xfd, 0x67, 0x78, 0x7d, 0x56, 0xee, 0x34, 0x09, 0xe4, 0x20, - 0x99, 0x3a, 0x62, 0x2a, 0xab, 0x6d, 0x20, 0x9e, 0x3c, 0x57, 0x80, 0xaf, - 0xb5, 0xbb, 0xb1, 0xb4, 0xc9, 0x49, 0x75, 0xc2, 0xd0, 0xb7, 0xb2, 0xe4, - 0x0c, 0x4e, 0x08, 0x10, 0xcd, 0xac, 0x06, 0xb0, 0x4e, 0x98, 0x4b, 0xf1, - 0x8f, 0xf2, 0x8a, 0x8b, 0xcc, 0xd4, 0x5f, 0xa2, 0x81, 0x81, 0xe2, 0xe7, - 0xf3, 0xd0, 0xcf, 0x86, 0x1c, 0xc9, 0x50, 0xa5, 0x26, 0x05, 0x06, 0x06, - 0xa0, 0xef, 0xe0, 0xf4, 0x89, 0xb9, 0x72, 0x49, 0x87, 0x32, 0xb3, 0xe9, - 0xce, 0xc3, 0xe2, 0xac, 0x6f, 0x9e, 0x00, 0xe8, 0x95, 0x8a, 0x86, 0x20, - 0xc6, 0x8d, 0x0b, 0x56, 0x93, 0xde, 0x6b, 0xdf, 0x65, 0xee, 0x52, 0x39, - 0x42, 0x21, 0xfd, 0x00, 0x97, 0xa9, 0x74, 0x05, 0x8e, 0x0f, 0x31, 0x3b, - 0x1f, 0x84, 0xac, 0x02, 0x50, 0x0d, 0x0f, 0x17, 0x7d, 0x60, 0x56, 0x06, - 0x80, 0xa7, 0xec, 0x42, 0x3e, 0x0e, 0xf7, 0x46, 0x38, 0x7a, 0xc1, 0x8d, - 0x9c, 0x7c, 0x81, 0xd8, 0xb6, 0x82, 0x97, 0x6e, 0x85, 0x6f, 0x65, 0xbd, - 0x41, 0x7e, 0xd9, 0x04, 0xe9, 0x99, 0x0a, 0x1f, 0x2f, 0xf5, 0xf6, 0x12, - 0x04, 0xbf, 0x9e, 0xe2, 0xb9, 0x45, 0x50, 0x70, 0x17, 0x1a, 0x9b, 0x4d, - 0x53, 0xcd, 0x7f, 0xe1, 0xdb, 0xf5, 0xe2, 0x51, 0x2b, 0x58, 0x59, 0xe2, - 0x1f, 0xa1, 0x42, 0xc1, 0x8e, 0xdc, 0xca, 0x50, 0xf1, 0xe8, 0xa9, 0x0c, - 0xcb, 0x56, 0x73, 0x3d, 0xef, 0x88, 0xd7, 0xb8, 0x2d, 0x35, 0x2e, 0x0d, - 0x03, 0x36, 0x12, 0xd4, 0x69, 0xcd, 0x2d, 0x1c, 0xc3, 0xd7, 0xe5, 0x62, - 0x5e, 0x2f, 0x4d, 0x96, 0xce, 0x5e, 0x56, 0xf5, 0x9f, 0xee, 0xfa, 0x07, - 0x26, 0xfb, 0x5d, 0x8b, 0x03, 0x8c, 0x2a, 0x66, 0x6c, 0x70, 0xb1, 0xee, - 0x51, 0x0c, 0xee, 0x3e, 0x1d, 0xe1, 0x8d, 0xf1, 0xa4, 0xd1, 0x06, 0x79, - 0x1a, 0x6d, 0x91, 0xb7, 0xbf, 0x15, 0x11, 0xe9, 0x38, 0xdb, 0x17, 0x54, - 0x00, 0xc6, 0x81, 0xa0, 0x22, 0x89, 0x3a, 0x9b, 0x4d, 0xa7, 0x8c, 0xa9, - 0x7a, 0x0d, 0xa3, 0x8d, 0x70, 0x42, 0x14, 0x02, 0x2b, 0xda, 0x11, 0x24, - 0xb9, 0x8b, 0x61, 0xc5, 0xc3, 0xfe, 0x82, 0xfc, 0x18, 0xdc, 0x49, 0x9a, - 0x37, 0x93, 0x9c, 0x12, 0x5b, 0xdf, 0xe9, 0x3e, 0x3d, 0xac, 0x50, 0x77, - 0xd6, 0x55, 0x86, 0xe4, 0x16, 0x36, 0x85, 0x24, 0x6b, 0xf0, 0x91, 0x7a, - 0x76, 0x85, 0x52, 0x94, 0xf0, 0xc7, 0x88, 0xb7, 0x45, 0x6e, 0xbb, 0x22, - 0xa1, 0x4b, 0x99, 0xc0, 0x1b, 0xc6, 0xd8, 0x0a, 0x9f, 0x66, 0x32, 0xe1, - 0x92, 0xa1, 0xd7, 0x79, 0x82, 0x42, 0xf8, 0x3e, 0x65, 0xc4, 0x5d, 0x98, - 0x9e, 0x55, 0x34, 0xda, 0x46, 0xb8, 0x14, 0x44, 0xc3, 0x2d, 0x40, 0x22, - 0x15, 0x7c, 0x87, 0xd6, 0x55, 0x72, 0x01, 0x31, 0xaa, 0xd0, 0x6e, 0xf0, - 0x35, 0x85, 0xdc, 0xb8, 0xb0, 0xb6, 0x2c, 0x2b, 0x73, 0x59, 0x19, 0x42, - 0xdc, 0x18, 0x9e, 0x9b, 0x2a, 0x87, 0x2b, 0xa1, 0x64, 0xf7, 0xf3, 0x8f, - 0x0e, 0x7f, 0x80, 0xee, 0x8d, 0x86, 0x34, 0x81, 0xa3, 0x77, 0x7c, 0x3b, - 0x27, 0xb2, 0xbb, 0x8e, 0xe0, 0xbe, 0x58, 0x22, 0x49, 0xa4, 0x8a, 0x9f, - 0x37, 0x4a, 0x38, 0xc9, 0xc9, 0xb4, 0xa4, 0xd3, 0x30, 0xff, 0x35, 0x86, - 0x68, 0xa7, 0x0c, 0x64, 0x61, 0x9a, 0xa8, 0xd2, 0x2b, 0x50, 0xfa, 0x52, - 0x8a, 0x52, 0xd9, 0x30, 0x73, 0xc0, 0xd1, 0xac, 0xff, 0xc1, 0x89, 0x00, - 0xd8, 0x58, 0x06, 0x32, 0x45, 0x23, 0x1d, 0x4c, 0xb3, 0x49, 0x4d, 0xfe, - 0xb8, 0xd0, 0x6e, 0x23, 0x1a, 0x79, 0x57, 0x5a, 0x00, 0xa2, 0x16, 0xee, - 0xac, 0x82, 0x46, 0x2d, 0xf0, 0x4c, 0x17, 0x6c, 0x3f, 0x66, 0x91, 0x6e, - 0x6b, 0x60, 0x12, 0xcb, 0x65, 0x74, 0x2c, 0xdc, 0x2b, 0xf6, 0x02, 0xa7, - 0x8d, 0xf5, 0xb8, 0x18, 0x98, 0xb0, 0xf3, 0x68, 0x9a, 0x1e, 0x6f, 0xe6, - 0x6f, 0xc0, 0xd4, 0x28, 0x9d, 0xca, 0xf2, 0x07, 0x26, 0x66, 0x6c, 0xd0, - 0x9d, 0xf3, 0xf9, 0x4f, 0xf3, 0xce, 0x82, 0xae, 0x23, 0x9e, 0x39, 0x5a, - 0x7b, 0x82, 0x92, 0xb9, 0xd7, 0x87, 0x28, 0x13, 0x46, 0xa7, 0x67, 0x79, - 0xde, 0x1e, 0x31, 0x0c, 0x15, 0xdc, 0xfa, 0x0e, 0x0a, 0x95, 0xf1, 0xec, - 0xd5, 0x23, 0x4a, 0x9b, 0x98, 0x2c, 0xfe, 0x5c, 0xdb, 0x75, 0xfa, 0xbe, - 0xf5, 0xf7, 0x07, 0xd3, 0x79, 0xde, 0x20, 0xca, 0x07, 0xb3, 0x79, 0x2e, - 0xba, 0x4f, 0x01, 0x70, 0x8d, 0x32, 0x2e, 0x6f, 0x5f, 0x8f, 0x37, 0x47, - 0xbd, 0x87, 0xa2, 0x70, 0xef, 0xd6, 0x92, 0x67, 0x78, 0x64, 0xd3, 0x45, - 0xcf, 0x24, 0x82, 0xfc, 0x1a, 0x5d, 0xe7, 0xc9, 0x5e, 0x8e, 0x56, 0xd7, - 0x49, 0x25, 0x27, 0x1d, 0x54, 0xd1, 0x52, 0xc7, 0x4e, 0x13, 0x61, 0xb1, - 0x44, 0x81, 0x26, 0xa1, 0x87, 0x1e, 0x4e, 0x5e, 0xb5, 0x03, 0x4c, 0xb1, - 0xd5, 0xaa, 0x7f, 0xe0, 0x8f, 0x31, 0x44, 0x61, 0x2e, 0x94, 0x36, 0xe7, - 0x47, 0x9a, 0xb6, 0x05, 0x0e, 0xf5, 0xfd, 0xd0, 0x7e, 0x36, 0x7a, 0x70, - 0xb7, 0xdb, 0x57, 0x17, 0x37, 0x97, 0x4a, 0xd8, 0x37, 0xdf, 0xd1, 0xf2, - 0x16, 0x1c, 0xb1, 0x2b, 0x52, 0xe7, 0x5d, 0x6f, 0x4a, 0xad, 0xe1, 0x67, - 0xc7, 0x03, 0x7b, 0xab, 0x17, 0x0b, 0xd2, 0x2a, 0x79, 0x7d, 0x2f, 0xdc, - 0x37, 0x3d, 0x22, 0x17, 0x28, 0x0a, 0xfb, 0x0b, 0x9a, 0x3e, 0xfc, 0x1f, - 0xa6, 0xaa, 0xa0, 0x53, 0xb4, 0x81, 0x70, 0x08, 0x9d, 0xf6, 0xac, 0x6a, - 0x93, 0x2d, 0x81, 0xbe, 0xf5, 0xbc, 0xdd, 0x7e, 0x5d, 0x5d, 0x9e, 0x19, - 0x15, 0x0d, 0xdd, 0x80, 0xb1, 0x5b, 0x3d, 0xf1, 0x8a, 0x08, 0x45, 0xd7, - 0x3c, 0x0e, 0xef, 0x92, 0x79, 0x4b, 0x72, 0x9f, 0x7b, 0x76, 0xbf, 0xe7, - 0xc1, 0x67, 0xc3, 0x39, 0x33, 0x9e, 0xd1, 0x9b, 0x6b, 0xc5, 0xfc, 0xc4, - 0x8b, 0x67, 0xd7, 0x1a, 0xb8, 0x6e, 0x0b, 0x7f, 0x1a, 0x3f, 0xff, 0x18, - 0x96, 0x75, 0x20, 0x70, 0xdb, 0xf7, 0x0d, 0xaf, 0x4e, 0xbe, 0x84, 0xc6, - 0x16, 0xed, 0x20, 0xc0, 0xb7, 0xd3, 0x33, 0xd5, 0x7d, 0xff, 0xf4, 0xa4, - 0xd3, 0xf8, 0xce, 0x90, 0xca, 0xb0, 0x95, 0xaf, 0x3e, 0x0d, 0x24, 0xea, - 0xb1, 0xef, 0x15, 0x59, 0x20, 0x7a, 0x73, 0xb5, 0x39, 0x2c, 0x4b, 0x1c, - 0xe9, 0x21, 0xab, 0xe9, 0x31, 0xb3, 0x3f, 0x95, 0x7a, 0x9d, 0xe4, 0x36, - 0x64, 0x13, 0x62, 0xd2, 0xba, 0x48, 0xd8, 0x8e, 0x45, 0x8e, 0xbf, 0x5f, - 0xb8, 0x30, 0x77, 0x4c, 0xd7, 0x3a, 0x92, 0x2b, 0x8b, 0xe4, 0x7b, 0x30, - 0x69, 0x7a, 0xd5, 0x59, 0xdb, 0xee, 0x54, 0x14, 0xa6, 0xd8, 0x0c, 0x9c, - 0x28, 0x42, 0xdd, 0x8a, 0xa0, 0xbf, 0xef, 0x18, 0x79, 0x29, 0x22, 0xd3, - 0x12, 0x88, 0x23, 0x6d, 0x8d, 0xbe, 0x24, 0xe4, 0x51, 0x31, 0xae, 0x2c, - 0x50, 0x36, 0x93, 0xac, 0xd6, 0xc3, 0xcc, 0x6b, 0x44, 0xc0, 0x30, 0xb9, - 0xec, 0xc1, 0xa8, 0xca, 0xa0, 0xda, 0x5c, 0x2d, 0x8b, 0x8b, 0x9f, 0xa2, - 0xe8, 0xdc, 0x06, 0x80, 0x0d, 0x9f, 0x84, 0xaa, 0xfb, 0xc8, 0x0d, 0xb4, - 0x9c, 0xfb, 0x39, 0x07, 0x83, 0x4c, 0x19, 0x42, 0x8a, 0xfb, 0x76, 0x8a, - 0xe6, 0xa1, 0x1d, 0x16, 0x28, 0xf9, 0x56, 0xdf, 0x31, 0xdd, 0xd8, 0xeb, - 0xc7, 0xe3, 0xa4, 0xdf, 0x32, 0x61, 0xf2, 0x71, 0x41, 0x26, 0x71, 0xba, - 0xcd, 0xfc, 0x8d, 0xc3, 0x9c, 0xce, 0x0d, 0x48, 0xe1, 0xb4, 0xd3, 0x3d, - 0x88, 0x2a, 0xe2, 0x0d, 0xff, 0x19, 0x5b, 0xb4, 0x6f, 0x12, 0xd6, 0x90, - 0x9a, 0x28, 0xc9, 0xdc, 0x7b, 0xf4, 0x74, 0x1f, 0x5d, 0x45, 0xe9, 0x4e, - 0xc1, 0x05, 0x46, 0xab, 0xec, 0x7f, 0xe4, 0x5d, 0x73, 0xe6, 0x24, 0x0c, - 0x40, 0x4f, 0xc6, 0xad, 0xf4, 0x63, 0x8e, 0x56, 0x44, 0x0b, 0xf1, 0xa6, - 0xb9, 0x90, 0xec, 0x3c, 0x3c, 0xa9, 0xef, 0xa9, 0x15, 0x18, 0x67, 0xe9, - 0x9f, 0xa9, 0xbf, 0x65, 0xb1, 0x62, 0x23, 0xa5, 0x1e, 0x7e, 0x8e, 0x60, - 0x65, 0x16, 0x67, 0x9f, 0x24, 0xbf, 0x40, 0x4d, 0x33, 0xfe, 0x3f, 0xe6, - 0xc8, 0xa7, 0xd9, 0x33, 0x1a, 0xfe, 0xa9, 0xbe, 0xd6, 0x20, 0xd6, 0xfb, - 0x11, 0x16, 0x5a, 0x40, 0xab, 0x2d, 0x4b, 0x10, 0xbc, 0x6a, 0xd5, 0xf1, - 0xaa, 0x4b, 0x67, 0x18, 0x3b, 0x1e, 0xa1, 0xae, 0xc4, 0x4f, 0x7e, 0x38, - 0x83, 0x56, 0xf2, 0x4b, 0x33, 0x2c, 0x61, 0x0d, 0x07, 0x1e, 0xff, 0x5f, - 0x12, 0x42, 0x7f, 0x13, 0xcc, 0xe7, 0x54, 0x18, 0x72, 0x0c, 0xee, 0xed, - 0x95, 0x4f, 0x21, 0x69, 0xdc, 0x4c, 0x9c, 0x3e, 0xd3, 0x51, 0x68, 0xdb, - 0xc0, 0x41, 0x3c, 0xc9, 0x07, 0x32, 0x8e, 0xca, 0x5e, 0x66, 0x63, 0xe4, - 0x8b, 0x3f, 0x95, 0x87, 0x38, 0xc5, 0xe4, 0xb1, 0x4f, 0xd2, 0xf4, 0x89, - 0xad, 0xb9, 0x9b, 0x80, 0xc2, 0xe5, 0x88, 0xee, 0x3a, 0x3e, 0x60, 0x21, - 0x92, 0x45, 0xda, 0xbd, 0x4d, 0x3f, 0xef, 0xcf, 0x9b, 0x35, 0x40, 0x4e, - 0x32, 0x8f, 0xb3, 0x6d, 0x7c, 0xdb, 0x32, 0x26, 0x34, 0x4d, 0xc6, 0x0c, - 0x54, 0xd8, 0x4d, 0x29, 0xfd, 0x4b, 0x1f, 0xa5, 0x85, 0x7e, 0x14, 0xda, - 0x88, 0xe5, 0xd6, 0xb4, 0xd0, 0x14, 0x18, 0xae, 0x3c, 0x04, 0x01, 0x34, - 0x35, 0x02, 0xfe, 0x72, 0xba, 0xa3, 0x7f, 0x95, 0x14, 0x01, 0x11, 0x88, - 0x7d, 0x63, 0x68, 0x62, 0x29, 0x9e, 0xc7, 0x85, 0x10, 0x50, 0xd6, 0xe2, - 0x55, 0xbe, 0x0e, 0xba, 0x8b, 0x08, 0xde, 0x09, 0xc0, 0x29, 0xb8, 0xf1, - 0x6a, 0xd5, 0x2f, 0xee, 0x57, 0x2c, 0x12, 0x7c, 0x6d, 0x6a, 0x8f, 0x5c, - 0x9c, 0xce, 0x8b, 0x03, 0x40, 0xb0, 0x7c, 0x5e, 0x61, 0xcf, 0xeb, 0xd5, - 0x72, 0xdd, 0x61, 0xcb, 0x56, 0xb8, 0x72, 0x03, 0x11, 0x55, 0xe4, 0x23, - 0xda, 0x6b, 0x5c, 0x7e, 0xc0, 0xa1, 0x3f, 0x12, 0xf9, 0x43, 0x6f, 0x7e, - 0x45, 0x7b, 0x48, 0x63, 0x53, 0x2a, 0x6a, 0xc5, 0xf3, 0xf0, 0x90, 0x2e, - 0xbb, 0xc5, 0x1d, 0xb9, 0xdb, 0x97, 0x24, 0xf2, 0x3e, 0x53, 0x51, 0xc2, - 0x62, 0xcf, 0xbf, 0x7a, 0xd5, 0x05, 0x94, 0xc9, 0xb4, 0x34, 0xe8, 0x4f, - 0x06, 0xe0, 0x93, 0x7b, 0x76, 0x15, 0x90, 0x5f, 0x34, 0xba, 0x5e, 0x33, - 0xb7, 0x17, 0x83, 0x3e, 0x3a, 0xbb, 0x50, 0x3a, 0x93, 0x41, 0x53, 0xa5, - 0x1b, 0x0a, 0xcc, 0xa1, 0x69, 0x0f, 0x69, 0xea, 0x80, 0xf2, 0x2c, 0xfa, - 0x5a, 0xd1, 0x44, 0x81, 0xec, 0xdd, 0xfd, 0xc0, 0x76, 0x34, 0x55, 0x7f, - 0x78, 0x0c, 0xae, 0xbf, 0x2a, 0xf8, 0x74, 0x1f, 0x31, 0x50, 0x01, 0xb2, - 0x7c, 0x36, 0x47, 0x9d, 0x18, 0x48, 0x0f, 0x03, 0x86, 0xc0, 0xa8, 0xcc, - 0x08, 0x66, 0x00, 0x21, 0x98, 0x6b, 0xac, 0x82, 0x14, 0xe1, 0x57, 0xff, - 0x50, 0xde, 0xfd, 0x9f, 0x7f, 0x20, 0x2b, 0x91, 0x38, 0x8c, 0xba, 0x63, - 0x8c, 0x2f, 0x33, 0xb2, 0x99, 0xf4, 0xa6, 0x64, 0x98, 0xa2, 0x50, 0x90, - 0xde, 0x7d, 0xef, 0xfc, 0xa6, 0xbc, 0xa5, 0xd9, 0xb4, 0x8a, 0x82, 0xe2, - 0xd8, 0x5d, 0xf4, 0xda, 0x37, 0x33, 0xb6, 0xc1, 0xc1, 0xa7, 0x8d, 0xda, - 0x4a, 0x94, 0xde, 0x93, 0x2a, 0x4f, 0xfa, 0x95, 0x15, 0x7c, 0x18, 0x2e, - 0x68, 0xd3, 0x6c, 0xbd, 0x57, 0x8d, 0x12, 0xe5, 0x21, 0xa7, 0x89, 0x5f, - 0x65, 0x3d, 0xdf, 0xe2, 0xa5, 0xb3, 0xa8, 0x61, 0x31, 0x9c, 0x05, 0x79, - 0x55, 0x27, 0xb4, 0x99, 0x01, 0x64, 0xef, 0xb3, 0x02, 0x89, 0xc3, 0x53, - 0x1b, 0x84, 0x2b, 0xa1, 0x48, 0xeb, 0xe3, 0x54, 0xf6, 0x8a, 0xe3, 0x50, - 0x75, 0x19, 0x04, 0x74, 0x74, 0x04, 0x02, 0x29, 0x6d, 0xa3, 0x02, 0xb2, - 0xe0, 0x14, 0xab, 0x45, 0x51, 0x30, 0x90, 0xc2, 0x0e, 0x13, 0x88, 0x26, - 0xfa, 0xf2, 0x73, 0xa6, 0xeb, 0xcf, 0xe3, 0x1e, 0x70, 0x0b, 0xb7, 0xf7, - 0xf1, 0xc4, 0xe8, 0xb9, 0x32, 0x34, 0xfa, 0x4f, 0x22, 0x79, 0x8b, 0x13, - 0xd2, 0xac, 0xfd, 0xd4, 0xff, 0x6f, 0xa8, 0xb8, 0x31, 0x11, 0xbb, 0x74, - 0xc6, 0x98, 0x19, 0xc0, 0x79, 0x53, 0xde, 0x3d, 0xd6, 0xd0, 0x98, 0x70, - 0xdd, 0x94, 0xd4, 0x42, 0x6b, 0x4c, 0xc6, 0x17, 0x89, 0x9f, 0x04, 0x38, - 0xeb, 0x17, 0xf4, 0xa3, 0x3a, 0x60, 0x5e, 0xd5, 0x4c, 0xc5, 0x21, 0x6b, - 0x04, 0xd6, 0x9b, 0x8a, 0x61, 0xe1, 0x4a, 0xeb, 0x02, 0xb1, 0xcd, 0xfd, - 0x97, 0x18, 0x6e, 0x28, 0x7b, 0x66, 0x6c, 0xe3, 0x3c, 0x33, 0x2a, 0xe0, - 0x7a, 0x41, 0x49, 0x11, 0xb2, 0x22, 0x73, 0x2d, 0x0a, 0x42, 0x83, 0xf4, - 0x62, 0xa6, 0xb1, 0x11, 0x0d, 0xca, 0x6a, 0x71, 0xfc, 0x09, 0x04, 0xa4, - 0xbb, 0x1f, 0x47, 0x2d, 0x46, 0x67, 0x64, 0x21, 0x5f, 0x73, 0x27, 0xf7, - 0xe3, 0xf9, 0x75, 0x13, 0x91, 0x83, 0x13, 0x5d, 0xe5, 0x32, 0x41, 0xe5, - 0x99, 0xb7, 0x12, 0xf0, 0xfe, 0x41, 0x6d, 0xcc, 0x76, 0xe7, 0x7e, 0xa4, - 0x55, 0xb5, 0xb2, 0xc9, 0x09, 0x0b, 0x70, 0xd0, 0xde, 0xf0, 0x79, 0x03, - 0xfc, 0x9e, 0x2b, 0x07, 0x6c, 0x0f, 0x7d, 0xb3, 0xbb, 0x6c, 0xf8, 0x36, - 0x69, 0x84, 0x6c, 0xff, 0x8d, 0x46, 0x8c, 0xea, 0xcd, 0xaf, 0x6f, 0x96, - 0x7b, 0xa2, 0x30, 0x7d, 0x41, 0x62, 0x1b, 0xbe, 0x5b, 0xef, 0xe8, 0xb5, - 0xb5, 0x58, 0x73, 0xf1, 0xd4, 0xec, 0xd8, 0x2e, 0xf1, 0x0e, 0xdf, 0x8f, - 0x56, 0x7f, 0x52, 0xec, 0xc4, 0x67, 0xf1, 0xca, 0x7c, 0xce, 0xd5, 0x3a, - 0x22, 0x02, 0xb8, 0x6e, 0xcf, 0x11, 0x00, 0x02, 0xd3, 0x00, 0xb5, 0xac, - 0xa3, 0xca, 0x69, 0x63, 0xd8, 0xc8, 0xec, 0x0f, 0x8f, 0x12, 0x0a, 0x44, - 0xcd, 0xd5, 0xc9, 0x9e, 0x47, 0xe1, 0xa1, 0x92, 0x50, 0x12, 0xe5, 0x7d, - 0x48, 0xa8, 0x72, 0xcf, 0x27, 0xfe, 0x50, 0x6c, 0xc5, 0xc2, 0x86, 0x6c, - 0x57, 0x6d, 0xc3, 0x46, 0x96, 0xe0, 0x46, 0x43, 0xfe, 0xf6, 0x16, 0x1f, - 0x0e, 0xbd, 0xb4, 0x88, 0x23, 0xb7, 0x8e, 0x1f, 0x18, 0x83, 0xf3, 0x5d, - 0x92, 0x83, 0x9b, 0xbc, 0x8c, 0xa3, 0x6f, 0x25, 0x8c, 0xbb, 0xd0, 0x57, - 0xa9, 0x09, 0x45, 0xf2, 0xb4, 0xc7, 0x3a, 0xbd, 0x92, 0x4d, 0x81, 0x46, - 0xeb, 0xa6, 0xb9, 0x06, 0xc3, 0x4c, 0xac, 0xb9, 0xbb, 0x37, 0xea, 0x49, - 0x09, 0xe2, 0x22, 0xa8, 0x7b, 0xc6, 0x87, 0x47, 0x42, 0xb7, 0xc8, 0x7f, - 0x67, 0x0c, 0x1c, 0xe4, 0x4d, 0xeb, 0x47, 0x1e, 0x12, 0xed, 0xc4, 0x3f, - 0x52, 0x52, 0xea, 0x98, 0xed, 0xa9, 0xa3, 0x1c, 0xe6, 0x05, 0x4c, 0x41, - 0x6d, 0x6e, 0xd4, 0x03, 0x8a, 0x8d, 0xb2, 0xea, 0x58, 0x51, 0x0a, 0x28, - 0xb9, 0xf5, 0x80, 0x08, 0xbc, 0xec, 0xd0, 0x8a, 0x5c, 0xda, 0xe5, 0x1a, - 0x40, 0x50, 0xdb, 0x40, 0x1c, 0xc8, 0x70, 0xbd, 0xf3, 0x3d, 0xd9, 0x86, - 0x91, 0x09, 0x6d, 0x29, 0x0d, 0xc5, 0x40, 0xe8, 0x4d, 0xdd, 0xed, 0x37, - 0xb9, 0xbc, 0x55, 0xa4, 0xa8, 0x9e, 0xd4, 0x82, 0x96, 0x74, 0x1a, 0x72, - 0x41, 0x43, 0x74, 0x71, 0x3e, 0xee, 0xcf, 0xa5, 0x2f, 0x9a, 0xc4, 0x56, - 0xde, 0xda, 0x1d, 0xc5, 0x09, 0xc0, 0x2c, 0x0e, 0xe8, 0x9b, 0x13, 0x17, - 0x70, 0x69, 0x3e, 0x9f, 0x97, 0xa0, 0x2a, 0x68, 0x12, 0x5c, 0xa0, 0x30, - 0x72, 0x56, 0x31, 0x62, 0xe9, 0xfb, 0x6d, 0x95, 0x3b, 0x78, 0x94, 0xc7, - 0x8f, 0xda, 0x2c, 0xd0, 0x6c, 0xc6, 0xe4, 0x88, 0xfa, 0x49, 0x5f, 0x6e, - 0x3f, 0x01, 0x36, 0x70, 0x0c, 0x41, 0x5e, 0x02, 0x5b, 0x03, 0x44, 0xc9, - 0xd8, 0x7d, 0xf7, 0x94, 0x32, 0x32, 0xb2, 0xb7, 0x53, 0xa3, 0x15, 0x60, - 0x76, 0xfc, 0xf8, 0x10, 0x4b, 0x7d, 0x1d, 0xf6, 0xfe, 0x79, 0x68, 0x51, - 0x35, 0xd9, 0xe6, 0x24, 0x6c, 0x2e, 0x21, 0xa5, 0x5f, 0x60, 0xa3, 0x88, - 0x7c, 0x51, 0xbb, 0x04, 0xcd, 0x65, 0x0c, 0xd8, 0xd0, 0x39, 0xff, 0xa3, - 0x63, 0x8e, 0x53, 0xd3, 0xd3, 0xe2, 0x71, 0x74, 0xe7, 0xd0, 0x23, 0xae, - 0x45, 0x29, 0x9a, 0xb9, 0xa0, 0x26, 0xa5, 0x99, 0x7d, 0x4a, 0x48, 0x18, - 0x83, 0x35, 0xf0, 0x63, 0x68, 0x4c, 0xe1, 0xf3, 0xe9, 0x2d, 0x53, 0xe5, - 0x67, 0x9c, 0xc2, 0x5f, 0x83, 0x6f, 0x56, 0x11, 0x12, 0x3a, 0x66, 0xbf, - 0x1e, 0x46, 0xd2, 0x6e, 0x85, 0xe8, 0xda, 0x37, 0xc5, 0x44, 0x7a, 0x05, - 0x89, 0x55, 0x34, 0x85, 0x1a, 0x9d, 0xc7, 0x4e, 0x69, 0x98, 0x59, 0xda, - 0xe4, 0x59, 0x8f, 0x45, 0x23, 0x22, 0x57, 0xc9, 0xb3, 0x36, 0x91, 0x0d, - 0x31, 0x01, 0x75, 0x74, 0x67, 0x4b, 0x53, 0x4e, 0x33, 0xfb, 0x7a, 0x72, - 0x1c, 0xf3, 0xe2, 0xf7, 0x93, 0xd8, 0x86, 0x56, 0xdf, 0xf6, 0x63, 0xc7, - 0xd6, 0x5b, 0x65, 0xc5, 0xd8, 0xc2, 0x40, 0xeb, 0x6e, 0xe8, 0xe2, 0x30, - 0x66, 0xd8, 0xea, 0x63, 0xb4, 0x28, 0x81, 0x46, 0x01, 0x43, 0x9a, 0x70, - 0xe4, 0x03, 0x7b, 0x88, 0xad, 0x12, 0x3f, 0x51, 0xb8, 0x53, 0x26, 0x8e, - 0x18, 0xe0, 0x7b, 0xc8, 0x0f, 0x8a, 0xdc, 0xdf, 0xb7, 0xf5, 0xb1, 0xa6, - 0xa8, 0x6f, 0xb7, 0x02, 0xd0, 0xcc, 0xdb, 0x3b, 0x12, 0x5f, 0x80, 0x86, - 0xdf, 0x92, 0x6a, 0x95, 0xc7, 0x1f, 0x50, 0x05, 0x5f, 0xbd, 0x5b, 0x90, - 0x43, 0x8b, 0x73, 0x6f, 0x61, 0xed, 0xfc, 0x77, 0xda, 0xb5, 0xeb, 0x2e, - 0x24, 0x39, 0x21, 0x22, 0x2f, 0x72, 0x69, 0x22, 0xb3, 0x96, 0x28, 0xbf, - 0xd5, 0xf2, 0xab, 0xc3, 0x50, 0x84, 0x64, 0xf9, 0x08, 0xd2, 0x92, 0xb2, - 0x03, 0x16, 0xbf, 0x7a, 0x4f, 0xa5, 0xd1, 0x8e, 0xd0, 0x78, 0x0e, 0xd5, - 0x86, 0xa5, 0x9a, 0x8c, 0xa1, 0x63, 0x9c, 0x1f, 0x37, 0x06, 0x63, 0x60, - 0xf9, 0xc1, 0x1d, 0x96, 0x94, 0xa5, 0x58, 0x0f, 0x51, 0x52, 0xa9, 0xbc, - 0x09, 0xcc, 0xc9, 0x37, 0x37, 0xb2, 0x2d, 0x30, 0xbb, 0x03, 0x9b, 0x0a, - 0xbd, 0x0d, 0xb5, 0x35, 0x9c, 0xe6, 0xfa, 0x0e, 0x2f, 0x46, 0x03, 0x7a, - 0x22, 0x81, 0x16, 0xed, 0xd1, 0x43, 0x04, 0xaa, 0x2e, 0x0c, 0x4a, 0xd6, - 0x8b, 0x15, 0x30, 0xf7, 0x9a, 0x0b, 0xee, 0x53, 0x78, 0x0b, 0x29, 0x93, - 0x8d, 0x99, 0xf0, 0x51, 0x34, 0x9d, 0x09, 0x03, 0x32, 0xcc, 0x29, 0xfe, - 0x05, 0xaa, 0x2a, 0xa6, 0x9f, 0xbb, 0x98, 0x79, 0x5a, 0x46, 0xbc, 0x52, - 0x50, 0xf2, 0x6f, 0xca, 0x1f, 0x58, 0xc7, 0xf9, 0x61, 0x00, 0xbb, 0x92, - 0x68, 0x13, 0x57, 0x95, 0xc9, 0x5b, 0xd1, 0x76, 0x92, 0x65, 0x4f, 0xe2, - 0xa2, 0xc2, 0x2a, 0xdf, 0x12, 0xbe, 0x2c, 0x99, 0x79, 0xcd, 0x20, 0x5c, - 0xe3, 0x50, 0x76, 0xf3, 0x67, 0x30, 0xc3, 0x36, 0xa0, 0x1c, 0xc8, 0x45, - 0xff, 0xf8, 0x5c, 0xc7, 0xde, 0x93, 0x93, 0x88, 0x74, 0x08, 0xeb, 0x7d, - 0xb0, 0x30, 0xd3, 0x6f, 0x14, 0x00, 0xa9, 0x26, 0x7b, 0x4e, 0x65, 0xad, - 0x30, 0x8e, 0x06, 0x31, 0xb3, 0x34, 0x5b, 0x9b, 0x38, 0xf6, 0xec, 0x3d, - 0xe5, 0x94, 0x9c, 0xbd, 0x90, 0x2b, 0x4d, 0x06, 0x24, 0x6b, 0xc0, 0x6f, - 0xdc, 0x6e, 0x03, 0x4c, 0x99, 0x95, 0x6a, 0x6d, 0xab, 0xa1, 0xd6, 0xeb, - 0x77, 0x99, 0xab, 0xf1, 0xe7, 0xf4, 0x73, 0x75, 0x3a, 0x09, 0x83, 0xe4, - 0x2e, 0xec, 0x3c, 0x47, 0xc8, 0x02, 0xb4, 0xd4, 0x4f, 0xaa, 0xbf, 0x1a, - 0xa7, 0x9e, 0x82, 0x7c, 0x3e, 0xed, 0xbe, 0x05, 0xc8, 0x7f, 0x1e, 0x6d, - 0xbf, 0xd8, 0xb9, 0x0e, 0xc2, 0x94, 0xd1, 0x91, 0x1d, 0x68, 0x5f, 0x6e, - 0xdd, 0xef, 0x5a, 0x0a, 0x44, 0x57, 0x20, 0x79, 0x2f, 0xd8, 0x46, 0xa0, - 0x73, 0x17, 0x22, 0xf4, 0xc9, 0x9d, 0xb5, 0xaa, 0x4f, 0x60, 0x5a, 0x21, - 0x1f, 0x5c, 0xf7, 0x7f, 0xd8, 0x57, 0x47, 0x55, 0x24, 0x11, 0x3f, 0xf1, - 0x08, 0x5b, 0x14, 0x4a, 0xaf, 0xcf, 0x6c, 0xff, 0x7d, 0x48, 0x27, 0x7a, - 0xc2, 0xbb, 0xac, 0xbb, 0xf4, 0x0f, 0x6a, 0x22, 0x90, 0x24, 0x96, 0x6c, - 0x37, 0x7c, 0x11, 0x92, 0x46, 0x39, 0x7c, 0xf1, 0xc5, 0x79, 0x91, 0xe6, - 0x4d, 0x18, 0x5a, 0xcc, 0xa8, 0x2e, 0xc0, 0x44, 0x4b, 0x42, 0x7a, 0x6e, - 0xbe, 0xe1, 0x16, 0xcd, 0xae, 0x0a, 0x7c, 0x2d, 0x5f, 0xd4, 0xd4, 0x42, - 0x7c, 0x26, 0x64, 0xbc, 0x36, 0x1a, 0xf9, 0xf8, 0x0b, 0x3d, 0x9f, 0xc2, - 0x8a, 0xc8, 0x7e, 0xae, 0xeb, 0xa1, 0xfb, 0x85, 0xc1, 0x78, 0x34, 0x90, - 0x8c, 0x3b, 0x3c, 0xa9, 0x94, 0x16, 0x0f, 0x91, 0x26, 0x4d, 0x33, 0x5e, - 0x72, 0x86, 0xc2, 0x95, 0xce, 0x95, 0x5a, 0xea, 0x7a, 0x77, 0xc3, 0x23, - 0xb3, 0xbc, 0x60, 0xad, 0xae, 0x44, 0x1e, 0x7d, 0xde, 0x6e, 0x16, 0xb9, - 0x67, 0x0e, 0x9b, 0x04, 0xb0, 0xbc, 0xe2, 0x0f, 0xe4, 0xe6, 0xdd, 0x42, - 0xff, 0xfb, 0xe9, 0xd8, 0xaf, 0xe7, 0x03, 0xc5, 0x4c, 0x52, 0xfa, 0x78, - 0xd2, 0xa6, 0x16, 0x4c, 0xb0, 0x93, 0x34, 0x84, 0x3a, 0x85, 0x30, 0xf9, - 0x49, 0xc6, 0x6c, 0x9f, 0xff, 0xdd, 0xd8, 0x8b, 0x0c, 0x1e, 0x9e, 0x25, - 0xe5, 0x77, 0x6b, 0x4e, 0xc3, 0xe6, 0xfc, 0x72, 0x4a, 0x36, 0xfe, 0x2d, - 0x72, 0xfe, 0xd2, 0xf5, 0xdf, 0x56, 0x5d, 0x67, 0x45, 0xbd, 0x2d, 0x64, - 0xc8, 0x82, 0x24, 0x3e, 0x44, 0x81, 0x2b, 0xec, 0xd0, 0x8f, 0x84, 0xb6, - 0x24, 0xd5, 0x8d, 0x59, 0x3a, 0x82, 0xe5, 0xdd, 0x80, 0x82, 0x3b, 0x9b, - 0x21, 0xd9, 0x76, 0xa1, 0x97, 0x6c, 0xba, 0x09, 0x0b, 0x17, 0xf9, 0xad, - 0x6e, 0x87, 0xf5, 0x02, 0xd7, 0x70, 0xb2, 0x3c, 0xf1, 0x75, 0x92, 0x5f, - 0x3b, 0xc2, 0x4a, 0xd9, 0x12, 0x30, 0x94, 0xdd, 0xd7, 0x7d, 0x10, 0x84, - 0x67, 0x00, 0xd9, 0x15, 0x68, 0x93, 0x69, 0xfd, 0x70, 0xbc, 0x57, 0x81, - 0xe0, 0xc8, 0x3b, 0x07, 0xa3, 0xe5, 0x63, 0x84, 0x60, 0xd8, 0x3b, 0x89, - 0xd7, 0xaa, 0x80, 0xa5, 0x49, 0x61, 0x72, 0x97, 0x21, 0x0a, 0x24, 0x78, - 0x7e, 0x17, 0xb2, 0xc6, 0x0d, 0x1c, 0xc9, 0xb1, 0x35, 0xbd, 0x52, 0x54, - 0x6b, 0x90, 0xa8, 0xf9, 0xb3, 0x0a, 0x35, 0xbf, 0xc3, 0x16, 0x7f, 0xe8, - 0x47, 0xe9, 0x0e, 0xb0, 0x43, 0x65, 0x46, 0x32, 0xa8, 0xec, 0x08, 0x39, - 0x99, 0xc5, 0x66, 0x7d, 0x3a, 0x00, 0xef, 0x63, 0x57, 0x0a, 0xec, 0xd0, - 0xe8, 0x0a, 0xb3, 0xa3, 0x8d, 0x8f, 0xea, 0xaf, 0x67, 0xe8, 0xd5, 0x81, - 0x26, 0x63, 0x46, 0x1b, 0x48, 0x10, 0xea, 0x7c, 0x27, 0x65, 0x21, 0xf9, - 0x93, 0x72, 0x51, 0x20, 0xe7, 0x3d, 0xeb, 0x8f, 0x04, 0xed, 0x72, 0x7c, - 0xa6, 0x50, 0xec, 0x03, 0xf1, 0xc7, 0x21, 0x8d, 0x66, 0x71, 0x9a, 0xb2, - 0x62, 0xe8, 0xab, 0xf5, 0x3d, 0xf0, 0xa2, 0xd4, 0x32, 0x57, 0x5f, 0x3b, - 0xf5, 0xe7, 0xda, 0x9d, 0xf9, 0xd7, 0xf3, 0x9f, 0xba, 0x04, 0x78, 0x9e, - 0xb9, 0xd6, 0xdf, 0x4e, 0x03, 0xf4, 0x2f, 0xe3, 0xe2, 0x69, 0x1c, 0x5b, - 0x43, 0x83, 0x21, 0x93, 0x3c, 0xff, 0x0b, 0x60, 0x4f, 0xd3, 0xe0, 0x28, - 0x5d, 0xdc, 0x61, 0xcd, 0x33, 0x91, 0x74, 0x02, 0x35, 0xd6, 0xa8, 0x2a, - 0x24, 0x62, 0x37, 0x8d, 0x88, 0x21, 0x44, 0x31, 0xad, 0x0c, 0xcf, 0x4b, - 0x66, 0x08, 0x80, 0xef, 0x62, 0xc4, 0x0c, 0x02, 0xb5, 0xe9, 0x24, 0x43, - 0x94, 0x03, 0xd4, 0x21, 0x9b, 0xf1, 0xf7, 0xa5, 0xf4, 0x1c, 0x7b, 0xb7, - 0xb8, 0x27, 0xc3, 0xb8, 0xdf, 0x31, 0x26, 0x33, 0x80, 0x63, 0x98, 0x5a, - 0x38, 0x9f, 0x96, 0x9e, 0x60, 0x00, 0xb2, 0x15, 0x0c, 0x0a, 0xda, 0x7a, - 0xf9, 0x38, 0x83, 0x6c, 0x30, 0x20, 0x1a, 0x1d, 0xce, 0x3d, 0xbb, 0x8c, - 0xb0, 0xe4, 0x87, 0x62, 0xf0, 0xdd, 0x3b, 0x28, 0x91, 0x67, 0x27, 0xa9, - 0x70, 0x8b, 0x75, 0x7e, 0x4b, 0xcf, 0xd4, 0xf6, 0x8d, 0xde, 0x7c, 0xe9, - 0x24, 0xa3, 0xe2, 0xd9, 0x76, 0xeb, 0x29, 0xfd, 0x0d, 0xf1, 0x21, 0x3c, - 0xf7, 0x96, 0xb9, 0xab, 0x17, 0xd3, 0x27, 0xac, 0x42, 0xa1, 0xbc, 0xee, - 0xb1, 0x46, 0x68, 0x44, 0x9c, 0x2c, 0x49, 0x50, 0x03, 0x58, 0x3e, 0x41, - 0xd7, 0x57, 0x99, 0xb5, 0x16, 0xdd, 0x73, 0x57, 0x81, 0x94, 0x6f, 0x7b, - 0x56, 0x39, 0x70, 0x84, 0x0a, 0x78, 0x56, 0xf4, 0xfc, 0xb9, 0x98, 0x14, - 0x21, 0x2b, 0x55, 0xa4, 0x10, 0x79, 0x34, 0xad, 0x44, 0x6f, 0x63, 0x57, - 0xc9, 0xcd, 0xf5, 0x8d, 0x19, 0xc7, 0xb3, 0x90, 0xce, 0x07, 0x39, 0x43, - 0x86, 0x1a, 0x09, 0x55, 0xe1, 0xb6, 0x9e, 0x7c, 0x4a, 0x39, 0x8b, 0x0b, - 0x98, 0xd1, 0x06, 0xcd, 0x41, 0x5c, 0xac, 0x02, 0x72, 0x70, 0xb3, 0xb9, - 0x9c, 0xc1, 0xb1, 0x4b, 0x4b, 0x10, 0x80, 0xfa, 0xa8, 0x89, 0x01, 0xc5, - 0x70, 0x95, 0x78, 0xe4, 0xa6, 0xf1, 0x7d, 0x85, 0x1c, 0xaa, 0xd0, 0x0f, - 0x94, 0xa4, 0xee, 0xa0, 0x6e, 0x5b, 0x61, 0xc0, 0x30, 0x73, 0x9a, 0xf1, - 0xaa, 0x33, 0x87, 0x9d, 0xe2, 0x58, 0xb8, 0xe6, 0xce, 0x3b, 0xaf, 0x7a, - 0xa5, 0x17, 0x2d, 0x98, 0xf7, 0x91, 0x95, 0x32, 0x97, 0xdb, 0xf1, 0x93, - 0xff, 0x1c, 0xbc, 0x87, 0xe6, 0x47, 0x17, 0x4d, 0xa6, 0x37, 0x3f, 0x9b, - 0x0f, 0x27, 0xc8, 0x9a, 0xc3, 0xf3, 0x03, 0x04, 0x6f, 0x14, 0x58, 0xd6, - 0x61, 0x0e, 0xd9, 0xd1, 0x74, 0x64, 0x7d, 0x16, 0xf5, 0x64, 0x1a, 0x5d, - 0x2d, 0x98, 0xf5, 0xf9, 0xc4, 0x0d, 0x49, 0x2d, 0xb5, 0xe1, 0x33, 0x08, - 0x0c, 0x26, 0x18, 0xb2, 0xc8, 0xd1, 0x0f, 0x41, 0x60, 0xde, 0x0a, 0x06, - 0xe8, 0x3f, 0x06, 0x1d, 0xc4, 0xe9, 0xb2, 0x87, 0x6e, 0x97, 0x89, 0xe8, - 0x16, 0x23, 0x6e, 0x30, 0xef, 0x67, 0x3d, 0xdb, 0x27, 0x18, 0x28, 0x1a, - 0x87, 0x7e, 0xad, 0x36, 0xab, 0x4b, 0x4a, 0x9e, 0x3f, 0x36, 0xd3, 0xd0, - 0x76, 0x4d, 0x4c, 0x4d, 0x26, 0x52, 0xb4, 0xa4, 0x2a, 0x22, 0x1c, 0x68, - 0x81, 0x2b, 0x8b, 0xb0, 0x8a, 0xd9, 0xcd, 0x34, 0xc4, 0x5e, 0xf4, 0x50, - 0x06, 0x59, 0x7d, 0xdc, 0xd3, 0x7f, 0xc5, 0x99, 0xa5, 0x1c, 0x4d, 0xd0, - 0x89, 0xd8, 0xc2, 0x2e, 0x72, 0x14, 0xb3, 0xff, 0x30, 0x49, 0x4c, 0x20, - 0x9f, 0x97, 0x2e, 0xd5, 0x65, 0x1f, 0x1c, 0x86, 0x8b, 0x52, 0x0f, 0xeb, - 0xcd, 0xb5, 0x01, 0xa5, 0xbb, 0xad, 0xe7, 0x89, 0x55, 0x6a, 0x70, 0xc5, - 0xd4, 0x1a, 0x43, 0x51, 0x3e, 0x3a, 0x32, 0x26, 0x35, 0xde, 0x7a, 0x91, - 0xa3, 0x97, 0xb0, 0x9f, 0x40, 0x26, 0x98, 0x8a, 0x32, 0x49, 0x9f, 0x8a, - 0x50, 0x59, 0x9d, 0x0e, 0xa5, 0xb6, 0x42, 0xe5, 0xe6, 0x6f, 0x50, 0x52, - 0xb7, 0x57, 0xfa, 0x44, 0xae, 0xec, 0x4c, 0x18, 0x8b, 0xa9, 0xc4, 0x1c, - 0xb3, 0x40, 0x65, 0x0a, 0xef, 0x98, 0x12, 0x81, 0x21, 0x47, 0xad, 0x33, - 0x3e, 0x04, 0xda, 0xac, 0xc8, 0x1d, 0xb3, 0x36, 0x27, 0xea, 0x6a, 0xeb, - 0x87, 0xdc, 0x68, 0xd7, 0x65, 0xa8, 0x41, 0x46, 0xa6, 0xe4, 0x10, 0x4f, - 0xe5, 0x8f, 0xf5, 0xda, 0x80, 0x7d, 0x87, 0xa4, 0xed, 0x72, 0xfe, 0xe9, - 0xd0, 0x23, 0x2f, 0xd1, 0x65, 0x9d, 0x62, 0x2e, 0x2e, 0xb5, 0xda, 0x6f, - 0xbd, 0xf3, 0xa1, 0xd1, 0x37, 0xc3, 0x1f, 0x82, 0x54, 0xc0, 0xd6, 0x2d, - 0x57, 0xd9, 0x64, 0x0c, 0xb1, 0x88, 0xb2, 0xe0, 0x69, 0x84, 0x0e, 0xfc, - 0xfc, 0xf4, 0x44, 0xcc, 0x40, 0xc3, 0x0b, 0x58, 0x9e, 0x46, 0x22, 0x96, - 0x08, 0x5a, 0x66, 0x39, 0x9b, 0x68, 0x56, 0x61, 0x8c, 0x11, 0x83, 0xb4, - 0x44, 0x07, 0x3c, 0x66, 0x99, 0x93, 0x4c, 0x38, 0xf4, 0xf0, 0x4b, 0x2e, - 0x1b, 0x8d, 0xac, 0x63, 0x30, 0xc6, 0x5a, 0xe4, 0xdd, 0xbc, 0x28, 0x01, - 0x3b, 0xc8, 0x62, 0x2a, 0xbb, 0xa9, 0x23, 0xf3, 0x0b, 0xe3, 0x3f, 0x72, - 0xab, 0xaf, 0x8a, 0xb1, 0x0d, 0x10, 0xca, 0x6d, 0xd5, 0xdd, 0x52, 0x48, - 0x60, 0x91, 0xe4, 0xc9, 0x2d, 0x3d, 0x5c, 0xc5, 0x9f, 0x42, 0x29, 0x29, - 0x78, 0x91, 0x2d, 0xff, 0x4c, 0x17, 0x81, 0x04, 0x12, 0x98, 0x69, 0x0c, - 0xca, 0x3f, 0x02, 0x80, 0x6b, 0x81, 0x9a, 0x01, 0xae, 0xdd, 0xb4, 0x98, - 0x5a, 0xec, 0x4a, 0x72, 0x65, 0x4b, 0x8d, 0x63, 0x13, 0x1a, 0x79, 0x91, - 0x6e, 0x79, 0xfa, 0xd7, 0xe1, 0x95, 0x0d, 0x7c, 0xba, 0x71, 0x84, 0x8e, - 0xbb, 0x96, 0xe0, 0x6f, 0xc7, 0x8f, 0x78, 0x70, 0xc2, 0x3c, 0x2d, 0x94, - 0x30, 0x14, 0x7f, 0x80, 0xe8, 0x9b, 0x6e, 0x41, 0x62, 0x61, 0x49, 0x1f, - 0x24, 0xab, 0xaa, 0xd7, 0xd9, 0x05, 0x08, 0x97, 0x5a, 0x0d, 0xbd, 0x0f, - 0xd8, 0x3c, 0x75, 0x2f, 0x5f, 0xbd, 0x9b, 0xff, 0x76, 0x6c, 0x90, 0x90, - 0x82, 0x55, 0x5d, 0xda, 0x24, 0x02, 0x24, 0x5f, 0x5c, 0xf7, 0xb7, 0x8d, - 0xc5, 0x6f, 0xe4, 0xa3, 0xe4, 0xfd, 0x1b, 0xa4, 0x3d, 0xce, 0x69, 0x6b, - 0x85, 0x0e, 0x56, 0x76, 0x3f, 0xa7, 0x0e, 0xb4, 0x48, 0x3a, 0x1b, 0x7b, - 0x49, 0xe4, 0x2f, 0xfe, 0x68, 0x79, 0x03, 0xe8, 0x0e, 0x2a, 0x5d, 0x77, - 0x1c, 0x0d, 0x87, 0xd7, 0x10, 0xea, 0x50, 0x79, 0xc9, 0x06, 0xfd, 0xd8, - 0x8b, 0x11, 0x3a, 0x1a, 0x8e, 0x2b, 0x95, 0x25, 0x59, 0xec, 0xfc, 0xf7, - 0x26, 0x07, 0x2a, 0x1c, 0xf3, 0x8e, 0x42, 0x1b, 0x70, 0xa1, 0xa3, 0x8a, - 0x60, 0xe5, 0x1a, 0x29, 0x77, 0x41, 0x52, 0xde, 0x47, 0x74, 0x83, 0xa4, - 0x7f, 0x93, 0xb9, 0x14, 0x4f, 0x2e, 0x3f, 0x96, 0x0a, 0x9a, 0xa1, 0x3e, - 0x7c, 0xe1, 0x35, 0x7d, 0xe4, 0xbf, 0xc0, 0x9d, 0x8b, 0x7d, 0xca, 0x27, - 0xbb, 0xf6, 0x4f, 0xec, 0xc3, 0x59, 0xed, 0x66, 0x75, 0x5f, 0x3a, 0xb4, - 0x32, 0xac, 0xd3, 0x79, 0x8a, 0xfa, 0x22, 0x5d, 0xf8, 0x99, 0x9e, 0x43, - 0x3a, 0xc8, 0xac, 0xe1, 0x0a, 0xbc, 0x79, 0x25, 0x9e, 0x5a, 0x5e, 0xf7, - 0x70, 0x6c, 0xb4, 0x2c, 0x5d, 0xf5, 0x83, 0x05, 0xfc, 0xbf, 0x51, 0x14, - 0x54, 0xc3, 0xad, 0xd7, 0xd2, 0xd9, 0xa4, 0x32, 0xbb, 0x93, 0x65, 0xd8, - 0x4c, 0xa6, 0x9b, 0xca, 0x84, 0xf0, 0x57, 0x09, 0x6a, 0xe5, 0x46, 0x26, - 0xd2, 0x40, 0xb0, 0x58, 0xb7, 0x13, 0x25, 0xfa, 0x2d, 0xe6, 0x9b, 0x29, - 0xbc, 0x33, 0xf3, 0xf0, 0xba, 0x00, 0x93, 0xd6, 0x92, 0x79, 0xed, 0xa1, - 0x2c, 0x5e, 0x62, 0x9e, 0x02, 0x8a, 0x84, 0x96, 0xab, 0xc1, 0x0d, 0x02, - 0x0c, 0x35, 0x23, 0x61, 0xae, 0x70, 0xbd, 0xb4, 0x35, 0x8c, 0x09, 0x78, - 0x8b, 0x9e, 0x85, 0x19, 0x78, 0x20, 0xf4, 0x7b, 0x42, 0x92, 0x23, 0x53, - 0xb9, 0x25, 0x9d, 0xab, 0x29, 0xd3, 0xe6, 0xb3, 0x07, 0x26, 0x51, 0x87, - 0xef, 0x12, 0xd2, 0x18, 0x7e, 0xe4, 0x07, 0x24, 0x8d, 0x02, 0x38, 0xf2, - 0xea, 0x5d, 0xc8, 0x08, 0xd4, 0xa9, 0x84, 0x7e, 0x22, 0xbe, 0x69, 0x87, - 0xc9, 0xd0, 0xc6, 0x2d, 0xd0, 0x4b, 0x69, 0xc6, 0x89, 0x0e, 0x1e, 0xff, - 0xbe, 0x15, 0x7f, 0xb2, 0x99, 0x8f, 0xb5, 0xc9, 0x6b, 0x92, 0x45, 0xc3, - 0xa3, 0xcf, 0xc6, 0x33, 0x6d, 0x51, 0x01, 0x71, 0x57, 0x04, 0x19, 0xa6, - 0xb3, 0xea, 0x6f, 0x85, 0x51, 0xae, 0xa8, 0x8e, 0xd8, 0x44, 0xfe, 0x7a, - 0x90, 0x6e, 0x89, 0x17, 0x0d, 0x22, 0x30, 0x50, 0x5d, 0x02, 0x21, 0xd5, - 0xc8, 0xd1, 0x3b, 0x91, 0x2f, 0xba, 0x0a, 0x75, 0xc4, 0x47, 0xf8, 0x9e, - 0x33, 0xa1, 0x8c, 0xef, 0x1d, 0xec, 0x68, 0x73, 0xd7, 0x33, 0x04, 0x77, - 0x30, 0x1e, 0xc2, 0x6b, 0xd6, 0x0b, 0xc9, 0x5f, 0x16, 0x81, 0x7f, 0xbd, - 0x8d, 0xaa, 0xd1, 0xe0, 0xbd, 0x7b, 0xf2, 0x6d, 0x29, 0x6b, 0xbc, 0x22, - 0xe5, 0x89, 0xca, 0x27, 0xbe, 0x97, 0x11, 0x1c, 0x5e, 0x5d, 0x66, 0x7d, - 0x69, 0x36, 0xe5, 0x41, 0x3a, 0xc9, 0xfb, 0x56, 0xc7, 0x8e, 0x8c, 0x2b, - 0x57, 0x02, 0x1f, 0xb7, 0xbc, 0x6f, 0xf8, 0x2a, 0xc9, 0xa7, 0x18, 0x78, - 0x8b, 0xcb, 0xa1, 0x68, 0x41, 0xed, 0x83, 0xfb, 0x7d, 0xd0, 0x1b, 0x5a, - 0xc3, 0x46, 0xb6, 0xb7, 0x96, 0x93, 0x9d, 0x99, 0x0b, 0x6d, 0xf6, 0x07, - 0x00, 0xe1, 0x17, 0xce, 0x0d, 0x4a, 0x63, 0xfe, 0x77, 0x33, 0xc9, 0x95, - 0xb0, 0xd4, 0xae, 0xc7, 0x5e, 0x66, 0x54, 0x49, 0x0c, 0x80, 0x42, 0xf7, - 0x24, 0x93, 0x5a, 0x3f, 0xcb, 0x2d, 0xfa, 0x03, 0x72, 0x57, 0x3b, 0xfa, - 0x78, 0x20, 0x80, 0xee, 0xb2, 0x02, 0x6b, 0x3d, 0xcf, 0x94, 0x24, 0x13, - 0x3c, 0xcf, 0xf9, 0x7d, 0xff, 0x6e, 0x9f, 0x44, 0xcc, 0x3e, 0x42, 0x1f, - 0xbc, 0x2c, 0x4a, 0x67, 0x50, 0x13, 0x8a, 0xa8, 0x9e, 0xa7, 0x4f, 0xd2, - 0x15, 0xae, 0xdd, 0x6b, 0xad, 0xd0, 0xe3, 0xfb, 0x1a, 0xc1, 0x4c, 0xf7, - 0x79, 0x0f, 0x13, 0x49, 0x5d, 0x3c, 0xda, 0xbb, 0xd3, 0xd8, 0x8f, 0x86, - 0x3f, 0x45, 0x85, 0x41, 0x0e, 0x6a, 0x26, 0xb7, 0x37, 0xc9, 0x23, 0xe1, - 0x83, 0x91, 0xa7, 0x38, 0xf9, 0xe0, 0x09, 0xd8, 0x95, 0x5f, 0x04, 0x76, - 0xc8, 0x20, 0x95, 0x51, 0xc5, 0x7d, 0xd7, 0xc5, 0x39, 0x4e, 0x7a, 0x8e, - 0xbb, 0x71, 0xa5, 0xe4, 0xdc, 0x6a, 0xf1, 0x45, 0x7a, 0xf2, 0x1f, 0x75, - 0x0a, 0x3b, 0xb5, 0x06, 0xc3, 0x42, 0xd6, 0x9a, 0xea, 0xa5, 0xef, 0x0f, - 0x1b, 0x5f, 0x53, 0xe7, 0xcc, 0x6d, 0xa6, 0x9a, 0x92, 0xda, 0x4b, 0x85, - 0xc4, 0x99, 0x6b, 0xc6, 0xdf, 0x4b, 0x0c, 0x75, 0x67, 0x5e, 0x66, 0xd4, - 0x66, 0xf3, 0xec, 0xb1, 0xfc, 0x45, 0xec, 0xa1, 0x5c, 0xc3, 0xb3, 0x67, - 0x74, 0x2a, 0xf1, 0x19, 0x7b, 0x93, 0x53, 0xd8, 0xe4, 0x23, 0x0d, 0xd3, - 0x55, 0x9d, 0x9f, 0x89, 0xfc, 0xc4, 0xbb, 0x64, 0xc4, 0x71, 0xcb, 0xe3, - 0x27, 0xe7, 0xfd, 0x45, 0xee, 0x03, 0xa8, 0x76, 0xbd, 0x4b, 0x63, 0x2e, - 0x42, 0x77, 0x5e, 0x40, 0xdb, 0x55, 0xa2, 0xc9, 0x4c, 0x94, 0x82, 0xb4, - 0xfd, 0xca, 0xd1, 0x3a, 0xd2, 0x1c, 0x72, 0xd9, 0x4b, 0x5f, 0x02, 0x36, - 0xa0, 0x69, 0x86, 0x9e, 0x96, 0x16, 0x37, 0xba, 0x92, 0x4e, 0x36, 0xe3, - 0xc6, 0x78, 0xa7, 0x10, 0x83, 0x37, 0x50, 0x32, 0xd5, 0x3a, 0x87, 0xd9, - 0x8c, 0x87, 0x89, 0x68, 0x5a, 0x21, 0x13, 0x7d, 0x3a, 0x56, 0xc0, 0x0b, - 0xe9, 0x02, 0x21, 0x82, 0x7e, 0x99, 0xd6, 0x11, 0xcc, 0xa8, 0xd5, 0xe7, - 0x8c, 0xb9, 0x77, 0xde, 0xc3, 0xb5, 0x36, 0x23, 0x7d, 0x27, 0xe7, 0x81, - 0xf7, 0x70, 0xbe, 0x90, 0x08, 0xfd, 0x59, 0xb3, 0xd0, 0x59, 0x5c, 0xbb, - 0x4e, 0xdc, 0xf8, 0x62, 0xa4, 0xa8, 0xff, 0x1f, 0x2b, 0x53, 0x4b, 0xf3, - 0x7e, 0xce, 0x49, 0x2a, 0x37, 0x0e, 0x59, 0xb3, 0x3b, 0x00, 0xda, 0xf3, - 0x66, 0x85, 0xe8, 0xc8, 0x02, 0xb0, 0x8b, 0x8a, 0xef, 0xe1, 0xee, 0x8d, - 0x7a, 0xd5, 0xc1, 0x60, 0x25, 0x04, 0x23, 0xed, 0x13, 0x16, 0x59, 0x61, - 0x51, 0x20, 0x49, 0x48, 0xe3, 0xa3, 0x09, 0x3f, 0x7e, 0x3a, 0x92, 0xf9, - 0x35, 0x33, 0x60, 0x8b, 0x7c, 0xa5, 0x90, 0xda, 0xc5, 0x32, 0x94, 0x7c, - 0x0c, 0xc8, 0x3a, 0x63, 0x56, 0x81, 0x27, 0x01, 0x91, 0x01, 0x60, 0xf9, - 0x16, 0x96, 0x7f, 0x19, 0x32, 0x42, 0xff, 0xbc, 0x8e, 0x89, 0x74, 0xe4, - 0xe5, 0x20, 0x69, 0xe4, 0x64, 0xef, 0xa4, 0xb2, 0x93, 0x5d, 0xe7, 0x17, - 0x67, 0xdf, 0xe2, 0x44, 0xb9, 0xf2, 0x90, 0xf4, 0xad, 0x66, 0xb0, 0xf4, - 0xbe, 0x2c, 0x63, 0x6a, 0xcb, 0x02, 0x56, 0x79, 0xc9, 0x83, 0xd8, 0x34, - 0xad, 0x90, 0xf6, 0x23, 0xdf, 0x19, 0x24, 0x5b, 0xbf, 0x68, 0x83, 0xdc, - 0x15, 0xd3, 0x28, 0x96, 0x1f, 0x44, 0xe9, 0x91, 0x5c, 0xa7, 0x1f, 0xac, - 0x02, 0x44, 0x0d, 0xed, 0xce, 0x31, 0x83, 0x08, 0xd7, 0x54, 0xf4, 0xa0, - 0x50, 0xcb, 0x1d, 0x61, 0x9a, 0x94, 0xa7, 0xfd, 0xfd, 0xce, 0x22, 0x9c, - 0x7e, 0xdf, 0x67, 0x18, 0x8e, 0x0d, 0x3c, 0x5e, 0x5a, 0x64, 0x44, 0x4e, - 0x26, 0xe6, 0xec, 0x0f, 0x6f, 0x4d, 0xe3, 0xc0, 0x44, 0x42, 0x47, 0x39, - 0x83, 0x7c, 0xca, 0x65, 0x80, 0x75, 0xb7, 0xaa, 0x13, 0xcc, 0x43, 0x1f, - 0x0e, 0x08, 0x33, 0x71, 0x39, 0xb1, 0xa9, 0x2d, 0x9c, 0xcd, 0x7a, 0x20, - 0x56, 0x94, 0xa6, 0x70, 0xbe, 0xb5, 0xc2, 0x00, 0xba, 0xac, 0x33, 0xaf, - 0x82, 0x93, 0x6c, 0xec, 0x74, 0x62, 0xee, 0x38, 0x49, 0x22, 0xe3, 0xe4, - 0x7b, 0x51, 0x17, 0xa6, 0xe3, 0x6c, 0x26, 0xfa, 0x9b, 0x85, 0x1a, 0xa7, - 0xbf, 0x8a, 0xea, 0x1e, 0xcc, 0x08, 0xff, 0xa7, 0x8f, 0x8a, 0x28, 0x6e, - 0x79, 0xe2, 0x0b, 0x97, 0x99, 0x09, 0x87, 0x58, 0xe2, 0x3c, 0xac, 0xd8, - 0x1d, 0x72, 0xe9, 0x32, 0xd7, 0x24, 0x70, 0x59, 0x66, 0x35, 0xdf, 0x84, - 0x21, 0x7c, 0x8e, 0x1b, 0xb3, 0x10, 0x4d, 0x5a, 0xaa, 0xf2, 0xbb, 0xe9, - 0x86, 0xaa, 0x62, 0xe8, 0x64, 0xbc, 0xf3, 0x1f, 0xf3, 0xed, 0x77, 0xd6, - 0xd3, 0x59, 0xaf, 0x03, 0xed, 0x6a, 0xc1, 0xc1, 0xba, 0xcf, 0x88, 0x09, - 0xad, 0xed, 0xb5, 0x04, 0x0b, 0xab, 0xd9, 0x56, 0x7f, 0x2a, 0x55, 0xe6, - 0x6b, 0x0e, 0xb6, 0x5b, 0xbd, 0x39, 0x42, 0xbf, 0x6e, 0x68, 0xe7, 0xf5, - 0x48, 0xb2, 0x8f, 0xd5, 0x9b, 0x37, 0x61, 0x60, 0x3f, 0xaf, 0xae, 0x0f, - 0x7f, 0xc9, 0xb4, 0xc4, 0xee, 0x9b, 0x18, 0x98, 0x2e, 0xd4, 0x85, 0x47, - 0x78, 0x7e, 0x90, 0xa5, 0xdd, 0xc5, 0xa9, 0x7f, 0x1e, 0xab, 0x43, 0x8d, - 0x10, 0x44, 0xc2, 0x13, 0x67, 0x6d, 0x8f, 0x26, 0x03, 0x70, 0xe2, 0xda, - 0xa3, 0x6e, 0x28, 0x5d, 0xb3, 0x79, 0xa4, 0x14, 0x8e, 0x4c, 0x34, 0xaa, - 0x0e, 0xfd, 0x1e, 0x69, 0x17, 0x1d, 0xde, 0xd8, 0x50, 0x3c, 0xaf, 0x77, - 0x4a, 0x6d, 0x17, 0x6e, 0xdf, 0xfd, 0x7b, 0xdf, 0xe9, 0x52, 0x83, 0xed, - 0x1b, 0x77, 0x9d, 0x2d, 0x0e, 0x5e, 0x07, 0x26, 0x5a, 0xb8, 0xf1, 0xb9, - 0x7f, 0x06, 0xb0, 0xb1, 0x1b, 0x55, 0x01, 0x27, 0x1d, 0xe8, 0xa8, 0xb5, - 0x6a, 0xb8, 0x6e, 0x2f, 0x17, 0xba, 0x72, 0x2f, 0xc7, 0x49, 0xa9, 0xd6, - 0x9f, 0x0c, 0x83, 0xc8, 0xfd, 0x34, 0xf7, 0xf6, 0x16, 0x1d, 0x87, 0x5c, - 0x04, 0x24, 0x6f, 0x3d, 0xeb, 0xec, 0x2e, 0x86, 0x22, 0x35, 0x2a, 0x2f, - 0xeb, 0xf8, 0x1e, 0xe4, 0xb7, 0x48, 0xf8, 0x15, 0xbf, 0x47, 0xf5, 0x2f, - 0xd8, 0xc3, 0x01, 0x86, 0x5c, 0x9b, 0x66, 0x51, 0xe2, 0xc4, 0x64, 0x08, - 0x83, 0x12, 0xf8, 0xfe, 0x1c, 0x3a, 0xa0, 0x0e, 0xfa, 0xb6, 0xa0, 0xef, - 0xd3, 0xb3, 0xa6, 0x5d, 0x6c, 0x9c, 0x5e, 0x82, 0x02, 0x95, 0x8e, 0xe9, - 0x6f, 0x80, 0x4a, 0x2a, 0x77, 0x66, 0xf4, 0xc1, 0xec, 0xec, 0x55, 0x2f, - 0x55, 0xeb, 0x79, 0xb6, 0xf1, 0xc7, 0xe3, 0xc2, 0x27, 0xca, 0x08, 0xf2, - 0x93, 0x4c, 0xee, 0x43, 0x84, 0xac, 0x4a, 0xb3, 0x62, 0x35, 0xb2, 0xad, - 0xe5, 0x5a, 0x27, 0xb5, 0x6d, 0x79, 0xc8, 0x29, 0xd8, 0xbd, 0x35, 0x22, - 0x6d, 0x30, 0xd5, 0xb9, 0x60, 0x9f, 0xf1, 0xce, 0x54, 0xcc, 0x48, 0xc7, - 0x52, 0x35, 0xcd, 0x9c, 0xbe, 0xc0, 0x0a, 0x8b, 0x8f, 0x27, 0x14, 0xa6, - 0xf9, 0x7d, 0x0d, 0xe5, 0x14, 0xca, 0x19, 0x96, 0x21, 0x33, 0x7d, 0x2a, - 0xac, 0x7c, 0x4b, 0x97, 0xdd, 0xba, 0x15, 0x4d, 0xd9, 0xd7, 0xcb, 0xd4, - 0x30, 0x18, 0xb1, 0x9d, 0x59, 0x5e, 0xe7, 0xd7, 0x6b, 0xfd, 0xaa, 0x24, - 0xe9, 0x9d, 0xc1, 0x21, 0x61, 0x11, 0x02, 0xc2, 0x7b, 0x7b, 0x93, 0xce, - 0x99, 0x60, 0x49, 0x4c, 0xda, 0xfc, 0x9b, 0x1c, 0xfd, 0x58, 0x43, 0x49, - 0x55, 0xff, 0x98, 0x10, 0x4a, 0xe3, 0xda, 0xb4, 0xdc, 0x33, 0x36, 0x29, - 0xe0, 0x29, 0x90, 0x81, 0x0f, 0x7b, 0xe4, 0xa4, 0xa2, 0xb4, 0x5d, 0x2d, - 0x6b, 0x3b, 0x5b, 0x82, 0x4d, 0x38, 0xfd, 0x15, 0x04, 0x11, 0x02, 0x00, - 0x24, 0xea, 0x2f, 0xa5, 0x03, 0x93, 0x2c, 0x9c, 0x75, 0x7e, 0x34, 0xba, - 0xba, 0x9e, 0xde, 0x22, 0xa1, 0xdc, 0xcf, 0xd6, 0x0c, 0x50, 0xa0, 0x1b, - 0xf5, 0x8f, 0xb5, 0x4c, 0x16, 0x33, 0x66, 0xa7, 0xec, 0xc9, 0x20, 0xce, - 0xd5, 0x96, 0x99, 0x55, 0xfb, 0x63, 0xe4, 0xf6, 0x07, 0xad, 0xb0, 0x8f, - 0xcd, 0xcb, 0x4f, 0x90, 0xda, 0x0f, 0xe3, 0x1c, 0x3b, 0xae, 0xa5, 0xcb, - 0x38, 0xe8, 0x00, 0x58, 0xfb, 0x38, 0x18, 0x91, 0x6b, 0xb2, 0xce, 0xb8, - 0x88, 0xdf, 0x31, 0x9c, 0x0b, 0x23, 0x20, 0x16, 0x30, 0xb2, 0x1e, 0xf6, - 0x68, 0x98, 0xaa, 0xfa, 0xa7, 0x32, 0xd4, 0x56, 0x06, 0x3c, 0xe9, 0xae, - 0x44, 0xf1, 0x1a, 0x76, 0xe0, 0x0d, 0xdb, 0x2a, 0x46, 0xcd, 0x16, 0x73, - 0xb5, 0x20, 0x67, 0x4d, 0x7c, 0x4d, 0xff, 0xc1, 0x72, 0xbc, 0x8a, 0xb8, - 0xe6, 0x61, 0x5c, 0x20, 0xa5, 0xc4, 0x87, 0x0d, 0xc0, 0x51, 0x5a, 0xf6, - 0x63, 0xbd, 0x56, 0xc0, 0x6c, 0xb1, 0xec, 0x49, 0x44, 0xb1, 0xe6, 0x73, - 0x0c, 0xea, 0x0e, 0x93, 0xd3, 0xcb, 0xe4, 0xc2, 0x2b, 0x13, 0x73, 0x10, - 0xc0, 0xa7, 0xc8, 0xeb, 0xb5, 0xda, 0x8a, 0x27, 0x3d, 0x69, 0xfa, 0x54, - 0xf1, 0xc9, 0xa0, 0x71, 0xcc, 0xd4, 0x3f, 0x11, 0x90, 0x73, 0x3e, 0x70, - 0xce, 0xb3, 0x9a, 0x15, 0xd5, 0x52, 0xe9, 0x7f, 0x95, 0xf6, 0x3c, 0xa8, - 0x96, 0xe9, 0x30, 0x49, 0x7b, 0x17, 0x3b, 0x7c, 0x6d, 0xa4, 0x5d, 0x96, - 0x6b, 0x37, 0x2a, 0x57, 0x70, 0x87, 0x49, 0x2c, 0x40, 0x35, 0x63, 0x22, - 0x1b, 0x75, 0x76, 0xf7, 0xaf, 0xba, 0xea, 0x54, 0x4d, 0xc7, 0x68, 0x88, - 0xe7, 0x7b, 0xa1, 0x35, 0x98, 0x07, 0x48, 0x58, 0x5c, 0xc6, 0xfe, 0x45, - 0x84, 0x04, 0xe1, 0x83, 0xde, 0x24, 0x40, 0x7d, 0xfa, 0x68, 0xdd, 0x5b, - 0x06, 0x33, 0x58, 0x2f, 0x08, 0x44, 0xab, 0x0a, 0x31, 0x85, 0xf2, 0x80, - 0xa3, 0x19, 0x6c, 0x01, 0x6c, 0xc2, 0xa2, 0x78, 0x06, 0xb1, 0xf9, 0x9b, - 0x3e, 0x30, 0x50, 0x8e, 0xf5, 0x3b, 0x85, 0x44, 0x07, 0xf1, 0x3e, 0x92, - 0xe3, 0x36, 0xae, 0x6d, 0xe8, 0x2b, 0xe8, 0x9e, 0x10, 0xcf, 0x77, 0x16, - 0x31, 0xee, 0x47, 0xfc, 0x5c, 0x82, 0xa0, 0x02, 0xfc, 0xc9, 0xc8, 0xe6, - 0x1e, 0x81, 0xe2, 0x38, 0x56, 0xfe, 0x0a, 0x47, 0x0f, 0xdd, 0x4b, 0x87, - 0x4e, 0x84, 0xf7, 0x38, 0xb0, 0xff, 0x5c, 0xd4, 0xdf, 0xc5, 0x96, 0x61, - 0xe3, 0x9a, 0x39, 0x3a, 0x73, 0x15, 0x07, 0x2d, 0x94, 0xd8, 0x66, 0x49, - 0x71, 0x90, 0x76, 0x28, 0x03, 0x80, 0x72, 0x1b, 0xcc, 0x2c, 0x80, 0x73, - 0xb8, 0x30, 0x47, 0xa7, 0x9c, 0xbe, 0x56, 0x84, 0xcb, 0x6d, 0x5d, 0x29, - 0xa0, 0xf9, 0xa4, 0x9f, 0x2c, 0x15, 0x05, 0x4f, 0xde, 0xa0, 0xe9, 0x64, - 0x2b, 0xc9, 0xae, 0xc4, 0xd1, 0x4b, 0xdb, 0xb9, 0x24, 0x76, 0x4a, 0x70, - 0xd0, 0x6c, 0xd7, 0x3e, 0x91, 0x90, 0xa8, 0xe4, 0x0c, 0x50, 0xfb, 0xb5, - 0x0b, 0x58, 0xc2, 0x2d, 0x1c, 0x47, 0xae, 0xee, 0xdc, 0x78, 0x41, 0x18, - 0x51, 0xc1, 0x88, 0x04, 0xb4, 0x4e, 0x13, 0x98, 0x51, 0x26, 0xd0, 0xc8, - 0x59, 0xc6, 0xba, 0xf2, 0xb4, 0xd3, 0x38, 0x0e, 0xad, 0xd0, 0x07, 0x50, - 0xcb, 0x93, 0x4e, 0xb9, 0xd5, 0xd0, 0xc3, 0x14, 0xce, 0xd5, 0x69, 0xd6, - 0x68, 0x93, 0xd6, 0x59, 0xd7, 0x29, 0x63, 0x7e, 0x99, 0x39, 0x3b, 0x30, - 0x38, 0x1a, 0x3f, 0x78, 0xa0, 0x1f, 0x42, 0x95, 0xbd, 0x47, 0x66, 0x8d, - 0x07, 0xb9, 0x5c, 0xa7, 0xae, 0x59, 0x25, 0x95, 0x22, 0x3e, 0xcd, 0xd2, - 0x93, 0xed, 0xbf, 0xbe, 0xfe, 0xf9, 0x9e, 0x50, 0x66, 0x15, 0x7a, 0xea, - 0x53, 0x94, 0x50, 0x70, 0xe9, 0xd9, 0x84, 0x3d, 0xf5, 0x44, 0x3f, 0xca, - 0x34, 0xfa, 0xac, 0xc5, 0x96, 0xda, 0xc8, 0xff, 0x70, 0x98, 0xa9, 0x44, - 0x30, 0xb2, 0xd9, 0x77, 0xd7, 0x3e, 0x6b, 0x88, 0x39, 0x3b, 0xc2, 0xa8, - 0x43, 0x9e, 0x65, 0xa2, 0x41, 0xb8, 0xa0, 0x3a, 0xdf, 0xc1, 0x4c, 0xa4, - 0xb1, 0x6e, 0x4f, 0x44, 0x61, 0x08, 0x5a, 0x27, 0x27, 0xe0, 0x6b, 0x08, - 0x05, 0x52, 0xaf, 0x6c, 0x73, 0x52, 0x6a, 0xae, 0x89, 0xe5, 0x70, 0x59, - 0x3c, 0xf9, 0x2c, 0x5e, 0xdf, 0x17, 0x23, 0x86, 0xc5, 0x67, 0xdb, 0xca, - 0xb0, 0xb7, 0xe3, 0x59, 0x38, 0xeb, 0x33, 0x14, 0xe5, 0xb0, 0xa4, 0x53, - 0x88, 0x63, 0xa3, 0x64, 0xc0, 0x83, 0x97, 0x8e, 0x8a, 0x26, 0xf4, 0x03, - 0x36, 0xab, 0x11, 0x05, 0x39, 0xd2, 0xe1, 0x93, 0xd4, 0x63, 0x4a, 0x47, - 0x9e, 0xc3, 0xae, 0x67, 0xe2, 0xdd, 0xf6, 0x01, 0x99, 0xc2, 0x51, 0x63, - 0x4f, 0x14, 0x71, 0xb0, 0x5e, 0x53, 0x81, 0x83, 0x73, 0x57, 0x55, 0x7b, - 0xfa, 0x14, 0x60, 0xbc, 0x92, 0x7d, 0x39, 0x70, 0x8e, 0xa0, 0xe5, 0x89, - 0x44, 0x7f, 0x23, 0x56, 0x67, 0xcd, 0x73, 0x1d, 0xaa, 0xae, 0x03, 0x08, - 0xc6, 0xd6, 0xe6, 0xa1, 0xb4, 0x8b, 0x6d, 0x77, 0x2d, 0x11, 0xc8, 0xdb, - 0x43, 0xbd, 0xa1, 0xe0, 0xf4, 0xc0, 0xe1, 0xb4, 0x76, 0xcb, 0xf5, 0x24, - 0xa7, 0x85, 0x5d, 0x01, 0x23, 0x1a, 0x82, 0x39, 0x2e, 0xa9, 0x26, 0xd4, - 0xcd, 0x88, 0x91, 0x3b, 0xd7, 0x4c, 0x0a, 0x58, 0x29, 0x85, 0xed, 0x38, - 0x7c, 0xb2, 0xbe, 0x6a, 0x5f, 0x49, 0x7f, 0x10, 0x71, 0xe7, 0x03, 0x13, - 0x2f, 0x2a, 0x2e, 0xbc, 0xf0, 0x5b, 0x17, 0xd0, 0xf3, 0x5d, 0xe4, 0x72, - 0x8e, 0xac, 0x47, 0x69, 0x88, 0x12, 0xdf, 0x56, 0x31, 0x93, 0x83, 0x44, - 0x5d, 0x2f, 0x1f, 0x19, 0x2a, 0xfe, 0xd3, 0x61, 0xdd, 0x7e, 0xd8, 0x56, - 0xeb, 0x73, 0x65, 0xf1, 0x18, 0xc0, 0x3e, 0x47, 0x8c, 0x4c, 0x52, 0x60, - 0x40, 0x3e, 0xb2, 0xb9, 0x32, 0x17, 0xde, 0x19, 0xf2, 0xda, 0x6f, 0x1b, - 0x75, 0x9b, 0x40, 0x45, 0x61, 0x90, 0x45, 0x7e, 0x24, 0x99, 0x6f, 0x13, - 0xbd, 0x94, 0xc0, 0xf0, 0x84, 0x3d, 0xa4, 0xad, 0xc4, 0x1e, 0x79, 0x76, - 0x2f, 0xb0, 0x24, 0xad, 0x03, 0xf6, 0xd3, 0x9a, 0x6f, 0x26, 0x16, 0x13, - 0xf1, 0x4b, 0x88, 0x06, 0x79, 0xd9, 0x65, 0x4d, 0x09, 0x2b, 0xe3, 0xc7, - 0x78, 0xb6, 0xe6, 0x49, 0x16, 0xb8, 0x43, 0xb9, 0xec, 0x3f, 0xf1, 0x31, - 0x04, 0xbe, 0x81, 0xf6, 0xbb, 0x6e, 0x13, 0xde, 0x16, 0x27, 0x52, 0x7b, - 0x51, 0x72, 0xc7, 0xbd, 0x11, 0x13, 0x8b, 0x26, 0x8e, 0x36, 0xf4, 0x86, - 0xf6, 0x33, 0xe5, 0x37, 0x5b, 0x90, 0x56, 0x56, 0xa1, 0xca, 0x10, 0xc4, - 0x91, 0xce, 0xc0, 0x6a, 0xd7, 0x4d, 0xdd, 0x03, 0x95, 0x04, 0x79, 0x44, - 0x96, 0xe7, 0xcc, 0x2c, 0xf9, 0x2f, 0x6c, 0x31, 0xfb, 0xad, 0x1d, 0x11, - 0x81, 0xb1, 0x58, 0x48, 0x96, 0x0d, 0xf4, 0x47, 0x52, 0x27, 0x68, 0x61, - 0x19, 0xd6, 0x46, 0xcf, 0x2e, 0xeb, 0xeb, 0x37, 0xeb, 0xc5, 0x87, 0xc4, - 0x75, 0x86, 0x9f, 0xdf, 0x96, 0xaa, 0xde, 0x85, 0xf2, 0x27, 0xed, 0x17, - 0xe0, 0x8a, 0x9c, 0x85, 0x47, 0x9f, 0x0e, 0xb7, 0xc0, 0x5d, 0x62, 0x04, - 0x51, 0xe0, 0xd1, 0x0c, 0x12, 0xca, 0xa0, 0x7f, 0xec, 0x3a, 0xe5, 0x0a, - 0xd1, 0x6e, 0x95, 0x5e, 0x06, 0xb5, 0xae, 0xe9, 0xa4, 0xd9, 0xf1, 0x7e, - 0x61, 0xf5, 0x18, 0x11, 0x3b, 0xe5, 0xba, 0xed, 0x3e, 0x44, 0x25, 0xe4, - 0x69, 0x4f, 0x6a, 0xf4, 0x99, 0xc2, 0x40, 0x9a, 0x83, 0x09, 0x8d, 0xf5, - 0x70, 0xb9, 0xca, 0xe0, 0x9d, 0xdf, 0xa0, 0x5c, 0x70, 0xd1, 0xe0, 0x59, - 0x58, 0x5d, 0x54, 0x45, 0x41, 0x0d, 0x46, 0x3e, 0xe3, 0x24, 0x35, 0xa8, - 0x04, 0x02, 0x5f, 0x86, 0x10, 0x51, 0x6e, 0xb8, 0x44, 0x9a, 0xc9, 0x0e, - 0xb2, 0x48, 0xab, 0x14, 0xd1, 0x93, 0x11, 0xd5, 0xda, 0x28, 0xf3, 0xd3, - 0xdb, 0x9d, 0x81, 0x33, 0x64, 0xea, 0xd9, 0x74, 0xdc, 0x1c, 0xcf, 0xb5, - 0x5e, 0x86, 0x7a, 0x14, 0x48, 0xe3, 0xa4, 0xd9, 0x6c, 0xb3, 0xa2, 0xa8, - 0xc2, 0xbe, 0x9f, 0x31, 0x96, 0x74, 0x89, 0xb4, 0x7b, 0xfd, 0x2d, 0x49, - 0xbe, 0xd1, 0x48, 0xa3, 0xf6, 0x2c, 0xae, 0x2f, 0xa5, 0x18, 0x9a, 0x50, - 0x23, 0xbf, 0xaa, 0x3a, 0x19, 0xbe, 0xef, 0x8b, 0x94, 0x9c, 0xf9, 0xaf, - 0x09, 0xcd, 0x6b, 0xe2, 0x45, 0xa4, 0x66, 0xe8, 0x25, 0x3e, 0x1d, 0xd7, - 0x43, 0x33, 0xee, 0x1e, 0x0b, 0x46, 0xb4, 0x35, 0xe9, 0xff, 0x9a, 0x29, - 0xc0, 0xcc, 0x88, 0x81, 0x4d, 0xc0, 0x1b, 0x13, 0x3d, 0xbd, 0x65, 0x4e, - 0xe5, 0x76, 0x01, 0x5f, 0x14, 0x81, 0xd3, 0x8e, 0x92, 0x29, 0x74, 0xe7, - 0x62, 0xf9, 0x1a, 0x9e, 0x4a, 0x34, 0x59, 0x60, 0x43, 0x29, 0x08, 0xb8, - 0x9e, 0x49, 0x8e, 0x00, 0xb5, 0x6b, 0x95, 0xb1, 0xc4, 0xee, 0x51, 0x2b, - 0x3d, 0x47, 0x3d, 0x29, 0xc2, 0x18, 0xd7, 0x2b, 0xb7, 0x2b, 0x4b, 0xbd, - 0xfa, 0x6d, 0x7d, 0x5b, 0x1d, 0xd5, 0xe1, 0xdb, 0xea, 0x73, 0x49, 0x33, - 0xb1, 0x93, 0x6a, 0x37, 0x39, 0xa9, 0xae, 0x84, 0x9e, 0x57, 0x29, 0x03, - 0xc8, 0xe0, 0xa6, 0x8c, 0xb7, 0x28, 0xf2, 0xd0, 0x80, 0xd2, 0x2d, 0xb3, - 0x02, 0x70, 0x10, 0x72, 0xd3, 0xe6, 0x8a, 0xaf, 0x73, 0x97, 0xc9, 0xe9, - 0xb2, 0x85, 0x4a, 0x86, 0xcc, 0x57, 0x34, 0x2f, 0xd1, 0x2b, 0x52, 0xc4, - 0xb7, 0xa8, 0x43, 0xff, 0x51, 0x0c, 0xa9, 0x2b, 0x26, 0x8b, 0x9e, 0x66, - 0x1e, 0x4e, 0xa0, 0xb5, 0x6c, 0xd3, 0x52, 0xc3, 0x18, 0x2c, 0x39, 0x9c, - 0x7d, 0xab, 0xed, 0xc1, 0x31, 0x3b, 0xc1, 0xe5, 0xbd, 0x11, 0x0b, 0x47, - 0x9b, 0xb3, 0x6d, 0x9b, 0x24, 0x4f, 0xa3, 0x10, 0x73, 0x1b, 0xe0, 0xe6, - 0x18, 0x37, 0x1f, 0x54, 0x71, 0x81, 0x32, 0xa3, 0x0d, 0xf1, 0xa2, 0x93, - 0xa1, 0x53, 0x11, 0x41, 0xe4, 0x9b, 0x1b, 0x8d, 0xae, 0xc6, 0x4e, 0xda, - 0x73, 0x78, 0x6a, 0xed, 0x44, 0x24, 0x4b, 0x68, 0x77, 0xbb, 0x23, 0xff, - 0x97, 0x04, 0x89, 0x32, 0xad, 0x4f, 0xfc, 0xe6, 0x83, 0xaa, 0x1f, 0xb9, - 0xd8, 0xd8, 0x3b, 0xf1, 0x8d, 0x65, 0xbf, 0x2d, 0xed, 0x7c, 0x85, 0x1f, - 0x51, 0xe0, 0xb8, 0xfa, 0xfd, 0x9a, 0x70, 0xbe, 0x6b, 0x2f, 0x9d, 0xbb, - 0x61, 0x42, 0x45, 0x0d, 0xa7, 0xe0, 0x51, 0x63, 0xd7, 0xc7, 0x8d, 0x59, - 0x00, 0x9f, 0xc4, 0x05, 0x78, 0x8a, 0x06, 0xb0, 0xba, 0x6b, 0xbd, 0x59, - 0xe0, 0xe9, 0x29, 0xc6, 0x91, 0xd9, 0x22, 0x3e, 0x7e, 0xb9, 0x24, 0xca, - 0xb4, 0x6f, 0xd9, 0x49, 0xc1, 0x2f, 0xc6, 0xe2, 0x0d, 0x42, 0x9d, 0x37, - 0x3f, 0xed, 0x65, 0xdb, 0xba, 0x83, 0xb7, 0xb9, 0x66, 0x0e, 0x9d, 0xb9, - 0x08, 0xfa, 0xa6, 0x71, 0x15, 0x3a, 0xed, 0x03, 0x84, 0x8b, 0xe3, 0x37, - 0x55, 0x07, 0xaf, 0xf4, 0x90, 0x38, 0xd1, 0x8c, 0xfe, 0x06, 0x84, 0x4d, - 0xf6, 0x91, 0x2f, 0x18, 0x8c, 0xba, 0x83, 0xef, 0x93, 0xb9, 0xb1, 0xf2, - 0x1e, 0xb7, 0x49, 0xcc, 0x0e, 0xe4, 0x6d, 0xa8, 0x70, 0xd2, 0x68, 0xb2, - 0xfc, 0x54, 0x6d, 0x78, 0x50, 0x16, 0xa1, 0x6a, 0x22, 0x62, 0x31, 0x64, - 0x84, 0xbe, 0x57, 0xef, 0xf8, 0x01, 0x13, 0xd9, 0x64, 0x99, 0xe8, 0x36, - 0x3b, 0xd3, 0xaa, 0x7c, 0x72, 0xdc, 0x40, 0xb7, 0x76, 0x4f, 0x53, 0x59, - 0xfb, 0xfb, 0x63, 0xa1, 0x28, 0xd1, 0x36, 0x11, 0xd0, 0x5b, 0xbe, 0xb0, - 0x72, 0x41, 0xc7, 0x3a, 0x53, 0x34, 0x18, 0x95, 0x39, 0x5f, 0xb3, 0x30, - 0xcc, 0x19, 0x01, 0x8f, 0xf5, 0x3f, 0x50, 0xe7, 0x44, 0xdd, 0xf2, 0xac, - 0xe2, 0x02, 0xc1, 0x95, 0x21, 0xf1, 0x16, 0xe3, 0x25, 0x76, 0x3b, 0x46, - 0xd4, 0xe9, 0x1c, 0xac, 0x34, 0xf6, 0xd0, 0xa3, 0x77, 0xe5, 0x64, 0xcb, - 0x5b, 0xc6, 0x46, 0xb7, 0x7a, 0xda, 0xcb, 0xde, 0x51, 0xc9, 0xb4, 0xe2, - 0x69, 0x6c, 0xd7, 0x69, 0x78, 0xb1, 0x4c, 0x63, 0x1d, 0x23, 0x11, 0x8f, - 0x8f, 0x70, 0x26, 0x46, 0x34, 0xc2, 0x0e, 0x63, 0x56, 0x8b, 0xb8, 0xb7, - 0x93, 0xd1, 0x91, 0x94, 0xc7, 0xed, 0xc2, 0xe3, 0x38, 0xbf, 0xb9, 0x89, - 0x7c, 0x1e, 0xfe, 0xa3, 0x14, 0xf1, 0x11, 0x25, 0xc1, 0x49, 0xdd, 0x50, - 0x2e, 0xf1, 0x60, 0xd7, 0xe6, 0xad, 0x09, 0xe4, 0xb0, 0xcb, 0x10, 0xd2, - 0x73, 0xa2, 0x7c, 0x7e, 0x5b, 0x09, 0xa9, 0x95, 0x00, 0xab, 0xb5, 0x08, - 0x12, 0x93, 0x9a, 0xdb, 0x8b, 0xd8, 0xc8, 0x76, 0x6e, 0x59, 0x22, 0x05, - 0x77, 0xf2, 0xe6, 0x99, 0x7c, 0xa4, 0x71, 0x14, 0xc8, 0xcd, 0xc4, 0xa0, - 0x9a, 0x86, 0x4e, 0xd6, 0xec, 0x13, 0x99, 0x3e, 0xc6, 0x61, 0x2d, 0xa0, - 0x59, 0x50, 0x93, 0x1e, 0x91, 0x4a, 0x82, 0x3c, 0x62, 0x8a, 0x00, 0xd6, - 0x9d, 0x6f, 0x22, 0xb5, 0x2a, 0xba, 0x8f, 0xf3, 0x28, 0x67, 0x59, 0xfb, - 0xd6, 0x44, 0xba, 0xe5, 0x4e, 0xf5, 0x3f, 0x7d, 0x0a, 0x98, 0xf4, 0x20, - 0xc0, 0x89, 0x71, 0xa3, 0x99, 0x5b, 0xfb, 0x70, 0x88, 0xe6, 0x51, 0x63, - 0x23, 0x31, 0x85, 0x4c, 0x29, 0x9e, 0xb4, 0x25, 0xc1, 0x27, 0xf9, 0x4e, - 0xb6, 0x21, 0xd5, 0xd7, 0x9b, 0xe4, 0x63, 0x3d, 0x27, 0xd0, 0xb4, 0x98, - 0xcf, 0xd8, 0x77, 0xb0, 0x52, 0xce, 0xed, 0x05, 0x9c, 0xf7, 0x7a, 0x2d, - 0x93, 0x26, 0x6d, 0x97, 0x5a, 0xe1, 0xd7, 0x8c, 0xef, 0xb7, 0x15, 0xc6, - 0x86, 0x9d, 0x82, 0x44, 0xa7, 0x29, 0x11, 0xfa, 0xb1, 0xb1, 0xdc, 0xe3, - 0x57, 0x43, 0x70, 0xcf, 0xbd, 0x42, 0x22, 0xf1, 0xa4, 0x98, 0xef, 0xc4, - 0xb8, 0x92, 0xa8, 0xac, 0x90, 0x8e, 0xa8, 0x0d, 0xc3, 0xc6, 0x22, 0x1a, - 0x88, 0x61, 0xa5, 0x64, 0xf2, 0xd6, 0xaa, 0xfd, 0x4f, 0xba, 0x50, 0x0d, - 0x22, 0xe0, 0x6a, 0x6e, 0xdf, 0x55, 0xd9, 0x4a, 0xba, 0xc8, 0x86, 0xf0, - 0x21, 0x5d, 0x1c, 0x37, 0x08, 0x10, 0x11, 0xad, 0x1e, 0x1f, 0x19, 0x17, - 0x05, 0x88, 0xc5, 0x96, 0x56, 0xab, 0xd8, 0xb5, 0x0a, 0x17, 0xd2, 0xe4, - 0x04, 0xd6, 0x94, 0x64, 0xd8, 0x6b, 0x50, 0x37, 0x5f, 0x88, 0x64, 0xab, - 0x8c, 0x42, 0xd8, 0xca, 0x0c, 0xca, 0x24, 0x34, 0x7b, 0xa6, 0xf0, 0xfc, - 0x0d, 0x19, 0x7d, 0x6a, 0x36, 0x8e, 0x55, 0x88, 0xba, 0x66, 0xc7, 0x38, - 0x99, 0xcc, 0x0c, 0x24, 0x71, 0x45, 0xf1, 0xa2, 0xe8, 0x02, 0xfd, 0x1b, - 0x76, 0x5e, 0x4b, 0xa7, 0x7a, 0x99, 0x6a, 0x60, 0xa8, 0x7a, 0xfa, 0x15, - 0xbd, 0xae, 0x6e, 0x3d, 0x8e, 0xfd, 0x19, 0x56, 0x1b, 0xc7, 0xc3, 0xa0, - 0x88, 0x33, 0x5c, 0x4a, 0x8f, 0xa2, 0xdd, 0x00, 0x34, 0x14, 0xc1, 0xa3, - 0x47, 0x47, 0x5b, 0xe1, 0xc8, 0x8b, 0x44, 0x9d, 0xcb, 0x10, 0x6b, 0xd4, - 0x62, 0xc1, 0x99, 0x06, 0xd3, 0x93, 0xab, 0x0e, 0xb9, 0x19, 0x54, 0x13, - 0xbc, 0x6b, 0xf3, 0x24, 0x9f, 0x95, 0xe2, 0xa6, 0x3b, 0x53, 0xe0, 0xab, - 0x47, 0x9b, 0x6e, 0x5e, 0xdd, 0x8b, 0x0c, 0x0b, 0xd1, 0xf4, 0xd2, 0x6f, - 0x18, 0xfe, 0xe5, 0x2d, 0x4f, 0x98, 0xf1, 0xc1, 0x61, 0xb0, 0x42, 0x54, - 0x89, 0x13, 0xe4, 0xa4, 0x47, 0xe5, 0x02, 0x8a, 0x78, 0x76, 0x2b, 0x1b, - 0x0a, 0x14, 0x79, 0xaf, 0xb6, 0x89, 0x3c, 0xb5, 0x84, 0xcd, 0x3d, 0xf8, - 0x91, 0x44, 0x6c, 0xf8, 0x7e, 0xf6, 0xcc, 0x59, 0x32, 0xc9, 0xef, 0xeb, - 0x73, 0x87, 0x15, 0xd1, 0x69, 0xb1, 0xcd, 0x45, 0x4a, 0x5e, 0x06, 0x66, - 0xf5, 0xbb, 0xe3, 0xf4, 0xe9, 0xa4, 0x6d, 0xaf, 0x3c, 0x56, 0xd2, 0x5e, - 0x41, 0xc4, 0x32, 0x39, 0x12, 0x84, 0x42, 0xc3, 0x2f, 0x41, 0x99, 0x72, - 0x4f, 0xfa, 0x55, 0x1c, 0x77, 0xe2, 0x77, 0x2d, 0xab, 0xbc, 0x6f, 0xe2, - 0xa8, 0xb0, 0xf4, 0xf6, 0xf4, 0x89, 0xc5, 0x9a, 0x7a, 0x7d, 0x3f, 0xc4, - 0xad, 0x29, 0xbd, 0xe0, 0x91, 0x66, 0x9b, 0x78, 0x4c, 0xc2, 0x32, 0x30, - 0xb3, 0x2c, 0x97, 0x0e, 0xdc, 0x6b, 0xf8, 0xb0, 0x49, 0xb7, 0x8f, 0x90, - 0xde, 0x1a, 0x55, 0xe0, 0x49, 0x8e, 0xf3, 0x24, 0x56, 0x81, 0x7f, 0xfe, - 0x14, 0x77, 0xb2, 0x82, 0xbd, 0x2c, 0xaa, 0x41, 0x05, 0x2c, 0x28, 0x53, - 0x1e, 0x45, 0xcc, 0x3f, 0x94, 0xa8, 0xdd, 0x4b, 0x70, 0x8c, 0x1e, 0x5e, - 0xba, 0xb8, 0xc9, 0xf0, 0x7b, 0x00, 0xfc, 0x08, 0x95, 0x71, 0x62, 0x65, - 0x2e, 0xa8, 0xa1, 0xb0, 0xe8, 0xbd, 0xd7, 0xc1, 0x7a, 0x69, 0x2a, 0x8d, - 0xc5, 0xec, 0xe8, 0xec, 0x05, 0xaf, 0x88, 0x48, 0x81, 0x5d, 0x9b, 0x28, - 0x60, 0x7f, 0xc5, 0x22, 0xde, 0xb3, 0xec, 0xb8, 0x92, 0x7d, 0x26, 0x5c, - 0xe7, 0x3b, 0xc2, 0xd1, 0xd9, 0x0f, 0xe1, 0xde, 0x5a, 0x8c, 0x91, 0x51, - 0x90, 0xd7, 0x4e, 0xa2, 0x30, 0x9b, 0x79, 0x1c, 0xc7, 0x39, 0xf0, 0x0d, - 0x57, 0x96, 0xb4, 0x5b, 0x42, 0xbf, 0x1c, 0x2d, 0x18, 0xe5, 0xea, 0x14, - 0xb9, 0xd4, 0xc1, 0x36, 0x22, 0x1e, 0xde, 0x18, 0xc4, 0x5c, 0xd6, 0x68, - 0x9a, 0x44, 0x03, 0x69, 0xa7, 0x7f, 0x82, 0xb5, 0x36, 0xb8, 0x78, 0x44, - 0xc0, 0x8b, 0x97, 0x2c, 0xf9, 0xa4, 0xed, 0x14, 0xd4, 0x60, 0xc3, 0x21, - 0x67, 0x21, 0x44, 0x15, 0x65, 0x85, 0x65, 0xb4, 0x24, 0xce, 0xc2, 0x75, - 0x54, 0xb4, 0x0d, 0xd8, 0x3d, 0x50, 0x94, 0x0d, 0x67, 0x1e, 0xbc, 0x2e, - 0x03, 0xf6, 0xf8, 0xbe, 0xc4, 0x38, 0xca, 0xbd, 0xbc, 0x42, 0x5b, 0xf9, - 0x3a, 0xbd, 0x1d, 0xd7, 0x27, 0x5f, 0xa4, 0xc1, 0xac, 0x00, 0x83, 0xae, - 0x85, 0x82, 0xac, 0x43, 0x17, 0x8f, 0x4c, 0x3a, 0xb0, 0x67, 0xa1, 0x8e, - 0x63, 0x2a, 0x82, 0xbe, 0x83, 0xb4, 0x3c, 0x1c, 0xcd, 0xb8, 0xe9, 0x60, - 0x3b, 0xdf, 0x73, 0x53, 0x05, 0xde, 0xae, 0x1b, 0x32, 0x9a, 0x1a, 0xd7, - 0x04, 0x34, 0x8b, 0xe4, 0x48, 0xa5, 0x54, 0xaa, 0x5e, 0x52, 0xb0, 0x9c, - 0x0f, 0xb6, 0xf2, 0xdf, 0x72, 0x5f, 0x62, 0x5e, 0xcb, 0xda, 0xc3, 0x8d, - 0xc6, 0x9f, 0x8b, 0x81, 0xa4, 0xe2, 0x44, 0xb4, 0x02, 0x3c, 0x83, 0x05, - 0xe4, 0x9b, 0xb1, 0xef, 0xfc, 0x4b, 0x15, 0x51, 0x3c, 0xa2, 0x17, 0x6b, - 0x90, 0xcb, 0x97, 0x9e, 0xf5, 0xf5, 0x80, 0x7c, 0xe9, 0xc1, 0x29, 0x03, - 0x10, 0x07, 0xd6, 0xdb, 0x63, 0x41, 0xee, 0x11, 0x90, 0x6b, 0x86, 0x4c, - 0x64, 0x0d, 0x82, 0xcd, 0xb7, 0x2a, 0xa8, 0x39, 0x4d, 0x12, 0x7d, 0x2c, - 0x14, 0x47, 0x22, 0xd5, 0xa0, 0x7c, 0x99, 0xd1, 0xc8, 0x58, 0x95, 0x6e, - 0x12, 0xf7, 0x6e, 0x5c, 0x90, 0x48, 0x71, 0x85, 0xd3, 0xb9, 0x3a, 0x27, - 0x64, 0xe9, 0x90, 0xcd, 0x2d, 0x57, 0x2a, 0x74, 0x90, 0xfa, 0xc6, 0x80, - 0x61, 0xae, 0x70, 0x3a, 0x11, 0x43, 0x85, 0x25, 0x4b, 0xa4, 0x97, 0x3c, - 0xf2, 0xfa, 0x00, 0x53, 0x24, 0xa3, 0x9a, 0xfa, 0x77, 0x10, 0xd5, 0xf1, - 0x2a, 0x62, 0x07, 0xdd, 0x1e, 0x72, 0xef, 0xf3, 0x2f, 0x2b, 0x69, 0x0c, - 0xbb, 0x86, 0x6a, 0xa2, 0x2e, 0x2f, 0x5b, 0xd0, 0xd0, 0x8d, 0xa2, 0x8f, - 0xa9, 0x1e, 0xbf, 0x5b, 0x12, 0xcf, 0x7c, 0x71, 0x4b, 0xab, 0x38, 0x5d, - 0xb1, 0xae, 0xd7, 0xf5, 0xcf, 0x1b, 0x50, 0xeb, 0xf7, 0xc8, 0xf7, 0x1e, - 0xa9, 0x78, 0xd3, 0x3a, 0x81, 0x3f, 0x46, 0x20, 0xf3, 0x48, 0x91, 0x0c, - 0xcd, 0xbd, 0x9d, 0xcb, 0x67, 0x4f, 0xe1, 0x4c, 0xf4, 0x9f, 0x38, 0x64, - 0xc8, 0x13, 0x7e, 0x60, 0x23, 0x85, 0x6f, 0xcb, 0xdf, 0x7e, 0x75, 0xf7, - 0xce, 0x54, 0x2e, 0xa8, 0x44, 0x50, 0x0e, 0xdf, 0x54, 0xd6, 0x90, 0x3a, - 0xfe, 0x2e, 0xc8, 0xa5, 0xed, 0x80, 0x69, 0x40, 0xf0, 0x6e, 0xcd, 0xa9, - 0x4c, 0x6d, 0x41, 0x24, 0xec, 0x51, 0x23, 0xb0, 0xbd, 0x78, 0x51, 0xd2, - 0x49, 0xfc, 0xc0, 0x2c, 0x26, 0x1a, 0x78, 0xe3, 0xbd, 0xf4, 0x37, 0xa7, - 0x7f, 0x79, 0xcf, 0xc5, 0xe2, 0xe9, 0x72, 0xb7, 0x3d, 0x36, 0x5e, 0xac, - 0xb2, 0x99, 0xee, 0x8e, 0x7b, 0x11, 0x06, 0xa8, 0xb7, 0x0f, 0x53, 0xc9, - 0x2f, 0xce, 0x82, 0x52, 0x90, 0x5c, 0xc8, 0x2b, 0x7b, 0x36, 0x01, 0x94, - 0xcf, 0x2e, 0x96, 0x64, 0x87, 0x00, 0x93, 0x9a, 0xa8, 0x88, 0xd6, 0xbd, - 0xfd, 0x19, 0x79, 0x85, 0xe3, 0x31, 0x38, 0xa0, 0xce, 0x33, 0xfb, 0x79, - 0x89, 0x6c, 0x43, 0x4c, 0xd8, 0x51, 0xdb, 0xf3, 0xc6, 0xe6, 0xf5, 0xe9, - 0x39, 0xb1, 0xf8, 0x08, 0x6e, 0xec, 0x46, 0x5f, 0xa3, 0x18, 0x9a, 0x50, - 0x60, 0x7c, 0xd0, 0xd4, 0x9b, 0xea, 0x0f, 0x99, 0x2e, 0x47, 0xfc, 0xa4, - 0x9a, 0xb3, 0x82, 0x58, 0xfd, 0x46, 0x38, 0xf7, 0x85, 0xbd, 0x91, 0x42, - 0x35, 0x1d, 0x33, 0xc1, 0x81, 0xa4, 0x00, 0x4f, 0x6e, 0x19, 0x1c, 0x57, - 0xf0, 0x86, 0x30, 0x20, 0x66, 0xa4, 0x7f, 0xb4, 0x12, 0x12, 0xd1, 0x1e, - 0x6c, 0xfa, 0x02, 0x91, 0x51, 0xe2, 0x31, 0xaf, 0xcd, 0x7e, 0x06, 0x5a, - 0xdf, 0xf8, 0xfd, 0xac, 0x99, 0x6a, 0x58, 0x03, 0xc4, 0xae, 0xe1, 0x66, - 0x8b, 0x74, 0x7a, 0x2f, 0x75, 0x3f, 0x8c, 0x90, 0x41, 0x9e, 0x71, 0x6a, - 0xb0, 0x46, 0xae, 0x8c, 0xd4, 0xee, 0xc0, 0xd3, 0x78, 0x17, 0x22, 0x01, - 0x9b, 0x1d, 0xbe, 0x5d, 0x5b, 0x69, 0x97, 0xe0, 0xbf, 0xc2, 0xd5, 0x4a, - 0x46, 0x2a, 0x47, 0x11, 0x2e, 0xcf, 0xf6, 0xcb, 0x64, 0xda, 0x2c, 0x39, - 0x02, 0x30, 0x6b, 0x26, 0x9d, 0x05, 0x9c, 0xd1, 0x55, 0xc8, 0x51, 0xdb, - 0xbc, 0xd2, 0xbb, 0xaa, 0x7f, 0xe2, 0x92, 0xb4, 0x60, 0x20, 0xa1, 0xb9, - 0x6f, 0x92, 0x9e, 0x9c, 0x51, 0xdd, 0xce, 0xbc, 0x05, 0x71, 0x96, 0x6c, - 0xc9, 0xa9, 0xb3, 0x0b, 0x42, 0xcc, 0xe5, 0x54, 0x30, 0x5b, 0x9b, 0xb7, - 0x53, 0x2e, 0x03, 0x49, 0x42, 0x25, 0x4d, 0xea, 0x13, 0xa9, 0x92, 0xa1, - 0x93, 0x68, 0x75, 0x11, 0x84, 0xe7, 0x2a, 0xea, 0xdb, 0x9b, 0x87, 0xb3, - 0xba, 0x2a, 0x36, 0x50, 0x0e, 0xf4, 0xb3, 0x14, 0xe1, 0xdf, 0x38, 0x8d, - 0xde, 0x8b, 0x96, 0x10, 0xe1, 0xa2, 0x4b, 0x4a, 0x32, 0xb9, 0x5c, 0x62, - 0xc3, 0xff, 0xd4, 0x6e, 0x2c, 0x14, 0x34, 0x95, 0x10, 0xa1, 0x7b, 0xfd, - 0x48, 0x39, 0x6f, 0x0f, 0xd4, 0x90, 0x17, 0xaf, 0x71, 0xa5, 0x6f, 0xaf, - 0x31, 0xdb, 0x8f, 0x10, 0xd7, 0x20, 0x69, 0xb0, 0x9b, 0x52, 0x33, 0x3b, - 0xbb, 0x44, 0xb3, 0x5f, 0x43, 0xbe, 0xc9, 0x8d, 0x74, 0xf7, 0xe3, 0xc4, - 0xb8, 0xa6, 0xe4, 0x81, 0x38, 0x03, 0xef, 0xa0, 0x26, 0x57, 0xd5, 0xbe, - 0xd2, 0xcb, 0x83, 0x43, 0x5e, 0x06, 0x9d, 0x1b, 0x48, 0x20, 0xd2, 0x8b, - 0xc7, 0xe6, 0x4f, 0x7c, 0xa9, 0x20, 0x2d, 0xd2, 0x05, 0x82, 0x03, 0x54, - 0x53, 0xb8, 0xce, 0x76, 0x55, 0x54, 0x7b, 0xa9, 0xa3, 0xe5, 0x9b, 0xa2, - 0xe9, 0x87, 0x45, 0x84, 0xae, 0xe3, 0x4f, 0xf8, 0x59, 0x47, 0x35, 0x27, - 0x0d, 0x2f, 0x77, 0x4a, 0xe3, 0x3e, 0xd4, 0xec, 0xb0, 0xaa, 0xd3, 0x6a, - 0xad, 0x41, 0xc0, 0xe5, 0xce, 0x5c, 0xee, 0x60, 0xcc, 0x53, 0x0d, 0x80, - 0xf4, 0x5a, 0x0f, 0xc1, 0x42, 0xbc, 0x84, 0x79, 0xd1, 0xf3, 0x3c, 0x38, - 0x42, 0xd2, 0x60, 0x1b, 0xb7, 0x7b, 0x63, 0xc1, 0xa5, 0xa3, 0xbc, 0x1e, - 0xdd, 0x1e, 0xd9, 0x4a, 0xa5, 0x69, 0xbb, 0x1e, 0x90, 0x2a, 0x03, 0xff, - 0x31, 0xab, 0x25, 0x44, 0xbd, 0xe3, 0x1e, 0x4b, 0x65, 0x76, 0xf6, 0x2d, - 0x3c, 0x89, 0x8c, 0x23, 0x10, 0xde, 0x14, 0x83, 0x1d, 0x73, 0x97, 0x79, - 0x88, 0xbe, 0x13, 0xb4, 0x5e, 0x0e, 0x9a, 0xef, 0xd2, 0x4d, 0xdb, 0xee, - 0x94, 0x80, 0x34, 0x3f, 0x0f, 0x31, 0x2d, 0xea, 0x3e, 0xb3, 0xdc, 0x5a, - 0x00, 0x7e, 0x6d, 0xbd, 0x22, 0xf7, 0xef, 0x87, 0x8a, 0xf3, 0x99, 0x8a, - 0x03, 0x12, 0xff, 0x86, 0xc9, 0x10, 0xa0, 0x9a, 0xbe, 0xea, 0x4a, 0xc8, - 0xeb, 0x4f, 0x13, 0x5a, 0xfd, 0x1a, 0x7e, 0x09, 0x5a, 0xba, 0xba, 0x86, - 0xb6, 0x77, 0x37, 0xc3, 0x1e, 0xa3, 0x66, 0xef, 0x0a, 0xe4, 0xd8, 0xbc, - 0x7d, 0x51, 0xd2, 0xc4, 0xd3, 0xb8, 0xe2, 0x79, 0xb6, 0x91, 0x68, 0x2e, - 0x06, 0x7f, 0xf2, 0x38, 0xb2, 0xe1, 0xc5, 0x7d, 0x54, 0x5e, 0x23, 0xbf, - 0x4e, 0x18, 0x6f, 0x3a, 0x68, 0xf9, 0x8c, 0x4e, 0x85, 0xcd, 0xd9, 0x47, - 0xd5, 0xb1, 0x9a, 0xab, 0x6c, 0xee, 0x99, 0xe2, 0x6c, 0x41, 0xaf, 0xd5, - 0x8d, 0x60, 0x7f, 0x63, 0xb2, 0xa4, 0x45, 0xdc, 0xf7, 0xde, 0xbb, 0x2a, - 0x25, 0xcb, 0x04, 0x40, 0x2c, 0x7d, 0xc9, 0x53, 0xc5, 0x4b, 0x94, 0xbf, - 0x49, 0x7f, 0x0d, 0x7c, 0xfe, 0x63, 0x50, 0x0b, 0x72, 0xf9, 0x0e, 0xbf, - 0x2e, 0x94, 0x94, 0x8a, 0x61, 0x8c, 0x60, 0x56, 0x45, 0x5e, 0x62, 0x8a, - 0x74, 0xee, 0xe2, 0xca, 0x77, 0x18, 0x2e, 0xef, 0x78, 0xa5, 0xdc, 0xb0, - 0x22, 0x26, 0x27, 0x8e, 0x44, 0x08, 0x2b, 0x46, 0xb1, 0x1f, 0x73, 0x6f, - 0xde, 0x29, 0x77, 0x63, 0x84, 0xf4, 0x17, 0x6b, 0x48, 0x35, 0x4b, 0x71, - 0x0d, 0xb7, 0x19, 0x04, 0x77, 0x1d, 0xfb, 0x97, 0xff, 0x65, 0xe0, 0x63, - 0xbe, 0x53, 0x45, 0xdd, 0x20, 0x10, 0xc3, 0xae, 0x5b, 0x25, 0x2e, 0x89, - 0x44, 0x32, 0x44, 0x10, 0x23, 0x7f, 0x9b, 0xdb, 0x07, 0xcb, 0x9a, 0xf1, - 0x92, 0x06, 0xf4, 0xe5, 0xf0, 0xc7, 0x4b, 0x8d, 0x1a, 0x52, 0x7a, 0x14, - 0x79, 0xde, 0x20, 0xbe, 0xac, 0x61, 0x26, 0xfe, 0xae, 0x7a, 0xd9, 0xdc, - 0x00, 0x6f, 0x9c, 0xd5, 0x6a, 0xa3, 0x7e, 0xf1, 0xc8, 0x4d, 0x96, 0x94, - 0x24, 0xb8, 0xdb, 0xc5, 0xa8, 0x69, 0x5d, 0xee, 0x41, 0x82, 0x10, 0x19, - 0x7d, 0x05, 0x75, 0xae, 0xa6, 0x12, 0x53, 0xc7, 0xdc, 0xef, 0x01, 0x48, - 0x0f, 0x46, 0x93, 0x83, 0x9f, 0x07, 0x1b, 0x85, 0x01, 0xfe, 0x30, 0x3a, - 0x32, 0x84, 0xaa, 0x49, 0x24, 0x83, 0x69, 0x53, 0x92, 0xd7, 0x95, 0x59, - 0x23, 0xa4, 0xa1, 0x01, 0xad, 0x2b, 0xd5, 0xa5, 0x8b, 0x0a, 0x5d, 0x98, - 0x2a, 0xba, 0x04, 0x55, 0x13, 0x43, 0xd5, 0x01, 0x1d, 0x40, 0x9c, 0x77, - 0x84, 0x96, 0x9f, 0x41, 0xaa, 0xee, 0x1e, 0xc7, 0xe8, 0xf4, 0xbe, 0xc4, - 0x38, 0xdf, 0xf5, 0x05, 0x78, 0x82, 0x8c, 0x54, 0xcd, 0x45, 0x94, 0xd6, - 0x94, 0x3e, 0x8d, 0x53, 0x24, 0x21, 0x61, 0x42, 0x65, 0x9b, 0x85, 0xb8, - 0x47, 0x0d, 0x52, 0x33, 0x70, 0x23, 0x5b, 0xe9, 0x85, 0x68, 0x0c, 0x14, - 0xfd, 0x5f, 0x7a, 0x1a, 0x3f, 0x50, 0x41, 0x4f, 0x18, 0xe2, 0x95, 0xf8, - 0xe7, 0x1c, 0x30, 0x02, 0xf5, 0xad, 0x75, 0x8d, 0xd0, 0x4f, 0x5f, 0x79, - 0xce, 0x2c, 0xb4, 0xde, 0xe5, 0xfb, 0x42, 0x4e, 0xaa, 0xee, 0x53, 0x82, - 0xaf, 0xd7, 0xda, 0x13, 0x90, 0xda, 0xbd, 0xcc, 0x1a, 0x8a, 0xd8, 0xab, - 0xac, 0x13, 0xc1, 0xe5, 0x3e, 0xb1, 0x14, 0x7c, 0xe5, 0xd9, 0xa8, 0x73, - 0x15, 0x91, 0xfc, 0xda, 0xe4, 0x48, 0xfd, 0x3d, 0x07, 0x4f, 0x27, 0xf8, - 0x45, 0x9e, 0x31, 0x5f, 0xbc, 0x2e, 0x5f, 0xef, 0x3f, 0xb9, 0xb2, 0xbf, - 0x3c, 0x6a, 0xa0, 0x2e, 0x48, 0xe9, 0x11, 0xa4, 0xd3, 0xba, 0x7b, 0x9f, - 0xa1, 0x78, 0x3a, 0x29, 0x5d, 0x39, 0x5b, 0x8b, 0x8e, 0xd5, 0xe7, 0xd0, - 0x24, 0xcc, 0xb8, 0x38, 0x33, 0xe0, 0x34, 0x89, 0x9d, 0xce, 0xb7, 0x79, - 0xfa, 0x96, 0x38, 0x2b, 0x19, 0xd4, 0x3a, 0xb6, 0x14, 0x42, 0x2a, 0xa7, - 0xd0, 0x89, 0x36, 0x1a, 0x99, 0x10, 0xa7, 0x6f, 0xd7, 0xa9, 0x9c, 0xb6, - 0xd2, 0xdb, 0xbd, 0x78, 0x94, 0x43, 0x76, 0x4d, 0x32, 0x75, 0x36, 0x89, - 0x18, 0x19, 0x45, 0x51, 0x5d, 0x49, 0xba, 0x47, 0xba, 0x22, 0x97, 0x0b, - 0xc9, 0xa4, 0x72, 0x47, 0x7d, 0xf4, 0x5a, 0xdc, 0x38, 0x6c, 0xa8, 0x57, - 0x08, 0x97, 0x42, 0xb7, 0x15, 0x92, 0x38, 0x81, 0x55, 0x7c, 0x65, 0x3d, - 0x25, 0xa2, 0x5a, 0xa9, 0x02, 0x0c, 0xa7, 0x13, 0x70, 0x00, 0x5c, 0x56, - 0xd0, 0xd9, 0xeb, 0xd7, 0xe9, 0xa1, 0x88, 0xdd, 0xaa, 0x1b, 0x33, 0x08, - 0xf3, 0x81, 0x13, 0x6d, 0x7f, 0x9e, 0xf3, 0x54, 0x43, 0xad, 0xfc, 0x19, - 0x20, 0x67, 0x43, 0xb8, 0x79, 0x03, 0x45, 0x3c, 0x50, 0xa6, 0x41, 0x0b, - 0x59, 0xe1, 0x8d, 0x6a, 0xf1, 0x02, 0xd2, 0xd4, 0x65, 0x13, 0x80, 0x96, - 0x21, 0x09, 0xde, 0xfb, 0xc9, 0x70, 0x02, 0x3f, 0xaf, 0x51, 0x65, 0xc2, - 0x83, 0xbc, 0x98, 0xf2, 0x2b, 0xe8, 0x13, 0x3b, 0x29, 0xf2, 0x45, 0xdc, - 0x37, 0x8b, 0x62, 0x62, 0x72, 0x3e, 0x2c, 0x8e, 0x04, 0xb6, 0xb2, 0x09, - 0x64, 0x08, 0x7d, 0x11, 0x5b, 0xfd, 0xee, 0xc9, 0xee, 0x46, 0xa8, 0x6a, - 0xd8, 0x5e, 0x3c, 0x1d, 0x2b, 0x96, 0x79, 0x56, 0x70, 0x7a, 0x11, 0x62, - 0x0c, 0x8e, 0x8a, 0x72, 0xdd, 0x85, 0xf1, 0xdc, 0x48, 0xff, 0x54, 0x89, - 0xf4, 0x84, 0x28, 0x9b, 0xd0, 0x80, 0xa2, 0xfa, 0x9f, 0x8b, 0xb7, 0x6f, - 0x7d, 0xd6, 0xe8, 0xe5, 0x7d, 0xc9, 0x8f, 0x47, 0x4c, 0xb7, 0x78, 0x9b, - 0x70, 0x15, 0xb7, 0xf0, 0xba, 0xc3, 0x78, 0x3d, 0x8b, 0x69, 0x52, 0xac, - 0x03, 0x30, 0x38, 0x35, 0xe2, 0x4c, 0x0e, 0xd7, 0x6a, 0x46, 0x19, 0xd0, - 0x15, 0xd3, 0x4e, 0xd9, 0x7d, 0xb4, 0x82, 0x84, 0x28, 0x2a, 0xa3, 0xd7, - 0x73, 0xed, 0xcb, 0x04, 0x77, 0x79, 0x05, 0x9e, 0x6d, 0x4c, 0xc1, 0xc5, - 0x6e, 0xae, 0x97, 0x40, 0x1a, 0x59, 0x6f, 0x0d, 0xac, 0xbc, 0x0b, 0x6a, - 0x2e, 0xd6, 0x74, 0x41, 0x1f, 0xeb, 0x53, 0xca, 0xce, 0x67, 0x8c, 0x8e, - 0xbb, 0x45, 0x4c, 0x9f, 0xec, 0xd7, 0x45, 0xe9, 0x15, 0x3c, 0x8e, 0x8d, - 0xe9, 0x71, 0x68, 0x80, 0xd9, 0xf7, 0xca, 0x64, 0x5f, 0xf8, 0x90, 0xb5, - 0xb1, 0xe3, 0x8a, 0x99, 0x69, 0xd4, 0xb0, 0x8e, 0x5f, 0x39, 0xac, 0x42, - 0xb6, 0xd8, 0x49, 0x0d, 0x04, 0x0d, 0x69, 0x5a, 0xc8, 0x12, 0x2e, 0xa6, - 0x55, 0xc8, 0xd0, 0x9d, 0xa3, 0xa4, 0xbd, 0x43, 0x08, 0x94, 0x74, 0x85, - 0x53, 0x95, 0x03, 0x9d, 0x85, 0x60, 0x4c, 0xcb, 0x44, 0xfe, 0x09, 0x76, - 0xc8, 0xab, 0x94, 0x8b, 0xd2, 0x09, 0x47, 0x0c, 0x7e, 0xa4, 0xff, 0xd8, - 0x62, 0xa3, 0x78, 0xd0, 0x1b, 0x3f, 0x7f, 0x91, 0xf0, 0xd2, 0xd0, 0x11, - 0x3a, 0xbb, 0xf6, 0x34, 0x5e, 0x47, 0x53, 0xc9, 0x19, 0x0a, 0x7e, 0x3c, - 0x2a, 0x51, 0xf7, 0x91, 0xf0, 0x86, 0xc4, 0x98, 0x78, 0x5d, 0xba, 0x6b, - 0x08, 0x52, 0xb2, 0x68, 0xe5, 0xbe, 0x61, 0x7e, 0x46, 0x49, 0x8c, 0xc4, - 0x8b, 0xad, 0xc2, 0x88, 0xca, 0xf0, 0x4e, 0xb8, 0x15, 0x30, 0x45, 0xd2, - 0xe2, 0x68, 0x8d, 0x86, 0xae, 0xac, 0x6d, 0x02, 0x21, 0xfe, 0x6d, 0x6c, - 0xe7, 0xdc, 0x78, 0x69, 0x35, 0xfd, 0xf4, 0xd0, 0xb6, 0xb2, 0x84, 0x2f, - 0xa7, 0x8a, 0x4d, 0xa9, 0xbe, 0xae, 0xcf, 0x1c, 0x5c, 0x89, 0xa0, 0xba, - 0xb9, 0xde, 0x02, 0x46, 0x52, 0x26, 0x80, 0xb3, 0x76, 0x95, 0x1c, 0x25, - 0xaa, 0xe9, 0x78, 0x1f, 0x4a, 0x14, 0x94, 0x2d, 0x46, 0xb6, 0x5c, 0xdc, - 0xb7, 0xcb, 0xef, 0x58, 0xb6, 0xb0, 0xd0, 0x63, 0x1d, 0xfb, 0xba, 0x67, - 0x53, 0xa7, 0xc1, 0x8c, 0x1c, 0x94, 0x4e, 0x31, 0xcb, 0x9a, 0x9c, 0xfb, - 0x10, 0xaa, 0xc0, 0x3c, 0x84, 0x8e, 0x5a, 0xc1, 0xd5, 0xe9, 0xf1, 0xbe, - 0x6a, 0x84, 0x19, 0x11, 0x5f, 0x18, 0x5b, 0x45, 0x33, 0xe2, 0xb6, 0x60, - 0x4e, 0x38, 0x57, 0xcd, 0x8e, 0xe9, 0x21, 0x1e, 0xb5, 0xc5, 0xe2, 0xb4, - 0xea, 0xed, 0xc2, 0x37, 0x2b, 0xf5, 0x92, 0x41, 0x63, 0x24, 0x45, 0x49, - 0x93, 0xdd, 0xef, 0x44, 0xcd, 0x3a, 0xf1, 0xed, 0xcd, 0x1a, 0x5e, 0x4f, - 0xaa, 0xf2, 0x12, 0x67, 0xdb, 0x6b, 0xca, 0x4b, 0x5b, 0xe2, 0x21, 0x6e, - 0x29, 0x16, 0x5a, 0x06, 0xf2, 0xd3, 0x2c, 0xf6, 0xe4, 0x36, 0x51, 0x4e, - 0x9a, 0xa0, 0x33, 0x14, 0x9b, 0xc0, 0xbd, 0x6f, 0x98, 0x7c, 0x31, 0x9c, - 0x39, 0xb5, 0x13, 0x6a, 0xd3, 0xa0, 0x38, 0xa6, 0xb8, 0x88, 0xae, 0xa7, - 0x87, 0x98, 0xab, 0x06, 0x0c, 0x61, 0x1a, 0xbc, 0x07, 0x96, 0x43, 0xce, - 0x73, 0x46, 0xf4, 0xcc, 0xd0, 0x61, 0x6c, 0x9f, 0xf0, 0x25, 0x1d, 0x17, - 0x3e, 0x4a, 0xb4, 0x73, 0x90, 0x4a, 0xc9, 0xa8, 0x5c, 0x6b, 0x36, 0xde, - 0x21, 0xe0, 0xa2, 0xad, 0xef, 0x19, 0x2d, 0x6b, 0xa5, 0x69, 0xee, 0xe2, - 0x5f, 0x6c, 0x37, 0xd6, 0x6a, 0x1d, 0x97, 0x31, 0xc8, 0x9f, 0x00, 0x17, - 0x48, 0xf1, 0x98, 0x40, 0xa6, 0x1d, 0x0f, 0x20, 0x66, 0x2e, 0x34, 0xb9, - 0x10, 0x69, 0x10, 0xba, 0xc5, 0x3e, 0xfc, 0x2c, 0x4c, 0x17, 0xf1, 0x18, - 0x92, 0x56, 0x02, 0xa8, 0x02, 0x6c, 0x22, 0xc2, 0xbe, 0xa3, 0xf9, 0x85, - 0x45, 0xfb, 0x45, 0x11, 0xa6, 0xc8, 0xdd, 0xe4, 0xd6, 0x8a, 0xce, 0xae, - 0x77, 0x28, 0xe5, 0x99, 0xd9, 0x14, 0xbe, 0xce, 0x0d, 0x8e, 0xee, 0x6f, - 0xc6, 0x99, 0xa4, 0xa1, 0xf5, 0xab, 0xfb, 0xb5, 0x21, 0x14, 0xd4, 0xe2, - 0x7e, 0xc1, 0x0d, 0xf1, 0xcd, 0x83, 0x76, 0x47, 0xf5, 0xd9, 0xfd, 0x8c, - 0x6b, 0x7d, 0x73, 0xd8, 0x41, 0xf2, 0x25, 0xbc, 0x18, 0xf9, 0xf5, 0x85, - 0x6c, 0xd6, 0x1b, 0x7f, 0xec, 0x69, 0x12, 0x36, 0x24, 0x27, 0x84, 0xc1, - 0x2d, 0xce, 0x69, 0x9d, 0xd4, 0xe7, 0x9e, 0xdd, 0x46, 0x7b, 0xc9, 0xd4, - 0xce, 0xf7, 0x0d, 0x4b, 0xa0, 0x21, 0x6f, 0x95, 0xeb, 0xb5, 0xfb, 0x11, - 0xf0, 0xe4, 0xe5, 0x44, 0x09, 0x61, 0xc6, 0x1d, 0x8e, 0x05, 0xd5, 0xae, - 0x9a, 0x25, 0x6a, 0x19, 0x1a, 0x1e, 0x68, 0x7a, 0xdb, 0xa6, 0xf6, 0x18, - 0xe8, 0xb5, 0xf4, 0x5d, 0x78, 0x24, 0xbe, 0x65, 0x1a, 0xec, 0xe2, 0xa8, - 0xe1, 0x2e, 0x19, 0x90, 0xc2, 0x25, 0x11, 0x8c, 0x30, 0xb7, 0xb0, 0x24, - 0x2d, 0x2d, 0x90, 0xe3, 0x12, 0x79, 0xda, 0x12, 0x23, 0xe9, 0x89, 0x63, - 0x5e, 0x16, 0x24, 0x2f, 0xa7, 0xc2, 0x46, 0xdb, 0x1f, 0x57, 0xfd, 0x06, - 0xfd, 0x17, 0xeb, 0x31, 0xc8, 0x78, 0x95, 0x8f, 0xa9, 0x89, 0xa8, 0x46, - 0xe8, 0x5d, 0xbf, 0xb5, 0xea, 0x9d, 0xea, 0xaa, 0x51, 0x06, 0x4a, 0xa4, - 0xce, 0x09, 0x20, 0x5b, 0x1b, 0x52, 0xfb, 0xc6, 0xd4, 0x6e, 0x75, 0xbc, - 0x92, 0xde, 0xb8, 0x24, 0xf1, 0x02, 0x2a, 0xae, 0xdc, 0x10, 0x3d, 0xd5, - 0xce, 0x56, 0x60, 0xc4, 0xf0, 0x82, 0x63, 0xa1, 0x82, 0x88, 0x19, 0xdb, - 0x36, 0x9d, 0x04, 0xf1, 0x42, 0x39, 0xb5, 0xc5, 0x05, 0x7b, 0xf1, 0xbf, - 0xcc, 0x19, 0x0a, 0xe0, 0xfb, 0xc4, 0xa9, 0x16, 0x64, 0x97, 0xf4, 0xed, - 0xa2, 0xf0, 0x20, 0x82, 0x45, 0xfc, 0x8b, 0x35, 0xbd, 0xaa, 0xeb, 0xa5, - 0x07, 0x8e, 0x11, 0xdf, 0xfc, 0x89, 0x81, 0x30, 0x40, 0x04, 0x06, 0x61, - 0xec, 0x90, 0x2c, 0x3b, 0x41, 0xc7, 0xae, 0x58, 0x68, 0xcc, 0xd2, 0xad, - 0xb7, 0x07, 0xdd, 0xae, 0x3a, 0x08, 0x30, 0xc3, 0x28, 0x15, 0x19, 0xb0, - 0x7e, 0x8a, 0x2e, 0x04, 0x50, 0xe6, 0x44, 0x78, 0x16, 0x4a, 0xa5, 0xd9, - 0x14, 0x44, 0x25, 0xfa, 0xae, 0x8f, 0x19, 0x4f, 0xb9, 0x74, 0x1d, 0xc2, - 0xb5, 0x94, 0xa0, 0xca, 0x24, 0x5a, 0x80, 0x79, 0x00, 0x0f, 0x78, 0x65, - 0x4f, 0xf3, 0xb0, 0x48, 0x46, 0xd4, 0xd9, 0xcb, 0xab, 0x41, 0x4b, 0xb3, - 0x75, 0x49, 0x1d, 0x01, 0x73, 0x73, 0x19, 0x7e, 0xcf, 0x54, 0x39, 0xb8, - 0x75, 0x8c, 0xa7, 0x06, 0xfd, 0x76, 0xa3, 0x55, 0x22, 0x51, 0x74, 0xe6, - 0xd6, 0xba, 0x18, 0x9b, 0xdb, 0x05, 0xf1, 0xa3, 0xcb, 0x89, 0x67, 0xa2, - 0x2d, 0x0f, 0xad, 0xd8, 0xb8, 0xb9, 0x34, 0x9f, 0x31, 0x96, 0xf1, 0xac, - 0x5a, 0xe5, 0x1b, 0x0a, 0x15, 0xf2, 0x67, 0x85, 0x33, 0x03, 0xb5, 0x7e, - 0x83, 0x7b, 0x9d, 0x69, 0x7a, 0xa2, 0x82, 0xd2, 0x4c, 0x5a, 0xcd, 0x9c, - 0x79, 0x9a, 0x00, 0xe9, 0xb7, 0x87, 0xa4, 0xae, 0xe6, 0x8d, 0x60, 0x1d, - 0x58, 0x5f, 0x26, 0xe1, 0xfb, 0x37, 0xfc, 0x8f, 0x2c, 0xe8, 0x33, 0x8a, - 0xc1, 0x43, 0x8b, 0x68, 0x65, 0x55, 0x74, 0x51, 0x59, 0xe0, 0x5c, 0xa7, - 0x39, 0x5b, 0x70, 0xe3, 0x47, 0x91, 0x50, 0x0c, 0xb7, 0x09, 0xe7, 0xd4, - 0x81, 0x7b, 0xd4, 0x75, 0x2d, 0xab, 0xf2, 0xf3, 0x6f, 0xc9, 0xe6, 0xa0, - 0x24, 0x76, 0xa8, 0x5d, 0x04, 0xff, 0xaf, 0xce, 0x29, 0x08, 0x27, 0x89, - 0x28, 0x99, 0x98, 0x81, 0x9c, 0x9c, 0x65, 0x05, 0xee, 0x2a, 0x1b, 0x33, - 0x97, 0x57, 0x40, 0x38, 0x28, 0x2f, 0x52, 0xdd, 0xf8, 0x1a, 0x26, 0x5a, - 0xa5, 0xc9, 0xe9, 0x8c, 0x58, 0x07, 0xdc, 0xa9, 0x0b, 0x7f, 0x99, 0xd9, - 0x29, 0x1f, 0x82, 0x06, 0xdc, 0x1d, 0xd6, 0xe4, 0x16, 0xb4, 0x8e, 0xec, - 0x7a, 0x0a, 0x86, 0x84, 0xc6, 0x5f, 0x88, 0x40, 0x51, 0x17, 0xa2, 0xd5, - 0xdc, 0x10, 0xf4, 0xdc, 0x84, 0x11, 0xe9, 0xaa, 0x05, 0x23, 0x1c, 0xb2, - 0xb7, 0x0b, 0xdb, 0x9d, 0xdf, 0x7f, 0xe9, 0x88, 0x4d, 0x4b, 0xcb, 0x1c, - 0x0b, 0x69, 0xe7, 0x05, 0xc6, 0x85, 0xd1, 0xd6, 0x17, 0xc6, 0xd4, 0x3e, - 0x34, 0x79, 0x43, 0xad, 0xb7, 0x05, 0x16, 0x08, 0xb7, 0x3e, 0x9a, 0x50, - 0xc1, 0x12, 0x1d, 0x70, 0x24, 0x85, 0x54, 0xa6, 0x01, 0xc9, 0x41, 0x1e, - 0x8b, 0xbb, 0x36, 0x2c, 0xf2, 0x2f, 0x21, 0xb6, 0xd5, 0x87, 0x7a, 0x7b, - 0x60, 0xfc, 0x27, 0x1c, 0xd8, 0x3f, 0x7d, 0x7c, 0xf9, 0x8f, 0x71, 0xbd, - 0x42, 0xf1, 0x72, 0x67, 0xe9, 0xcb, 0xa3, 0xe1, 0x1c, 0xf3, 0x70, 0xd7, - 0xf1, 0xe6, 0x0a, 0x87, 0x54, 0xfe, 0xe3, 0x2c, 0xf3, 0xcd, 0x84, 0x17, - 0x82, 0x8b, 0x5b, 0x4d, 0x32, 0x16, 0x15, 0x16, 0x45, 0x26, 0x46, 0x76, - 0x4d, 0xac, 0x0f, 0xd8, 0x0e, 0x44, 0x69, 0x5c, 0x5e, 0xf2, 0x47, 0xfa, - 0x23, 0x33, 0xe0, 0x65, 0x6b, 0x05, 0x9b, 0x09, 0x41, 0xf1, 0x19, 0x99, - 0x84, 0x00, 0x7b, 0xe7, 0x3f, 0x59, 0x8e, 0xff, 0xfc, 0xf2, 0x82, 0xf8, - 0xd7, 0x5e, 0x12, 0xf8, 0xf2, 0x53, 0xf9, 0x24, 0xda, 0xb3, 0xca, 0x7b, - 0xd2, 0xab, 0xc4, 0xbe, 0x72, 0x0c, 0xa8, 0x2f, 0x23, 0xbc, 0xa7, 0xbd, - 0x87, 0x46, 0x8e, 0x7f, 0x1b, 0xfe, 0x83, 0x84, 0x1a, 0xd6, 0x35, 0x89, - 0x60, 0xe3, 0x27, 0x94, 0x3a, 0x7f, 0xa2, 0xbe, 0x40, 0x24, 0x85, 0x36, - 0x32, 0xbc, 0x5a, 0xfa, 0xd7, 0x6d, 0x5b, 0x44, 0x85, 0x86, 0x88, 0xb0, - 0x67, 0x35, 0x21, 0xa3, 0x7a, 0x86, 0xfc, 0xbc, 0x5e, 0xa7, 0x85, 0x9e, - 0x24, 0x4b, 0xfe, 0xcf, 0x39, 0x6c, 0xfd, 0x82, 0x5f, 0xf2, 0x2f, 0xbd, - 0x0e, 0x90, 0x4f, 0xe7, 0xfd, 0xd1, 0xac, 0x9b, 0x93, 0xe9, 0x61, 0xbe, - 0xae, 0x66, 0xce, 0xf4, 0x71, 0x50, 0xd1, 0xa7, 0x45, 0x64, 0x69, 0xfe, - 0xd8, 0x6e, 0x4a, 0x14, 0xeb, 0x03, 0x22, 0xd7, 0x3e, 0x64, 0x5c, 0x61, - 0x46, 0x87, 0x6a, 0xc0, 0xff, 0x36, 0x67, 0xce, 0xe4, 0x5d, 0x2f, 0x7b, - 0x1f, 0xdb, 0xe3, 0x6c, 0x12, 0x0c, 0x11, 0x98, 0xc8, 0xb0, 0x75, 0xea, - 0xd5, 0x85, 0xb5, 0xb2, 0x07, 0x8d, 0x1c, 0xe8, 0x8e, 0x38, 0x7b, 0xd5, - 0x61, 0x0f, 0xb7, 0xf3, 0xe5, 0x4b, 0x38, 0x46, 0xe7, 0x48, 0x9f, 0xc2, - 0x12, 0x0c, 0x42, 0x63, 0x52, 0xf0, 0x82, 0xe4, 0xfa, 0x8f, 0xe0, 0xe5, - 0x46, 0xc5, 0xa5, 0xa9, 0x83, 0xf8, 0x38, 0xed, 0xc1, 0x7c, 0xf0, 0x12, - 0x2c, 0x7e, 0x67, 0x83, 0x32, 0x8d, 0xcc, 0x0e, 0xeb, 0xc6, 0xfd, 0x48, - 0xf6, 0x19, 0xe8, 0x76, 0xc5, 0xe6, 0x57, 0xce, 0x6c, 0x10, 0xf3, 0x78, - 0x07, 0x9f, 0xeb, 0xe5, 0xe9, 0x0e, 0xd4, 0xbc, 0x3f, 0x5a, 0x08, 0x06, - 0xb3, 0xf7, 0x1d, 0xa8, 0x5b, 0xd8, 0xe2, 0xef, 0x70, 0x39, 0x28, 0xe5, - 0xf9, 0xaf, 0x87, 0xff, 0xcb, 0x1b, 0xcf, 0x64, 0x8a, 0x2d, 0xc4, 0x97, - 0x10, 0xfb, 0x65, 0x2c, 0xd7, 0x7c, 0xf8, 0xf4, 0x23, 0x33, 0x01, 0x62, - 0x41, 0xc5, 0xdc, 0x01, 0xe7, 0xa4, 0xcf, 0xc8, 0x62, 0x71, 0x3d, 0x6c, - 0xed, 0x08, 0x2b, 0x68, 0x85, 0x36, 0xff, 0x0b, 0x46, 0x89, 0xdc, 0x88, - 0x10, 0x54, 0x51, 0x68, 0xea, 0x71, 0xf9, 0x43, 0x86, 0x7b, 0x64, 0x8e, - 0x97, 0x12, 0xab, 0x03, 0xd5, 0x79, 0x80, 0xd4, 0x6d, 0x23, 0x11, 0x90, - 0xaa, 0x2d, 0x52, 0x90, 0xce, 0xb4, 0x2c, 0x01, 0xf8, 0xc5, 0x33, 0x70, - 0x7c, 0x19, 0xdb, 0xb0, 0x99, 0xdd, 0x33, 0x42, 0xf9, 0x03, 0xd8, 0xe9, - 0x69, 0xd6, 0x0b, 0x96, 0xd9, 0x14, 0xc9, 0x2d, 0xa0, 0x69, 0x9a, 0xac, - 0x0c, 0x34, 0xa5, 0xd2, 0x4d, 0x4d, 0x4e, 0xcc, 0x2d, 0x3f, 0x2a, 0x20, - 0x3d, 0x5e, 0xf0, 0x8f, 0x47, 0x6a, 0x82, 0x5c, 0x3e, 0xc7, 0x71, 0x92, - 0x52, 0xe6, 0xcd, 0x1f, 0x30, 0x0a, 0xa9, 0x0c, 0x94, 0x2a, 0xef, 0x8e, - 0xcb, 0x59, 0x09, 0xf1, 0xb9, 0xa5, 0xa0, 0x0e, 0x44, 0x26, 0x21, 0xc3, - 0x65, 0xe1, 0x2e, 0xeb, 0x8b, 0xb0, 0x34, 0x1b, 0xb1, 0x33, 0x24, 0xd0, - 0x2f, 0x35, 0xdd, 0x29, 0x7a, 0x94, 0x9a, 0x51, 0x59, 0xe1, 0x73, 0x57, - 0x9a, 0x5b, 0xaf, 0xdd, 0x18, 0xba, 0xfe, 0x6b, 0x72, 0x48, 0xca, 0xc0, - 0x3d, 0x11, 0xa0, 0x5e, 0x59, 0x57, 0x1a, 0xf8, 0x8b, 0x95, 0xac, 0x06, - 0x54, 0xb9, 0xe4, 0x8f, 0x00, 0x4a, 0xd9, 0xd5, 0x83, 0x42, 0xa8, 0xde, - 0x00, 0xf6, 0x57, 0x77, 0x37, 0xfc, 0xaa, 0x9b, 0x8d, 0xba, 0xbb, 0x0f, - 0x06, 0xd2, 0x4b, 0x17, 0x3a, 0x00, 0x4d, 0xcc, 0xe7, 0xab, 0x12, 0xd8, - 0xd6, 0xbe, 0x40, 0x48, 0xfa, 0x77, 0x32, 0x27, 0x9a, 0xfd, 0x9e, 0xf1, - 0x33, 0x8f, 0x1d, 0x82, 0x39, 0xf7, 0xf1, 0x9b, 0x7c, 0xe1, 0x3b, 0x1a, - 0x00, 0x14, 0xd9, 0x19, 0x50, 0xfb, 0x6d, 0xab, 0x49, 0x52, 0xa0, 0xbb, - 0x6b, 0x71, 0x86, 0x71, 0x31, 0x35, 0x1e, 0x3d, 0xad, 0x4a, 0xbd, 0x5c, - 0x95, 0xf9, 0x49, 0xf1, 0x21, 0xfa, 0x5e, 0xc4, 0xde, 0x92, 0xf0, 0x45, - 0xa8, 0x5e, 0x07, 0x43, 0x8e, 0x2b, 0x3c, 0x38, 0x8c, 0x65, 0x49, 0x0e, - 0x86, 0xe3, 0x7a, 0x3d, 0xbf, 0x6f, 0x64, 0x2f, 0x34, 0x5b, 0x40, 0xd1, - 0x04, 0x4a, 0x0c, 0x73, 0x25, 0x2a, 0xc9, 0x5d, 0xd7, 0x49, 0x45, 0x73, - 0x0c, 0x15, 0xba, 0x75, 0xc1, 0xed, 0x5e, 0xa1, 0x60, 0x75, 0xf4, 0x26, - 0xd1, 0xc4, 0x5c, 0x93, 0x6b, 0x8b, 0xa3, 0x4a, 0x6f, 0x97, 0xd1, 0xb1, - 0xdb, 0x38, 0x75, 0x22, 0x8d, 0x40, 0xb5, 0xe2, 0xc8, 0xe0, 0xce, 0x81, - 0x2d, 0xbb, 0x54, 0x73, 0xd3, 0xee, 0xd5, 0x8d, 0x09, 0x0b, 0xeb, 0xc3, - 0xea, 0x10, 0x9c, 0xde, 0xf7, 0xa7, 0x06, 0xb6, 0x57, 0xa9, 0xeb, 0x1a, - 0xc7, 0x2b, 0x23, 0xc6, 0xae, 0x58, 0xe2, 0x76, 0x18, 0xb8, 0x28, 0x36, - 0xdd, 0x4b, 0xf5, 0xc4, 0xf4, 0x88, 0xea, 0x6e, 0x2b, 0x30, 0xf2, 0x71, - 0x41, 0x89, 0xfb, 0x79, 0x7f, 0x75, 0x9e, 0x93, 0xd4, 0xd0, 0xa0, 0x49, - 0xe8, 0x78, 0x14, 0x8c, 0x37, 0xcb, 0x3c, 0x3b, 0x6a, 0x25, 0xf5, 0x3a, - 0x39, 0x0f, 0xe2, 0x61, 0xaa, 0xf1, 0x76, 0xd9, 0xd5, 0x6f, 0x71, 0x72, - 0xfd, 0x26, 0x0a, 0x45, 0xaa, 0x16, 0xc4, 0x4e, 0xdc, 0xaa, 0x81, 0x34, - 0xef, 0xcb, 0x30, 0xdd, 0xf6, 0x3f, 0x09, 0xb4, 0x8a, 0x8b, 0xdf, 0xdf, - 0x86, 0xf0, 0x09, 0xe6, 0x5c, 0x48, 0x9e, 0x65, 0x6f, 0x0b, 0xe8, 0x94, - 0xbb, 0x45, 0x6e, 0x32, 0xfc, 0xca, 0xaf, 0xf5, 0xb2, 0xb0, 0xce, 0x55, - 0x3a, 0x41, 0xed, 0xc2, 0xee, 0x25, 0x79, 0xad, 0xff, 0x36, 0x24, 0x06, - 0xa6, 0x13, 0x56, 0x02, 0xe7, 0x1e, 0x47, 0x65, 0x9a, 0x3e, 0x79, 0x84, - 0xe9, 0xfc, 0xb3, 0xac, 0x77, 0xc6, 0x76, 0x02, 0xfd, 0x5b, 0xce, 0xbc, - 0x9a, 0xd5, 0xac, 0x93, 0x11, 0xaf, 0xaf, 0xf3, 0xd1, 0xd4, 0x72, 0xbe, - 0x94, 0x02, 0xab, 0x47, 0x43, 0x14, 0xc9, 0x26, 0xe9, 0x56, 0x43, 0xfe, - 0x81, 0x48, 0xc2, 0x0f, 0x87, 0xad, 0x40, 0x15, 0x4e, 0x3f, 0x07, 0xc2, - 0x9d, 0xb7, 0x65, 0x09, 0x83, 0x8d, 0x85, 0x17, 0xa5, 0x20, 0x47, 0x3d, - 0xfd, 0x25, 0xf1, 0x62, 0xe0, 0x47, 0x57, 0xcc, 0xb1, 0x05, 0x43, 0x03, - 0xb6, 0xad, 0x17, 0x2f, 0xee, 0xdb, 0x10, 0x81, 0xfd, 0xd1, 0xaa, 0x76, - 0x56, 0xfc, 0x9a, 0xc3, 0x5b, 0x5b, 0xcc, 0x1a, 0xee, 0x72, 0xf8, 0x85, - 0x4c, 0x73, 0x72, 0x42, 0xda, 0x6e, 0xcd, 0x1b, 0x54, 0xa4, 0xc6, 0xb5, - 0x42, 0x44, 0x4a, 0x4f, 0x1d, 0x15, 0x9e, 0x2f, 0x5e, 0x7b, 0x5d, 0x2a, - 0x7b, 0x92, 0x30, 0xb0, 0x97, 0x15, 0xd4, 0x64, 0xdf, 0x3b, 0x24, 0x79, - 0x63, 0x0c, 0xa2, 0xf0, 0x68, 0xec, 0x5b, 0xf7, 0x7a, 0xfc, 0x69, 0x93, - 0x0c, 0x05, 0x8c, 0x4d, 0x27, 0xe1, 0x25, 0x15, 0x05, 0x0b, 0xe2, 0x45, - 0xa2, 0xb7, 0x22, 0x5a, 0x74, 0x49, 0xc0, 0x41, 0xf4, 0x95, 0xad, 0xbe, - 0x04, 0xa8, 0x4b, 0x14, 0xd2, 0x0d, 0x13, 0x2f, 0x62, 0xa8, 0x38, 0x4a, - 0x49, 0xcc, 0x5c, 0xe7, 0x8b, 0xee, 0x93, 0x84, 0xa5, 0x50, 0x13, 0x2d, - 0x0a, 0xb7, 0xda, 0x8c, 0x26, 0x4b, 0x7b, 0xda, 0x58, 0x68, 0xd8, 0xde, - 0xa3, 0xf2, 0x27, 0x28, 0xd0, 0x1d, 0x90, 0xc7, 0x38, 0xc1, 0x2c, 0x51, - 0xe4, 0xd8, 0x8a, 0x65, 0x20, 0x7b, 0x22, 0xd0, 0x3e, 0x11, 0x80, 0x3e, - 0xb9, 0x33, 0xba, 0x17, 0xcf, 0x5d, 0xf6, 0xb7, 0x4d, 0x0f, 0xd7, 0x97, - 0xb3, 0x07, 0x16, 0x13, 0x66, 0x71, 0x59, 0x5e, 0xdc, 0x23, 0x6d, 0xbb, - 0x7a, 0xbd, 0xb4, 0xe3, 0x69, 0x12, 0xd8, 0x24, 0xf7, 0x01, 0x07, 0x74, - 0x1b, 0xf7, 0xe5, 0xbb, 0x4f, 0x33, 0xf1, 0xec, 0xd7, 0xf0, 0xc2, 0xec, - 0x9a, 0xf0, 0x03, 0xba, 0xb3, 0xca, 0xa5, 0x32, 0xc4, 0x70, 0x2d, 0xf6, - 0xf2, 0x8d, 0x38, 0x96, 0x14, 0x0c, 0x49, 0xe2, 0xfd, 0xdf, 0x80, 0xe7, - 0xb6, 0x58, 0x83, 0x4e, 0x02, 0xb9, 0xef, 0xc7, 0x74, 0x54, 0xb3, 0x29, - 0x5a, 0xb7, 0xe3, 0x30, 0x5d, 0xd9, 0x3d, 0x09, 0x36, 0x90, 0xa8, 0xb5, - 0x03, 0x7f, 0xa6, 0x66, 0x77, 0xb0, 0x7f, 0x1a, 0xdf, 0x74, 0x66, 0xaa, - 0x56, 0x1b, 0xfc, 0x8f, 0xb2, 0xb4, 0xaa, 0x5e, 0x9f, 0x08, 0xd1, 0x5e, - 0xfe, 0xc9, 0xae, 0xbc, 0x43, 0x47, 0x54, 0x3d, 0xb6, 0x8e, 0x0e, 0xf5, - 0x7f, 0xbc, 0x3e, 0x1a, 0xee, 0xdc, 0x3a, 0x4b, 0xe7, 0xd5, 0x86, 0xd3, - 0x73, 0xf5, 0x42, 0x25, 0xa3, 0xd0, 0xcd, 0x23, 0x7a, 0x74, 0x7f, 0xc0, - 0x5c, 0xb6, 0x88, 0x4e, 0xc7, 0x72, 0x6b, 0xc2, 0x15, 0x93, 0xe1, 0x8e, - 0xe6, 0x8a, 0xef, 0xe5, 0xee, 0xb9, 0x44, 0xf9, 0xaf, 0x5a, 0xff, 0x69, - 0xa9, 0x9e, 0x0d, 0xe0, 0x4e, 0xdc, 0x9e, 0x0c, 0x6b, 0x51, 0x8a, 0x78, - 0x18, 0x3a, 0xa6, 0x92, 0x21, 0x5b, 0xfe, 0x28, 0x96, 0x85, 0x3d, 0xee, - 0xa1, 0x7c, 0xa3, 0xc3, 0xeb, 0xa1, 0xf0, 0x33, 0x21, 0x28, 0xec, 0x07, - 0x21, 0x0f, 0x6c, 0x77, 0x13, 0x38, 0x48, 0x96, 0xf2, 0xef, 0x61, 0x42, - 0x27, 0xf1, 0xc5, 0xf4, 0x15, 0x2e, 0x21, 0xfa, 0xcf, 0xc4, 0x3b, 0xe9, - 0x8e, 0xd6, 0x28, 0x89, 0x86, 0xb9, 0x55, 0x9d, 0xa8, 0x28, 0xb2, 0xde, - 0x7e, 0x7c, 0x3e, 0x21, 0xfa, 0x8c, 0x3c, 0xcb, 0x5f, 0x5b, 0x00, 0xd0, - 0x01, 0x43, 0x28, 0x28, 0xbc, 0xfa, 0xba, 0xed, 0x29, 0xa0, 0x6d, 0x7b, - 0xf7, 0xa7, 0xb6, 0xec, 0xf5, 0x95, 0x29, 0x2a, 0x44, 0xb8, 0x05, 0x8f, - 0x25, 0xdf, 0xf6, 0xd7, 0x14, 0x61, 0x49, 0xba, 0x69, 0x0d, 0xc6, 0x18, - 0x5d, 0x05, 0xf6, 0xe1, 0xdd, 0xe5, 0xf2, 0x92, 0x53, 0x72, 0x06, 0x22, - 0x84, 0xde, 0xe1, 0x6a, 0xd6, 0x06, 0x52, 0x75, 0x83, 0xa7, 0xc0, 0x04, - 0x28, 0x63, 0xe7, 0x1e, 0xa7, 0x14, 0xaa, 0xf2, 0x56, 0x96, 0x4e, 0xde, - 0xde, 0x2b, 0x61, 0xc7, 0x94, 0xfa, 0xf8, 0x6b, 0x71, 0x60, 0x73, 0x0a, - 0x99, 0xdb, 0xf6, 0xf2, 0x37, 0x86, 0x4a, 0x34, 0x23, 0xad, 0xb5, 0xe6, - 0xf1, 0x47, 0xc1, 0x7f, 0x40, 0xa8, 0x96, 0xbd, 0x80, 0xea, 0xa5, 0x1d, - 0x40, 0xdf, 0x58, 0x4a, 0x0c, 0xef, 0x91, 0x14, 0xda, 0xa6, 0x21, 0x11, - 0xc9, 0x15, 0x21, 0xea, 0x90, 0x20, 0x98, 0x2b, 0xda, 0x4d, 0x64, 0x77, - 0x4a, 0x54, 0xf1, 0x6b, 0xde, 0xb4, 0x41, 0x5a, 0xa3, 0x60, 0x30, 0xc3, - 0x47, 0xb5, 0x6f, 0x71, 0x1b, 0xb8, 0x82, 0x47, 0xd4, 0xb7, 0x0f, 0x4f, - 0xef, 0x86, 0x30, 0x56, 0x80, 0x15, 0x27, 0x1f, 0x40, 0x40, 0xcc, 0xd2, - 0x4c, 0xa7, 0x64, 0x9f, 0x75, 0x6f, 0x4b, 0x70, 0x2c, 0x66, 0x7f, 0x01, - 0x78, 0x6a, 0x09, 0xd1, 0x28, 0x21, 0x2d, 0x78, 0x1c, 0x1e, 0x13, 0xb3, - 0x6e, 0x27, 0x3b, 0x81, 0x8e, 0xbf, 0x99, 0x4c, 0x82, 0x15, 0x1b, 0xa2, - 0xb3, 0x8f, 0x03, 0x02, 0xd9, 0xe7, 0x92, 0xe5, 0xe9, 0x61, 0x83, 0x89, - 0x58, 0x00, 0xad, 0x76, 0x0c, 0x07, 0x08, 0x6d, 0x5d, 0x61, 0x54, 0x65, - 0x27, 0x66, 0x02, 0xa7, 0xfc, 0xc0, 0x04, 0x32, 0x5e, 0x07, 0x4e, 0x3c, - 0x03, 0xc0, 0xbb, 0x23, 0x9e, 0xde, 0xa7, 0x19, 0x63, 0x39, 0xa8, 0x26, - 0xf1, 0xce, 0x2a, 0xb9, 0x14, 0x34, 0x75, 0x12, 0x34, 0xe4, 0x48, 0x45, - 0x0c, 0xa6, 0x73, 0xc5, 0x8f, 0xee, 0xa6, 0x9f, 0xa5, 0x24, 0x04, 0x2d, - 0x20, 0xfd, 0xb0, 0xa8, 0xe6, 0xcc, 0xff, 0x8d, 0x4c, 0x50, 0x32, 0x10, - 0xe7, 0xa9, 0x66, 0x71, 0xab, 0xab, 0x7c, 0x2f, 0x2c, 0x4f, 0xdb, 0xd1, - 0xec, 0xab, 0xc8, 0x89, 0x68, 0x9e, 0xc4, 0x6f, 0x4f, 0x31, 0x1f, 0x30, - 0x1f, 0xb7, 0x3d, 0x0b, 0x94, 0x6e, 0x5e, 0xbc, 0x0d, 0x31, 0xcf, 0x3d, - 0xde, 0x4e, 0x09, 0xad, 0x7d, 0x02, 0xc5, 0x18, 0x25, 0x4b, 0x20, 0x3c, - 0xf2, 0xa1, 0x75, 0x1a, 0xc9, 0x24, 0xfc, 0x6f, 0x7f, 0x2e, 0xeb, 0x62, - 0xf3, 0x07, 0x3d, 0x3c, 0x60, 0x4e, 0x3a, 0x0b, 0xc3, 0x93, 0x80, 0xd0, - 0x45, 0x2f, 0xa9, 0x67, 0x3d, 0xc7, 0x24, 0x3b, 0x2b, 0x1f, 0xcf, 0xc2, - 0xf7, 0xed, 0x01, 0xbd, 0x02, 0x19, 0x51, 0xf2, 0xbd, 0xab, 0xb3, 0xdf, - 0xcb, 0x93, 0x4c, 0xf6, 0x89, 0x4b, 0x9f, 0x3d, 0xca, 0x02, 0xd3, 0x8f, - 0x04, 0xa3, 0xc7, 0x18, 0xbb, 0x58, 0xf9, 0xb1, 0x46, 0xa3, 0x56, 0xf4, - 0x63, 0x24, 0x74, 0xbb, 0xb3, 0x46, 0x05, 0x32, 0xca, 0xe5, 0xa9, 0xe6, - 0x03, 0x4f, 0x84, 0x46, 0x45, 0xb8, 0x21, 0x5d, 0x96, 0xb6, 0x47, 0xbb, - 0x1f, 0x5b, 0x72, 0xc7, 0xd1, 0xe3, 0x49, 0x4c, 0x93, 0x29, 0xf5, 0xa0, - 0xdb, 0x17, 0x08, 0x99, 0xf1, 0x6f, 0xce, 0x61, 0xa3, 0x5c, 0x17, 0x4d, - 0xd1, 0xd6, 0xdb, 0xe8, 0x22, 0x33, 0xf5, 0x8c, 0x65, 0x9f, 0xcb, 0x91, - 0xc6, 0x2e, 0xb2, 0x1f, 0x20, 0x09, 0x95, 0x87, 0xe7, 0x61, 0x02, 0xa2, - 0xce, 0x4f, 0xbc, 0xca, 0x4b, 0x72, 0xab, 0xbb, 0xbd, 0xb1, 0x17, 0x68, - 0x15, 0x44, 0x91, 0xbf, 0x77, 0x43, 0x06, 0x0c, 0x5f, 0x05, 0xc5, 0x08, - 0x27, 0x5a, 0x50, 0xc9, 0xa6, 0x78, 0x3c, 0x02, 0x05, 0xf4, 0xed, 0xee, - 0x2c, 0xb2, 0xc7, 0x20, 0xe7, 0x83, 0xc9, 0xc2, 0xf3, 0xa6, 0x50, 0x1a, - 0xce, 0xb3, 0xbe, 0x3a, 0x26, 0xd5, 0xca, 0x36, 0x1b, 0x52, 0x98, 0x4a, - 0x59, 0xe1, 0x0d, 0x16, 0x5d, 0xaa, 0xfc, 0xc3, 0x8f, 0xfc, 0xd7, 0xd3, - 0x9f, 0x6e, 0xa3, 0x2f, 0x54, 0xd4, 0xd0, 0x40, 0x4f, 0xdb, 0xfb, 0xd6, - 0x11, 0x64, 0xe5, 0xcf, 0x33, 0xd1, 0xdd, 0xc0, 0x37, 0x9c, 0xc5, 0x57, - 0x96, 0x18, 0x94, 0x19, 0x63, 0xb9, 0x4b, 0xd2, 0x54, 0xde, 0x1a, 0x21, - 0x87, 0x70, 0xb4, 0x69, 0x54, 0x6b, 0x2b, 0x3d, 0x43, 0x04, 0xb9, 0xc3, - 0x8a, 0xf1, 0x3d, 0x7d, 0x69, 0x32, 0x2e, 0xbd, 0x8f, 0x27, 0x0b, 0x79, - 0xc1, 0x09, 0xb4, 0x00, 0x8a, 0x07, 0x34, 0xf6, 0xd8, 0xc2, 0xa0, 0x96, - 0x1d, 0xce, 0x60, 0xde, 0xfe, 0xca, 0xe6, 0x90, 0xb4, 0x90, 0x60, 0xeb, - 0x3f, 0x5e, 0x43, 0xb8, 0xec, 0xbb, 0x93, 0x4f, 0xa5, 0x0b, 0x06, 0xf4, - 0xe9, 0x82, 0xd4, 0x00, 0x8b, 0xc1, 0x3b, 0xbe, 0x92, 0x84, 0xe1, 0x9b, - 0x6d, 0x62, 0xd0, 0xac, 0x2a, 0x09, 0xa2, 0xd3, 0x2a, 0xaa, 0x36, 0x1d, - 0x02, 0x53, 0xee, 0xbc, 0xef, 0x22, 0x42, 0x1c, 0xb1, 0x1a, 0xed, 0x30, - 0xf1, 0x01, 0x24, 0xe9, 0x59, 0x52, 0xde, 0x72, 0xcc, 0x4a, 0x14, 0x42, - 0xba, 0x5d, 0xd8, 0xc7, 0x27, 0xd7, 0x0d, 0x7f, 0xc7, 0x89, 0xe5, 0x6d, - 0x9a, 0xf6, 0x26, 0x72, 0x3e, 0x6a, 0xd7, 0x2f, 0x05, 0x8d, 0xf4, 0x15, - 0x72, 0xe2, 0x98, 0x68, 0x3f, 0xf4, 0xda, 0x4c, 0xba, 0xd6, 0x27, 0x43, - 0x12, 0x3f, 0x8c, 0x06, 0x78, 0xcc, 0x68, 0xbb, 0x21, 0x1a, 0x09, 0xc9, - 0x3a, 0xd6, 0x15, 0x90, 0xd7, 0x68, 0x10, 0x5a, 0x9c, 0x77, 0x56, 0x78, - 0x6f, 0xb4, 0x03, 0x3c, 0xa2, 0xec, 0x40, 0xc5, 0x63, 0x65, 0x04, 0xd8, - 0x92, 0x80, 0xa7, 0x1c, 0x10, 0xa9, 0x5c, 0xd8, 0x4e, 0xeb, 0x6a, 0x50, - 0x70, 0x76, 0x65, 0xf1, 0x24, 0x45, 0xbd, 0xff, 0x76, 0x9b, 0xf2, 0x94, - 0xc1, 0xa0, 0x54, 0x74, 0xfa, 0xfb, 0xec, 0xc6, 0x9b, 0xf9, 0xa0, 0x42, - 0x94, 0x2d, 0xb0, 0xcb, 0x3f, 0x66, 0x16, 0x90, 0x4f, 0x72, 0x52, 0x0d, - 0xee, 0xbd, 0xd2, 0x0f, 0x25, 0x8f, 0xb3, 0xe7, 0x08, 0x35, 0xfa, 0xac, - 0x36, 0xb9, 0x12, 0x3c, 0x9c, 0x8f, 0x44, 0x17, 0x46, 0x16, 0x8b, 0x83, - 0xc5, 0xcc, 0x22, 0x3c, 0x1a, 0xf3, 0xec, 0xb0, 0x6d, 0x5d, 0x8d, 0x96, - 0x73, 0xfb, 0xb0, 0x7b, 0xc9, 0x1f, 0x15, 0xe4, 0x12, 0x45, 0xb0, 0xf7, - 0x41, 0x73, 0xe1, 0x26, 0x5b, 0x7b, 0x87, 0x21, 0x3f, 0x7a, 0x45, 0xd9, - 0x6c, 0x6a, 0x3d, 0x50, 0x6b, 0x49, 0x07, 0xf5, 0x21, 0x91, 0xc3, 0xb8, - 0xa9, 0xbb, 0xb6, 0xd7, 0x5e, 0x5b, 0xde, 0x83, 0x54, 0x68, 0xf3, 0x39, - 0x29, 0x61, 0x77, 0x2a, 0x99, 0x1c, 0x9b, 0x5d, 0xed, 0xb7, 0xd2, 0xcf, - 0x91, 0xb5, 0xc3, 0x32, 0x5e, 0x1f, 0x95, 0x3d, 0x5a, 0xe4, 0xfe, 0x98, - 0xce, 0x86, 0x12, 0x0c, 0x5d, 0x0d, 0xf2, 0xa5, 0x04, 0x38, 0xb6, 0x5b, - 0x25, 0xd6, 0x9c, 0x0e, 0xb1, 0x14, 0x63, 0xf3, 0xff, 0x38, 0xcc, 0x62, - 0xa8, 0xc4, 0x5e, 0xb8, 0xf6, 0x28, 0x4f, 0xd4, 0x30, 0x90, 0x71, 0x6f, - 0xd7, 0xe5, 0xa8, 0xb0, 0xcf, 0xec, 0x71, 0x6e, 0xfa, 0x0a, 0x3d, 0x05, - 0xef, 0xf1, 0xa0, 0x5e, 0x9f, 0x9c, 0xfd, 0x78, 0xf5, 0x6f, 0x28, 0x32, - 0xed, 0xc9, 0xef, 0xb0, 0x34, 0xbf, 0x43, 0xb1, 0x87, 0x31, 0xcf, 0xe0, - 0xfd, 0x4a, 0x82, 0xd9, 0x37, 0x42, 0xd7, 0xc1, 0x23, 0x38, 0x9b, 0xda, - 0xa3, 0x95, 0x10, 0x9d, 0xb0, 0xe7, 0x84, 0x79, 0xb8, 0x5c, 0x43, 0x7c, - 0x28, 0x41, 0x68, 0x2d, 0x34, 0x60, 0x62, 0x94, 0x6e, 0x06, 0x25, 0x6f, - 0x04, 0x5c, 0xe1, 0x72, 0xaf, 0x6f, 0x3a, 0x49, 0x7e, 0x35, 0x80, 0x04, - 0x2c, 0xf6, 0xe7, 0x66, 0xb8, 0xa0, 0x21, 0x78, 0xd7, 0xb5, 0x3e, 0x7a, - 0x31, 0x86, 0xa4, 0xd6, 0x9d, 0x70, 0x86, 0xfb, 0xca, 0xa1, 0x5e, 0xb7, - 0xde, 0x31, 0xfc, 0xd6, 0x82, 0xa3, 0xe8, 0xb2, 0xee, 0x57, 0xee, 0xdc, - 0x38, 0x5d, 0x6d, 0x00, 0x2c, 0x8f, 0x50, 0xdd, 0x26, 0xb1, 0xa0, 0x64, - 0xa1, 0x0e, 0x26, 0x3b, 0xfc, 0xf7, 0x87, 0xad, 0x7b, 0x24, 0x1b, 0x37, - 0x56, 0xeb, 0xb6, 0xb1, 0xc2, 0x99, 0xee, 0xd7, 0x25, 0x08, 0xc9, 0x45, - 0x9c, 0xa0, 0x24, 0xd7, 0xa3, 0x04, 0x01, 0x6b, 0x98, 0xb5, 0xc8, 0x76, - 0x09, 0xf8, 0xbc, 0x34, 0x5a, 0xab, 0x65, 0xba, 0x74, 0xb6, 0xa3, 0x22, - 0x6a, 0x44, 0xfc, 0x26, 0xd1, 0xaa, 0x04, 0xd6, 0x10, 0xdf, 0x14, 0xde, - 0xd5, 0xb1, 0xfe, 0x16, 0xe4, 0xa6, 0x4d, 0x7d, 0x4d, 0x43, 0xc8, 0xa1, - 0xea, 0xc3, 0x08, 0xae, 0xa8, 0x10, 0xcb, 0x12, 0x54, 0xb4, 0x65, 0xe8, - 0xb5, 0xbc, 0xfe, 0xa5, 0x86, 0x5a, 0x26, 0x94, 0x0b, 0x05, 0x02, 0x2c, - 0xf9, 0xd5, 0x85, 0xdb, 0x97, 0x54, 0x1c, 0xc4, 0x1b, 0x57, 0xc5, 0x0d, - 0xa9, 0xc6, 0x77, 0x2a, 0x98, 0x20, 0x39, 0x9c, 0xb1, 0xe7, 0xbe, 0x8d, - 0xa6, 0xfb, 0x50, 0x75, 0xe4, 0xa0, 0x1a, 0x27, 0x42, 0xee, 0xb4, 0x07, - 0xdf, 0x5b, 0x9b, 0x1b, 0x5b, 0x3d, 0xdc, 0x70, 0x88, 0x26, 0xe1, 0x2c, - 0xf5, 0xf5, 0x81, 0x20, 0x7b, 0xab, 0xff, 0xc9, 0x9f, 0x1e, 0xfc, 0xbb, - 0xb4, 0x71, 0x33, 0x64, 0xbb, 0xdb, 0x5d, 0xe8, 0xb8, 0x1d, 0x28, 0x74, - 0x3a, 0xcc, 0x0c, 0x97, 0x71, 0xa7, 0x1b, 0xb1, 0x88, 0x05, 0x43, 0xc5, - 0xb5, 0x6e, 0xd2, 0xc3, 0x2b, 0x4d, 0x0c, 0x08, 0xd2, 0x30, 0xa3, 0x5b, - 0x2b, 0x21, 0x43, 0x14, 0x24, 0x61, 0xc0, 0x11, 0xc2, 0x9f, 0xb1, 0xae, - 0x43, 0xe8, 0xad, 0x81, 0xbc, 0x12, 0x3d, 0xf2, 0x04, 0x02, 0x73, 0xee, - 0xb5, 0xe7, 0x80, 0xa9, 0x7d, 0x2b, 0x44, 0x6f, 0xcd, 0xe3, 0xb9, 0x97, - 0xb3, 0x83, 0x47, 0x3b, 0xf7, 0x38, 0x5b, 0x40, 0xab, 0xfc, 0x46, 0x79, - 0x53, 0x61, 0x56, 0xb6, 0x63, 0xc9, 0x54, 0x46, 0x57, 0x63, 0x8b, 0x5f, - 0x45, 0x28, 0x30, 0x32, 0x2c, 0x0b, 0xf6, 0xaf, 0x90, 0xf7, 0xdd, 0x71, - 0x7b, 0xd3, 0x50, 0x13, 0x95, 0x59, 0x9d, 0x13, 0xa7, 0xc1, 0x0f, 0x6a, - 0xbe, 0xa0, 0xac, 0x01, 0x86, 0x44, 0x4c, 0x3b, 0x3b, 0x34, 0x60, 0xe3, - 0xdc, 0x24, 0x96, 0x21, 0xf7, 0x13, 0x53, 0x72, 0x27, 0xff, 0x5c, 0x17, - 0xed, 0xc2, 0x1b, 0xd7, 0xbb, 0x54, 0x0f, 0x49, 0x10, 0xb7, 0x76, 0xcb, - 0x20, 0xe5, 0xf7, 0xef, 0x9f, 0xdf, 0xb0, 0x27, 0xc8, 0xbe, 0xa7, 0xe0, - 0x36, 0xd0, 0x31, 0x8c, 0xd3, 0x2c, 0xa0, 0x06, 0x09, 0x39, 0x0a, 0xda, - 0xce, 0x89, 0x1e, 0x71, 0xd5, 0xb6, 0x9a, 0x6f, 0xd4, 0xa5, 0xc4, 0x72, - 0xa2, 0xef, 0x48, 0xfd, 0xe4, 0x3b, 0x8a, 0xab, 0xa3, 0xac, 0xe2, 0x89, - 0x68, 0xbc, 0x97, 0xa5, 0xb9, 0x86, 0x8a, 0xbc, 0x05, 0x7e, 0x3e, 0x2d, - 0x18, 0x67, 0x95, 0x04, 0x51, 0x0d, 0x7f, 0xe0, 0x3f, 0x55, 0xfe, 0x96, - 0x30, 0x55, 0x43, 0x3d, 0x1e, 0xa7, 0x6a, 0x04, 0x90, 0x04, 0xbf, 0x6b, - 0xcf, 0x18, 0x00, 0x05, 0x72, 0xdc, 0xdd, 0x5d, 0x67, 0x88, 0x93, 0x6c, - 0xb2, 0x3d, 0x91, 0xf8, 0x72, 0x42, 0x6d, 0xa6, 0x8a, 0x5c, 0x7a, 0xd7, - 0xa5, 0xaa, 0xd0, 0x25, 0xce, 0x91, 0xe1, 0x02, 0xe3, 0xe1, 0x6b, 0x7a, - 0x7f, 0xc6, 0xb0, 0xd6, 0xbe, 0xe9, 0xc9, 0x34, 0x54, 0x1a, 0x92, 0x6b, - 0xf6, 0x82, 0xa2, 0x3a, 0xb4, 0x3e, 0x8a, 0x2c, 0x79, 0xc3, 0x6e, 0xc3, - 0xf8, 0x3c, 0x7e, 0xf0, 0x01, 0xfe, 0x98, 0x82, 0xa0, 0x0c, 0xe5, 0xcb, - 0xf0, 0x0d, 0x69, 0x75, 0xfd, 0x14, 0x4a, 0x8d, 0x75, 0x3a, 0x9f, 0xce, - 0xf9, 0x42, 0x58, 0xab, 0xba, 0x36, 0xd4, 0xac, 0x47, 0x5e, 0x0c, 0x1d, - 0xce, 0xe3, 0x53, 0xf1, 0x07, 0x45, 0x4b, 0xf9, 0x5d, 0x6f, 0x4d, 0xc6, - 0xa7, 0x75, 0x29, 0xe7, 0x56, 0x7d, 0xc5, 0xad, 0x29, 0xad, 0x23, 0x6d, - 0xd2, 0xca, 0xa4, 0x64, 0x38, 0x62, 0x1f, 0x7f, 0xf5, 0xc4, 0x31, 0xce, - 0xbd, 0xdc, 0x35, 0x6e, 0xed, 0x7d, 0xd4, 0x21, 0x5b, 0x9c, 0xf8, 0xc1, - 0x70, 0x01, 0xf3, 0x67, 0x94, 0xfd, 0xbc, 0xd6, 0x9a, 0xe9, 0xf1, 0x9e, - 0x6f, 0xd2, 0x7c, 0xc5, 0x33, 0x49, 0xb6, 0x9f, 0x18, 0xe0, 0x69, 0xd5, - 0xc6, 0xad, 0x6f, 0xd5, 0x4f, 0xff, 0xf6, 0xc7, 0x5a, 0xd0, 0x5b, 0x13, - 0x1f, 0x93, 0x0f, 0xb9, 0x28, 0x07, 0xef, 0x40, 0x8c, 0xd3, 0xbf, 0x07, - 0xef, 0x3d, 0xb8, 0xa5, 0xfa, 0x2a, 0x2f, 0x20, 0x50, 0x37, 0x17, 0x9d, - 0xb4, 0x90, 0x59, 0xf6, 0x13, 0x49, 0x88, 0x6b, 0x5a, 0xe5, 0x94, 0xd6, - 0x3c, 0xd2, 0xd4, 0x8b, 0x27, 0x2a, 0x39, 0x71, 0x3f, 0xbc, 0xd6, 0x50, - 0xee, 0xb7, 0x6e, 0x71, 0xe4, 0xc7, 0x9f, 0x18, 0xae, 0xde, 0xb6, 0xb5, - 0xc4, 0x22, 0xe9, 0xbe, 0x96, 0x41, 0x79, 0xab, 0xda, 0x9a, 0xd3, 0x60, - 0xa6, 0x83, 0x27, 0xa3, 0x1f, 0x52, 0xbf, 0xda, 0x70, 0x63, 0x4d, 0xfa, - 0xde, 0xee, 0x19, 0xb0, 0xc8, 0xd8, 0x3d, 0x7f, 0x36, 0x8a, 0xd8, 0x43, - 0x0f, 0x10, 0xee, 0x18, 0x07, 0xfd, 0xbd, 0xb8, 0x09, 0xcd, 0x3e, 0x37, - 0x23, 0xef, 0x5f, 0x36, 0x81, 0xa8, 0x6a, 0xb6, 0x4c, 0x31, 0x07, 0x06, - 0x6f, 0x61, 0xee, 0xe9, 0xa1, 0x54, 0x9b, 0xa5, 0xc9, 0x71, 0x18, 0xc8, - 0xb4, 0x28, 0x8d, 0x6d, 0xc3, 0xc8, 0x14, 0xe7, 0x03, 0x5c, 0xa6, 0xd4, - 0xa5, 0x7c, 0x36, 0x59, 0x5e, 0x61, 0x9e, 0xad, 0x29, 0x29, 0x47, 0x8a, - 0x3c, 0x26, 0xeb, 0xa6, 0xd8, 0x93, 0x5e, 0x06, 0x1c, 0x72, 0x7a, 0xf7, - 0xf9, 0xe9, 0xcd, 0x39, 0xdf, 0x76, 0x39, 0xa0, 0xac, 0xbe, 0xc1, 0x72, - 0x9c, 0x66, 0x6e, 0x4a, 0xc2, 0xb9, 0xdc, 0x34, 0xfe, 0xf3, 0x3c, 0x78, - 0xe3, 0x75, 0x9a, 0x02, 0x99, 0x8f, 0x30, 0x0a, 0x60, 0xfb, 0xb3, 0xac, - 0xbf, 0x19, 0x81, 0xe3, 0xc4, 0x50, 0x4e, 0xa4, 0xa4, 0x79, 0xd2, 0x7b, - 0x7b, 0xf8, 0xc2, 0x2c, 0x38, 0xe9, 0x35, 0xcb, 0xaa, 0xd1, 0xac, 0x1d, - 0x4e, 0xf6, 0xc2, 0x63, 0x81, 0x8b, 0x51, 0x71, 0x19, 0x36, 0x54, 0x2d, - 0x45, 0x07, 0x3a, 0x3c, 0x00, 0x69, 0x77, 0x65, 0xf5, 0x02, 0x66, 0xe4, - 0xb3, 0xdd, 0x5c, 0x93, 0x00, 0xcd, 0x70, 0xb8, 0xcf, 0x8d, 0x1b, 0x12, - 0x02, 0x7a, 0xa1, 0xc1, 0xb8, 0xbf, 0xee, 0x9d, 0x23, 0x18, 0x6c, 0xf4, - 0x10, 0x94, 0x6f, 0x44, 0x90, 0x73, 0x35, 0x8d, 0xcb, 0xa0, 0xc6, 0x33, - 0x3b, 0xc9, 0x7a, 0x99, 0x3c, 0xe2, 0xa8, 0x47, 0x63, 0x3f, 0x35, 0x8b, - 0xf3, 0x4b, 0x79, 0x8a, 0x3d, 0xa8, 0xa6, 0xd9, 0x15, 0x28, 0xef, 0x71, - 0x05, 0x95, 0xe9, 0xd2, 0x6c, 0x84, 0x8b, 0xc5, 0x13, 0x88, 0x5d, 0xa8, - 0x05, 0x89, 0x55, 0xb1, 0xc7, 0x86, 0x4e, 0xdb, 0x46, 0x2d, 0xf0, 0xb9, - 0xbd, 0x7b, 0xc8, 0xae, 0x7e, 0xba, 0xcd, 0xe2, 0x47, 0xa9, 0xb7, 0xeb, - 0xaa, 0xaa, 0x83, 0x25, 0x75, 0xc5, 0xe6, 0x4f, 0x1a, 0x19, 0xbd, 0x23, - 0x56, 0xdf, 0x38, 0x08, 0xa8, 0x6f, 0x90, 0x80, 0x6c, 0x32, 0x4a, 0xcd, - 0x4d, 0x8d, 0x86, 0xc7, 0x31, 0x10, 0x3b, 0x6a, 0x98, 0xa2, 0xd2, 0xcd, - 0x25, 0x17, 0x01, 0x0e, 0xab, 0x23, 0x73, 0x24, 0xba, 0x4a, 0x36, 0xca, - 0x5c, 0xc0, 0xc2, 0x3b, 0x62, 0x24, 0xe4, 0x5e, 0x4b, 0xcb, 0x73, 0x5d, - 0x34, 0x8d, 0xc9, 0xb5, 0x27, 0xba, 0x81, 0x99, 0xab, 0x1f, 0x26, 0xf8, - 0x40, 0x59, 0x88, 0x91, 0x12, 0xaf, 0x42, 0x61, 0x01, 0x5d, 0x49, 0x2e, - 0x70, 0xbf, 0x4c, 0x65, 0x46, 0xef, 0x2f, 0xe5, 0x81, 0x84, 0x39, 0x94, - 0xd3, 0x53, 0x3a, 0xcd, 0x4c, 0xb7, 0x3d, 0xe4, 0x14, 0xff, 0xb8, 0x83, - 0x2f, 0x37, 0x57, 0x0f, 0x26, 0xab, 0x9c, 0x59, 0x72, 0x0e, 0x8e, 0x28, - 0xbe, 0xee, 0x1a, 0xe2, 0x1c, 0xef, 0x2e, 0xe5, 0xf6, 0xe8, 0x48, 0x01, - 0x5a, 0x89, 0xb8, 0x99, 0x5c, 0x5b, 0xcf, 0x26, 0x79, 0xd3, 0x73, 0x39, - 0x43, 0xfe, 0xb3, 0xd0, 0x99, 0x5c, 0xb8, 0x51, 0x05, 0x17, 0xc2, 0x98, - 0x0d, 0x1d, 0xbf, 0x51, 0xd5, 0x27, 0x3a, 0xf6, 0x00, 0x03, 0x48, 0x72, - 0x76, 0x2d, 0x41, 0x43, 0x4b, 0x13, 0x77, 0xb0, 0x04, 0x57, 0xa0, 0xf6, - 0x61, 0xce, 0xa5, 0x47, 0xba, 0x2a, 0xd2, 0x1f, 0x78, 0xc9, 0x0c, 0x50, - 0xc6, 0x5f, 0x49, 0xa3, 0x7c, 0x40, 0x84, 0xfa, 0xe5, 0x2f, 0xfa, 0xa5, - 0xef, 0xd8, 0x62, 0x71, 0x63, 0xac, 0x68, 0x2e, 0x50, 0xf1, 0x3d, 0xa4, - 0x07, 0xe4, 0xac, 0xb6, 0x05, 0xf1, 0x03, 0xa5, 0x8d, 0x6a, 0x04, 0x41, - 0x5d, 0x2a, 0xf3, 0xbb, 0x15, 0xbf, 0x5c, 0x53, 0xf7, 0x65, 0xdb, 0xa3, - 0x8f, 0xa3, 0xdf, 0x36, 0x14, 0x4c, 0xd5, 0xd1, 0xfd, 0x9e, 0x90, 0x81, - 0x30, 0x9e, 0x47, 0xae, 0x82, 0x48, 0x6a, 0x8e, 0xd9, 0xd8, 0xee, 0x1b, - 0x62, 0xdf, 0xf7, 0xf4, 0xf2, 0x3e, 0x64, 0x96, 0x44, 0xb3, 0x59, 0x10, - 0xd0, 0x43, 0xf2, 0x0a, 0xa7, 0xf2, 0xee, 0x64, 0x83, 0xe2, 0xe6, 0x6b, - 0xe8, 0x92, 0x80, 0x62, 0xb6, 0x4b, 0x4a, 0xea, 0x98, 0xe0, 0x3f, 0xee, - 0x2e, 0x2a, 0xc5, 0x92, 0xaa, 0x2e, 0xd8, 0xb5, 0xc6, 0x4a, 0xa6, 0x98, - 0xba, 0x93, 0xc3, 0xf9, 0xfa, 0x60, 0xef, 0xa5, 0x55, 0xb6, 0x7d, 0x52, - 0x83, 0x62, 0x07, 0x35, 0x4f, 0xa1, 0x9b, 0x66, 0xb3, 0xaf, 0x89, 0x40, - 0xa6, 0x9b, 0x75, 0x8b, 0xb9, 0x03, 0x5c, 0x3a, 0xba, 0x33, 0x03, 0x22, - 0x81, 0x90, 0x66, 0x21, 0x78, 0xd8, 0xfc, 0x79, 0x21, 0xd5, 0xa5, 0x51, - 0x00, 0x95, 0xe9, 0x4a, 0xdf, 0x4b, 0x29, 0xd3, 0x83, 0x6e, 0xa1, 0xd1, - 0x76, 0x76, 0xc3, 0x14, 0x9a, 0xe8, 0xfa, 0x0f, 0xea, 0xe0, 0xca, 0x3c, - 0xa6, 0xeb, 0x3f, 0xf1, 0x78, 0xe9, 0x17, 0xdf, 0x34, 0xfc, 0x51, 0x5a, - 0x9b, 0x9d, 0x70, 0x5d, 0x20, 0xcd, 0xe0, 0x28, 0xe0, 0x45, 0xa9, 0x02, - 0xa5, 0x3f, 0xfd, 0xe7, 0x5f, 0xb7, 0x53, 0x38, 0xc9, 0xd5, 0x10, 0x37, - 0x76, 0xe2, 0xfc, 0x3c, 0xb4, 0xbb, 0x20, 0x8d, 0x3b, 0x18, 0x54, 0x24, - 0x0c, 0xbe, 0xd5, 0x8f, 0xc8, 0xeb, 0x72, 0x48, 0xa2, 0x85, 0x01, 0xc8, - 0x9c, 0x6a, 0x35, 0x2f, 0xc0, 0x39, 0xa7, 0xb0, 0xfa, 0xf3, 0x73, 0x19, - 0xb8, 0xf2, 0x1b, 0xeb, 0xee, 0xd0, 0x82, 0xbc, 0x2e, 0xb1, 0xc0, 0x49, - 0xb6, 0xc5, 0x49, 0x0a, 0x0c, 0x12, 0xb7, 0xa5, 0x97, 0x62, 0x27, 0x83, - 0xba, 0x9f, 0x6d, 0xd5, 0x39, 0x76, 0x20, 0xdb, 0xf9, 0xe1, 0x1d, 0x02, - 0x34, 0x40, 0x7e, 0x75, 0x14, 0x46, 0xad, 0x3a, 0x1e, 0x1b, 0x43, 0x40, - 0xdc, 0xb4, 0x12, 0xb2, 0x79, 0xb6, 0x8f, 0xff, 0xe1, 0xf0, 0x5d, 0xed, - 0xa4, 0xcc, 0x7e, 0x21, 0x6e, 0xc6, 0x00, 0xf2, 0x3e, 0x59, 0x5d, 0x2f, - 0x9c, 0x13, 0x1f, 0x41, 0x7e, 0x33, 0xa4, 0x1f, 0x8d, 0xad, 0x59, 0x95, - 0x18, 0x23, 0x2c, 0xf2, 0x6c, 0xd7, 0x34, 0x64, 0xf8, 0xb2, 0x98, 0xb0, - 0x62, 0xa2, 0x74, 0x1e, 0xd4, 0x09, 0xf2, 0xa5, 0x75, 0xef, 0x88, 0xc8, - 0x6c, 0xa8, 0x6e, 0x1f, 0xc9, 0xed, 0x41, 0x2a, 0x17, 0xba, 0x8c, 0x65, - 0xc4, 0x8b, 0x54, 0xf2, 0xb7, 0x99, 0x91, 0x56, 0x2a, 0xba, 0xfa, 0x2a, - 0xa9, 0x2a, 0x15, 0xca, 0x65, 0x1a, 0x22, 0x01, 0x39, 0x96, 0x3f, 0x3b, - 0xae, 0x6e, 0xe7, 0x81, 0x06, 0x2a, 0x35, 0xb3, 0x5f, 0xb0, 0xa2, 0x3b, - 0xe0, 0x4c, 0x4b, 0x03, 0xd3, 0xf2, 0xba, 0x2e, 0x3d, 0x6c, 0xb6, 0x62, - 0xf9, 0x36, 0x05, 0x08, 0x05, 0x2e, 0x4b, 0x63, 0x8a, 0xad, 0x5f, 0xc5, - 0x8e, 0x87, 0x62, 0xdb, 0xc0, 0x58, 0x80, 0x50, 0xa7, 0x49, 0x66, 0x54, - 0x74, 0x19, 0xcf, 0xc6, 0x61, 0x56, 0x26, 0x09, 0x20, 0x1d, 0x90, 0xa7, - 0xaa, 0x63, 0x64, 0xbd, 0x90, 0x73, 0x04, 0xfa, 0xca, 0x48, 0x85, 0x9a, - 0x50, 0xa6, 0x18, 0x4c, 0xdd, 0xf2, 0xcd, 0xa7, 0xcd, 0x54, 0xcc, 0x14, - 0x3f, 0xfa, 0x56, 0x60, 0x61, 0x1f, 0xa0, 0xd1, 0xed, 0xe2, 0xc3, 0xd4, - 0x56, 0x29, 0x45, 0xfa, 0x65, 0xa6, 0x7e, 0x75, 0xa5, 0x1c, 0xae, 0x1e, - 0x63, 0xc5, 0x16, 0x96, 0xdb, 0x67, 0x96, 0x72, 0x06, 0xab, 0x7d, 0x6a, - 0x76, 0x5b, 0x6a, 0xe5, 0xfb, 0xf9, 0x81, 0x30, 0x5c, 0x33, 0xf8, 0x03, - 0x34, 0x99, 0x08, 0xd0, 0xec, 0x66, 0x3f, 0xcd, 0x0c, 0x7c, 0x98, 0x6a, - 0x6e, 0xb7, 0x44, 0x75, 0x10, 0x93, 0x9e, 0xe4, 0x02, 0x0c, 0xff, 0x24, - 0x3d, 0x5a, 0x27, 0x5f, 0x25, 0xde, 0xa6, 0xc9, 0xb8, 0xbf, 0x23, 0x05, - 0x61, 0x35, 0x04, 0xe8, 0xc4, 0xea, 0x20, 0x51, 0xf5, 0xbd, 0x63, 0x21, - 0xdb, 0xcc, 0x05, 0xdb, 0x68, 0xdf, 0x83, 0x8c, 0x5c, 0x8d, 0x7a, 0x1c, - 0x3b, 0x82, 0xc8, 0xb7, 0x94, 0x9f, 0x3f, 0xda, 0xe7, 0x80, 0x8d, 0x85, - 0x70, 0xc5, 0x27, 0xa1, 0xca, 0xa6, 0x75, 0x4f, 0x85, 0x85, 0x10, 0xa3, - 0xbf, 0xd5, 0xf4, 0x71, 0x1e, 0x71, 0xbf, 0x67, 0xfa, 0x91, 0xc5, 0xf1, - 0xf8, 0x13, 0xf0, 0xff, 0x72, 0x0a, 0x58, 0xfd, 0xeb, 0x78, 0x68, 0x8e, - 0xfd, 0x10, 0xd8, 0x7d, 0xfc, 0x47, 0x85, 0x5f, 0x83, 0x71, 0x52, 0x51, - 0xc9, 0x09, 0xbb, 0x6d, 0xf7, 0x70, 0x86, 0x06, 0x85, 0x6c, 0x4a, 0x5a, - 0x7d, 0xfd, 0x19, 0x5f, 0x60, 0xf4, 0xcb, 0xea, 0xf3, 0x4e, 0xc5, 0x4b, - 0x73, 0x4e, 0x0b, 0xf5, 0x2e, 0x99, 0x0e, 0x99, 0xc2, 0x20, 0x00, 0x30, - 0x67, 0xe6, 0xa8, 0xef, 0xd4, 0x78, 0x5a, 0x19, 0xdd, 0xe4, 0x83, 0xee, - 0x37, 0x26, 0xc2, 0xc5, 0x08, 0xde, 0x3f, 0xbb, 0xcf, 0xe9, 0xa6, 0xa6, - 0xb8, 0xac, 0x14, 0xb2, 0x18, 0xb8, 0x00, 0xca, 0x28, 0x7a, 0x04, 0xf8, - 0xfc, 0xc3, 0x27, 0x29, 0xe1, 0xf2, 0x95, 0x5d, 0x41, 0xbe, 0x1f, 0x1d, - 0x7e, 0x07, 0x86, 0xc2, 0xcc, 0x78, 0xcd, 0xfa, 0x09, 0xeb, 0xa0, 0xda, - 0xfa, 0x20, 0x82, 0x7c, 0x34, 0x50, 0x37, 0xda, 0x93, 0xe4, 0xe6, 0x64, - 0x80, 0xc8, 0x99, 0x69, 0x45, 0x7b, 0x5a, 0x49, 0x73, 0xb1, 0xae, 0x36, - 0xe6, 0xcf, 0x83, 0x1e, 0xe9, 0x01, 0xce, 0x07, 0x0d, 0x6d, 0xab, 0x85, - 0x6e, 0x2a, 0xba, 0x64, 0xc4, 0xc3, 0xc7, 0x47, 0xf3, 0x9f, 0x8d, 0x16, - 0x44, 0xda, 0x3e, 0x4b, 0xef, 0x23, 0x0f, 0x57, 0xb9, 0x55, 0x38, 0x33, - 0x83, 0x65, 0x42, 0x96, 0xae, 0x77, 0x32, 0xbd, 0xdb, 0xd7, 0x07, 0xed, - 0x1f, 0xdf, 0xc8, 0xcc, 0x07, 0x13, 0x8f, 0x29, 0x93, 0xa4, 0x8c, 0xbf, - 0x01, 0x41, 0xc9, 0xaa, 0x75, 0x34, 0x2e, 0x3d, 0x1f, 0x92, 0xdd, 0x31, - 0xb1, 0xc1, 0x1b, 0x02, 0x2e, 0x45, 0xde, 0x66, 0x0e, 0xab, 0x91, 0x34, - 0x7c, 0x0d, 0x46, 0xeb, 0xe0, 0xfd, 0xb6, 0xfc, 0x77, 0x70, 0xd6, 0x18, - 0x2f, 0x27, 0x30, 0xbd, 0xdf, 0xb7, 0xb1, 0x14, 0x06, 0xb2, 0xeb, 0x5d, - 0x44, 0xdb, 0x4f, 0xd6, 0x9c, 0xdb, 0xbe, 0xf8, 0xfc, 0x03, 0xcd, 0x42, - 0x48, 0xb0, 0x36, 0x71, 0x16, 0x19, 0xb3, 0x94, 0xbe, 0xa3, 0xf4, 0xae, - 0x1b, 0x1e, 0xea, 0x84, 0xd6, 0x55, 0x31, 0x79, 0x5f, 0x97, 0xb7, 0x24, - 0x60, 0x82, 0xad, 0xdf, 0x19, 0x64, 0xd2, 0x0a, 0x88, 0xa4, 0x8d, 0x04, - 0x85, 0x81, 0x4d, 0x21, 0x81, 0x8c, 0x4c, 0x26, 0x9e, 0x16, 0x7e, 0xd0, - 0x25, 0xd1, 0xeb, 0xee, 0x3c, 0x7a, 0xb5, 0x4a, 0xaf, 0xf0, 0xaa, 0xd1, - 0x91, 0x9e, 0x3b, 0x7e, 0x02, 0x59, 0x1f, 0x6f, 0x4a, 0xb6, 0xbb, 0x6e, - 0x66, 0x7a, 0x0e, 0x88, 0x7b, 0xe6, 0xd6, 0xea, 0x27, 0x3d, 0xaa, 0xc3, - 0xb7, 0x0e, 0xb6, 0x08, 0xd4, 0x3f, 0xb9, 0x43, 0xee, 0x98, 0x0c, 0xce, - 0xcb, 0x45, 0x62, 0x37, 0x90, 0x24, 0x4c, 0x53, 0xbb, 0x61, 0x1f, 0xe8, - 0x65, 0x66, 0x2d, 0x8a, 0x11, 0xbc, 0xec, 0xdd, 0x7a, 0xc9, 0x22, 0x90, - 0xb6, 0x6d, 0xc9, 0xac, 0x3d, 0x9d, 0xfd, 0x7b, 0x8f, 0xdc, 0xe2, 0x37, - 0xb2, 0x64, 0x47, 0xc8, 0xe0, 0xc8, 0x7b, 0x86, 0x85, 0xba, 0x9d, 0x51, - 0x75, 0x19, 0x30, 0x32, 0xf5, 0xfc, 0xed, 0x41, 0xc3, 0x5e, 0xd2, 0x92, - 0x73, 0x57, 0x0a, 0x31, 0x23, 0x61, 0xd2, 0xdb, 0x58, 0x58, 0xd9, 0x79, - 0x51, 0xab, 0x03, 0x99, 0xfb, 0x73, 0xb1, 0x02, 0x34, 0xb3, 0x4d, 0xdc, - 0xe2, 0xea, 0x6e, 0x23, 0x8c, 0xf1, 0x10, 0x3f, 0x6f, 0x6e, 0x07, 0xab, - 0x73, 0xe4, 0xd7, 0x32, 0xb8, 0x8d, 0x99, 0x86, 0xaa, 0x91, 0x0f, 0x38, - 0x2f, 0x2e, 0x28, 0x5e, 0x74, 0x45, 0x6d, 0x83, 0x26, 0x51, 0xb7, 0x27, - 0xcf, 0x8b, 0x44, 0x71, 0x61, 0xc7, 0x8c, 0x43, 0x4d, 0x53, 0x6b, 0x27, - 0xf3, 0xe8, 0x0b, 0x1f, 0x84, 0xf3, 0x66, 0xa7, 0xc0, 0xc5, 0x5c, 0xe7, - 0x4a, 0x98, 0x27, 0x29, 0xab, 0xed, 0x70, 0x7b, 0x05, 0x29, 0x61, 0x1e, - 0xb6, 0x7b, 0x68, 0x67, 0xd5, 0xcc, 0x5a, 0x15, 0xde, 0xf6, 0xf8, 0x48, - 0xda, 0x71, 0x66, 0xec, 0xe6, 0x38, 0x4e, 0xfa, 0x69, 0x0d, 0xd2, 0x3f, - 0x67, 0x53, 0x7c, 0xc3, 0xca, 0xe8, 0x94, 0x01, 0xa5, 0x9e, 0x52, 0xe9, - 0xf5, 0xdb, 0x29, 0xdd, 0x0e, 0x40, 0x61, 0xa6, 0x84, 0x2f, 0x4f, 0xde, - 0x99, 0x69, 0x51, 0x76, 0x41, 0x04, 0xdd, 0x01, 0x46, 0x26, 0x7d, 0xef, - 0x77, 0x9a, 0x4f, 0x3b, 0x18, 0xce, 0x4f, 0x08, 0xe8, 0x77, 0x22, 0x36, - 0xeb, 0xdb, 0xa7, 0xd5, 0x32, 0x62, 0xd9, 0x1c, 0xcc, 0x6d, 0xd7, 0x86, - 0x0c, 0x5e, 0x62, 0x73, 0x11, 0xdc, 0xb3, 0xe7, 0x38, 0x0a, 0xb5, 0x95, - 0xc2, 0x36, 0xb3, 0x6a, 0x46, 0x85, 0xa6, 0x60, 0x2c, 0x32, 0x59, 0x2f, - 0x89, 0xc3, 0xd9, 0xf7, 0xf6, 0xb8, 0x9f, 0x34, 0x99, 0xe9, 0x61, 0xc6, - 0x5b, 0x5e, 0x05, 0x3a, 0x84, 0x1c, 0x99, 0x25, 0x6f, 0x15, 0x2b, 0x74, - 0xc5, 0xc2, 0x30, 0xf4, 0x25, 0x0c, 0x33, 0x1a, 0x2e, 0x73, 0x5f, 0x34, - 0x2d, 0xa0, 0xb1, 0xc0, 0xb5, 0xbf, 0xeb, 0x0b, 0xef, 0x11, 0xdc, 0x26, - 0x31, 0x35, 0x4e, 0x4c, 0xe9, 0xe3, 0x00, 0xa3, 0xd8, 0x30, 0x65, 0x2a, - 0x6f, 0xba, 0x62, 0x9c, 0x42, 0xdb, 0xa6, 0xa0, 0xa0, 0xee, 0x7e, 0xdb, - 0xdc, 0x3e, 0xbe, 0x8a, 0x55, 0x82, 0x7a, 0x89, 0x4e, 0x74, 0xf5, 0x32, - 0x7e, 0xce, 0xe4, 0xb7, 0x86, 0x0a, 0xf2, 0x9c, 0x9c, 0x01, 0xa5, 0x38, - 0xf2, 0x03, 0xb7, 0x21, 0xb5, 0x0b, 0x82, 0xa9, 0x5e, 0xcb, 0xc6, 0x4d, - 0x63, 0xc8, 0x80, 0xf7, 0x5d, 0x79, 0x01, 0xf7, 0x3c, 0xb7, 0x3c, 0x14, - 0x0d, 0x10, 0x0f, 0x20, 0xc6, 0x98, 0x09, 0xf0, 0x08, 0xd0, 0x7a, 0xb9, - 0x4e, 0x1d, 0x53, 0x9a, 0x35, 0x75, 0x90, 0x0d, 0xc8, 0x58, 0xa2, 0x17, - 0x2c, 0x06, 0x59, 0x80, 0xe5, 0xc2, 0x5c, 0x58, 0x93, 0x0f, 0x6a, 0xf9, - 0xb4, 0x52, 0xb2, 0x37, 0xae, 0xab, 0x22, 0x26, 0x75, 0xc4, 0xe3, 0x4f, - 0x10, 0xd3, 0x2a, 0xb7, 0x11, 0x8f, 0xd4, 0xa6, 0x07, 0x74, 0x7c, 0xb2, - 0xaf, 0x79, 0xcc, 0xff, 0x01, 0x7b, 0x64, 0x44, 0x86, 0x61, 0x2d, 0x52, - 0x15, 0xd1, 0x6b, 0xb4, 0x7a, 0x73, 0x11, 0xf2, 0x09, 0x72, 0x01, 0xb5, - 0x97, 0xde, 0x46, 0xaa, 0xe1, 0x85, 0x97, 0xe6, 0x81, 0x51, 0x71, 0xcf, - 0xc5, 0x02, 0xce, 0x5e, 0xe2, 0xb9, 0x82, 0x36, 0x07, 0xbe, 0x6a, 0xed, - 0x7d, 0xfe, 0xf4, 0x09, 0xd5, 0x67, 0x09, 0xfb, 0x70, 0x1f, 0x65, 0x8a, - 0x4b, 0xe8, 0x21, 0x20, 0x96, 0x0f, 0xdb, 0xca, 0x4e, 0x94, 0xd4, 0x92, - 0x0d, 0x7b, 0x24, 0xae, 0x48, 0xd4, 0xc5, 0xa7, 0xec, 0x4a, 0xbb, 0x90, - 0x8e, 0x93, 0xf5, 0x22, 0x34, 0xb2, 0x98, 0xae, 0xe2, 0xfa, 0xdd, 0x43, - 0xca, 0x81, 0x6b, 0x10, 0xff, 0x26, 0xb2, 0x96, 0x90, 0xa6, 0x1e, 0x93, - 0xef, 0xe1, 0x47, 0xda, 0x1f, 0xa3, 0x15, 0x53, 0xf7, 0x6e, 0x87, 0x16, - 0x45, 0x0b, 0xc8, 0x42, 0xe2, 0x58, 0xd6, 0xe1, 0xf7, 0xaa, 0x03, 0x24, - 0x9a, 0x1a, 0xc4, 0xa6, 0xeb, 0xd4, 0xd6, 0x25, 0x60, 0x75, 0x5a, 0xe1, - 0x81, 0x06, 0x38, 0xa1, 0x8c, 0x43, 0x34, 0x8c, 0x01, 0x8b, 0xbf, 0x3f, - 0x51, 0xef, 0x46, 0x23, 0x71, 0x46, 0x5a, 0xc2, 0xd1, 0x89, 0x94, 0x39, - 0xd3, 0x75, 0xe7, 0x37, 0x21, 0xce, 0xd8, 0x6b, 0x79, 0x1e, 0x84, 0x57, - 0x8b, 0x72, 0xe1, 0x8d, 0x22, 0x5b, 0x4b, 0x95, 0x8e, 0x84, 0x8b, 0xcf, - 0xcf, 0x57, 0x5f, 0x3b, 0xf7, 0x2d, 0x3e, 0x42, 0xa8, 0x6a, 0xca, 0xc2, - 0x0e, 0x99, 0x5f, 0x56, 0x93, 0x8c, 0x36, 0x93, 0x1c, 0xe0, 0x22, 0x5f, - 0xa0, 0x8b, 0xad, 0xef, 0xd3, 0x15, 0xac, 0xd9, 0xd3, 0x33, 0xc8, 0x56, - 0x83, 0xb1, 0x36, 0xe2, 0x65, 0x3d, 0x63, 0xe3, 0x89, 0xff, 0x9d, 0x29, - 0x33, 0x74, 0x6d, 0x3e, 0x80, 0xf1, 0xc4, 0x70, 0xc1, 0xbc, 0x7b, 0x62, - 0x64, 0x37, 0x46, 0x8e, 0x5f, 0x85, 0x88, 0x39, 0x5b, 0x56, 0xfe, 0x82, - 0x98, 0xc9, 0xbf, 0xc0, 0xec, 0x91, 0x44, 0xed, 0xc3, 0x5d, 0x6e, 0xd1, - 0xf0, 0xec, 0x9e, 0x2d, 0x8c, 0xe8, 0x5f, 0xba, 0x6d, 0xf9, 0xae, 0x84, - 0xe2, 0x05, 0x3d, 0xb0, 0x2c, 0x72, 0xdb, 0x42, 0x0b, 0xa9, 0xed, 0xa8, - 0xab, 0x7c, 0x55, 0xb8, 0xfd, 0x35, 0x90, 0x47, 0x7e, 0xdc, 0x79, 0x95, - 0x75, 0xa8, 0x47, 0x4c, 0x07, 0x9f, 0x7d, 0x23, 0xa2, 0xcf, 0x5b, 0x6d, - 0xf1, 0xaa, 0x7d, 0xcb, 0x40, 0xfe, 0x1b, 0x5e, 0xa3, 0x71, 0x8f, 0x76, - 0xf3, 0xa3, 0x36, 0x8a, 0x16, 0x29, 0x90, 0x36, 0x65, 0xdc, 0x4d, 0x42, - 0x4b, 0xc1, 0x59, 0x5d, 0xdf, 0x2b, 0x12, 0x97, 0x25, 0xd8, 0xbb, 0xb7, - 0x7a, 0xcd, 0xdd, 0x70, 0x97, 0xd0, 0x31, 0x45, 0x87, 0xcc, 0x85, 0xaa, - 0xcb, 0x6b, 0xb3, 0xa4, 0x98, 0xdd, 0xd9, 0x69, 0xeb, 0xfc, 0x11, 0x39, - 0xa7, 0x5c, 0x66, 0x73, 0x64, 0x4a, 0x46, 0xe8, 0x0c, 0x98, 0xb4, 0xd1, - 0x16, 0x8c, 0x18, 0xcc, 0x87, 0xa3, 0xf9, 0x3a, 0xc5, 0x38, 0x9c, 0xe4, - 0xed, 0xa7, 0x5e, 0x2c, 0x0c, 0xba, 0x54, 0xe6, 0xe2, 0x80, 0xfa, 0x03, - 0x0c, 0x20, 0x8d, 0xb3, 0xcd, 0xb7, 0x07, 0xbf, 0x9a, 0x05, 0xcd, 0x75, - 0x9b, 0x26, 0x7d, 0x9d, 0x60, 0x81, 0xb0, 0x45, 0x2e, 0x44, 0x06, 0xa8, - 0xf9, 0x46, 0x00, 0x92, 0xf9, 0x77, 0x7c, 0xa1, 0xa5, 0xeb, 0x8b, 0x3a, - 0xf0, 0xe5, 0x77, 0xea, 0x36, 0x0c, 0x03, 0xf3, 0x7f, 0x12, 0xe9, 0x76, - 0xba, 0xb7, 0x9d, 0x9e, 0x80, 0xe5, 0x98, 0x57, 0x02, 0x4a, 0x9d, 0xe0, - 0xeb, 0x44, 0x98, 0x3f, 0x12, 0xf2, 0xbe, 0x7c, 0xc7, 0x02, 0x26, 0xd6, - 0xe0, 0x19, 0xac, 0x0c, 0x81, 0xc9, 0x1d, 0x39, 0x2b, 0x9a, 0xec, 0x6f, - 0xdb, 0xea, 0x7e, 0x81, 0xfa, 0x6b, 0x35, 0x80, 0x54, 0x4c, 0xa1, 0x7d, - 0x51, 0x93, 0xd2, 0xcd, 0xa6, 0xd6, 0x5a, 0xe6, 0x9b, 0x15, 0x4a, 0xe4, - 0xc1, 0x47, 0x6c, 0xd6, 0x0f, 0x49, 0x24, 0x9d, 0x28, 0x93, 0xf5, 0x60, - 0x63, 0x17, 0xf7, 0x9f, 0x64, 0xfa, 0x3d, 0xf2, 0x23, 0x6d, 0x72, 0xe3, - 0xbf, 0x2a, 0x5d, 0x15, 0x2d, 0x4f, 0x43, 0x34, 0xbe, 0x10, 0xb0, 0x1f, - 0x15, 0x06, 0x6c, 0x81, 0x04, 0xba, 0x8b, 0xc3, 0x49, 0x88, 0xba, 0x51, - 0xe7, 0x6f, 0x50, 0x28, 0x9e, 0x95, 0x97, 0x9e, 0xba, 0xac, 0xb9, 0x92, - 0xad, 0xf8, 0x79, 0x3a, 0xae, 0x13, 0xa4, 0x56, 0x59, 0x07, 0xdb, 0x47, - 0x18, 0x62, 0x29, 0xd5, 0xf1, 0x72, 0x81, 0x66, 0xfc, 0x8d, 0xd1, 0x61, - 0xbc, 0xf4, 0x0d, 0xc1, 0xfc, 0x56, 0xde, 0x68, 0x75, 0x9f, 0xa5, 0x80, - 0x39, 0x55, 0x9a, 0x29, 0xee, 0x12, 0x99, 0xe9, 0x39, 0x39, 0xae, 0xb2, - 0xe8, 0x57, 0xc8, 0xd0, 0xb0, 0x6c, 0xfd, 0x06, 0xc5, 0x5d, 0xc3, 0xf0, - 0x6f, 0xa3, 0x62, 0x6e, 0x58, 0xaf, 0x4b, 0xa1, 0xf4, 0x36, 0x8e, 0xbb, - 0x00, 0x41, 0x00, 0x41, 0x44, 0x29, 0x67, 0xa4, 0x33, 0xbf, 0xb9, 0x9d, - 0xe0, 0xff, 0x0a, 0xe5, 0x92, 0x36, 0xa0, 0xae, 0x91, 0x38, 0xdf, 0x88, - 0x57, 0x46, 0xd1, 0xe2, 0x7c, 0xda, 0x42, 0xfc, 0x8a, 0xc3, 0x0d, 0x03, - 0x2f, 0xd0, 0x8f, 0x21, 0xdb, 0xbd, 0xe8, 0x5a, 0xb2, 0x6a, 0xfd, 0x4b, - 0xc9, 0xe7, 0x83, 0xc5, 0xbc, 0x13, 0x05, 0x73, 0x27, 0xe9, 0x55, 0x6e, - 0x7b, 0x43, 0xe9, 0x7e, 0x22, 0x61, 0x03, 0x71, 0x7c, 0x97, 0x62, 0x9d, - 0xab, 0x92, 0x40, 0xe3, 0xad, 0x84, 0x3e, 0x20, 0x4b, 0xb4, 0x20, 0x5d, - 0xb9, 0x7d, 0xa5, 0x98, 0xdd, 0xdb, 0x7c, 0x50, 0x32, 0x64, 0x29, 0x5f, - 0x57, 0x45, 0x4c, 0x36, 0xe5, 0xa7, 0x6d, 0x95, 0x25, 0x07, 0x89, 0xd4, - 0x4d, 0x71, 0x90, 0x14, 0xf1, 0x05, 0x3a, 0xfc, 0x7c, 0xe9, 0x67, 0x00, - 0xa8, 0xcf, 0x34, 0x0a, 0x19, 0x80, 0x7e, 0x12, 0x01, 0x95, 0x93, 0xa9, - 0x41, 0x20, 0x42, 0x4b, 0x41, 0x91, 0x1e, 0xfe, 0xed, 0xbd, 0xfd, 0x7b, - 0x6f, 0x4f, 0xd5, 0x1f, 0xf6, 0x92, 0x49, 0x44, 0x9b, 0xf2, 0x1f, 0x4f, - 0x63, 0x06, 0x17, 0x48, 0x39, 0xf9, 0x13, 0x05, 0x8c, 0xd0, 0x67, 0x9b, - 0x08, 0x04, 0x13, 0x92, 0x93, 0xa6, 0x00, 0x08, 0xae, 0xbe, 0xe3, 0x9b, - 0x13, 0xda, 0xb6, 0x80, 0xea, 0x3d, 0x1e, 0xcc, 0xf6, 0x21, 0xae, 0xb8, - 0x92, 0x91, 0x85, 0xc8, 0xa6, 0x07, 0x96, 0x8a, 0x6d, 0x38, 0xc4, 0x7a, - 0x23, 0x0d, 0xdd, 0xfd, 0xae, 0xda, 0x51, 0x50, 0xa3, 0xaa, 0xb6, 0x51, - 0x50, 0xca, 0xc1, 0xc6, 0x46, 0x33, 0x93, 0xdd, 0xe0, 0x24, 0x0f, 0xd6, - 0x0f, 0x8b, 0xf5, 0x34, 0x4a, 0xbd, 0x9a, 0x3f, 0xd4, 0x20, 0xe5, 0xd3, - 0xf5, 0xdc, 0x14, 0x9b, 0x97, 0xb5, 0x21, 0xbe, 0xf0, 0x04, 0x37, 0x4c, - 0xfe, 0xcb, 0x90, 0x1a, 0x46, 0xa8, 0x90, 0xcf, 0xb1, 0xa1, 0x7c, 0xa6, - 0xbc, 0x01, 0x6b, 0xe0, 0x62, 0xd3, 0x91, 0x3d, 0xb9, 0x4f, 0xd6, 0x4c, - 0x29, 0x79, 0xbf, 0x46, 0xa9, 0xc1, 0xe6, 0x35, 0xc7, 0x9c, 0xb9, 0x84, - 0xec, 0xb3, 0xd1, 0xec, 0xe0, 0xf4, 0xb5, 0x44, 0x74, 0xa7, 0x35, 0xb0, - 0xde, 0x28, 0x0c, 0x11, 0xb2, 0x6c, 0xd6, 0xf1, 0x22, 0xdb, 0x42, 0x1f, - 0x35, 0x76, 0xc1, 0xb9, 0x78, 0x10, 0xac, 0xac, 0x19, 0x40, 0x3d, 0x2f, - 0xbb, 0x8b, 0x11, 0xbe, 0x0d, 0x91, 0x91, 0xfc, 0x59, 0x89, 0x83, 0x4d, - 0x24, 0x8a, 0xe5, 0xcd, 0xc6, 0xd9, 0x5c, 0xfc, 0x7e, 0x47, 0x7a, 0xd6, - 0x47, 0x1f, 0xd9, 0xe9, 0x5b, 0xeb, 0x7b, 0x13, 0x81, 0x03, 0xdf, 0x68, - 0x6d, 0xe5, 0xbf, 0x6f, 0x4e, 0xd8, 0x96, 0xde, 0xfa, 0x33, 0x60, 0x90, - 0x9f, 0x7c, 0x28, 0x0d, 0x55, 0x20, 0x26, 0xa0, 0xd7, 0x66, 0x36, 0xd2, - 0x27, 0xdc, 0x8a, 0x02, 0xb0, 0x6a, 0x69, 0x54, 0xfe, 0xf0, 0x58, 0xe2, - 0xcf, 0x53, 0xf4, 0x5e, 0xb4, 0x90, 0x35, 0x2c, 0x2e, 0x7f, 0x92, 0x9c, - 0x7b, 0xda, 0x9c, 0x88, 0xdf, 0x48, 0x15, 0xa6, 0x4a, 0x81, 0x35, 0xb9, - 0x3d, 0x3b, 0x33, 0x74, 0x9b, 0xb9, 0x44, 0x74, 0xb7, 0x11, 0x3d, 0xfc, - 0xcd, 0x8d, 0xcd, 0xd6, 0x62, 0x00, 0x76, 0x08, 0x4a, 0x25, 0x51, 0x9b, - 0x65, 0xe5, 0x3b, 0x8c, 0x97, 0xe5, 0xbe, 0x08, 0x13, 0xd3, 0xb7, 0x32, - 0x4a, 0x3c, 0xcf, 0x1e, 0x3a, 0x8c, 0x87, 0x3f, 0x77, 0x95, 0x7d, 0x3c, - 0xb8, 0xec, 0xba, 0x2c, 0x46, 0x2d, 0x4a, 0xdc, 0x32, 0x99, 0x26, 0x1d, - 0x23, 0x8a, 0xa1, 0x07, 0xd9, 0xea, 0xdb, 0xa6, 0x5f, 0x59, 0x65, 0x65, - 0x0a, 0x04, 0x79, 0xc7, 0x08, 0x29, 0xf3, 0xb1, 0x88, 0xe5, 0x5f, 0x70, - 0xc2, 0x83, 0xee, 0x99, 0xad, 0xb3, 0x88, 0x73, 0xa0, 0xce, 0x8f, 0x21, - 0xbd, 0x9a, 0xf3, 0xd0, 0xfe, 0x6c, 0x3f, 0x87, 0xc6, 0x3c, 0xfd, 0xea, - 0xe2, 0x7f, 0xc1, 0x1a, 0x74, 0x2f, 0x2f, 0x20, 0x5f, 0x8a, 0x63, 0xf8, - 0x0c, 0xff, 0xb8, 0x55, 0xcb, 0x88, 0x36, 0xdf, 0x96, 0x7b, 0x0f, 0x32, - 0x3c, 0x8e, 0x24, 0x89, 0xe8, 0x95, 0xb3, 0x96, 0xb0, 0x64, 0xbc, 0x5e, - 0x70, 0x8a, 0x26, 0x1e, 0x72, 0xf7, 0x45, 0x9e, 0x48, 0x99, 0x4a, 0xbf, - 0xfb, 0x94, 0xa3, 0xfa, 0xdc, 0x06, 0x99, 0x3d, 0xbb, 0xa5, 0x2b, 0xcf, - 0xb8, 0xfe, 0x0c, 0xb4, 0xb6, 0x76, 0xeb, 0x5a, 0x38, 0xde, 0x09, 0x5f, - 0x35, 0xd6, 0x42, 0x74, 0x6e, 0xd0, 0xac, 0x7b, 0xcd, 0xee, 0x03, 0xe7, - 0x00, 0x2c, 0x2d, 0x9d, 0xc9, 0x5f, 0xd0, 0x2d, 0xe5, 0xcd, 0xb4, 0x6e, - 0xa7, 0x3f, 0x55, 0xdc, 0x74, 0x42, 0xa3, 0x20, 0xaa, 0x03, 0x7f, 0x30, - 0xfa, 0x34, 0x4d, 0x8b, 0xaf, 0x8a, 0xe5, 0x31, 0xd9, 0xb7, 0x66, 0x7f, - 0x25, 0x5f, 0x72, 0x43, 0xc7, 0xdc, 0x77, 0x57, 0xcf, 0xb8, 0x67, 0xb0, - 0x86, 0xb2, 0xba, 0x83, 0xff, 0x93, 0xf1, 0xef, 0xce, 0x9b, 0x39, 0x26, - 0x0e, 0xba, 0xe8, 0x62, 0xa8, 0x09, 0xba, 0xd0, 0xb9, 0xdf, 0x45, 0x56, - 0xaf, 0x2d, 0x21, 0x80, 0xec, 0xf5, 0x5f, 0x52, 0x7c, 0x2e, 0x83, 0x1c, - 0x05, 0x74, 0xa3, 0x05, 0x4a, 0x29, 0x8a, 0xec, 0x82, 0x2c, 0x0f, 0xf5, - 0xc7, 0x1e, 0xb1, 0x7b, 0xfb, 0x66, 0x6d, 0xae, 0x10, 0xad, 0x33, 0x5c, - 0x2e, 0xd3, 0xba, 0xd6, 0xe3, 0xb2, 0x67, 0xa0, 0x66, 0x78, 0xf1, 0x50, - 0x60, 0x3b, 0xfc, 0x9c, 0x12, 0xac, 0x6f, 0x9e, 0x95, 0x63, 0xe9, 0x83, - 0x5e, 0xd1, 0xe0, 0x96, 0x75, 0x83, 0x06, 0xd3, 0x30, 0x7a, 0x1c, 0x27, - 0x98, 0x55, 0x02, 0x57, 0xbc, 0xd5, 0xfa, 0x35, 0xa6, 0x92, 0xe3, 0x3e, - 0xf4, 0x1d, 0xbf, 0xc1, 0xb9, 0xf4, 0x7e, 0xf6, 0x76, 0x6b, 0x54, 0x4b, - 0x4c, 0xc4, 0x24, 0x27, 0x8b, 0xf3, 0x74, 0x7d, 0x4b, 0x28, 0xb7, 0x37, - 0xbe, 0x19, 0x88, 0x17, 0xd0, 0xae, 0x6f, 0xaf, 0x50, 0xfa, 0x87, 0xd5, - 0xb4, 0x10, 0xe7, 0x85, 0xce, 0x33, 0xe7, 0x42, 0xfc, 0xe4, 0x5f, 0x8c, - 0x36, 0xdd, 0xa3, 0x81, 0x5a, 0x0d, 0xe1, 0x83, 0x05, 0xf9, 0x38, 0x18, - 0x4a, 0xe2, 0x0c, 0xd3, 0x42, 0x8d, 0x71, 0x3a, 0x33, 0xe7, 0x11, 0xae, - 0xff, 0x33, 0x82, 0x90, 0x70, 0x5a, 0xa7, 0xa4, 0x63, 0xdf, 0x5d, 0xa4, - 0x61, 0x03, 0x87, 0x33, 0xbb, 0xef, 0xc7, 0xa4, 0xf4, 0x8d, 0x84, 0x59, - 0x23, 0xef, 0x7a, 0x4a, 0x0c, 0xc6, 0xfb, 0x3f, 0x88, 0x45, 0xc0, 0x2f, - 0xd5, 0x13, 0x7f, 0xc8, 0xab, 0xad, 0xcd, 0xf9, 0x41, 0xb9, 0xef, 0x1b, - 0x2c, 0xb8, 0x0e, 0x05, 0x92, 0xd9, 0x70, 0xd9, 0xf8, 0x86, 0x7f, 0xa8, - 0xc5, 0xbd, 0x99, 0x21, 0xc7, 0xf1, 0x63, 0x3b, 0x8d, 0x5e, 0xe5, 0xf6, - 0x4b, 0x2e, 0x3c, 0x82, 0x06, 0x7d, 0x14, 0xce, 0xfb, 0xb1, 0x02, 0xbd, - 0x73, 0x4f, 0xac, 0x2e, 0xc7, 0xa0, 0xd2, 0x8e, 0x57, 0x7c, 0x0f, 0x02, - 0xd3, 0x52, 0xbb, 0xfb, 0x6b, 0x2a, 0xc1, 0xe3, 0x09, 0xe2, 0x91, 0xbc, - 0xbb, 0x0c, 0xd8, 0x0e, 0x28, 0x08, 0x0b, 0x52, 0xf9, 0x78, 0xf5, 0x91, - 0x70, 0x6d, 0xc6, 0xd8, 0xe9, 0x2e, 0xbb, 0x6b, 0x75, 0x46, 0x0c, 0xee, - 0xfd, 0xc5, 0x70, 0xd3, 0xdf, 0x6b, 0x45, 0xa1, 0x4c, 0x63, 0x76, 0xab, - 0x05, 0x2d, 0x06, 0x63, 0xfe, 0x0f, 0x1c, 0xaa, 0xc9, 0xdd, 0xd5, 0xef, - 0x91, 0xbe, 0x28, 0xd0, 0x8c, 0xea, 0x66, 0x7b, 0xb9, 0xae, 0xfa, 0xfc, - 0xcb, 0x8b, 0x62, 0xa2, 0x2e, 0x45, 0x1c, 0x0a, 0xe3, 0xf1, 0x8a, 0xb0, - 0x4b, 0x7d, 0x1e, 0x2a, 0xf1, 0x3f, 0x5d, 0x0a, 0x17, 0x77, 0xea, 0xec, - 0x10, 0x29, 0x1d, 0x2d, 0x40, 0x06, 0xe4, 0xc0, 0x40, 0x31, 0xf0, 0xa7, - 0x8f, 0x4c, 0x18, 0xf5, 0x26, 0x58, 0x4e, 0x18, 0x44, 0x5c, 0x5e, 0xab, - 0x9b, 0xc6, 0x1d, 0x57, 0x55, 0xbe, 0xe2, 0x58, 0x61, 0x14, 0x10, 0x3d, - 0x95, 0x42, 0x83, 0x05, 0x69, 0x8c, 0x20, 0x03, 0x81, 0x1d, 0x5a, 0x5c, - 0xbb, 0xc6, 0x09, 0xa4, 0x99, 0xef, 0x06, 0xcf, 0xd6, 0xca, 0xd6, 0x4b, - 0x06, 0xde, 0x84, 0x83, 0x90, 0x58, 0x11, 0x9d, 0x2c, 0x28, 0xec, 0x3d, - 0x8e, 0x5c, 0x6e, 0x48, 0xbc, 0x01, 0x2b, 0x56, 0xf6, 0xcf, 0x53, 0x5f, - 0xae, 0xa2, 0x7d, 0x00, 0x48, 0xbe, 0x72, 0xd3, 0x60, 0x7f, 0xe5, 0x3d, - 0x89, 0x06, 0x4c, 0xcc, 0xd5, 0xc6, 0x09, 0x3f, 0x10, 0xdc, 0x6d, 0x60, - 0x49, 0xaf, 0x63, 0x87, 0xa8, 0x80, 0x38, 0xae, 0x55, 0xa6, 0xac, 0xba, - 0xaf, 0x9e, 0x0f, 0xe2, 0x1d, 0x1e, 0x02, 0xe1, 0x3b, 0x66, 0x9b, 0xb7, - 0x05, 0x43, 0x04, 0x7d, 0xc1, 0x91, 0x4a, 0xc3, 0xae, 0x2e, 0x7d, 0x0c, - 0x65, 0x18, 0x2f, 0x80, 0xb1, 0x63, 0x89, 0x81, 0x65, 0x4e, 0x24, 0x8e, - 0x9b, 0x99, 0x0a, 0x49, 0x71, 0x2d, 0x0d, 0x57, 0xcd, 0x94, 0x63, 0x36, - 0x4d, 0x26, 0x6b, 0x10, 0x54, 0x25, 0x50, 0x3b, 0xf4, 0xcf, 0x3c, 0x42, - 0x8a, 0xd1, 0xab, 0x96, 0xc7, 0x11, 0x3b, 0x6d, 0x90, 0xc6, 0x53, 0x04, - 0x56, 0x69, 0x44, 0x05, 0xf4, 0x99, 0x11, 0x4b, 0x30, 0xc4, 0x8d, 0xb8, - 0x6b, 0xe2, 0xe2, 0xb3, 0xab, 0xa8, 0x89, 0x63, 0x86, 0x4d, 0x43, 0x32, - 0xc4, 0xda, 0xaa, 0x2d, 0xc7, 0xd5, 0x23, 0xc8, 0xd0, 0x49, 0x69, 0x00, - 0xfa, 0x8d, 0x82, 0x2a, 0x75, 0xa7, 0x96, 0x01, 0x66, 0xa3, 0x5d, 0x85, - 0x2e, 0x63, 0x9e, 0x9b, 0xb4, 0x98, 0xb4, 0x97, 0x54, 0x98, 0xc1, 0x71, - 0xd1, 0xd5, 0xc8, 0x8a, 0x1b, 0x7e, 0x33, 0xee, 0x56, 0x6a, 0x1e, 0xa4, - 0xb9, 0x9f, 0x4e, 0xb6, 0xa8, 0xf8, 0x39, 0xf6, 0xe9, 0xce, 0x7f, 0x3b, - 0x9d, 0xf5, 0xa8, 0x12, 0xcc, 0x84, 0x6d, 0xb5, 0xbb, 0xd0, 0xaa, 0x78, - 0x5a, 0xd1, 0x61, 0x78, 0x3e, 0xe1, 0xd5, 0x6c, 0x2a, 0x40, 0x35, 0x91, - 0x10, 0x0c, 0x2f, 0xbd, 0x4d, 0x51, 0xb2, 0x40, 0xd5, 0x96, 0xd7, 0xe1, - 0x77, 0xe5, 0xf5, 0x7e, 0x8c, 0xea, 0x6e, 0xea, 0x7b, 0x0b, 0x08, 0xc5, - 0x7b, 0x71, 0x6f, 0x95, 0x48, 0x41, 0x7c, 0x6e, 0x44, 0x9e, 0x76, 0x0d, - 0x0a, 0xa9, 0x28, 0x07, 0xc0, 0xee, 0x9b, 0x5b, 0x84, 0x5b, 0xb5, 0xdb, - 0x6d, 0xb0, 0x34, 0x11, 0x24, 0x9f, 0xa3, 0x1e, 0x02, 0xf3, 0xa0, 0x41, - 0x39, 0x18, 0xcd, 0x30, 0x92, 0x0d, 0x40, 0xa7, 0x98, 0x5b, 0x3c, 0xb4, - 0xd8, 0x34, 0x00, 0x3b, 0x07, 0x6f, 0x26, 0x41, 0x0c, 0x40, 0x94, 0xb8, - 0x73, 0x59, 0x82, 0xfe, 0x70, 0x73, 0xbc, 0xbb, 0xca, 0x66, 0x76, 0x50, - 0x1d, 0xba, 0x0c, 0x94, 0x28, 0x69, 0x3f, 0x37, 0x4f, 0x23, 0xf2, 0x47, - 0x79, 0x45, 0x99, 0x0f, 0xce, 0x5c, 0x95, 0x5e, 0x67, 0xae, 0x33, 0xc0, - 0x5f, 0x5c, 0x10, 0x32, 0xb5, 0x8e, 0x4e, 0xb7, 0x97, 0x1c, 0x90, 0xb8, - 0xcc, 0x91, 0x52, 0x9a, 0x9b, 0xb5, 0x79, 0x39, 0x95, 0xe5, 0xd9, 0x31, - 0xa0, 0x17, 0x40, 0xa7, 0x0f, 0xa5, 0x55, 0x09, 0x54, 0x14, 0x54, 0x6b, - 0x5c, 0x60, 0xdc, 0x21, 0x81, 0x8b, 0x7e, 0x93, 0x87, 0x1d, 0x42, 0xbc, - 0xfc, 0xec, 0xd6, 0x85, 0x7d, 0x6d, 0x76, 0x4e, 0x34, 0x3d, 0x2c, 0xb9, - 0x76, 0x97, 0x3d, 0x5a, 0xab, 0xcd, 0xe4, 0x3a, 0x26, 0x7c, 0xa2, 0x13, - 0xa2, 0x43, 0x03, 0xb0, 0xb0, 0x33, 0x10, 0x6d, 0x11, 0xef, 0xef, 0x27, - 0x19, 0x5a, 0x05, 0x91, 0x9e, 0xbb, 0x20, 0xec, 0x80, 0xaf, 0xff, 0x63, - 0x61, 0x58, 0xb4, 0x8d, 0x60, 0x04, 0xe9, 0x6a, 0xaa, 0x85, 0xb5, 0x70, - 0xa3, 0x1f, 0x53, 0xd7, 0x4b, 0x90, 0xa3, 0x48, 0x1d, 0x83, 0x62, 0xbe, - 0x5f, 0x8b, 0xec, 0x84, 0xc5, 0xdb, 0x69, 0x95, 0xaf, 0xe1, 0x50, 0x00, - 0x0e, 0x30, 0x6e, 0x22, 0xe4, 0xd9, 0x5c, 0x86, 0xfa, 0xd6, 0x4b, 0xf8, - 0x33, 0xb2, 0x81, 0x66, 0x47, 0xa9, 0x6e, 0xd7, 0x12, 0x16, 0x81, 0xdf, - 0x2d, 0x79, 0xb9, 0x6d, 0x67, 0x93, 0xf1, 0x45, 0x46, 0xc0, 0x66, 0xa5, - 0xed, 0xbb, 0x57, 0xbf, 0xa7, 0xe3, 0xdd, 0x53, 0xf6, 0x43, 0x8b, 0x08, - 0xa8, 0x4c, 0x74, 0x0b, 0x7c, 0x90, 0xf1, 0x5a, 0xee, 0xf2, 0xc5, 0x5b, - 0x9f, 0xf2, 0xec, 0x58, 0x12, 0x89, 0x48, 0x72, 0x9c, 0xbc, 0xea, 0x73, - 0xb1, 0x5d, 0xe8, 0x13, 0x3a, 0x49, 0x2c, 0xbd, 0x7a, 0x10, 0x90, 0x3e, - 0x05, 0x45, 0xb4, 0xed, 0x5b, 0x96, 0x1f, 0xe9, 0x35, 0xb2, 0x6c, 0x88, - 0xeb, 0x9b, 0x9d, 0x75, 0x8d, 0xf5, 0x3b, 0x63, 0x70, 0x98, 0x90, 0xa7, - 0x49, 0x0b, 0x81, 0xd1, 0x0c, 0xf7, 0x10, 0x1e, 0x6c, 0x0e, 0xcb, 0x44, - 0xa7, 0xb9, 0x69, 0xed, 0xdd, 0xe7, 0xf2, 0x4e, 0xb2, 0xf6, 0x80, 0x82, - 0xd7, 0xd8, 0x38, 0x70, 0xf0, 0xbe, 0xc3, 0x75, 0xb7, 0xc7, 0x6f, 0xfa, - 0xd4, 0xf7, 0x2b, 0x52, 0x79, 0x51, 0x92, 0xf8, 0xd9, 0x22, 0x08, 0x37, - 0xde, 0x1d, 0x0c, 0xac, 0x44, 0x36, 0x44, 0x8e, 0xe8, 0xf0, 0x47, 0x4d, - 0xc7, 0xac, 0x67, 0x17, 0xcc, 0x0a, 0x30, 0x14, 0x00, 0x79, 0x20, 0x2f, - 0x0c, 0x6c, 0x02, 0xea, 0xc3, 0x08, 0x75, 0x42, 0x8a, 0xc8, 0xce, 0x27, - 0xe6, 0x26, 0x69, 0x80, 0x05, 0xe3, 0x2b, 0xd9, 0x4a, 0x02, 0x4e, 0xf5, - 0xd2, 0xa9, 0xc9, 0x89, 0x40, 0x5a, 0x7c, 0x7d, 0x77, 0x76, 0x55, 0x45, - 0xc6, 0x7f, 0x4d, 0xa8, 0xd0, 0x67, 0x42, 0x1b, 0xd9, 0xff, 0xb2, 0xaf, - 0xe1, 0xe3, 0x97, 0x6f, 0xb4, 0xcc, 0xf0, 0x7e, 0xbf, 0x1b, 0x1b, 0x33, - 0xe1, 0xe7, 0x48, 0x18, 0x9d, 0x2c, 0x6c, 0xaa, 0xfd, 0x51, 0xaa, 0x30, - 0x9c, 0x2a, 0x57, 0x9e, 0x63, 0x53, 0xbe, 0x20, 0x1a, 0xc4, 0xaa, 0xf5, - 0xe4, 0x8c, 0xda, 0x48, 0x74, 0x58, 0xea, 0xfd, 0x34, 0x78, 0x35, 0x20, - 0x5f, 0xc2, 0xc6, 0xad, 0x51, 0x18, 0xcd, 0x5b, 0x3e, 0xb2, 0x80, 0x99, - 0x23, 0x56, 0x87, 0x1b, 0x49, 0x30, 0x9a, 0xb5, 0x79, 0xd9, 0xe5, 0xb8, - 0xae, 0x8d, 0x55, 0xf0, 0x0f, 0x54, 0xb5, 0x8b, 0x47, 0x84, 0xb9, 0x14, - 0xd1, 0xb7, 0x3f, 0x79, 0x9c, 0x08, 0x50, 0x7d, 0x59, 0xb0, 0xc8, 0xb0, - 0x4d, 0x90, 0x0f, 0x83, 0x78, 0xcf, 0xf0, 0x37, 0xee, 0x54, 0xa8, 0xa2, - 0x43, 0x65, 0x3a, 0xa6, 0x4a, 0xff, 0xc7, 0xef, 0x92, 0x0a, 0xe1, 0xf8, - 0x27, 0x45, 0x2a, 0xaa, 0x0b, 0x75, 0x1b, 0x4d, 0x26, 0xf5, 0xf2, 0xc3, - 0xed, 0x2a, 0xa1, 0x88, 0x03, 0x8c, 0x9d, 0xa2, 0xfd, 0xb1, 0x43, 0x46, - 0x5c, 0x10, 0xb7, 0x0b, 0x1d, 0xf7, 0x35, 0xa2, 0x53, 0xb2, 0xdd, 0x00, - 0x33, 0x1c, 0xd4, 0xb5, 0x87, 0x09, 0x4b, 0xdf, 0xfc, 0xe9, 0x84, 0x43, - 0xee, 0x76, 0x79, 0x21, 0x01, 0x05, 0x80, 0xcb, 0xc3, 0x4d, 0x05, 0x44, - 0x3e, 0x04, 0x44, 0xa6, 0x67, 0xdd, 0x20, 0x62, 0xe4, 0x80, 0x3a, 0xe9, - 0xa9, 0xab, 0x2a, 0xb5, 0x56, 0xa6, 0x09, 0x4b, 0x22, 0x1e, 0x94, 0xbb, - 0xdf, 0x75, 0xad, 0x86, 0x21, 0xbd, 0x35, 0x56, 0x7d, 0xfd, 0xd3, 0xe0, - 0x74, 0xfd, 0x2d, 0x6c, 0xdb, 0x12, 0x2a, 0x64, 0xdd, 0x51, 0x06, 0xc9, - 0x9e, 0x34, 0x3a, 0xa4, 0x31, 0xd3, 0xf0, 0x72, 0x5c, 0x7a, 0xf5, 0x0f, - 0x57, 0x70, 0x42, 0x23, 0x4f, 0x2f, 0xa0, 0xf8, 0x95, 0xbe, 0x23, 0x51, - 0xce, 0xf4, 0x23, 0xd3, 0x5e, 0xce, 0x9e, 0x66, 0xa8, 0x3b, 0x42, 0xbc, - 0x82, 0x91, 0xaa, 0x76, 0x1f, 0x8a, 0x3e, 0x90, 0x10, 0xc4, 0xbc, 0x46, - 0x30, 0xf4, 0xfe, 0x46, 0xc7, 0xa1, 0xe5, 0x02, 0xb5, 0x7d, 0xdf, 0x70, - 0x7a, 0x21, 0x47, 0xa4, 0x2f, 0x85, 0x40, 0x1f, 0x89, 0xb1, 0x0c, 0x11, - 0xc5, 0xa4, 0xe0, 0x90, 0x6a, 0x68, 0x3a, 0x61, 0x7f, 0x95, 0x47, 0x92, - 0x0e, 0xcc, 0x66, 0xb1, 0xea, 0x1d, 0x7b, 0x22, 0x46, 0x06, 0x26, 0xaf, - 0x5b, 0xbb, 0x1b, 0xcc, 0x5f, 0xdd, 0x62, 0xa2, 0xfb, 0xe1, 0x0d, 0xed, - 0x5c, 0xad, 0xf2, 0x1c, 0x42, 0x9b, 0x75, 0x64, 0x28, 0x81, 0xf9, 0x78, - 0x9f, 0xa3, 0xb5, 0x63, 0x5c, 0xf9, 0xd9, 0xe4, 0xb9, 0x6c, 0x70, 0xc0, - 0x25, 0x87, 0x2a, 0x32, 0x4c, 0x5f, 0xe5, 0xf0, 0x78, 0x83, 0x0e, 0xa1, - 0x63, 0xcd, 0x6b, 0x16, 0xa8, 0x27, 0x35, 0x2b, 0x20, 0xee, 0xaf, 0x14, - 0xec, 0xc3, 0x9d, 0x29, 0xf6, 0x6b, 0x3b, 0x11, 0x57, 0xe5, 0x23, 0x3e, - 0x19, 0x14, 0x4c, 0xe9, 0x94, 0xb5, 0x7a, 0x12, 0x37, 0x76, 0x60, 0xdd, - 0x44, 0x25, 0x54, 0xaa, 0x3e, 0xcf, 0x0b, 0x5b, 0xb7, 0xf2, 0x3e, 0x42, - 0xa8, 0xa9, 0x0d, 0xce, 0xd1, 0x7d, 0xad, 0xcd, 0xae, 0xdc, 0xf4, 0x46, - 0x8c, 0x94, 0x07, 0xfb, 0x57, 0x6c, 0xba, 0x2e, 0x1d, 0x92, 0xc2, 0x91, - 0x2a, 0xb2, 0x4d, 0x53, 0x46, 0x16, 0x2b, 0x4f, 0xe9, 0xc5, 0x8f, 0x6e, - 0x35, 0xfd, 0x8b, 0x6e, 0xfc, 0x04, 0x3e, 0x97, 0x7c, 0x5b, 0x2f, 0x75, - 0x48, 0x8e, 0xdf, 0x3a, 0x7c, 0x93, 0xdf, 0xce, 0x62, 0xc4, 0xeb, 0xe1, - 0xfb, 0x8f, 0x9d, 0xa9, 0x88, 0x3b, 0x77, 0xe5, 0x67, 0x9f, 0x05, 0x6f, - 0xae, 0x8f, 0xc6, 0x81, 0xb7, 0xc1, 0x17, 0xc6, 0x23, 0xdb, 0x65, 0xbd, - 0xd2, 0xfc, 0x91, 0x89, 0x91, 0xd8, 0xcc, 0x37, 0x12, 0x5a, 0x16, 0xc7, - 0x25, 0x17, 0x0a, 0x2c, 0xca, 0xbe, 0x3b, 0x05, 0x7c, 0xf4, 0x93, 0xff, - 0xc1, 0xfc, 0x9d, 0x54, 0xd8, 0x4c, 0xa0, 0xe5, 0xc8, 0x01, 0x11, 0x33, - 0x55, 0x67, 0x62, 0xf9, 0x52, 0x14, 0x2e, 0xcf, 0x7f, 0xa6, 0x20, 0x08, - 0x2c, 0x9b, 0x1a, 0x77, 0x4d, 0xfa, 0x28, 0xea, 0x04, 0xc0, 0x28, 0x0b, - 0x6a, 0x9c, 0x24, 0x47, 0x84, 0xf6, 0x04, 0x72, 0x42, 0x5a, 0x79, 0x2a, - 0x42, 0xf6, 0x2b, 0x7f, 0x0d, 0x94, 0x1e, 0x92, 0xd6, 0x01, 0x88, 0x98, - 0x5c, 0xaf, 0xaa, 0x87, 0x09, 0x49, 0xe0, 0xa0, 0x2d, 0xc8, 0xa6, 0x91, - 0xd1, 0xf6, 0x78, 0xed, 0xaf, 0x17, 0xdf, 0xa6, 0xd4, 0xe6, 0x8c, 0x7d, - 0x84, 0x3b, 0xc3, 0x3d, 0x12, 0x82, 0x4b, 0xfa, 0xd1, 0x01, 0xb1, 0x96, - 0x45, 0x97, 0x2b, 0x37, 0x30, 0xc5, 0x0a, 0x3e, 0xcb, 0x46, 0xc2, 0xfc, - 0x55, 0x04, 0x6d, 0xb1, 0xfd, 0x58, 0x87, 0x75, 0x52, 0x1e, 0xb5, 0x9f, - 0xba, 0x7b, 0xa6, 0x04, 0xfe, 0x9c, 0xd6, 0x60, 0xfd, 0xa4, 0x48, 0x2a, - 0x68, 0x9f, 0xab, 0xb3, 0x42, 0x56, 0x50, 0x98, 0xdb, 0xd9, 0x51, 0xb7, - 0xfe, 0xbb, 0x7b, 0x0c, 0x1f, 0x48, 0x0b, 0x12, 0xba, 0xa5, 0xce, 0x62, - 0xd8, 0xeb, 0xee, 0xf7, 0x11, 0x2e, 0x5c, 0x1f, 0xb5, 0x7b, 0x9c, 0x7a, - 0xe0, 0x0f, 0x22, 0x9c, 0xb0, 0x1e, 0xc5, 0x4c, 0x59, 0x64, 0x94, 0x51, - 0xac, 0x05, 0x17, 0x8c, 0x61, 0x17, 0xdf, 0x15, 0x72, 0xfa, 0x7e, 0xbf, - 0x86, 0x9a, 0xab, 0x99, 0x7a, 0x55, 0x11, 0xa9, 0x8c, 0x3d, 0x17, 0x83, - 0xa6, 0x10, 0x3d, 0x21, 0x1a, 0xea, 0x71, 0xc5, 0xdd, 0xf1, 0x43, 0x59, - 0x1e, 0x56, 0x48, 0x5f, 0x39, 0xd4, 0x97, 0x28, 0x02, 0x99, 0x3f, 0x90, - 0x8a, 0x9f, 0x8b, 0x49, 0x1b, 0x1e, 0x6b, 0x3f, 0x0a, 0xb5, 0x2e, 0xa6, - 0x72, 0x48, 0x2c, 0xaa, 0x81, 0x52, 0x09, 0xb4, 0xd6, 0x7f, 0xf4, 0xef, - 0x2d, 0x90, 0xa0, 0xa5, 0xa3, 0x00, 0x53, 0x31, 0x5a, 0xf5, 0x62, 0xc4, - 0xef, 0x06, 0xe7, 0x6e, 0x34, 0x72, 0x5d, 0xb8, 0xf0, 0xb2, 0x93, 0x01, - 0x69, 0x39, 0x75, 0x34, 0x39, 0x5c, 0xa0, 0xce, 0xad, 0x3a, 0x43, 0xde, - 0xff, 0x82, 0xe5, 0x80, 0xf3, 0x69, 0xa6, 0x31, 0x49, 0x3a, 0xfb, 0x96, - 0x60, 0x34, 0x26, 0xa9, 0x2c, 0xc3, 0x9d, 0x36, 0xe9, 0x17, 0xfe, 0xfc, - 0x03, 0x92, 0x15, 0x3b, 0x4f, 0x60, 0x0f, 0x22, 0x3b, 0x2d, 0x1f, 0x16, - 0x73, 0x11, 0x00, 0x91, 0x35, 0x7e, 0x49, 0xa9, 0x28, 0xc2, 0xe2, 0xe1, - 0xe3, 0xf1, 0x7d, 0x68, 0xfd, 0xaf, 0x30, 0xb2, 0x1d, 0xa5, 0x56, 0x3e, - 0xeb, 0xbd, 0x65, 0xf5, 0x81, 0xee, 0xa8, 0xcd, 0xe7, 0xd3, 0x25, 0x59, - 0x0b, 0xaf, 0xd1, 0xaa, 0x59, 0xf6, 0x89, 0x46, 0x6e, 0xc5, 0x3c, 0xa8, - 0x24, 0xb5, 0x4a, 0xc2, 0x08, 0xa9, 0x5c, 0x63, 0xae, 0xe8, 0xb5, 0xc4, - 0x1b, 0xac, 0x98, 0x51, 0x14, 0x4d, 0x81, 0xcf, 0xe8, 0x9c, 0x75, 0xfc, - 0xcb, 0xa3, 0x7c, 0x2a, 0x58, 0x00, 0xd5, 0x77, 0x11, 0xb9, 0xb7, 0x57, - 0xfc, 0x9b, 0x0b, 0x5d, 0x06, 0x38, 0x00, 0xe1, 0xfa, 0x5d, 0xf7, 0x02, - 0xde, 0x5e, 0xcb, 0x8e, 0x6f, 0x52, 0x12, 0x4f, 0x51, 0x0d, 0xe4, 0xde, - 0x7e, 0x09, 0xd6, 0x70, 0x06, 0xef, 0xfc, 0xd9, 0x2b, 0x2d, 0xa3, 0x9d, - 0x91, 0xaf, 0xee, 0x75, 0xda, 0x36, 0x42, 0x24, 0xde, 0x9b, 0x39, 0x5f, - 0x47, 0xb8, 0x29, 0xc4, 0x9c, 0x85, 0xe3, 0xf6, 0x64, 0x3f, 0xa7, 0xa2, - 0xf6, 0x19, 0x4c, 0xa6, 0xdb, 0x7a, 0x01, 0xdf, 0xd2, 0x30, 0x8a, 0x67, - 0x99, 0xa8, 0x50, 0xdb, 0xea, 0xcc, 0xdc, 0x36, 0x7f, 0x78, 0xf1, 0x6b, - 0xc5, 0xde, 0x06, 0x9b, 0xdd, 0x89, 0xcd, 0x65, 0x25, 0x5a, 0xe1, 0xaa, - 0xa9, 0x8e, 0xd3, 0x09, 0xa6, 0xc4, 0x2e, 0x4c, 0x6b, 0x25, 0x4c, 0xb9, - 0x62, 0x82, 0xad, 0xe0, 0x0a, 0xaf, 0x34, 0x15, 0xc6, 0x40, 0x2e, 0x89, - 0xad, 0xa0, 0xa2, 0x42, 0xf7, 0xb8, 0x6c, 0x2b, 0xbf, 0x04, 0x1a, 0x9a, - 0x77, 0x3d, 0x64, 0xb7, 0xcc, 0x98, 0xc1, 0x13, 0x06, 0x63, 0xdb, 0xc9, - 0xba, 0xc0, 0x48, 0x79, 0x71, 0x50, 0x7f, 0x3c, 0x99, 0x55, 0x88, 0xfa, - 0x28, 0x28, 0x5b, 0x6f, 0x45, 0x76, 0x1a, 0x82, 0x32, 0x7e, 0x8c, 0x7c, - 0xd0, 0xf9, 0xd9, 0x64, 0x43, 0xc2, 0x39, 0xe8, 0x54, 0xc4, 0x09, 0x93, - 0xf2, 0x96, 0xba, 0xe4, 0x9a, 0xa6, 0x31, 0x52, 0xb5, 0x52, 0x74, 0x86, - 0xa7, 0x75, 0xd5, 0xaf, 0xad, 0xea, 0x06, 0xe8, 0xca, 0x1e, 0xec, 0x25, - 0xc2, 0x97, 0x30, 0x55, 0x6a, 0xa7, 0x59, 0xdb, 0x18, 0x44, 0xa3, 0xa8, - 0x02, 0x7e, 0x1d, 0x2b, 0x0d, 0x5f, 0x73, 0x6d, 0xba, 0xee, 0x77, 0x3f, - 0x5b, 0x6d, 0x89, 0x10, 0x27, 0x0f, 0xaa, 0x00, 0xd6, 0xc3, 0x65, 0xd9, - 0x63, 0x8a, 0x4c, 0xc2, 0x42, 0xa3, 0x42, 0xc1, 0x95, 0x90, 0x8f, 0x78, - 0xa5, 0xcc, 0x30, 0x2c, 0x83, 0x23, 0x3e, 0xda, 0xeb, 0x9d, 0x2d, 0xe1, - 0xf0, 0xe4, 0x1d, 0x1e, 0x79, 0x58, 0x40, 0x46, 0x98, 0x77, 0x98, 0xe8, - 0x51, 0x45, 0xe7, 0xf9, 0x7b, 0xee, 0x24, 0x76, 0x8b, 0x83, 0x96, 0xb0, - 0x9f, 0xa0, 0x80, 0x23, 0x63, 0x6d, 0xb6, 0x0d, 0xa1, 0x90, 0xbb, 0x55, - 0xd3, 0x62, 0xb6, 0x2e, 0xf3, 0xd7, 0x5d, 0x42, 0xeb, 0x46, 0x05, 0x19, - 0xb1, 0xe4, 0x95, 0x96, 0x29, 0x54, 0x64, 0x68, 0x95, 0x7f, 0x1f, 0x91, - 0x7f, 0xcb, 0xb0, 0x01, 0xd9, 0x2a, 0x10, 0x66, 0x80, 0xa7, 0x0a, 0x48, - 0x7e, 0xcf, 0xc8, 0xac, 0x1e, 0x65, 0x08, 0x81, 0xa3, 0xf6, 0x00, 0xcf, - 0x1f, 0xcd, 0x87, 0x90, 0x6b, 0x2e, 0xd5, 0xe3, 0x68, 0x90, 0x29, 0x6e, - 0xbe, 0xe8, 0x7f, 0xc1, 0xb9, 0x9a, 0x73, 0x4d, 0xee, 0xd1, 0x90, 0xf8, - 0x07, 0x97, 0xc4, 0x6f, 0x9c, 0xb6, 0x86, 0xa7, 0x62, 0x73, 0x9b, 0x34, - 0xfc, 0x2e, 0x40, 0x9d, 0x2c, 0xb1, 0x57, 0xd0, 0xd6, 0x75, 0x30, 0x46, - 0x68, 0xa2, 0x31, 0x1f, 0x5d, 0x09, 0x7d, 0xe1, 0xd0, 0x05, 0x0a, 0xcd, - 0xbf, 0xf2, 0x15, 0xdb, 0x7e, 0x8f, 0x26, 0xfb, 0x67, 0x2b, 0xac, 0x12, - 0x78, 0x56, 0x9c, 0x1c, 0x92, 0x71, 0xb7, 0x64, 0x3e, 0x11, 0x46, 0x9c, - 0x26, 0xbe, 0x9b, 0x2d, 0x84, 0x40, 0xa9, 0xa3, 0xa9, 0x8e, 0x50, 0x5d, - 0x36, 0x36, 0x7b, 0xb1, 0xda, 0xd9, 0x35, 0xb9, 0xa9, 0xac, 0x4b, 0xbe, - 0xa2, 0xdc, 0x21, 0xfb, 0x4f, 0x6c, 0x05, 0xce, 0xdd, 0xe6, 0x97, 0xd6, - 0x9b, 0x16, 0xe3, 0xaa, 0xd2, 0x57, 0x64, 0x82, 0x63, 0x27, 0xf8, 0x72, - 0x10, 0x2a, 0x1f, 0x69, 0xeb, 0x1e, 0x94, 0x3a, 0xbc, 0x46, 0x01, 0x74, - 0xd4, 0xf6, 0xf0, 0x81, 0x3e, 0x8a, 0x26, 0x92, 0xbf, 0x96, 0x41, 0x2b, - 0xfa, 0xc6, 0x3d, 0x98, 0xb3, 0x41, 0x8b, 0x09, 0x2a, 0x9c, 0x49, 0x9c, - 0x56, 0x87, 0x88, 0xa9, 0xd7, 0x93, 0x26, 0x7d, 0x99, 0x99, 0x0f, 0xed, - 0xbe, 0xc9, 0xf6, 0xd7, 0x0e, 0x23, 0xab, 0x3f, 0x8d, 0xca, 0xb6, 0x0a, - 0x9d, 0xd3, 0x3d, 0x06, 0xb4, 0x76, 0x94, 0xd7, 0xbb, 0x4f, 0xcf, 0xb2, - 0xf4, 0xb8, 0x75, 0x43, 0x53, 0x99, 0x17, 0x5a, 0x66, 0xc8, 0xfe, 0xc9, - 0x0d, 0x36, 0xcd, 0x89, 0xb9, 0xc2, 0x85, 0x90, 0xa3, 0xab, 0x90, 0x47, - 0x43, 0x5b, 0x99, 0x7f, 0xe2, 0x9d, 0x2a, 0x4a, 0xa0, 0x30, 0xa8, 0xeb, - 0xa2, 0x2e, 0x59, 0x8c, 0x24, 0xed, 0xc4, 0xac, 0x15, 0xef, 0xeb, 0x1e, - 0xba, 0xb3, 0x9f, 0xfd, 0xe0, 0x4b, 0x36, 0x86, 0x37, 0x1e, 0xa4, 0x78, - 0x03, 0x36, 0x32, 0xfd, 0x5b, 0x19, 0xa4, 0x96, 0x40, 0x65, 0xec, 0x4e, - 0x72, 0x5d, 0x17, 0xe0, 0xc4, 0xc3, 0x26, 0x5e, 0x6e, 0x99, 0x30, 0x15, - 0x14, 0xc5, 0x74, 0x4a, 0x9f, 0x63, 0x39, 0x43, 0x26, 0x43, 0x91, 0x3c, - 0x21, 0x93, 0xbe, 0x2d, 0x5d, 0xa5, 0xaf, 0x6a, 0x29, 0xf0, 0x51, 0xaf, - 0xb7, 0x35, 0x76, 0x4b, 0x37, 0x4a, 0x4e, 0x7d, 0xae, 0xdc, 0xc5, 0x6c, - 0x8a, 0x8f, 0x1b, 0x00, 0x90, 0xf7, 0x6e, 0x4e, 0x81, 0x51, 0xe6, 0xd3, - 0xf9, 0xff, 0xbc, 0xa6, 0x6f, 0x31, 0x42, 0xff, 0xcb, 0x5f, 0xe4, 0x6b, - 0x1d, 0x72, 0x1c, 0xe6, 0x99, 0xe7, 0x7d, 0xc1, 0x13, 0xc1, 0x99, 0x4b, - 0x6f, 0xaa, 0x24, 0x75, 0xbc, 0x13, 0xe3, 0x7f, 0xb3, 0x40, 0xcd, 0x35, - 0x60, 0x67, 0x14, 0xbb, 0x4a, 0x24, 0xac, 0xf8, 0x62, 0xfd, 0x18, 0xea, - 0x88, 0xc0, 0xb3, 0xc6, 0x62, 0xe5, 0x35, 0xb6, 0x81, 0x72, 0xee, 0xc4, - 0x81, 0x8b, 0x20, 0x30, 0x99, 0xee, 0xda, 0x86, 0xa0, 0x94, 0x48, 0xff, - 0x8e, 0x35, 0x9d, 0xff, 0xd6, 0x00, 0xaa, 0x43, 0xae, 0x2f, 0x35, 0x03, - 0xa8, 0xd8, 0x52, 0x68, 0x2d, 0x5e, 0xd5, 0xcd, 0x80, 0x10, 0x17, 0x66, - 0x47, 0x6f, 0x21, 0x99, 0x1e, 0x51, 0xfc, 0x77, 0x70, 0x14, 0xd5, 0xb6, - 0x2a, 0x2f, 0x71, 0x9b, 0xad, 0x83, 0x81, 0x11, 0xf4, 0xb6, 0x56, 0x10, - 0x0d, 0xf7, 0x30, 0x64, 0xda, 0xc6, 0x3c, 0xa8, 0xb9, 0xd5, 0x7c, 0x6c, - 0x6a, 0x02, 0x5d, 0x5d, 0xb5, 0x7a, 0x7c, 0x0e, 0x95, 0x77, 0x6f, 0x03, - 0xc5, 0xac, 0x47, 0x2b, 0xc7, 0x31, 0x97, 0x20, 0x28, 0x3d, 0xf9, 0x73, - 0xff, 0x04, 0x03, 0x19, 0xbf, 0xd4, 0xe2, 0x23, 0x9a, 0xab, 0xd5, 0xf8, - 0xb5, 0x90, 0x4e, 0x65, 0x84, 0xae, 0x68, 0x34, 0x68, 0xca, 0x69, 0xc1, - 0x53, 0x2e, 0xee, 0x6b, 0xb4, 0x3e, 0x27, 0x11, 0xca, 0x98, 0x5f, 0x32, - 0xe2, 0xeb, 0x22, 0xe4, 0x79, 0xd8, 0xa4, 0xa3, 0x16, 0xfc, 0xce, 0x0b, - 0x05, 0x46, 0x12, 0x57, 0x1f, 0xbc, 0xac, 0x91, 0x4f, 0xc4, 0x34, 0xa8, - 0xe1, 0x95, 0x17, 0x87, 0x3a, 0x5c, 0x47, 0x55, 0x60, 0xce, 0x93, 0xcd, - 0x5c, 0x56, 0x71, 0xf1, 0x18, 0x28, 0x52, 0x97, 0x4c, 0xe0, 0xc9, 0xe4, - 0x1f, 0x79, 0xec, 0xf6, 0xfa, 0xf4, 0x95, 0x7e, 0x32, 0x0d, 0x28, 0x71, - 0xe0, 0x70, 0x1b, 0xeb, 0x6f, 0x91, 0xe5, 0x06, 0x67, 0xd8, 0x7e, 0x74, - 0xbf, 0xa2, 0x37, 0xb4, 0x95, 0xfc, 0x98, 0xa2, 0xe7, 0x5f, 0xc5, 0x4d, - 0xf9, 0x63, 0x9b, 0x9c, 0x08, 0xee, 0xe1, 0xe9, 0x57, 0xa9, 0x5a, 0xcf, - 0x0a, 0x69, 0xbe, 0xa9, 0xa3, 0x24, 0xc0, 0x0f, 0xd2, 0x0f, 0xed, 0xf2, - 0xfb, 0x12, 0x53, 0x00, 0x43, 0x58, 0xc0, 0xd9, 0x16, 0x75, 0x98, 0x58, - 0xc8, 0xef, 0xdc, 0x46, 0x60, 0x07, 0x1b, 0xd1, 0x8c, 0x34, 0x10, 0x40, - 0xac, 0x18, 0xd7, 0x72, 0x1f, 0x1c, 0x07, 0xef, 0xaf, 0xf2, 0xb3, 0xf2, - 0xdb, 0x79, 0xb5, 0xbb, 0x80, 0xa6, 0xdf, 0x85, 0xd0, 0xab, 0xf1, 0x70, - 0x1a, 0xe0, 0x05, 0xc7, 0x01, 0x6d, 0xba, 0xbf, 0xa0, 0x6e, 0xf0, 0x37, - 0x20, 0x7b, 0xac, 0x78, 0x55, 0x48, 0x93, 0x5b, 0xd5, 0x3d, 0xcf, 0x21, - 0x90, 0x6a, 0xaa, 0x3f, 0xda, 0xb5, 0x88, 0x37, 0x4e, 0x30, 0x73, 0xad, - 0x97, 0x2e, 0xdb, 0xe4, 0x52, 0x11, 0xa3, 0x45, 0x96, 0xf8, 0x8a, 0x9b, - 0x41, 0x20, 0x30, 0xd4, 0x53, 0xdc, 0xb5, 0x80, 0xdd, 0x66, 0x0e, 0xc8, - 0xa5, 0x66, 0x9e, 0xa6, 0x8c, 0xe8, 0xe3, 0x31, 0xa3, 0x55, 0x2a, 0x19, - 0xd4, 0xc5, 0x6f, 0x25, 0x3f, 0xea, 0xb7, 0x44, 0x68, 0xa3, 0x2a, 0xce, - 0x82, 0x27, 0x3c, 0x5d, 0x33, 0xa7, 0x8e, 0x8a, 0xe1, 0xd1, 0xef, 0x90, - 0x5d, 0x4f, 0xd3, 0x41, 0x8c, 0xe4, 0x6d, 0xe3, 0x09, 0x5f, 0x75, 0x96, - 0x1e, 0x9f, 0x74, 0xaa, 0xf1, 0xfa, 0x31, 0xd0, 0x99, 0xd6, 0x71, 0x03, - 0x93, 0xc6, 0x92, 0xec, 0xc9, 0x56, 0x13, 0xd8, 0x38, 0x11, 0x3d, 0x94, - 0x25, 0x30, 0x7c, 0xfd, 0x45, 0x33, 0x39, 0x27, 0x27, 0x56, 0x49, 0xa5, - 0x24, 0xb0, 0x9b, 0xef, 0x7c, 0xf5, 0x8b, 0xc0, 0xb9, 0x08, 0x8a, 0xd2, - 0xa7, 0x79, 0xb9, 0x00, 0xb6, 0x2f, 0x6c, 0x1a, 0xb0, 0x3f, 0x90, 0xec, - 0x2e, 0x89, 0xf4, 0xf7, 0x56, 0x29, 0xa5, 0x38, 0xc0, 0xe1, 0x30, 0xc5, - 0xc0, 0x75, 0x25, 0x46, 0x29, 0xaf, 0x49, 0x86, 0x98, 0x5d, 0x0c, 0x5e, - 0x11, 0xf8, 0xff, 0x0c, 0x4e, 0x1d, 0xea, 0x9e, 0xa3, 0x0b, 0x44, 0x8b, - 0x21, 0x45, 0x73, 0x95, 0xa8, 0x19, 0xd4, 0xf8, 0x74, 0xa5, 0xd3, 0xcb, - 0x4a, 0x1f, 0xc2, 0xf0, 0x53, 0xfa, 0x92, 0xd6, 0xbd, 0x2e, 0xa8, 0x64, - 0xb0, 0xa2, 0x2a, 0x5d, 0x6c, 0x25, 0x91, 0xdf, 0x1c, 0xc8, 0xd3, 0x10, - 0x39, 0x07, 0x2e, 0x2c, 0x08, 0x77, 0x49, 0xcb, 0x61, 0x1d, 0xb6, 0xc6, - 0xf8, 0xd9, 0x02, 0x39, 0xbc, 0x37, 0x7a, 0x77, 0x71, 0x15, 0x33, 0x10, - 0x12, 0x6c, 0x22, 0xfb, 0xd2, 0x5c, 0xb8, 0x26, 0xc9, 0x77, 0xa8, 0x69, - 0x97, 0x4b, 0x16, 0x07, 0x4d, 0xb2, 0x81, 0x74, 0x88, 0x2e, 0x78, 0x33, - 0xa6, 0xd6, 0x49, 0xb7, 0xd8, 0x69, 0xa2, 0xc3, 0x33, 0x77, 0x1f, 0xdd, - 0x20, 0xab, 0x45, 0xf7, 0xe1, 0x40, 0xe0, 0xff, 0x47, 0xc5, 0xd9, 0x22, - 0x99, 0x54, 0x32, 0x41, 0xd5, 0x89, 0x98, 0xfd, 0x8b, 0x13, 0x96, 0xb3, - 0xc5, 0x30, 0xce, 0x82, 0xd9, 0x99, 0x2c, 0xaf, 0xba, 0x3f, 0x49, 0x1c, - 0x56, 0x2e, 0x98, 0xa2, 0x18, 0xf9, 0xc7, 0x54, 0xec, 0x61, 0xb3, 0x79, - 0x62, 0x32, 0xdb, 0xab, 0xb6, 0x71, 0x3d, 0x19, 0x04, 0x58, 0x86, 0x0b, - 0x68, 0x5f, 0x00, 0x43, 0xab, 0xf4, 0x6c, 0xb5, 0x6c, 0x2d, 0x07, 0xe5, - 0x6e, 0x41, 0xc9, 0xaf, 0x9c, 0xcf, 0xe8, 0xad, 0x0b, 0xcb, 0x45, 0x56, - 0x5a, 0xcc, 0x27, 0x8c, 0x5d, 0x42, 0xe2, 0x41, 0xe7, 0x41, 0x18, 0x33, - 0x25, 0x1e, 0xd2, 0x7a, 0xca, 0x5e, 0x91, 0x14, 0xf3, 0xd3, 0xa9, 0xc8, - 0xed, 0x13, 0x0f, 0x4b, 0xc3, 0xed, 0x11, 0x1a, 0xd7, 0x7b, 0xdb, 0x12, - 0xac, 0x37, 0x1e, 0x61, 0xbf, 0x2f, 0xd1, 0x60, 0xff, 0x8e, 0x78, 0xbd, - 0xf1, 0x24, 0xef, 0x7b, 0xe3, 0x3c, 0xfb, 0xed, 0xfc, 0x9e, 0xb8, 0x28, - 0x55, 0xd4, 0x14, 0x36, 0x11, 0x1a, 0x41, 0x13, 0x25, 0x17, 0x11, 0xbe, - 0xb8, 0xe3, 0xbf, 0x9f, 0x07, 0xa5, 0x9f, 0x9f, 0x1a, 0xb4, 0x18, 0x57, - 0x34, 0x0c, 0x29, 0x0e, 0x1f, 0x6b, 0x66, 0x0e, 0x16, 0x05, 0x04, 0xf4, - 0x77, 0x27, 0x8c, 0x5e, 0x94, 0x22, 0x90, 0x50, 0xa7, 0xd6, 0x26, 0x71, - 0x5f, 0x80, 0xd5, 0x97, 0xf2, 0xc2, 0x47, 0x7b, 0x05, 0x82, 0x1d, 0x14, - 0x35, 0xd5, 0x3e, 0xfa, 0x90, 0xc4, 0x1b, 0x58, 0x7c, 0x17, 0xa6, 0x79, - 0x6e, 0xd0, 0xb3, 0x02, 0x6d, 0x22, 0xdc, 0xde, 0x7a, 0x90, 0xdf, 0x29, - 0x33, 0x79, 0x8c, 0xa3, 0xac, 0xba, 0x99, 0x47, 0xb1, 0x21, 0x83, 0x7a, - 0x4a, 0x26, 0x2d, 0x78, 0x40, 0xb2, 0xd0, 0x9f, 0x9f, 0x90, 0x0e, 0x78, - 0x66, 0x0c, 0xe4, 0xcf, 0x8b, 0x50, 0x0c, 0x70, 0xe8, 0x02, 0xfb, 0x95, - 0x23, 0x9a, 0xb3, 0xc5, 0xeb, 0xc4, 0x89, 0xf4, 0x5e, 0xd7, 0x8a, 0x95, - 0x2f, 0x4b, 0x1b, 0x34, 0xda, 0x66, 0x4f, 0xcd, 0xdf, 0x54, 0x4d, 0xc6, - 0x07, 0x81, 0xea, 0xb9, 0xb5, 0x48, 0x33, 0xb9, 0xba, 0x3f, 0x87, 0xc7, - 0x7e, 0x20, 0x5c, 0x85, 0x19, 0xdd, 0x48, 0x70, 0xca, 0xc3, 0xe2, 0x46, - 0x94, 0xfd, 0x9f, 0xf9, 0xfa, 0x53, 0xe3, 0x7c, 0x0e, 0xf3, 0xec, 0x06, - 0x08, 0xa4, 0x7f, 0x28, 0xc1, 0xa5, 0xe8, 0x62, 0x55, 0x58, 0xfd, 0x7c, - 0x7c, 0x7d, 0x7e, 0x70, 0xd7, 0xf3, 0xc8, 0x24, 0xb6, 0x83, 0xc9, 0x65, - 0x51, 0xaf, 0xb6, 0x0f, 0x6b, 0x7f, 0x7f, 0x3d, 0xa0, 0xe6, 0x74, 0x85, - 0x85, 0x89, 0xd7, 0xd9, 0x5c, 0xd6, 0x96, 0x97, 0x48, 0xfb, 0x84, 0xa2, - 0xd6, 0x16, 0xe2, 0x1c, 0xd7, 0x73, 0x03, 0xa7, 0x96, 0xd3, 0x6a, 0xe8, - 0x46, 0x82, 0x46, 0xa0, 0x34, 0x8c, 0xd7, 0x4d, 0xea, 0x57, 0x44, 0xd7, - 0x16, 0x07, 0x60, 0x0f, 0x82, 0xba, 0xac, 0x1c, 0x8f, 0xdb, 0x60, 0x13, - 0xb0, 0x14, 0xb1, 0x26, 0xf8, 0x22, 0x94, 0xda, 0xc1, 0xae, 0xcb, 0xac, - 0x4d, 0xcb, 0x75, 0xa6, 0x87, 0x4f, 0xc8, 0x81, 0x59, 0xbb, 0x17, 0x95, - 0xc8, 0x9b, 0x14, 0xf1, 0x02, 0x49, 0x6e, 0xb5, 0x5e, 0xe1, 0x2c, 0x19, - 0xde, 0xe4, 0x13, 0x04, 0xba, 0xef, 0xab, 0x44, 0x32, 0x03, 0x9a, 0xf8, - 0x92, 0xd0, 0x8a, 0xe5, 0x02, 0xc3, 0x5d, 0xed, 0x06, 0xee, 0x58, 0x5b, - 0xd0, 0xb9, 0xef, 0x05, 0x8f, 0x31, 0x95, 0x94, 0x40, 0x7e, 0x0d, 0x85, - 0xdb, 0xe7, 0x6e, 0xac, 0x54, 0x14, 0x4c, 0x2a, 0xbe, 0x30, 0xc6, 0x16, - 0x27, 0x15, 0x76, 0xba, 0x53, 0x26, 0x91, 0xff, 0xee, 0x26, 0xf2, 0xbc, - 0x3a, 0x45, 0x67, 0x2a, 0x6b, 0x46, 0xad, 0x6b, 0x77, 0xe6, 0x62, 0x44, - 0xcf, 0xe3, 0x23, 0x39, 0x8f, 0x41, 0x17, 0xf6, 0x28, 0x36, 0x2b, 0x80, - 0x05, 0x6e, 0x55, 0x19, 0xd7, 0xd1, 0x6f, 0x16, 0x24, 0x3c, 0xbf, 0x61, - 0x09, 0x79, 0xf2, 0x3f, 0xd8, 0x04, 0xf5, 0x9c, 0x66, 0xef, 0x8f, 0xaf, - 0x14, 0xf9, 0x49, 0xa2, 0x04, 0x97, 0x1a, 0x5a, 0x0a, 0x86, 0xfa, 0x35, - 0xaf, 0x66, 0x24, 0xc6, 0xcc, 0xcc, 0xbb, 0xc9, 0xe4, 0xb6, 0x6f, 0x66, - 0x7b, 0x5d, 0x89, 0xb0, 0x6f, 0xf6, 0xe2, 0x02, 0x52, 0x02, 0x9b, 0x8c, - 0xae, 0x98, 0xba, 0x70, 0x07, 0xae, 0xfd, 0xaa, 0x8d, 0x7f, 0x84, 0xd8, - 0x04, 0x94, 0x5b, 0x71, 0x57, 0xae, 0x67, 0xaf, 0x13, 0xbe, 0xf0, 0xe7, - 0x9b, 0xa8, 0x75, 0x5f, 0xdb, 0x4a, 0xd9, 0xef, 0x90, 0x76, 0xc3, 0xf4, - 0x3c, 0x16, 0x24, 0x66, 0x7c, 0xcf, 0x34, 0x4e, 0xd3, 0x78, 0xfd, 0xf4, - 0xea, 0xfc, 0x8c, 0x54, 0x12, 0xfe, 0x05, 0xb5, 0xdb, 0xc4, 0x09, 0xd4, - 0x45, 0xc2, 0x7c, 0x0e, 0x06, 0xdd, 0x3c, 0x1f, 0xf3, 0xb6, 0x05, 0xc5, - 0x51, 0xd4, 0xb8, 0xce, 0x37, 0xe6, 0x3f, 0xcc, 0xb4, 0xa9, 0x07, 0x0a, - 0xc7, 0xf6, 0x53, 0x6e, 0xaf, 0x69, 0x38, 0x0f, 0x5c, 0x3b, 0xd0, 0xd5, - 0xcb, 0xa7, 0x48, 0xea, 0x43, 0x04, 0xe8, 0xd9, 0x78, 0xc0, 0x9d, 0xca, - 0x70, 0xaa, 0x72, 0x13, 0x78, 0xbb, 0x90, 0x04, 0x1f, 0xdd, 0xf2, 0xf7, - 0x6b, 0xf5, 0x61, 0x9a, 0xe3, 0x98, 0x7e, 0x0a, 0x92, 0x21, 0x18, 0xef, - 0xd9, 0xdf, 0x8b, 0x5c, 0x92, 0x16, 0x59, 0xbb, 0x28, 0xf9, 0x5d, 0xe2, - 0x08, 0x5b, 0xb1, 0xf8, 0x5c, 0xb6, 0xf7, 0x78, 0x68, 0xa4, 0x28, 0xe2, - 0xef, 0x71, 0xc1, 0xba, 0x29, 0x05, 0x09, 0xef, 0x6f, 0xa0, 0x3f, 0xa4, - 0xe5, 0x7b, 0x9b, 0x2a, 0x39, 0xbc, 0x0b, 0x56, 0x89, 0xc2, 0xd3, 0x53, - 0x2f, 0x4f, 0x4d, 0x92, 0xc8, 0x86, 0xfb, 0x8b, 0xaa, 0xc9, 0x68, 0x54, - 0x34, 0xc1, 0xc4, 0x77, 0xaf, 0xd8, 0xf4, 0xf1, 0xa9, 0x3c, 0x87, 0xa2, - 0xf0, 0x7d, 0xc5, 0x8d, 0x3e, 0xd6, 0x68, 0xce, 0xf7, 0x75, 0xd1, 0x99, - 0x1f, 0xd3, 0xec, 0xf2, 0xc8, 0xac, 0xe3, 0xbd, 0xf7, 0x6f, 0xfb, 0x00, - 0xf8, 0x01, 0xb6, 0x62, 0xc5, 0x47, 0xf0, 0xe9, 0x43, 0x55, 0x72, 0x15, - 0x19, 0xba, 0xd3, 0x0c, 0x23, 0x97, 0xee, 0x87, 0xa3, 0xab, 0xe9, 0x4f, - 0x46, 0xd7, 0x5c, 0xd0, 0xbb, 0x46, 0xd2, 0xfa, 0xed, 0xfe, 0x0a, 0xaa, - 0x38, 0x9d, 0x26, 0xb8, 0x29, 0x1c, 0xbf, 0x68, 0x49, 0xc9, 0xf9, 0x03, - 0x66, 0x7b, 0xac, 0xc4, 0xc5, 0xf3, 0xbb, 0x25, 0x58, 0x15, 0x01, 0xab, - 0x9c, 0x1b, 0x42, 0xe2, 0x55, 0x38, 0x45, 0xfb, 0x8f, 0xbf, 0x3a, 0xfd, - 0x36, 0xe4, 0x3a, 0x60, 0x1d, 0xc0, 0xa4, 0xdb, 0x58, 0xa6, 0x9f, 0xb3, - 0x83, 0x6e, 0x6c, 0xd3, 0x30, 0xea, 0x04, 0xb6, 0x23, 0x60, 0x8e, 0xd1, - 0x39, 0xee, 0xdf, 0xff, 0xba, 0x3b, 0x8b, 0x22, 0x15, 0x12, 0xfb, 0xe5, - 0xa4, 0x85, 0x49, 0x0d, 0xb3, 0x7d, 0x6b, 0x10, 0x9c, 0x6f, 0x52, 0xd3, - 0x9a, 0x85, 0x8f, 0xda, 0x8f, 0xaa, 0x12, 0x13, 0xae, 0x57, 0x3f, 0xf2, - 0xcd, 0xda, 0x64, 0x92, 0x6d, 0xe8, 0x55, 0xb9, 0x95, 0xb4, 0x9c, 0xf8, - 0xb2, 0xa8, 0x5a, 0x10, 0xfa, 0xfa, 0x05, 0x8e, 0x68, 0x62, 0x5c, 0x3d, - 0xea, 0x2e, 0x88, 0xdf, 0xb1, 0x2c, 0x7e, 0xcc, 0xe8, 0x13, 0x30, 0xd9, - 0x70, 0xfe, 0xb2, 0xbf, 0x60, 0x96, 0x03, 0xf5, 0xf3, 0xcf, 0x7f, 0x8b, - 0xa9, 0x9f, 0xe0, 0x67, 0xd3, 0x1e, 0xc7, 0x4d, 0xa9, 0xb6, 0xc3, 0x13, - 0x63, 0x02, 0x86, 0xcd, 0xf8, 0x2f, 0x14, 0x6e, 0x75, 0xcd, 0xec, 0x11, - 0x32, 0x28, 0x5b, 0xb6, 0x16, 0xa8, 0x12, 0x75, 0x8a, 0x3e, 0xc4, 0x3d, - 0x7f, 0x09, 0x7a, 0xaf, 0xed, 0x46, 0x83, 0xe0, 0x37, 0xe0, 0x37, 0x34, - 0x22, 0xa1, 0xe9, 0x98, 0xcb, 0x9f, 0xb9, 0x9e, 0x71, 0xdc, 0xc8, 0x65, - 0x04, 0xb1, 0xed, 0xb4, 0x76, 0xd2, 0xd2, 0x12, 0xdb, 0xc9, 0x65, 0x9d, - 0x0a, 0x89, 0x43, 0x4e, 0x5a, 0xee, 0x36, 0x15, 0xb0, 0x4a, 0x72, 0x63, - 0x0a, 0x46, 0x1e, 0xfc, 0x1e, 0x83, 0xfc, 0xe7, 0xfe, 0x21, 0x3d, 0xfb, - 0x25, 0x8c, 0x31, 0x07, 0x49, 0x99, 0x29, 0xfa, 0xac, 0x57, 0x21, 0xdc, - 0x5d, 0xc7, 0x47, 0x0a, 0x67, 0x5e, 0xfe, 0x6d, 0x73, 0x67, 0x2a, 0x19, - 0x66, 0xbb, 0x9d, 0x74, 0x99, 0x7e, 0xfa, 0x53, 0x53, 0xc3, 0x75, 0x04, - 0xb1, 0xe0, 0x08, 0x5f, 0xe6, 0x48, 0xe4, 0x64, 0x26, 0x64, 0x83, 0x1d, - 0xf3, 0x5a, 0x2e, 0x1d, 0x14, 0x18, 0xea, 0x03, 0xa7, 0xa1, 0xf1, 0x63, - 0x29, 0x2b, 0x8c, 0xcb, 0xf2, 0x43, 0x47, 0x5e, 0x00, 0x97, 0x7e, 0xa2, - 0xe3, 0x32, 0x7b, 0x05, 0xa1, 0x07, 0xb5, 0x7b, 0x02, 0xea, 0x5d, 0xbf, - 0x6a, 0x87, 0x80, 0xa6, 0x13, 0x45, 0xbf, 0xd5, 0x32, 0xf3, 0x87, 0x65, - 0x0d, 0x2d, 0x7b, 0x16, 0x20, 0xde, 0xa4, 0x05, 0x18, 0xe4, 0x8c, 0x7e, - 0x57, 0x08, 0x36, 0x57, 0x46, 0xde, 0x01, 0xe9, 0x9c, 0x5c, 0xf3, 0xd5, - 0x14, 0xed, 0x04, 0x75, 0x08, 0xa6, 0x7a, 0xd0, 0x22, 0xb9, 0x80, 0x21, - 0xe4, 0xe0, 0x0c, 0xa7, 0x7e, 0x91, 0xe5, 0x22, 0x12, 0xdf, 0x07, 0x7f, - 0x67, 0xba, 0xeb, 0xb5, 0xe8, 0x26, 0x4b, 0xdc, 0x28, 0xc5, 0xca, 0xe4, - 0x92, 0xb9, 0xc0, 0x22, 0xd6, 0xbb, 0xbf, 0xe9, 0xfe, 0xf4, 0x4c, 0x8e, - 0xd7, 0x79, 0x14, 0xb1, 0xb4, 0xd1, 0xe7, 0xff, 0x63, 0xd3, 0x6b, 0x53, - 0x99, 0x45, 0x28, 0xb1, 0xe3, 0xba, 0xe5, 0x32, 0xb1, 0x64, 0x4d, 0x79, - 0x3d, 0xa1, 0xab, 0x0d, 0x03, 0x8d, 0x6e, 0x9f, 0xce, 0x0c, 0x37, 0x69, - 0x62, 0xeb, 0x40, 0xdb, 0x70, 0x2b, 0xb0, 0x93, 0x3b, 0xf6, 0x35, 0x4e, - 0x34, 0x96, 0x4f, 0x79, 0xbf, 0xb6, 0xce, 0x4a, 0x7c, 0xfa, 0x61, 0xba, - 0x67, 0x65, 0x81, 0x01, 0xf2, 0xde, 0xef, 0xfc, 0xb9, 0xa9, 0x21, 0x78, - 0xec, 0x78, 0xd7, 0x7c, 0xe4, 0x38, 0xb2, 0x32, 0x70, 0x8d, 0x04, 0x8c, - 0x80, 0x9d, 0xdd, 0x13, 0x5d, 0x32, 0x22, 0x3a, 0xf9, 0x4e, 0xe9, 0x85, - 0xeb, 0x23, 0x58, 0x23, 0x56, 0xab, 0x5d, 0x1c, 0x50, 0x7b, 0x80, 0x4a, - 0x47, 0x4a, 0x18, 0x3a, 0xd7, 0x94, 0xc6, 0x44, 0x14, 0xbd, 0x56, 0x2d, - 0x7a, 0x1e, 0xe4, 0x53, 0xb6, 0xa4, 0xd8, 0x68, 0x6c, 0x4d, 0x53, 0xf0, - 0x9a, 0xfc, 0x75, 0xcb, 0x30, 0x6a, 0x8c, 0xb2, 0xea, 0x07, 0x7c, 0x44, - 0xd4, 0xd5, 0x56, 0xa0, 0x72, 0xb9, 0x0f, 0xe6, 0xc8, 0x4f, 0x88, 0xba, - 0x1e, 0xb4, 0x1f, 0x96, 0x7a, 0x44, 0x28, 0xf6, 0xef, 0x79, 0x45, 0x39, - 0xfb, 0x17, 0xd3, 0x37, 0x37, 0x44, 0x97, 0x81, 0x7c, 0x7a, 0x7e, 0x14, - 0xde, 0x27, 0xd1, 0x57, 0x4a, 0xeb, 0xcc, 0x9a, 0x10, 0xa0, 0xe4, 0x0b, - 0x52, 0x3e, 0xee, 0xf7, 0x1d, 0x03, 0x94, 0x70, 0xb7, 0xf6, 0x2f, 0x0e, - 0x8a, 0xa2, 0x83, 0x4c, 0x6d, 0x04, 0xbe, 0xb5, 0xaf, 0x3b, 0x03, 0x34, - 0xee, 0xb2, 0xb9, 0x8e, 0x98, 0x04, 0x73, 0x34, 0x9c, 0xcf, 0x11, 0x97, - 0x5a, 0xb9, 0x75, 0x26, 0xa2, 0x44, 0xc9, 0x97, 0x43, 0xec, 0xb5, 0x07, - 0x6e, 0xdc, 0x96, 0x7c, 0x10, 0xc9, 0x90, 0x80, 0x10, 0xec, 0x6e, 0x90, - 0x56, 0x64, 0x62, 0x8c, 0xb2, 0xbe, 0x00, 0x89, 0x14, 0x04, 0xab, 0x21, - 0xc7, 0xf5, 0x85, 0x79, 0x09, 0x73, 0xe2, 0xaa, 0x6b, 0x94, 0x7b, 0x08, - 0x44, 0x25, 0x17, 0x6f, 0x41, 0xff, 0xdc, 0x80, 0xf1, 0x79, 0xd6, 0x1a, - 0x50, 0x4f, 0xa2, 0xab, 0x7e, 0x2d, 0x56, 0x97, 0x94, 0xe0, 0x49, 0x70, - 0xe9, 0x97, 0xbb, 0xc5, 0xcb, 0x1c, 0x34, 0x36, 0x5b, 0x00, 0x03, 0xab, - 0xb9, 0x29, 0x58, 0xa1, 0x23, 0x85, 0x1d, 0x52, 0x1b, 0x96, 0xec, 0x28, - 0x91, 0x3e, 0xa5, 0x3b, 0x53, 0x9c, 0x0e, 0x51, 0xa1, 0x72, 0x21, 0xd7, - 0x19, 0x06, 0xf0, 0x5c, 0x47, 0x5b, 0x19, 0x86, 0x49, 0x74, 0x9a, 0x1f, - 0xb3, 0x7d, 0x5e, 0xd4, 0xcf, 0xe4, 0xb0, 0x0a, 0xea, 0xda, 0x4c, 0xde, - 0xe7, 0xf8, 0x12, 0x07, 0x0d, 0x04, 0x7c, 0x7b, 0x40, 0x01, 0x9a, 0x2b, - 0x8e, 0x3b, 0xb0, 0x90, 0xf7, 0x20, 0x1e, 0x02, 0xff, 0x70, 0xea, 0x95, - 0xfa, 0x90, 0x8a, 0x5b, 0xa6, 0xc4, 0x14, 0x7a, 0x0a, 0xcd, 0x90, 0xd7, - 0xf0, 0xb2, 0x6b, 0x11, 0x04, 0x23, 0x54, 0x46, 0x9c, 0x09, 0xea, 0xbf, - 0x8e, 0x38, 0x09, 0xe6, 0x68, 0xa3, 0xe6, 0xb7, 0x42, 0x3d, 0x4e, 0xf1, - 0x31, 0x95, 0x48, 0xf0, 0x6b, 0xde, 0xfd, 0x0d, 0xa6, 0x97, 0xed, 0x98, - 0x6f, 0xab, 0x0e, 0x7d, 0xda, 0xe9, 0xa6, 0x32, 0x4e, 0xc5, 0xab, 0xa2, - 0xa2, 0x6d, 0xea, 0xbc, 0xe6, 0xe4, 0xf9, 0x68, 0x51, 0x5a, 0xd2, 0x2d, - 0x16, 0x68, 0xef, 0xad, 0xa5, 0xda, 0x4f, 0xa8, 0xec, 0x02, 0x80, 0x9f, - 0xbb, 0x72, 0xca, 0x77, 0x68, 0x1e, 0x5a, 0x79, 0xc6, 0x64, 0x6d, 0xd7, - 0x1c, 0x67, 0x75, 0xa5, 0x63, 0x4a, 0x39, 0x6d, 0xb6, 0xf7, 0x04, 0x7b, - 0xd0, 0xb5, 0x83, 0x16, 0x83, 0x9e, 0xe3, 0x98, 0x8c, 0xeb, 0x40, 0xab, - 0xcc, 0x50, 0x50, 0x29, 0x99, 0x6f, 0x4f, 0x3a, 0xae, 0xdd, 0x71, 0x1f, - 0x95, 0x95, 0x8a, 0x22, 0xa7, 0x12, 0x54, 0x5b, 0x7d, 0x7c, 0xe0, 0x39, - 0x03, 0x32, 0x7c, 0x91, 0x7f, 0x2f, 0xb5, 0x45, 0x62, 0x17, 0x7a, 0x26, - 0x84, 0xc4, 0x83, 0xfb, 0x8f, 0x04, 0x17, 0xc9, 0xa9, 0x10, 0xbe, 0xb6, - 0xd6, 0x36, 0x86, 0x29, 0x51, 0x57, 0x5d, 0xb1, 0xe8, 0x27, 0xe6, 0x14, - 0x37, 0x4b, 0x15, 0x30, 0x89, 0x46, 0x45, 0xcf, 0xea, 0x35, 0x69, 0x7b, - 0xcb, 0x9d, 0x76, 0xa2, 0xbc, 0x86, 0x46, 0x9a, 0xa3, 0x47, 0xf5, 0x84, - 0xaa, 0x7e, 0xb7, 0x88, 0xdc, 0x47, 0xd3, 0x11, 0xdf, 0xe5, 0x31, 0x9b, - 0x17, 0x89, 0x6f, 0x07, 0x08, 0x72, 0x53, 0x9c, 0x96, 0xb9, 0x07, 0x95, - 0x0d, 0x04, 0x59, 0x61, 0xcd, 0xa5, 0x8c, 0x03, 0xeb, 0xef, 0x51, 0x0c, - 0x7c, 0x37, 0x5c, 0xf8, 0x14, 0xb6, 0x95, 0xf3, 0x02, 0xa0, 0x73, 0x94, - 0xe5, 0xed, 0xa6, 0x1a, 0xeb, 0x9e, 0x0b, 0xcf, 0x55, 0x02, 0x0f, 0xec, - 0x53, 0x50, 0xa3, 0x0f, 0x6a, 0xad, 0x4b, 0xb8, 0xfa, 0x0e, 0x0d, 0x1e, - 0x39, 0x91, 0x7a, 0x52, 0xc9, 0xf8, 0x3e, 0x1b, 0x95, 0xd1, 0x36, 0x66, - 0x83, 0x96, 0x08, 0x51, 0x1b, 0xb0, 0x35, 0x3b, 0xe2, 0x1d, 0x3d, 0x58, - 0x86, 0x31, 0xa0, 0x34, 0x80, 0x92, 0xd8, 0xa2, 0x5d, 0x63, 0x45, 0x6a, - 0xb1, 0xb2, 0xef, 0x66, 0x92, 0xb5, 0x88, 0xa8, 0x04, 0x0b, 0x45, 0xbd, - 0x50, 0xcc, 0xc2, 0x6b, 0x2c, 0xbf, 0x8e, 0xeb, 0x8d, 0x86, 0xa4, 0xba, - 0x0b, 0x73, 0x1f, 0x5e, 0xdc, 0x0f, 0x86, 0x1d, 0x7f, 0x46, 0x7c, 0x7f, - 0x86, 0xb4, 0xd8, 0x04, 0xc6, 0xba, 0x7a, 0x69, 0xb2, 0x94, 0x00, 0x7b, - 0xc2, 0xc4, 0x6d, 0x98, 0xf5, 0xa2, 0xea, 0xf6, 0xd6, 0xce, 0x18, 0x83, - 0x24, 0xd6, 0x7f, 0x3a, 0x5c, 0xc8, 0xc0, 0xa0, 0x75, 0xf4, 0x4d, 0xc0, - 0x80, 0x5e, 0xda, 0x97, 0xfa, 0x1c, 0x88, 0x8e, 0x50, 0xd6, 0x62, 0x6e, - 0x58, 0xdd, 0x64, 0xe5, 0x85, 0x65, 0xd2, 0x14, 0xaa, 0xa7, 0xf8, 0x20, - 0x0d, 0x5a, 0xff, 0x9d, 0xe6, 0x3f, 0x69, 0xad, 0xba, 0x3d, 0x7b, 0xa1, - 0x79, 0xc1, 0xcd, 0xaa, 0x9a, 0xac, 0x3e, 0x85, 0xc2, 0x55, 0x1d, 0xdb, - 0xef, 0x38, 0x18, 0xc9, 0x2a, 0x3a, 0x93, 0x21, 0x0a, 0xb7, 0x5d, 0xe0, - 0x25, 0x3b, 0x77, 0x40, 0x0b, 0x82, 0xbb, 0xe6, 0xf5, 0xa8, 0x1a, 0x16, - 0x14, 0x91, 0xaa, 0x68, 0x02, 0xbe, 0x9b, 0x0b, 0x23, 0xe2, 0x7d, 0x9d, - 0xb9, 0xe8, 0x95, 0xba, 0x6f, 0x03, 0xba, 0x1b, 0x40, 0x78, 0x15, 0xca, - 0x42, 0x85, 0xaf, 0x92, 0x34, 0x82, 0xb3, 0x63, 0x43, 0x6d, 0xed, 0x9b, - 0x2c, 0x6b, 0xe5, 0x09, 0x45, 0x99, 0xbc, 0x3c, 0x15, 0x58, 0x91, 0xd9, - 0xbc, 0x46, 0x78, 0x1b, 0xc7, 0x06, 0x61, 0xf5, 0x77, 0x19, 0xf2, 0x8d, - 0x7b, 0x0f, 0x79, 0x61, 0x36, 0xfa, 0x9b, 0xc4, 0xb8, 0x22, 0x42, 0x1b, - 0x50, 0x09, 0xfc, 0xa5, 0xd5, 0xb6, 0xd7, 0x9b, 0x89, 0xd5, 0x3b, 0xd9, - 0x8b, 0xfa, 0xb1, 0xbb, 0xf2, 0x59, 0xa0, 0x11, 0x1e, 0xd0, 0x6b, 0x30, - 0xc0, 0x31, 0x49, 0x38, 0x22, 0xde, 0x26, 0xe1, 0xb6, 0x49, 0x9d, 0x00, - 0xca, 0x12, 0xf1, 0x23, 0x04, 0x01, 0x6e, 0xed, 0x19, 0xd5, 0x34, 0x5f, - 0xed, 0x73, 0xec, 0x6d, 0x49, 0x1a, 0x02, 0x2b, 0x99, 0x4f, 0x50, 0x10, - 0x8c, 0x37, 0xda, 0xfc, 0x18, 0x0f, 0x11, 0xd8, 0x71, 0x18, 0x52, 0x94, - 0x2a, 0xbd, 0xed, 0x56, 0x34, 0xf7, 0x3f, 0xf6, 0xbb, 0x99, 0xea, 0x6d, - 0x64, 0xe5, 0xc4, 0x0f, 0x13, 0x53, 0x49, 0x8a, 0x4d, 0x80, 0x14, 0x35, - 0x85, 0x3d, 0x59, 0x14, 0xc7, 0x4c, 0x82, 0x3d, 0x63, 0xc6, 0x5d, 0xb1, - 0xef, 0x56, 0x10, 0x02, 0xc0, 0xae, 0xdf, 0xfb, 0xb4, 0x1e, 0xf7, 0xe8, - 0x19, 0x3b, 0xfd, 0x0e, 0x01, 0x15, 0xdd, 0xe0, 0xa4, 0x58, 0x9a, 0x0c, - 0xe9, 0x6d, 0x62, 0xdb, 0xbf, 0x64, 0x2b, 0x67, 0x76, 0xae, 0x5a, 0xce, - 0x0c, 0x4b, 0x8a, 0xa1, 0xa7, 0x49, 0x27, 0xac, 0xad, 0xfe, 0x87, 0x56, - 0x33, 0x7a, 0xe7, 0x30, 0x5a, 0x6b, 0xd9, 0x7e, 0xfb, 0x28, 0x72, 0xad, - 0x70, 0x3e, 0xf3, 0xec, 0xf6, 0x49, 0x58, 0xda, 0x7b, 0xbb, 0x83, 0x3f, - 0x03, 0x8c, 0x2d, 0x09, 0x7b, 0x54, 0x70, 0x4b, 0x95, 0x55, 0x17, 0xa9, - 0x49, 0x01, 0xec, 0x14, 0x6d, 0x7d, 0xd5, 0xdd, 0xf7, 0xe0, 0x8f, 0xb2, - 0x94, 0x3f, 0x72, 0xcf, 0x04, 0xcd, 0xb1, 0x47, 0xd3, 0x58, 0x3e, 0x86, - 0xec, 0xc0, 0x7d, 0x32, 0x04, 0x5f, 0xba, 0xe0, 0x08, 0x31, 0xc6, 0xff, - 0x1a, 0xcc, 0x57, 0x05, 0x1c, 0xd7, 0x87, 0xc0, 0xf4, 0x9d, 0x02, 0xb2, - 0x22, 0x48, 0x28, 0xda, 0x1e, 0x16, 0xd2, 0x38, 0x99, 0x81, 0x72, 0x4a, - 0xa8, 0x97, 0xe9, 0xe6, 0xae, 0x33, 0x11, 0x14, 0x3c, 0xa7, 0x82, 0x30, - 0x74, 0x9a, 0x3f, 0xe6, 0xba, 0x30, 0x17, 0xd5, 0x43, 0x58, 0xa0, 0x04, - 0x7a, 0x4f, 0xb9, 0x67, 0xb6, 0x6e, 0xd6, 0x29, 0xa6, 0x1f, 0xe8, 0x17, - 0x2a, 0x49, 0x53, 0xac, 0xae, 0xd8, 0x18, 0x46, 0x5b, 0x56, 0xb6, 0x1d, - 0x99, 0x70, 0xc1, 0x8a, 0xf8, 0x4c, 0x08, 0x4c, 0x8d, 0xb4, 0x2c, 0x54, - 0x04, 0x00, 0xc5, 0x85, 0x28, 0xbf, 0x01, 0x0b, 0xa8, 0xf6, 0xe7, 0xce, - 0xcf, 0xc3, 0x49, 0xed, 0xfd, 0xa7, 0x86, 0x55, 0x4d, 0xb2, 0x26, 0x25, - 0x51, 0xa0, 0xac, 0x4a, 0x23, 0x3d, 0x1f, 0xfd, 0xc3, 0xc9, 0x4e, 0xd6, - 0xf5, 0x98, 0x98, 0x55, 0x7f, 0x39, 0xc7, 0xb5, 0xd7, 0xf5, 0xa7, 0x5f, - 0xb1, 0x28, 0x52, 0xd9, 0x35, 0x75, 0xfb, 0xc3, 0x65, 0xe0, 0xa7, 0xe0, - 0x7a, 0x6a, 0xfc, 0x81, 0xe1, 0xb9, 0x32, 0xaa, 0xe3, 0xcd, 0x05, 0xdd, - 0x4b, 0xff, 0x87, 0xb4, 0x7c, 0xef, 0x1f, 0xf6, 0xa2, 0xde, 0xc8, 0x3e, - 0x5a, 0xfa, 0x75, 0xd1, 0x65, 0x98, 0xea, 0x45, 0x00, 0xc8, 0xbd, 0x25, - 0x46, 0xa9, 0x86, 0xa6, 0x07, 0xc0, 0x5a, 0xf5, 0x16, 0x43, 0x72, 0x08, - 0xf1, 0x8a, 0x62, 0x41, 0xeb, 0x02, 0x9f, 0xbb, 0x55, 0x00, 0x32, 0xc0, - 0x70, 0x66, 0x2a, 0xb1, 0x12, 0xf5, 0xb6, 0x2f, 0x2d, 0xdb, 0x22, 0xce, - 0xe8, 0x71, 0xe6, 0x13, 0xfd, 0xd1, 0xc2, 0xbc, 0xa2, 0xbb, 0x46, 0x84, - 0x00, 0x23, 0xc7, 0xc6, 0x70, 0x62, 0x4b, 0x2e, 0x9a, 0x1c, 0x80, 0xa6, - 0x51, 0x79, 0x26, 0x1b, 0x94, 0x7f, 0x67, 0xfe, 0xfd, 0x1b, 0x3d, 0x50, - 0xf8, 0x89, 0x03, 0x04, 0x07, 0x22, 0x88, 0x00, 0x1e, 0x9f, 0xcc, 0x54, - 0x56, 0xe0, 0x6d, 0x79, 0xfe, 0xd3, 0x80, 0x67, 0x40, 0x02, 0x78, 0x1d, - 0x10, 0x17, 0x18, 0x51, 0xea, 0xb7, 0x10, 0x09, 0x87, 0xd7, 0xc6, 0x5a, - 0x7c, 0x25, 0x6a, 0xce, 0x0b, 0xe7, 0xd6, 0x03, 0x64, 0x6a, 0x49, 0x24, - 0x09, 0x2d, 0x26, 0xfd, 0xf5, 0x85, 0x16, 0x89, 0x9b, 0xb7, 0xc5, 0x92, - 0x3c, 0x03, 0xc1, 0xc2, 0x44, 0x54, 0x61, 0x69, 0xa4, 0x26, 0xbb, 0x3f, - 0xa5, 0xcb, 0xe4, 0xe1, 0x48, 0x64, 0xf7, 0x64, 0xfc, 0x1e, 0x75, 0x4f, - 0xc4, 0x50, 0x07, 0xc9, 0xfa, 0xf3, 0x25, 0xd4, 0x40, 0x9a, 0xbc, 0xf6, - 0x6b, 0x2a, 0x6d, 0xaa, 0xb5, 0x4e, 0xcd, 0x0c, 0x6c, 0xcf, 0x72, 0x40, - 0x69, 0x70, 0x33, 0x3e, 0x25, 0x23, 0xf3, 0x36, 0x44, 0xcd, 0x26, 0x3f, - 0xf8, 0xcd, 0x6d, 0x75, 0x40, 0x7d, 0xb4, 0x45, 0x79, 0x01, 0x8c, 0xb0, - 0x9e, 0xbc, 0x09, 0x82, 0x6d, 0x0e, 0xfe, 0xdc, 0x80, 0x40, 0x1f, 0x11, - 0x58, 0x53, 0xc2, 0x3b, 0x75, 0x02, 0x29, 0xd4, 0x8a, 0x49, 0xc7, 0xaf, - 0xf8, 0x79, 0x57, 0x07, 0x12, 0x73, 0xd0, 0x27, 0x76, 0x43, 0x53, 0x0f, - 0x2a, 0x0b, 0x24, 0x26, 0x47, 0xf7, 0xf9, 0x07, 0x60, 0xb1, 0x7a, 0x25, - 0x65, 0x47, 0xaf, 0x6a, 0x13, 0xd6, 0x26, 0x43, 0xa6, 0xd1, 0xf2, 0x0e, - 0x2e, 0xf3, 0x16, 0x6a, 0xd1, 0xc9, 0xbb, 0xa4, 0xe4, 0x85, 0xf4, 0xc6, - 0x9c, 0xf5, 0x4f, 0xd4, 0x56, 0x66, 0xb9, 0xf8, 0x29, 0x97, 0x7a, 0x0b, - 0x2f, 0x4b, 0xb3, 0x3f, 0xdd, 0x4c, 0x18, 0x43, 0xbc, 0xc0, 0xbe, 0xf2, - 0x95, 0xbd, 0xae, 0x03, 0x6b, 0x3b, 0xf7, 0x39, 0x5d, 0x37, 0xe0, 0x72, - 0x45, 0x36, 0xaa, 0x72, 0x42, 0x1a, 0x5d, 0x91, 0xa8, 0x90, 0x11, 0xce, - 0xe3, 0x5e, 0x4d, 0x60, 0x67, 0xb8, 0x5b, 0x0c, 0x6d, 0xf0, 0xf0, 0xc0, - 0x72, 0xe9, 0xef, 0xa1, 0x0d, 0x6f, 0x72, 0x44, 0x05, 0x89, 0xf4, 0x57, - 0x9d, 0xb2, 0x23, 0x7e, 0x20, 0x54, 0x7f, 0x48, 0x21, 0x28, 0x27, 0x84, - 0xcd, 0xa3, 0x93, 0xd7, 0xac, 0x5b, 0xde, 0xbe, 0x0f, 0xd5, 0x9d, 0xa0, - 0xf1, 0x49, 0xcc, 0xd1, 0x7f, 0x4d, 0x03, 0xbf, 0x14, 0x39, 0x65, 0x14, - 0xe3, 0x27, 0x80, 0x2a, 0x36, 0xea, 0xfc, 0x7c, 0x93, 0x11, 0x86, 0xfc, - 0x1f, 0xb9, 0x73, 0x83, 0xd5, 0x5f, 0xc0, 0x4d, 0xc2, 0xf4, 0x88, 0x06, - 0xe0, 0xc3, 0xea, 0x24, 0x81, 0x4a, 0xa8, 0x37, 0xe9, 0xd7, 0x1d, 0xc6, - 0x0f, 0xc2, 0x0d, 0x77, 0x8b, 0x12, 0xa6, 0x71, 0x43, 0xd5, 0x11, 0x3e, - 0xa0, 0xfc, 0xdd, 0x93, 0x36, 0x16, 0x91, 0xfa, 0xaf, 0x4a, 0xad, 0x1b, - 0xee, 0xaf, 0xd0, 0x80, 0x60, 0x7c, 0x13, 0x78, 0xa1, 0x61, 0x66, 0x14, - 0x70, 0xd1, 0x71, 0x6c, 0x35, 0x73, 0x08, 0xf2, 0x91, 0x7c, 0xc2, 0x87, - 0x23, 0xce, 0x1c, 0xfd, 0x93, 0x6a, 0x65, 0xa7, 0x92, 0x1a, 0x77, 0x1b, - 0x8c, 0xf8, 0xcc, 0x0c, 0xaf, 0xc6, 0xc5, 0xa3, 0xfa, 0x09, 0x9d, 0xac, - 0x60, 0x25, 0x08, 0x25, 0x2d, 0xfb, 0xba, 0x76, 0x3a, 0xfb, 0x91, 0x94, - 0x79, 0xb1, 0xec, 0x11, 0xea, 0x21, 0x63, 0xd8, 0x8b, 0xbc, 0x53, 0x86, - 0xf2, 0x6f, 0x4a, 0x6d, 0x6f, 0xcb, 0xf2, 0x33, 0xe9, 0x20, 0xdc, 0x73, - 0x9c, 0x97, 0xa6, 0xb8, 0xd0, 0x43, 0xa3, 0x6b, 0x57, 0xa9, 0x1b, 0x66, - 0x35, 0x37, 0xb4, 0x4c, 0x5a, 0xdb, 0xd0, 0x1b, 0x37, 0x4f, 0x96, 0xf3, - 0x25, 0x2c, 0x2a, 0xa7, 0x6f, 0x7b, 0xdd, 0x2e, 0x6d, 0x8d, 0x00, 0xda, - 0x32, 0x0e, 0x8b, 0xc0, 0x62, 0xbd, 0xb8, 0x5d, 0x6e, 0x9f, 0xdb, 0xc5, - 0x76, 0x0d, 0x13, 0xfc, 0xaa, 0xc8, 0xa4, 0x0b, 0x88, 0x61, 0x95, 0xdc, - 0xdf, 0xc9, 0x26, 0x54, 0x26, 0x50, 0xfb, 0xd7, 0x06, 0x26, 0x7f, 0x77, - 0xd3, 0x66, 0xea, 0x8f, 0xdb, 0xae, 0xad, 0xea, 0x4d, 0xd3, 0x93, 0x9e, - 0xf0, 0xa6, 0x3b, 0xa9, 0x78, 0x64, 0xfa, 0xea, 0x88, 0xea, 0x58, 0xfd, - 0xc3, 0x3b, 0x64, 0xb3, 0x54, 0x4e, 0x29, 0x46, 0xf9, 0xc0, 0x9a, 0xf4, - 0x1c, 0xa5, 0x2c, 0x8d, 0x1b, 0x3c, 0x69, 0x2e, 0xe4, 0x78, 0x95, 0x42, - 0x56, 0x13, 0x2b, 0x47, 0xa1, 0xd5, 0x10, 0x5a, 0x16, 0xfe, 0x9f, 0x76, - 0xa8, 0x6a, 0xf7, 0xcd, 0x92, 0x12, 0xe5, 0xa8, 0x02, 0x9c, 0x15, 0x23, - 0x0b, 0x02, 0x20, 0xe5, 0x98, 0xfb, 0xfe, 0x01, 0xc4, 0xda, 0x50, 0x49, - 0x2d, 0x10, 0x21, 0x76, 0x40, 0xff, 0x05, 0x42, 0xfc, 0x64, 0x71, 0x96, - 0xbc, 0x30, 0x87, 0xc7, 0x41, 0xfe, 0x65, 0xff, 0xde, 0x3d, 0x83, 0xea, - 0xa8, 0xd5, 0x6e, 0x8e, 0xce, 0x6b, 0x85, 0x76, 0x22, 0xcd, 0xa4, 0x53, - 0x9b, 0x28, 0x80, 0x07, 0xcc, 0x01, 0x98, 0x23, 0x10, 0xf7, 0x14, 0x60, - 0x40, 0x13, 0x8a, 0xfe, 0x1a, 0xfd, 0x0c, 0xef, 0xc1, 0x2c, 0x72, 0xba, - 0x1a, 0x93, 0x29, 0xdf, 0xa6, 0xeb, 0x8a, 0x72, 0x08, 0x1b, 0x66, 0xc0, - 0x15, 0x4c, 0x68, 0xcc, 0x8f, 0xc3, 0xc7, 0x72, 0xda, 0xe1, 0xa4, 0xf2, - 0x14, 0x10, 0x5d, 0xba, 0x05, 0xa0, 0xa0, 0x09, 0x25, 0x64, 0xaf, 0xf4, - 0x8b, 0x56, 0x67, 0xd7, 0x9b, 0x1c, 0x13, 0x12, 0xcf, 0x52, 0x3b, 0x30, - 0xfe, 0x71, 0x1f, 0xb0, 0x8b, 0xa0, 0x17, 0xb6, 0xec, 0x32, 0x6e, 0xff, - 0xc9, 0x0d, 0x13, 0x34, 0x5d, 0x77, 0x2e, 0x43, 0xa4, 0x75, 0xc6, 0x94, - 0xf4, 0xa4, 0xe4, 0xdf, 0x50, 0xfc, 0xe9, 0x1d, 0x75, 0x4d, 0x79, 0x48, - 0x7f, 0x4c, 0xfd, 0xe0, 0x40, 0x05, 0x27, 0xd7, 0xf9, 0xda, 0x66, 0x37, - 0x0f, 0xfb, 0x29, 0xd4, 0x1c, 0x82, 0x79, 0xcc, 0x06, 0xcb, 0x0b, 0xd8, - 0xf6, 0xe6, 0xde, 0xad, 0x3e, 0xed, 0x56, 0xbf, 0x55, 0x52, 0x71, 0x4a, - 0x49, 0x34, 0x04, 0x61, 0x3f, 0x82, 0xd7, 0x32, 0x60, 0x00, 0x7b, 0xb5, - 0xa2, 0x08, 0xb9, 0xe6, 0xcf, 0xab, 0x86, 0xb2, 0x83, 0x00, 0xf0, 0xf6, - 0xd6, 0x13, 0x46, 0xfb, 0x0e, 0x9c, 0xfd, 0x97, 0xab, 0x96, 0x6c, 0x7d, - 0x1b, 0x31, 0x93, 0xe6, 0x6a, 0x5f, 0x16, 0xa8, 0x3a, 0xde, 0x42, 0xa5, - 0xa1, 0xf4, 0xe1, 0xc0, 0x74, 0x88, 0xb7, 0xcc, 0x6f, 0xe1, 0xdb, 0xf9, - 0x40, 0x2a, 0x73, 0x13, 0x77, 0x62, 0x07, 0x67, 0x91, 0x05, 0x3a, 0xa0, - 0xb9, 0xd6, 0xa2, 0xfe, 0x17, 0xad, 0x1e, 0xe0, 0x50, 0x67, 0x39, 0x69, - 0xd6, 0xb0, 0x64, 0x11, 0xbc, 0xc0, 0xdc, 0xd6, 0x15, 0x82, 0x5c, 0xa2, - 0xf5, 0x4d, 0x80, 0xd7, 0xaf, 0x58, 0xcd, 0x22, 0x84, 0xbd, 0x1c, 0xfa, - 0x3c, 0x95, 0x9d, 0x45, 0x2c, 0xc8, 0xfc, 0x29, 0x3e, 0x88, 0x0d, 0x20, - 0xdb, 0x61, 0x01, 0xa6, 0x46, 0x31, 0x3d, 0xba, 0xe7, 0x57, 0x9e, 0xaf, - 0xe8, 0x7a, 0x5f, 0x1e, 0x31, 0xe0, 0xb4, 0x29, 0xc3, 0xcb, 0x26, 0x29, - 0x36, 0xb0, 0x04, 0x8d, 0xeb, 0x3a, 0xa2, 0xcb, 0x69, 0x47, 0x2d, 0xea, - 0xc0, 0xed, 0x68, 0x87, 0x95, 0x10, 0xf5, 0x4b, 0x79, 0xa5, 0x5e, 0x07, - 0x17, 0x4a, 0x9f, 0x88, 0xe6, 0xe0, 0x60, 0xba, 0x3c, 0x87, 0xda, 0xfa, - 0x7e, 0xcf, 0x02, 0xad, 0xf8, 0xfc, 0xa2, 0x95, 0xff, 0x1d, 0xea, 0x2b, - 0xaa, 0xad, 0xc5, 0xd5, 0x10, 0x57, 0xc1, 0xd3, 0x40, 0xbe, 0xdb, 0x1d, - 0x47, 0xee, 0xdb, 0x6c, 0x8a, 0xae, 0x2d, 0x63, 0x4a, 0x1c, 0xa9, 0xff, - 0xf2, 0x9a, 0x7a, 0x37, 0x2b, 0x90, 0x3d, 0xf9, 0xf5, 0x7a, 0x4e, 0xf8, - 0x91, 0x73, 0x00, 0xe4, 0x31, 0xea, 0x93, 0x51, 0x13, 0x74, 0xa3, 0xc5, - 0x5d, 0xb4, 0x3d, 0x08, 0x40, 0x2a, 0x96, 0x12, 0x4e, 0xc6, 0x76, 0xbe, - 0x0c, 0x31, 0x93, 0xe3, 0x39, 0xc2, 0x0c, 0xb3, 0x3b, 0x70, 0xc6, 0x0c, - 0xa5, 0x43, 0x57, 0x75, 0x86, 0x1b, 0xf0, 0x02, 0x10, 0xf7, 0x0f, 0x02, - 0x77, 0x6c, 0x95, 0xed, 0xcd, 0x3b, 0x78, 0x5b, 0x72, 0x2b, 0x32, 0x8d, - 0x7a, 0xdb, 0xad, 0x0e, 0x95, 0xc2, 0x08, 0x1f, 0xdd, 0x42, 0x83, 0x29, - 0xe6, 0xc9, 0xeb, 0x6e, 0xf1, 0xf0, 0x62, 0x84, 0x96, 0x61, 0xdb, 0xeb, - 0x75, 0xb2, 0x2b, 0x3d, 0x65, 0xa9, 0xd5, 0x13, 0x40, 0xa9, 0x16, 0x36, - 0x35, 0xa8, 0x32, 0xe5, 0xda, 0xaa, 0x2f, 0x49, 0x54, 0xb7, 0xe6, 0xbc, - 0xab, 0xf8, 0xaf, 0x07, 0x41, 0xac, 0xfa, 0x75, 0x80, 0xe7, 0x1c, 0xae, - 0xd2, 0x97, 0x2c, 0xcc, 0xc8, 0x79, 0x07, 0xe1, 0xdb, 0xa2, 0x7b, 0x2e, - 0xfb, 0x62, 0xe5, 0xcb, 0xeb, 0x96, 0x83, 0xf9, 0xa9, 0x07, 0x98, 0x6f, - 0xe4, 0x1b, 0xcb, 0x27, 0xdd, 0x5a, 0x66, 0xdb, 0x81, 0x26, 0x57, 0xd6, - 0xf2, 0xca, 0x38, 0x61, 0xce, 0xc9, 0x9a, 0xc2, 0x40, 0xf0, 0x20, 0xf6, - 0xca, 0x6b, 0x32, 0xc6, 0x70, 0x19, 0x94, 0x40, 0x17, 0x5d, 0xc9, 0x21, - 0x25, 0xf2, 0x53, 0x92, 0xe3, 0x1b, 0x74, 0xb1, 0x72, 0x70, 0x02, 0xeb, - 0xd1, 0x0e, 0x25, 0x8f, 0x82, 0xc1, 0xc8, 0x99, 0x43, 0xc1, 0x5b, 0x4c, - 0xed, 0xea, 0xad, 0xbb, 0xf6, 0x05, 0x1b, 0xdd, 0x10, 0x17, 0x4b, 0x23, - 0x6f, 0x5a, 0xfb, 0x25, 0xb2, 0x65, 0xa3, 0x20, 0xe6, 0x02, 0x9c, 0xce, - 0x69, 0x67, 0x18, 0x35, 0xdc, 0xc6, 0xbf, 0x02, 0xfc, 0x9b, 0x3a, 0x66, - 0xf9, 0xcf, 0x68, 0x42, 0x6e, 0x67, 0x17, 0x9f, 0xe5, 0xc9, 0x57, 0xa8, - 0xf7, 0x54, 0xe7, 0xab, 0x7c, 0xeb, 0xb2, 0x5e, 0x39, 0xca, 0xb8, 0xb8, - 0xa7, 0xa1, 0x7d, 0xe5, 0x3b, 0xcd, 0xbb, 0x8b, 0x30, 0xf3, 0xf3, 0xba, - 0x1b, 0x56, 0xe0, 0xc6, 0x75, 0x6c, 0x50, 0xde, 0x48, 0xc6, 0x2e, 0x83, - 0x83, 0x47, 0x67, 0x8c, 0x12, 0x98, 0xb2, 0xf8, 0x61, 0x75, 0xf1, 0x9f, - 0x6f, 0xdc, 0x10, 0xac, 0x16, 0xca, 0x60, 0xda, 0xb3, 0x1c, 0x66, 0xc3, - 0x74, 0x05, 0xa6, 0xec, 0x72, 0x24, 0xae, 0x60, 0x34, 0x32, 0xc8, 0x73, - 0x93, 0x19, 0xae, 0xbb, 0x72, 0x6e, 0xa3, 0x46, 0x8a, 0x45, 0x37, 0x7e, - 0x1a, 0x1f, 0x3d, 0x01, 0xa8, 0x54, 0xc6, 0xb5, 0xe0, 0x52, 0xcf, 0x42, - 0x9e, 0xc3, 0x85, 0x2b, 0xe9, 0x76, 0x51, 0xf9, 0xc8, 0x8c, 0x90, 0x95, - 0xd3, 0xcd, 0x81, 0x03, 0x78, 0x3b, 0xd7, 0xb9, 0xd9, 0x2c, 0xcb, 0x88, - 0xc6, 0x54, 0xc1, 0xdf, 0x75, 0x93, 0x53, 0x8b, 0x39, 0x32, 0x6d, 0xf9, - 0xf9, 0x29, 0xb7, 0xe4, 0x08, 0xb4, 0x48, 0x9b, 0xdc, 0xda, 0x7b, 0xe9, - 0x97, 0x97, 0x6b, 0x94, 0x95, 0xc5, 0x5e, 0xa4, 0x90, 0x56, 0x39, 0xe2, - 0xa3, 0x19, 0xc1, 0xb7, 0x9e, 0x60, 0xbe, 0x77, 0xdc, 0xd1, 0x3a, 0x41, - 0xe6, 0xbe, 0x74, 0x3f, 0xa1, 0xe7, 0x0d, 0x3c, 0x8c, 0xb0, 0x88, 0xf9, - 0x10, 0x04, 0x3c, 0xd3, 0x76, 0x9d, 0x59, 0xa6, 0xd7, 0xcc, 0xe6, 0xa5, - 0x9b, 0x62, 0xd7, 0xb3, 0x56, 0xcb, 0x9a, 0x9e, 0xf5, 0x03, 0x4e, 0xe3, - 0x62, 0xbc, 0xa9, 0xea, 0xa4, 0xbd, 0x8e, 0x73, 0xbe, 0x73, 0x07, 0x1b, - 0x7b, 0xf9, 0xe0, 0xc3, 0x19, 0x5b, 0x5f, 0x66, 0x34, 0x50, 0x11, 0x4f, - 0x8b, 0xa6, 0xce, 0xf3, 0x52, 0x6b, 0xa3, 0x8e, 0xc7, 0xcd, 0xc2, 0x8c, - 0x39, 0xdf, 0x2f, 0xe4, 0x75, 0x3a, 0x60, 0x3c, 0x28, 0x25, 0x49, 0xf2, - 0x7c, 0x0f, 0xf3, 0x77, 0x76, 0xcd, 0x70, 0xe1, 0x7e, 0xaf, 0x0e, 0xf9, - 0xcc, 0xbb, 0x85, 0xf3, 0x9c, 0x41, 0xc2, 0x3c, 0xa1, 0xae, 0x9f, 0xa3, - 0xd3, 0x81, 0xa1, 0x64, 0xb4, 0x17, 0xc5, 0x82, 0x41, 0xff, 0xd5, 0xde, - 0xc2, 0x6a, 0xde, 0x92, 0x6c, 0xe6, 0x04, 0x64, 0x36, 0x27, 0x41, 0x84, - 0x74, 0x22, 0xb7, 0x39, 0x83, 0x01, 0x9a, 0xb1, 0xea, 0x6f, 0xfe, 0x22, - 0xa0, 0xdb, 0xec, 0x39, 0xd7, 0xe3, 0xd9, 0x06, 0xbc, 0xeb, 0x3e, 0x59, - 0x58, 0x01, 0x68, 0xe8, 0x15, 0x9a, 0x24, 0xa4, 0x46, 0x46, 0x1a, 0xc1, - 0x58, 0xc8, 0x8a, 0x78, 0x75, 0xf3, 0x67, 0xea, 0x1f, 0x0f, 0xed, 0x07, - 0xd0, 0x3b, 0x95, 0x51, 0x47, 0xf2, 0xe8, 0x9e, 0x2d, 0x24, 0xc3, 0x41, - 0x4f, 0x40, 0xa8, 0xf2, 0x75, 0x9a, 0xd5, 0xfc, 0x28, 0xae, 0x0f, 0xe4, - 0x2c, 0x0e, 0xb5, 0xdf, 0x53, 0x84, 0xb5, 0xb4, 0xf4, 0x6b, 0xc6, 0x23, - 0x22, 0x72, 0xee, 0xd8, 0x7c, 0xdf, 0x92, 0x2a, 0x36, 0xf5, 0xcd, 0x49, - 0x52, 0x27, 0x35, 0xe6, 0x7a, 0xac, 0x0a, 0xcd, 0x47, 0x70, 0xb0, 0xc2, - 0x99, 0xd9, 0x29, 0x46, 0xbe, 0xec, 0xd3, 0x97, 0x94, 0x0f, 0x26, 0x01, - 0xd0, 0x5b, 0xcf, 0x11, 0x4c, 0x5b, 0x81, 0x50, 0x7a, 0x62, 0x82, 0xce, - 0x31, 0x58, 0x4a, 0xb3, 0xa5, 0xc6, 0xa0, 0xd1, 0x93, 0x06, 0x63, 0x20, - 0x41, 0xd7, 0x39, 0xf7, 0xc8, 0xc2, 0x22, 0xb5, 0xde, 0xe2, 0x18, 0x35, - 0x76, 0x45, 0x19, 0x90, 0xb8, 0x58, 0x35, 0xa4, 0xee, 0xe4, 0xe5, 0x48, - 0x12, 0x01, 0xf0, 0x30, 0xe0, 0x66, 0x43, 0x3b, 0xba, 0x48, 0xde, 0xad, - 0xb1, 0x9c, 0x3c, 0xce, 0x8b, 0x98, 0xd3, 0x9f, 0x12, 0x5a, 0x19, 0x9f, - 0xf4, 0xc5, 0xf5, 0x48, 0xf9, 0x44, 0xee, 0x9a, 0x36, 0x0b, 0x49, 0x92, - 0x92, 0x96, 0xa5, 0x9a, 0x78, 0x8c, 0xfb, 0xb0, 0xf3, 0x38, 0xe2, 0x41, - 0xdb, 0xf0, 0x60, 0xe8, 0xe1, 0x5c, 0xf9, 0xc5, 0x76, 0x77, 0x18, 0xf3, - 0x43, 0x9f, 0xf9, 0xeb, 0x11, 0xf1, 0x6c, 0xf0, 0xc7, 0x1c, 0xae, 0xeb, - 0xf1, 0x90, 0x95, 0x02, 0x08, 0xce, 0x46, 0xea, 0xef, 0x7c, 0x67, 0x84, - 0xd2, 0x2e, 0x31, 0x32, 0xb7, 0x0d, 0xb4, 0x3d, 0x8e, 0xaa, 0x39, 0x0c, - 0x68, 0xe6, 0x1c, 0x1e, 0x85, 0xb6, 0x37, 0x10, 0xb6, 0x86, 0x2b, 0xfc, - 0xcd, 0x24, 0xb2, 0x70, 0xfd, 0xff, 0xff, 0x67, 0x4a, 0x00, 0x0c, 0xbc, - 0x68, 0x4d, 0xf3, 0x15, 0x5b, 0xfc, 0x57, 0xa9, 0x2d, 0x0e, 0xd4, 0x37, - 0xa3, 0xa0, 0xc1, 0x0b, 0x47, 0x44, 0x89, 0xee, 0xfe, 0xa3, 0x19, 0xda, - 0x2d, 0x86, 0x70, 0x7f, 0xd5, 0xd9, 0x1b, 0xe0, 0x79, 0x82, 0x49, 0xa6, - 0x0c, 0xca, 0x16, 0x2e, 0x19, 0xba, 0x65, 0x20, 0xaf, 0x4b, 0xda, 0x34, - 0x02, 0xf2, 0x86, 0x81, 0xc0, 0xe7, 0x7a, 0x47, 0x8c, 0xd4, 0xb4, 0xee, - 0x3a, 0xc2, 0x7b, 0xe4, 0xfe, 0xcf, 0x59, 0x3b, 0x52, 0x31, 0x02, 0xf7, - 0x61, 0x7e, 0xbf, 0x4a, 0x74, 0xf3, 0x53, 0xac, 0x09, 0x1e, 0x8f, 0x0e, - 0x56, 0x6b, 0x0c, 0x58, 0xb6, 0xe6, 0xc8, 0x95, 0x91, 0x34, 0xa8, 0x3a, - 0x55, 0xd0, 0xa3, 0x48, 0x6c, 0x5a, 0x9c, 0xef, 0xb3, 0x8f, 0x92, 0x2c, - 0x8d, 0x12, 0x87, 0x81, 0x85, 0xc8, 0x19, 0xb1, 0xfa, 0xef, 0xea, 0xa9, - 0x4d, 0x9d, 0xed, 0x72, 0x0d, 0x6b, 0xb4, 0x5b, 0xe0, 0x99, 0xd5, 0xe0, - 0xf1, 0x2c, 0x42, 0x97, 0x85, 0xc4, 0x4c, 0x03, 0x34, 0xe6, 0x90, 0xd0, - 0xec, 0x93, 0x6c, 0x1f, 0xe9, 0xfd, 0x26, 0x0b, 0x0f, 0xa2, 0x5d, 0x6e, - 0xb3, 0xd8, 0x95, 0xb5, 0xa4, 0xb9, 0x8e, 0xdc, 0xb0, 0x15, 0x1d, 0x54, - 0x3d, 0xe2, 0x95, 0x41, 0x7c, 0xdd, 0xb6, 0xd0, 0xd6, 0x6e, 0x30, 0x2d, - 0x09, 0xc4, 0x83, 0x66, 0x8a, 0x0a, 0xd7, 0xda, 0xab, 0x71, 0xd0, 0x23, - 0x3e, 0x26, 0x5a, 0x87, 0x01, 0xf4, 0x2b, 0xae, 0xfe, 0x98, 0x1f, 0x29, - 0x23, 0x8c, 0xa4, 0xfc, 0x21, 0x74, 0xb0, 0xd9, 0x3c, 0x85, 0xc2, 0xf4, - 0x3d, 0xe3, 0x99, 0x73, 0xed, 0x52, 0x44, 0x49, 0x75, 0x22, 0xda, 0x2c, - 0x85, 0xd6, 0x06, 0x71, 0x52, 0xfb, 0xad, 0x09, 0xd5, 0x0b, 0x9d, 0xc3, - 0x37, 0xe1, 0x4f, 0x43, 0x60, 0xb4, 0xdb, 0x42, 0x3a, 0x06, 0xf6, 0xc2, - 0x1c, 0x67, 0x2d, 0xf8, 0xde, 0xcd, 0x65, 0x58, 0xd8, 0x6e, 0x83, 0x64, - 0x7e, 0x85, 0xda, 0xad, 0xf6, 0xe9, 0x87, 0xca, 0x64, 0xfb, 0x82, 0xf5, - 0xdd, 0x3c, 0x23, 0x43, 0xbe, 0xeb, 0x20, 0x4d, 0x84, 0x55, 0x41, 0x77, - 0x9f, 0x32, 0x26, 0xe5, 0xaf, 0x6c, 0xf5, 0xed, 0x30, 0x9c, 0x2f, 0xe1, - 0x6f, 0x13, 0xba, 0x6c, 0xd8, 0x4c, 0x2f, 0x17, 0xa1, 0xea, 0xa5, 0x87, - 0x86, 0xbd, 0x49, 0xff, 0xf9, 0x72, 0xe6, 0x4d, 0x6d, 0x3f, 0xaa, 0xa3, - 0x0e, 0xaa, 0x19, 0xae, 0x8e, 0x2e, 0x27, 0xee, 0x4b, 0xbe, 0xd1, 0x70, - 0x0a, 0xd7, 0x8a, 0xd6, 0xbd, 0xab, 0x4a, 0x16, 0x56, 0x0b, 0xc7, 0x58, - 0xa2, 0x80, 0x3d, 0x18, 0xe1, 0x7b, 0x3f, 0x68, 0x16, 0xac, 0x52, 0xbe, - 0x1f, 0x29, 0xdd, 0x30, 0x9c, 0x30, 0x3a, 0xf5, 0x8b, 0x79, 0x6f, 0x12, - 0x3e, 0x08, 0xb2, 0x7f, 0x7e, 0x37, 0xbb, 0x7f, 0xa9, 0x71, 0x1d, 0x22, - 0xac, 0x20, 0x7a, 0x61, 0xd9, 0x25, 0x74, 0xf4, 0x7a, 0x30, 0x69, 0x66, - 0x39, 0x9f, 0xc3, 0x58, 0x96, 0x16, 0x86, 0x18, 0x5e, 0x5d, 0x99, 0x64, - 0x1b, 0xb8, 0x78, 0xa4, 0xd3, 0x2f, 0xfd, 0x7a, 0x65, 0x4c, 0x0f, 0xb7, - 0xb6, 0x5d, 0xc0, 0x09, 0xca, 0x71, 0x68, 0x99, 0xc7, 0xca, 0xe5, 0x12, - 0xb2, 0x05, 0x90, 0x58, 0xaa, 0xc4, 0xc8, 0x5b, 0x3d, 0x37, 0x08, 0x8e, - 0xa2, 0x79, 0xb6, 0xb8, 0x0b, 0x79, 0x10, 0x43, 0x51, 0xf1, 0x65, 0x4b, - 0x90, 0x10, 0x18, 0xd6, 0x66, 0x82, 0x22, 0xc8, 0x40, 0x45, 0x81, 0x06, - 0xdb, 0xe1, 0x20, 0xed, 0x20, 0x26, 0x7a, 0x7a, 0x41, 0xc3, 0xb2, 0x3a, - 0xd0, 0x61, 0xee, 0x5a, 0xbc, 0x68, 0xbf, 0x7d, 0x3c, 0x2f, 0x96, 0x25, - 0xb2, 0x1c, 0x0f, 0xde, 0x65, 0x07, 0x40, 0x90, 0xaa, 0x3a, 0xd8, 0xc7, - 0x93, 0x0f, 0xd4, 0xe9, 0xa3, 0x55, 0x3a, 0xc3, 0x4f, 0x71, 0x8d, 0xe7, - 0x29, 0xa6, 0x17, 0x46, 0x76, 0x0d, 0x12, 0x8a, 0x23, 0xdd, 0x68, 0xed, - 0x61, 0xcf, 0x7d, 0xbb, 0x99, 0x38, 0x0b, 0xbe, 0x7e, 0x5a, 0x30, 0x89, - 0x8e, 0x68, 0x37, 0xb6, 0x91, 0xb1, 0xbb, 0x63, 0xd1, 0x73, 0x25, 0x71, - 0xdc, 0x7c, 0x84, 0x04, 0x80, 0xe6, 0x32, 0x49, 0x6b, 0x74, 0xe0, 0xff, - 0x3d, 0xc0, 0xa9, 0x9a, 0x80, 0x8f, 0x5b, 0xd7, 0xc8, 0xf0, 0x9f, 0xe6, - 0x92, 0x31, 0x90, 0x85, 0x5b, 0x99, 0x67, 0xcf, 0xca, 0xba, 0x1f, 0x40, - 0xd9, 0xf9, 0xc7, 0xf6, 0x90, 0x4c, 0x15, 0x71, 0x03, 0x23, 0x77, 0x33, - 0xd4, 0x68, 0x1b, 0xf5, 0xfe, 0x40, 0x2f, 0xe4, 0x5c, 0xb5, 0xca, 0x08, - 0xd6, 0x3f, 0xac, 0xaa, 0x87, 0xc3, 0x2d, 0x8e, 0xf6, 0x7f, 0x3e, 0xa9, - 0x96, 0x3a, 0xdc, 0x3b, 0x3c, 0x8e, 0xe4, 0xea, 0xed, 0xd7, 0x82, 0xec, - 0x41, 0x83, 0x41, 0xf3, 0x7c, 0x1c, 0xe3, 0x2a, 0x89, 0x1e, 0xfa, 0xb9, - 0xf1, 0x00, 0x4a, 0x38, 0xe6, 0xbe, 0xc1, 0x34, 0x6f, 0xa5, 0x1c, 0xb0, - 0xe2, 0xd3, 0x63, 0x87, 0x5b, 0x24, 0x72, 0x0c, 0x79, 0xcb, 0xab, 0x95, - 0xa5, 0xb6, 0x0b, 0xca, 0x1b, 0x76, 0x02, 0x4a, 0x00, 0x4b, 0x3c, 0x00, - 0x9c, 0x9d, 0xf4, 0x81, 0x38, 0xef, 0x6f, 0x65, 0xd7, 0xfc, 0xa6, 0xcd, - 0x5b, 0x9d, 0xbf, 0xbb, 0xae, 0x51, 0x4b, 0xef, 0xf5, 0xc7, 0xa4, 0x6e, - 0x46, 0xf6, 0xcc, 0x19, 0x11, 0x58, 0x92, 0xbe, 0x6c, 0xfd, 0xe8, 0x95, - 0xc4, 0xec, 0x3a, 0xf7, 0xde, 0x4d, 0xc8, 0x4b, 0x1f, 0x37, 0x31, 0xe5, - 0xf6, 0xe7, 0x97, 0xaf, 0x52, 0xb5, 0x69, 0x55, 0x52, 0x79, 0x5f, 0x63, - 0x29, 0xe2, 0xe4, 0xea, 0x37, 0xe0, 0xe2, 0xc9, 0x4b, 0xff, 0x45, 0xde, - 0xde, 0x5e, 0x49, 0x03, 0x21, 0xee, 0xcf, 0xea, 0x19, 0xf5, 0x7e, 0xed, - 0xcd, 0x35, 0x30, 0x48, 0x82, 0x3d, 0x6a, 0x50, 0x18, 0xed, 0x80, 0x1f, - 0xd9, 0x22, 0x87, 0x19, 0x74, 0xa5, 0x68, 0xfd, 0x15, 0x49, 0x42, 0x43, - 0xc1, 0x74, 0xdf, 0x6f, 0xc5, 0xd8, 0x05, 0xd6, 0x88, 0x21, 0xa4, 0x44, - 0x67, 0xf2, 0x1a, 0x52, 0x37, 0x5d, 0xe8, 0x5c, 0xf1, 0x98, 0x98, 0xf1, - 0x99, 0xc3, 0x4c, 0x3d, 0x3b, 0xbd, 0x43, 0xc7, 0x53, 0xb5, 0xb7, 0x27, - 0x56, 0x3d, 0x30, 0x88, 0x79, 0x1e, 0x15, 0x0e, 0x49, 0xdd, 0xd7, 0x80, - 0x86, 0x64, 0x2e, 0x5f, 0x9c, 0x8b, 0x37, 0x71, 0xb4, 0x12, 0x4e, 0x3f, - 0x96, 0xfb, 0x50, 0x03, 0xe3, 0xe9, 0x59, 0xb9, 0xf7, 0x01, 0x5f, 0xb0, - 0xc2, 0x6a, 0xa2, 0x78, 0x5b, 0xad, 0x6f, 0x69, 0xfc, 0x6d, 0x1a, 0x5f, - 0x75, 0x0e, 0x2a, 0x66, 0x43, 0xaa, 0x46, 0x65, 0x64, 0x55, 0x3c, 0x35, - 0x9e, 0xf7, 0xe3, 0xfe, 0x06, 0xa7, 0x54, 0x18, 0x06, 0xc8, 0x98, 0x48, - 0xe9, 0xf8, 0x0a, 0x26, 0x57, 0x7d, 0x92, 0x54, 0x17, 0x9c, 0x48, 0x03, - 0xdf, 0x6c, 0x02, 0x08, 0x7c, 0xdc, 0x85, 0x61, 0xbb, 0xed, 0xdc, 0xc7, - 0x27, 0x9a, 0x7d, 0xc4, 0xad, 0xba, 0x70, 0xef, 0xc6, 0x6b, 0x5d, 0xc5, - 0x55, 0x64, 0xf0, 0x1b, 0x91, 0xa7, 0xd3, 0x1a, 0x79, 0x6d, 0x95, 0xb8, - 0xcf, 0x13, 0xc4, 0xb2, 0x1c, 0xbc, 0x9d, 0x55, 0x43, 0xdf, 0x44, 0x40, - 0xb3, 0xdb, 0xe8, 0xc9, 0xfa, 0xa6, 0xac, 0x9e, 0xc4, 0xd3, 0x2a, 0x07, - 0x97, 0xae, 0x25, 0xe2, 0xc8, 0x66, 0x34, 0x0a, 0x3c, 0xb2, 0x0f, 0xa6, - 0x14, 0x87, 0x84, 0x78, 0xbb, 0xf6, 0xbf, 0x0b, 0x84, 0x81, 0xc8, 0x3c, - 0x62, 0x14, 0xa0, 0x5b, 0x48, 0x04, 0xa3, 0xda, 0x90, 0x2f, 0x22, 0xe2, - 0x7f, 0x65, 0x3e, 0x6a, 0x07, 0x28, 0x4b, 0x2d, 0x78, 0x88, 0x4b, 0xdf, - 0x26, 0x0d, 0x4a, 0xe3, 0xcf, 0xd5, 0x62, 0xd1, 0x17, 0xf9, 0xb4, 0x6d, - 0x41, 0x63, 0x67, 0xcb, 0xd2, 0x4d, 0xf3, 0x42, 0x86, 0xf0, 0x6f, 0x3c, - 0x51, 0xd1, 0x26, 0x08, 0x07, 0xe2, 0xdb, 0x57, 0xb2, 0x4a, 0xec, 0xbc, - 0x3e, 0x6f, 0xa6, 0xc6, 0x45, 0x8d, 0xa1, 0x7c, 0x17, 0xbf, 0x48, 0xf7, - 0x5f, 0xf8, 0x97, 0xa1, 0xb4, 0xf4, 0x94, 0xd8, 0xcc, 0x25, 0xd5, 0xee, - 0x2f, 0xbf, 0x63, 0x84, 0xd5, 0x3d, 0x3a, 0x24, 0x2b, 0xd5, 0x16, 0xb8, - 0xf2, 0xcf, 0x97, 0xfb, 0x72, 0x0b, 0x81, 0x0e, 0xfb, 0xc0, 0xe7, 0xf7, - 0x91, 0xd8, 0x9f, 0x8c, 0x79, 0x06, 0x1e, 0x24, 0xcf, 0x6b, 0xea, 0xf1, - 0x49, 0x6a, 0x20, 0x2b, 0x8e, 0x93, 0x2f, 0x1b, 0xf9, 0x2b, 0x81, 0x98, - 0x7a, 0x37, 0xdd, 0xe9, 0xe6, 0xbd, 0x23, 0x07, 0x76, 0x88, 0x8e, 0xd1, - 0xe8, 0xad, 0xdc, 0xe9, 0xbf, 0x54, 0xe4, 0x4e, 0x90, 0x23, 0xe0, 0xe4, - 0xd6, 0x29, 0x2e, 0x25, 0x8c, 0x04, 0x07, 0x88, 0x89, 0x44, 0xea, 0xe2, - 0x08, 0x47, 0xea, 0xf1, 0xbb, 0x0c, 0xb1, 0xc5, 0x1c, 0xcd, 0x1c, 0x0f, - 0xde, 0x0b, 0x00, 0xca, 0x7f, 0x55, 0xe1, 0x8b, 0xa8, 0xdf, 0xec, 0xf9, - 0x26, 0x73, 0xaa, 0x22, 0xa6, 0x76, 0xf9, 0x6e, 0xc5, 0x2b, 0x79, 0x9d, - 0x65, 0x15, 0xf1, 0x43, 0x44, 0x85, 0x29, 0x85, 0x9e, 0xc0, 0xd4, 0x76, - 0xe0, 0xff, 0xe7, 0x3b, 0x37, 0xc0, 0xb3, 0x15, 0x83, 0x69, 0xcb, 0x06, - 0xfe, 0x5a, 0x52, 0x11, 0xc0, 0xc7, 0x3e, 0xf8, 0xaa, 0xc4, 0x80, 0x93, - 0x2a, 0x9c, 0x0c, 0x89, 0x1c, 0x84, 0x0c, 0xbb, 0x35, 0x6e, 0x5f, 0x42, - 0xa7, 0x8e, 0x96, 0x87, 0xb0, 0x86, 0xc2, 0x0a, 0x97, 0x04, 0x14, 0x09, - 0x05, 0xf0, 0x84, 0x56, 0x2a, 0xc6, 0x7e, 0x3f, 0xf0, 0x78, 0x3f, 0xc8, - 0x13, 0xec, 0x45, 0xff, 0xf5, 0x45, 0x26, 0x1e, 0x08, 0x3f, 0x07, 0x14, - 0x6f, 0xf0, 0x87, 0xb0, 0x17, 0x3c, 0x14, 0x7c, 0x82, 0x22, 0x6f, 0xbf, - 0x3f, 0xb0, 0x7d, 0xa2, 0x93, 0x1d, 0xff, 0xa8, 0x02, 0x06, 0xe3, 0xe9, - 0x86, 0x37, 0x2c, 0x48, 0xc0, 0x90, 0x9e, 0x58, 0xf4, 0x15, 0xd2, 0x69, - 0x68, 0x69, 0x3b, 0xf0, 0x32, 0x69, 0x4f, 0x50, 0x02, 0xab, 0x2c, 0x8b, - 0x2d, 0x4c, 0x76, 0x20, 0xf3, 0x98, 0x49, 0x4c, 0xf4, 0x06, 0xc9, 0x6d, - 0x1d, 0xf9, 0x55, 0x32, 0xf7, 0xf7, 0x58, 0x75, 0x22, 0x53, 0x97, 0x04, - 0xe1, 0xb4, 0x46, 0x65, 0xea, 0x98, 0x45, 0x12, 0x61, 0xc6, 0x0c, 0x37, - 0x42, 0x8d, 0x59, 0x29, 0xed, 0xeb, 0xb0, 0xee, 0x99, 0x59, 0xa0, 0x2d, - 0xe6, 0xff, 0x65, 0x44, 0x12, 0xcd, 0xc5, 0xa8, 0x63, 0x5a, 0x39, 0x16, - 0xef, 0xb0, 0xaf, 0xfa, 0xdd, 0x6a, 0xe9, 0x6c, 0x99, 0x14, 0x28, 0xdc, - 0x9b, 0xd5, 0x04, 0x6e, 0x28, 0xcf, 0x2e, 0x30, 0x5a, 0xe8, 0xbf, 0x66, - 0x6f, 0x04, 0x7f, 0x58, 0xca, 0xe5, 0x44, 0xb0, 0xef, 0x8d, 0x3e, 0x4d, - 0x35, 0xbf, 0x48, 0x58, 0x38, 0xfb, 0x37, 0x8e, 0xbe, 0x8f, 0x8c, 0xcc, - 0x34, 0x2e, 0x66, 0x4f, 0x3f, 0xd8, 0x03, 0x48, 0x22, 0xe8, 0x1d, 0xef, - 0xde, 0xba, 0xfd, 0x0c, 0x87, 0x5b, 0x6d, 0x6c, 0x0e, 0x47, 0x29, 0xa3, - 0x2e, 0xd1, 0x68, 0xdd, 0x9a, 0x31, 0xf5, 0x26, 0x82, 0x48, 0xa6, 0x92, - 0xd0, 0x4f, 0xf5, 0xcc, 0xe1, 0xbc, 0x45, 0x5f, 0xa9, 0x9e, 0x29, 0x3f, - 0x93, 0x31, 0x05, 0x10, 0x76, 0x5a, 0x3a, 0x5f, 0xad, 0xf9, 0xdf, 0xe9, - 0x82, 0x79, 0x10, 0x79, 0xbc, 0x0e, 0x8b, 0xc3, 0xb3, 0x1b, 0xed, 0x35, - 0x56, 0x0c, 0xe0, 0x61, 0xb1, 0xeb, 0x1b, 0x55, 0x6b, 0x14, 0xac, 0x6e, - 0x32, 0x7a, 0x80, 0x4e, 0x8e, 0x83, 0x35, 0x81, 0x37, 0x9e, 0xfb, 0x94, - 0x98, 0x94, 0x61, 0xc7, 0x3a, 0x0b, 0xed, 0x67, 0xcf, 0x79, 0xbb, 0x31, - 0x39, 0xdf, 0x06, 0x76, 0xed, 0x70, 0xc5, 0x85, 0x8b, 0x66, 0xf5, 0x69, - 0x81, 0x62, 0xd4, 0x2e, 0x1e, 0x8e, 0xfd, 0x45, 0xf2, 0x67, 0xc7, 0x07, - 0xf4, 0xf8, 0xff, 0x4b, 0xcd, 0xc5, 0xe2, 0x41, 0x92, 0xa2, 0x76, 0x1b, - 0x0b, 0x5c, 0xfb, 0xd9, 0xdb, 0x28, 0x23, 0xb0, 0xe6, 0x0d, 0xcb, 0x9c, - 0x0c, 0x00, 0x20, 0x92, 0xdc, 0xba, 0x3b, 0x9b, 0x6a, 0x4d, 0x32, 0x3b, - 0x56, 0x53, 0x79, 0x50, 0x23, 0x33, 0x9b, 0xc1, 0xad, 0x24, 0xb7, 0x8e, - 0xf4, 0x8e, 0x66, 0xb5, 0xe0, 0xdb, 0x94, 0xdb, 0x97, 0x17, 0xc9, 0xa8, - 0x2d, 0x11, 0xfa, 0x4b, 0xa4, 0xe8, 0xcc, 0x69, 0x7d, 0x93, 0xf5, 0x8e, - 0x33, 0x3f, 0x50, 0xc5, 0x81, 0xd1, 0xb1, 0x9b, 0x88, 0xa7, 0xaf, 0xbd, - 0x73, 0xf0, 0xa8, 0x87, 0x40, 0x7c, 0xd2, 0xe0, 0x4c, 0x21, 0x31, 0x0a, - 0x37, 0x94, 0x48, 0xdd, 0x6c, 0x66, 0xbf, 0xfb, 0x00, 0x00, 0x92, 0x5f, - 0x12, 0xed, 0xc9, 0xf2, 0x8c, 0x77, 0x6c, 0x78, 0x38, 0x9c, 0x00, 0xdd, - 0x7f, 0x4b, 0x09, 0xa4, 0x6b, 0x92, 0xf4, 0x3c, 0x39, 0x34, 0x27, 0x16, - 0xeb, 0xec, 0x0a, 0xc5, 0x38, 0xd3, 0x36, 0xe6, 0x5a, 0x32, 0xcb, 0x4e, - 0x28, 0x27, 0x7b, 0x42, 0x59, 0x3e, 0x23, 0x0f, 0x06, 0xc6, 0xcd, 0xe0, - 0x21, 0x4b, 0x8f, 0x72, 0xea, 0xec, 0x60, 0xbc, 0x0b, 0xdd, 0x9f, 0xf5, - 0x22, 0x92, 0x18, 0x9c, 0x3e, 0x15, 0x64, 0xd5, 0xcf, 0x7e, 0x04, 0xb6, - 0x8f, 0xc9, 0x42, 0x7e, 0x89, 0xce, 0x05, 0xe4, 0xef, 0x16, 0x93, 0x9a, - 0xc2, 0x95, 0xac, 0xc6, 0x7f, 0xda, 0xa7, 0x50, 0x5b, 0x33, 0xa1, 0xfd, - 0xe0, 0xcb, 0x4e, 0x58, 0x42, 0x4a, 0xb8, 0x9b, 0x17, 0x5a, 0x06, 0x4d, - 0x09, 0x96, 0xb9, 0x70, 0xe7, 0x3d, 0x75, 0x39, 0x75, 0x67, 0x45, 0xcd, - 0x4d, 0x62, 0x90, 0xfd, 0xc9, 0x78, 0xd8, 0x95, 0x26, 0x64, 0x02, 0xe9, - 0x77, 0x03, 0xd1, 0x4e, 0x91, 0x70, 0xf5, 0xd0, 0xd8, 0xc9, 0x04, 0xc1, - 0x01, 0xbe, 0x16, 0xc8, 0x45, 0x73, 0x8c, 0x42, 0xf8, 0xee, 0x6c, 0xf0, - 0x36, 0x30, 0x1a, 0xea, 0x8d, 0xde, 0x90, 0xfb, 0x64, 0x55, 0x74, 0x79, - 0x6c, 0xe2, 0xc3, 0xc9, 0xc1, 0x4a, 0x64, 0x3c, 0xe8, 0x95, 0xaa, 0x60, - 0x3a, 0x5a, 0x85, 0xf7, 0x77, 0x05, 0x75, 0x08, 0xa9, 0xe9, 0x22, 0x32, - 0xe9, 0x30, 0x22, 0x17, 0xcd, 0x4e, 0x02, 0xb9, 0x4f, 0xc1, 0x93, 0x94, - 0xec, 0x1d, 0x6c, 0xcf, 0xbd, 0x4d, 0xe8, 0x0c, 0x20, 0x12, 0x98, 0xf9, - 0xbf, 0x21, 0xe4, 0xd7, 0x5e, 0x9c, 0xdc, 0x2a, 0xd0, 0x1f, 0x70, 0xdc, - 0xf7, 0x59, 0xbf, 0xcb, 0x2a, 0x17, 0xc8, 0x7c, 0x33, 0x72, 0x8e, 0xef, - 0xc5, 0x28, 0xf5, 0x29, 0x34, 0xf3, 0xa5, 0x73, 0x73, 0x84, 0xf0, 0xf0, - 0x39, 0x51, 0x90, 0x91, 0xdd, 0xce, 0x22, 0x0c, 0x52, 0x6b, 0xee, 0xe5, - 0x23, 0x5a, 0x94, 0x43, 0xa6, 0xcc, 0x59, 0xd0, 0xdb, 0x79, 0x74, 0x74, - 0x78, 0x5b, 0x44, 0x15, 0xc6, 0x1f, 0xce, 0x25, 0x83, 0x92, 0x72, 0xd8, - 0xb7, 0xd7, 0x38, 0x3e, 0xba, 0xa6, 0x44, 0xcd, 0x26, 0x54, 0xc2, 0x4e, - 0xdd, 0x61, 0xbb, 0x70, 0xf4, 0x24, 0x4a, 0x61, 0x2c, 0x9f, 0x65, 0x8b, - 0x53, 0xfa, 0xb0, 0x52, 0xd2, 0xa3, 0x10, 0xe1, 0x8b, 0xeb, 0x88, 0x6d, - 0x96, 0x9c, 0x5c, 0x04, 0x55, 0x9d, 0x5d, 0x41, 0x9e, 0x0a, 0x10, 0x4b, - 0xad, 0x63, 0x95, 0xce, 0x94, 0x47, 0x8d, 0x76, 0xe2, 0xdb, 0x70, 0x12, - 0xe9, 0xa0, 0x2a, 0xb5, 0x8a, 0xe1, 0xdc, 0x13, 0x5f, 0x7a, 0x86, 0x4a, - 0xce, 0x9a, 0x0b, 0xae, 0xc1, 0xff, 0x35, 0xb8, 0xfe, 0x8e, 0x98, 0xba, - 0x6d, 0x56, 0x60, 0xaa, 0xa6, 0x1b, 0xaf, 0xa9, 0x20, 0xf1, 0x90, 0x49, - 0x78, 0x31, 0xd9, 0x8b, 0x8c, 0xff, 0x5d, 0x43, 0x8d, 0x5b, 0x98, 0x00, - 0x45, 0x83, 0xc3, 0x81, 0xfe, 0xce, 0x48, 0x7b, 0x76, 0x0f, 0xdb, 0x63, - 0x08, 0xb0, 0x74, 0x62, 0xda, 0x54, 0x07, 0xe3, 0x49, 0x16, 0xfc, 0x43, - 0x26, 0x93, 0x95, 0x90, 0xee, 0x42, 0xe8, 0x6c, 0x22, 0xa6, 0xc1, 0x8c, - 0x76, 0xc2, 0xa7, 0xf5, 0x9c, 0xc6, 0xc5, 0xd2, 0x1a, 0xea, 0x73, 0xfc, - 0x11, 0xb0, 0xeb, 0x13, 0x98, 0x19, 0x1b, 0x86, 0x6e, 0xba, 0xd0, 0x05, - 0x1f, 0x1c, 0x5e, 0x7e, 0x0f, 0x83, 0x28, 0x13, 0x44, 0x06, 0xed, 0x08, - 0xf6, 0x2d, 0xab, 0x76, 0x2c, 0xba, 0xd2, 0x2b, 0xb2, 0x36, 0xad, 0x7b, - 0x08, 0x55, 0xfa, 0x2b, 0xd5, 0x33, 0x3e, 0x3c, 0xc0, 0xed, 0x4a, 0xa4, - 0xc5, 0x65, 0x2f, 0xb9, 0xe2, 0x2f, 0xb2, 0xac, 0x27, 0x51, 0x25, 0x32, - 0xa9, 0x17, 0x2a, 0x48, 0x28, 0x10, 0x41, 0x30, 0x26, 0x2e, 0x5f, 0x8a, - 0x9a, 0x6e, 0x98, 0xcd, 0xbe, 0x40, 0xcb, 0xab, 0x4d, 0xa7, 0x37, 0x3d, - 0xe5, 0x9f, 0xfc, 0x35, 0x97, 0x0f, 0xae, 0x95, 0xcc, 0xf6, 0xc7, 0x7a, - 0x91, 0xdf, 0xea, 0xec, 0x38, 0x92, 0x31, 0x56, 0xc6, 0x02, 0x89, 0x22, - 0xa8, 0x11, 0x48, 0x75, 0xb9, 0x8d, 0x49, 0xbb, 0x2d, 0x26, 0x7c, 0x02, - 0x62, 0x80, 0x10, 0x94, 0xec, 0x82, 0x81, 0x35, 0x33, 0x2c, 0x05, 0xe8, - 0x92, 0xc7, 0x7f, 0x4d, 0xb4, 0x68, 0x7d, 0x88, 0x1f, 0xd2, 0x5b, 0x19, - 0x99, 0x78, 0xf1, 0x81, 0x93, 0x45, 0x9e, 0x71, 0x25, 0xce, 0xd4, 0xee, - 0xde, 0xdb, 0x5e, 0x87, 0x7b, 0x08, 0xe5, 0x7b, 0x37, 0xf1, 0x26, 0x54, - 0xec, 0x11, 0x26, 0x98, 0xff, 0x6d, 0xf0, 0x01, 0xec, 0x08, 0x30, 0xea, - 0x79, 0x89, 0x2b, 0xa5, 0xa4, 0xb8, 0x5d, 0x02, 0x46, 0xb6, 0x80, 0xfb, - 0x78, 0x0a, 0xd6, 0xf2, 0x5c, 0x57, 0xaf, 0x10, 0x4d, 0x9d, 0x00, 0x60, - 0x9f, 0x4c, 0x94, 0x53, 0x4f, 0xe3, 0x43, 0xf6, 0x1e, 0xd6, 0x83, 0x5f, - 0x96, 0x70, 0xfa, 0x71, 0xb6, 0xb7, 0x14, 0xe5, 0xe3, 0x18, 0x4f, 0x21, - 0xcf, 0xf9, 0x58, 0xf2, 0xef, 0x53, 0x4c, 0xb1, 0x15, 0x4c, 0x0b, 0xf7, - 0x86, 0x0a, 0x14, 0x02, 0x03, 0x21, 0xc3, 0xad, 0xbc, 0x89, 0x5a, 0x24, - 0x2d, 0x16, 0x5e, 0x5d, 0xf8, 0x44, 0x4d, 0x0e, 0xbe, 0x11, 0xe2, 0xf8, - 0xa5, 0xda, 0x7b, 0x31, 0x8e, 0x52, 0x3c, 0x85, 0x17, 0x0b, 0x07, 0xc2, - 0x94, 0xeb, 0x7a, 0x79, 0x14, 0x2b, 0xd9, 0x85, 0x74, 0x5d, 0x34, 0x24, - 0x3f, 0x6b, 0xe2, 0xc8, 0xba, 0x5c, 0x96, 0xce, 0x00, 0x2e, 0xf6, 0xd6, - 0x21, 0x96, 0xe2, 0x19, 0xea, 0xdc, 0x9c, 0x73, 0x73, 0xca, 0x00, 0xa6, - 0xec, 0x6d, 0xba, 0x48, 0xd8, 0xb4, 0x27, 0x5b, 0xd3, 0x8a, 0xe4, 0xd9, - 0xeb, 0x10, 0x47, 0x00, 0xa6, 0x1f, 0x01, 0x80, 0x32, 0xe0, 0xa8, 0x0f, - 0x29, 0xe9, 0x8d, 0x88, 0xc2, 0x41, 0xa3, 0x3e, 0xe5, 0xa8, 0xe4, 0x75, - 0xb2, 0xef, 0xbf, 0xf2, 0xc9, 0xe9, 0xd9, 0xa2, 0x06, 0xf0, 0xd3, 0x88, - 0x25, 0x9f, 0x08, 0xad, 0x63, 0xc4, 0xbc, 0x9c, 0x32, 0xdd, 0x1e, 0x6c, - 0x1d, 0x07, 0xd9, 0x26, 0x19, 0x7e, 0xdf, 0x9c, 0xa3, 0xd1, 0x73, 0x34, - 0xa7, 0x54, 0x5f, 0x5d, 0x0b, 0x86, 0xa3, 0x09, 0xf1, 0xae, 0x2c, 0x05, - 0xa3, 0x80, 0x2d, 0x6e, 0x19, 0x43, 0x9a, 0xe2, 0xaf, 0x42, 0xfb, 0xe3, - 0xc3, 0xdb, 0x35, 0xb7, 0x52, 0x63, 0xab, 0xd4, 0xf2, 0xbe, 0xc7, 0xa1, - 0x97, 0x38, 0xec, 0x48, 0x5a, 0x2f, 0x19, 0x4a, 0xb7, 0xd8, 0xc8, 0x1b, - 0xa6, 0x9e, 0xe6, 0xc2, 0x09, 0xdc, 0xca, 0x34, 0xab, 0x82, 0x21, 0x85, - 0x19, 0xe9, 0x7d, 0x53, 0x55, 0xf1, 0x50, 0xea, 0xc0, 0xb3, 0xfc, 0x7f, - 0xf4, 0x46, 0x25, 0x24, 0xca, 0x8a, 0x93, 0x61, 0x37, 0x50, 0x0f, 0x9b, - 0x52, 0xd5, 0xc5, 0x3f, 0x21, 0x22, 0x10, 0x38, 0x3c, 0xf6, 0x92, 0x42, - 0x43, 0xc5, 0x4a, 0x40, 0x08, 0x2b, 0xf9, 0xcb, 0xd5, 0xe9, 0xc0, 0x22, - 0xba, 0xa1, 0x99, 0xf8, 0xc7, 0xa3, 0x8d, 0x80, 0x7f, 0x6e, 0x11, 0xf2, - 0xca, 0xae, 0x66, 0x4b, 0x88, 0xf1, 0xb2, 0xe6, 0x5e, 0x2b, 0x9b, 0x52, - 0x3c, 0x8c, 0xf0, 0x8e, 0x78, 0x5e, 0xcd, 0x33, 0xff, 0x7b, 0xbb, 0xdf, - 0x99, 0x42, 0x62, 0x2f, 0x11, 0x85, 0xfc, 0xf7, 0xd9, 0x33, 0xd6, 0xc1, - 0xc1, 0x05, 0xad, 0xf5, 0xe7, 0x2c, 0x57, 0x17, 0xaf, 0xd1, 0x1b, 0x14, - 0xed, 0xe0, 0xb1, 0x01, 0x70, 0x2e, 0xc8, 0xb2, 0x37, 0xf7, 0x49, 0xba, - 0x6f, 0x78, 0x61, 0xef, 0x55, 0x2d, 0x29, 0xf3, 0xb4, 0xfa, 0x8f, 0x87, - 0xd5, 0xd9, 0xbb, 0x47, 0x41, 0xb9, 0x85, 0x35, 0x47, 0x7e, 0x40, 0xf7, - 0x88, 0x0c, 0x81, 0x93, 0x24, 0x74, 0x89, 0x85, 0x07, 0xa8, 0xaf, 0x40, - 0x64, 0xac, 0x1f, 0x2d, 0x89, 0xf7, 0xc3, 0x8c, 0xaa, 0xf8, 0xd1, 0x94, - 0xa1, 0x9f, 0x1c, 0x9a, 0xea, 0x85, 0xf8, 0x94, 0xaa, 0x1a, 0x0f, 0x46, - 0x80, 0x81, 0x89, 0xef, 0x11, 0x95, 0xc9, 0x02, 0x11, 0x4b, 0xb2, 0x44, - 0xc9, 0xe1, 0x51, 0x36, 0x5b, 0xec, 0xd2, 0x0d, 0xc0, 0x8f, 0xb6, 0x7d, - 0xe4, 0x0e, 0xe8, 0x1a, 0x71, 0x8f, 0xb5, 0xf2, 0xe4, 0xd5, 0xa6, 0x5e, - 0xf3, 0x3c, 0xd2, 0x64, 0xdf, 0xf5, 0x8e, 0x73, 0xb0, 0x20, 0xa4, 0x9d, - 0x95, 0x31, 0x03, 0x31, 0x2b, 0xc4, 0xe0, 0xc4, 0xb9, 0x44, 0x98, 0xe3, - 0xc2, 0x41, 0x50, 0x8f, 0xc5, 0xd9, 0xad, 0x68, 0x81, 0x6f, 0x6e, 0x66, - 0x74, 0x57, 0x99, 0x8a, 0x50, 0x6e, 0x2f, 0x7b, 0xe3, 0x02, 0x36, 0x8e, - 0x22, 0xe2, 0x5b, 0x7b, 0x84, 0x35, 0xd9, 0x35, 0xf1, 0x93, 0xc9, 0x13, - 0x74, 0x56, 0xfc, 0x9e, 0x62, 0x12, 0x40, 0xd5, 0x9a, 0x0d, 0xd2, 0x07, - 0x02, 0xa2, 0xd9, 0x2e, 0x32, 0x4e, 0x9c, 0x22, 0x63, 0xd9, 0xd6, 0xcd, - 0xef, 0x12, 0xec, 0xd1, 0xbc, 0x70, 0xf2, 0x31, 0x1a, 0x59, 0x4f, 0x0a, - 0xd8, 0x09, 0xdd, 0x3f, 0xcb, 0x1c, 0xb3, 0xd2, 0x72, 0x99, 0x5d, 0xbf, - 0x96, 0x0c, 0x45, 0xbb, 0x9f, 0x26, 0x6c, 0xcf, 0x80, 0xa0, 0xaf, 0xcd, - 0x3e, 0xcb, 0xbb, 0xd9, 0x83, 0xa4, 0x90, 0x68, 0x8c, 0x2e, 0x89, 0x3f, - 0xbb, 0x72, 0x08, 0x58, 0x71, 0x1d, 0xea, 0xf3, 0x8d, 0xd6, 0x47, 0x54, - 0xa9, 0xc1, 0xce, 0x09, 0x7d, 0x6c, 0x32, 0x6c, 0xf4, 0xbf, 0xa0, 0x88, - 0x23, 0x0e, 0x2d, 0x1d, 0xa3, 0xe2, 0xcf, 0xb5, 0xd2, 0xc9, 0xd2, 0xc4, - 0x7b, 0x91, 0x8f, 0xfe, 0xe1, 0xcc, 0x59, 0xc7, 0xe7, 0x70, 0xd4, 0x91, - 0xde, 0x14, 0x0b, 0x40, 0x09, 0xce, 0xed, 0x3b, 0x62, 0xae, 0x79, 0x21, - 0x13, 0x8b, 0x80, 0x7e, 0xc3, 0x62, 0xbb, 0xfb, 0x26, 0x27, 0xb8, 0xc2, - 0x4a, 0xb0, 0x68, 0x72, 0x66, 0xa6, 0x02, 0xaa, 0x37, 0xf3, 0x3b, 0x76, - 0x6a, 0x4e, 0x0a, 0x05, 0x85, 0x27, 0x25, 0xdf, 0xa3, 0xc1, 0x61, 0xf7, - 0xc8, 0xa1, 0x2e, 0xf3, 0xcc, 0xbb, 0x8a, 0x3b, 0x30, 0x94, 0x26, 0xd6, - 0x76, 0xd0, 0x77, 0xd5, 0x59, 0xc1, 0x0f, 0x31, 0xc3, 0x4f, 0xa2, 0x9c, - 0xc9, 0xd5, 0x83, 0x10, 0xf9, 0x76, 0xe7, 0x9d, 0x35, 0xcf, 0x2d, 0xd2, - 0xb6, 0x52, 0xd3, 0x73, 0xc4, 0x5b, 0x3e, 0x66, 0xe5, 0x4d, 0xb6, 0xa8, - 0x2b, 0xb4, 0xbe, 0x54, 0x55, 0x69, 0x55, 0xe4, 0xf5, 0xc6, 0x79, 0x60, - 0xc4, 0xca, 0x72, 0x9c, 0x8c, 0x1a, 0x35, 0xab, 0x1f, 0x2c, 0xf1, 0xe3, - 0xa0, 0x56, 0x05, 0x5b, 0x4e, 0x37, 0x1d, 0x01, 0x9f, 0x83, 0xbf, 0x6b, - 0x83, 0x49, 0x07, 0xc7, 0x5a, 0xe5, 0x87, 0xe3, 0xfc, 0x32, 0xa0, 0xb5, - 0x90, 0x1b, 0x38, 0x16, 0xa7, 0x07, 0x0d, 0x30, 0x4c, 0xce, 0x9a, 0x7e, - 0xdf, 0x39, 0x19, 0xdb, 0x63, 0x4e, 0x77, 0xed, 0x59, 0x4f, 0xf4, 0xde, - 0xab, 0x47, 0x86, 0x68, 0x61, 0x69, 0xa7, 0x17, 0x36, 0xdd, 0x4a, 0x38, - 0xa6, 0xcf, 0xd4, 0x67, 0x59, 0x53, 0x62, 0x26, 0x63, 0x8b, 0xd8, 0xc0, - 0x3f, 0xdc, 0xfc, 0x2a, 0x48, 0xc3, 0xcf, 0x4e, 0x9f, 0x64, 0x4b, 0xcb, - 0x7b, 0x7e, 0xca, 0x8d, 0x4b, 0x72, 0x5f, 0xba, 0x36, 0x54, 0x56, 0x2c, - 0xb7, 0x4b, 0x92, 0x29, 0x0b, 0xcd, 0x40, 0xb3, 0x33, 0xe9, 0x4f, 0x3c, - 0x5f, 0x26, 0xcc, 0xac, 0x15, 0xd7, 0x2c, 0xb5, 0x81, 0xfe, 0x5d, 0x99, - 0xb1, 0xd1, 0x16, 0xc5, 0x4b, 0x52, 0x03, 0x63, 0xf2, 0xc4, 0x37, 0x9f, - 0x8e, 0xd5, 0x6b, 0xab, 0xb4, 0xa8, 0x30, 0x08, 0x95, 0xba, 0x53, 0xed, - 0xd9, 0x65, 0xe1, 0x14, 0x02, 0x93, 0xd4, 0x73, 0x87, 0x7e, 0x68, 0xc7, - 0xe5, 0xf1, 0x58, 0x05, 0x98, 0x5a, 0x9e, 0xa0, 0xb3, 0x6f, 0x10, 0xb3, - 0x85, 0x02, 0x2f, 0x05, 0x69, 0xe6, 0xc8, 0x8d, 0x99, 0x1e, 0x2a, 0x3d, - 0xa7, 0x46, 0x9d, 0x0f, 0xdc, 0xaa, 0x8b, 0x0e, 0x82, 0xab, 0xe9, 0xbd, - 0xfe, 0xf9, 0xab, 0x07, 0x06, 0xb4, 0x08, 0xf5, 0xd9, 0x41, 0x3c, 0x8b, - 0xb3, 0x4a, 0x3a, 0x46, 0x77, 0x6f, 0xa1, 0xd8, 0x32, 0xc9, 0xe2, 0xc0, - 0x1e, 0x04, 0xcb, 0x55, 0x79, 0xa0, 0x43, 0xcd, 0x7a, 0x5d, 0x6d, 0xbe, - 0x8c, 0x4e, 0xa5, 0x87, 0x40, 0x49, 0x82, 0xb4, 0x4b, 0x61, 0xc7, 0xb5, - 0x09, 0xa3, 0xfb, 0xdb, 0x5b, 0xc4, 0x6d, 0x5c, 0x0e, 0x33, 0xfe, 0xa1, - 0x59, 0xa7, 0x88, 0x7d, 0x78, 0xa5, 0x8a, 0xfd, 0x3a, 0xdf, 0x1b, 0x88, - 0x26, 0x4c, 0xa6, 0x10, 0xab, 0xc9, 0xd9, 0x37, 0xb3, 0x49, 0xc3, 0x4f, - 0x98, 0x67, 0x31, 0x73, 0xa0, 0xe9, 0x92, 0x4d, 0xa8, 0x42, 0x13, 0xea, - 0xdd, 0x3f, 0xf2, 0x44, 0x7c, 0xab, 0xa5, 0x87, 0x0a, 0x45, 0x98, 0xb8, - 0x0d, 0xe8, 0x82, 0xa0, 0x94, 0x59, 0xfe, 0xd8, 0xe1, 0x26, 0x41, 0x52, - 0x60, 0x7e, 0xa0, 0xd5, 0x3d, 0x84, 0x93, 0x81, 0xf3, 0x13, 0x81, 0xbe, - 0x56, 0xf0, 0x6d, 0xc5, 0x95, 0x62, 0x0f, 0x98, 0x22, 0xa7, 0xe6, 0xdd, - 0x31, 0xb6, 0x0d, 0xb6, 0x1b, 0xc3, 0xd3, 0x87, 0x6f, 0xeb, 0x05, 0x36, - 0x4e, 0xd0, 0x4c, 0x64, 0x8a, 0x15, 0xdf, 0x15, 0xe4, 0x41, 0xde, 0x56, - 0x17, 0xad, 0x6e, 0x7f, 0xc8, 0x4b, 0x7f, 0x30, 0x46, 0xb5, 0x5d, 0xa2, - 0xaa, 0xe2, 0x0f, 0x76, 0x99, 0xbe, 0xe7, 0xab, 0xd9, 0xc0, 0x12, 0x92, - 0xa6, 0x31, 0x0d, 0x60, 0xbc, 0x39, 0xef, 0x53, 0x6b, 0x6e, 0x5f, 0x3c, - 0x7f, 0x1f, 0x75, 0xee, 0x55, 0x18, 0xb5, 0xfb, 0x4b, 0x1b, 0xae, 0x11, - 0x3b, 0x44, 0x46, 0x91, 0xcf, 0xfd, 0x29, 0x04, 0xa4, 0xc2, 0x9e, 0x06, - 0x62, 0x10, 0x41, 0xe3, 0x61, 0x26, 0xd5, 0xe3, 0xe9, 0x16, 0x30, 0xe2, - 0xb1, 0x0b, 0x18, 0x73, 0x48, 0x57, 0x66, 0xc8, 0x4e, 0x31, 0x9a, 0x11, - 0x10, 0xc9, 0xfb, 0x40, 0x97, 0x00, 0xbc, 0x7e, 0x17, 0x57, 0x79, 0xfe, - 0x4e, 0xb2, 0xa9, 0x34, 0xec, 0x3d, 0x40, 0xd6, 0xc1, 0xcf, 0x3a, 0x6c, - 0xa9, 0x1f, 0xfe, 0xb9, 0x6e, 0x27, 0x1a, 0x89, 0x77, 0xa6, 0xc7, 0xd7, - 0x29, 0x45, 0x63, 0x3f, 0x2c, 0xc2, 0x73, 0x7d, 0xec, 0xb0, 0x96, 0x46, - 0xbc, 0x2d, 0xe9, 0x0f, 0x99, 0xaa, 0xc1, 0xad, 0xee, 0x03, 0x22, 0x77, - 0xa3, 0x89, 0x27, 0x08, 0xf8, 0x18, 0xba, 0xcc, 0x13, 0x1b, 0xc2, 0xb4, - 0x4f, 0xf3, 0x95, 0xee, 0x9f, 0x83, 0xde, 0x28, 0x46, 0x84, 0x4a, 0xa0, - 0x60, 0xc8, 0x5b, 0xe3, 0x67, 0x09, 0x4c, 0x03, 0x97, 0xe8, 0x98, 0xa7, - 0x87, 0x07, 0xc8, 0xa6, 0xa9, 0x06, 0x7f, 0x25, 0xd8, 0x8e, 0x52, 0xf9, - 0x7d, 0x55, 0x6c, 0x2c, 0x64, 0xba, 0x6e, 0xc1, 0x89, 0x59, 0x47, 0xe7, - 0xce, 0xc8, 0x75, 0xae, 0xbe, 0xf5, 0xc5, 0xe8, 0xdf, 0x07, 0x31, 0x66, - 0x31, 0xb8, 0x2f, 0xdf, 0x51, 0x4f, 0x42, 0xe8, 0xd5, 0x71, 0xf7, 0xd3, - 0x13, 0x83, 0x0c, 0xfd, 0xbf, 0x22, 0x29, 0x36, 0x14, 0x68, 0x05, 0x3d, - 0x8e, 0xe2, 0x28, 0x18, 0x4e, 0xea, 0xe1, 0xbb, 0x91, 0x92, 0x10, 0xee, - 0xce, 0x36, 0x32, 0x27, 0x92, 0xc5, 0x7d, 0x90, 0x2e, 0x6e, 0xc3, 0xa6, - 0xcd, 0xc4, 0x88, 0x79, 0xb6, 0x08, 0x56, 0x18, 0x60, 0xda, 0x10, 0xf5, - 0x08, 0xdb, 0x38, 0x5a, 0xb3, 0x09, 0xf9, 0xca, 0x5b, 0x31, 0x6d, 0x39, - 0x8e, 0x16, 0xd2, 0x74, 0x84, 0x69, 0x76, 0x42, 0xcc, 0x47, 0x1a, 0xed, - 0x3c, 0x58, 0x7f, 0xa9, 0x0a, 0xf6, 0xed, 0x09, 0xe9, 0x28, 0x6a, 0x9f, - 0x92, 0xef, 0xb5, 0x28, 0x10, 0x9c, 0x04, 0x0b, 0xa3, 0xf3, 0xd3, 0x4c, - 0x45, 0x98, 0xea, 0xcb, 0x24, 0xe6, 0x66, 0x9a, 0xea, 0xf7, 0x7c, 0x1e, - 0x4c, 0xf2, 0x21, 0xaa, 0xa7, 0xdb, 0x3f, 0x4e, 0x64, 0xec, 0x6a, 0x95, - 0xe2, 0xa8, 0x4b, 0xcc, 0xa7, 0x62, 0xff, 0x2d, 0xe1, 0x73, 0x96, 0x06, - 0x4d, 0x36, 0x67, 0x08, 0x0b, 0xf9, 0xc4, 0xeb, 0x52, 0x09, 0xa4, 0x6d, - 0xff, 0x68, 0xe2, 0x1c, 0x63, 0x3c, 0x6b, 0xe0, 0xd0, 0x83, 0xdc, 0xf6, - 0x6f, 0xba, 0x01, 0x54, 0x84, 0xe5, 0xb4, 0x82, 0x95, 0x14, 0x92, 0x62, - 0x9d, 0x90, 0xa3, 0xcb, 0xd2, 0xd7, 0xa7, 0x0a, 0xdf, 0x26, 0x9c, 0xbb, - 0xa5, 0x58, 0x78, 0x68, 0x64, 0x12, 0x55, 0x01, 0xcc, 0x46, 0xad, 0x31, - 0x58, 0xb5, 0xec, 0xa6, 0x07, 0x20, 0x06, 0xbe, 0xee, 0xfe, 0xcf, 0x21, - 0x16, 0x67, 0xe0, 0x71, 0xee, 0x2e, 0x5f, 0xf3, 0xb9, 0x9c, 0x69, 0x0a, - 0xc6, 0x72, 0xb4, 0x69, 0x0c, 0x9f, 0xa5, 0x1d, 0x68, 0x6b, 0xcc, 0xf1, - 0x59, 0x18, 0xdf, 0x69, 0xa9, 0xaf, 0xf2, 0x53, 0x6b, 0x64, 0x9b, 0xf7, - 0x5d, 0x41, 0x4d, 0xa2, 0xda, 0x37, 0x4e, 0x15, 0x4a, 0xe8, 0x82, 0xcd, - 0xa7, 0x2d, 0xd5, 0x38, 0x01, 0xa6, 0xfb, 0x2a, 0xac, 0x1f, 0x44, 0x24, - 0xe2, 0x08, 0xf3, 0x7b, 0xf6, 0xea, 0xab, 0x35, 0x54, 0x7e, 0xbf, 0xb8, - 0x2e, 0x6c, 0xe9, 0x2e, 0xb9, 0x49, 0x53, 0x2c, 0x45, 0xc3, 0x89, 0x96, - 0x42, 0x92, 0xf9, 0x1a, 0x5f, 0xa1, 0x00, 0xbc, 0x02, 0x66, 0xf4, 0x8b, - 0xe4, 0x70, 0xfe, 0xcc, 0xcc, 0x4e, 0x6a, 0x0e, 0x9e, 0x6d, 0x0a, 0x0f, - 0xe6, 0x2c, 0xcd, 0x55, 0x2c, 0x9a, 0xbc, 0xd4, 0xa2, 0xb6, 0xd2, 0x45, - 0xa6, 0x13, 0x84, 0x93, 0x45, 0xe5, 0xe5, 0xd5, 0x18, 0x50, 0x9a, 0x24, - 0x53, 0x51, 0x04, 0x63, 0x14, 0x49, 0xa1, 0x94, 0x6b, 0x8c, 0x18, 0x6c, - 0x1c, 0xd3, 0x93, 0x91, 0xb1, 0x94, 0x2f, 0xf3, 0xa6, 0x76, 0xfe, 0x06, - 0x3d, 0xfe, 0x0d, 0x69, 0xc5, 0xc8, 0xd3, 0x9b, 0xbe, 0x5b, 0xe3, 0x05, - 0xce, 0xd6, 0x04, 0xc5, 0xd0, 0x3f, 0x45, 0x4f, 0x52, 0x31, 0x90, 0xd0, - 0x89, 0xd9, 0xbf, 0xef, 0x4a, 0x29, 0xef, 0x02, 0x5d, 0xf4, 0x28, 0x32, - 0x09, 0x04, 0x70, 0xf7, 0x5e, 0xf3, 0x4f, 0xfa, 0x14, 0xc5, 0x8b, 0xec, - 0xbd, 0x0f, 0xfa, 0x55, 0x54, 0xef, 0x65, 0xff, 0x10, 0x4f, 0x01, 0xb4, - 0x41, 0x77, 0xc0, 0x1e, 0xf7, 0x34, 0x1e, 0x81, 0x2b, 0x3d, 0xa7, 0x4c, - 0x32, 0x29, 0xc8, 0x61, 0x64, 0xf1, 0x52, 0x8d, 0xf9, 0xaa, 0x7b, 0xce, - 0xc7, 0x10, 0x0a, 0x7d, 0x91, 0x7b, 0x90, 0xbc, 0x1a, 0xc3, 0x6a, 0x51, - 0x24, 0xe0, 0x2f, 0xf6, 0x6c, 0x28, 0xad, 0xbb, 0xfb, 0x3f, 0x85, 0x25, - 0xf4, 0xa4, 0x90, 0xb2, 0x84, 0x60, 0x48, 0xe7, 0xa3, 0xd4, 0xc0, 0x74, - 0x1d, 0x0f, 0x06, 0x04, 0x05, 0xcd, 0xe4, 0x01, 0x07, 0x7a, 0xc9, 0x0a, - 0xd8, 0x20, 0xac, 0x3e, 0x7b, 0xe4, 0xdc, 0xac, 0xee, 0x2e, 0x06, 0xd3, - 0x43, 0x86, 0x9b, 0x0d, 0x8a, 0xcd, 0x8b, 0x60, 0xb6, 0x67, 0xbf, 0xc0, - 0x22, 0xc9, 0x9e, 0x5b, 0x8c, 0x53, 0xd1, 0x51, 0xa0, 0x50, 0x1c, 0x15, - 0xce, 0xde, 0x53, 0xbd, 0x99, 0x03, 0xe4, 0xd6, 0x8d, 0xce, 0x09, 0x19, - 0x80, 0xb0, 0x59, 0xe0, 0x7b, 0x10, 0xee, 0x14, 0x66, 0x83, 0xba, 0x61, - 0xf8, 0xc7, 0x13, 0x22, 0xd1, 0x90, 0x92, 0x4e, 0x81, 0xc5, 0x31, 0x36, - 0x47, 0xbf, 0x81, 0x8b, 0xb1, 0xe0, 0xa4, 0x0d, 0x00, 0xef, 0x3d, 0x9e, - 0x19, 0x71, 0x3d, 0x74, 0x3b, 0x8d, 0x5b, 0xa5, 0xc9, 0xbf, 0x63, 0xb7, - 0x79, 0x08, 0xba, 0x2c, 0x04, 0x63, 0x25, 0x22, 0xad, 0x4e, 0xe5, 0xa0, - 0xff, 0xc4, 0x53, 0xee, 0x3e, 0xd3, 0x10, 0x49, 0x6e, 0xd8, 0x6a, 0x17, - 0x3f, 0xf3, 0x93, 0xa3, 0x7b, 0x51, 0x97, 0x40, 0xf4, 0xd1, 0xc6, 0x2c, - 0x9a, 0xdf, 0xcb, 0xb1, 0x2d, 0xe5, 0xa1, 0x99, 0xd7, 0x03, 0x00, 0xea, - 0x54, 0x03, 0xc9, 0xe2, 0xb7, 0x4a, 0x2b, 0x90, 0xb4, 0xfd, 0x3e, 0xc3, - 0x29, 0x44, 0x34, 0xf0, 0x77, 0x14, 0x34, 0x32, 0x93, 0x2f, 0x07, 0xc5, - 0x4c, 0xb9, 0xe0, 0xde, 0xcf, 0x48, 0x24, 0x1d, 0xd5, 0x64, 0xe3, 0x81, - 0xb9, 0x6b, 0x53, 0x7c, 0x68, 0x6f, 0x8c, 0xf8, 0x95, 0x14, 0x94, 0xf7, - 0x18, 0x1d, 0x69, 0x63, 0xb9, 0xe7, 0x62, 0xb1, 0x2b, 0x12, 0x84, 0xa0, - 0x3b, 0xbd, 0x1e, 0x0c, 0x86, 0x8e, 0x6c, 0xc8, 0x3d, 0xcc, 0x89, 0xf8, - 0x28, 0x49, 0x1c, 0xa4, 0x8f, 0x85, 0x4b, 0x85, 0x7f, 0xf2, 0xac, 0x37, - 0xd5, 0x1c, 0x97, 0x23, 0xe1, 0xe8, 0xe6, 0xd2, 0xbf, 0xf9, 0x30, 0x01, - 0xeb, 0x89, 0xe4, 0xc1, 0x5e, 0x6e, 0x82, 0x76, 0x7d, 0xb0, 0x29, 0x38, - 0xe1, 0x19, 0xf4, 0xa0, 0xf2, 0x67, 0x08, 0x0b, 0xb2, 0x85, 0x5a, 0x89, - 0x2b, 0x7f, 0x1e, 0xaa, 0x00, 0xd6, 0x68, 0x03, 0x37, 0x53, 0xea, 0xfa, - 0xc9, 0xce, 0xc2, 0x73, 0xf8, 0x82, 0xa7, 0x3c, 0x57, 0x4a, 0xbb, 0x41, - 0x84, 0x92, 0xbe, 0xdc, 0x99, 0x55, 0x14, 0xe1, 0x6a, 0x91, 0x44, 0x19, - 0xdf, 0xb1, 0x0a, 0xc7, 0x63, 0xb9, 0x17, 0xec, 0x9c, 0x07, 0x90, 0x79, - 0xe4, 0x8f, 0x12, 0xb8, 0xd8, 0xe0, 0x04, 0x7d, 0xcb, 0x69, 0x4d, 0x34, - 0x98, 0x0e, 0xec, 0x25, 0xec, 0xdf, 0x9d, 0xeb, 0xbd, 0xf7, 0x15, 0x95, - 0xa2, 0xf7, 0xc7, 0x8f, 0x1f, 0x16, 0xc5, 0x80, 0xab, 0x3c, 0x34, 0xd5, - 0xb0, 0x03, 0x13, 0xbb, 0xd6, 0x0c, 0x3b, 0xdf, 0x1c, 0xf2, 0x00, 0x78, - 0x0f, 0xac, 0x06, 0x2f, 0x5c, 0x3a, 0xe6, 0x80, 0xa5, 0xf4, 0xeb, 0xda, - 0xa8, 0x72, 0x5e, 0x8b, 0x7d, 0x32, 0xb0, 0x67, 0xf7, 0x31, 0x87, 0x2c, - 0x12, 0x22, 0x78, 0x05, 0x3b, 0xf4, 0x72, 0x71, 0xc3, 0xba, 0x7a, 0xb4, - 0x7e, 0x2b, 0x66, 0x59, 0xd1, 0x82, 0x14, 0x24, 0x7e, 0x69, 0xdc, 0x4b, - 0x29, 0x6f, 0xe0, 0xd6, 0x4f, 0x51, 0x8e, 0xf0, 0x33, 0xca, 0xd0, 0x12, - 0x4f, 0x12, 0x79, 0x12, 0xe6, 0x47, 0xcc, 0x03, 0xfb, 0x9b, 0xa3, 0x44, - 0x72, 0xe0, 0xd2, 0xaf, 0x2b, 0xf9, 0x02, 0xba, 0x06, 0x59, 0x2f, 0xf1, - 0x24, 0xb1, 0x5e, 0xf4, 0x69, 0x1f, 0x5a, 0x47, 0xd7, 0x21, 0x3f, 0x03, - 0xaa, 0xac, 0xb3, 0x1e, 0xa7, 0xf1, 0xca, 0xcc, 0x63, 0xbd, 0x6a, 0x72, - 0xcf, 0x1a, 0x04, 0xa8, 0xf6, 0x7f, 0xc6, 0xf0, 0x5b, 0x12, 0x6b, 0x39, - 0xaf, 0x90, 0xe8, 0x9c, 0x35, 0x3c, 0xf7, 0x87, 0x72, 0xbb, 0xf1, 0x9a, - 0x90, 0x42, 0x27, 0x08, 0x1d, 0xd1, 0x75, 0xd2, 0xcb, 0x39, 0x91, 0xc6, - 0x21, 0x97, 0x95, 0xa1, 0xa3, 0x95, 0xad, 0x41, 0x23, 0xcb, 0xde, 0x45, - 0x96, 0xcf, 0xea, 0x2b, 0x45, 0xc0, 0x6c, 0x72, 0x73, 0x9e, 0x85, 0x6f, - 0x09, 0xca, 0x72, 0xa5, 0xa3, 0xef, 0x90, 0xc9, 0x47, 0x6d, 0x7a, 0xca, - 0x1e, 0x93, 0x90, 0x10, 0x7f, 0xc4, 0x7c, 0x36, 0x84, 0xe2, 0x9d, 0xc6, - 0xf6, 0x06, 0xcd, 0x39, 0x8b, 0x21, 0x58, 0xe8, 0xef, 0x89, 0x7c, 0x17, - 0xa0, 0xc3, 0xdf, 0x0e, 0x5d, 0x4e, 0x0e, 0x80, 0x1b, 0x1d, 0xc5, 0xab, - 0x18, 0xee, 0x9f, 0x18, 0x8f, 0xa3, 0x6e, 0xf9, 0xe4, 0x5f, 0x0b, 0x3a, - 0x59, 0xbe, 0xec, 0x80, 0x2e, 0x5d, 0x5b, 0x65, 0x24, 0x2e, 0xcb, 0x0f, - 0xdd, 0x0f, 0xd4, 0x7e, 0x05, 0x8d, 0x22, 0xcb, 0x4e, 0xb9, 0xe0, 0x37, - 0x86, 0xb5, 0xfe, 0xd9, 0xbf, 0xa9, 0x16, 0x39, 0x76, 0x38, 0xd2, 0xc6, - 0x17, 0x21, 0x03, 0xed, 0x4d, 0x05, 0x1c, 0x0d, 0x23, 0x59, 0x67, 0xee, - 0x61, 0xb0, 0x59, 0x1d, 0x6e, 0xc8, 0xe4, 0xe2, 0xca, 0x17, 0x00, 0x34, - 0xd2, 0x21, 0x7d, 0x6e, 0x7a, 0xa6, 0xb7, 0x6a, 0xbc, 0x50, 0x03, 0x42, - 0x90, 0xc3, 0x8f, 0xf7, 0xbc, 0x82, 0x07, 0x0b, 0xe9, 0x32, 0xe0, 0x4f, - 0xc1, 0x0b, 0xf9, 0xda, 0xd3, 0x16, 0x47, 0x30, 0x9b, 0x2e, 0xd4, 0x02, - 0xcc, 0xbe, 0xd5, 0x0f, 0x02, 0x54, 0xb9, 0x38, 0xee, 0x92, 0x95, 0x83, - 0x81, 0x4f, 0xe6, 0x61, 0x24, 0x8a, 0xd7, 0xbf, 0x25, 0x62, 0xd7, 0xf2, - 0xec, 0x80, 0xb5, 0x39, 0x0e, 0xbc, 0x17, 0xf5, 0xd6, 0xc6, 0x6e, 0xd6, - 0x3b, 0xfa, 0xb5, 0x1d, 0x2f, 0xbc, 0x8d, 0x9e, 0x07, 0x0f, 0xa8, 0xcf, - 0xe6, 0x8c, 0xd1, 0x74, 0xc9, 0xdf, 0x63, 0xae, 0x09, 0x04, 0x89, 0xec, - 0x7e, 0x37, 0x6d, 0x73, 0x2c, 0xa9, 0x9b, 0x64, 0x1b, 0x7f, 0xaa, 0x6b, - 0xcd, 0x80, 0x1c, 0x1b, 0x2f, 0x43, 0x20, 0xfa, 0x76, 0xd5, 0x15, 0x17, - 0xe0, 0x6b, 0x11, 0x7b, 0x1a, 0x47, 0x9b, 0x7e, 0x29, 0x7e, 0xc2, 0x1e, - 0x31, 0xdf, 0xc1, 0x96, 0x18, 0x3d, 0x6e, 0x3a, 0xbb, 0xa2, 0x9a, 0x5b, - 0x28, 0x68, 0x16, 0x7d, 0x7d, 0xf5, 0x71, 0x03, 0x19, 0x02, 0xdd, 0x09, - 0x40, 0x62, 0xae, 0xad, 0xb0, 0x55, 0x2a, 0xdb, 0xb7, 0xe7, 0x3b, 0xf5, - 0x0b, 0x91, 0x42, 0x5a, 0x8e, 0x8c, 0x9e, 0x15, 0x51, 0x91, 0xa7, 0xec, - 0x7d, 0xcc, 0x4a, 0xff, 0x7a, 0xb9, 0x92, 0xfb, 0x94, 0xdf, 0x30, 0x5b, - 0xc8, 0x74, 0x04, 0x9c, 0x46, 0x1e, 0x33, 0xe7, 0x9c, 0x0e, 0x9e, 0x6e, - 0x1f, 0x5e, 0x5b, 0x7c, 0xcc, 0xd7, 0xa0, 0xb8, 0x04, 0x51, 0x54, 0x67, - 0x8d, 0x3e, 0x92, 0xa9, 0xe9, 0xb6, 0xdf, 0xbd, 0xc6, 0x6f, 0x07, 0x2c, - 0xba, 0x27, 0x28, 0xaf, 0x74, 0x1f, 0xec, 0xe6, 0x18, 0x12, 0xa1, 0x33, - 0xe8, 0xc6, 0x2f, 0x69, 0xa3, 0xa3, 0x8a, 0x7a, 0x2f, 0x75, 0x68, 0x6d, - 0xd7, 0xe2, 0x39, 0xf1, 0xab, 0xe9, 0x72, 0xf2, 0x80, 0xf9, 0x0c, 0xdc, - 0x8a, 0x07, 0xdc, 0xaf, 0x6a, 0x33, 0xf3, 0x7e, 0x83, 0x23, 0xfa, 0x10, - 0x6f, 0x16, 0x0a, 0x32, 0x82, 0x2e, 0xe6, 0xc2, 0x42, 0xd4, 0x23, 0xaf, - 0x0d, 0x2d, 0x9a, 0x3f, 0x6a, 0xd4, 0x20, 0xba, 0xc5, 0x8b, 0x0d, 0x6d, - 0x02, 0x16, 0x2d, 0xb6, 0x36, 0x09, 0xf5, 0x74, 0xcd, 0x64, 0x2f, 0xd6, - 0x51, 0xcd, 0xf2, 0x6a, 0x78, 0x28, 0x39, 0xff, 0x6f, 0x90, 0x84, 0xb0, - 0x8f, 0x20, 0x5f, 0xe9, 0xb5, 0xa3, 0x7e, 0x29, 0x84, 0x85, 0xa6, 0xdd, - 0x92, 0x27, 0x18, 0x13, 0x24, 0x8d, 0x6a, 0xea, 0x2d, 0x48, 0xe0, 0xa1, - 0x49, 0xe7, 0x5e, 0xc2, 0x86, 0x8c, 0x04, 0x9a, 0x4d, 0xaa, 0xc0, 0x67, - 0xd0, 0xd3, 0xfb, 0xc4, 0x85, 0x16, 0x5e, 0x38, 0xb9, 0x76, 0xc4, 0x2e, - 0xbe, 0xf1, 0x7d, 0xec, 0x3d, 0x7d, 0x83, 0xcd, 0xd1, 0x2a, 0x8c, 0x0d, - 0x0d, 0x8f, 0x9b, 0x21, 0xd0, 0x7b, 0x70, 0x8d, 0x0d, 0x33, 0x87, 0xfd, - 0xed, 0x5c, 0xe9, 0x7b, 0xb3, 0x47, 0xd0, 0x9f, 0x18, 0x68, 0xdf, 0xe9, - 0x72, 0xa2, 0x16, 0xc6, 0x50, 0x0d, 0xb8, 0x0a, 0x11, 0x6d, 0xfb, 0xb7, - 0x1d, 0x19, 0x53, 0x56, 0x7d, 0xc3, 0x66, 0xe5, 0x7a, 0x01, 0xbb, 0x4d, - 0xe2, 0x8e, 0x9c, 0x37, 0x3c, 0x38, 0x56, 0x24, 0x70, 0x30, 0xd4, 0x90, - 0x76, 0xf0, 0x4b, 0x44, 0x45, 0x11, 0x83, 0xc1, 0xf9, 0x8d, 0xd9, 0x31, - 0x72, 0xf5, 0x81, 0x83, 0xd3, 0xd4, 0xf1, 0x91, 0x02, 0x51, 0x20, 0xf7, - 0x2f, 0xfd, 0xeb, 0x2e, 0x25, 0x34, 0x33, 0xb2, 0x4f, 0x5b, 0x81, 0x45, - 0x7a, 0x67, 0xd3, 0x18, 0xdd, 0x41, 0xf6, 0x8e, 0xa3, 0xe6, 0xea, 0x7d, - 0x0b, 0xce, 0x4f, 0xa7, 0x5b, 0x0f, 0xf7, 0x46, 0x51, 0xd0, 0xc5, 0x9a, - 0xa9, 0x61, 0xe2, 0x62, 0x86, 0x0b, 0x50, 0xc5, 0x6d, 0xfa, 0x2f, 0xc4, - 0x3e, 0xc9, 0x20, 0x0a, 0xa8, 0xa4, 0xcf, 0xe7, 0x58, 0x78, 0xfe, 0x56, - 0xd7, 0xb5, 0x8b, 0xa1, 0x62, 0xde, 0xb2, 0xf9, 0x46, 0x06, 0xfa, 0xcc, - 0xe7, 0xc6, 0xca, 0xa4, 0x4c, 0x1d, 0x89, 0x7e, 0xf0, 0xc9, 0x52, 0xec, - 0x02, 0xba, 0xc8, 0xd8, 0x36, 0xe4, 0xa9, 0x24, 0x72, 0x3d, 0xb1, 0xf2, - 0x25, 0xdd, 0xf5, 0x10, 0x26, 0x05, 0x28, 0x44, 0x7f, 0x74, 0x1f, 0xfb, - 0x88, 0x06, 0x08, 0x2a, 0x25, 0x57, 0xa7, 0x1b, 0x07, 0x37, 0x0e, 0xc2, - 0xf3, 0x1c, 0x8e, 0x90, 0xc7, 0xd2, 0x13, 0x6b, 0xe3, 0xd1, 0x4f, 0x87, - 0x59, 0x62, 0x06, 0x32, 0x00, 0x02, 0x03, 0x56, 0xa3, 0x83, 0x18, 0xdb, - 0xe9, 0xb8, 0x0b, 0x25, 0x5c, 0xcd, 0x34, 0x01, 0x22, 0x26, 0xcf, 0xe3, - 0x47, 0xe6, 0x41, 0xe2, 0x27, 0xc4, 0x79, 0x23, 0x76, 0x1e, 0xe2, 0x8d, - 0xd9, 0xd4, 0x55, 0x73, 0xa7, 0xd6, 0xa0, 0x72, 0x1f, 0xd2, 0x30, 0x88, - 0xf7, 0x8b, 0x49, 0xaf, 0xd1, 0x67, 0xce, 0x45, 0xa7, 0xde, 0x92, 0x70, - 0xaa, 0x76, 0x49, 0xb4, 0x51, 0x1f, 0x0c, 0xf5, 0x5c, 0x3c, 0x56, 0x7f, - 0xfa, 0x3b, 0xf6, 0x24, 0x22, 0x9c, 0xdc, 0x03, 0xc7, 0xb8, 0x1e, 0x7e, - 0xce, 0x91, 0x94, 0xde, 0x48, 0xff, 0xa2, 0x66, 0x60, 0x13, 0x1a, 0xe1, - 0xf7, 0x48, 0x84, 0x57, 0xff, 0x29, 0x0c, 0x8e, 0x57, 0xd7, 0x45, 0x39, - 0x0e, 0x28, 0x0b, 0xa9, 0xb6, 0xdd, 0xab, 0x6c, 0xbb, 0xcb, 0xd6, 0xca, - 0x10, 0xa0, 0x2b, 0x56, 0x6c, 0xea, 0xea, 0xf4, 0xec, 0xb5, 0x81, 0xb3, - 0xe0, 0x99, 0x8c, 0x6e, 0xa6, 0xbe, 0xe7, 0x44, 0x0a, 0x66, 0xdb, 0x8e, - 0x32, 0x9b, 0x62, 0x5e, 0x3d, 0x92, 0xbb, 0x87, 0xf9, 0x9c, 0x1b, 0x69, - 0xd2, 0x73, 0x5e, 0x4c, 0x30, 0x70, 0xa7, 0x68, 0xe5, 0x4a, 0xc9, 0x82, - 0x31, 0x59, 0x87, 0xf8, 0xf7, 0xb0, 0x8a, 0x14, 0x99, 0x82, 0x43, 0x75, - 0x68, 0x71, 0x56, 0x28, 0x7e, 0x3a, 0x61, 0xe1, 0x54, 0xd0, 0x66, 0xff, - 0x8b, 0xe5, 0x2f, 0x32, 0x5a, 0x05, 0xf8, 0xbc, 0x5c, 0x31, 0x84, 0xe4, - 0xf5, 0x4c, 0xea, 0x3b, 0x56, 0x6f, 0x69, 0x11, 0x3b, 0x67, 0xc4, 0x30, - 0xac, 0xf0, 0xe5, 0x95, 0xa7, 0x09, 0x96, 0x3e, 0x5f, 0xdc, 0xb0, 0xe2, - 0xf4, 0xd7, 0xb7, 0xc0, 0x80, 0xcf, 0xe1, 0x4e, 0x19, 0x84, 0xf1, 0xe0, - 0xaf, 0x29, 0x56, 0x90, 0x18, 0x07, 0xeb, 0x29, 0xd4, 0x66, 0x78, 0x92, - 0x18, 0x7e, 0xfc, 0x06, 0xcd, 0xca, 0x72, 0xbb, 0x8f, 0x81, 0x2b, 0x92, - 0xb2, 0xc7, 0x5b, 0x9d, 0x1e, 0x27, 0x9d, 0xae, 0x03, 0x6f, 0x1d, 0x1b, - 0xd3, 0x78, 0x3f, 0xde, 0x4b, 0xf1, 0x30, 0xd6, 0xd2, 0x83, 0x4f, 0xf1, - 0x10, 0xb7, 0x67, 0x2f, 0x33, 0x8d, 0x38, 0x7e, 0x98, 0xc8, 0x2d, 0x64, - 0xd3, 0x57, 0x89, 0x53, 0xd1, 0xd2, 0xd3, 0xb7, 0xef, 0x27, 0xb2, 0x8a, - 0x01, 0x58, 0xe6, 0x6e, 0x2e, 0x79, 0x4d, 0xc6, 0x55, 0x06, 0x3d, 0x41, - 0x5a, 0xd4, 0x17, 0x0c, 0xd2, 0x32, 0xfa, 0x99, 0x51, 0x11, 0x92, 0x00, - 0xf0, 0xf4, 0x16, 0x2d, 0x80, 0xe7, 0xa1, 0xb6, 0x1a, 0xc1, 0xa0, 0x5c, - 0xf6, 0xf9, 0x69, 0x8c, 0x0d, 0xd9, 0x72, 0x0a, 0x30, 0x07, 0xe4, 0x89, - 0xdf, 0x40, 0x82, 0xb7, 0x84, 0xbf, 0xd7, 0x6e, 0x0d, 0x3e, 0xaa, 0xa5, - 0x15, 0x1d, 0x42, 0xfb, 0xfb, 0xe7, 0xd2, 0x29, 0xc1, 0x15, 0xd3, 0xe2, - 0x50, 0x0c, 0x27, 0xcf, 0xfc, 0x02, 0xdd, 0xd5, 0x6e, 0xf1, 0xaf, 0x87, - 0x5c, 0x07, 0x9c, 0x1e, 0x6f, 0x1a, 0xb9, 0xf0, 0x74, 0x1e, 0x41, 0xee, - 0x86, 0xcf, 0xf6, 0x15, 0xd1, 0xea, 0x60, 0x44, 0x1b, 0x8b, 0x5c, 0xbe, - 0xdf, 0x1a, 0x7f, 0x49, 0x31, 0x95, 0x1f, 0x7b, 0x2a, 0xc3, 0x2e, 0xeb, - 0xe5, 0xf5, 0xa1, 0x9e, 0x3a, 0xc7, 0x27, 0xa0, 0x38, 0x2c, 0xae, 0xa9, - 0x4c, 0x65, 0x5f, 0x58, 0x1f, 0x1e, 0x31, 0x92, 0xcb, 0x3e, 0x02, 0x83, - 0x31, 0x04, 0x4d, 0xef, 0x1c, 0x65, 0xc7, 0x2d, 0xfe, 0x26, 0xa8, 0xbd, - 0x66, 0x71, 0x79, 0xf3, 0x2d, 0xb4, 0x23, 0x81, 0x2a, 0x95, 0xb4, 0xa9, - 0x89, 0xc3, 0xf1, 0x88, 0x3f, 0x88, 0x7c, 0x84, 0xe3, 0xb5, 0xa3, 0xbc, - 0x59, 0x5b, 0x24, 0x29, 0x73, 0xab, 0x62, 0xfb, 0xd9, 0xb9, 0xe2, 0xc7, - 0xe3, 0x76, 0xa7, 0xa2, 0x26, 0x81, 0x2c, 0x09, 0x83, 0x8c, 0x01, 0x54, - 0xcc, 0xe7, 0x84, 0xe5, 0x8d, 0xc4, 0x16, 0x12, 0x2f, 0x14, 0x76, 0xe0, - 0xac, 0x74, 0xfb, 0xae, 0xed, 0xbc, 0x26, 0x00, 0x06, 0x16, 0x3c, 0x4e, - 0x7f, 0x41, 0xfd, 0x8b, 0x9d, 0xe9, 0xec, 0xaf, 0x10, 0x12, 0x27, 0x3f, - 0x80, 0x1e, 0xe4, 0x29, 0x44, 0xee, 0x59, 0xef, 0x3e, 0x45, 0x5a, 0x51, - 0xc2, 0xd3, 0xfc, 0xb1, 0xe4, 0x98, 0xd9, 0x55, 0xd0, 0xaf, 0x47, 0xe6, - 0x5d, 0x96, 0x82, 0x04, 0xda, 0xfd, 0x03, 0xda, 0x4b, 0x05, 0xde, 0x51, - 0x3f, 0x5a, 0x2e, 0xa9, 0x4a, 0x2f, 0xf4, 0x8c, 0xa0, 0x58, 0x31, 0xd2, - 0xf5, 0x3a, 0x97, 0x34, 0x3f, 0xca, 0x02, 0xa8, 0xa7, 0x3b, 0x45, 0x50, - 0xa1, 0x6f, 0x24, 0x7f, 0x10, 0xf5, 0x10, 0xb2, 0xd5, 0x55, 0x1d, 0x89, - 0xcf, 0xea, 0x71, 0xa5, 0xc9, 0x2b, 0x59, 0xdd, 0x25, 0xf5, 0xe5, 0x2a, - 0x24, 0x57, 0x5a, 0x24, 0xcb, 0x11, 0xf3, 0x73, 0x9e, 0x50, 0x2f, 0x61, - 0x17, 0x98, 0xd3, 0x4d, 0x47, 0x4c, 0xce, 0xc4, 0xe1, 0x1f, 0xca, 0x45, - 0xff, 0x54, 0xe2, 0xda, 0x80, 0xec, 0xcd, 0x81, 0x24, 0x5b, 0xe2, 0x11, - 0x1b, 0xdb, 0x95, 0xa8, 0xc4, 0xf6, 0x63, 0x87, 0x54, 0x85, 0x32, 0x10, - 0x0a, 0x00, 0x9b, 0x03, 0xdc, 0xb2, 0x4b, 0xdb, 0x39, 0x80, 0x6b, 0x25, - 0x8b, 0xd5, 0x50, 0xfd, 0xfd, 0x97, 0x21, 0x4e, 0xf3, 0xf9, 0xb2, 0x2d, - 0xef, 0x24, 0xd7, 0xdb, 0x6e, 0x90, 0xbc, 0x3c, 0xf5, 0x27, 0x6c, 0xf9, - 0xca, 0x63, 0xf7, 0x58, 0x23, 0x9d, 0x68, 0xb8, 0xee, 0xe2, 0x46, 0x89, - 0x37, 0x92, 0xda, 0x5d, 0x86, 0x5a, 0xaf, 0x4d, 0xd6, 0xa2, 0x26, 0x6a, - 0x5d, 0x9a, 0x64, 0x06, 0x28, 0x65, 0x6c, 0xc4, 0xe4, 0x0b, 0x65, 0x3e, - 0x52, 0x22, 0x75, 0xc6, 0xfa, 0x9b, 0x56, 0x80, 0x30, 0xd6, 0x3a, 0x5c, - 0x44, 0x5a, 0x31, 0xa3, 0x79, 0x94, 0x26, 0x38, 0x1f, 0xaa, 0xaa, 0xf4, - 0xb8, 0x6a, 0x82, 0x13, 0x57, 0x01, 0x2b, 0xd7, 0xd3, 0xe6, 0x53, 0x06, - 0x5e, 0x19, 0xf1, 0x60, 0xb9, 0xcd, 0xe2, 0xbb, 0xab, 0x25, 0xff, 0x58, - 0x7c, 0x6f, 0xae, 0x9a, 0x9f, 0x0e, 0x02, 0x87, 0x77, 0x13, 0xf8, 0x53, - 0x2d, 0x10, 0x0e, 0xb0, 0x53, 0x56, 0x33, 0xa9, 0x20, 0xcb, 0xaa, 0xc8, - 0x1f, 0x9c, 0xc9, 0x89, 0xdf, 0x3b, 0x9c, 0xd5, 0xdb, 0x84, 0xe7, 0xd4, - 0x86, 0xb8, 0x1f, 0xec, 0x74, 0x8c, 0xb3, 0x57, 0xd5, 0x41, 0x7c, 0xfd, - 0xb0, 0xdf, 0x54, 0x32, 0xa0, 0x0f, 0xf4, 0x0d, 0xb1, 0xc9, 0x6a, 0x52, - 0x30, 0x19, 0xf2, 0x62, 0x85, 0xcf, 0x00, 0x39, 0x13, 0x9c, 0xe8, 0xe1, - 0x70, 0xff, 0x98, 0x0c, 0x89, 0xde, 0x5c, 0x41, 0x12, 0x29, 0x7b, 0xdb, - 0x66, 0x7e, 0xd2, 0x49, 0x72, 0xe2, 0x4e, 0x37, 0xed, 0x79, 0xaa, 0x81, - 0x76, 0x69, 0x93, 0x33, 0xfb, 0x81, 0x4b, 0x5c, 0xd9, 0x6a, 0xb4, 0xbb, - 0x45, 0xc0, 0xf7, 0x0e, 0x71, 0x0a, 0x88, 0xb1, 0xbd, 0x42, 0x5b, 0xd8, - 0x6b, 0xec, 0x6b, 0xc0, 0x86, 0xbe, 0xc2, 0xd9, 0x20, 0x53, 0x9a, 0xab, - 0x8e, 0x08, 0x87, 0xeb, 0x03, 0x69, 0x5b, 0x27, 0xa2, 0x36, 0x2e, 0xd6, - 0x9c, 0x1f, 0x3a, 0x51, 0xb1, 0x8f, 0xbc, 0x19, 0x4b, 0xac, 0x96, 0x1e, - 0xf9, 0xfd, 0x7b, 0x5a, 0x30, 0x18, 0x73, 0x53, 0x06, 0xe2, 0x9b, 0x90, - 0xd8, 0xca, 0x8c, 0xdd, 0xc9, 0xe3, 0x25, 0x60, 0xb2, 0x10, 0x9e, 0x59, - 0xf2, 0xcc, 0x48, 0x97, 0xb4, 0xae, 0xa0, 0x3a, 0x51, 0x13, 0x91, 0x61, - 0x7a, 0x98, 0x73, 0x2c, 0xf2, 0x11, 0xdd, 0x49, 0xef, 0x37, 0xd6, 0xd1, - 0x5a, 0x1f, 0xe8, 0x17, 0x95, 0x3d, 0x7e, 0x38, 0x89, 0x49, 0xaf, 0x8f, - 0x5a, 0x88, 0x81, 0x16, 0x9c, 0x90, 0xf7, 0xb8, 0x4d, 0xc3, 0x31, 0x2a, - 0x70, 0xdb, 0x5c, 0xd2, 0xc9, 0xcf, 0x93, 0x71, 0x18, 0x65, 0x52, 0x95, - 0xbd, 0xf2, 0x80, 0x35, 0x3b, 0xdb, 0x92, 0x58, 0xd2, 0xd4, 0x69, 0x06, - 0xc7, 0x60, 0xe2, 0x70, 0xca, 0xfc, 0x01, 0xf1, 0xb7, 0x22, 0xec, 0x15, - 0xbe, 0x4b, 0x53, 0x50, 0x64, 0xb9, 0x2d, 0x53, 0x2c, 0x29, 0xd1, 0x01, - 0x6b, 0x12, 0x16, 0xfa, 0x26, 0x0e, 0xe1, 0x0b, 0x04, 0xf6, 0x0c, 0x04, - 0xba, 0xd0, 0xb4, 0x2d, 0xc7, 0x65, 0x43, 0xd1, 0x5a, 0x9a, 0x20, 0x3d, - 0x28, 0x33, 0x55, 0x71, 0x01, 0x50, 0x30, 0x89, 0xc1, 0xc8, 0xeb, 0x8b, - 0x99, 0x0c, 0xf3, 0x06, 0xcd, 0x8a, 0xbf, 0x96, 0x91, 0x64, 0xf4, 0x49, - 0x1e, 0xf4, 0x4b, 0x5e, 0x30, 0xbe, 0xca, 0xac, 0xd7, 0xad, 0x33, 0xab, - 0x14, 0x58, 0xbc, 0x9e, 0x8e, 0xf8, 0x27, 0x09, 0x90, 0x07, 0xa9, 0x54, - 0xec, 0x2d, 0x62, 0x6f, 0x6d, 0x6c, 0x02, 0x7a, 0xa5, 0xe1, 0x7a, 0xf4, - 0xd8, 0x88, 0xe7, 0xf2, 0x38, 0xfc, 0xd5, 0x27, 0x2b, 0xaf, 0x4d, 0x0e, - 0xba, 0x53, 0xf5, 0xe0, 0xb8, 0x51, 0xe6, 0x91, 0x30, 0xc9, 0x33, 0x0a, - 0xd6, 0x5c, 0x49, 0xfc, 0x14, 0x65, 0x7c, 0x4d, 0x80, 0xb8, 0x59, 0x9b, - 0x45, 0xa2, 0x37, 0x62, 0x3a, 0xb0, 0x96, 0x4d, 0x64, 0x69, 0xad, 0xd9, - 0x93, 0x78, 0xdd, 0x95, 0x72, 0x7e, 0xfb, 0x6a, 0x8b, 0xe4, 0x2c, 0xcf, - 0xdd, 0xf0, 0xfd, 0x71, 0xaf, 0xad, 0x39, 0x5e, 0xf7, 0xd8, 0xec, 0xd2, - 0x56, 0x7a, 0x96, 0x82, 0x59, 0x38, 0xdd, 0xb3, 0x58, 0x1e, 0x98, 0x83, - 0x55, 0x4e, 0xa0, 0x81, 0xc0, 0x30, 0xff, 0x00, 0x34, 0xd4, 0x5c, 0xfe, - 0xa5, 0x1b, 0xc9, 0x32, 0x82, 0xee, 0x71, 0xbf, 0xe0, 0x75, 0xb9, 0x02, - 0x2b, 0x5d, 0xaf, 0x68, 0x65, 0xcf, 0xec, 0x15, 0x44, 0x40, 0xc3, 0x98, - 0x9c, 0x1a, 0xfd, 0x97, 0xf3, 0x8c, 0xf2, 0xfe, 0x3c, 0x07, 0xce, 0xe8, - 0x3a, 0xfb, 0x9d, 0xba, 0x04, 0x79, 0x0d, 0x86, 0xce, 0x04, 0x8d, 0x30, - 0xd1, 0xa5, 0x8a, 0xfe, 0x69, 0xab, 0xc7, 0xe7, 0x22, 0x78, 0xd2, 0x60, - 0xef, 0x29, 0xee, 0xc8, 0x6d, 0x6a, 0x06, 0x15, 0x35, 0x1f, 0x8e, 0xd9, - 0xf0, 0x9b, 0xe0, 0x34, 0x63, 0xfe, 0x5c, 0x54, 0x60, 0xbb, 0x54, 0xb8, - 0x2a, 0xad, 0x20, 0xe5, 0x4f, 0xe4, 0x1f, 0x56, 0x2d, 0x26, 0xbc, 0x60, - 0x40, 0x6f, 0x60, 0xa4, 0x22, 0xa8, 0xe4, 0x6f, 0x74, 0x73, 0x58, 0x8a, - 0x22, 0x08, 0x89, 0xbd, 0x63, 0x41, 0x01, 0xcd, 0x19, 0xc3, 0x49, 0x34, - 0xf0, 0x60, 0x6b, 0x46, 0xe1, 0xdd, 0x5c, 0x66, 0x61, 0x1e, 0x7d, 0xa4, - 0x80, 0xc1, 0x83, 0x5a, 0x26, 0x38, 0x44, 0x8e, 0xe8, 0x7a, 0x90, 0xf8, - 0xe7, 0xe7, 0x50, 0x38, 0x4b, 0x52, 0xbf, 0x40, 0x6b, 0x20, 0x08, 0xe9, - 0x20, 0xc1, 0x1e, 0x7b, 0xc8, 0x7a, 0xc6, 0xd2, 0xe4, 0x87, 0xe4, 0x6d, - 0x5a, 0x24, 0xae, 0x5c, 0xc3, 0x90, 0xc4, 0x94, 0x7d, 0xc2, 0xd0, 0x6c, - 0xea, 0xdb, 0xa4, 0x4e, 0x97, 0x14, 0x51, 0xaa, 0x99, 0x8b, 0x93, 0x65, - 0x30, 0x29, 0x6b, 0xf5, 0x32, 0x86, 0x97, 0x1d, 0x2f, 0x0b, 0x72, 0xd4, - 0x32, 0x6c, 0x6b, 0xaf, 0x8e, 0xcc, 0x9f, 0xb5, 0x15, 0x23, 0x9e, 0x83, - 0x30, 0x40, 0xd3, 0xd3, 0x95, 0x57, 0x7e, 0xae, 0x1e, 0x1e, 0x8e, 0x98, - 0xc8, 0xe4, 0x98, 0xff, 0x1a, 0xef, 0xee, 0xeb, 0x78, 0x60, 0xb3, 0x4d, - 0xb5, 0x1e, 0x3a, 0xc4, 0xdd, 0x9e, 0xf7, 0xf0, 0x3a, 0x77, 0xa1, 0x8a, - 0xc9, 0xa2, 0x17, 0x99, 0xf3, 0xe0, 0x9b, 0xc4, 0x6b, 0x8e, 0x8b, 0xcb, - 0xcd, 0xa1, 0x67, 0xd7, 0x51, 0x5f, 0x0f, 0x1c, 0xe4, 0xeb, 0xe2, 0x2c, - 0xc7, 0x69, 0xb4, 0xbc, 0x02, 0xf6, 0xd6, 0xbe, 0x88, 0x71, 0x08, 0x90, - 0xae, 0x12, 0x4a, 0x1c, 0x24, 0x1f, 0x07, 0xdd, 0xbd, 0xf6, 0xd9, 0x5a, - 0x5c, 0xad, 0xdc, 0x55, 0x0f, 0x81, 0x91, 0x72, 0x01, 0x22, 0x5e, 0xb8, - 0x8c, 0xf9, 0x36, 0x35, 0xae, 0x44, 0xb4, 0xa0, 0xb1, 0x37, 0x0c, 0xfd, - 0x84, 0xe3, 0x45, 0xa1, 0x7b, 0xba, 0x17, 0x6b, 0x28, 0x25, 0xd5, 0xa2, - 0xf0, 0x81, 0x6d, 0xa3, 0xfa, 0x88, 0x02, 0x44, 0x30, 0xd7, 0xd8, 0x9a, - 0x43, 0xc0, 0x62, 0x21, 0x64, 0x8b, 0xcf, 0x53, 0x06, 0xa8, 0xf7, 0xc3, - 0x0f, 0x7f, 0x4d, 0x2c, 0x60, 0x5c, 0x0c, 0x19, 0x8a, 0xc8, 0x42, 0x13, - 0x87, 0x1c, 0xf3, 0x1e, 0x54, 0xd6, 0x27, 0x09, 0x55, 0x48, 0x47, 0xa3, - 0x90, 0xb5, 0x35, 0x74, 0xfd, 0xd0, 0xe7, 0x49, 0xf3, 0xb2, 0xcb, 0x1d, - 0x26, 0x09, 0x82, 0xdd, 0xda, 0x89, 0xfe, 0x9d, 0x06, 0x04, 0x9b, 0xf4, - 0xe4, 0x65, 0xcb, 0xfb, 0xda, 0x89, 0xdb, 0x94, 0xc0, 0xbb, 0x97, 0xda, - 0xcf, 0xda, 0xf1, 0x9d, 0x0a, 0x21, 0xf1, 0xfd, 0xb2, 0x09, 0xbd, 0x57, - 0xf1, 0x81, 0x14, 0x86, 0xb6, 0xff, 0x04, 0xcf, 0x3a, 0xfc, 0xae, 0x25, - 0xaa, 0xa3, 0x4f, 0xa0, 0xd3, 0xe9, 0x31, 0xd1, 0x38, 0x01, 0x0e, 0x4e, - 0x77, 0x15, 0xdc, 0x2e, 0x94, 0x0c, 0x31, 0x97, 0x47, 0x1a, 0x5b, 0xc8, - 0x66, 0xbb, 0x79, 0x3d, 0x5c, 0x63, 0x46, 0x1c, 0xd2, 0xb3, 0x39, 0x42, - 0xb7, 0x8c, 0x22, 0xa3, 0xc0, 0x67, 0x0b, 0xe8, 0xf9, 0x66, 0xb1, 0xb8, - 0xd8, 0x38, 0x1e, 0x76, 0xce, 0x80, 0xc7, 0xe3, 0xa1, 0x39, 0x5f, 0xe1, - 0x38, 0xab, 0xa1, 0xc6, 0xe8, 0xee, 0x41, 0x75, 0x32, 0x56, 0x8a, 0x3b, - 0xc1, 0x0b, 0xc1, 0x1f, 0x56, 0x57, 0x63, 0x59, 0x98, 0x44, 0x1e, 0x4c, - 0x1f, 0x4a, 0x75, 0x29, 0xd5, 0xe7, 0x69, 0xf8, 0x06, 0xb4, 0xff, 0x0e, - 0x38, 0xda, 0x3a, 0x2f, 0x77, 0xff, 0xee, 0x35, 0x9b, 0xf5, 0xc5, 0x6e, - 0xba, 0x45, 0x79, 0x95, 0x9d, 0xbe, 0x5e, 0x69, 0x63, 0x28, 0x61, 0xa3, - 0x60, 0x4a, 0xb8, 0x91, 0x91, 0xa3, 0xac, 0xca, 0x5c, 0x54, 0x19, 0x0e, - 0x7e, 0x83, 0xf4, 0xf7, 0x52, 0x36, 0x27, 0xc9, 0x43, 0xf0, 0x94, 0x4b, - 0xc4, 0xbc, 0x7a, 0x94, 0x5f, 0xe7, 0x70, 0x23, 0x3c, 0x60, 0xac, 0x75, - 0xb6, 0x9b, 0x43, 0x14, 0x59, 0xe3, 0xf9, 0x32, 0x9d, 0xf9, 0x94, 0xbe, - 0x6b, 0xaa, 0x14, 0x9e, 0x0c, 0xd2, 0x72, 0x9f, 0x2e, 0x8e, 0x52, 0xe4, - 0xcf, 0x0a, 0x5a, 0x10, 0x41, 0x20, 0xa2, 0x06, 0x3e, 0x8d, 0x09, 0x1e, - 0xf8, 0xec, 0x0b, 0x52, 0xb7, 0x55, 0x00, 0xec, 0x3e, 0x78, 0xbf, 0xab, - 0xf7, 0xd8, 0xf7, 0x10, 0x7a, 0xea, 0xe5, 0x4e, 0x84, 0x43, 0xb2, 0x29, - 0x77, 0xfb, 0xcf, 0x04, 0x5f, 0x7b, 0xfe, 0x7d, 0xd3, 0x4f, 0xfa, 0xde, - 0x19, 0x75, 0x82, 0x17, 0xb9, 0xe6, 0x4a, 0xe0, 0x61, 0xd0, 0x5e, 0x4b, - 0x96, 0x0c, 0xd8, 0xd0, 0x2b, 0x72, 0xc5, 0xf3, 0xd6, 0xbe, 0xaa, 0xf5, - 0xd6, 0x56, 0xae, 0xbb, 0x39, 0x98, 0x98, 0x87, 0x42, 0xc9, 0x1f, 0xd2, - 0x50, 0x4e, 0x67, 0xb7, 0x17, 0x9a, 0xfe, 0x0e, 0xd9, 0xc0, 0xdc, 0x6f, - 0x52, 0xc4, 0x27, 0xec, 0x57, 0x30, 0xff, 0x41, 0x3c, 0x5a, 0x7f, 0x73, - 0x9c, 0x32, 0x48, 0x4b, 0x33, 0x9d, 0x9b, 0x4f, 0xc7, 0x68, 0x1b, 0x16, - 0x79, 0x3d, 0x5b, 0xeb, 0x08, 0x3f, 0xe4, 0xc3, 0x6e, 0x14, 0xc3, 0x5c, - 0x65, 0x25, 0x20, 0x04, 0x37, 0xcb, 0x4a, 0x71, 0x45, 0xd5, 0xd9, 0x1b, - 0xed, 0xbc, 0xd9, 0x6a, 0x5f, 0x97, 0x4a, 0x3a, 0xec, 0xdf, 0x47, 0xc1, - 0x32, 0x6e, 0x0d, 0xa5, 0xa2, 0x6a, 0x9e, 0xbf, 0xc5, 0x41, 0x91, 0x1b, - 0x70, 0xe1, 0x2c, 0x72, 0x0d, 0xc8, 0x1f, 0xc5, 0x1a, 0xea, 0x27, 0x1d, - 0x2b, 0x9d, 0x4d, 0xdc, 0x34, 0x82, 0x65, 0x28, 0xb1, 0x0b, 0xba, 0xd4, - 0x8e, 0x50, 0x0b, 0xf3, 0x44, 0xc2, 0x24, 0x64, 0xd2, 0xc9, 0xaf, 0x21, - 0x71, 0x18, 0xa9, 0x4a, 0x7d, 0xea, 0x38, 0xdb, 0x9f, 0xda, 0x4d, 0x42, - 0xf3, 0xea, 0x12, 0x00, 0xd2, 0x25, 0x61, 0x76, 0x76, 0x7b, 0x7e, 0x5f, - 0x91, 0x40, 0xa7, 0xf2, 0x35, 0xc6, 0xb8, 0x1d, 0xdc, 0xe6, 0xfc, 0x9d, - 0x4c, 0xdd, 0x3a, 0xce, 0x30, 0x7b, 0xda, 0xd2, 0xec, 0xe7, 0x8a, 0x4e, - 0xb6, 0x4d, 0xa6, 0xeb, 0xcc, 0x70, 0x33, 0x9d, 0xab, 0x2b, 0x68, 0xfd, - 0xf0, 0xa1, 0x44, 0xab, 0xd5, 0xe9, 0x7c, 0xe3, 0x76, 0x21, 0x9f, 0x88, - 0x8f, 0x0d, 0xed, 0xad, 0x48, 0xa7, 0x79, 0x1e, 0xd4, 0x9c, 0x35, 0xa3, - 0x67, 0xdb, 0x39, 0x6f, 0x89, 0xe4, 0xbc, 0xc9, 0x15, 0xdd, 0x8d, 0xe1, - 0x74, 0xf8, 0xca, 0x46, 0x80, 0x71, 0xea, 0x05, 0xc2, 0x9b, 0xf9, 0xe2, - 0x76, 0xf9, 0x03, 0xd5, 0x8e, 0x4e, 0xcc, 0xe8, 0xa5, 0x1a, 0xd0, 0x2b, - 0xb1, 0xd2, 0x9c, 0x61, 0x1b, 0x2b, 0x5d, 0xaf, 0x1a, 0x20, 0xad, 0x05, - 0x76, 0xf8, 0x24, 0xfe, 0x1e, 0x87, 0xed, 0x14, 0xdf, 0xfb, 0xd2, 0x12, - 0x9b, 0xdf, 0x0f, 0x6f, 0x89, 0x41, 0x9b, 0x57, 0x98, 0x06, 0x48, 0xf0, - 0xb3, 0x50, 0xf3, 0x4e, 0x86, 0x1e, 0x85, 0x45, 0x94, 0x66, 0x4a, 0xc6, - 0xc7, 0x02, 0x5f, 0xb2, 0xdd, 0x7e, 0x7d, 0x2c, 0xf0, 0x97, 0xd5, 0x3a, - 0x77, 0x1b, 0x99, 0x33, 0x7d, 0x5b, 0x8b, 0x51, 0x78, 0x86, 0xf2, 0x21, - 0x1a, 0x4f, 0xfc, 0x00, 0x6c, 0xa0, 0x0c, 0x3f, 0x53, 0xcd, 0x16, 0xe2, - 0x10, 0x6f, 0x76, 0x09, 0xba, 0xfe, 0x33, 0xf2, 0x78, 0xf6, 0x4f, 0x13, - 0xbe, 0x47, 0x38, 0xde, 0xe8, 0xc6, 0x53, 0x8e, 0x9b, 0x9c, 0x33, 0xf4, - 0x5e, 0x0e, 0xe2, 0x4f, 0x57, 0xdf, 0xef, 0x4e, 0x12, 0x2f, 0x89, 0x49, - 0xc8, 0x8d, 0xc1, 0x3a, 0x07, 0xae, 0xb8, 0x3e, 0xd5, 0x1b, 0x4a, 0x5a, - 0xb9, 0x14, 0x63, 0x53, 0x06, 0x3d, 0x70, 0x59, 0x69, 0xc1, 0x4d, 0x3b, - 0x1c, 0xd2, 0x8a, 0x61, 0x9c, 0x91, 0xbe, 0xbc, 0xf8, 0x43, 0x7b, 0xad, - 0x35, 0xaf, 0x57, 0xc1, 0xbf, 0xdb, 0x38, 0xec, 0x8e, 0x21, 0x16, 0x9f, - 0x72, 0xdf, 0xb3, 0x6b, 0xc2, 0x1f, 0x34, 0xbe, 0x69, 0x74, 0x5b, 0x02, - 0x38, 0xb2, 0x20, 0xf0, 0x0d, 0x00, 0x3a, 0x98, 0xcf, 0x7d, 0x02, 0xd3, - 0x95, 0xfa, 0xef, 0xfd, 0x42, 0x78, 0x8b, 0xbe, 0x45, 0xfa, 0x16, 0x13, - 0x3c, 0x60, 0x48, 0x43, 0xed, 0xd6, 0xa1, 0xab, 0x68, 0x2c, 0x78, 0x9e, - 0x50, 0x4e, 0x97, 0x27, 0x0b, 0xd0, 0x86, 0x33, 0xa3, 0xf7, 0xa0, 0xd2, - 0x8d, 0x5d, 0x90, 0xbd, 0x40, 0x28, 0x7c, 0x35, 0xf6, 0x65, 0x50, 0x96, - 0x30, 0x4a, 0x28, 0xb2, 0x31, 0xda, 0x58, 0xc8, 0x6c, 0x9c, 0xd0, 0x96, - 0x94, 0x17, 0x03, 0xb6, 0xc9, 0xd5, 0x3d, 0x31, 0xf1, 0xc5, 0x0d, 0xa4, - 0xa0, 0x2a, 0x77, 0xa0, 0x96, 0x6c, 0x3f, 0xd8, 0x15, 0x9a, 0xd1, 0x5b, - 0x46, 0xf1, 0x30, 0x95, 0x50, 0x43, 0xd2, 0x42, 0xf3, 0x29, 0xf4, 0x05, - 0x82, 0x3b, 0xb8, 0x73, 0x52, 0xdc, 0x4f, 0xe8, 0xae, 0xa1, 0xab, 0x72, - 0xa0, 0xc9, 0x16, 0x62, 0x00, 0x5b, 0x80, 0x99, 0x89, 0x65, 0xdf, 0x41, - 0x0f, 0xd4, 0x10, 0x71, 0xbc, 0x2a, 0x71, 0x1e, 0x0d, 0x87, 0x2b, 0x1f, - 0xac, 0x77, 0x56, 0x5b, 0xc7, 0xc9, 0x2f, 0x49, 0xbc, 0xd3, 0x88, 0xad, - 0x7d, 0x59, 0x11, 0x62, 0x91, 0xf0, 0xb3, 0x42, 0x29, 0x1e, 0x2d, 0x8e, - 0x9d, 0x28, 0xd4, 0xb1, 0x58, 0x03, 0x0c, 0x4d, 0x0a, 0x12, 0x3b, 0xbf, - 0x55, 0x57, 0xf1, 0xc1, 0xfc, 0x4d, 0x53, 0x69, 0x0a, 0x09, 0x8b, 0x88, - 0xb1, 0xe6, 0xe9, 0x40, 0xe5, 0xbc, 0x87, 0x0d, 0x34, 0x1d, 0xe0, 0x95, - 0xe4, 0xb1, 0xc4, 0x10, 0xfa, 0x91, 0xdb, 0xb8, 0xbc, 0x0f, 0xfe, 0xc3, - 0x68, 0x9c, 0xe3, 0x7e, 0xdf, 0x49, 0x08, 0x69, 0x8e, 0x23, 0x44, 0x7a, - 0xbd, 0xb8, 0x6a, 0xbd, 0xd9, 0x05, 0x04, 0x17, 0xa3, 0xb6, 0xe0, 0x5c, - 0xf6, 0x5b, 0x22, 0x25, 0x23, 0x6c, 0x67, 0xa9, 0x50, 0xba, 0xad, 0x5a, - 0x91, 0xf1, 0xdd, 0x38, 0x36, 0xb0, 0xa8, 0xe9, 0x34, 0xf7, 0x32, 0x36, - 0x04, 0x20, 0x37, 0xdf, 0x15, 0x26, 0xc2, 0x42, 0xc4, 0xe0, 0xa8, 0xee, - 0x99, 0x1b, 0xe8, 0xcb, 0x60, 0xa7, 0x81, 0xfd, 0xd8, 0xd3, 0xd1, 0xa8, - 0xe6, 0xa6, 0xa6, 0x2c, 0xab, 0x81, 0xe6, 0x24, 0x2b, 0x51, 0x35, 0xa0, - 0x82, 0x0e, 0x3a, 0x36, 0x44, 0x10, 0x0e, 0x97, 0x7f, 0x0d, 0xf3, 0x5f, - 0xce, 0x63, 0xd3, 0x81, 0x20, 0x85, 0x62, 0xe9, 0x5d, 0x98, 0x13, 0xcd, - 0x07, 0x89, 0x9a, 0x15, 0x60, 0x34, 0xe9, 0x7b, 0xac, 0x27, 0x5c, 0x77, - 0x56, 0xb2, 0x38, 0xbd, 0xa5, 0xf9, 0x1b, 0x91, 0x45, 0xea, 0xef, 0x90, - 0x44, 0xff, 0x28, 0x12, 0x7e, 0xcc, 0x4c, 0x43, 0x5d, 0x8d, 0xc6, 0xa2, - 0xe0, 0x80, 0x4d, 0x44, 0x92, 0x27, 0x9b, 0xe8, 0x5b, 0x0b, 0x6d, 0x15, - 0x6b, 0xcc, 0x97, 0xa5, 0x0a, 0x29, 0x9c, 0x35, 0x47, 0xad, 0x3b, 0x59, - 0xb4, 0x3e, 0x3b, 0x4a, 0xc7, 0xe9, 0x2b, 0xee, 0x66, 0xb0, 0x6e, 0xd4, - 0x0d, 0xd8, 0x56, 0xdc, 0xdf, 0x67, 0x7c, 0xf8, 0x65, 0xa8, 0xfd, 0x58, - 0x8b, 0x7a, 0xa9, 0xdf, 0x87, 0x67, 0x3e, 0xfb, 0xce, 0x0b, 0x48, 0x08, - 0x3a, 0xe1, 0x43, 0xb3, 0x8d, 0x98, 0x4e, 0x0f, 0xc6, 0x80, 0x7c, 0x5b, - 0x04, 0xb9, 0xa1, 0x89, 0x96, 0xeb, 0x4c, 0xe3, 0x29, 0xce, 0x96, 0xd9, - 0xe7, 0xa3, 0x1f, 0x48, 0x7f, 0x30, 0x00, 0xb0, 0x31, 0x9e, 0x9d, 0xda, - 0xd9, 0x26, 0xb4, 0x74, 0x2b, 0xf4, 0xf1, 0x27, 0xc5, 0x79, 0xf0, 0xdb, - 0xf7, 0x44, 0xaf, 0x98, 0x28, 0x2e, 0x97, 0x75, 0x32, 0x5e, 0x02, 0xc2, - 0xd0, 0x2d, 0xa7, 0x79, 0x5e, 0x28, 0xdd, 0xb6, 0xec, 0x88, 0xad, 0xed, - 0xf4, 0x5f, 0x00, 0x68, 0xd2, 0xea, 0x2c, 0xd1, 0x22, 0x25, 0x61, 0x0f, - 0x48, 0xd4, 0x9a, 0x4c, 0x2c, 0xb9, 0x2c, 0xec, 0x18, 0x6c, 0x9f, 0x0c, - 0x08, 0x8f, 0x54, 0xc1, 0xb4, 0x83, 0xe1, 0xa2, 0x3a, 0x60, 0x52, 0x83, - 0x94, 0xd3, 0xd5, 0x8f, 0x1e, 0xcc, 0x15, 0x4c, 0xd2, 0x11, 0x3d, 0x3e, - 0x95, 0x2e, 0xc8, 0xee, 0x58, 0x94, 0xc1, 0x07, 0x8c, 0x23, 0x12, 0xd2, - 0x7b, 0xdc, 0x67, 0x7e, 0x3f, 0x27, 0x86, 0x79, 0x5f, 0x0a, 0x0a, 0x8f, - 0x26, 0x7f, 0xe6, 0xef, 0x56, 0xa3, 0x29, 0x95, 0x99, 0x22, 0xf5, 0x55, - 0x1a, 0xb7, 0xd9, 0x44, 0x99, 0x9a, 0x7c, 0x09, 0x2c, 0xa2, 0xb9, 0x6b, - 0x8c, 0x19, 0xe3, 0x0f, 0x43, 0x10, 0x3e, 0xec, 0xfc, 0x12, 0x2d, 0x21, - 0x29, 0x47, 0x5d, 0x85, 0xaf, 0xb5, 0xfa, 0xb7, 0xa9, 0x96, 0x7c, 0x66, - 0xd9, 0x2f, 0x60, 0x2a, 0x61, 0x61, 0xee, 0x2d, 0x05, 0x11, 0xe1, 0x92, - 0x7a, 0x1e, 0xbf, 0xdb, 0xe1, 0x0c, 0xcf, 0x14, 0x73, 0xd1, 0x14, 0xd2, - 0x42, 0xd7, 0x3c, 0x8c, 0x0c, 0xa6, 0x76, 0xdf, 0x5f, 0xff, 0xc0, 0x0b, - 0xd0, 0x25, 0x2e, 0xaa, 0x82, 0xd8, 0x51, 0x4c, 0xba, 0xc4, 0x46, 0x0d, - 0x1d, 0x86, 0x72, 0x3b, 0x51, 0x4d, 0xb1, 0x80, 0x4c, 0x4d, 0xc1, 0xa3, - 0xbe, 0x6f, 0xcd, 0xfe, 0xd3, 0xa1, 0xfd, 0x62, 0x45, 0x07, 0x32, 0x72, - 0xcf, 0x75, 0x84, 0x6d, 0x6a, 0x28, 0xa2, 0x42, 0xfb, 0x0c, 0xdb, 0xa9, - 0x8e, 0xa6, 0x7f, 0x49, 0xcc, 0xcf, 0xd7, 0x2b, 0x93, 0x41, 0x0f, 0x4e, - 0x13, 0x84, 0x83, 0x22, 0x36, 0xd1, 0xce, 0x93, 0x2a, 0xbb, 0x72, 0xda, - 0x8a, 0x22, 0x1a, 0x85, 0x33, 0xc2, 0x23, 0xf1, 0x26, 0xc1, 0x2a, 0xf1, - 0x0b, 0xd4, 0x23, 0x58, 0xaa, 0x41, 0x52, 0x5d, 0x4a, 0x2e, 0x73, 0x32, - 0x06, 0xb1, 0x7d, 0x01, 0x60, 0x38, 0xd9, 0x25, 0xcc, 0x85, 0xf0, 0x18, - 0xa0, 0x5e, 0x57, 0xa6, 0x79, 0xe8, 0x47, 0xef, 0x88, 0xcf, 0x80, 0x3e, - 0xab, 0x5f, 0x3d, 0xb7, 0x64, 0xd4, 0xb7, 0xae, 0xf6, 0xab, 0x3c, 0xff, - 0xc7, 0x84, 0xae, 0x1e, 0x27, 0x4a, 0xa0, 0xcf, 0x64, 0xa7, 0x51, 0x22, - 0x36, 0x69, 0x9c, 0x79, 0x10, 0x5b, 0x3b, 0xc4, 0xa4, 0xa3, 0x86, 0xf2, - 0x3e, 0x57, 0x2b, 0xe3, 0x82, 0x4f, 0xfb, 0xce, 0xef, 0xbe, 0xf1, 0xe2, - 0xae, 0x93, 0xdd, 0xf0, 0x38, 0xba, 0x21, 0xbc, 0xdc, 0x6e, 0x30, 0xf4, - 0x13, 0xb6, 0x73, 0x8a, 0x85, 0xa4, 0xf3, 0x86, 0x7b, 0xe7, 0x6e, 0x67, - 0xf6, 0x44, 0x98, 0xcb, 0xe4, 0xb4, 0xb1, 0x72, 0xbb, 0x05, 0x22, 0x1b, - 0x03, 0x54, 0x44, 0xca, 0x0b, 0xf5, 0xf0, 0xfc, 0x68, 0xab, 0xcb, 0xe5, - 0xa6, 0x00, 0xf2, 0x30, 0x38, 0xa8, 0x66, 0x0a, 0xaf, 0xa3, 0xd0, 0x36, - 0x05, 0xc2, 0x34, 0x3e, 0xb9, 0x7d, 0x27, 0x7c, 0xb8, 0x05, 0xce, 0x17, - 0xa6, 0x91, 0x68, 0x88, 0x1c, 0x45, 0x74, 0x2e, 0x6f, 0x90, 0x82, 0x58, - 0x62, 0x99, 0x2e, 0x2d, 0x3c, 0x5b, 0x32, 0xca, 0xaf, 0x6e, 0x5b, 0xb5, - 0x36, 0xd7, 0x0b, 0xd4, 0xfc, 0x5d, 0xf4, 0x64, 0x5b, 0x8e, 0xc2, 0xf1, - 0xfb, 0xb6, 0x36, 0x37, 0x2a, 0xae, 0x14, 0x80, 0xba, 0x6f, 0x4b, 0x0e, - 0x10, 0x90, 0x80, 0x6a, 0x45, 0x9e, 0x5f, 0x5f, 0x29, 0xc5, 0xe3, 0xe1, - 0xf1, 0xfa, 0xe9, 0xa8, 0x72, 0xda, 0x5f, 0x57, 0xb1, 0x58, 0xcf, 0x72, - 0x95, 0x64, 0x81, 0xc9, 0x1b, 0xb6, 0x8a, 0xc6, 0x36, 0xa2, 0x16, 0x6f, - 0xfe, 0x0f, 0x47, 0x97, 0x1c, 0x50, 0xee, 0x5d, 0x4c, 0x37, 0xd6, 0xaa, - 0xb7, 0xe8, 0xee, 0xe6, 0x08, 0xc7, 0x07, 0xc6, 0xa5, 0x4a, 0xc8, 0xef, - 0x7c, 0x61, 0x78, 0x99, 0x42, 0x86, 0x29, 0x05, 0xfd, 0xcb, 0x08, 0xf3, - 0x7f, 0x14, 0x5b, 0xab, 0x74, 0xf9, 0xa3, 0x77, 0xea, 0x64, 0x61, 0x7c, - 0x9c, 0xd1, 0xb3, 0x54, 0xcd, 0x21, 0x32, 0x66, 0x56, 0x37, 0x44, 0xa8, - 0x37, 0xeb, 0x49, 0x86, 0x59, 0x4e, 0xa2, 0x23, 0x35, 0xcc, 0xe8, 0x27, - 0x60, 0xb6, 0xa0, 0xcb, 0x5b, 0xdb, 0x74, 0xee, 0x32, 0x25, 0xa4, 0x72, - 0xed, 0x79, 0xe2, 0xa3, 0xaf, 0xf7, 0x22, 0xab, 0xb3, 0xdd, 0xd1, 0x98, - 0xfa, 0x14, 0x33, 0xa6, 0xd3, 0xc0, 0xf2, 0x4a, 0x37, 0x22, 0xbf, 0x58, - 0xd6, 0x36, 0x94, 0xfd, 0x6f, 0x8f, 0xd3, 0xd7, 0x8f, 0x45, 0xb0, 0xa0, - 0x83, 0xbd, 0x95, 0x39, 0x8f, 0xfe, 0x7c, 0x95, 0x87, 0xc2, 0x83, 0xdd, - 0x1c, 0x9a, 0x57, 0x66, 0xc9, 0x33, 0xc9, 0x58, 0x65, 0xec, 0x2d, 0x34, - 0xc2, 0x90, 0xff, 0xdc, 0x65, 0x32, 0x88, 0x57, 0x4a, 0xe8, 0x03, 0x66, - 0x36, 0x3b, 0x20, 0xa0, 0x3a, 0xa7, 0x73, 0x31, 0x3e, 0x17, 0x7c, 0x02, - 0x6c, 0x04, 0x7a, 0xb3, 0xd8, 0x6b, 0x56, 0x54, 0x2f, 0x52, 0xf9, 0x89, - 0x32, 0xe4, 0xd9, 0x5e, 0xf8, 0xff, 0xce, 0xa7, 0x56, 0xbf, 0x7d, 0xc6, - 0x99, 0x74, 0xd3, 0xcd, 0xd2, 0x1e, 0x82, 0xdd, 0x51, 0x8e, 0x1a, 0x0a, - 0x28, 0x1f, 0xbb, 0x00, 0x99, 0xb9, 0xe8, 0xb7, 0x4c, 0x14, 0xd2, 0x21, - 0x85, 0xc5, 0x29, 0x3f, 0xa5, 0x3a, 0x68, 0xae, 0xb3, 0xe2, 0x46, 0xdb, - 0x90, 0xe8, 0x3a, 0x68, 0x1f, 0x82, 0xe0, 0x55, 0x33, 0x66, 0x32, 0xd4, - 0xe6, 0x78, 0x34, 0x9a, 0x0d, 0x61, 0xc9, 0xcc, 0x77, 0x80, 0xd7, 0xff, - 0xb4, 0xa8, 0x6e, 0xc3, 0x3f, 0xb6, 0x1a, 0x5b, 0xec, 0x4f, 0x32, 0x84, - 0x95, 0x5d, 0xa0, 0xa9, 0x0d, 0x71, 0x04, 0x39, 0x39, 0xdc, 0x00, 0xd3, - 0x09, 0x29, 0x7b, 0xba, 0xfe, 0x99, 0x96, 0x64, 0x6f, 0x67, 0xc9, 0x71, - 0x95, 0xe8, 0xf2, 0x2c, 0x89, 0xc4, 0xb1, 0xee, 0x1d, 0x25, 0x7c, 0x4d, - 0xa4, 0x62, 0xea, 0x74, 0xab, 0x54, 0x3f, 0x9f, 0x61, 0xbc, 0xc0, 0x18, - 0x8e, 0x28, 0xe5, 0xc6, 0x44, 0x53, 0x21, 0x20, 0x1f, 0x92, 0x29, 0x7e, - 0x92, 0xed, 0xa9, 0x04, 0x40, 0x11, 0x9e, 0x0b, 0x93, 0xaa, 0x35, 0x99, - 0xba, 0x6f, 0xda, 0x11, 0xe8, 0x6d, 0xd5, 0x20, 0x4b, 0x1d, 0x09, 0x1e, - 0x07, 0xd7, 0x57, 0xac, 0x3e, 0x3f, 0xcc, 0x6d, 0xa2, 0x30, 0x82, 0x2f, - 0x3f, 0xf0, 0x63, 0xf9, 0x3b, 0x4b, 0x50, 0x7f, 0x60, 0xe1, 0xf7, 0xc3, - 0xe3, 0x43, 0x6c, 0x3d, 0x33, 0x0b, 0xb4, 0x0e, 0xff, 0x7b, 0x4a, 0xa9, - 0xab, 0x62, 0x08, 0xb6, 0xcf, 0x99, 0x5a, 0x9c, 0x91, 0xca, 0x5a, 0xce, - 0xf9, 0x22, 0xd0, 0x11, 0xd0, 0x84, 0x3d, 0x62, 0x63, 0x45, 0x49, 0x94, - 0x38, 0x81, 0x26, 0x89, 0xf7, 0xbe, 0xaf, 0x64, 0x06, 0x75, 0xc6, 0x0b, - 0x07, 0x57, 0xa7, 0x70, 0xb9, 0xc2, 0x7e, 0xac, 0x01, 0x83, 0x10, 0x9e, - 0xcf, 0xce, 0x85, 0xcc, 0x21, 0xf0, 0xc2, 0xfd, 0x23, 0xe9, 0xf4, 0xc9, - 0xe0, 0x6b, 0xa9, 0x83, 0x1f, 0x0a, 0x65, 0xa0, 0x8c, 0x0b, 0xd2, 0xc6, - 0x7d, 0xbe, 0xf2, 0x75, 0x66, 0xdf, 0x90, 0xc2, 0xe3, 0x8d, 0x7f, 0x8a, - 0xd7, 0xd3, 0xa1, 0x11, 0xbf, 0xe6, 0xeb, 0x50, 0xfd, 0xa3, 0x6d, 0x9c, - 0xa1, 0xc6, 0xff, 0xba, 0x10, 0x46, 0xe0, 0x94, 0xb0, 0x4d, 0x64, 0xe9, - 0x67, 0x82, 0xff, 0x53, 0x76, 0xc7, 0xd7, 0x45, 0x22, 0xe7, 0x01, 0xb5, - 0x62, 0x90, 0x1a, 0x26, 0x9a, 0x71, 0x15, 0x64, 0x74, 0x7d, 0x43, 0xa7, - 0xd8, 0x45, 0xe9, 0x37, 0x02, 0x67, 0x83, 0xad, 0xf5, 0xf0, 0x2e, 0xe3, - 0x41, 0x1f, 0x38, 0x0c, 0xda, 0xdc, 0x58, 0x48, 0x3c, 0x62, 0x4b, 0x95, - 0x50, 0xe5, 0xc5, 0x88, 0x37, 0x47, 0x42, 0xa5, 0x0c, 0xfd, 0xc1, 0x19, - 0x84, 0x4f, 0x83, 0x8d, 0x38, 0x86, 0xbe, 0xfe, 0x24, 0xac, 0x1a, 0x86, - 0x1b, 0x80, 0xa0, 0x62, 0x02, 0x43, 0xcc, 0x07, 0x0a, 0x41, 0x24, 0x92, - 0xea, 0x61, 0x5c, 0x2f, 0x0d, 0x6e, 0xe9, 0x5f, 0x92, 0x0c, 0x20, 0x6c, - 0x4d, 0x1c, 0x95, 0x88, 0xa1, 0xdd, 0xfa, 0xa7, 0xe7, 0x9a, 0xa3, 0x3b, - 0xea, 0x96, 0xcc, 0x7e, 0x08, 0xe5, 0x58, 0x9c, 0x89, 0xfb, 0x60, 0x70, - 0x8a, 0xad, 0x6b, 0xf6, 0xd7, 0xa1, 0x5d, 0x2c, 0xa3, 0x3f, 0xc6, 0xf6, - 0xa0, 0xea, 0xa5, 0xee, 0xb4, 0xfb, 0xa9, 0x88, 0x70, 0xfe, 0x35, 0xfd, - 0x5a, 0xe1, 0x0a, 0x79, 0x3b, 0x5b, 0x95, 0x7c, 0xc3, 0xde, 0x0c, 0x0c, - 0x0e, 0xd0, 0xab, 0x57, 0xd4, 0x26, 0x4d, 0x23, 0xc0, 0x37, 0x0b, 0xe0, - 0x4a, 0xd2, 0xef, 0x3d, 0xe2, 0x5e, 0xc0, 0x9d, 0x49, 0x2c, 0x94, 0x8e, - 0x76, 0x59, 0xfa, 0x11, 0x55, 0x0e, 0x24, 0x1b, 0x4e, 0x98, 0x56, 0x7f, - 0x22, 0x2b, 0x70, 0xbf, 0x9c, 0xa5, 0xd8, 0x6b, 0x6f, 0x6d, 0x49, 0x9b, - 0xce, 0xb6, 0x6a, 0xc0, 0xc0, 0xcf, 0x5d, 0x51, 0x05, 0x6a, 0x83, 0xe5, - 0x96, 0x83, 0x60, 0xb8, 0xf8, 0xaa, 0xa2, 0x0c, 0x40, 0x6a, 0x30, 0x9d, - 0x02, 0x2f, 0x87, 0xfa, 0x3f, 0x77, 0x3f, 0x22, 0x6f, 0xca, 0x95, 0x15, - 0xb4, 0x14, 0x4b, 0xbd, 0xc4, 0x93, 0xc1, 0x04, 0x91, 0x76, 0xb8, 0x69, - 0xaa, 0x54, 0xc3, 0x67, 0x64, 0xe0, 0xe5, 0xff, 0x64, 0x6c, 0x54, 0x3d, - 0x77, 0xed, 0x3f, 0x23, 0x52, 0xd7, 0x1f, 0x44, 0xc3, 0x7a, 0xc5, 0x89, - 0x60, 0x8f, 0xbb, 0x75, 0xd3, 0xcd, 0x2c, 0x83, 0x84, 0x38, 0x6a, 0xe0, - 0xfb, 0x47, 0xc6, 0xe2, 0x4e, 0x9a, 0x00, 0x9b, 0xe6, 0xbe, 0xf6, 0x2f, - 0xa7, 0x7f, 0x7f, 0xa2, 0x54, 0x19, 0x92, 0xa8, 0x41, 0x73, 0xe0, 0x80, - 0x17, 0x8b, 0x49, 0xef, 0x1a, 0xb6, 0xea, 0x77, 0x5e, 0xe5, 0x2c, 0xe3, - 0xf4, 0x35, 0xff, 0x5f, 0x07, 0x32, 0x5a, 0xf0, 0x51, 0x08, 0x58, 0x7b, - 0xce, 0x87, 0xac, 0x25, 0x73, 0xca, 0x93, 0x16, 0x77, 0x19, 0x20, 0x45, - 0xbe, 0x3c, 0xb8, 0x89, 0xcf, 0x11, 0x8a, 0xca, 0xf7, 0x85, 0xc9, 0x5d, - 0xa4, 0xb0, 0xab, 0x22, 0xcb, 0x60, 0xa7, 0xdb, 0xd5, 0xcd, 0x4a, 0x88, - 0x78, 0x92, 0x2c, 0xe2, 0x49, 0x59, 0x66, 0x5a, 0x63, 0xb2, 0x51, 0x93, - 0x29, 0x0c, 0x37, 0x0e, 0x9b, 0xb4, 0xe6, 0xdd, 0xec, 0xd2, 0xd0, 0xcb, - 0xe2, 0xa9, 0xc4, 0x08, 0xfc, 0xcd, 0x4f, 0x55, 0x65, 0xb4, 0xb1, 0x68, - 0x05, 0xb4, 0x0d, 0x7e, 0x01, 0x7f, 0x29, 0x5a, 0x8d, 0x4a, 0xba, 0x81, - 0xf2, 0x2c, 0x94, 0x83, 0xa9, 0x23, 0x65, 0x5a, 0x12, 0xa1, 0x6b, 0xa3, - 0xea, 0x4d, 0xa4, 0xfc, 0x5b, 0x99, 0xa0, 0x02, 0x54, 0xe4, 0x65, 0xc4, - 0x73, 0xb1, 0x1f, 0xc0, 0xa9, 0x84, 0x60, 0x1a, 0xf3, 0x1e, 0x1a, 0x79, - 0x59, 0x6a, 0x2a, 0xa4, 0x0c, 0x74, 0xa5, 0x4e, 0x4f, 0xdb, 0xbc, 0x74, - 0xc2, 0xda, 0x68, 0x27, 0x18, 0x8a, 0xcd, 0x4d, 0xcb, 0x1c, 0x3b, 0x34, - 0xef, 0xd3, 0x71, 0xf2, 0xe3, 0xf1, 0x41, 0x85, 0x15, 0x03, 0x1e, 0x44, - 0x5c, 0xd5, 0x25, 0x8a, 0x86, 0x8f, 0x43, 0x7c, 0x1d, 0x87, 0xc0, 0x35, - 0xc0, 0x45, 0x32, 0xa7, 0x21, 0x65, 0x76, 0x1a, 0xc9, 0xa2, 0x29, 0xd6, - 0xa3, 0xab, 0x69, 0x42, 0xd4, 0xc5, 0x98, 0xff, 0x2b, 0x82, 0x49, 0xe1, - 0xd6, 0x65, 0xd2, 0x6d, 0x89, 0xad, 0x38, 0x64, 0x12, 0x97, 0xce, 0x29, - 0x8b, 0x51, 0x9c, 0x27, 0x53, 0x83, 0x3a, 0x2a, 0xee, 0x4a, 0x30, 0xb3, - 0x47, 0x78, 0x77, 0x31, 0x48, 0xb0, 0x5e, 0x6c, 0x52, 0x1c, 0xb6, 0x3e, - 0x8b, 0x91, 0xff, 0x65, 0xa8, 0x79, 0xe5, 0x14, 0xca, 0xff, 0x45, 0xf4, - 0x9d, 0x02, 0x66, 0x6e, 0xce, 0x9b, 0x44, 0xeb, 0x00, 0x1d, 0x7d, 0xeb, - 0x7a, 0x92, 0xb5, 0x15, 0x28, 0xd2, 0x2a, 0xda, 0x56, 0x4d, 0x54, 0xa4, - 0x29, 0x5c, 0xd2, 0xc1, 0x43, 0xe4, 0x65, 0x3b, 0xab, 0x99, 0x69, 0x6f, - 0x8d, 0x98, 0x59, 0x93, 0x7c, 0xc5, 0x78, 0x0b, 0xc5, 0x1f, 0x4f, 0xb2, - 0xf4, 0x5b, 0x0b, 0xe0, 0xd7, 0x34, 0x0e, 0xa9, 0xb4, 0xda, 0x8c, 0x5b, - 0x0b, 0x18, 0x77, 0x1a, 0xb8, 0x15, 0x72, 0xf9, 0x87, 0xe8, 0x56, 0x91, - 0x10, 0xac, 0x02, 0xbd, 0x28, 0xf5, 0x5d, 0x7f, 0x98, 0xa7, 0x0c, 0x04, - 0x6d, 0xd0, 0x35, 0xaa, 0xc7, 0x7c, 0x97, 0x38, 0x30, 0xaa, 0x01, 0xd1, - 0x7f, 0x68, 0xe2, 0xb6, 0x44, 0x73, 0x6c, 0x96, 0x3d, 0x9a, 0x44, 0xdd, - 0x61, 0x25, 0xe2, 0x82, 0x5a, 0x26, 0xa8, 0x25, 0xa0, 0xe1, 0xed, 0xe0, - 0x98, 0x99, 0xd3, 0x67, 0xd7, 0x97, 0xeb, 0xe9, 0x36, 0xa9, 0x00, 0xa2, - 0x54, 0xfe, 0x4c, 0xf7, 0xe8, 0xae, 0x27, 0x11, 0x61, 0xb7, 0x34, 0xfa, - 0xa0, 0x30, 0x06, 0x47, 0x77, 0x52, 0x2f, 0x96, 0xee, 0xf6, 0x44, 0xd6, - 0x0f, 0x7f, 0x46, 0xbf, 0x82, 0xd3, 0x83, 0x07, 0x8f, 0xa4, 0xf6, 0x07, - 0xd3, 0x3b, 0xd6, 0x15, 0x18, 0xe1, 0xbb, 0x34, 0xc1, 0x3f, 0x89, 0x38, - 0xf5, 0x31, 0xf4, 0x94, 0xa9, 0xc4, 0x0c, 0x64, 0x07, 0xb8, 0xa5, 0x71, - 0x79, 0x24, 0x23, 0xb8, 0x62, 0x35, 0xd4, 0x4b, 0x4c, 0xa8, 0x16, 0x6f, - 0x17, 0x6a, 0x8c, 0xf3, 0x2c, 0x1a, 0xe0, 0x07, 0x23, 0x3b, 0x74, 0x9e, - 0x70, 0xcc, 0x7e, 0xd8, 0xe5, 0xe0, 0xa0, 0xac, 0x9d, 0xc0, 0x3d, 0x3f, - 0x2f, 0xce, 0x93, 0x31, 0x5b, 0x6c, 0xa0, 0xb7, 0xa7, 0x3d, 0x5c, 0x76, - 0x40, 0x47, 0x7d, 0x5a, 0x53, 0x86, 0x1e, 0x79, 0x2e, 0xce, 0x32, 0xf6, - 0x55, 0x92, 0xc2, 0xa4, 0xef, 0x70, 0x85, 0xc9, 0xf4, 0x6e, 0x7d, 0xe8, - 0x96, 0xbc, 0xd6, 0xdf, 0x57, 0xf1, 0x75, 0xea, 0x23, 0xfd, 0x59, 0xcb, - 0x93, 0x65, 0xb9, 0x2c, 0x10, 0xef, 0x70, 0x24, 0x68, 0x51, 0x00, 0x5a, - 0xba, 0x87, 0x2b, 0xb2, 0xa3, 0xe5, 0xcc, 0xae, 0xd8, 0xd0, 0x56, 0xf0, - 0xa0, 0xd8, 0xb0, 0xdf, 0x62, 0xe8, 0x3b, 0xf1, 0x7a, 0x18, 0x21, 0xd6, - 0x1f, 0x6f, 0x0c, 0xf1, 0x10, 0x66, 0x09, 0xb9, 0xb4, 0xa2, 0x52, 0xed, - 0x7b, 0x30, 0x2f, 0x18, 0xeb, 0x0a, 0x56, 0xdb, 0xc1, 0xc4, 0x14, 0x0c, - 0xa9, 0x0e, 0xed, 0x36, 0xb3, 0x00, 0xae, 0xf7, 0x89, 0x6a, 0xcf, 0x38, - 0x4a, 0x21, 0xa0, 0x36, 0x8b, 0x10, 0x0d, 0xa8, 0x5d, 0x75, 0x51, 0x38, - 0xe8, 0x95, 0x0d, 0xa3, 0x5e, 0xd3, 0xa5, 0x46, 0x49, 0x3d, 0xb9, 0x16, - 0x09, 0x25, 0xca, 0x61, 0xa3, 0xf7, 0x45, 0x27, 0x63, 0xfb, 0x65, 0x7a, - 0x1f, 0x18, 0x30, 0x5d, 0x65, 0x68, 0x20, 0x12, 0x9b, 0xb2, 0x38, 0x63, - 0xaa, 0x22, 0xd0, 0x32, 0x72, 0xba, 0xbb, 0x69, 0x84, 0x67, 0x31, 0xe3, - 0x3a, 0x04, 0xea, 0x70, 0x60, 0xad, 0xeb, 0x36, 0xdf, 0x58, 0x78, 0xa7, - 0x6f, 0xe6, 0xb6, 0x60, 0x87, 0x8b, 0x8f, 0xaf, 0xdf, 0x90, 0x1f, 0x6a, - 0x73, 0x13, 0xea, 0xba, 0x57, 0x5b, 0xda, 0x8b, 0xb9, 0x2b, 0xd5, 0xea, - 0x38, 0xc4, 0x80, 0x33, 0x57, 0x07, 0xb8, 0x4a, 0x89, 0x0a, 0x56, 0x89, - 0xfd, 0x76, 0x45, 0xe5, 0xaa, 0xbf, 0xc7, 0xa6, 0x72, 0xb3, 0x73, 0x82, - 0x50, 0x0c, 0xdd, 0xec, 0x16, 0x7f, 0xb2, 0xbd, 0x8f, 0x3a, 0xe0, 0x49, - 0x31, 0x9b, 0xf8, 0xbe, 0xc4, 0xae, 0x22, 0x40, 0x03, 0x50, 0x85, 0xbe, - 0xcc, 0xb4, 0x5e, 0x04, 0x18, 0xa2, 0x92, 0xc8, 0xaa, 0xed, 0x74, 0xd3, - 0x51, 0x8f, 0x6c, 0x09, 0x1b, 0x5f, 0x31, 0xa4, 0xca, 0x14, 0x82, 0x10, - 0x06, 0xf7, 0xde, 0x6a, 0x59, 0xa5, 0xe0, 0xeb, 0x27, 0x7e, 0x3b, 0x91, - 0x18, 0x83, 0xd2, 0xc9, 0x49, 0x78, 0xba, 0xdf, 0xb9, 0x2a, 0xee, 0xbc, - 0x8b, 0xd6, 0x4a, 0xb7, 0xd9, 0x78, 0xf4, 0x45, 0xeb, 0x74, 0xcc, 0x54, - 0xac, 0xfa, 0xbd, 0x9e, 0xf2, 0x76, 0x94, 0x29, 0x6e, 0x4f, 0x56, 0x4c, - 0x8a, 0x5d, 0xd1, 0x6c, 0x52, 0x55, 0x4e, 0x3f, 0x46, 0x19, 0x1a, 0xa7, - 0xd0, 0xf4, 0xd1, 0x06, 0x5d, 0x70, 0xb5, 0x42, 0x27, 0xa4, 0xdb, 0x7d, - 0xa6, 0x2c, 0x08, 0x38, 0x28, 0xd2, 0x1e, 0xdb, 0x5f, 0xb4, 0xa7, 0x25, - 0x46, 0xe4, 0x46, 0xf5, 0x91, 0x15, 0x21, 0xc5, 0xe2, 0x28, 0x38, 0xca, - 0x20, 0xd2, 0xa4, 0x22, 0x9a, 0x6c, 0x18, 0x4c, 0x5d, 0x74, 0x9a, 0xe2, - 0x30, 0xfa, 0xb4, 0xbd, 0x69, 0xdb, 0x11, 0x5e, 0xac, 0xbd, 0x40, 0x8c, - 0xe4, 0xa1, 0xa8, 0x57, 0x57, 0xe2, 0xd0, 0x9f, 0x2d, 0x4f, 0xd4, 0x17, - 0x8a, 0x1d, 0x19, 0x9e, 0x2f, 0x99, 0xb7, 0xa8, 0x53, 0x27, 0x83, 0x84, - 0x6e, 0x89, 0xd7, 0x45, 0xdd, 0x49, 0xdc, 0x36, 0x9c, 0x33, 0xdd, 0xfe, - 0x9f, 0x32, 0x74, 0xb0, 0x56, 0xfb, 0x77, 0x76, 0x42, 0x7a, 0x76, 0x7f, - 0xb1, 0x6b, 0x5f, 0x07, 0xb3, 0x8e, 0xe9, 0xb2, 0xe7, 0x50, 0xee, 0xae, - 0x38, 0xcb, 0xfa, 0xb4, 0x1a, 0x93, 0xf1, 0xd6, 0x2a, 0xa2, 0x2a, 0xe9, - 0x54, 0xe5, 0x83, 0x9a, 0x51, 0x2b, 0x0a, 0x6f, 0xd6, 0x82, 0x59, 0xd5, - 0xbd, 0x26, 0xc5, 0xc2, 0x5e, 0xf4, 0x4d, 0x5a, 0x31, 0xf4, 0xaa, 0x0c, - 0xa0, 0x9c, 0xf3, 0x99, 0x5c, 0x24, 0x95, 0xc5, 0x73, 0x67, 0xe0, 0x73, - 0x13, 0xa6, 0x95, 0xe1, 0x04, 0x30, 0x3c, 0x1e, 0x51, 0x61, 0xe1, 0x83, - 0x82, 0x11, 0x5e, 0xf1, 0x2c, 0xcb, 0xfb, 0x01, 0x24, 0x7f, 0x97, 0x76, - 0x57, 0xde, 0xe4, 0x35, 0x7f, 0x88, 0x88, 0x56, 0x3d, 0x7e, 0xee, 0x6b, - 0xa9, 0x68, 0xb5, 0x18, 0x29, 0x98, 0xc6, 0xfb, 0xf5, 0xf7, 0xcc, 0xf1, - 0x9d, 0x79, 0x9a, 0x06, 0xf0, 0x72, 0xc3, 0xe7, 0xf9, 0x1d, 0x25, 0xe5, - 0xa6, 0xba, 0xc4, 0xd5, 0xe6, 0xf2, 0x86, 0x54, 0x78, 0xc0, 0x26, 0x6f, - 0xdc, 0xc7, 0xe6, 0x18, 0xc0, 0x0f, 0x63, 0xa5, 0x34, 0xb7, 0xd6, 0xa3, - 0x41, 0xa0, 0x54, 0x99, 0xec, 0xe2, 0x31, 0x53, 0xa9, 0x51, 0xc5, 0x71, - 0x1e, 0xaf, 0x8d, 0x96, 0xc7, 0xd8, 0xd4, 0x81, 0x3b, 0x39, 0x60, 0x52, - 0x3e, 0xf2, 0xcf, 0x57, 0x2b, 0xd4, 0x7f, 0xb8, 0xd5, 0x0f, 0x33, 0xca, - 0xd7, 0xa6, 0x8d, 0x3f, 0x55, 0xf6, 0x42, 0xa0, 0x64, 0xcb, 0xed, 0xdd, - 0x5b, 0x49, 0x1f, 0xfa, 0x96, 0x99, 0xc1, 0x30, 0x4d, 0x04, 0xf2, 0xdb, - 0x35, 0x9a, 0x59, 0x16, 0xd6, 0xa9, 0x2b, 0x7b, 0x1d, 0x10, 0x36, 0x27, - 0xd0, 0xf9, 0x83, 0xab, 0x0f, 0x57, 0xc6, 0xaa, 0x00, 0x34, 0x69, 0x59, - 0x32, 0x3d, 0xec, 0xb5, 0x56, 0x48, 0xd2, 0xbf, 0x41, 0x71, 0x98, 0x2f, - 0x49, 0x53, 0x90, 0x1d, 0xc2, 0xf6, 0x02, 0xeb, 0xb3, 0x90, 0x88, 0x94, - 0x45, 0x94, 0x90, 0xd8, 0x99, 0x7c, 0x85, 0xbf, 0xbc, 0x40, 0x38, 0x86, - 0xe9, 0x01, 0x37, 0x8f, 0xcd, 0xec, 0x63, 0x25, 0x4b, 0x19, 0xc4, 0xab, - 0x04, 0xa3, 0x74, 0x35, 0x0c, 0x8a, 0x7c, 0xaf, 0xbb, 0x2a, 0x93, 0xf9, - 0xc7, 0xe0, 0xb4, 0x5c, 0x85, 0x0f, 0x7e, 0x9f, 0xe6, 0x8b, 0x00, 0x7b, - 0x0c, 0x17, 0x4f, 0xc1, 0x6b, 0x2a, 0xfc, 0x34, 0x0e, 0xf0, 0x82, 0xf9, - 0x94, 0xda, 0xc0, 0x28, 0x6a, 0x32, 0x51, 0xf1, 0x5b, 0x0f, 0x30, 0x93, - 0xf8, 0x60, 0x0c, 0x24, 0xd7, 0x42, 0x9a, 0x29, 0xe8, 0xbb, 0xf1, 0x30, - 0xc2, 0x85, 0xea, 0xf0, 0xb2, 0x7d, 0x85, 0x29, 0xd4, 0xfa, 0xc2, 0x7a, - 0x70, 0x53, 0x47, 0xba, 0xae, 0x4c, 0xf1, 0x67, 0x23, 0x1d, 0x95, 0xea, - 0x1a, 0x39, 0x6a, 0xe8, 0xcc, 0xce, 0x19, 0xad, 0xa2, 0xd0, 0xb6, 0x06, - 0xd8, 0x42, 0x87, 0x7a, 0xa2, 0xca, 0x8b, 0xa0, 0x40, 0x3e, 0xb7, 0xbb, - 0xba, 0xd8, 0x44, 0x73, 0xc7, 0x36, 0x00, 0x5a, 0xdc, 0x77, 0x3b, 0x5a, - 0x36, 0x60, 0x19, 0x95, 0xc4, 0x2a, 0x15, 0xd7, 0x30, 0x54, 0x7b, 0x5c, - 0x8b, 0xc9, 0x88, 0xb9, 0x95, 0xfd, 0x5c, 0x2d, 0x34, 0x3e, 0xd2, 0x80, - 0xe9, 0xc5, 0xe2, 0x1b, 0x07, 0x1b, 0x71, 0x95, 0x97, 0xb2, 0xe7, 0x26, - 0x2f, 0x08, 0x7b, 0x2f, 0x04, 0xb0, 0xdb, 0x96, 0xaf, 0xd1, 0xeb, 0x26, - 0x95, 0x94, 0x9a, 0x47, 0x78, 0x1c, 0xaf, 0x29, 0x54, 0x11, 0xae, 0x06, - 0x18, 0x1a, 0xb1, 0xa6, 0x27, 0xf3, 0xce, 0xa0, 0x91, 0x4d, 0x66, 0xb7, - 0x37, 0x15, 0x35, 0x59, 0x46, 0x70, 0xee, 0x36, 0xd2, 0xc7, 0xde, 0xae, - 0x27, 0xda, 0x69, 0xe8, 0xbe, 0x9f, 0x67, 0xa2, 0x9e, 0x72, 0xb4, 0xf0, - 0xd7, 0x71, 0xa3, 0x74, 0x54, 0x6c, 0x0d, 0x4d, 0xc9, 0x1c, 0xc7, 0x0c, - 0x0d, 0x9d, 0xef, 0x36, 0x02, 0x8a, 0x5a, 0x9c, 0xd5, 0x5e, 0x07, 0xbf, - 0x5f, 0x85, 0x06, 0x51, 0xdf, 0x97, 0xd8, 0xed, 0x84, 0x3f, 0xba, 0xc4, - 0xfc, 0x78, 0x5c, 0x10, 0x83, 0x20, 0x08, 0x55, 0x99, 0x73, 0x7f, 0x83, - 0x57, 0x8b, 0xe6, 0x8e, 0xad, 0x19, 0x52, 0x35, 0xf5, 0x18, 0xfb, 0x36, - 0x69, 0x0c, 0x48, 0x49, 0x43, 0x13, 0xa4, 0x2b, 0xa8, 0x1d, 0x7d, 0x49, - 0x1d, 0xa3, 0xb6, 0x01, 0x25, 0x96, 0xc2, 0xc5, 0x19, 0xc3, 0xcd, 0x08, - 0xff, 0x0a, 0x26, 0x09, 0xaa, 0x94, 0x54, 0xb8, 0xcf, 0x52, 0x64, 0xd9, - 0x77, 0x5b, 0x96, 0x6e, 0x94, 0x75, 0x43, 0xb3, 0x62, 0x2e, 0xd4, 0xeb, - 0x1a, 0x90, 0xf1, 0xa5, 0x86, 0x5f, 0xbb, 0xa3, 0x19, 0xbd, 0x21, 0xe8, - 0xa9, 0x3f, 0x19, 0x6a, 0xd9, 0xff, 0x18, 0xa8, 0xfd, 0x8c, 0x29, 0x5d, - 0x4e, 0x08, 0x7b, 0xad, 0x65, 0xa7, 0xb9, 0x89, 0x0c, 0x7e, 0xff, 0xf7, - 0x8d, 0xfd, 0xde, 0x7b, 0x2c, 0xbf, 0x2b, 0xf9, 0x25, 0x9d, 0x1b, 0xa9, - 0x1f, 0x05, 0xbb, 0x28, 0xd4, 0xc3, 0x49, 0x45, 0x63, 0xea, 0x15, 0x89, - 0x24, 0x16, 0x97, 0x28, 0xe5, 0xcd, 0x62, 0x20, 0x60, 0x6d, 0x02, 0x3a, - 0x96, 0x81, 0x83, 0xca, 0x0a, 0x2e, 0x83, 0xc6, 0xf0, 0xb3, 0x09, 0x68, - 0x33, 0x7e, 0x9a, 0x15, 0x0b, 0x4a, 0x3b, 0xcc, 0x0c, 0x95, 0x59, 0x41, - 0x35, 0x04, 0x62, 0x7b, 0x5d, 0x30, 0x69, 0x1d, 0x94, 0xe3, 0x4f, 0xa3, - 0xfa, 0xfe, 0x36, 0x34, 0xb4, 0xa5, 0x37, 0xc0, 0x64, 0xf0, 0x57, 0xc4, - 0x6d, 0xc9, 0x83, 0xe3, 0x7f, 0x3d, 0x09, 0xc7, 0xe8, 0xf8, 0xd5, 0x8f, - 0xa4, 0xcd, 0xd7, 0xf6, 0x48, 0xee, 0x28, 0x30, 0x35, 0xc1, 0xee, 0x6a, - 0xab, 0x81, 0x20, 0xa2, 0xe7, 0x14, 0x0b, 0x37, 0xcc, 0xf0, 0xc1, 0xea, - 0xb3, 0xe6, 0x4d, 0xb5, 0x34, 0x0f, 0x11, 0xdc, 0xeb, 0x1c, 0x5d, 0xfe, - 0x19, 0x29, 0x57, 0x30, 0x7b, 0x4a, 0xd6, 0xcf, 0x36, 0x5f, 0x38, 0x8d, - 0x8b, 0xa1, 0x43, 0x42, 0xfd, 0x1b, 0x39, 0xca, 0xa8, 0x65, 0xb5, 0x59, - 0x5d, 0x2b, 0x10, 0x0c, 0x53, 0x82, 0x2a, 0x92, 0x98, 0x21, 0x47, 0xb6, - 0xf1, 0x22, 0xc5, 0x92, 0x3b, 0x04, 0xdd, 0xff, 0xcb, 0x2f, 0xba, 0x02, - 0x8d, 0x17, 0x8d, 0x00, 0xfb, 0x51, 0x40, 0x86, 0x89, 0xc5, 0xf3, 0x2c, - 0x3a, 0x98, 0xf2, 0xc6, 0x9a, 0xd1, 0xe2, 0x5e, 0xd1, 0x6f, 0x58, 0x60, - 0x7d, 0x03, 0x15, 0xd5, 0xc3, 0xdb, 0xbc, 0x69, 0x8e, 0x69, 0xc2, 0x52, - 0xef, 0xef, 0xd7, 0xa4, 0xd0, 0x27, 0x56, 0x3c, 0xea, 0xdd, 0x3a, 0xc8, - 0x9a, 0x51, 0x61, 0xef, 0xf0, 0xa0, 0xd7, 0x73, 0x37, 0x6c, 0x05, 0xaf, - 0x1a, 0xb0, 0x07, 0xdf, 0x41, 0x33, 0x38, 0xb7, 0x26, 0x0e, 0x87, 0xa2, - 0x8f, 0x4f, 0xdd, 0x2b, 0x34, 0x22, 0x90, 0x9a, 0xc0, 0x34, 0xb4, 0x0b, - 0xf9, 0xf5, 0x55, 0xa7, 0xa9, 0x4f, 0xc4, 0xfd, 0x18, 0xdd, 0x6d, 0x4a, - 0xf9, 0x21, 0xd7, 0xe5, 0x95, 0xc2, 0xc5, 0x47, 0xd6, 0x41, 0x64, 0xc9, - 0x1e, 0x9e, 0x2c, 0x54, 0x8e, 0x99, 0x19, 0x4f, 0x38, 0x96, 0x22, 0x77, - 0xfe, 0x1a, 0xb1, 0x22, 0x07, 0x16, 0xc1, 0x6d, 0x47, 0x5f, 0x2e, 0x74, - 0xa7, 0x56, 0x33, 0xed, 0x23, 0xee, 0x4a, 0x48, 0x99, 0x20, 0xca, 0xe7, - 0x7c, 0x96, 0x65, 0xe7, 0x81, 0xee, 0x5b, 0x05, 0x5c, 0xc6, 0xbd, 0xa2, - 0x39, 0x1e, 0xab, 0x9a, 0xaa, 0xac, 0x66, 0x66, 0x2b, 0x4a, 0x87, 0xb0, - 0x2c, 0x25, 0xcd, 0x58, 0x7c, 0xa7, 0x1a, 0x89, 0xbf, 0xa0, 0xfb, 0xc0, - 0xb2, 0x10, 0x48, 0xe9, 0xc9, 0xcc, 0x5a, 0x4f, 0x4d, 0xa8, 0x7d, 0x13, - 0x62, 0xd7, 0xd8, 0x02, 0x8d, 0xb5, 0xcc, 0x01, 0xe9, 0xd7, 0x0f, 0xda, - 0xf7, 0xc4, 0x71, 0xba, 0xac, 0xbf, 0xe1, 0xd5, 0x05, 0xb3, 0xdb, 0x3f, - 0x70, 0x8a, 0x0f, 0x38, 0x9c, 0x8b, 0x4a, 0x0d, 0xdc, 0x65, 0x5b, 0x0b, - 0x08, 0x92, 0x0c, 0x09, 0x36, 0x5d, 0x60, 0xe2, 0x82, 0x02, 0x52, 0xc1, - 0xd3, 0xc8, 0x8e, 0x95, 0x50, 0xfc, 0xd8, 0x9e, 0xa8, 0x2b, 0x58, 0xb8, - 0xc3, 0xc3, 0xe1, 0x86, 0x74, 0x80, 0xf0, 0xe4, 0xa0, 0x00, 0x21, 0xb6, - 0x51, 0xa7, 0xee, 0x33, 0x48, 0xbd, 0x9f, 0xca, 0x94, 0xd6, 0x1c, 0xf6, - 0x18, 0x45, 0x50, 0x76, 0x48, 0xe7, 0xfb, 0x4d, 0x64, 0x29, 0xb8, 0xe2, - 0x9a, 0x8a, 0xbc, 0x08, 0xc9, 0x7e, 0x65, 0xe7, 0xd5, 0xda, 0x02, 0xc3, - 0xf7, 0x14, 0xe2, 0x37, 0x5c, 0xac, 0x27, 0xd7, 0x8d, 0xdb, 0x4b, 0x26, - 0x82, 0x24, 0x4d, 0x23, 0xea, 0xa6, 0xa6, 0x89, 0x38, 0xb7, 0x66, 0xc4, - 0x9d, 0xe2, 0x27, 0x36, 0xee, 0x9e, 0xe0, 0xa1, 0xa7, 0xee, 0x77, 0x5a, - 0xec, 0x7b, 0x26, 0x31, 0x18, 0xef, 0x15, 0xe7, 0xee, 0x21, 0x9f, 0x3a, - 0xe0, 0x95, 0xc3, 0xc1, 0xbe, 0x8c, 0xcf, 0x0a, 0x57, 0xd9, 0x17, 0xb1, - 0xf2, 0xed, 0xa6, 0x46, 0xa0, 0x9b, 0xd5, 0x8c, 0xfa, 0xab, 0x79, 0x79, - 0xe9, 0x42, 0x0f, 0x3f, 0x85, 0x96, 0xde, 0x2c, 0x8f, 0x5e, 0xb8, 0xe5, - 0x9f, 0x49, 0x85, 0xc3, 0xf1, 0x4c, 0x89, 0xe1, 0x75, 0x55, 0x3b, 0xd8, - 0x76, 0x54, 0x30, 0xd0, 0x18, 0x97, 0x35, 0x2f, 0x5b, 0x96, 0x2d, 0xf1, - 0xb7, 0x67, 0xa1, 0x75, 0x1b, 0x24, 0xdd, 0x7f, 0x2c, 0x4f, 0xe3, 0xca, - 0x66, 0xf9, 0xb4, 0x26, 0x23, 0xe2, 0xab, 0x84, 0xde, 0x0e, 0xf6, 0xc0, - 0x27, 0x38, 0x69, 0x6d, 0x94, 0x24, 0x0b, 0xa6, 0x1f, 0x00, 0x67, 0xd0, - 0x17, 0x16, 0x81, 0x99, 0xbf, 0xb8, 0x3f, 0xe7, 0x3f, 0x06, 0xaf, 0xdd, - 0x92, 0xed, 0xb0, 0x18, 0x4b, 0x7b, 0x2c, 0xcf, 0x62, 0x46, 0x44, 0xe6, - 0x95, 0x27, 0xde, 0x97, 0xbb, 0x09, 0x3e, 0x8b, 0x7b, 0x53, 0x4a, 0xd8, - 0x70, 0x78, 0xa2, 0x60, 0x65, 0x52, 0xb4, 0x53, 0x88, 0x2a, 0xac, 0xa1, - 0x43, 0x43, 0x8d, 0xc3, 0xdf, 0x0a, 0x76, 0x02, 0xce, 0x53, 0x39, 0x6f, - 0x6c, 0x45, 0x73, 0x83, 0xe0, 0xe0, 0x67, 0x09, 0x4d, 0xdf, 0xac, 0xd9, - 0x73, 0xd0, 0x50, 0x33, 0x18, 0xdd, 0xcd, 0xc1, 0x0f, 0xac, 0xef, 0x6e, - 0xd1, 0xc9, 0x4b, 0xda, 0x9a, 0x17, 0xcc, 0x36, 0xd2, 0xe7, 0xa3, 0xd4, - 0x3f, 0xeb, 0xfd, 0x94, 0x56, 0x95, 0x78, 0x1e, 0xff, 0x48, 0xee, 0xaf, - 0x7d, 0x97, 0xe0, 0x2c, 0x40, 0xb7, 0x7c, 0x47, 0xf2, 0x66, 0xea, 0xf7, - 0x2f, 0xf2, 0xed, 0x8a, 0xbd, 0x60, 0x1d, 0xcf, 0x37, 0xeb, 0x2d, 0x4e, - 0xd5, 0xf8, 0x9a, 0x1c, 0x86, 0x46, 0xca, 0xc9, 0x69, 0xd4, 0xf7, 0xd8, - 0x4d, 0xce, 0x9e, 0x44, 0x94, 0x81, 0x9c, 0xb4, 0x58, 0x5f, 0x57, 0xcd, - 0xbd, 0x58, 0x15, 0x90, 0x44, 0x13, 0x76, 0x2c, 0xb5, 0xe4, 0xb6, 0x54, - 0xa5, 0x5f, 0xc6, 0x8f, 0xba, 0xdb, 0xd6, 0xdf, 0x8b, 0x1b, 0x9e, 0x1e, - 0x07, 0x2f, 0x6e, 0x6d, 0x7e, 0x6d, 0x97, 0x1b, 0x31, 0x7b, 0xfe, 0x72, - 0xa5, 0xe1, 0x8e, 0x5c, 0x4b, 0xf6, 0x78, 0xd7, 0x19, 0x63, 0xdb, 0xc8, - 0xb7, 0x19, 0xdd, 0xaf, 0xca, 0x95, 0x20, 0x3e, 0xb0, 0x38, 0x30, 0xd2, - 0x8d, 0xc8, 0x0e, 0xa1, 0xd2, 0x49, 0x6f, 0xa1, 0x70, 0x83, 0xe5, 0x0e, - 0xc0, 0x37, 0x08, 0x68, 0x75, 0xe2, 0xc0, 0x17, 0xba, 0x64, 0x3c, 0x53, - 0x1a, 0x2c, 0x8c, 0x0e, 0x55, 0x6c, 0x0c, 0x5c, 0x2e, 0x8c, 0x78, 0x3b, - 0xcd, 0x6d, 0x06, 0xe8, 0xcc, 0xfb, 0x2c, 0x14, 0x16, 0x57, 0x52, 0xad, - 0x83, 0x8c, 0x0b, 0x60, 0xca, 0xb7, 0x2f, 0xcb, 0x90, 0x19, 0xf7, 0xdd, - 0x48, 0xcd, 0xc5, 0x40, 0x20, 0xfa, 0xf0, 0x12, 0x22, 0x34, 0xd9, 0x32, - 0x29, 0xc7, 0x05, 0x2b, 0xa6, 0x8b, 0xac, 0x94, 0x08, 0xb0, 0x4c, 0x91, - 0x98, 0xd7, 0xf3, 0x78, 0x41, 0x1c, 0x2d, 0x44, 0xec, 0x76, 0x4c, 0x0f, - 0xf9, 0xef, 0xeb, 0x8e, 0x78, 0xf8, 0x5a, 0xd5, 0x0e, 0x08, 0x0b, 0xe4, - 0x3b, 0x68, 0xbc, 0xf6, 0x63, 0x51, 0xa9, 0x3b, 0x3c, 0xc3, 0x9d, 0xa7, - 0xfb, 0x4d, 0xb8, 0x03, 0x75, 0xfc, 0x64, 0xb0, 0xc0, 0xa4, 0x3e, 0x15, - 0xd1, 0x1d, 0xc0, 0xa0, 0x91, 0x80, 0x8a, 0xb2, 0xf2, 0x06, 0x27, 0x13, - 0xab, 0xa9, 0xa3, 0x3c, 0xe8, 0x7d, 0x2a, 0x89, 0x2b, 0x33, 0x3b, 0x23, - 0x70, 0xde, 0x03, 0x1b, 0x1d, 0x81, 0xbd, 0x69, 0x0c, 0xf9, 0x7d, 0xb3, - 0x74, 0x4a, 0xaa, 0x7f, 0x8e, 0x48, 0x68, 0xb3, 0xbe, 0xe8, 0x45, 0xce, - 0x39, 0x41, 0x17, 0xe9, 0x00, 0x3e, 0x9e, 0xbe, 0x90, 0x67, 0xfa, 0x3d, - 0x4d, 0x9c, 0xd5, 0xfc, 0xd3, 0xcd, 0x2c, 0x12, 0xcb, 0x53, 0x02, 0x81, - 0x38, 0x2d, 0xe2, 0x7c, 0x26, 0x8a, 0x32, 0x90, 0x57, 0x98, 0xfe, 0x2a, - 0xfd, 0xab, 0xba, 0x72, 0xdf, 0xda, 0x69, 0x67, 0x33, 0xda, 0x94, 0xd0, - 0x2d, 0xea, 0xd1, 0xb2, 0xd0, 0x13, 0xec, 0xa9, 0xe6, 0x60, 0x43, 0x32, - 0x1f, 0xd6, 0x7e, 0x5b, 0x5a, 0x41, 0x46, 0xc8, 0x2d, 0xc8, 0xd2, 0x15, - 0x93, 0x84, 0x03, 0x48, 0x97, 0x17, 0xaa, 0xd6, 0x08, 0x09, 0x74, 0x6e, - 0x83, 0xc5, 0x95, 0x62, 0x8d, 0x0e, 0x6a, 0xa6, 0xa8, 0xd5, 0x4e, 0x81, - 0x27, 0x45, 0x17, 0xaa, 0xd6, 0x30, 0x5d, 0xd2, 0x22, 0x04, 0x32, 0x6e, - 0x8b, 0x76, 0x00, 0x6f, 0xcd, 0x1b, 0xc3, 0x8a, 0x7e, 0x4e, 0x49, 0x90, - 0xd4, 0x44, 0x55, 0x4f, 0xbf, 0xa0, 0x6b, 0x7c, 0x3d, 0x4e, 0x0c, 0xf2, - 0x4c, 0x71, 0x47, 0xe7, 0x19, 0xe5, 0xe2, 0xef, 0x38, 0xd4, 0x5c, 0x45, - 0xa7, 0x9a, 0xac, 0x5e, 0x95, 0xa7, 0x02, 0x36, 0x78, 0x77, 0x2b, 0x60, - 0x84, 0xbe, 0x23, 0x3c, 0x3d, 0x2e, 0x29, 0x03, 0xed, 0x0a, 0xb1, 0x80, - 0xdc, 0x57, 0x2a, 0xb5, 0x8a, 0xbd, 0x2e, 0x76, 0xfb, 0x7b, 0x4b, 0x78, - 0x1f, 0xbf, 0x4b, 0x12, 0x62, 0x75, 0x92, 0x8e, 0xfa, 0xd9, 0x58, 0xda, - 0x61, 0x7f, 0x7d, 0xa7, 0xff, 0x80, 0x90, 0x17, 0x02, 0x08, 0x61, 0x46, - 0x76, 0x07, 0x9f, 0x52, 0x0b, 0xc4, 0x90, 0x6b, 0x72, 0xf4, 0x67, 0xb0, - 0x7f, 0xc8, 0x80, 0x42, 0xca, 0x24, 0x7c, 0x42, 0x5c, 0x41, 0xaa, 0xe0, - 0x6c, 0x4e, 0xd5, 0x01, 0xfe, 0x21, 0xb9, 0xba, 0x3e, 0x84, 0x74, 0xc5, - 0xbd, 0xd6, 0xe0, 0xd7, 0x00, 0xa2, 0xa7, 0x29, 0xc4, 0xae, 0x34, 0xbd, - 0x8f, 0x9c, 0x96, 0x35, 0xaa, 0x64, 0x8e, 0xc3, 0x83, 0x92, 0x73, 0x89, - 0x61, 0x2c, 0xaf, 0x2a, 0x3a, 0xb1, 0x20, 0x67, 0x6c, 0x70, 0xec, 0xff, - 0x2c, 0xdf, 0xf5, 0x22, 0xcb, 0x0c, 0x4e, 0x59, 0xda, 0x61, 0x2e, 0x0a, - 0x9f, 0xfb, 0x5e, 0x2a, 0x5c, 0x7d, 0x79, 0x8e, 0xcc, 0xf3, 0x95, 0xb4, - 0x19, 0x9e, 0xb5, 0xc9, 0x91, 0x63, 0x85, 0x16, 0x79, 0x3e, 0xd8, 0xe8, - 0xff, 0x68, 0xf6, 0x52, 0x85, 0xa6, 0xc1, 0xf2, 0xe7, 0x2b, 0xdb, 0x8e, - 0x90, 0x55, 0x8f, 0xcd, 0x24, 0x08, 0x27, 0xf0, 0x57, 0x62, 0xf5, 0xb4, - 0xed, 0x97, 0x3e, 0x9d, 0x13, 0x4f, 0xbe, 0xa0, 0xc7, 0xe6, 0x65, 0x8d, - 0x70, 0xa4, 0x60, 0x24, 0x61, 0x9d, 0x25, 0xe8, 0xd9, 0x30, 0x09, 0x01, - 0x27, 0xdd, 0x9f, 0xa4, 0x24, 0x09, 0x3f, 0xa5, 0x97, 0x60, 0x35, 0xa5, - 0x8e, 0xd9, 0x1e, 0x2f, 0xfd, 0x09, 0x7d, 0xc1, 0x0c, 0x80, 0xf2, 0x2a, - 0xd6, 0xde, 0xb6, 0x31, 0x93, 0x19, 0x28, 0x73, 0xb1, 0x2d, 0x3c, 0x70, - 0x67, 0xdb, 0x27, 0x08, 0x17, 0x44, 0x9a, 0x09, 0x06, 0xc7, 0x36, 0xae, - 0xbc, 0xf4, 0xd6, 0x82, 0x10, 0x72, 0x90, 0x11, 0xb1, 0xff, 0xad, 0x5a, - 0x7a, 0xeb, 0x91, 0x3a, 0x13, 0x2b, 0x7b, 0xda, 0x1f, 0x7d, 0x67, 0xe7, - 0x65, 0xe7, 0x08, 0x94, 0x0e, 0x8f, 0x9f, 0xeb, 0xd7, 0xa3, 0xc3, 0xd1, - 0xef, 0xca, 0x25, 0xdb, 0x19, 0x33, 0x26, 0xc9, 0x1a, 0x2c, 0x31, 0x7e, - 0x2d, 0x82, 0x80, 0x8b, 0x49, 0x1e, 0xd8, 0x0c, 0x44, 0xef, 0x99, 0x95, - 0x1e, 0xe0, 0xf7, 0x4b, 0x59, 0x87, 0x03, 0x6c, 0x81, 0xbb, 0x5b, 0x4f, - 0x93, 0xd3, 0xad, 0xb9, 0xb0, 0xed, 0xc0, 0xe4, 0x9a, 0xc8, 0xd6, 0x4b, - 0x44, 0x34, 0xdb, 0x07, 0x80, 0x48, 0x31, 0x94, 0x22, 0x71, 0x9d, 0x18, - 0x60, 0x7e, 0xc8, 0xa0, 0xf0, 0x38, 0xd6, 0x5d, 0xad, 0x4c, 0x20, 0xe3, - 0x30, 0x89, 0xfd, 0xec, 0x58, 0x99, 0x3b, 0x3b, 0xa4, 0x84, 0xc7, 0xb7, - 0xba, 0x42, 0xdc, 0x86, 0x38, 0xb6, 0xdf, 0x75, 0x4a, 0x53, 0xc8, 0x28, - 0x58, 0xc9, 0x03, 0xb8, 0x14, 0x4e, 0xac, 0x5c, 0xde, 0x5d, 0x8a, 0x22, - 0x09, 0x3a, 0x62, 0x44, 0x2e, 0xc0, 0x04, 0xeb, 0x77, 0x4f, 0xda, 0x74, - 0x4a, 0xa9, 0xbb, 0xaf, 0x82, 0x38, 0xbe, 0xd9, 0x0f, 0x00, 0xc9, 0xfc, - 0x6c, 0xd3, 0xb7, 0xf7, 0xae, 0xd4, 0x44, 0xb1, 0xe7, 0x1c, 0x66, 0x57, - 0xdf, 0xb2, 0x8c, 0x66, 0x34, 0x4a, 0x59, 0xec, 0x6a, 0x21, 0x58, 0x80, - 0x28, 0xe3, 0xe9, 0x62, 0xda, 0x1a, 0xf0, 0xe3, 0xcd, 0x41, 0xa3, 0x0d, - 0x1b, 0x6b, 0xca, 0xf2, 0x84, 0x8f, 0x9a, 0x45, 0x01, 0x28, 0xcd, 0x1f, - 0x9a, 0xc1, 0x16, 0x25, 0xed, 0xc4, 0x52, 0xb0, 0xad, 0x89, 0xca, 0xf7, - 0xab, 0x03, 0x8f, 0xb3, 0xd7, 0xc5, 0xea, 0xe8, 0xcd, 0x71, 0xf6, 0xdd, - 0xbe, 0xab, 0xea, 0x72, 0x55, 0xb7, 0xeb, 0xf8, 0x14, 0x57, 0xef, 0x3a, - 0xfc, 0x21, 0x15, 0xba, 0x6e, 0x7b, 0xcd, 0x67, 0x3a, 0x5f, 0xd4, 0xe8, - 0x5c, 0x2d, 0x53, 0x4b, 0x00, 0xb5, 0x25, 0xa0, 0x28, 0xd9, 0xa2, 0x04, - 0x5d, 0x47, 0x2d, 0xc0, 0x93, 0x8b, 0x19, 0x91, 0xdb, 0xd3, 0xdd, 0x77, - 0xdf, 0xaf, 0x1d, 0x04, 0x3f, 0x88, 0x4b, 0xea, 0x5b, 0x2b, 0x30, 0x01, - 0xd0, 0xbb, 0x8a, 0x86, 0x10, 0x39, 0xa7, 0x45, 0xf9, 0x8d, 0xb1, 0x8b, - 0xd9, 0x4b, 0xad, 0x75, 0x7f, 0x66, 0xd6, 0xf1, 0x8a, 0x8b, 0x66, 0x18, - 0x3b, 0x82, 0x28, 0x00, 0x3c, 0x39, 0x91, 0x3c, 0x2d, 0xd1, 0x17, 0x73, - 0x50, 0x8b, 0xea, 0xc9, 0x44, 0xd9, 0x6f, 0x85, 0x06, 0x93, 0xed, 0x1b, - 0xbe, 0xa7, 0xf7, 0x85, 0xec, 0x06, 0xab, 0xbb, 0x4d, 0x1b, 0xf9, 0x24, - 0xb1, 0x6a, 0x64, 0xcb, 0xe8, 0xf5, 0x15, 0xd5, 0x02, 0x9b, 0xbd, 0xea, - 0xcb, 0x2e, 0xc9, 0x3e, 0x2f, 0xb3, 0x11, 0xaa, 0x8b, 0xc8, 0xb9, 0xa7, - 0x44, 0x6d, 0xb8, 0x00, 0x20, 0x7b, 0x89, 0x55, 0x60, 0xbe, 0x98, 0xec, - 0xfd, 0x1b, 0xd1, 0x0a, 0x76, 0x07, 0x84, 0xc3, 0xc2, 0xcf, 0xd6, 0x36, - 0x2f, 0x4c, 0xc8, 0xab, 0xb3, 0xa4, 0xd2, 0x8d, 0xb0, 0xba, 0x89, 0xfe, - 0x8d, 0x7f, 0x57, 0xee, 0xf1, 0x7a, 0xf8, 0x0f, 0xc6, 0x89, 0xff, 0x4b, - 0x7c, 0x9a, 0xe8, 0x46, 0xfd, 0x5f, 0x57, 0x0d, 0xa4, 0x35, 0xf5, 0xef, - 0x39, 0x87, 0xfa, 0x2d, 0x19, 0x90, 0x1e, 0x67, 0xcb, 0x0e, 0x93, 0x7b, - 0x5c, 0x68, 0xb8, 0x2d, 0x28, 0xa0, 0x82, 0xf8, 0x89, 0xaa, 0x3b, 0xfd, - 0x25, 0x58, 0xda, 0xa7, 0xd3, 0x22, 0x62, 0xf8, 0x17, 0x18, 0xa9, 0xb5, - 0x27, 0xda, 0xac, 0xd2, 0x82, 0x99, 0x0b, 0x75, 0xc2, 0x69, 0x79, 0x9b, - 0x53, 0x66, 0xf2, 0x59, 0x0c, 0x89, 0x90, 0x2f, 0x7d, 0xab, 0x40, 0xec, - 0x47, 0xbd, 0x9a, 0x5c, 0x59, 0xf5, 0xdb, 0xf2, 0x54, 0xd8, 0x15, 0x8b, - 0xbb, 0x06, 0xc9, 0xe4, 0xdf, 0xf9, 0xee, 0xfa, 0xb8, 0x7d, 0xd6, 0x91, - 0x65, 0x84, 0xa6, 0xff, 0xea, 0xfa, 0x4e, 0xd2, 0xc2, 0xc0, 0x82, 0x2d, - 0xe2, 0x1e, 0xc9, 0x05, 0xe5, 0x59, 0x33, 0xcc, 0x68, 0x84, 0x92, 0xbc, - 0x5b, 0x03, 0x15, 0xb1, 0xbd, 0x18, 0x32, 0x2b, 0x5e, 0x8c, 0x92, 0xfa, - 0x19, 0x4a, 0xb5, 0x56, 0x8d, 0x0b, 0x68, 0xdd, 0x7d, 0x69, 0xac, 0x66, - 0xc4, 0x02, 0xb2, 0x2c, 0x6f, 0x74, 0x65, 0x56, 0x68, 0x32, 0x65, 0x44, - 0x78, 0x1b, 0x15, 0x8c, 0x93, 0x19, 0x36, 0xd0, 0xa2, 0xa1, 0xa3, 0xb8, - 0xce, 0xd9, 0xce, 0x04, 0x2a, 0x07, 0x7f, 0x84, 0x16, 0x4d, 0x99, 0x91, - 0x78, 0xdd, 0xe1, 0x04, 0xea, 0x38, 0x86, 0x19, 0xc6, 0xf6, 0xc8, 0xe7, - 0x39, 0x3d, 0x62, 0x8d, 0x26, 0x52, 0x43, 0xc9, 0x9c, 0xf1, 0xfe, 0xcb, - 0xaa, 0xf9, 0x64, 0x0b, 0x83, 0x2c, 0xd8, 0x32, 0x76, 0xf6, 0x69, 0xd5, - 0x71, 0x7b, 0x63, 0xe7, 0xe6, 0x61, 0xfa, 0xbc, 0xb4, 0xb4, 0x54, 0x73, - 0x05, 0xa0, 0xa2, 0xe6, 0xaf, 0x9d, 0xb7, 0x2b, 0xda, 0x60, 0xb1, 0xc7, - 0x58, 0x18, 0xf7, 0x6c, 0xa9, 0x1f, 0x13, 0x6e, 0xb7, 0x65, 0x01, 0x3e, - 0xf7, 0xfd, 0x9d, 0x5c, 0x7a, 0xc5, 0x48, 0xd4, 0x92, 0x81, 0xf2, 0x85, - 0x6d, 0x05, 0xc9, 0xf7, 0x8c, 0xe2, 0x24, 0x6b, 0x07, 0x83, 0x0b, 0x24, - 0x1b, 0x29, 0xb2, 0x66, 0x8f, 0x3e, 0x67, 0xa7, 0xeb, 0xb4, 0xd8, 0xad, - 0xce, 0x97, 0x12, 0x59, 0x3b, 0x08, 0x21, 0xb8, 0xae, 0xfa, 0xc9, 0x5a, - 0x0b, 0xb4, 0x3f, 0x46, 0x68, 0xc8, 0xd8, 0xde, 0x10, 0x28, 0x77, 0x4b, - 0x2b, 0x72, 0x49, 0x53, 0x67, 0x48, 0xef, 0xb3, 0xae, 0x9d, 0x0c, 0xcd, - 0xc4, 0x98, 0x45, 0xae, 0x1f, 0x6b, 0x57, 0xd1, 0xf8, 0x3b, 0xd7, 0xf9, - 0xcf, 0x89, 0xb1, 0x54, 0x95, 0xc0, 0xba, 0x3c, 0x37, 0xca, 0x67, 0xfb, - 0x0f, 0x4a, 0xc1, 0xf7, 0x7d, 0x97, 0x4d, 0x58, 0x9c, 0x80, 0x12, 0x68, - 0x81, 0x8e, 0x8a, 0xfa, 0x4b, 0x95, 0x8a, 0xc0, 0xc2, 0x12, 0x2f, 0x27, - 0x51, 0xb3, 0x49, 0x46, 0x09, 0x16, 0x01, 0xd9, 0x41, 0x69, 0xf1, 0xd9, - 0xb5, 0x44, 0xda, 0x10, 0xa8, 0x21, 0x6a, 0xb6, 0x09, 0xd2, 0x09, 0x2d, - 0x97, 0xa3, 0x5d, 0xf3, 0x21, 0x9c, 0x19, 0x9f, 0x6d, 0xb1, 0x10, 0xf7, - 0x14, 0xff, 0x73, 0x86, 0x58, 0xc8, 0xa4, 0x0e, 0xd7, 0x1f, 0xed, 0x47, - 0xd0, 0xa3, 0xc7, 0xa1, 0x28, 0x8d, 0xc6, 0x41, 0x26, 0x17, 0x35, 0x4d, - 0xe7, 0xa3, 0xed, 0xf2, 0xb6, 0xdb, 0x2a, 0xde, 0x94, 0x76, 0xc5, 0x86, - 0xe1, 0x55, 0x9d, 0xbc, 0x96, 0x11, 0x36, 0x5c, 0x8c, 0xe8, 0xd5, 0x49, - 0x50, 0xcb, 0x99, 0xdb, 0x62, 0x5f, 0x56, 0x7b, 0x94, 0xb4, 0x96, 0x0f, - 0xba, 0xc1, 0xcb, 0xec, 0xce, 0xde, 0xe2, 0x86, 0x61, 0x90, 0xe9, 0xfb, - 0xa5, 0x8f, 0x9d, 0xc1, 0xb2, 0xed, 0x46, 0x44, 0x49, 0x9e, 0x6b, 0xf3, - 0x29, 0x62, 0xc4, 0xa7, 0x5d, 0xc5, 0x53, 0x57, 0x42, 0xe9, 0xfe, 0x40, - 0x1e, 0x3b, 0x35, 0x9e, 0xdf, 0xaa, 0x91, 0xa5, 0xca, 0xa0, 0x56, 0x74, - 0x60, 0x50, 0x26, 0xf6, 0xef, 0xc4, 0xb2, 0x0a, 0xf5, 0xad, 0x21, 0xa8, - 0x9d, 0x6a, 0xa4, 0x22, 0x2c, 0xaa, 0xd0, 0x86, 0xfc, 0x6c, 0x61, 0x3c, - 0xf4, 0xd5, 0xc1, 0xf8, 0x9a, 0x50, 0x8b, 0x9e, 0x18, 0x17, 0x03, 0xfe, - 0x79, 0xaa, 0x50, 0xaa, 0x43, 0x7f, 0x51, 0x2a, 0xfc, 0xa3, 0x64, 0x24, - 0xa4, 0xa6, 0xa9, 0xe7, 0x35, 0x1b, 0xd6, 0xc7, 0x87, 0x3c, 0x32, 0x23, - 0xaf, 0x56, 0x1e, 0xa2, 0x35, 0xd7, 0x4a, 0x6f, 0xbc, 0x86, 0x1a, 0xeb, - 0x61, 0x52, 0x75, 0x20, 0xab, 0xaf, 0x14, 0x13, 0xf8, 0xad, 0x4f, 0xfb, - 0xfa, 0xb5, 0x45, 0x28, 0x5f, 0x29, 0xb7, 0x3d, 0x8a, 0x53, 0xc0, 0x6d, - 0x4a, 0x95, 0xd9, 0xd7, 0x4c, 0x69, 0x1c, 0x30, 0xce, 0x0a, 0xfd, 0xbf, - 0xdd, 0x53, 0x4b, 0x9a, 0x72, 0xe1, 0x85, 0xbc, 0x72, 0xec, 0x6d, 0x7a, - 0xb2, 0x4c, 0x5f, 0xed, 0x68, 0x19, 0x5c, 0x2b, 0x66, 0x1f, 0x69, 0xc5, - 0x54, 0x80, 0xa0, 0x1f, 0x7f, 0x46, 0xb1, 0x16, 0x90, 0x00, 0x35, 0x7b, - 0x07, 0xba, 0x59, 0xb5, 0xa7, 0x91, 0xcd, 0x27, 0xa1, 0x95, 0x2b, 0x5f, - 0x83, 0x91, 0x78, 0x44, 0x07, 0x6f, 0xe0, 0x45, 0x9a, 0xcc, 0x2f, 0xcf, - 0xb1, 0x9a, 0x8e, 0x18, 0x45, 0xbd, 0x52, 0x42, 0xab, 0x9e, 0xff, 0x55, - 0xc4, 0x40, 0x0e, 0x28, 0x9f, 0x69, 0xc3, 0x38, 0x14, 0xdc, 0xd1, 0x3d, - 0x40, 0xb5, 0xae, 0xb8, 0x8c, 0x2b, 0xcf, 0x03, 0x72, 0x05, 0xe3, 0xf8, - 0xeb, 0xaf, 0xe2, 0xde, 0x66, 0x30, 0xc2, 0xba, 0x46, 0xec, 0x1b, 0x81, - 0xba, 0x61, 0xb1, 0x3b, 0x75, 0x14, 0xd4, 0x99, 0x40, 0x05, 0x9b, 0x5a, - 0x45, 0xe2, 0xd3, 0xab, 0xef, 0x0a, 0x09, 0x20, 0x44, 0x57, 0xc9, 0xd9, - 0x65, 0x0f, 0x3a, 0x34, 0x63, 0x2f, 0x25, 0x3b, 0xa8, 0x20, 0x73, 0x38, - 0x71, 0x92, 0xfe, 0x7a, 0x4c, 0xef, 0x0a, 0x03, 0xaa, 0xd0, 0x44, 0x96, - 0xe4, 0x21, 0xad, 0x02, 0xc1, 0xc6, 0x8e, 0x8d, 0x90, 0xea, 0x2f, 0x6d, - 0x3f, 0x01, 0x8a, 0xb5, 0x65, 0xc8, 0x27, 0x0f, 0x22, 0x40, 0x33, 0x0b, - 0xd7, 0xa4, 0x41, 0x31, 0x31, 0x1b, 0xa1, 0x00, 0x39, 0x4a, 0xb4, 0x26, - 0x24, 0x81, 0x4e, 0x39, 0x59, 0x4c, 0x89, 0xa4, 0xcb, 0x8e, 0x8f, 0x88, - 0xa0, 0x84, 0x48, 0xf2, 0x42, 0x6b, 0xc3, 0x16, 0x25, 0xc3, 0x82, 0x0b, - 0x19, 0xc8, 0xf4, 0x50, 0x08, 0xee, 0xa0, 0x55, 0xb0, 0x3a, 0xdd, 0x91, - 0xdf, 0x4c, 0x72, 0x7e, 0xc3, 0x5f, 0xd5, 0xd4, 0xae, 0x08, 0xf6, 0xa7, - 0x31, 0x40, 0x3a, 0x25, 0x16, 0x55, 0x65, 0x2e, 0x22, 0x3b, 0xbc, 0xf2, - 0x60, 0x95, 0xf9, 0xf8, 0x16, 0xb4, 0xb0, 0x42, 0x01, 0x4d, 0xe4, 0x15, - 0xeb, 0xbd, 0x4c, 0x35, 0xc1, 0x8e, 0xe0, 0x93, 0x6b, 0xa8, 0xa6, 0x28, - 0x8d, 0x14, 0xd6, 0x80, 0x55, 0x27, 0x30, 0x10, 0xc6, 0x57, 0x65, 0xe0, - 0x6c, 0x55, 0x39, 0xb4, 0xe0, 0xa7, 0x55, 0xd1, 0xb3, 0xf4, 0x5d, 0x7a, - 0x67, 0x35, 0x03, 0x9b, 0xf0, 0x99, 0x35, 0x6e, 0xe7, 0xec, 0xd7, 0xb6, - 0x7a, 0xbb, 0xda, 0x4f, 0xdd, 0x55, 0x85, 0xb7, 0x4a, 0x09, 0x25, 0xad, - 0x15, 0xb8, 0x47, 0xd1, 0x65, 0x44, 0x15, 0xb6, 0x18, 0x78, 0x2b, 0xd0, - 0xba, 0x57, 0x3e, 0xf1, 0xe8, 0xcb, 0xc4, 0x71, 0x43, 0x66, 0x3d, 0x4f, - 0xec, 0xca, 0xf5, 0xfb, 0x3b, 0xa3, 0xfd, 0x54, 0x42, 0x11, 0x5c, 0x86, - 0xe4, 0xc9, 0x71, 0x56, 0xd7, 0xe6, 0x69, 0x87, 0xb6, 0x20, 0x14, 0x20, - 0x3b, 0x36, 0x9f, 0xb8, 0xa9, 0x61, 0x08, 0xba, 0x64, 0x37, 0x48, 0x7d, - 0x5c, 0x39, 0xb6, 0x84, 0x50, 0x77, 0xe9, 0x85, 0x98, 0xd4, 0x09, 0xeb, - 0xd3, 0xeb, 0x1b, 0x21, 0x52, 0x88, 0x14, 0x26, 0xdf, 0x2c, 0xea, 0x59, - 0x02, 0x2e, 0x58, 0xd2, 0xb2, 0x2f, 0x15, 0xb4, 0xed, 0xa9, 0x53, 0xbf, - 0xbd, 0xb1, 0x86, 0x58, 0x7f, 0x5c, 0xcc, 0x04, 0xdf, 0xaa, 0xa8, 0x0a, - 0x2b, 0x22, 0x7a, 0x28, 0x13, 0x40, 0x9d, 0x9a, 0x93, 0xcd, 0xa6, 0xe3, - 0x74, 0xf9, 0x5c, 0xae, 0x2c, 0x59, 0x5c, 0x22, 0x69, 0x52, 0x27, 0x0a, - 0x3b, 0xc1, 0x36, 0x5a, 0x0e, 0x6b, 0xde, 0x7f, 0x4e, 0xb1, 0x3d, 0x60, - 0xcb, 0x66, 0x3e, 0x20, 0x2f, 0x6b, 0xfa, 0x67, 0xd1, 0xec, 0x99, 0x11, - 0xf3, 0x6b, 0xf9, 0xaf, 0xce, 0xb6, 0x69, 0x3b, 0xf7, 0xb6, 0xab, 0x3d, - 0x58, 0xe2, 0x90, 0x8f, 0x25, 0x42, 0x1c, 0xfd, 0x20, 0x00, 0xe4, 0x73, - 0x49, 0x6d, 0xda, 0xf9, 0xc2, 0x32, 0x67, 0xdb, 0x25, 0x96, 0x02, 0x01, - 0x31, 0x61, 0x4c, 0x97, 0x16, 0xac, 0xd5, 0x98, 0x2e, 0xe1, 0x88, 0xc8, - 0x60, 0x93, 0x19, 0x10, 0x09, 0x8f, 0x60, 0x0a, 0x29, 0x42, 0xc2, 0x3b, - 0x51, 0x00, 0xcf, 0xdf, 0x51, 0x4f, 0xef, 0xb4, 0xaf, 0xff, 0x80, 0x83, - 0x1a, 0xb0, 0x68, 0xaf, 0xc8, 0x8d, 0xd3, 0xa3, 0x45, 0xd5, 0x5b, 0x8b, - 0x9c, 0xa1, 0xb7, 0x1a, 0x5a, 0xed, 0x18, 0xe6, 0x3e, 0xb5, 0xe9, 0xf8, - 0x05, 0xd1, 0x8e, 0xce, 0x69, 0xf1, 0x81, 0x23, 0x37, 0x57, 0x46, 0x06, - 0x46, 0xb9, 0xdc, 0x02, 0x52, 0xf4, 0x79, 0x3f, 0x9f, 0x31, 0x06, 0x17, - 0xf0, 0xa4, 0x79, 0x8c, 0x32, 0x97, 0x88, 0x61, 0xd7, 0xb8, 0xbb, 0x4d, - 0x4c, 0xe8, 0xb0, 0xc4, 0x5d, 0x07, 0x7c, 0xf1, 0x46, 0xe4, 0x41, 0xb1, - 0x64, 0x08, 0x3d, 0x55, 0x21, 0x20, 0xe1, 0xb9, 0x96, 0x22, 0xde, 0xf2, - 0xfd, 0xc7, 0x2f, 0xfa, 0xf3, 0xa1, 0x5d, 0x08, 0xa2, 0x8c, 0x7f, 0xaa, - 0xaa, 0x1d, 0xe6, 0x5b, 0xc5, 0x37, 0x5d, 0x53, 0x96, 0x0c, 0x72, 0x32, - 0x32, 0xad, 0xe5, 0xad, 0xbb, 0x2a, 0xe8, 0x70, 0x57, 0xae, 0x28, 0x57, - 0x4f, 0xbc, 0xf5, 0xd3, 0x87, 0x91, 0x13, 0x8d, 0x16, 0x87, 0x5a, 0xdc, - 0x16, 0x0a, 0x82, 0x13, 0xcd, 0x8f, 0xf0, 0x59, 0x70, 0xe7, 0x50, 0x84, - 0xb2, 0x19, 0x23, 0x50, 0xfc, 0xa1, 0xd8, 0xee, 0x3a, 0x62, 0x59, 0x02, - 0x06, 0xf4, 0x34, 0x65, 0x15, 0x87, 0x00, 0x7d, 0x1d, 0x4a, 0x96, 0xd1, - 0xfc, 0x1e, 0x6a, 0x96, 0xe7, 0x19, 0x76, 0xac, 0x1e, 0x0c, 0xbb, 0x60, - 0x1a, 0x1a, 0x0c, 0x56, 0x51, 0x2b, 0xfc, 0x51, 0xf3, 0x2c, 0xc1, 0x94, - 0xef, 0xbe, 0x49, 0x5f, 0xbb, 0x9f, 0x86, 0x03, 0x06, 0xa3, 0xac, 0xb6, - 0x41, 0x91, 0x2e, 0x71, 0xcb, 0x35, 0xf5, 0x9d, 0x21, 0xda, 0xd2, 0x31, - 0xfe, 0x4d, 0x18, 0x8f, 0x99, 0xc1, 0xd0, 0x7d, 0x8c, 0x6e, 0x08, 0xff, - 0xf9, 0x72, 0x6d, 0xb6, 0x2c, 0x59, 0xf5, 0x1a, 0x82, 0x8f, 0x60, 0xc4, - 0x47, 0x76, 0x68, 0xa3, 0xf0, 0x24, 0xb1, 0xd1, 0x64, 0x81, 0xc0, 0xfe, - 0x0f, 0xc1, 0x5a, 0x49, 0xf6, 0x1c, 0xd8, 0x28, 0xef, 0x99, 0x9a, 0xa0, - 0x36, 0x42, 0x37, 0x86, 0x35, 0x16, 0xc6, 0xd2, 0x35, 0x6c, 0x85, 0xfc, - 0xcb, 0x6e, 0x94, 0x2b, 0xbb, 0xcb, 0x20, 0x7c, 0x2e, 0xe1, 0xe9, 0x46, - 0xf3, 0x3d, 0x2a, 0x17, 0xd8, 0x67, 0xa7, 0x0e, 0x83, 0xd5, 0xf0, 0x06, - 0x6b, 0x90, 0xbe, 0x02, 0x60, 0xe4, 0x10, 0xde, 0xce, 0x88, 0x14, 0x93, - 0x28, 0xdb, 0x58, 0xb2, 0xf0, 0x5f, 0xca, 0xc0, 0x77, 0x82, 0xc2, 0x45, - 0xb1, 0x2d, 0xee, 0xc4, 0xc9, 0x48, 0xff, 0x3e, 0x94, 0xa9, 0x7c, 0xd4, - 0x14, 0xc7, 0x73, 0xc7, 0xea, 0xdd, 0x38, 0xec, 0x4a, 0xc0, 0x2c, 0x07, - 0x27, 0x98, 0x62, 0x66, 0x7c, 0x92, 0x05, 0x5e, 0xcc, 0x88, 0x2c, 0x70, - 0xff, 0x81, 0x87, 0x3e, 0xdd, 0x88, 0xf3, 0x53, 0x79, 0x6d, 0x5f, 0x85, - 0x03, 0xff, 0xdf, 0xfa, 0x5c, 0x35, 0x34, 0xf9, 0x6d, 0x4b, 0x9b, 0x72, - 0x12, 0xd0, 0x54, 0x9f, 0x0b, 0x35, 0xa4, 0xf4, 0x66, 0x1d, 0x9f, 0x7f, - 0x54, 0x68, 0xec, 0xd8, 0x41, 0x54, 0xec, 0xc5, 0xd2, 0xc7, 0x15, 0xf0, - 0x5e, 0xfb, 0xdb, 0x19, 0xf0, 0x6a, 0x5f, 0x7d, 0x84, 0x00, 0xa7, 0x9b, - 0x92, 0xc5, 0x7e, 0x95, 0x7e, 0xe0, 0x1c, 0x4a, 0xa6, 0xc7, 0x9c, 0x5e, - 0xe7, 0x12, 0x4f, 0x8c, 0x68, 0x67, 0xda, 0x1d, 0x12, 0xdc, 0xe3, 0x9b, - 0xd6, 0x6d, 0x3a, 0xf6, 0x8e, 0x24, 0x57, 0x99, 0x05, 0xe4, 0xe8, 0x27, - 0x66, 0x60, 0x74, 0xb4, 0xe1, 0xa2, 0x0e, 0xd6, 0xc4, 0x6f, 0x5a, 0xe4, - 0x6b, 0xd1, 0x05, 0x8f, 0x52, 0x88, 0x37, 0x81, 0x1b, 0xd9, 0xcb, 0x07, - 0xc2, 0x12, 0x38, 0xc6, 0xd2, 0x17, 0xf6, 0x3a, 0x55, 0xd9, 0x26, 0x3b, - 0x29, 0x98, 0xbd, 0x8d, 0x9f, 0x62, 0x01, 0x16, 0xa4, 0x52, 0xe6, 0xd1, - 0xa4, 0x80, 0x3c, 0xc2, 0x79, 0x2c, 0x04, 0xea, 0x30, 0xe4, 0x86, 0x67, - 0xa6, 0xb2, 0x96, 0xcc, 0x21, 0x2f, 0x5b, 0xd7, 0x81, 0xd3, 0x6a, 0x81, - 0xa6, 0x5f, 0x4e, 0xd7, 0x4f, 0xec, 0xae, 0x16, 0xb0, 0x44, 0xef, 0x33, - 0x26, 0xc7, 0x14, 0x1e, 0x2b, 0xc8, 0x6d, 0xdb, 0x4e, 0x0a, 0x66, 0x1d, - 0x56, 0xd2, 0xfa, 0xb4, 0x90, 0xde, 0xe7, 0xea, 0x7d, 0x19, 0xb8, 0x64, - 0xb4, 0x67, 0x3a, 0x20, 0x6a, 0xea, 0x04, 0x31, 0xfb, 0xf5, 0x53, 0xa3, - 0x86, 0x8e, 0x40, 0x98, 0xf0, 0x68, 0xcf, 0xa6, 0xb2, 0xfa, 0xa4, 0x6c, - 0xb3, 0x9f, 0x50, 0x5a, 0x38, 0x1b, 0x55, 0x64, 0x40, 0x16, 0x8e, 0xa2, - 0x7a, 0xa0, 0x35, 0x56, 0xfb, 0xeb, 0x41, 0xc9, 0x21, 0x83, 0x2c, 0xfa, - 0x74, 0xeb, 0xc9, 0xd9, 0x27, 0x67, 0xc4, 0xd4, 0x07, 0x63, 0xb7, 0x83, - 0x19, 0xb4, 0x16, 0xaa, 0x00, 0xf5, 0x02, 0x96, 0xe2, 0x54, 0x77, 0x63, - 0xd5, 0xd4, 0x04, 0x84, 0xa9, 0x10, 0x2a, 0x7a, 0x5a, 0xac, 0x00, 0x26, - 0x22, 0xfa, 0x89, 0x6e, 0x08, 0x7c, 0x9e, 0x42, 0x87, 0x4c, 0x1a, 0x55, - 0x9b, 0x68, 0x6f, 0x96, 0x31, 0x7c, 0x0e, 0x92, 0xf9, 0x11, 0x0d, 0x1f, - 0x70, 0x9b, 0x7b, 0x04, 0x3b, 0x6a, 0xb8, 0x5a, 0x67, 0xaf, 0xc9, 0x60, - 0x63, 0xca, 0x09, 0x29, 0x1a, 0x81, 0xa1, 0xdb, 0xbc, 0x7a, 0x17, 0x50, - 0xa1, 0x18, 0x66, 0x27, 0xd6, 0x22, 0xf3, 0xfb, 0xd0, 0x22, 0x04, 0x8f, - 0xfd, 0x16, 0x1e, 0x76, 0x41, 0x51, 0xbd, 0x66, 0x88, 0x34, 0xb6, 0xae, - 0x67, 0xb8, 0xd5, 0x29, 0x41, 0x05, 0x0e, 0xc7, 0xe6, 0xf5, 0x73, 0xc0, - 0x87, 0xee, 0x63, 0x54, 0x93, 0x1e, 0xd8, 0x4e, 0x31, 0x96, 0x3a, 0xfe, - 0x30, 0x80, 0x33, 0xf4, 0x8c, 0xcb, 0x0b, 0x25, 0x96, 0xd5, 0xdf, 0x0d, - 0x3d, 0x12, 0x54, 0xad, 0x7f, 0xc7, 0xc2, 0xb5, 0x49, 0x8f, 0x3e, 0x10, - 0xb4, 0x42, 0x19, 0xac, 0x77, 0x39, 0x76, 0xe8, 0x37, 0x97, 0x43, 0xbf, - 0xb2, 0x5c, 0x1b, 0x13, 0x73, 0xce, 0xd1, 0x88, 0x95, 0x10, 0xe8, 0x6a, - 0x92, 0x2d, 0x79, 0xfc, 0x14, 0x1b, 0x0c, 0xdf, 0x67, 0x86, 0xea, 0x55, - 0x12, 0xce, 0xdb, 0xd6, 0xad, 0x38, 0xda, 0x8e, 0x73, 0x6a, 0xd8, 0xd0, - 0x55, 0x18, 0xeb, 0xf2, 0x7e, 0x37, 0xe7, 0x90, 0xd7, 0xef, 0xf9, 0x8d, - 0x90, 0x15, 0x80, 0xb7, 0x38, 0x8e, 0xbd, 0x8b, 0x24, 0x90, 0x83, 0x92, - 0x24, 0x39, 0x23, 0x71, 0x2a, 0xef, 0xd9, 0xdd, 0xe3, 0xf2, 0x58, 0x9f, - 0x0a, 0xe0, 0x0d, 0xdb, 0xdc, 0xf8, 0x38, 0x50, 0xc1, 0x4f, 0x7e, 0x39, - 0x46, 0xca, 0xa2, 0xa7, 0xbe, 0xb8, 0xd9, 0x68, 0x5e, 0xce, 0x96, 0x9b, - 0x39, 0x8e, 0x46, 0xc4, 0x1e, 0x26, 0x45, 0x05, 0xe6, 0x58, 0xad, 0x3f, - 0xcd, 0xcb, 0x50, 0xbc, 0xbe, 0x0a, 0x2f, 0xad, 0xe9, 0x9e, 0xd3, 0xd5, - 0xcc, 0x5b, 0x4b, 0x70, 0xae, 0xa6, 0x93, 0x90, 0x31, 0xfc, 0x61, 0xc4, - 0x2a, 0x53, 0xa7, 0x57, 0x54, 0x30, 0x56, 0xfc, 0x5a, 0xd0, 0x4f, 0xc1, - 0x76, 0xa8, 0xf2, 0x2b, 0x73, 0x18, 0xc6, 0xad, 0x7c, 0x35, 0xc2, 0x82, - 0xe0, 0xeb, 0xa8, 0xc6, 0x6b, 0x84, 0xe0, 0x6b, 0x9c, 0xc3, 0x98, 0xb9, - 0xb8, 0x65, 0xb1, 0x41, 0x16, 0x40, 0xeb, 0x1b, 0xe1, 0xca, 0x52, 0x70, - 0x2f, 0xe7, 0xf6, 0x62, 0x87, 0xe6, 0x89, 0x3b, 0x7a, 0x77, 0x8b, 0x81, - 0xdf, 0xff, 0x14, 0xa0, 0xf3, 0x29, 0xd1, 0xea, 0xb8, 0xb9, 0xf6, 0xfe, - 0x2f, 0xea, 0xd5, 0x44, 0x5f, 0x4d, 0x35, 0x76, 0xc6, 0xb4, 0x9b, 0x48, - 0x09, 0x66, 0xec, 0xef, 0x8b, 0xfc, 0xaa, 0x57, 0x7b, 0xc2, 0x5a, 0xaa, - 0x5c, 0x3b, 0x45, 0x56, 0xd5, 0x2b, 0x29, 0xa3, 0xca, 0x98, 0xaa, 0x58, - 0x47, 0xeb, 0x96, 0x22, 0x6d, 0x29, 0x32, 0xdc, 0xf1, 0x12, 0x3c, 0x2a, - 0xcc, 0xdd, 0x55, 0x11, 0x51, 0x62, 0xe6, 0x85, 0xec, 0x7e, 0x65, 0x57, - 0x08, 0xda, 0x5e, 0xf7, 0x7c, 0x83, 0x19, 0xbe, 0x15, 0x85, 0x73, 0xbf, - 0x8a, 0x47, 0xe2, 0x17, 0x78, 0xfc, 0x5b, 0x3b, 0xef, 0x8b, 0xf8, 0xf0, - 0xd3, 0x4e, 0x7c, 0x9a, 0x5b, 0x57, 0xaa, 0x0f, 0x98, 0xd9, 0x69, 0x6d, - 0x37, 0x72, 0x04, 0xd9, 0x32, 0x68, 0x78, 0xa7, 0x30, 0xe3, 0x66, 0xec, - 0x72, 0xcb, 0xca, 0x23, 0xaa, 0xdf, 0x9b, 0x6a, 0x0f, 0x98, 0x3b, 0x17, - 0x14, 0x34, 0x7a, 0xfd, 0xc0, 0x3a, 0xd1, 0xad, 0x49, 0x16, 0xb7, 0x35, - 0x3b, 0x38, 0xf1, 0x85, 0xd9, 0x79, 0x32, 0x40, 0x73, 0x25, 0x3c, 0xcc, - 0x82, 0x1a, 0xe1, 0x2a, 0x67, 0x86, 0x72, 0x94, 0xfc, 0xa5, 0x93, 0xff, - 0x67, 0xe2, 0x34, 0xb5, 0xd6, 0x76, 0x47, 0x38, 0x83, 0xd7, 0xd7, 0x23, - 0xf0, 0x42, 0x95, 0xff, 0x83, 0xde, 0xde, 0xda, 0x15, 0x27, 0xac, 0xf4, - 0x18, 0x9d, 0x33, 0xc6, 0x4b, 0x73, 0xf6, 0xbd, 0xb7, 0xef, 0x34, 0x43, - 0x81, 0xb3, 0x34, 0xff, 0x46, 0xbe, 0x1c, 0x59, 0xd6, 0x4a, 0x66, 0x2b, - 0xf0, 0x62, 0x51, 0x4d, 0x2e, 0x46, 0x3d, 0x09, 0xae, 0x5f, 0xfc, 0xfc, - 0xa9, 0x17, 0x57, 0x12, 0xcb, 0xc4, 0xe7, 0xbe, 0xdb, 0xe8, 0x30, 0xff, - 0x55, 0x6e, 0xdb, 0x36, 0x82, 0xcc, 0xba, 0xc2, 0x67, 0x4a, 0xd0, 0x46, - 0xe3, 0xd3, 0x50, 0x5d, 0x69, 0x01, 0x82, 0x9c, 0x03, 0x7e, 0xfc, 0x49, - 0x3b, 0xbd, 0x9a, 0x2b, 0x36, 0xf1, 0x4a, 0xa0, 0x84, 0x67, 0xea, 0xbf, - 0x7a, 0x45, 0x15, 0x21, 0x53, 0x47, 0xf3, 0xd5, 0x54, 0x73, 0x96, 0x66, - 0x61, 0x15, 0xd0, 0x21, 0x60, 0x5d, 0xc4, 0x70, 0x9a, 0x8e, 0x87, 0x3e, - 0x78, 0x9c, 0xe0, 0xa3, 0x80, 0xfe, 0x07, 0x10, 0xdb, 0xa8, 0x38, 0x4a, - 0xe7, 0x3b, 0x5d, 0x1e, 0x2c, 0xae, 0xf7, 0xd3, 0x66, 0xef, 0x58, 0x50, - 0x4b, 0x03, 0x04, 0x14, 0x00, 0x01, 0x00, 0x08, 0x00, 0xf7, 0x89, 0x59, - 0x3d, 0x49, 0x55, 0xd3, 0xe3, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x35, 0x00, 0x00, 0x00, 0x54, 0x31, 0x3a, 0x58, 0x33, 0x5f, 0x31, - 0x30, 0x31, 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, 0x38, 0x5f, 0x31, 0x5f, - 0x65, 0x78, 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, 0x57, 0x5f, 0x75, 0x6e, - 0x69, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x65, - 0x65, 0x70, 0x72, 0x6f, 0x6d, 0x30, 0x2e, 0x62, 0x69, 0x6e, 0x69, 0x51, - 0x01, 0xe6, 0xb1, 0xf3, 0xe6, 0x0a, 0x5d, 0x59, 0xec, 0x02, 0x66, 0x11, - 0x11, 0xc9, 0x7a, 0x42, 0x38, 0x7f, 0x72, 0x7c, 0x41, 0x75, 0xf1, 0xa4, - 0x29, 0xc4, 0xef, 0xbc, 0x5f, 0x5b, 0xf2, 0x85, 0xb8, 0xc8, 0x66, 0xf1, - 0x22, 0x74, 0xf8, 0x0a, 0xe9, 0xa1, 0x21, 0xda, 0xff, 0x99, 0x8c, 0xaf, - 0x10, 0xd5, 0x04, 0x64, 0x4b, 0x93, 0x64, 0xbb, 0x90, 0xa7, 0x75, 0x1d, - 0x7a, 0xfe, 0x61, 0x5e, 0xba, 0x0c, 0x4f, 0x93, 0xb8, 0x44, 0x33, 0x93, - 0x23, 0x26, 0xfe, 0xc2, 0xff, 0x5c, 0xb4, 0x2b, 0xc3, 0x40, 0xd5, 0xc9, - 0x86, 0xe9, 0x3b, 0xaf, 0x73, 0x6e, 0xe3, 0xa9, 0x7e, 0x49, 0x06, 0xb1, - 0x55, 0xd3, 0x01, 0x8d, 0x98, 0x92, 0xa1, 0x37, 0xbd, 0x29, 0xfc, 0x22, - 0x88, 0x96, 0xa8, 0x0b, 0x24, 0x32, 0xe2, 0x7e, 0x59, 0x76, 0xac, 0x75, - 0xe7, 0x46, 0x28, 0xcf, 0xfd, 0x08, 0xa4, 0x2e, 0x8a, 0x73, 0x4d, 0xb4, - 0xbd, 0xc6, 0x8f, 0x76, 0xb5, 0xab, 0xba, 0x9c, 0x03, 0x8d, 0xe9, 0x94, - 0x1d, 0x9a, 0x14, 0xea, 0x4f, 0x4a, 0x56, 0xb7, 0xc6, 0x69, 0xf2, 0xe5, - 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x01, 0x00, 0x08, 0x00, 0xf7, 0x89, - 0x59, 0x3d, 0xec, 0x91, 0x1c, 0xcd, 0x21, 0x00, 0x00, 0x00, 0x13, 0x00, - 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x54, 0x31, 0x41, 0x3a, 0x58, 0x33, - 0x5f, 0x31, 0x30, 0x31, 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, 0x38, 0x5f, - 0x31, 0x5f, 0x65, 0x78, 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, 0x57, 0x5f, - 0x75, 0x6e, 0x69, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6d, 0x74, 0x5f, 0x63, 0x6d, 0x64, 0x5f, 0x6c, 0x69, 0x6e, - 0x65, 0x2e, 0x74, 0x78, 0x74, 0xd0, 0x59, 0x04, 0x94, 0xaa, 0xb0, 0x1f, - 0xc6, 0x67, 0x8a, 0xbe, 0xbf, 0xb8, 0x54, 0xec, 0x06, 0xf7, 0x74, 0xf9, - 0xfe, 0x46, 0xb5, 0xb0, 0x57, 0x62, 0x7f, 0xed, 0x60, 0x60, 0x67, 0x80, - 0xdf, 0x8c, 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x01, 0x00, 0x08, 0x00, - 0xf7, 0x89, 0x59, 0x3d, 0x83, 0xee, 0x9e, 0xbf, 0x4b, 0xba, 0x02, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x35, 0x00, 0x00, 0x00, 0x54, 0x31, 0x41, 0x3a, - 0x58, 0x33, 0x5f, 0x31, 0x30, 0x31, 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, - 0x38, 0x5f, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, - 0x57, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x30, 0x2e, 0x62, 0x69, - 0x6e, 0x5d, 0x6b, 0xe1, 0x46, 0xd9, 0x2f, 0xc2, 0xbd, 0x6e, 0xd8, 0xde, - 0x34, 0xd5, 0xbf, 0x2e, 0x12, 0x55, 0xc5, 0xad, 0x80, 0xbe, 0xf5, 0xd4, - 0xc2, 0x12, 0x30, 0xe1, 0xf1, 0xe3, 0x2e, 0x81, 0x48, 0x7f, 0xfd, 0x0b, - 0xf9, 0xa0, 0xc3, 0xb1, 0x97, 0x11, 0x76, 0x64, 0x38, 0x30, 0x67, 0xc8, - 0x40, 0x4b, 0xb9, 0x7f, 0xa0, 0x01, 0x40, 0x86, 0x65, 0xfa, 0x8c, 0xc1, - 0x56, 0x16, 0x1d, 0xeb, 0x68, 0xac, 0xea, 0x4d, 0xc1, 0x17, 0x20, 0x1e, - 0x98, 0x56, 0xc5, 0x45, 0x51, 0xe3, 0x58, 0xdf, 0x47, 0x1d, 0xcf, 0x6b, - 0x78, 0xcd, 0xba, 0xce, 0x51, 0x0c, 0x87, 0x79, 0x05, 0x99, 0x4f, 0xe3, - 0x17, 0x9b, 0xf7, 0xf2, 0xee, 0xa0, 0xab, 0x14, 0x97, 0xd0, 0x3a, 0x89, - 0xc8, 0x21, 0x85, 0x11, 0x7c, 0xab, 0x06, 0x84, 0x5f, 0x53, 0x9c, 0x0e, - 0x4e, 0x3b, 0x63, 0x66, 0xab, 0x49, 0xcf, 0xdd, 0x9a, 0x8c, 0x9b, 0x0e, - 0x9d, 0x38, 0x47, 0x48, 0xa4, 0x16, 0xe4, 0x45, 0xa5, 0x09, 0x94, 0x41, - 0x47, 0xf4, 0x44, 0xce, 0x54, 0xc8, 0xe5, 0xfd, 0x71, 0x4f, 0x16, 0x2d, - 0x72, 0x30, 0xa1, 0x06, 0x14, 0xc6, 0x31, 0x80, 0xd6, 0x27, 0x12, 0x90, - 0xfc, 0x91, 0x9a, 0xaf, 0xcd, 0x89, 0x6d, 0x57, 0x1a, 0xd7, 0xea, 0xfa, - 0x92, 0x03, 0xb7, 0xdb, 0xa9, 0xef, 0xd1, 0xbe, 0x5d, 0x52, 0x33, 0x29, - 0xd4, 0xdb, 0x04, 0x3f, 0x3f, 0xb9, 0xf7, 0x60, 0x9d, 0xb7, 0x9d, 0xf1, - 0xef, 0x1b, 0x83, 0xea, 0xfb, 0xcc, 0xa0, 0xbc, 0x51, 0x70, 0x4c, 0xe5, - 0xb1, 0xfe, 0xcd, 0xc2, 0x7f, 0x04, 0xdd, 0x31, 0xdb, 0xac, 0x31, 0x4c, - 0x87, 0xcd, 0x02, 0xab, 0x5e, 0x64, 0x2a, 0xa1, 0xa2, 0xb8, 0x34, 0x6a, - 0xe6, 0x49, 0x36, 0x47, 0x8d, 0x8e, 0x2f, 0xcd, 0xad, 0x3c, 0xff, 0x12, - 0x48, 0xb6, 0xb0, 0xa2, 0x48, 0x22, 0xd7, 0xa7, 0x5c, 0xe1, 0x07, 0xd1, - 0xe7, 0x18, 0x6f, 0xf6, 0xa0, 0x69, 0x0b, 0xf6, 0xcd, 0x8d, 0xba, 0x82, - 0xc9, 0xa2, 0xa4, 0x2c, 0xb4, 0x83, 0xe2, 0xa8, 0x8f, 0x2e, 0x15, 0xbb, - 0x30, 0x69, 0xb3, 0xf5, 0x7e, 0xbb, 0x47, 0x70, 0xef, 0xb5, 0x61, 0x70, - 0x44, 0xe6, 0x79, 0x5e, 0x66, 0x77, 0x03, 0x50, 0xbe, 0x0a, 0xeb, 0x03, - 0xf8, 0x42, 0xe3, 0x20, 0x5d, 0x42, 0xe2, 0xb0, 0x11, 0xd9, 0xeb, 0x3f, - 0x48, 0x71, 0x29, 0x76, 0x60, 0xa9, 0xf8, 0xe8, 0x3d, 0x0f, 0xd1, 0x7e, - 0x0b, 0x86, 0xc8, 0x38, 0xe8, 0x27, 0x18, 0xab, 0x62, 0x75, 0xf9, 0x54, - 0x91, 0x05, 0x55, 0x27, 0x4c, 0x7e, 0x76, 0x99, 0xa5, 0x6d, 0x3e, 0x91, - 0x1a, 0x47, 0x18, 0xfa, 0x0a, 0xfd, 0xac, 0xfd, 0xea, 0xcb, 0x62, 0x10, - 0x45, 0x6a, 0x21, 0x30, 0x06, 0xbf, 0x9b, 0xbd, 0x1c, 0x54, 0xc8, 0x17, - 0x80, 0xf3, 0x89, 0x1e, 0x49, 0xe4, 0x6e, 0xad, 0xce, 0xb0, 0x0c, 0x40, - 0xe4, 0xb4, 0xc5, 0xb2, 0xd1, 0x6e, 0x1a, 0xa5, 0x49, 0xda, 0x37, 0x33, - 0x7e, 0xca, 0xf8, 0xad, 0xae, 0x6e, 0xbc, 0x23, 0x93, 0xdf, 0xb4, 0xae, - 0x9b, 0xce, 0xf6, 0xf1, 0x9e, 0x38, 0x57, 0x31, 0xdd, 0x7e, 0x7e, 0x5e, - 0x69, 0x2e, 0xab, 0x26, 0x84, 0xf8, 0x19, 0x17, 0xa6, 0x89, 0x80, 0x30, - 0x70, 0xcf, 0xd2, 0x17, 0x01, 0x26, 0xd8, 0xd5, 0xfc, 0xbc, 0x87, 0x5e, - 0x7a, 0xf7, 0x57, 0xde, 0x32, 0x4d, 0x7b, 0xaf, 0x11, 0xcd, 0x07, 0x5e, - 0x61, 0x98, 0x75, 0x54, 0x5a, 0x1d, 0x60, 0x47, 0x56, 0x4a, 0xff, 0xc8, - 0xae, 0xca, 0xf2, 0x43, 0x07, 0x3e, 0x7a, 0x7d, 0xf1, 0xd7, 0xb9, 0xcd, - 0x05, 0xf9, 0xb9, 0xa4, 0x3f, 0x6b, 0xab, 0x3b, 0x99, 0xc7, 0x7d, 0x20, - 0xa7, 0x1b, 0x12, 0x12, 0xd2, 0xf6, 0x86, 0x79, 0xa7, 0x0f, 0x12, 0x7f, - 0x7e, 0xb1, 0x18, 0xda, 0x92, 0x51, 0xca, 0x7d, 0xe6, 0x20, 0x0d, 0x70, - 0xb4, 0xd3, 0xf3, 0x53, 0x2d, 0xc6, 0x8f, 0x4c, 0xee, 0x5a, 0x11, 0x6f, - 0xaa, 0x4d, 0x9f, 0x66, 0xf2, 0x3b, 0x7d, 0xb6, 0xea, 0x9e, 0xc6, 0x05, - 0x11, 0x8c, 0x64, 0x57, 0xea, 0xb8, 0xf2, 0x3e, 0x8a, 0xd3, 0xa3, 0xfa, - 0x2a, 0xe6, 0x36, 0x5f, 0x9f, 0x88, 0x21, 0x40, 0x07, 0x3a, 0x49, 0x54, - 0x1e, 0x8d, 0x68, 0x8c, 0x1d, 0x27, 0x22, 0xd1, 0x54, 0x48, 0x32, 0xe2, - 0xe2, 0x48, 0xe7, 0x5b, 0xb0, 0x23, 0xeb, 0x93, 0xbd, 0xf2, 0x10, 0x89, - 0xfc, 0x9c, 0x91, 0x20, 0x43, 0x59, 0x5c, 0xc0, 0x20, 0xfe, 0xea, 0x9d, - 0x66, 0x51, 0xf7, 0x12, 0x8f, 0x41, 0xdf, 0x23, 0x67, 0x0e, 0x1c, 0xd2, - 0x98, 0x37, 0x8d, 0x8d, 0x07, 0x98, 0xd5, 0x69, 0x98, 0x13, 0xcf, 0x5c, - 0x7e, 0x32, 0xdb, 0xe5, 0x6b, 0x8f, 0x0f, 0x7a, 0x0f, 0xa8, 0xce, 0x67, - 0xa9, 0x0e, 0xc1, 0x6e, 0x34, 0xbe, 0x5b, 0xe2, 0x10, 0xe5, 0xcb, 0x5c, - 0x21, 0xf2, 0x3a, 0x86, 0x15, 0x6f, 0x35, 0x2d, 0xba, 0x20, 0xb3, 0xf9, - 0x8d, 0x18, 0x89, 0xb1, 0x9d, 0x6d, 0x2a, 0x18, 0x43, 0x50, 0xc3, 0x3d, - 0x53, 0x42, 0x42, 0xaf, 0x58, 0xc5, 0xf6, 0xc7, 0x9c, 0x79, 0xa6, 0x87, - 0x35, 0x56, 0xf5, 0xa7, 0x47, 0x23, 0xbf, 0x50, 0x84, 0x73, 0x72, 0xfc, - 0xd4, 0x7f, 0x3a, 0xd5, 0xe2, 0xb7, 0x67, 0xe4, 0x1c, 0xec, 0x4e, 0xe9, - 0xe8, 0x3f, 0xc4, 0xef, 0xfa, 0xcf, 0x42, 0x27, 0xcc, 0x2a, 0x11, 0x94, - 0x25, 0x73, 0x9c, 0x40, 0xb6, 0x1d, 0x77, 0xa9, 0x88, 0xe4, 0x86, 0x79, - 0xcd, 0xb8, 0xc6, 0x95, 0x84, 0xb3, 0x09, 0x0b, 0x18, 0x06, 0xf3, 0x2c, - 0x41, 0x98, 0xe0, 0xdc, 0x82, 0x4f, 0xd2, 0xf8, 0x80, 0x87, 0x54, 0xa0, - 0xca, 0x4e, 0x64, 0x51, 0x66, 0xcc, 0xc5, 0xce, 0x21, 0x96, 0x26, 0x1d, - 0x06, 0x9f, 0xb6, 0x54, 0x4a, 0x03, 0xdf, 0x37, 0x6e, 0xfc, 0xf2, 0x75, - 0x76, 0xf4, 0x26, 0x5b, 0xa2, 0xfe, 0xca, 0xf6, 0x0a, 0x36, 0xe3, 0x65, - 0xa3, 0x3d, 0x1d, 0x56, 0x76, 0xfe, 0xfe, 0x23, 0xf9, 0xbb, 0x1e, 0xed, - 0xc0, 0xe5, 0x6d, 0x8f, 0xc9, 0xd5, 0x8b, 0xf6, 0xf5, 0x0f, 0x3d, 0xb2, - 0xb6, 0xdc, 0x5a, 0x4f, 0xcb, 0xdb, 0x1c, 0xfd, 0xe6, 0x20, 0x38, 0xef, - 0xd9, 0xc6, 0x71, 0xfd, 0xe1, 0x88, 0x30, 0x38, 0x82, 0xe5, 0xa8, 0xd9, - 0x4a, 0x69, 0xd5, 0x56, 0x55, 0x17, 0x77, 0x25, 0x50, 0x7e, 0x5f, 0xfc, - 0xa8, 0x9a, 0x05, 0xc1, 0xb2, 0x47, 0x98, 0x76, 0x56, 0xaa, 0x54, 0xf2, - 0xe2, 0x27, 0xaa, 0x1f, 0xfd, 0x53, 0x8e, 0xfa, 0x98, 0xa2, 0x93, 0x0c, - 0x64, 0xc9, 0x45, 0x6d, 0xfc, 0x3e, 0x6e, 0xac, 0xfe, 0x94, 0x38, 0x72, - 0xd2, 0x31, 0x52, 0x85, 0x61, 0xca, 0x92, 0xac, 0xdc, 0x7f, 0x8d, 0x1b, - 0x6a, 0x37, 0x86, 0xa2, 0x7a, 0xbb, 0x74, 0xe3, 0x2d, 0xe4, 0x29, 0x69, - 0x9c, 0x11, 0xcd, 0x4f, 0x12, 0xd9, 0xf6, 0xe0, 0xe2, 0x31, 0x46, 0xc1, - 0x22, 0x48, 0x7b, 0xd0, 0x1b, 0xca, 0x2f, 0x0e, 0xf4, 0xc9, 0xf1, 0xd2, - 0xc4, 0x69, 0x22, 0x78, 0xfe, 0xb2, 0x61, 0xee, 0x93, 0x75, 0x1a, 0xb4, - 0xfd, 0xa5, 0x47, 0x2c, 0x5a, 0x0c, 0x54, 0x66, 0xd2, 0xb8, 0xb6, 0xfb, - 0x8e, 0xd7, 0xe3, 0xe8, 0x0f, 0x04, 0xcc, 0x4a, 0x88, 0x3b, 0xa2, 0xd8, - 0x66, 0xd1, 0x36, 0x5d, 0xf0, 0x78, 0xc4, 0x31, 0x66, 0xb0, 0xbf, 0x1a, - 0xfe, 0x74, 0x60, 0x46, 0x4d, 0xc7, 0x77, 0xa8, 0x82, 0x10, 0x26, 0xbf, - 0x2c, 0x2f, 0x18, 0x17, 0x7a, 0xdf, 0x88, 0x37, 0xc0, 0xfd, 0x7b, 0x1b, - 0xf4, 0xb4, 0x2f, 0xa7, 0x0f, 0x8b, 0x39, 0x18, 0x7f, 0xc5, 0x0e, 0xd4, - 0x1f, 0xa5, 0x84, 0xc4, 0x29, 0xa8, 0x74, 0xcd, 0x6d, 0x32, 0x01, 0x56, - 0x20, 0x82, 0xbf, 0x1a, 0x50, 0x4f, 0xee, 0x39, 0x28, 0x58, 0x28, 0x51, - 0xc5, 0x55, 0x59, 0x7a, 0x6e, 0x62, 0x89, 0xaf, 0x1a, 0xa5, 0xd4, 0xc0, - 0x47, 0xce, 0xf8, 0xd7, 0x99, 0xea, 0x0c, 0x52, 0x62, 0xeb, 0xe4, 0x0a, - 0x6f, 0x47, 0x81, 0x95, 0x40, 0x8f, 0x53, 0xb0, 0x19, 0x51, 0x44, 0x0b, - 0xc9, 0xc0, 0x3f, 0x7c, 0xa6, 0xe5, 0xdc, 0x94, 0x7d, 0x30, 0xeb, 0x30, - 0xfe, 0x67, 0x17, 0x35, 0x34, 0x1c, 0x26, 0xec, 0xa6, 0x42, 0x0b, 0xa1, - 0x44, 0xc3, 0x49, 0xd3, 0x2c, 0xd0, 0xf0, 0xc8, 0x8b, 0x6a, 0xee, 0xe6, - 0x64, 0x81, 0xa2, 0x42, 0x36, 0x90, 0x20, 0x3e, 0xe1, 0xfb, 0x7b, 0x21, - 0x3c, 0x6f, 0x97, 0x65, 0x76, 0x64, 0x29, 0x4c, 0xff, 0xcf, 0xfe, 0x39, - 0x3c, 0xf8, 0xeb, 0x2b, 0xca, 0x17, 0x92, 0xf9, 0xf2, 0xff, 0xb2, 0x91, - 0x91, 0x8f, 0x7b, 0x94, 0x64, 0x58, 0x80, 0x7f, 0xd1, 0xc8, 0x0f, 0x55, - 0x50, 0xcf, 0x21, 0x01, 0xf6, 0x6c, 0xaa, 0x1a, 0x40, 0x98, 0x92, 0xd4, - 0x98, 0xb2, 0xc7, 0x22, 0x41, 0x72, 0xda, 0x36, 0x19, 0xbf, 0xbb, 0xfb, - 0x70, 0x09, 0x98, 0xaf, 0x1a, 0xa2, 0x13, 0xe1, 0x03, 0x41, 0xed, 0x50, - 0xf5, 0xfc, 0xfd, 0xd7, 0xa4, 0xda, 0xed, 0x0f, 0xd0, 0xc3, 0x88, 0x0a, - 0x6d, 0x44, 0xdc, 0x1a, 0x74, 0x07, 0x23, 0xbf, 0xeb, 0x0f, 0xb6, 0x7b, - 0xa0, 0x23, 0x0c, 0xe6, 0xba, 0xc9, 0x1f, 0x19, 0x14, 0x2d, 0x3c, 0x81, - 0xa6, 0x02, 0x39, 0xc4, 0x7b, 0xfa, 0xd1, 0xc9, 0x3f, 0x67, 0x0a, 0xdc, - 0xe1, 0xfc, 0x6c, 0x0e, 0x2d, 0x2f, 0x8a, 0x03, 0x22, 0x86, 0x2e, 0x3f, - 0xda, 0xa4, 0xc0, 0x58, 0xd4, 0xc9, 0x03, 0xb0, 0x92, 0x41, 0x6b, 0xeb, - 0x67, 0x98, 0xd1, 0xae, 0xdd, 0xf6, 0x84, 0x15, 0x57, 0x74, 0x2b, 0x35, - 0x87, 0xe8, 0xb2, 0xb3, 0x4b, 0xa8, 0x5a, 0xf1, 0x21, 0x3a, 0x59, 0x84, - 0x41, 0x36, 0xef, 0x27, 0xa8, 0x63, 0x01, 0x88, 0xb6, 0x88, 0xfd, 0xa9, - 0xff, 0xf1, 0x33, 0xfa, 0x71, 0x31, 0x0f, 0x6b, 0x1e, 0xa0, 0xbb, 0x79, - 0x49, 0xc4, 0xd1, 0x3f, 0xf2, 0x9e, 0xbd, 0x6f, 0x68, 0x76, 0x35, 0x5e, - 0xdc, 0xfe, 0x68, 0x9b, 0x4b, 0xa4, 0x43, 0x54, 0x99, 0x19, 0x22, 0xd9, - 0x08, 0xfc, 0xfe, 0x60, 0x96, 0x19, 0x8e, 0xb3, 0xe6, 0x85, 0x37, 0x32, - 0x57, 0x78, 0x32, 0xee, 0x2c, 0xc5, 0xb5, 0xd1, 0xbf, 0xe2, 0x94, 0xf2, - 0x2b, 0xa8, 0x93, 0x7b, 0xad, 0x4c, 0x14, 0xd9, 0x21, 0xc8, 0xf3, 0x37, - 0x40, 0x8d, 0xd4, 0xb6, 0x0f, 0x73, 0xd4, 0xc7, 0x4c, 0xdf, 0x48, 0xe8, - 0xf4, 0x8d, 0x47, 0x69, 0x5f, 0x9f, 0x75, 0x68, 0x97, 0x57, 0x6d, 0xeb, - 0x34, 0xb1, 0x0c, 0xdb, 0xa6, 0x02, 0x8a, 0x72, 0x00, 0xbb, 0x35, 0xd2, - 0x48, 0xc7, 0x1a, 0x47, 0xbc, 0x87, 0x1a, 0x42, 0xa4, 0x31, 0xaa, 0xa0, - 0xb0, 0x7e, 0x19, 0x2f, 0xd9, 0x0d, 0xbc, 0x18, 0x69, 0xe2, 0x0e, 0xb8, - 0x58, 0xb3, 0xe6, 0x31, 0x48, 0x16, 0xb6, 0xea, 0x51, 0x67, 0x71, 0x94, - 0xf6, 0x91, 0x7e, 0xfd, 0x84, 0x8d, 0x72, 0xf6, 0xe4, 0x75, 0xbb, 0x1a, - 0x4b, 0xb2, 0xb0, 0x69, 0xda, 0x4a, 0xc6, 0xde, 0x0a, 0x95, 0xa6, 0xf0, - 0x00, 0x67, 0xe1, 0xbe, 0x31, 0xc5, 0x11, 0xa6, 0x4a, 0x8f, 0xd1, 0x08, - 0x83, 0x0b, 0x82, 0xb0, 0x3e, 0x8a, 0x5d, 0xb9, 0x59, 0xef, 0xd5, 0xd9, - 0x73, 0xeb, 0x81, 0x25, 0x28, 0xa3, 0x4c, 0xb5, 0xeb, 0xff, 0xcb, 0x88, - 0x69, 0x20, 0xa4, 0xaf, 0x94, 0x66, 0xfa, 0x8a, 0x96, 0x81, 0x74, 0xe7, - 0xac, 0x64, 0x24, 0x79, 0x92, 0xb1, 0xc1, 0xcd, 0xab, 0x7a, 0x89, 0x73, - 0x35, 0x15, 0xe6, 0xc4, 0x4c, 0x92, 0xcb, 0x28, 0x97, 0xaa, 0x49, 0x34, - 0xfe, 0x14, 0x0e, 0x96, 0x2a, 0x59, 0x49, 0x1d, 0x82, 0x2d, 0x43, 0xaa, - 0x27, 0x04, 0xaf, 0x83, 0x0f, 0xcc, 0xba, 0xe3, 0xd3, 0xd1, 0x2b, 0x68, - 0xa6, 0x7d, 0x3d, 0x64, 0xe2, 0x5b, 0xb1, 0x27, 0x8e, 0x3d, 0x54, 0x5f, - 0x88, 0xa5, 0x81, 0x8f, 0xf8, 0x35, 0x1f, 0xa2, 0x7a, 0xcc, 0x69, 0xf1, - 0x1b, 0x50, 0x63, 0x38, 0x1c, 0x40, 0xfd, 0x53, 0x44, 0xd6, 0x6c, 0x10, - 0x35, 0xbe, 0xee, 0xcf, 0xa7, 0xc0, 0x82, 0xac, 0x41, 0x0d, 0xb6, 0xf4, - 0x24, 0x44, 0x44, 0xd9, 0xdf, 0xa9, 0xad, 0x0d, 0x6d, 0x78, 0xfe, 0x77, - 0xfd, 0x31, 0x88, 0x77, 0xf0, 0x45, 0x5f, 0x14, 0x9b, 0xb7, 0xc0, 0x59, - 0xc7, 0x6f, 0xc4, 0xcd, 0xb0, 0x33, 0x1c, 0xdd, 0xda, 0x45, 0x23, 0xbb, - 0xda, 0x45, 0xd3, 0x14, 0xc3, 0xbc, 0x80, 0xc0, 0x46, 0x47, 0x84, 0x8c, - 0x87, 0xb1, 0x8c, 0x6d, 0xb1, 0xf7, 0x72, 0x4a, 0x76, 0x79, 0x56, 0x47, - 0xcd, 0x33, 0x52, 0xc5, 0x2e, 0xf1, 0xa8, 0x75, 0x9c, 0x86, 0xfa, 0x88, - 0xaf, 0x1b, 0x94, 0xc5, 0xa8, 0x89, 0x8a, 0x60, 0xe8, 0x3c, 0xdc, 0xd7, - 0x5e, 0xa2, 0x26, 0x20, 0xa9, 0x6a, 0x37, 0xca, 0x99, 0x69, 0xb0, 0xa7, - 0xab, 0xfb, 0x57, 0x19, 0xe9, 0x8e, 0xe6, 0x54, 0xc1, 0x15, 0x7d, 0x4e, - 0x00, 0x86, 0x11, 0x3b, 0x19, 0x37, 0x1d, 0xd4, 0x89, 0x40, 0x68, 0x05, - 0x55, 0x3a, 0x47, 0x40, 0x05, 0xc7, 0x30, 0xdf, 0x0e, 0x7b, 0xdc, 0xe3, - 0x77, 0x54, 0x11, 0x29, 0x18, 0x99, 0xd1, 0xc0, 0x86, 0x6d, 0xe3, 0x8e, - 0xa7, 0x62, 0x92, 0x48, 0xe5, 0xff, 0x48, 0x4e, 0xe3, 0xe7, 0xa8, 0x87, - 0xea, 0x2a, 0xb7, 0xf4, 0x27, 0xf2, 0x59, 0xf4, 0x6c, 0x09, 0xc6, 0x9b, - 0xcb, 0xaa, 0xc0, 0xe6, 0x1d, 0xd8, 0x67, 0xc8, 0xbe, 0x7b, 0xce, 0xb0, - 0xf5, 0x0b, 0x6b, 0x1c, 0xb5, 0x9f, 0x80, 0x5d, 0xb5, 0x35, 0x60, 0xa3, - 0x24, 0x34, 0x8a, 0xc6, 0x55, 0x0a, 0xb3, 0x5e, 0xcc, 0x78, 0xfd, 0x6e, - 0x7f, 0x6d, 0x37, 0x3d, 0xe8, 0x89, 0xc5, 0xb7, 0xc8, 0x87, 0xb5, 0x2b, - 0x4c, 0x30, 0xe8, 0xb6, 0x95, 0xa2, 0x1f, 0x0b, 0x6d, 0x09, 0xf2, 0xfb, - 0xe1, 0x4a, 0x42, 0x84, 0x5d, 0xf0, 0xf8, 0x45, 0x3f, 0xf4, 0x5c, 0xd0, - 0xc4, 0x95, 0x37, 0xf6, 0xd7, 0xc7, 0xca, 0xd3, 0x9e, 0x27, 0xbb, 0xdf, - 0x42, 0x18, 0x14, 0xea, 0xef, 0xc6, 0xc5, 0x38, 0xfa, 0x49, 0xd0, 0xc0, - 0xfd, 0x27, 0xb6, 0xc1, 0xd8, 0x72, 0xfc, 0x7c, 0x60, 0x8f, 0x36, 0x05, - 0xec, 0xb1, 0x52, 0x23, 0xca, 0xb2, 0x40, 0xbd, 0xed, 0x9b, 0x0c, 0x23, - 0x79, 0x95, 0x29, 0xb5, 0x46, 0x8c, 0x23, 0x91, 0xa6, 0x54, 0xdf, 0x7e, - 0x50, 0x6e, 0x94, 0x79, 0xa2, 0xc2, 0xfc, 0xf4, 0x23, 0x4e, 0xe8, 0x6c, - 0x82, 0x76, 0x7c, 0x7a, 0x49, 0x1c, 0xc9, 0x61, 0x67, 0xe2, 0xed, 0x85, - 0xff, 0x8c, 0xbf, 0x70, 0x81, 0x2f, 0x39, 0x01, 0x7e, 0xdc, 0x03, 0xd1, - 0xdd, 0x93, 0xf1, 0xcd, 0xb1, 0x83, 0x43, 0xf9, 0x9a, 0xa2, 0xa8, 0x3f, - 0x0a, 0x8f, 0xf2, 0x7b, 0x06, 0x27, 0x37, 0x75, 0x4f, 0x64, 0xac, 0x68, - 0xb8, 0x92, 0x6c, 0x1e, 0xd3, 0xb3, 0xdf, 0x90, 0xaa, 0xdc, 0xfb, 0x3d, - 0x54, 0xad, 0xec, 0x10, 0x93, 0x64, 0x6a, 0x2a, 0x81, 0xff, 0xbb, 0x6c, - 0x19, 0x72, 0x92, 0x09, 0x99, 0x52, 0x82, 0x59, 0x2e, 0x7c, 0x1c, 0x9f, - 0x35, 0x38, 0xf7, 0xca, 0xed, 0x20, 0xec, 0xdb, 0x63, 0x26, 0x4b, 0x34, - 0x97, 0x49, 0x27, 0x3c, 0x2b, 0x21, 0xf4, 0xa5, 0xb5, 0xb9, 0xef, 0xac, - 0x15, 0x93, 0x10, 0xf2, 0xe8, 0xe4, 0x02, 0xaf, 0x45, 0x89, 0x5e, 0xf8, - 0x59, 0x89, 0x08, 0x39, 0x05, 0x13, 0x92, 0xf4, 0x50, 0xec, 0x7c, 0xeb, - 0xd5, 0xdf, 0x51, 0x49, 0xda, 0x2b, 0xd1, 0x6a, 0x78, 0xa0, 0x3d, 0x22, - 0x28, 0x83, 0x3f, 0x37, 0x04, 0x87, 0x31, 0x38, 0xd6, 0x7a, 0x18, 0xeb, - 0x61, 0x10, 0xf3, 0x46, 0x6f, 0x65, 0x0a, 0xfa, 0x85, 0x43, 0x2c, 0x4c, - 0xd0, 0xa2, 0xa7, 0x10, 0x54, 0x54, 0xce, 0xeb, 0x3b, 0x9a, 0x5f, 0xc7, - 0x6c, 0x5a, 0x29, 0xf1, 0x8e, 0x62, 0x2c, 0xfb, 0x98, 0x97, 0x7b, 0x5a, - 0x6b, 0x47, 0xdc, 0x89, 0xb4, 0x88, 0x9d, 0xf1, 0xa7, 0x6d, 0xe8, 0x59, - 0x3d, 0x27, 0xe6, 0xe9, 0xcd, 0x12, 0xe2, 0x1a, 0x21, 0x88, 0x0e, 0x36, - 0x0f, 0x12, 0x10, 0x93, 0xaa, 0x16, 0x42, 0xce, 0x4d, 0x88, 0xf1, 0x35, - 0x99, 0xa4, 0x60, 0xac, 0xfb, 0x42, 0xd8, 0x60, 0x85, 0xe2, 0xbd, 0x10, - 0x32, 0x9d, 0xb0, 0xa6, 0x01, 0xab, 0xa1, 0x4e, 0x94, 0x06, 0xfb, 0x3b, - 0xf4, 0x01, 0x5d, 0x31, 0x51, 0x75, 0xaa, 0x72, 0x0f, 0xed, 0xc1, 0x98, - 0x99, 0xbb, 0xcc, 0x18, 0x51, 0xec, 0x62, 0x39, 0xf6, 0x4e, 0x68, 0xe8, - 0xb9, 0x3e, 0x4a, 0xb6, 0x86, 0x22, 0x9b, 0xba, 0x9a, 0xc4, 0x20, 0xa2, - 0x5a, 0x33, 0x4e, 0x5c, 0xfa, 0x9e, 0x0e, 0x00, 0xaa, 0x05, 0x2c, 0x19, - 0xf3, 0xcf, 0xc1, 0x88, 0x3d, 0x46, 0x43, 0x36, 0x66, 0x39, 0xce, 0x68, - 0x83, 0xa8, 0xb1, 0x6e, 0x02, 0xb2, 0x84, 0xe0, 0xf0, 0x66, 0xca, 0x61, - 0x7c, 0x9b, 0x80, 0x73, 0x0a, 0xa8, 0xa4, 0xe3, 0xf4, 0x86, 0x9c, 0xc2, - 0x66, 0x06, 0x8e, 0xb7, 0x61, 0x2e, 0x19, 0x68, 0x86, 0x14, 0x2b, 0x2f, - 0x31, 0x30, 0xc1, 0xb1, 0x61, 0x67, 0xfc, 0xab, 0x05, 0xda, 0x04, 0x0a, - 0xd0, 0x28, 0x29, 0xdc, 0x7a, 0x6a, 0x3b, 0x11, 0x23, 0x73, 0xf7, 0x1b, - 0x74, 0xab, 0xf5, 0x60, 0x3b, 0xe4, 0x54, 0x24, 0xca, 0x0a, 0x73, 0xf4, - 0xc1, 0x6d, 0x28, 0xcd, 0xdb, 0x87, 0xf3, 0xcd, 0xdf, 0x0b, 0x74, 0x03, - 0xc6, 0xc9, 0x9f, 0x36, 0x4a, 0x5d, 0xb6, 0x21, 0x54, 0x54, 0x8c, 0x9c, - 0xfd, 0x9d, 0xaa, 0xf9, 0xc0, 0x1f, 0x7b, 0xfc, 0x4e, 0x89, 0x75, 0x0a, - 0x5c, 0x7c, 0x6c, 0x3e, 0x3d, 0xa4, 0xcf, 0x0c, 0xd4, 0xff, 0x1c, 0x21, - 0x7a, 0x2b, 0xc4, 0x6e, 0x46, 0xe4, 0x85, 0xda, 0xc8, 0x99, 0x88, 0x04, - 0x1a, 0xbc, 0xb8, 0x9f, 0xb7, 0x42, 0x6b, 0x5c, 0xdc, 0x10, 0xf8, 0x8b, - 0xab, 0x1b, 0x78, 0xbb, 0xb0, 0x0f, 0xe4, 0x2d, 0x61, 0x23, 0x5a, 0xed, - 0xf3, 0x2f, 0x42, 0x81, 0x3c, 0x45, 0xa8, 0xa0, 0xd4, 0xf0, 0x2b, 0xbd, - 0x83, 0x7e, 0x80, 0x52, 0x13, 0x0a, 0x8d, 0xdc, 0xc0, 0x01, 0x68, 0x0e, - 0x36, 0xd9, 0xe5, 0x23, 0x9b, 0xbd, 0x38, 0xdc, 0xe6, 0x5b, 0x66, 0x33, - 0xf3, 0xfc, 0x47, 0x48, 0x84, 0xd7, 0x25, 0x36, 0xb1, 0x8d, 0xf7, 0x16, - 0x27, 0xa2, 0xbf, 0x3f, 0xe5, 0xd8, 0xd3, 0x0b, 0x19, 0x9b, 0xda, 0x94, - 0x36, 0xf5, 0xd0, 0x62, 0xfb, 0x65, 0x6e, 0x8e, 0x7b, 0x4c, 0x7d, 0x1e, - 0x69, 0x03, 0xc8, 0x65, 0xe9, 0xbc, 0x2b, 0x5c, 0x0a, 0xf6, 0x13, 0x37, - 0xe6, 0xd3, 0x65, 0x38, 0xe0, 0xfa, 0x7d, 0x06, 0x48, 0x60, 0x32, 0x09, - 0x01, 0x81, 0x36, 0x44, 0x51, 0xe2, 0xe4, 0x93, 0x4f, 0x35, 0xbb, 0xf6, - 0x4d, 0x39, 0xc6, 0x36, 0xaa, 0xc8, 0x66, 0xef, 0x4a, 0xe4, 0x84, 0xd8, - 0x87, 0x09, 0xfb, 0x66, 0x63, 0x8e, 0x6d, 0x58, 0x12, 0xd5, 0x37, 0x1b, - 0x62, 0xbd, 0xf1, 0x4c, 0x71, 0x19, 0x58, 0x73, 0x4c, 0x61, 0x71, 0xf2, - 0xa8, 0x37, 0x7f, 0x45, 0x46, 0xab, 0xcf, 0x73, 0x8d, 0xc8, 0xc3, 0x44, - 0x51, 0xf9, 0x8a, 0xcd, 0xa6, 0xf2, 0x48, 0x4f, 0x35, 0xa5, 0x31, 0x37, - 0x28, 0xbe, 0xa4, 0x2c, 0xfe, 0x79, 0x5f, 0x48, 0x46, 0x79, 0xc3, 0x13, - 0x2e, 0xf5, 0x60, 0x05, 0x12, 0x7c, 0x21, 0xac, 0x67, 0x11, 0x53, 0xe1, - 0x73, 0xde, 0x1d, 0xda, 0xf5, 0x39, 0x79, 0x92, 0x49, 0xcb, 0xd6, 0x5c, - 0xd5, 0xff, 0x35, 0x20, 0xc1, 0xa8, 0x60, 0xd7, 0x57, 0x4e, 0xd4, 0x10, - 0xd3, 0x2f, 0xb6, 0xbc, 0xa1, 0x80, 0xfa, 0x4b, 0x22, 0x0e, 0x80, 0xac, - 0x6c, 0x34, 0xd3, 0x56, 0xc7, 0x7e, 0x46, 0x56, 0x50, 0xc5, 0xa7, 0xd8, - 0x32, 0x34, 0x45, 0x5f, 0x0b, 0x03, 0x99, 0xc0, 0x85, 0xa9, 0xd2, 0xd3, - 0x93, 0x1d, 0x2f, 0xf3, 0x5d, 0xe4, 0xc5, 0x89, 0x55, 0xf6, 0x09, 0x16, - 0xc4, 0xfd, 0x94, 0x3b, 0xa0, 0x60, 0xda, 0xe7, 0x67, 0x84, 0x6b, 0x91, - 0x39, 0x11, 0xbc, 0xc8, 0x33, 0x50, 0x98, 0xed, 0x9c, 0xe9, 0x7a, 0x76, - 0x0b, 0x1e, 0x79, 0xdc, 0xf7, 0x1a, 0x8a, 0x1f, 0x5f, 0x83, 0x60, 0x10, - 0xe3, 0xa5, 0xd5, 0x91, 0xbc, 0x48, 0x80, 0xce, 0xb4, 0xe3, 0xed, 0x97, - 0x6d, 0x73, 0x6c, 0xaa, 0xf5, 0xf2, 0xe7, 0x97, 0x9d, 0x57, 0x69, 0x51, - 0x8b, 0x85, 0x65, 0xd2, 0x5f, 0x6c, 0x16, 0xce, 0x85, 0x09, 0x9a, 0x41, - 0x76, 0x29, 0x31, 0x5b, 0x01, 0xf5, 0xad, 0xa1, 0xce, 0x03, 0xa5, 0x69, - 0xca, 0xb3, 0xb4, 0x8a, 0xd3, 0x67, 0x6f, 0x6e, 0xa3, 0xdd, 0x68, 0xd4, - 0x46, 0x90, 0x13, 0x81, 0xa8, 0x1d, 0xf0, 0x75, 0x3d, 0x7b, 0x8d, 0x30, - 0x15, 0x08, 0x56, 0x4b, 0x4d, 0x5f, 0xd0, 0x0c, 0x2a, 0x9c, 0xdb, 0x98, - 0x62, 0x96, 0xc3, 0xd8, 0x81, 0x9c, 0xa1, 0xed, 0xed, 0xcd, 0x65, 0xdc, - 0xf9, 0xa2, 0xb8, 0x87, 0xee, 0xbe, 0xa3, 0xdb, 0x90, 0x93, 0x96, 0x8c, - 0x1d, 0xa4, 0xc6, 0x6d, 0xa4, 0xa0, 0x5d, 0xd9, 0x48, 0xb6, 0x39, 0x63, - 0xa3, 0x79, 0x64, 0x6d, 0x3b, 0xe4, 0x60, 0xae, 0xf4, 0x5f, 0x55, 0x98, - 0x83, 0x61, 0x28, 0xa5, 0x94, 0xa8, 0xdc, 0x09, 0x66, 0x4a, 0x87, 0x50, - 0xed, 0x50, 0xcd, 0x4e, 0x39, 0x60, 0xa9, 0xe4, 0xe4, 0xb8, 0x2c, 0x81, - 0x48, 0x87, 0xeb, 0x83, 0x27, 0x57, 0xf5, 0x0d, 0x48, 0x06, 0x48, 0x8d, - 0x5c, 0xfd, 0x53, 0xb4, 0x07, 0xa4, 0x4b, 0x58, 0xbd, 0xb1, 0x81, 0x50, - 0x29, 0x22, 0xb2, 0xb3, 0x9c, 0xf1, 0x92, 0x62, 0xc7, 0x27, 0x09, 0x0a, - 0x10, 0xab, 0x65, 0xd3, 0x98, 0x52, 0x9a, 0x8e, 0x7c, 0x1f, 0x3e, 0xcc, - 0x65, 0x71, 0x04, 0x0b, 0xf4, 0x2c, 0xf6, 0x7f, 0x25, 0x26, 0x36, 0x75, - 0x23, 0xd4, 0x54, 0x9a, 0x8b, 0x60, 0x01, 0x38, 0x14, 0x70, 0x0c, 0xa5, - 0xf8, 0x67, 0xe1, 0x16, 0x9e, 0x4f, 0x45, 0x1f, 0xe6, 0x37, 0x2a, 0x54, - 0xd3, 0x3d, 0x7f, 0xcc, 0x30, 0x19, 0xbb, 0x25, 0x0d, 0x7a, 0x0e, 0x3a, - 0xa7, 0x8d, 0x49, 0x49, 0x00, 0x5b, 0xaa, 0x1b, 0x35, 0x3b, 0xeb, 0x81, - 0xde, 0xb8, 0xa2, 0xbd, 0x10, 0x34, 0xb0, 0xb5, 0x43, 0x0d, 0x6d, 0x7d, - 0x26, 0x68, 0xa6, 0x61, 0x24, 0xe5, 0x9f, 0x62, 0x75, 0xc0, 0x77, 0xed, - 0xe9, 0xc5, 0xae, 0x97, 0xea, 0x9f, 0x6a, 0x98, 0xd7, 0xd1, 0x1e, 0x75, - 0x66, 0x23, 0xd2, 0xd4, 0xa1, 0x86, 0xa5, 0x8d, 0xe1, 0xc9, 0x8f, 0x65, - 0xa0, 0xb8, 0x37, 0xba, 0x6f, 0x01, 0x1e, 0x5c, 0xc7, 0x06, 0xb4, 0x76, - 0xe8, 0xdf, 0x0b, 0x73, 0x52, 0x27, 0xe5, 0xc9, 0x00, 0x6e, 0x71, 0xb2, - 0xa1, 0xd9, 0x9a, 0x6f, 0xca, 0x38, 0x38, 0x67, 0xf0, 0xa5, 0x34, 0x1f, - 0xc0, 0x3d, 0x60, 0x59, 0x55, 0x76, 0x93, 0xfa, 0xbb, 0x1a, 0xb2, 0x91, - 0xe4, 0xac, 0xb4, 0x7a, 0x36, 0xff, 0x58, 0x38, 0x7e, 0x66, 0x90, 0x41, - 0x71, 0x84, 0xee, 0xa9, 0xea, 0x13, 0xa9, 0xb6, 0x00, 0x93, 0x3f, 0xdf, - 0x28, 0xfa, 0x0d, 0x38, 0x4c, 0x5e, 0xab, 0x15, 0x61, 0x1f, 0xe6, 0xd3, - 0x3b, 0xb4, 0xf2, 0xfe, 0x71, 0xd0, 0x5a, 0xcc, 0x44, 0xee, 0x05, 0x9b, - 0x56, 0x88, 0xca, 0xf0, 0xca, 0x2a, 0x26, 0x3a, 0xcd, 0x9d, 0xf6, 0x02, - 0x5f, 0x8b, 0x8f, 0x1e, 0x84, 0xdd, 0x33, 0x05, 0xf5, 0x49, 0x08, 0x4c, - 0x9c, 0x0c, 0x2e, 0x79, 0x79, 0xfd, 0x62, 0xa5, 0x5b, 0xff, 0xb2, 0xdf, - 0x51, 0x24, 0xf2, 0x6c, 0x74, 0x49, 0x59, 0x4c, 0xa8, 0xa2, 0x5b, 0xde, - 0x8e, 0xf7, 0x40, 0x32, 0x83, 0xbc, 0xc3, 0x27, 0x09, 0x2f, 0xc4, 0x93, - 0x2c, 0x4f, 0xb5, 0x29, 0xff, 0x8c, 0xc6, 0x9f, 0x49, 0x34, 0x54, 0x3d, - 0x02, 0xba, 0x64, 0x36, 0x2e, 0x99, 0x7b, 0xa6, 0x5f, 0xdc, 0x33, 0xaf, - 0x40, 0xc6, 0xce, 0xaa, 0x82, 0xdc, 0xfb, 0x40, 0x6e, 0x91, 0x58, 0x4e, - 0xc8, 0x45, 0x02, 0x3b, 0xc7, 0xc2, 0xc0, 0xc1, 0x3d, 0x99, 0x99, 0x98, - 0x88, 0x18, 0x0f, 0xd0, 0x2a, 0x25, 0xb7, 0x2c, 0x2c, 0x73, 0x94, 0x96, - 0xc7, 0xba, 0x00, 0x96, 0x16, 0xb1, 0x6f, 0x0a, 0x22, 0x14, 0x5a, 0x46, - 0xbe, 0xc9, 0x33, 0x2e, 0x60, 0xe5, 0x2c, 0x19, 0xca, 0xf1, 0x3f, 0xb5, - 0xbb, 0x32, 0x10, 0x83, 0x94, 0xb0, 0xc0, 0x0a, 0x6c, 0x2e, 0x81, 0xad, - 0xdd, 0x75, 0x44, 0x56, 0xe9, 0xe7, 0xbc, 0xf0, 0x16, 0x61, 0x7b, 0xd1, - 0x2a, 0xe2, 0xbe, 0x5d, 0x47, 0x00, 0xfe, 0xe7, 0xde, 0xac, 0x2a, 0x05, - 0x94, 0x1a, 0x8c, 0x43, 0x7b, 0x14, 0xc2, 0x62, 0x31, 0xd4, 0xf0, 0xbf, - 0x7a, 0x62, 0x5d, 0x0c, 0x91, 0xb8, 0xf4, 0x64, 0xc2, 0x97, 0x04, 0x27, - 0x1f, 0x63, 0x4f, 0x5e, 0x49, 0xd7, 0x13, 0xfa, 0x22, 0xc3, 0x16, 0xe5, - 0xc1, 0xb3, 0x60, 0xfc, 0x6b, 0x79, 0xa4, 0x97, 0xe4, 0xa7, 0x03, 0xf2, - 0xf0, 0x2d, 0x7f, 0xab, 0x24, 0x5d, 0x99, 0x80, 0x6d, 0x68, 0x7e, 0xc0, - 0x6c, 0x83, 0xda, 0x34, 0xad, 0xb2, 0xc8, 0x12, 0xc2, 0xb8, 0xa6, 0x5e, - 0x10, 0x66, 0xb0, 0x5d, 0xf6, 0x03, 0x8c, 0x65, 0x40, 0x4c, 0x41, 0x32, - 0xb1, 0xf4, 0xf2, 0x44, 0xcd, 0x80, 0xc5, 0xb1, 0x94, 0x92, 0x1f, 0x68, - 0x67, 0xdc, 0x68, 0x9b, 0x2d, 0xd5, 0x47, 0xd3, 0x38, 0x6e, 0x49, 0x47, - 0x05, 0x9f, 0x5a, 0x67, 0xe0, 0xe7, 0x7e, 0x09, 0xf7, 0x81, 0xdb, 0x64, - 0x1f, 0xf6, 0x74, 0x5d, 0x23, 0xc8, 0xf0, 0xa3, 0x84, 0xe4, 0x6f, 0x02, - 0xe2, 0xda, 0x4d, 0x49, 0x5a, 0x12, 0x8a, 0xf1, 0xba, 0x97, 0xe4, 0x07, - 0x4e, 0x25, 0x7a, 0x84, 0x89, 0x84, 0xce, 0x0c, 0x99, 0xef, 0xc2, 0xe2, - 0x21, 0x4b, 0x92, 0xa5, 0x83, 0x9c, 0xed, 0x0d, 0xf5, 0xed, 0x35, 0x98, - 0x84, 0x66, 0x72, 0x69, 0xa5, 0xb5, 0xc6, 0x32, 0x26, 0xed, 0x9d, 0xfe, - 0x0e, 0x6c, 0x09, 0x31, 0x84, 0xfa, 0x19, 0xf6, 0x49, 0xe1, 0x69, 0x57, - 0x07, 0x22, 0x6c, 0xf8, 0x5d, 0xdb, 0x79, 0x97, 0xff, 0x94, 0xcf, 0x99, - 0x58, 0x3d, 0xde, 0x37, 0x0a, 0x5f, 0xaa, 0xfc, 0xed, 0xb2, 0xc1, 0x50, - 0xc8, 0x46, 0x20, 0xcc, 0x77, 0x1c, 0x63, 0xcf, 0x25, 0x24, 0x69, 0x62, - 0xcf, 0xa9, 0x26, 0x78, 0x51, 0x8f, 0xd2, 0xf0, 0x70, 0xf9, 0x2f, 0x3a, - 0x42, 0x8a, 0x21, 0x58, 0xb8, 0x58, 0x54, 0x74, 0x29, 0x33, 0xbb, 0x0c, - 0x0c, 0xcd, 0xee, 0xa6, 0x06, 0x88, 0x1a, 0x62, 0x75, 0xb1, 0x4f, 0x4a, - 0x6a, 0xa6, 0x97, 0x9e, 0xa2, 0x7e, 0xb0, 0x9f, 0x21, 0x5f, 0x3b, 0x00, - 0xf5, 0x54, 0x1c, 0xb1, 0xf3, 0x2e, 0x1a, 0x68, 0x97, 0xd7, 0x6d, 0xb6, - 0x25, 0x3b, 0xe8, 0xfd, 0x77, 0x6c, 0xb9, 0x38, 0xb0, 0x34, 0xde, 0x9b, - 0x03, 0xb3, 0x92, 0xee, 0x86, 0x00, 0x49, 0xc2, 0x4d, 0xbf, 0xca, 0x7e, - 0x83, 0x30, 0x91, 0x20, 0xde, 0x31, 0xe7, 0x23, 0x43, 0x87, 0xd5, 0xf2, - 0xf0, 0xd2, 0x21, 0x48, 0xbe, 0x5e, 0xbd, 0xa8, 0x60, 0x85, 0x5c, 0xa1, - 0x7d, 0x97, 0x1c, 0x29, 0x29, 0xc4, 0x4c, 0x6b, 0x11, 0x0c, 0xbf, 0x34, - 0xf0, 0xd8, 0x5f, 0x80, 0xd7, 0x69, 0x83, 0x3a, 0x50, 0x42, 0xc2, 0x18, - 0x16, 0xe7, 0xd4, 0x91, 0xc4, 0x5d, 0xa4, 0xee, 0xd0, 0xee, 0xf0, 0x44, - 0x6c, 0x3d, 0x21, 0x41, 0xfa, 0x97, 0x8f, 0x84, 0x4d, 0x85, 0xa2, 0x58, - 0xb3, 0x09, 0x39, 0x7e, 0x9e, 0x8d, 0x5b, 0x9c, 0x92, 0x33, 0xa7, 0x39, - 0x1c, 0xfa, 0xd9, 0xed, 0x6e, 0x1e, 0x67, 0x05, 0xab, 0x60, 0xa8, 0x8f, - 0x6e, 0x05, 0x1e, 0x48, 0x85, 0x46, 0x60, 0x88, 0x38, 0x00, 0xbd, 0x7c, - 0x70, 0x9b, 0xec, 0x68, 0xcd, 0x5b, 0xf2, 0xbe, 0xc0, 0xa2, 0x7f, 0xa1, - 0xb8, 0x87, 0x38, 0xab, 0x4f, 0x63, 0x6f, 0xed, 0x99, 0x1c, 0x38, 0x83, - 0xdc, 0x30, 0xaa, 0xc0, 0xd5, 0xe8, 0x01, 0xbc, 0x1e, 0x73, 0x91, 0x0f, - 0xf2, 0xb0, 0x95, 0x43, 0xd8, 0x07, 0x2e, 0xf6, 0xd4, 0xec, 0x07, 0x72, - 0x4b, 0x1a, 0x2d, 0x5f, 0x79, 0xd9, 0xa1, 0xed, 0xff, 0xe9, 0x4f, 0xd4, - 0xf4, 0x10, 0xb3, 0xf7, 0x4f, 0xcd, 0xe7, 0xc7, 0x96, 0x17, 0x2b, 0xea, - 0xc9, 0x2f, 0x78, 0x15, 0xd7, 0x01, 0xa2, 0x78, 0xab, 0xf3, 0x22, 0x17, - 0x4f, 0x75, 0x27, 0xee, 0x63, 0x6a, 0xf3, 0x9e, 0xe9, 0x7a, 0xca, 0xba, - 0x62, 0x73, 0xb6, 0x77, 0xcf, 0xa5, 0x4f, 0xd6, 0xbe, 0x0b, 0xb9, 0x7e, - 0x7b, 0x9b, 0x09, 0x30, 0xa5, 0xa2, 0x43, 0x0a, 0xe3, 0x7a, 0x10, 0xb8, - 0x02, 0x38, 0xb1, 0xb7, 0x5c, 0x9b, 0xdb, 0xf8, 0x72, 0xed, 0xc1, 0x46, - 0x5b, 0xa9, 0xa4, 0x47, 0x2f, 0x61, 0x11, 0xcc, 0xd8, 0xb8, 0x2f, 0xdd, - 0xd4, 0xac, 0x90, 0x67, 0x71, 0x05, 0xf3, 0x08, 0x7b, 0x76, 0x2b, 0x32, - 0x58, 0xde, 0xf8, 0x0c, 0x4c, 0xba, 0xcf, 0xc4, 0x95, 0x9f, 0xaa, 0x8a, - 0x29, 0x74, 0x91, 0x59, 0x0c, 0x71, 0x02, 0xb4, 0xa2, 0x9a, 0x21, 0x1a, - 0x25, 0x9a, 0x04, 0x97, 0xcc, 0xe4, 0xc1, 0xd5, 0x10, 0xe0, 0x05, 0x16, - 0x16, 0xe2, 0x8c, 0x9c, 0x88, 0x58, 0xa1, 0x0e, 0x25, 0xac, 0x07, 0x94, - 0xb3, 0xf2, 0x47, 0xf6, 0x62, 0x8d, 0x4d, 0x0f, 0xc3, 0x68, 0x4f, 0x76, - 0x48, 0x22, 0x1b, 0x6b, 0x7f, 0xbd, 0x26, 0x03, 0x43, 0x97, 0xdd, 0x9f, - 0xd6, 0x02, 0x15, 0x13, 0x87, 0xae, 0x22, 0x90, 0xb1, 0xa0, 0xdd, 0x02, - 0x2b, 0xd4, 0xbe, 0xb3, 0xd0, 0x0a, 0x4c, 0x0e, 0xe5, 0xe4, 0x10, 0x3a, - 0x95, 0x5e, 0xb9, 0xe2, 0xf2, 0xf6, 0xaa, 0xfb, 0x13, 0xd6, 0xf7, 0xe0, - 0xe8, 0xa9, 0xe6, 0x39, 0xb1, 0x3e, 0xaf, 0xc0, 0xaf, 0x0a, 0x48, 0xdd, - 0xd4, 0x36, 0x2f, 0x66, 0x88, 0xcd, 0xbf, 0x36, 0xac, 0x6d, 0x24, 0x9d, - 0x00, 0x77, 0x86, 0x4f, 0xe1, 0x2a, 0x0a, 0x6d, 0x29, 0x20, 0xb9, 0x4b, - 0x61, 0x31, 0x43, 0xda, 0x90, 0x2d, 0x0d, 0x23, 0x7e, 0x0f, 0xd9, 0x54, - 0x14, 0x4f, 0xa2, 0x9a, 0x3e, 0x95, 0xba, 0x42, 0x71, 0x17, 0xee, 0xb7, - 0xa2, 0x72, 0x10, 0x29, 0xb1, 0x57, 0x94, 0xc1, 0xe6, 0xfe, 0x52, 0xb1, - 0xd6, 0x5f, 0x94, 0xeb, 0x53, 0x42, 0x22, 0x1e, 0x6b, 0x8d, 0x47, 0x8b, - 0xbf, 0x72, 0x01, 0xfd, 0x1e, 0x30, 0x2c, 0x63, 0x8a, 0x9d, 0xc7, 0x32, - 0x6f, 0x22, 0xc4, 0xb3, 0x1c, 0x3f, 0xa2, 0x4c, 0x26, 0x28, 0x34, 0x6f, - 0x77, 0xcb, 0x98, 0x04, 0x4e, 0x9e, 0x7e, 0x1a, 0x78, 0xcd, 0x1e, 0x8a, - 0xc6, 0x2f, 0x53, 0xc2, 0xea, 0x0d, 0x8d, 0x18, 0xd2, 0x0d, 0x1c, 0xed, - 0x05, 0x00, 0x23, 0x09, 0xfa, 0x39, 0x84, 0xbb, 0x88, 0x62, 0x63, 0xa8, - 0x7c, 0xd5, 0x8a, 0xd7, 0xad, 0xd3, 0x4e, 0x16, 0x18, 0xb5, 0x3c, 0xa3, - 0xed, 0x52, 0xd4, 0x46, 0x51, 0x72, 0xf4, 0xdf, 0xfa, 0x00, 0x5a, 0xc3, - 0xac, 0x2a, 0xa8, 0xe7, 0x38, 0x1e, 0xcc, 0xaa, 0xd3, 0x69, 0x63, 0x77, - 0x8b, 0x26, 0xc3, 0x2c, 0x51, 0xd6, 0xc9, 0xfc, 0xc4, 0x77, 0x0a, 0xee, - 0x5a, 0x8f, 0x64, 0xd0, 0xf6, 0x96, 0x95, 0xdb, 0xae, 0xdb, 0x8c, 0x7b, - 0x4e, 0x72, 0xfc, 0xeb, 0xc5, 0x39, 0x52, 0xe4, 0xe2, 0xff, 0x0c, 0x98, - 0x81, 0x91, 0xa1, 0xbe, 0x48, 0x13, 0xf8, 0x4c, 0x13, 0xde, 0x46, 0xe5, - 0x88, 0xd1, 0x85, 0x16, 0x2f, 0x93, 0x66, 0x12, 0x71, 0x1f, 0x09, 0x97, - 0x37, 0x5c, 0x32, 0xcc, 0x9b, 0xed, 0xdd, 0x46, 0x38, 0xa5, 0x12, 0xfb, - 0xbf, 0xc9, 0x77, 0xa2, 0x2c, 0x2d, 0x0f, 0x69, 0xae, 0xb8, 0x07, 0x1f, - 0xaf, 0x5a, 0x42, 0x55, 0x7f, 0x5b, 0xf0, 0x67, 0x93, 0x3f, 0x19, 0x8c, - 0x2c, 0x18, 0xa9, 0xdd, 0x4d, 0x1f, 0x74, 0x1e, 0x8b, 0xf6, 0xf9, 0xde, - 0xbd, 0x94, 0x9c, 0xd8, 0x35, 0x0b, 0xbd, 0xe7, 0x10, 0x9f, 0x06, 0xb6, - 0x5b, 0xb6, 0xc9, 0xb2, 0xf1, 0x28, 0x59, 0x59, 0x80, 0x37, 0x3d, 0x91, - 0xf7, 0xb5, 0x0b, 0x62, 0xbd, 0xd3, 0x75, 0x8a, 0x68, 0x11, 0xd5, 0xf7, - 0xe2, 0x36, 0x53, 0xb6, 0x76, 0x79, 0x66, 0xcd, 0x6b, 0x76, 0x06, 0x32, - 0x0b, 0x21, 0x57, 0x09, 0xd0, 0x0f, 0xd4, 0x67, 0x52, 0x02, 0x36, 0x53, - 0xe3, 0xca, 0x03, 0x76, 0xda, 0x01, 0x24, 0x08, 0x52, 0x85, 0x49, 0x3b, - 0xc5, 0xee, 0xbc, 0x48, 0xb6, 0xe5, 0x58, 0xaa, 0x3b, 0x23, 0x10, 0x7e, - 0x64, 0x42, 0x61, 0xaf, 0x76, 0x26, 0x5a, 0xca, 0x28, 0x8a, 0xd3, 0x9b, - 0x3e, 0x2d, 0xbe, 0x2d, 0xa1, 0x9e, 0x53, 0xcc, 0x61, 0x25, 0xa6, 0xf4, - 0x32, 0x3e, 0xe9, 0x1f, 0xf6, 0x7c, 0x5f, 0xbc, 0x34, 0x2e, 0xd2, 0x4f, - 0x4e, 0xd8, 0x8b, 0xc6, 0xdf, 0xe8, 0x41, 0xb4, 0x3e, 0x2c, 0x9c, 0xc6, - 0x1b, 0xf3, 0x7f, 0x1a, 0x43, 0xf0, 0xb2, 0x7d, 0xea, 0x21, 0x80, 0xd8, - 0xc9, 0x29, 0x6d, 0xf6, 0x3a, 0xc0, 0x12, 0xea, 0xdf, 0x3d, 0x4c, 0x36, - 0xb0, 0xb0, 0x0e, 0x93, 0xaf, 0xa8, 0x03, 0xc8, 0x40, 0xfd, 0x06, 0xdc, - 0xa6, 0x63, 0x92, 0x44, 0x63, 0xfe, 0x00, 0x71, 0x12, 0x60, 0x7a, 0x9d, - 0xb6, 0x20, 0xb2, 0x63, 0x24, 0xea, 0x8c, 0x6e, 0x60, 0x7a, 0x69, 0x20, - 0xde, 0x92, 0x20, 0x14, 0xd1, 0xf5, 0xb0, 0x7e, 0xd6, 0xc2, 0x16, 0xb0, - 0x8c, 0x49, 0xf2, 0x44, 0x89, 0x63, 0x41, 0xae, 0x02, 0x15, 0x93, 0x68, - 0x6b, 0x96, 0xa8, 0x07, 0x2f, 0xb4, 0x98, 0x33, 0x28, 0xe5, 0xad, 0x24, - 0xa8, 0x04, 0x97, 0x41, 0xc0, 0x4d, 0x32, 0xb3, 0xcf, 0x6c, 0xfc, 0x02, - 0x42, 0x8e, 0x65, 0xae, 0x1b, 0xa0, 0xce, 0xb8, 0xd8, 0x05, 0x19, 0xf3, - 0x66, 0x56, 0xbe, 0x20, 0xa1, 0x9a, 0xd1, 0x8d, 0xb6, 0x6c, 0x65, 0xb1, - 0x54, 0x64, 0x66, 0xc8, 0x40, 0xbb, 0x6e, 0x18, 0x49, 0x77, 0xba, 0x17, - 0x24, 0xe9, 0xff, 0x10, 0x9e, 0x8e, 0x82, 0x7a, 0xc1, 0xef, 0xa1, 0xd5, - 0xc7, 0x77, 0x09, 0xf5, 0x4a, 0x2a, 0x6c, 0x8d, 0xe1, 0x1f, 0xac, 0x6d, - 0x41, 0xac, 0xe9, 0x3d, 0x5b, 0x08, 0x0a, 0xeb, 0xfc, 0xab, 0xc2, 0x17, - 0x94, 0x8e, 0x1d, 0xce, 0x4d, 0x1b, 0xe2, 0xe2, 0x47, 0x63, 0x21, 0xd8, - 0x80, 0x17, 0x1b, 0x93, 0x25, 0xa8, 0xd9, 0xe5, 0x47, 0x7f, 0xd6, 0x22, - 0xbc, 0x69, 0x06, 0x2f, 0xb6, 0x82, 0xfb, 0x3a, 0xbf, 0xe6, 0xbe, 0x72, - 0x74, 0xc5, 0xa1, 0x24, 0x70, 0x56, 0x3c, 0x33, 0xcf, 0x30, 0x3d, 0x98, - 0x78, 0x1f, 0x01, 0xe7, 0xb7, 0x45, 0xcb, 0x62, 0x26, 0x16, 0x9b, 0x14, - 0x60, 0x53, 0x29, 0xad, 0xe2, 0xf2, 0xcc, 0xae, 0xb1, 0x71, 0x23, 0xdf, - 0xc3, 0xa7, 0x54, 0x8b, 0xe2, 0x40, 0x75, 0x0b, 0xca, 0xb6, 0x3d, 0xd2, - 0xfb, 0xaf, 0xdd, 0xec, 0x28, 0xc3, 0x82, 0x5c, 0xee, 0x20, 0x70, 0x35, - 0x62, 0xb1, 0x11, 0xaa, 0xe1, 0x56, 0xf7, 0x01, 0x12, 0x44, 0x5f, 0x94, - 0x08, 0x0a, 0xf8, 0x22, 0x31, 0x43, 0x48, 0x25, 0x02, 0x4e, 0xae, 0x4f, - 0x4c, 0xcd, 0x5a, 0x20, 0x65, 0xea, 0x54, 0x2d, 0xbf, 0x4e, 0xd9, 0x63, - 0x8f, 0x06, 0xda, 0x87, 0xea, 0x41, 0x48, 0x56, 0x7d, 0x96, 0x45, 0x5d, - 0xa2, 0xc7, 0xcf, 0xde, 0x41, 0x62, 0x47, 0xf3, 0xbd, 0x2c, 0x04, 0xbb, - 0x95, 0xa8, 0x05, 0xfe, 0x3d, 0x2e, 0xff, 0x42, 0x99, 0x9c, 0x78, 0xd5, - 0xd3, 0x54, 0x45, 0xa4, 0xd7, 0x9c, 0xb2, 0xf7, 0xac, 0x4d, 0x21, 0x63, - 0x30, 0xb3, 0xa4, 0xa4, 0x6a, 0xb7, 0x2d, 0xd2, 0x51, 0xd3, 0x57, 0x4d, - 0xe0, 0x25, 0x80, 0x4f, 0x34, 0xeb, 0xbb, 0x49, 0x7c, 0x34, 0xb7, 0xa2, - 0xc2, 0x6d, 0x1a, 0x54, 0x66, 0xdf, 0x61, 0xe3, 0x2f, 0x72, 0xd6, 0x19, - 0xd6, 0x7c, 0x7b, 0x5e, 0xaa, 0x1b, 0x42, 0x3e, 0x2d, 0x59, 0xdf, 0x20, - 0x15, 0x19, 0xb1, 0xed, 0x84, 0x32, 0xcd, 0xf2, 0x8b, 0xa6, 0xba, 0x21, - 0xcb, 0xc4, 0xfd, 0x02, 0x54, 0xd9, 0xbb, 0xa2, 0x18, 0x8c, 0x2c, 0x12, - 0x7b, 0xe9, 0x48, 0x79, 0x74, 0xad, 0x2a, 0x81, 0x56, 0x6b, 0xac, 0xfe, - 0xfe, 0x78, 0x26, 0x89, 0x0a, 0x26, 0x61, 0x2c, 0xbb, 0xfb, 0xa7, 0xc6, - 0xa0, 0x3a, 0xfa, 0x8a, 0x02, 0xf9, 0x80, 0x08, 0x22, 0x07, 0x40, 0x06, - 0xfa, 0x27, 0x73, 0xb7, 0x92, 0xc8, 0xfe, 0x51, 0x7d, 0x7a, 0x36, 0x07, - 0x1e, 0x01, 0x2e, 0x5f, 0x17, 0x60, 0xd9, 0xcc, 0x86, 0x0b, 0xbf, 0x9c, - 0x2d, 0xaa, 0x3a, 0x36, 0x95, 0xd6, 0xdd, 0xbb, 0x84, 0x65, 0xbc, 0x1d, - 0x8f, 0x58, 0x4d, 0xc4, 0xab, 0x3c, 0x98, 0x59, 0x79, 0x80, 0xea, 0xd3, - 0xe2, 0x8b, 0x13, 0xfa, 0x56, 0xc3, 0xfb, 0x8f, 0xb7, 0x9b, 0x0b, 0x8a, - 0x7a, 0x66, 0x42, 0xad, 0x47, 0x63, 0x17, 0x91, 0x8e, 0xbe, 0x73, 0x0a, - 0xbc, 0x0d, 0x56, 0xda, 0xcf, 0x20, 0xb9, 0x7d, 0x1b, 0x33, 0x41, 0x62, - 0xcf, 0x55, 0xff, 0x6e, 0xe5, 0x55, 0x26, 0xb0, 0x5b, 0xd4, 0x64, 0xe0, - 0x0d, 0x08, 0x60, 0x9f, 0xcb, 0x6b, 0x19, 0x0f, 0x94, 0x12, 0x6c, 0x11, - 0xac, 0xfa, 0x38, 0x57, 0x3e, 0xcd, 0x0f, 0xdd, 0x57, 0xd3, 0xa3, 0xd6, - 0x55, 0x8b, 0x75, 0x73, 0x76, 0xff, 0xb7, 0x82, 0x24, 0x37, 0xf3, 0xa4, - 0xba, 0x29, 0xfe, 0x8b, 0xc9, 0xbc, 0xb2, 0x34, 0x1c, 0xfe, 0x22, 0x0e, - 0x4e, 0xc4, 0x9f, 0xc7, 0xc2, 0xd8, 0x04, 0x55, 0x7d, 0x6e, 0x28, 0x70, - 0xa8, 0x23, 0xda, 0xf2, 0x90, 0x88, 0xc8, 0x88, 0x47, 0x8c, 0x57, 0xfd, - 0x2a, 0x64, 0x06, 0xa4, 0x72, 0xb1, 0x15, 0x20, 0x5a, 0x62, 0x8b, 0x2d, - 0x51, 0xeb, 0x26, 0x0e, 0x66, 0x9d, 0xda, 0x0d, 0x67, 0x95, 0x21, 0xc7, - 0x8a, 0x4c, 0xbe, 0xc5, 0x9b, 0x53, 0xbe, 0x70, 0x9f, 0x45, 0x12, 0x94, - 0xc0, 0xc0, 0xb2, 0x28, 0x32, 0xb7, 0x96, 0xa0, 0x7d, 0x7c, 0x82, 0x70, - 0xac, 0xe0, 0x18, 0x01, 0xbd, 0x30, 0x29, 0xe3, 0x58, 0x8f, 0x9b, 0x6b, - 0xb5, 0xbc, 0xb4, 0x51, 0x26, 0x80, 0x05, 0x01, 0x2f, 0x0d, 0xab, 0x65, - 0x58, 0x2d, 0x69, 0x3c, 0xeb, 0x63, 0x1f, 0x08, 0x76, 0x1c, 0x88, 0x95, - 0x5e, 0xff, 0x2a, 0xed, 0x58, 0x2e, 0x63, 0x9b, 0x5f, 0x22, 0xe1, 0x72, - 0xe9, 0x3f, 0xbb, 0x42, 0xf6, 0xa9, 0xba, 0xc8, 0x20, 0x00, 0x18, 0xa9, - 0xb3, 0xe2, 0x12, 0x79, 0x02, 0x17, 0x35, 0x43, 0xf7, 0x75, 0x58, 0x5d, - 0xe4, 0x8a, 0xbb, 0xe5, 0x9c, 0x85, 0xb0, 0x35, 0x22, 0xfa, 0x4f, 0x7c, - 0xdd, 0xb2, 0x2b, 0x6d, 0xa1, 0xdc, 0xe3, 0x06, 0xcd, 0xaa, 0x62, 0x14, - 0x95, 0xd2, 0xd7, 0x6d, 0x9f, 0xb1, 0xd5, 0x70, 0xd5, 0x2f, 0x2d, 0xd3, - 0x97, 0xca, 0xbc, 0x23, 0x79, 0x1b, 0xff, 0xaa, 0xa7, 0xe3, 0x06, 0xee, - 0xf9, 0x09, 0x04, 0x35, 0x32, 0x10, 0x2f, 0x94, 0xcf, 0xea, 0xa4, 0xbc, - 0x0a, 0x08, 0x04, 0x22, 0x3a, 0x28, 0x65, 0x7c, 0x18, 0x6d, 0x52, 0x97, - 0x5e, 0x37, 0xf4, 0xe4, 0xa1, 0x65, 0x25, 0x24, 0xde, 0x2b, 0x94, 0x34, - 0x52, 0x9e, 0xb7, 0x23, 0xbe, 0xa8, 0xdc, 0xa1, 0xef, 0x28, 0xe7, 0xe6, - 0x94, 0x45, 0x7f, 0x30, 0x67, 0x3d, 0xe7, 0x29, 0x4b, 0xdc, 0x60, 0x80, - 0x6d, 0xfd, 0x3f, 0x77, 0x8e, 0xb5, 0x63, 0xc8, 0x0e, 0x1e, 0xce, 0x13, - 0x74, 0x5d, 0x9a, 0x9a, 0x2b, 0x7c, 0x9e, 0x9d, 0xde, 0xe1, 0xef, 0x51, - 0x5e, 0x6c, 0x3c, 0xe4, 0x27, 0xe3, 0xb2, 0xbd, 0xd5, 0x76, 0xa6, 0xb0, - 0x7a, 0x64, 0x1e, 0x46, 0xe7, 0x3e, 0xe3, 0x54, 0xc6, 0x06, 0xde, 0x69, - 0xdc, 0x26, 0xa8, 0x6d, 0xf3, 0x84, 0x4f, 0x1b, 0xce, 0x34, 0xb4, 0x14, - 0x31, 0xc2, 0x2d, 0x2b, 0xf0, 0x8d, 0x91, 0x81, 0x48, 0xb1, 0xe2, 0xf9, - 0xe1, 0x54, 0xba, 0x2f, 0xec, 0x3b, 0x8a, 0xe4, 0x8c, 0x5b, 0x9b, 0xe8, - 0x6d, 0x7f, 0x72, 0x5a, 0x14, 0x12, 0x22, 0x22, 0x68, 0x91, 0x7f, 0x9d, - 0x39, 0x55, 0x2d, 0x45, 0x96, 0xf9, 0x69, 0x1e, 0xdd, 0x53, 0x9e, 0xc7, - 0xf1, 0x9c, 0x61, 0x22, 0x99, 0x41, 0xe3, 0x17, 0x46, 0x4d, 0xa4, 0xbe, - 0x1d, 0xea, 0xc5, 0xab, 0xd2, 0x1d, 0xb2, 0x75, 0xee, 0xac, 0x58, 0x85, - 0xbc, 0x05, 0xbb, 0x74, 0x52, 0xb2, 0x70, 0xc1, 0xe1, 0xb2, 0x9f, 0x68, - 0x04, 0xf9, 0x65, 0xcc, 0xa1, 0xe0, 0xef, 0x12, 0x48, 0xe4, 0xf1, 0x29, - 0x9f, 0x34, 0x13, 0x07, 0x36, 0xf1, 0xca, 0xdf, 0x7f, 0x0c, 0x9d, 0x7c, - 0x69, 0x98, 0x0f, 0x30, 0x7b, 0x4f, 0x21, 0xfd, 0x68, 0x1a, 0x4a, 0x50, - 0x6b, 0x84, 0x4e, 0x3e, 0xd0, 0x5f, 0x42, 0x22, 0xef, 0x4b, 0x59, 0x0a, - 0x31, 0x01, 0xd6, 0x28, 0x8a, 0x4e, 0xeb, 0x08, 0xbd, 0x46, 0xa8, 0x21, - 0x8a, 0x38, 0x72, 0x5e, 0x78, 0x1d, 0x28, 0x0d, 0xca, 0x40, 0xe0, 0xe1, - 0x3b, 0x57, 0x35, 0xb2, 0x73, 0x6c, 0x05, 0xe8, 0x2b, 0xac, 0x9f, 0x8c, - 0x16, 0x55, 0xee, 0xad, 0xbb, 0x09, 0x3e, 0xab, 0x95, 0xd1, 0x78, 0x2a, - 0x26, 0xe2, 0x89, 0x43, 0x90, 0x9e, 0x5e, 0x80, 0xc0, 0xcc, 0xab, 0xa3, - 0x48, 0x44, 0xff, 0x10, 0xad, 0xa1, 0x03, 0x29, 0x8f, 0xed, 0xc7, 0xc0, - 0xc5, 0x90, 0xf3, 0xc9, 0x09, 0xca, 0x46, 0x1f, 0xef, 0x3d, 0xff, 0xc6, - 0xec, 0xf3, 0x4d, 0x97, 0x2a, 0x0c, 0x62, 0x9f, 0xb5, 0x67, 0xf4, 0xf6, - 0x1d, 0x1c, 0x35, 0x8f, 0xa3, 0x97, 0xd1, 0x05, 0x15, 0xa3, 0x14, 0x53, - 0x09, 0x27, 0xee, 0xf1, 0x21, 0xbc, 0xa5, 0xff, 0xf6, 0x1a, 0x3c, 0x6b, - 0x7d, 0xd9, 0x8b, 0x19, 0x54, 0x74, 0xc8, 0xae, 0x92, 0xc3, 0xe2, 0x7f, - 0xc1, 0xdb, 0xdc, 0x8b, 0x87, 0x62, 0xc5, 0xb2, 0xd0, 0x83, 0xf4, 0xa2, - 0xad, 0xad, 0x36, 0xab, 0x6e, 0xcc, 0xc3, 0x0b, 0x2d, 0xd5, 0x6d, 0xdb, - 0x0a, 0x38, 0x54, 0xdc, 0x9c, 0x60, 0x49, 0x81, 0x31, 0xbe, 0xa7, 0x98, - 0xbf, 0xca, 0xad, 0x9f, 0xc7, 0x38, 0xa9, 0x81, 0xd8, 0x11, 0xb4, 0xa0, - 0x6b, 0x7e, 0x9f, 0x98, 0x00, 0xae, 0xb1, 0x37, 0xb4, 0x3c, 0xdc, 0x43, - 0xc2, 0x8c, 0xd5, 0xa7, 0x02, 0xd1, 0x86, 0x72, 0x65, 0xe4, 0x70, 0xbb, - 0x89, 0x2e, 0xfa, 0xce, 0xfb, 0x46, 0x2f, 0x64, 0x93, 0x58, 0x4a, 0x74, - 0xc3, 0xb3, 0x61, 0xd6, 0xd3, 0x7e, 0x69, 0xb5, 0xc6, 0xde, 0x40, 0x5a, - 0x73, 0xa2, 0x39, 0xad, 0xa2, 0xa2, 0x73, 0x1e, 0xe2, 0xb6, 0xab, 0xe0, - 0x88, 0xd7, 0x1e, 0x97, 0x29, 0x31, 0xcc, 0xf0, 0x83, 0x0c, 0x0f, 0x67, - 0x47, 0x53, 0xe6, 0x80, 0x4f, 0x16, 0x06, 0x2b, 0xcb, 0x25, 0xee, 0x9b, - 0x4b, 0x3d, 0x67, 0xce, 0xfa, 0xcc, 0xa1, 0x7f, 0x34, 0x47, 0x90, 0xfd, - 0x25, 0xca, 0x4b, 0x81, 0xfd, 0xee, 0x69, 0x91, 0x42, 0x7b, 0x72, 0xb0, - 0xb2, 0x98, 0xbf, 0xf7, 0xc0, 0xa8, 0x6d, 0x9c, 0xa3, 0xb1, 0x55, 0x58, - 0xac, 0x3b, 0x99, 0xc9, 0x4a, 0x82, 0xb9, 0x59, 0x95, 0xc8, 0xe2, 0x78, - 0x7b, 0x9d, 0xda, 0xfc, 0x2b, 0x1c, 0x2b, 0x5a, 0xff, 0x15, 0x70, 0x04, - 0x8e, 0x10, 0xa4, 0x82, 0x50, 0x91, 0x9b, 0x15, 0x75, 0xd5, 0x7c, 0xd8, - 0x92, 0x45, 0xb0, 0x90, 0x67, 0x4c, 0x99, 0x01, 0x93, 0xec, 0xe6, 0xd3, - 0x2e, 0x55, 0xf0, 0x83, 0x60, 0x0e, 0x07, 0x80, 0x99, 0x64, 0x14, 0xa7, - 0xfb, 0x32, 0x57, 0x76, 0x5f, 0xa4, 0xa5, 0x53, 0x31, 0x8d, 0xdb, 0x5b, - 0x43, 0x29, 0x08, 0x58, 0x8d, 0xde, 0x60, 0x05, 0xaf, 0x4d, 0x85, 0x84, - 0x80, 0x5e, 0x00, 0xc7, 0x7e, 0x06, 0x80, 0x84, 0xc0, 0xc1, 0x01, 0x59, - 0xf3, 0x33, 0xc5, 0x98, 0x07, 0x76, 0x5a, 0x41, 0xfc, 0xd4, 0x65, 0x3c, - 0xa7, 0xe9, 0x54, 0xde, 0x94, 0x67, 0xc4, 0xcd, 0xd1, 0x2c, 0x7a, 0xa0, - 0x9c, 0x06, 0xe8, 0xef, 0xf4, 0xa0, 0xa4, 0x8d, 0xea, 0x14, 0x33, 0x84, - 0x22, 0x3d, 0x0b, 0x4b, 0x2a, 0xe5, 0x84, 0x24, 0x6f, 0x43, 0xf4, 0xe0, - 0x77, 0xc6, 0xf1, 0x64, 0xaa, 0xfc, 0x58, 0xbf, 0x08, 0xc2, 0x00, 0x8c, - 0x7e, 0x5a, 0x7c, 0x63, 0xeb, 0x5f, 0x58, 0xb1, 0x47, 0x4c, 0x33, 0x3e, - 0xc3, 0x66, 0x4a, 0xa9, 0xfb, 0x1f, 0x6d, 0x7a, 0xc4, 0x47, 0x19, 0x58, - 0xf4, 0x2c, 0x65, 0x18, 0xa6, 0x62, 0xc4, 0x5a, 0x0d, 0x86, 0x18, 0x30, - 0xdb, 0x83, 0x9b, 0xf0, 0xaa, 0x58, 0xb5, 0xe3, 0x9f, 0xef, 0xd2, 0x79, - 0x10, 0x0b, 0x63, 0xdf, 0x33, 0x22, 0x40, 0xe7, 0x2f, 0x4a, 0xec, 0xb2, - 0x39, 0xb7, 0x0e, 0xf9, 0xe0, 0xdc, 0x96, 0x74, 0x28, 0x0b, 0xbf, 0x21, - 0x39, 0x03, 0x30, 0xd3, 0x17, 0x78, 0xd2, 0x06, 0x64, 0x6c, 0xe0, 0x13, - 0x2d, 0x28, 0x92, 0x49, 0xb3, 0xde, 0x53, 0xf1, 0x0c, 0x8a, 0x44, 0x46, - 0xc0, 0x76, 0xab, 0x18, 0x16, 0x37, 0x18, 0x4e, 0x5c, 0xc7, 0x2e, 0x93, - 0x4d, 0xa3, 0x71, 0xd1, 0x20, 0x85, 0x43, 0x8e, 0x81, 0x59, 0x1a, 0xa5, - 0x3a, 0x5f, 0x07, 0x35, 0x3a, 0x19, 0x7d, 0xe0, 0xfb, 0x90, 0x81, 0xec, - 0xc2, 0xa0, 0xa3, 0x61, 0x91, 0x2c, 0x65, 0x11, 0xe6, 0x4a, 0x52, 0xec, - 0x85, 0x6b, 0x69, 0xb2, 0x03, 0xf1, 0x02, 0xba, 0x90, 0x3f, 0xaf, 0x43, - 0xd3, 0xc9, 0xe1, 0x3a, 0x3a, 0x94, 0xb4, 0x3f, 0x13, 0x2b, 0x7b, 0xd9, - 0x87, 0x9f, 0x25, 0xf0, 0x7f, 0x3c, 0x95, 0xd7, 0x39, 0xee, 0xd3, 0xa4, - 0xf9, 0x7e, 0x47, 0xf0, 0x5e, 0x82, 0x86, 0x45, 0x0f, 0x9f, 0x03, 0x70, - 0x2c, 0x88, 0xa3, 0xa4, 0xb0, 0xd6, 0x96, 0x08, 0x08, 0x52, 0xdc, 0x90, - 0x7d, 0x54, 0x1f, 0x98, 0x00, 0x04, 0xff, 0xb6, 0xaa, 0x69, 0xe9, 0xce, - 0x29, 0x4e, 0xfa, 0xf9, 0x91, 0xee, 0x50, 0x91, 0x9d, 0xa8, 0x89, 0x63, - 0x03, 0x04, 0x5f, 0x7f, 0xab, 0x8b, 0x45, 0x33, 0x5e, 0x22, 0xb1, 0xdf, - 0x8d, 0xc6, 0x55, 0x82, 0xaa, 0x63, 0xfd, 0xd0, 0x11, 0x9c, 0xe3, 0xac, - 0x37, 0x99, 0xd2, 0x47, 0xe0, 0xf4, 0x45, 0xfb, 0x25, 0x8e, 0xaf, 0xd8, - 0xbb, 0xbd, 0xac, 0xa8, 0x0b, 0x34, 0x80, 0xe2, 0xd0, 0x71, 0xc6, 0xde, - 0x11, 0xb9, 0x8b, 0x74, 0x43, 0xb6, 0x6e, 0x63, 0xb3, 0x6e, 0x7a, 0x63, - 0x7c, 0x68, 0xbf, 0x52, 0x4a, 0x56, 0x94, 0xe8, 0x43, 0x12, 0xb4, 0x71, - 0x93, 0x37, 0xc3, 0x80, 0x1e, 0xa1, 0x68, 0x70, 0x94, 0xab, 0x1c, 0xeb, - 0xd6, 0x3e, 0x4c, 0x68, 0x6d, 0x89, 0x86, 0xda, 0x92, 0x4f, 0x88, 0xa7, - 0xc0, 0xa3, 0x92, 0x1f, 0x7a, 0x45, 0x7f, 0x42, 0x05, 0x69, 0x48, 0xbe, - 0x26, 0xaa, 0x64, 0x3c, 0x46, 0x52, 0x49, 0xdd, 0x40, 0x16, 0xd1, 0xb8, - 0x7f, 0x40, 0xf2, 0x74, 0x2d, 0x53, 0x7d, 0xdf, 0x18, 0xca, 0xcf, 0x7b, - 0x72, 0x2c, 0x84, 0x9e, 0x34, 0x05, 0x5c, 0xdf, 0xa0, 0x5b, 0xd2, 0x53, - 0x59, 0x68, 0xca, 0xd5, 0x8f, 0xc7, 0x58, 0xf6, 0x96, 0x20, 0xc9, 0xf9, - 0x2a, 0x56, 0xd8, 0xfd, 0x64, 0xee, 0x22, 0x0d, 0xf4, 0x82, 0x85, 0x93, - 0x68, 0xbf, 0x0a, 0x7c, 0x26, 0x50, 0xbb, 0x21, 0x2f, 0x5d, 0x38, 0x84, - 0x41, 0xaa, 0x37, 0x62, 0x06, 0x22, 0x05, 0x7f, 0x05, 0x11, 0x38, 0x13, - 0xf6, 0xdc, 0x0d, 0x1e, 0xb8, 0xd2, 0x8e, 0x1f, 0x5f, 0xe7, 0x42, 0x8f, - 0x1d, 0xa4, 0xa7, 0xd4, 0x52, 0x40, 0x1e, 0xf0, 0x1c, 0x74, 0xdd, 0x75, - 0xde, 0x5c, 0x92, 0xc0, 0xf7, 0x73, 0x15, 0x8f, 0x90, 0xc2, 0xab, 0xde, - 0x9a, 0xde, 0x70, 0x9d, 0x82, 0xba, 0xdb, 0xaa, 0x41, 0x38, 0x40, 0x9f, - 0x76, 0xab, 0x4a, 0xaa, 0xba, 0x10, 0x83, 0xa9, 0xaa, 0x12, 0x14, 0x81, - 0xd0, 0x02, 0xe9, 0x82, 0xe7, 0x6f, 0xa6, 0xd5, 0xaf, 0x72, 0x0d, 0xa9, - 0xbb, 0x49, 0x88, 0x48, 0x67, 0x12, 0xb7, 0x26, 0x4a, 0x06, 0xf4, 0xea, - 0x3b, 0x16, 0x12, 0xf6, 0xda, 0x19, 0x98, 0xfb, 0x5a, 0x47, 0x71, 0xf9, - 0xe3, 0x0b, 0x7e, 0x1d, 0x5d, 0x37, 0x59, 0x2f, 0x1c, 0x18, 0x27, 0x58, - 0xc0, 0xd3, 0x22, 0x1c, 0xce, 0x55, 0xa8, 0x6c, 0x78, 0x04, 0xda, 0x1f, - 0xd1, 0x78, 0x18, 0x87, 0x38, 0x6a, 0xca, 0x97, 0xc7, 0x79, 0xf0, 0x4b, - 0x75, 0x74, 0xf7, 0x01, 0x87, 0xa9, 0x04, 0xfb, 0xc1, 0xc5, 0x8d, 0x85, - 0x9a, 0x9a, 0xf2, 0xac, 0x58, 0x16, 0xe8, 0x99, 0xc9, 0x1f, 0xd0, 0x7c, - 0xa6, 0xcc, 0x04, 0x9f, 0xb5, 0x83, 0x76, 0xeb, 0x47, 0xf8, 0x5c, 0xaa, - 0x54, 0x03, 0x47, 0x5f, 0x57, 0x40, 0xae, 0x67, 0xdd, 0x73, 0xe4, 0x11, - 0xce, 0x69, 0xd5, 0x49, 0xf7, 0xa2, 0x78, 0x18, 0xdc, 0x2e, 0xa3, 0x6d, - 0x17, 0x4b, 0xe2, 0x38, 0x3f, 0x4d, 0x68, 0xa9, 0xc0, 0x10, 0x40, 0x95, - 0xec, 0x46, 0xa5, 0x7a, 0xc1, 0xd0, 0x69, 0x93, 0x89, 0xa7, 0xfb, 0xbc, - 0x6b, 0x02, 0x28, 0x7b, 0x83, 0xa5, 0xca, 0x08, 0x09, 0x10, 0x2b, 0xf7, - 0x8e, 0xbb, 0x4f, 0x14, 0xe4, 0x10, 0x24, 0x81, 0xc0, 0x65, 0xf4, 0x40, - 0x7c, 0x28, 0xbb, 0xa9, 0x11, 0xd4, 0xc7, 0xae, 0x57, 0xa5, 0xf1, 0x62, - 0xd6, 0xa2, 0x01, 0x5e, 0x06, 0x25, 0xd3, 0xfa, 0xf8, 0x42, 0x5d, 0xb0, - 0x43, 0xa5, 0x07, 0x50, 0x08, 0x55, 0xe8, 0x7c, 0x1a, 0xb9, 0x34, 0xa1, - 0x7f, 0xf2, 0x53, 0xab, 0x6a, 0xd5, 0x60, 0x52, 0xca, 0x75, 0x71, 0x95, - 0x90, 0x22, 0x2d, 0x50, 0x5e, 0x2d, 0x86, 0x8b, 0xa0, 0x7b, 0x89, 0xb9, - 0x5d, 0xcd, 0x7f, 0x91, 0xe5, 0xa8, 0xd8, 0x71, 0xf5, 0x21, 0x0c, 0xce, - 0xad, 0x30, 0x4f, 0x5c, 0x0c, 0x0c, 0x42, 0x34, 0x1d, 0x45, 0x29, 0xfb, - 0x31, 0x2e, 0x90, 0x17, 0x60, 0x19, 0x69, 0xee, 0xa0, 0x06, 0xa2, 0x91, - 0xe7, 0xfa, 0x02, 0x96, 0xe1, 0x68, 0xb3, 0x12, 0x1e, 0x72, 0xae, 0x41, - 0x62, 0x38, 0x50, 0xdb, 0x8e, 0x40, 0x0a, 0x7f, 0xa2, 0xe7, 0x47, 0x18, - 0xb3, 0xc8, 0x4d, 0x39, 0x77, 0xa2, 0xf0, 0x2a, 0x10, 0x13, 0x5a, 0x42, - 0x7b, 0xaa, 0x78, 0x90, 0x54, 0x3e, 0xb3, 0xf3, 0xd0, 0x63, 0x31, 0x29, - 0xbb, 0x33, 0xff, 0xff, 0xca, 0xb7, 0x86, 0x84, 0x11, 0x6b, 0x43, 0x85, - 0xd4, 0x67, 0xaf, 0x60, 0xa6, 0x5a, 0x60, 0x00, 0x62, 0xd3, 0xe2, 0xbe, - 0x86, 0x8d, 0x1d, 0x81, 0x5e, 0xcd, 0x81, 0xfe, 0x2a, 0x86, 0x79, 0x0c, - 0xed, 0xd7, 0x3e, 0x9c, 0x07, 0x1f, 0x96, 0xcd, 0x3f, 0x30, 0x81, 0x66, - 0xf4, 0xb2, 0x7f, 0xd2, 0xc7, 0xca, 0x74, 0x2b, 0x0b, 0x58, 0xfb, 0x90, - 0xd1, 0x30, 0x7b, 0x0f, 0xa2, 0xfd, 0x55, 0x92, 0xf9, 0x42, 0xfe, 0xdd, - 0x57, 0xa8, 0x2d, 0xba, 0x6d, 0x49, 0x3f, 0xd7, 0x5e, 0xc6, 0x55, 0x4e, - 0x58, 0x2e, 0x4d, 0x58, 0x0d, 0x61, 0x16, 0xbf, 0xbe, 0x62, 0x01, 0x52, - 0x84, 0x55, 0xf0, 0xb2, 0x6b, 0x43, 0xe5, 0xca, 0x2d, 0xc2, 0x00, 0x12, - 0x3b, 0xa4, 0xe6, 0x9e, 0x2f, 0x52, 0xfb, 0xc1, 0x13, 0xad, 0x08, 0x5c, - 0x9a, 0x71, 0xf6, 0x18, 0x47, 0x20, 0x26, 0x38, 0x6d, 0x56, 0x7d, 0xbb, - 0x93, 0xd0, 0x67, 0x99, 0x06, 0x72, 0x41, 0xbc, 0x13, 0x61, 0xb5, 0xf3, - 0x0a, 0xa9, 0x1d, 0xcb, 0xd1, 0x49, 0x58, 0x6e, 0x24, 0x2e, 0x52, 0xb1, - 0x32, 0x8a, 0xb6, 0xd1, 0x00, 0xf9, 0xad, 0xce, 0x9d, 0xa4, 0xb0, 0x2f, - 0x44, 0x4b, 0xaa, 0x56, 0xe2, 0x4d, 0xe0, 0xb3, 0x10, 0x9c, 0xaf, 0xa5, - 0xbf, 0xd4, 0xd2, 0x1c, 0x8f, 0x54, 0x94, 0xd1, 0x66, 0x01, 0xc9, 0x4c, - 0x1a, 0x1a, 0xbf, 0x2d, 0xe8, 0x59, 0x0c, 0x56, 0xf6, 0x15, 0x9c, 0x75, - 0xf1, 0x5b, 0x14, 0x47, 0x83, 0x16, 0x03, 0xd1, 0xba, 0x3e, 0x12, 0xf5, - 0xe5, 0x73, 0x72, 0x1d, 0xb3, 0x54, 0xfb, 0x6c, 0x91, 0x3d, 0xd2, 0x5e, - 0x45, 0xc7, 0x89, 0x70, 0x81, 0x42, 0x1d, 0xc9, 0xde, 0xf4, 0xd5, 0xf2, - 0xb3, 0x0e, 0x36, 0xd9, 0x6c, 0x74, 0xb7, 0x00, 0xc8, 0xc1, 0xff, 0x34, - 0x36, 0xfe, 0xe8, 0xfa, 0x93, 0x62, 0x86, 0xfd, 0x5d, 0x85, 0xd2, 0xe4, - 0xd4, 0x32, 0xf7, 0x85, 0x83, 0x09, 0x67, 0x5b, 0x62, 0xbb, 0xf2, 0x36, - 0xa6, 0xe0, 0xaa, 0x2a, 0x93, 0x97, 0x50, 0x1c, 0x70, 0xa8, 0xbb, 0x2e, - 0x1f, 0x83, 0xc7, 0x52, 0x01, 0xf1, 0x92, 0x15, 0xa6, 0x49, 0xc9, 0x06, - 0x10, 0xb2, 0x47, 0x5f, 0xec, 0x88, 0x26, 0x0e, 0x5f, 0xbd, 0x6d, 0x26, - 0x43, 0x6f, 0x4f, 0x0d, 0x5b, 0x7a, 0xd3, 0xc5, 0x60, 0x32, 0x45, 0xf4, - 0xca, 0x71, 0x82, 0xbe, 0x0b, 0x71, 0x81, 0x96, 0x7a, 0x83, 0x8e, 0xea, - 0x03, 0xac, 0xa6, 0xa9, 0x58, 0x8d, 0x1e, 0x35, 0xa9, 0x5a, 0xf2, 0xac, - 0x28, 0x58, 0xa5, 0xd2, 0x07, 0x1b, 0x92, 0xfd, 0x5e, 0xec, 0xda, 0xf6, - 0x8a, 0x90, 0x82, 0x6d, 0x9b, 0x39, 0xf0, 0xdc, 0x87, 0xc8, 0x7a, 0x52, - 0x60, 0xa4, 0xdb, 0xad, 0x2a, 0x74, 0x94, 0x8f, 0x7b, 0x04, 0xf8, 0x86, - 0x2c, 0xda, 0xc2, 0xb3, 0x98, 0x9c, 0xfc, 0xfd, 0x08, 0x24, 0x6d, 0xf1, - 0x65, 0x05, 0x23, 0x1b, 0x4b, 0x81, 0x5a, 0x23, 0x56, 0xa3, 0x1c, 0x05, - 0x7b, 0x0d, 0xc6, 0xdf, 0xf9, 0x77, 0x77, 0xb6, 0xf7, 0x9f, 0xe0, 0x20, - 0xbc, 0x4f, 0xbe, 0x7f, 0x6b, 0x71, 0x37, 0x24, 0xb4, 0xe3, 0x14, 0x7c, - 0x3e, 0x37, 0xc5, 0xf2, 0x2b, 0x2b, 0xfa, 0x8e, 0xc9, 0x73, 0xd3, 0x5a, - 0xb0, 0xf4, 0x9b, 0x8c, 0x13, 0xd8, 0xbd, 0xe3, 0xce, 0x5a, 0x5f, 0x06, - 0x88, 0xcd, 0xee, 0x07, 0xe5, 0x91, 0x7b, 0x42, 0x07, 0xd9, 0x07, 0x8d, - 0x00, 0xa7, 0xea, 0x55, 0x52, 0x23, 0x72, 0x3e, 0x03, 0x8d, 0xe8, 0xda, - 0x7a, 0xf8, 0xca, 0x24, 0x91, 0xc3, 0x00, 0x32, 0xc4, 0xda, 0x4c, 0xe7, - 0x6c, 0x3c, 0x77, 0x46, 0xf8, 0xfc, 0xa7, 0xf3, 0xfe, 0xa1, 0xa1, 0xc3, - 0x0a, 0xff, 0x98, 0x79, 0x41, 0x06, 0xfa, 0xd5, 0xd9, 0x86, 0x83, 0xa1, - 0xc8, 0x3c, 0xd0, 0x1b, 0x91, 0x55, 0x6c, 0xb2, 0x1c, 0xb7, 0xf8, 0x47, - 0x04, 0x29, 0xf1, 0xdb, 0x9c, 0x30, 0xc7, 0x92, 0xa5, 0xd5, 0x93, 0xc6, - 0x92, 0xaa, 0xfd, 0x38, 0xec, 0xd3, 0xcf, 0xbe, 0xbe, 0xcc, 0x57, 0xbe, - 0x2e, 0x79, 0x7d, 0x80, 0xa8, 0x0e, 0x6c, 0x3d, 0x38, 0x1c, 0x10, 0x49, - 0xa0, 0xa5, 0xd4, 0x7d, 0xd2, 0x5b, 0xac, 0x10, 0xc6, 0x8a, 0xc8, 0xea, - 0xb0, 0x2d, 0xe5, 0x7a, 0x71, 0x64, 0xf9, 0x91, 0x17, 0x66, 0xaa, 0x4c, - 0x2c, 0xa3, 0xea, 0x86, 0x32, 0x79, 0x3e, 0x5d, 0xa8, 0xff, 0x13, 0x98, - 0x5a, 0xd5, 0x68, 0xf1, 0x11, 0xd8, 0x81, 0x90, 0x8a, 0x91, 0xbd, 0x1d, - 0x48, 0x29, 0x49, 0xfa, 0x80, 0xe0, 0x06, 0x92, 0x5f, 0x78, 0x48, 0x2a, - 0xb4, 0x32, 0x4c, 0xce, 0x52, 0xe6, 0x6b, 0x6d, 0x12, 0x60, 0x10, 0x80, - 0xef, 0xe1, 0x95, 0x7e, 0xcc, 0xd0, 0x1e, 0x3f, 0x3b, 0x38, 0x73, 0x67, - 0x55, 0xfd, 0xdc, 0x70, 0x55, 0x92, 0x98, 0xd1, 0x14, 0x33, 0xd0, 0x72, - 0xb8, 0x9c, 0xe5, 0xcd, 0xc6, 0x74, 0x56, 0xfb, 0x03, 0x0a, 0x77, 0xcf, - 0xcf, 0x92, 0x44, 0xd3, 0xe1, 0xb9, 0x72, 0x4f, 0x63, 0xc1, 0xe4, 0x01, - 0xfd, 0xa8, 0x3e, 0xd7, 0x44, 0xba, 0x6e, 0x6d, 0x6d, 0x97, 0x32, 0xf0, - 0x18, 0x12, 0xe6, 0x7e, 0xf0, 0x5c, 0x8d, 0x1b, 0x82, 0x1c, 0x5c, 0xbc, - 0x21, 0x79, 0x30, 0xf2, 0x34, 0x0e, 0xe0, 0x62, 0x2d, 0xd2, 0xe9, 0x44, - 0xc6, 0xed, 0xbc, 0x7f, 0xdc, 0x46, 0xc9, 0xa3, 0x95, 0x1d, 0xeb, 0x14, - 0x78, 0xd8, 0x70, 0xaa, 0xc4, 0xdc, 0x09, 0x07, 0x8c, 0x7f, 0x3d, 0x47, - 0x4d, 0x18, 0xd1, 0x6a, 0xdd, 0x21, 0x3d, 0x7b, 0x67, 0xce, 0xeb, 0x45, - 0xda, 0xfd, 0x7a, 0xbd, 0x25, 0xe0, 0xd4, 0x15, 0x81, 0xcb, 0x78, 0x3c, - 0xac, 0x1c, 0x07, 0x53, 0x05, 0x81, 0x0e, 0x5a, 0x46, 0xcd, 0xd8, 0x55, - 0x40, 0x9c, 0x17, 0xdd, 0xdb, 0xa1, 0x5f, 0x28, 0xa8, 0x8f, 0x08, 0x15, - 0x95, 0xe9, 0xd6, 0x5e, 0x9c, 0xf3, 0xc6, 0xac, 0x1c, 0x28, 0x90, 0x9d, - 0x90, 0xd3, 0x45, 0xd4, 0xae, 0xb6, 0x18, 0xd5, 0xc6, 0xcf, 0x16, 0x68, - 0xff, 0x28, 0xd8, 0xcb, 0xd2, 0x35, 0x8b, 0x20, 0x2a, 0x10, 0x65, 0x11, - 0xbd, 0xe5, 0x9c, 0xa1, 0x8f, 0x0e, 0xda, 0x62, 0x3f, 0x21, 0x1e, 0x87, - 0x48, 0x89, 0x61, 0xb5, 0xac, 0xbb, 0xc5, 0xb7, 0xc5, 0x67, 0x83, 0x25, - 0x2b, 0x53, 0xea, 0xa5, 0x42, 0xb0, 0x9d, 0x08, 0xcb, 0xc3, 0x82, 0x20, - 0xc4, 0x22, 0xed, 0x7b, 0xf7, 0xf2, 0x6f, 0xa7, 0xcc, 0x7b, 0x7a, 0xac, - 0xae, 0x26, 0xd2, 0x9d, 0x7a, 0x27, 0xb5, 0x36, 0xcd, 0xa8, 0x72, 0x3e, - 0x93, 0x34, 0x0d, 0x69, 0xa0, 0x2c, 0xbd, 0x33, 0x54, 0xb7, 0xc9, 0xc0, - 0xab, 0x01, 0x7d, 0xbb, 0xf5, 0x8b, 0xe0, 0xb2, 0x5a, 0x17, 0x24, 0xe6, - 0x05, 0x1d, 0x9c, 0x3c, 0x16, 0xa4, 0xdc, 0xa8, 0xb8, 0xa8, 0x6a, 0x11, - 0x28, 0x9d, 0x55, 0xda, 0x49, 0x66, 0x6e, 0x6f, 0x56, 0xd7, 0x63, 0x92, - 0xc9, 0x37, 0xb5, 0x4c, 0xa5, 0x7a, 0x4e, 0x6f, 0xdf, 0x74, 0x08, 0x4d, - 0xd3, 0x42, 0xbd, 0xaf, 0xa6, 0xb3, 0x70, 0x54, 0x45, 0x18, 0x98, 0x01, - 0xfb, 0xc2, 0x16, 0x05, 0xe5, 0xf3, 0xff, 0x46, 0x2b, 0x98, 0x91, 0xf9, - 0xbe, 0xe2, 0x46, 0x6f, 0xb4, 0x76, 0x6f, 0x1d, 0x20, 0x53, 0x84, 0xdb, - 0x2f, 0x27, 0x8d, 0xcc, 0xd5, 0x91, 0x97, 0x58, 0xf9, 0xc5, 0x69, 0xaa, - 0xb3, 0x6f, 0xbc, 0x9d, 0x7b, 0xcc, 0xa7, 0x85, 0xdc, 0x21, 0x50, 0x15, - 0xac, 0x51, 0x75, 0xe7, 0xe0, 0xa7, 0xa2, 0x62, 0x2b, 0x93, 0xfa, 0xc4, - 0xef, 0xf5, 0xd9, 0x0c, 0x82, 0x87, 0x5a, 0xbc, 0x29, 0x1c, 0xeb, 0xe6, - 0x63, 0xb9, 0x71, 0x4c, 0xa7, 0x14, 0xc6, 0x26, 0x15, 0xc1, 0x11, 0xb3, - 0x17, 0x3b, 0x18, 0x5d, 0xbe, 0x00, 0x3b, 0x39, 0xcb, 0xa2, 0x0c, 0xd1, - 0x69, 0x95, 0x49, 0xf7, 0x6c, 0xf7, 0x49, 0x2c, 0x7f, 0x25, 0xdd, 0xd8, - 0xd0, 0xdb, 0x19, 0x92, 0xcb, 0x54, 0x5e, 0xac, 0x3a, 0xd4, 0x66, 0xea, - 0x22, 0xe0, 0x9d, 0x5b, 0xa5, 0x58, 0x8e, 0x18, 0xaa, 0x21, 0x54, 0x55, - 0x87, 0xbe, 0x0e, 0x65, 0x5a, 0xef, 0x03, 0x66, 0xf6, 0x43, 0xe1, 0xd8, - 0xcc, 0xd7, 0x6a, 0x74, 0x75, 0x3c, 0xfa, 0x33, 0xc5, 0x11, 0x45, 0x0d, - 0xdf, 0x3e, 0x7d, 0xd2, 0x6b, 0x46, 0x23, 0x18, 0x22, 0xe1, 0x77, 0x89, - 0x80, 0x33, 0x9c, 0xa7, 0x66, 0xae, 0x92, 0xc5, 0x12, 0x93, 0xa9, 0x66, - 0xfc, 0xda, 0x0f, 0x5c, 0xe6, 0x92, 0xd5, 0xa8, 0x77, 0xd6, 0x5d, 0xda, - 0x52, 0xf9, 0xce, 0x90, 0x62, 0x60, 0xb4, 0xe1, 0xd3, 0xda, 0x03, 0x73, - 0xde, 0x7d, 0x85, 0xd1, 0xed, 0x77, 0x09, 0x4d, 0xd2, 0x6b, 0xd6, 0xd4, - 0x8c, 0x88, 0x60, 0x72, 0xb9, 0xa7, 0xfb, 0xdc, 0x23, 0xa0, 0x54, 0x0c, - 0x39, 0x5e, 0xad, 0xf7, 0x2d, 0x78, 0x34, 0x3a, 0xfe, 0x0d, 0x75, 0x10, - 0x4f, 0x98, 0xe8, 0x8c, 0x0a, 0xf7, 0x32, 0xd4, 0x94, 0x41, 0x1e, 0xe7, - 0x73, 0xd8, 0xf4, 0xf1, 0x5d, 0x91, 0x93, 0xcd, 0x97, 0xc7, 0x24, 0xa2, - 0x8e, 0xaf, 0x28, 0xc9, 0xbb, 0x68, 0x21, 0xbd, 0x71, 0xe7, 0x59, 0x00, - 0x58, 0xf8, 0x32, 0xf2, 0xe5, 0x4d, 0xc6, 0x78, 0xab, 0x40, 0x26, 0xf0, - 0x42, 0x9b, 0x1a, 0xf8, 0x74, 0xf3, 0x10, 0x4c, 0xf7, 0xc0, 0x44, 0x22, - 0xca, 0xe4, 0x0e, 0x5a, 0x33, 0xde, 0x82, 0x5e, 0xf9, 0x97, 0x3b, 0x5d, - 0xf4, 0xc8, 0x23, 0x59, 0xa9, 0x6c, 0xac, 0x64, 0xac, 0x31, 0xc5, 0x8e, - 0x35, 0x54, 0xde, 0xc9, 0xfb, 0xdd, 0x42, 0xd1, 0x83, 0x0b, 0xa3, 0xef, - 0x58, 0x6d, 0x5e, 0x3d, 0x86, 0xf3, 0xf5, 0xdb, 0x57, 0xf4, 0x4b, 0x97, - 0x0c, 0x49, 0x2c, 0xa6, 0xd0, 0x5f, 0xf5, 0x08, 0xc0, 0xf6, 0x63, 0xb3, - 0xd3, 0xae, 0xd9, 0xc9, 0x4e, 0x67, 0xfe, 0xc3, 0x93, 0xf9, 0x3a, 0xf3, - 0xbe, 0x5f, 0xee, 0xff, 0x7e, 0x32, 0x66, 0x3a, 0xcc, 0x1a, 0x3f, 0x18, - 0xd0, 0x28, 0x55, 0x32, 0x60, 0x48, 0xbe, 0xfb, 0x62, 0x82, 0xa7, 0x89, - 0xe7, 0x69, 0xed, 0xea, 0x93, 0xf3, 0xbc, 0xa9, 0xec, 0x93, 0x72, 0x73, - 0xaa, 0x9b, 0x81, 0x7a, 0x33, 0x7c, 0x67, 0x89, 0x93, 0xdf, 0x01, 0x3f, - 0x39, 0x98, 0xb0, 0xb1, 0x04, 0x89, 0x8e, 0xdb, 0xb7, 0x76, 0xbd, 0x99, - 0x91, 0x51, 0xe3, 0x44, 0xaf, 0xfd, 0xaa, 0x69, 0x04, 0x56, 0x83, 0x20, - 0x77, 0xf9, 0x68, 0x93, 0xae, 0x03, 0x64, 0xaf, 0x80, 0x23, 0x41, 0x01, - 0xfb, 0x86, 0xc0, 0x4e, 0xf4, 0xb6, 0x30, 0xec, 0x34, 0xcb, 0x12, 0x5e, - 0x00, 0x85, 0xf0, 0xc7, 0xb4, 0x98, 0x05, 0xde, 0x17, 0x49, 0x17, 0x7f, - 0x4d, 0x96, 0x8d, 0xd3, 0xd0, 0xc0, 0x43, 0xfe, 0xcc, 0x01, 0x9f, 0xaa, - 0xa3, 0x5a, 0x17, 0x84, 0x2a, 0x4b, 0x39, 0x9c, 0x22, 0x54, 0x96, 0xd3, - 0xa5, 0x2d, 0x23, 0x96, 0x3f, 0xec, 0xd1, 0xd4, 0x77, 0x08, 0xc9, 0x17, - 0x4b, 0xdc, 0x7f, 0x3e, 0x69, 0x1d, 0x77, 0xaf, 0xfc, 0x16, 0x2a, 0x58, - 0xbb, 0xc7, 0x2f, 0x78, 0xc9, 0x8e, 0x78, 0x20, 0x86, 0x36, 0x4b, 0x5b, - 0xbc, 0xfd, 0xae, 0xb4, 0x30, 0x86, 0xfe, 0xbc, 0xe4, 0x3c, 0x88, 0xf6, - 0x16, 0x08, 0x17, 0xb5, 0x3c, 0x9f, 0x2f, 0x46, 0x70, 0xed, 0x07, 0x2f, - 0x2c, 0x7a, 0xfa, 0x3c, 0xcc, 0x2f, 0x41, 0x92, 0x12, 0x68, 0xd9, 0x4b, - 0x76, 0x9f, 0x3e, 0xfe, 0x46, 0x94, 0x7f, 0xd9, 0x8d, 0x35, 0x8a, 0x98, - 0x54, 0xe4, 0x27, 0x95, 0x78, 0xce, 0xdc, 0x5b, 0xc8, 0x68, 0x59, 0xd5, - 0xb6, 0xc8, 0x0c, 0x89, 0xe8, 0x6e, 0xc8, 0xfc, 0x3b, 0x14, 0x9d, 0x03, - 0x12, 0xa2, 0x51, 0xaa, 0x57, 0x74, 0x88, 0x90, 0x39, 0x23, 0xaf, 0xdf, - 0x92, 0x68, 0x82, 0x69, 0xfa, 0xc1, 0x51, 0x44, 0x19, 0x01, 0x83, 0xef, - 0xdc, 0x78, 0x5b, 0x0d, 0x22, 0x37, 0x9b, 0x4d, 0x3a, 0x3c, 0xcb, 0x28, - 0x33, 0x38, 0x0a, 0x0a, 0x65, 0xfc, 0xa8, 0x1e, 0xdc, 0x1f, 0xf7, 0xcd, - 0xf4, 0xc5, 0x41, 0x07, 0x50, 0x6c, 0x4c, 0x53, 0x26, 0x78, 0x56, 0x8b, - 0xc0, 0x05, 0x0b, 0x47, 0x7b, 0x6a, 0xd8, 0x2d, 0xfe, 0x54, 0xca, 0x38, - 0x92, 0xc6, 0x7d, 0x66, 0x6e, 0xcd, 0x7a, 0xbb, 0x79, 0x15, 0x1f, 0x67, - 0x27, 0x5e, 0x16, 0x4d, 0x45, 0xb8, 0xf2, 0xe4, 0x89, 0x29, 0xdc, 0xcd, - 0x7c, 0x61, 0x7d, 0xb7, 0x2a, 0xa5, 0xa2, 0xdb, 0x0f, 0x5f, 0x5c, 0x0d, - 0xb3, 0x82, 0x88, 0x5c, 0xfe, 0x93, 0xc7, 0xe8, 0x1a, 0x5e, 0x02, 0xdc, - 0x9e, 0x66, 0xc1, 0xfa, 0xc8, 0xe7, 0x88, 0x42, 0x6a, 0xf7, 0xe9, 0x7c, - 0x25, 0x16, 0xc6, 0x94, 0x50, 0x7a, 0x2a, 0xcc, 0x42, 0xa8, 0xa9, 0x41, - 0xb2, 0x6c, 0x1e, 0x0f, 0x7a, 0x59, 0x27, 0x43, 0x21, 0x56, 0xb9, 0xef, - 0x7c, 0xb3, 0x07, 0x3f, 0xd2, 0xef, 0x0f, 0xb6, 0x09, 0xf6, 0xca, 0x0d, - 0xf8, 0x7e, 0x0b, 0x28, 0x90, 0xc7, 0x5a, 0x7e, 0x87, 0xf3, 0x54, 0xa0, - 0x0f, 0x59, 0x64, 0x9f, 0xdb, 0x28, 0x3c, 0x47, 0x1e, 0x2e, 0xd2, 0x75, - 0x56, 0xff, 0x1a, 0x07, 0x47, 0xd1, 0xdc, 0xf6, 0xa8, 0xd1, 0xfc, 0xa5, - 0x3c, 0xe9, 0x6c, 0x2b, 0x16, 0xc8, 0x2f, 0x88, 0x9f, 0xab, 0x3a, 0x9b, - 0xcc, 0x8c, 0x50, 0x5b, 0x9f, 0x0d, 0xfa, 0xfa, 0x9f, 0xc6, 0xde, 0x48, - 0x98, 0x09, 0x78, 0x2f, 0xa9, 0x7c, 0xf4, 0x10, 0xe6, 0x1e, 0x35, 0x0b, - 0xaf, 0xaa, 0x5c, 0x54, 0x1f, 0x20, 0x47, 0x57, 0xbe, 0xdc, 0xed, 0x78, - 0xc9, 0x3b, 0x03, 0x06, 0x45, 0xb4, 0x40, 0xec, 0x75, 0x83, 0x7a, 0xe7, - 0x4e, 0x3f, 0x9b, 0xab, 0xfa, 0x36, 0x56, 0x6d, 0x83, 0x59, 0x56, 0xdc, - 0x97, 0x80, 0x12, 0xfe, 0xff, 0x56, 0x1d, 0x6b, 0xe0, 0xf1, 0x99, 0xe8, - 0x39, 0xfb, 0xbb, 0x98, 0x1e, 0x34, 0x16, 0x39, 0x2c, 0x10, 0xa8, 0x41, - 0xc4, 0xe3, 0xbd, 0x25, 0x0b, 0xaf, 0x5f, 0x3e, 0x9e, 0x8f, 0x81, 0xaa, - 0xc8, 0x0c, 0x44, 0xd0, 0x71, 0xb9, 0x18, 0x83, 0x9d, 0x82, 0x79, 0xf8, - 0xc2, 0x08, 0x94, 0x11, 0x92, 0xc3, 0x49, 0x5a, 0xc7, 0xcf, 0xd1, 0x5a, - 0xa9, 0x99, 0x1c, 0xc8, 0xc3, 0x7e, 0x5e, 0x25, 0x18, 0x83, 0x56, 0xd2, - 0xb7, 0xc1, 0xba, 0x22, 0x61, 0x56, 0x5b, 0x80, 0x5a, 0x7a, 0xa5, 0x30, - 0x73, 0x3b, 0x6f, 0x44, 0x2f, 0xcf, 0x72, 0xb3, 0x9e, 0xee, 0xbd, 0x2c, - 0xd4, 0x72, 0x35, 0xdc, 0x57, 0x69, 0xf6, 0xed, 0x09, 0x79, 0x00, 0x11, - 0x5f, 0xaf, 0x95, 0x98, 0x96, 0xd7, 0x45, 0x01, 0xc8, 0x62, 0x30, 0x4d, - 0xac, 0xdf, 0x58, 0x5a, 0xf2, 0xc1, 0x17, 0x63, 0x6e, 0x47, 0xff, 0xe0, - 0xcc, 0xfa, 0x2e, 0xf2, 0xb0, 0xa8, 0x1b, 0xe3, 0xfd, 0x8f, 0x64, 0xbb, - 0x2a, 0x73, 0xe0, 0xa2, 0xab, 0x31, 0x4c, 0x13, 0x47, 0xed, 0x66, 0x45, - 0xfc, 0x36, 0x7c, 0x54, 0x3f, 0x1b, 0x84, 0x8b, 0x84, 0xdb, 0x36, 0xc9, - 0x62, 0x80, 0x09, 0xa5, 0x2c, 0x81, 0x1d, 0x24, 0x21, 0xb3, 0x5f, 0x68, - 0x47, 0xe9, 0xdd, 0x61, 0x4f, 0x83, 0x58, 0x17, 0xc9, 0x45, 0xe4, 0xdf, - 0x19, 0x9d, 0x9a, 0xb3, 0x1b, 0x60, 0x90, 0xe6, 0x8a, 0xfb, 0xc1, 0xb7, - 0x60, 0xed, 0x50, 0xbb, 0xa4, 0xd9, 0xaa, 0xd2, 0x8a, 0x47, 0x63, 0x09, - 0xcc, 0x34, 0x84, 0x6f, 0xde, 0xec, 0x65, 0x48, 0xe0, 0x6a, 0xf3, 0xb5, - 0x79, 0x65, 0xb8, 0x96, 0x8e, 0x8e, 0x6e, 0x81, 0x07, 0x39, 0x9b, 0x05, - 0x1c, 0x42, 0x46, 0xb6, 0x0a, 0xda, 0xcf, 0xfc, 0xe1, 0xd9, 0x9b, 0x82, - 0x1f, 0xe5, 0x0f, 0x68, 0x53, 0xd7, 0x05, 0x8a, 0x03, 0x01, 0x87, 0x85, - 0x11, 0xa1, 0x19, 0x0c, 0x42, 0x45, 0x1c, 0x1e, 0x9b, 0x27, 0x18, 0xe8, - 0x6d, 0xce, 0x14, 0xe0, 0x44, 0x57, 0xf8, 0x3a, 0xb1, 0x78, 0x44, 0x81, - 0xd3, 0x49, 0x09, 0xa0, 0x27, 0xe3, 0x92, 0x34, 0x1e, 0xd8, 0x49, 0x42, - 0xbc, 0x15, 0x68, 0x9d, 0x3c, 0x98, 0x45, 0x84, 0x0e, 0xb9, 0xc9, 0x11, - 0xc3, 0x0f, 0x99, 0xfa, 0xae, 0x13, 0xf2, 0xc0, 0xe2, 0x86, 0xdf, 0xfe, - 0xe1, 0x89, 0x21, 0xb3, 0xe7, 0x8b, 0x83, 0x34, 0x99, 0x69, 0x10, 0x63, - 0xe9, 0x9d, 0x88, 0xe8, 0x9f, 0x14, 0x30, 0x1f, 0x1c, 0xad, 0xf4, 0xc3, - 0x9f, 0xf3, 0x14, 0xec, 0x8f, 0x0a, 0x92, 0x46, 0xe9, 0x15, 0x42, 0x1f, - 0x25, 0x6c, 0x7e, 0xc2, 0x48, 0xeb, 0xc6, 0x4d, 0x00, 0x12, 0x1c, 0xd6, - 0x71, 0xa6, 0xd2, 0xa4, 0x23, 0x38, 0x0d, 0xbc, 0xf9, 0xba, 0x1c, 0x2c, - 0x12, 0x67, 0xab, 0x81, 0x11, 0x07, 0x05, 0xce, 0x91, 0xa6, 0x91, 0xbb, - 0x73, 0x46, 0xf8, 0x92, 0x6d, 0xf1, 0x83, 0x94, 0xaa, 0xcf, 0xc8, 0x88, - 0xc0, 0x35, 0x9d, 0x41, 0xf5, 0xce, 0xa5, 0x79, 0xce, 0xa8, 0x96, 0xcb, - 0xc6, 0x10, 0xfa, 0x69, 0xc6, 0x48, 0x6a, 0x34, 0x0e, 0x99, 0x42, 0xf9, - 0x76, 0xd8, 0x46, 0xc9, 0x10, 0xb3, 0x7d, 0x9b, 0x86, 0x0f, 0x76, 0x82, - 0xa4, 0x2f, 0xe0, 0xa0, 0xb8, 0x8b, 0x09, 0xc5, 0x2d, 0x9d, 0xb9, 0xcb, - 0x14, 0xfb, 0x19, 0x94, 0xd0, 0x16, 0x61, 0x88, 0x0e, 0x5b, 0xe6, 0xdd, - 0xc8, 0xa4, 0x84, 0x91, 0xff, 0x47, 0x51, 0xb4, 0xb2, 0x0a, 0xb6, 0x32, - 0x09, 0x57, 0x39, 0xfe, 0x7a, 0xa0, 0x42, 0x4c, 0x48, 0xa9, 0xef, 0x24, - 0x34, 0x91, 0xa5, 0xde, 0x7a, 0x8f, 0xc7, 0x3a, 0x8b, 0xe9, 0xc6, 0x4c, - 0x65, 0xac, 0x50, 0x8c, 0x6c, 0x15, 0x39, 0x54, 0x7f, 0xb4, 0x37, 0x6c, - 0x49, 0xd6, 0x07, 0x33, 0xca, 0x78, 0x3d, 0x76, 0xb5, 0xe5, 0x4f, 0x0f, - 0xb3, 0xa7, 0x1f, 0x1d, 0xa9, 0x39, 0x94, 0x98, 0x2d, 0x7e, 0xb5, 0xfa, - 0x82, 0x73, 0xfc, 0x04, 0xd1, 0xee, 0xc6, 0x87, 0xf7, 0x47, 0xd9, 0xa4, - 0x39, 0x0c, 0x6e, 0x82, 0x6e, 0x87, 0xff, 0x3e, 0xce, 0x65, 0x0a, 0xa8, - 0x6d, 0x24, 0xc3, 0xe7, 0x01, 0x40, 0xe5, 0x48, 0x60, 0xec, 0x89, 0xd4, - 0x90, 0xfd, 0x6c, 0x82, 0xec, 0xb2, 0x04, 0x1a, 0x76, 0x12, 0x52, 0xce, - 0xdb, 0xf3, 0x6c, 0x46, 0xec, 0x48, 0x57, 0x6c, 0x3d, 0x6c, 0x37, 0x46, - 0x9a, 0xd9, 0xa7, 0x2d, 0x94, 0x75, 0xb7, 0x35, 0x56, 0x3d, 0x83, 0x32, - 0xe6, 0xf3, 0x59, 0x82, 0xd5, 0xcd, 0x67, 0xd5, 0xf9, 0x2c, 0xb1, 0x0d, - 0xd6, 0x9e, 0xb4, 0xa5, 0x0b, 0xcc, 0x27, 0x81, 0x53, 0x06, 0x64, 0x29, - 0x07, 0x65, 0x9e, 0x23, 0xc6, 0x8e, 0xe4, 0xde, 0x0b, 0x0d, 0xc8, 0x98, - 0xcf, 0x46, 0xc8, 0x1f, 0x4e, 0x1a, 0x95, 0x93, 0x26, 0x48, 0x0f, 0xbc, - 0xce, 0x56, 0xf4, 0xfc, 0x6c, 0xbe, 0x71, 0x91, 0x27, 0x9d, 0x87, 0x65, - 0x41, 0xcc, 0x37, 0x53, 0x92, 0x6d, 0xeb, 0xaf, 0x58, 0x0b, 0xe5, 0xa5, - 0xf7, 0xee, 0xbf, 0xdd, 0x12, 0x43, 0x06, 0xd9, 0x56, 0xc7, 0x71, 0x1e, - 0x53, 0x81, 0x8e, 0xde, 0xe6, 0xd3, 0x82, 0xe8, 0x07, 0x46, 0x25, 0x30, - 0x87, 0x49, 0x9a, 0xfe, 0x47, 0x6e, 0xee, 0x96, 0x34, 0xd7, 0x40, 0x86, - 0x1c, 0x6d, 0x54, 0x71, 0xbb, 0xc1, 0x33, 0x5e, 0xb9, 0x40, 0x47, 0x24, - 0x09, 0x6c, 0xe9, 0x5e, 0xd0, 0x32, 0x52, 0x4a, 0x10, 0xea, 0x62, 0x82, - 0x9c, 0xb0, 0xd9, 0xdc, 0xfd, 0xa4, 0x3e, 0xdb, 0x02, 0x4e, 0x18, 0xd9, - 0x8e, 0xbc, 0x5c, 0x0c, 0xc9, 0xa5, 0xe2, 0xb1, 0x4b, 0x11, 0xf4, 0xff, - 0xcc, 0x64, 0x51, 0xda, 0x89, 0x95, 0xef, 0x60, 0x4f, 0x59, 0xb0, 0xc9, - 0x75, 0x5a, 0xe2, 0x0d, 0x54, 0x11, 0x83, 0x66, 0xe9, 0xd4, 0x6c, 0xa5, - 0xeb, 0x28, 0xb4, 0xdf, 0xaf, 0xb4, 0xfa, 0x92, 0x57, 0x5b, 0x7f, 0x8d, - 0x25, 0x70, 0x3f, 0x09, 0x91, 0xfe, 0xd1, 0x6c, 0x91, 0xe9, 0xb8, 0xdc, - 0x8e, 0x46, 0x7a, 0xf4, 0xb1, 0xc9, 0x2f, 0x7d, 0x85, 0xae, 0xf4, 0xb1, - 0xcf, 0x14, 0x67, 0x7a, 0x6b, 0x1f, 0xef, 0xb9, 0xf7, 0xff, 0x44, 0xab, - 0x08, 0x17, 0x4d, 0x14, 0x38, 0xe3, 0xa5, 0xd2, 0xbd, 0xbb, 0xac, 0xcd, - 0x3a, 0xaf, 0x60, 0xad, 0x78, 0x24, 0x41, 0x3f, 0x2e, 0x65, 0x70, 0xf1, - 0x91, 0x5e, 0x07, 0x87, 0x87, 0xa8, 0xfd, 0x80, 0x2f, 0x46, 0xad, 0x64, - 0xa3, 0xe5, 0x59, 0xdd, 0xcb, 0x41, 0x30, 0x13, 0x33, 0x6b, 0xa3, 0x26, - 0x06, 0xa8, 0x6a, 0x2d, 0xad, 0x27, 0xf9, 0xac, 0xa1, 0xaf, 0x7b, 0x83, - 0xee, 0xea, 0x1e, 0xad, 0x61, 0x78, 0x78, 0xca, 0xfa, 0x0c, 0xd4, 0x20, - 0x4a, 0xe9, 0xa5, 0x97, 0xd6, 0xa5, 0xc3, 0xc8, 0x14, 0x43, 0x52, 0x87, - 0xfd, 0xd0, 0xe4, 0xe2, 0x41, 0x56, 0x14, 0xbf, 0xf3, 0xf9, 0x14, 0x1d, - 0x1f, 0x4b, 0xb8, 0x76, 0x8e, 0x05, 0x11, 0xf9, 0x0e, 0xa5, 0x37, 0x7a, - 0xec, 0x1d, 0x3c, 0xe3, 0x35, 0x0e, 0xab, 0x65, 0x23, 0x73, 0x29, 0x00, - 0xa0, 0x36, 0x81, 0x2e, 0x55, 0xa6, 0x50, 0x42, 0xb9, 0xc1, 0x79, 0x04, - 0xe4, 0x83, 0x7b, 0x2d, 0x37, 0x6c, 0x5e, 0xa7, 0x8a, 0xd9, 0x50, 0x49, - 0xa2, 0x43, 0x44, 0x21, 0x70, 0xfa, 0xbc, 0x12, 0xb8, 0x59, 0x96, 0x78, - 0xae, 0x9d, 0x5a, 0x1b, 0x1b, 0xd6, 0xfa, 0x10, 0x80, 0x14, 0xf5, 0x0f, - 0x3e, 0x44, 0x76, 0x4f, 0x62, 0xdd, 0x60, 0x8f, 0x1a, 0x44, 0xf9, 0xe8, - 0x71, 0x19, 0x90, 0xa6, 0x69, 0xfb, 0x4c, 0x0c, 0x72, 0x1c, 0xf1, 0x0c, - 0x2c, 0x17, 0xb6, 0x75, 0x75, 0x5b, 0x3b, 0x33, 0x3b, 0x81, 0x2d, 0xe8, - 0xf6, 0xec, 0x1a, 0xca, 0x73, 0xb2, 0x95, 0x6f, 0x45, 0x5e, 0x0e, 0x7c, - 0xbd, 0x4d, 0x7a, 0x0b, 0x48, 0x69, 0x74, 0x91, 0xde, 0x0c, 0xf9, 0x20, - 0xbf, 0x61, 0xf5, 0xf9, 0x8c, 0x13, 0x42, 0x98, 0x5c, 0xed, 0x08, 0x1b, - 0xc1, 0x3b, 0xc4, 0xff, 0xec, 0x60, 0x8b, 0x38, 0x02, 0x91, 0xd9, 0x70, - 0x85, 0xa1, 0x6a, 0xa4, 0x5a, 0x44, 0xee, 0x37, 0x84, 0x55, 0x5a, 0xdd, - 0xd9, 0xf1, 0xd9, 0x11, 0x5e, 0x80, 0x5f, 0xa3, 0x9f, 0xf1, 0xa0, 0x4f, - 0x30, 0x40, 0x4a, 0x6c, 0xb7, 0x62, 0xb1, 0x83, 0xee, 0x58, 0x81, 0xc3, - 0x39, 0xcd, 0x76, 0xe1, 0x06, 0x1c, 0x00, 0xd0, 0x99, 0x95, 0xda, 0xaa, - 0x4e, 0xed, 0xce, 0x1b, 0xb0, 0x61, 0x08, 0x6e, 0x2e, 0x4c, 0xc3, 0x51, - 0x83, 0xe1, 0x2f, 0xaa, 0x44, 0xeb, 0x01, 0xdf, 0x2e, 0xfd, 0x33, 0x0d, - 0x66, 0x23, 0x8c, 0x0e, 0x60, 0x5e, 0xee, 0x34, 0xc1, 0xa6, 0x1b, 0x28, - 0x12, 0x13, 0xa6, 0xac, 0xec, 0xee, 0x49, 0x19, 0x63, 0x46, 0x90, 0xa5, - 0x87, 0xcf, 0x10, 0x0c, 0x6f, 0xc9, 0x22, 0xa1, 0x08, 0x65, 0xd3, 0xb8, - 0xbb, 0x33, 0xf9, 0x7f, 0xf5, 0xf2, 0x5a, 0xe7, 0xf1, 0xf4, 0xd0, 0x11, - 0xb2, 0xd2, 0x95, 0x1c, 0x68, 0x64, 0xc6, 0xfd, 0xae, 0x27, 0xaa, 0x5a, - 0x97, 0xb7, 0x73, 0x49, 0x90, 0x12, 0xcf, 0x1d, 0xf6, 0xc5, 0x8e, 0xb0, - 0x51, 0xa6, 0x83, 0xbb, 0xe6, 0x61, 0xad, 0x43, 0x14, 0xd5, 0xb2, 0x65, - 0x39, 0x21, 0x0b, 0xdd, 0x79, 0x85, 0x67, 0x4f, 0x1f, 0xec, 0x4a, 0xec, - 0x7a, 0xe7, 0xb8, 0xf7, 0x58, 0xfc, 0x95, 0x87, 0x9b, 0xe0, 0x2e, 0xbc, - 0x89, 0x33, 0x20, 0x4f, 0xc2, 0x06, 0xb5, 0x6e, 0xb9, 0xe9, 0x8b, 0xc5, - 0xfc, 0xf6, 0x3b, 0x64, 0x5c, 0x83, 0xd4, 0xb3, 0xf2, 0x53, 0xb9, 0xb2, - 0xe3, 0xf3, 0x0a, 0xea, 0x29, 0xa4, 0xa2, 0x63, 0x7f, 0x6c, 0x5b, 0xc2, - 0x47, 0xd1, 0xe1, 0x00, 0xb3, 0xbe, 0x91, 0xc5, 0xf3, 0xd4, 0xcc, 0x28, - 0x26, 0x91, 0x51, 0xca, 0x5c, 0x9a, 0x78, 0xa9, 0xc1, 0x77, 0xf6, 0x66, - 0x3b, 0x61, 0xab, 0xae, 0xba, 0xae, 0x42, 0xa4, 0xba, 0xc5, 0x94, 0x33, - 0x4f, 0x88, 0x54, 0xf9, 0x39, 0x34, 0xb9, 0xa3, 0xb5, 0x9d, 0x3a, 0x8e, - 0x5f, 0xcf, 0x6d, 0x2d, 0x40, 0x0c, 0xf5, 0x57, 0xb9, 0x8a, 0xb8, 0x5b, - 0x53, 0x09, 0x3f, 0xcd, 0xab, 0xe3, 0xd4, 0x46, 0xbf, 0xb0, 0x01, 0xef, - 0x3b, 0x18, 0xfe, 0x47, 0x4a, 0x47, 0x09, 0x95, 0x18, 0x99, 0xfa, 0x09, - 0xd3, 0xbb, 0xc3, 0x61, 0x9a, 0x76, 0x57, 0x2c, 0x4a, 0x56, 0x73, 0x6e, - 0x90, 0x62, 0x8c, 0x1f, 0x6b, 0xb5, 0x7a, 0xa6, 0xec, 0x6b, 0xc4, 0xb8, - 0x5c, 0x9e, 0x57, 0xa9, 0xa7, 0xb1, 0xd4, 0x27, 0x6f, 0xae, 0x3a, 0x8a, - 0x5b, 0x8b, 0x55, 0xf8, 0x15, 0xc7, 0xee, 0x42, 0x84, 0xf8, 0x75, 0x23, - 0x21, 0x7f, 0x35, 0x3c, 0xb7, 0x76, 0x95, 0xbf, 0xdb, 0x96, 0x58, 0x3e, - 0xc5, 0x84, 0x8d, 0x18, 0xb5, 0xca, 0x32, 0x34, 0x77, 0x53, 0x2f, 0x67, - 0xd8, 0x65, 0x23, 0x0e, 0x2b, 0x3d, 0x65, 0xe1, 0x12, 0x20, 0xea, 0x24, - 0xd8, 0x6e, 0xbc, 0x26, 0xfc, 0x54, 0xca, 0xac, 0xe5, 0x6b, 0xc7, 0x6f, - 0xbc, 0xa5, 0xc6, 0x23, 0xc8, 0xc1, 0x3b, 0x21, 0x1a, 0xb0, 0xa8, 0x4b, - 0x99, 0xe2, 0xcb, 0x5c, 0x06, 0x9f, 0x8a, 0x7b, 0xf6, 0x0f, 0xcd, 0x48, - 0xda, 0x61, 0x56, 0x60, 0x02, 0x54, 0xe7, 0xf8, 0x0d, 0x40, 0x0d, 0x36, - 0x59, 0x4a, 0xa4, 0xc0, 0x00, 0xdd, 0x33, 0xaf, 0xc7, 0x8a, 0xe6, 0x75, - 0x69, 0xea, 0x95, 0x77, 0xe0, 0x0f, 0x73, 0xa5, 0x36, 0xc1, 0x7a, 0xba, - 0xe8, 0xda, 0x4a, 0xaf, 0x6d, 0x11, 0xd5, 0xb4, 0x39, 0x06, 0x22, 0xd9, - 0xc8, 0x29, 0xaa, 0xba, 0xe5, 0x80, 0x30, 0x05, 0x22, 0xf5, 0xc8, 0xe2, - 0xea, 0xef, 0xc7, 0xeb, 0xeb, 0xfa, 0xe6, 0xf6, 0xe9, 0x28, 0xb6, 0x94, - 0xc1, 0x59, 0xa2, 0xe3, 0x83, 0x7c, 0x89, 0x84, 0x12, 0x86, 0x74, 0x1f, - 0xb7, 0xb3, 0x96, 0x49, 0x1d, 0xd2, 0x7c, 0xed, 0x24, 0x92, 0x06, 0x98, - 0x08, 0x3a, 0xb8, 0x1a, 0xaa, 0x90, 0x11, 0x61, 0x5c, 0x9b, 0x23, 0xdf, - 0xd0, 0xba, 0xc7, 0x0d, 0x03, 0xd4, 0x8e, 0xbd, 0xed, 0x33, 0x2f, 0x09, - 0x8d, 0x29, 0xa5, 0xd5, 0xfa, 0x70, 0x5c, 0xb0, 0xdf, 0xec, 0x0a, 0x83, - 0x84, 0x48, 0x66, 0x77, 0x5a, 0x10, 0x5d, 0xcd, 0xe3, 0x99, 0x1e, 0x30, - 0xdc, 0xf2, 0x77, 0x9a, 0xc6, 0xc4, 0x74, 0x12, 0x7a, 0xc6, 0x87, 0x4b, - 0xac, 0x97, 0x5a, 0x3f, 0xf2, 0xa5, 0x88, 0xce, 0x57, 0xfb, 0xa1, 0xa4, - 0x3c, 0x80, 0x2a, 0xef, 0xa0, 0x8e, 0xbf, 0x0e, 0xec, 0xcf, 0xf5, 0x90, - 0xcd, 0x4b, 0x4f, 0xbf, 0xf3, 0x77, 0x70, 0x76, 0xad, 0x83, 0x4f, 0x92, - 0xc4, 0xe9, 0x86, 0xd8, 0x6e, 0xf1, 0xb7, 0x22, 0x1b, 0x92, 0x84, 0x23, - 0x67, 0x23, 0x16, 0x16, 0xd6, 0xea, 0x92, 0xfd, 0x82, 0xac, 0x4c, 0x85, - 0x07, 0x6d, 0x61, 0x97, 0x18, 0x85, 0x6e, 0x41, 0x92, 0x7d, 0xfc, 0x09, - 0xe5, 0xe0, 0xf6, 0xfb, 0xf6, 0x80, 0x94, 0xcb, 0x53, 0x98, 0x5c, 0x3d, - 0x5a, 0xce, 0xa2, 0xd7, 0x8b, 0x31, 0x6c, 0x75, 0x4e, 0x9b, 0xb3, 0xf2, - 0x9d, 0xb0, 0xa0, 0xc5, 0xfc, 0x4a, 0x10, 0x2f, 0x0b, 0x97, 0xe3, 0x8f, - 0xf1, 0x38, 0xcc, 0x9d, 0x09, 0xd1, 0xe2, 0x92, 0x77, 0xad, 0x86, 0x6a, - 0xb4, 0x97, 0x5b, 0xb0, 0xfa, 0x1d, 0x17, 0x04, 0x5f, 0xfc, 0x3e, 0xa2, - 0x2f, 0xe0, 0xf8, 0x37, 0x6d, 0xaf, 0x48, 0xff, 0x73, 0x98, 0x63, 0x59, - 0x1a, 0xa1, 0xfe, 0xc2, 0x2f, 0x78, 0x07, 0xaf, 0x70, 0x0a, 0xcf, 0x48, - 0xe2, 0x3f, 0x80, 0xed, 0x30, 0x06, 0x4d, 0x3a, 0x39, 0x20, 0xd0, 0x8b, - 0xa8, 0xe9, 0xfc, 0xac, 0x78, 0x13, 0xe0, 0xc6, 0xb1, 0x83, 0xe9, 0x0f, - 0xd0, 0xdd, 0x74, 0xfc, 0xf2, 0x2e, 0x74, 0xed, 0x6e, 0x9c, 0x19, 0xb5, - 0x18, 0x6a, 0xad, 0x6c, 0x49, 0x28, 0xe5, 0x5d, 0x56, 0x1e, 0x46, 0x13, - 0x32, 0x35, 0xea, 0x08, 0x56, 0xfe, 0x61, 0x4e, 0xf5, 0x56, 0x3e, 0x3c, - 0x2b, 0x9b, 0xa0, 0x64, 0x9f, 0xcd, 0x8f, 0x36, 0xca, 0xed, 0xc3, 0xa7, - 0xee, 0x34, 0x29, 0xe9, 0x82, 0x69, 0xa7, 0x84, 0xc7, 0x3c, 0x6d, 0xa5, - 0xe3, 0x0a, 0xf1, 0x42, 0xc8, 0x83, 0x74, 0x21, 0x4f, 0xe8, 0x44, 0x24, - 0x01, 0xc1, 0xd8, 0xb6, 0xc6, 0xff, 0xad, 0x3d, 0xb4, 0x44, 0x11, 0xd7, - 0x88, 0x8a, 0x1f, 0x6e, 0x29, 0x27, 0x68, 0x4f, 0xde, 0xb4, 0x00, 0x5e, - 0x9e, 0x6d, 0xc4, 0xb2, 0x5d, 0xbe, 0xf0, 0xf8, 0x68, 0x9b, 0x47, 0x28, - 0x69, 0x6b, 0x5b, 0xab, 0x96, 0x30, 0xfb, 0x9a, 0x51, 0xa8, 0xd1, 0xd7, - 0xba, 0xc6, 0x40, 0x37, 0x1a, 0xa9, 0xc0, 0x4c, 0x95, 0x1d, 0x42, 0xcb, - 0x07, 0x9a, 0xff, 0xfe, 0x3a, 0x3d, 0x5d, 0x64, 0x8b, 0xfe, 0x4a, 0x31, - 0x77, 0xb3, 0xe3, 0xe5, 0x72, 0x6d, 0xe9, 0x5a, 0xa4, 0x04, 0xf1, 0xb4, - 0x8a, 0x1c, 0x94, 0x8e, 0xa1, 0xf3, 0xdd, 0x20, 0x34, 0xc6, 0xa8, 0x24, - 0x0a, 0x63, 0xc2, 0x06, 0xea, 0xb8, 0x39, 0xbe, 0x31, 0x38, 0x69, 0x1d, - 0x67, 0x4d, 0xb4, 0x95, 0x76, 0xf4, 0xa8, 0x67, 0xc5, 0xd0, 0x9a, 0xc7, - 0xd8, 0x45, 0x0f, 0x96, 0x5e, 0x94, 0x5f, 0x72, 0xc9, 0xd8, 0x7e, 0x61, - 0x16, 0x5f, 0xf7, 0x09, 0x8f, 0x21, 0xea, 0x2b, 0x62, 0x67, 0x63, 0x88, - 0x08, 0x8b, 0x08, 0xc4, 0xd0, 0xd7, 0x19, 0x5f, 0xf8, 0x93, 0x3d, 0xcd, - 0xe9, 0xbb, 0xa0, 0xad, 0x57, 0xc5, 0x69, 0x30, 0x1c, 0xd0, 0x4a, 0x31, - 0x23, 0x50, 0x8a, 0xdc, 0xa9, 0x40, 0x5a, 0xdd, 0xd4, 0xb8, 0x5b, 0x7b, - 0x9d, 0x95, 0x95, 0xce, 0x72, 0xb7, 0xb5, 0x00, 0xc6, 0x0f, 0xf8, 0xfc, - 0x27, 0x38, 0x16, 0x45, 0x6b, 0xb0, 0x6e, 0xbd, 0xe8, 0x29, 0xd9, 0x6c, - 0xae, 0xf4, 0x6e, 0x2c, 0xda, 0x01, 0xa8, 0x52, 0xdb, 0x9b, 0xe6, 0xc2, - 0x5c, 0x81, 0x79, 0x47, 0xed, 0x65, 0x8c, 0xdf, 0x7f, 0x53, 0x6b, 0x22, - 0xd4, 0x0c, 0xf9, 0x88, 0xea, 0x81, 0xe0, 0xd3, 0x43, 0xfa, 0x28, 0x3e, - 0x01, 0x77, 0x9d, 0xe0, 0x1c, 0xf7, 0xf3, 0x83, 0xd0, 0xca, 0x79, 0x18, - 0xeb, 0x72, 0xaa, 0x62, 0x9c, 0x00, 0xe4, 0x41, 0x8e, 0x7c, 0x14, 0x1c, - 0x3f, 0x87, 0x5a, 0x52, 0xaa, 0x81, 0x23, 0xda, 0xe8, 0x91, 0x03, 0x40, - 0x15, 0xc1, 0xc3, 0x7e, 0x09, 0x6c, 0xf8, 0xcd, 0xfc, 0x57, 0x4b, 0x87, - 0x2c, 0x0f, 0xa6, 0x3c, 0xeb, 0x4a, 0x74, 0x9e, 0x20, 0x08, 0xda, 0xda, - 0x8d, 0x95, 0xbc, 0xe5, 0x76, 0x8b, 0x49, 0x92, 0xe2, 0x67, 0x9e, 0x4a, - 0x9a, 0xfb, 0x21, 0xef, 0x57, 0x45, 0x3c, 0xb0, 0x17, 0xad, 0x8f, 0x93, - 0xff, 0x07, 0x57, 0x9c, 0xbf, 0x47, 0xd4, 0x94, 0xbb, 0x49, 0x4b, 0x54, - 0xa8, 0x12, 0x95, 0xf0, 0xe7, 0x26, 0x14, 0x56, 0x39, 0x45, 0x5e, 0x21, - 0x8e, 0x12, 0xdf, 0x3e, 0xc5, 0xee, 0x4a, 0xf0, 0x16, 0xbb, 0x3b, 0x18, - 0xf7, 0xef, 0x23, 0x2c, 0x74, 0x14, 0x7e, 0xe4, 0xf7, 0xc5, 0xca, 0x75, - 0x1d, 0x63, 0xb8, 0xfd, 0x1f, 0x1d, 0x6f, 0xf6, 0x8d, 0x72, 0x8d, 0xa1, - 0x18, 0x1d, 0xf8, 0x43, 0x17, 0x6c, 0xc6, 0x4f, 0x2b, 0xf9, 0x6c, 0x89, - 0xe9, 0x5e, 0x7f, 0xe2, 0x79, 0xa3, 0x3f, 0x81, 0x8f, 0xd6, 0xd6, 0xfe, - 0x14, 0x86, 0x7e, 0xe9, 0x28, 0x13, 0xa1, 0x01, 0x42, 0xd8, 0x66, 0x03, - 0x11, 0x9d, 0x9e, 0xfd, 0x2e, 0x91, 0xd1, 0x3a, 0xad, 0x67, 0x4c, 0xd6, - 0x56, 0xc2, 0x58, 0x86, 0xd5, 0x1c, 0x75, 0x60, 0x3c, 0x6e, 0x00, 0xc5, - 0xdc, 0x44, 0x04, 0xa4, 0xb1, 0x6e, 0x2a, 0xc4, 0x38, 0x47, 0xaa, 0x3f, - 0x6a, 0x06, 0x50, 0x1a, 0x57, 0x44, 0x5b, 0x4c, 0x09, 0x07, 0xc4, 0x9c, - 0x59, 0x01, 0x5b, 0x88, 0x3a, 0xa0, 0x61, 0x78, 0x2e, 0x77, 0xca, 0x58, - 0xcb, 0x21, 0x06, 0x86, 0xe5, 0x90, 0xf9, 0x11, 0xf9, 0xdb, 0xe3, 0x21, - 0x94, 0xdb, 0x30, 0x7a, 0x2b, 0x36, 0xa2, 0xb5, 0x19, 0x8f, 0x95, 0x7a, - 0xe7, 0xff, 0x33, 0xef, 0xe0, 0x7d, 0xd9, 0x42, 0x2d, 0xa9, 0xe9, 0x6e, - 0xd3, 0x04, 0x53, 0x31, 0xa0, 0x0c, 0x81, 0x8c, 0xfc, 0x1e, 0x80, 0x25, - 0x2d, 0x23, 0xea, 0x4c, 0x98, 0x44, 0xa1, 0x70, 0xea, 0x37, 0xf3, 0x4e, - 0xd4, 0x11, 0x14, 0x05, 0xc1, 0xd7, 0x94, 0x50, 0x3a, 0x16, 0xcc, 0x81, - 0x4a, 0x17, 0x4c, 0xf3, 0x48, 0x4f, 0x43, 0x2d, 0xee, 0xee, 0x94, 0x73, - 0xd1, 0x7e, 0xfd, 0xff, 0xce, 0xf8, 0x74, 0xb9, 0x3b, 0xe5, 0xf4, 0x70, - 0x36, 0xcc, 0x43, 0x45, 0x6e, 0x0c, 0xaa, 0xd9, 0x55, 0xd6, 0x99, 0xca, - 0x7b, 0xf5, 0xe4, 0x99, 0x89, 0x70, 0x09, 0x21, 0x76, 0x1d, 0x64, 0x42, - 0xc3, 0x87, 0x32, 0x02, 0xf6, 0x2c, 0x2a, 0x5d, 0x35, 0xb9, 0xd8, 0xb4, - 0x77, 0xf7, 0x91, 0x39, 0xe3, 0x6c, 0xb3, 0xe8, 0x7b, 0x04, 0x7e, 0xa6, - 0xcc, 0xa3, 0xa9, 0x29, 0x40, 0xba, 0xc3, 0xf0, 0x69, 0x4a, 0x05, 0xdb, - 0x10, 0x40, 0x9a, 0x39, 0xb3, 0xc8, 0xda, 0x54, 0xd1, 0x7d, 0x6d, 0xd9, - 0x5a, 0xe2, 0x16, 0xa0, 0xf8, 0xaa, 0x7b, 0x89, 0xf5, 0x0f, 0x23, 0x8e, - 0x75, 0xfd, 0x85, 0x5c, 0xf8, 0x64, 0x94, 0x32, 0x3c, 0x43, 0xea, 0xed, - 0xa2, 0xec, 0xa1, 0xaa, 0xf6, 0x78, 0xbb, 0x3c, 0x44, 0xf8, 0x67, 0xb3, - 0xb8, 0x13, 0xd1, 0x82, 0xe9, 0x4c, 0x4c, 0xd1, 0x3a, 0x1c, 0x0f, 0xe9, - 0xf8, 0xeb, 0x90, 0xbb, 0xe8, 0xc8, 0xc7, 0x6c, 0x36, 0x11, 0x59, 0x3d, - 0x52, 0x1b, 0xed, 0x6c, 0xa2, 0xe5, 0x5e, 0xf9, 0x1d, 0x50, 0xfb, 0xf1, - 0xf9, 0xcd, 0x2f, 0x0e, 0xb6, 0x37, 0x6a, 0x65, 0xb4, 0x43, 0x91, 0x3e, - 0xa2, 0xd0, 0x6b, 0x68, 0xa1, 0xc6, 0x25, 0xf6, 0x6d, 0x1b, 0xb4, 0x63, - 0xa1, 0x40, 0x7e, 0x7b, 0xf7, 0xab, 0xdf, 0xfc, 0xa4, 0xa1, 0x2e, 0xe4, - 0xc4, 0x9f, 0xc5, 0x5f, 0x2c, 0xa3, 0xb7, 0xa5, 0x4c, 0x8e, 0x7f, 0xbe, - 0x77, 0x2a, 0xbe, 0x3b, 0xb6, 0x92, 0xd2, 0xb0, 0xe8, 0xf8, 0xcb, 0xa1, - 0x10, 0xf2, 0x8a, 0x14, 0x49, 0x8f, 0xe1, 0xd6, 0xbb, 0x0f, 0x60, 0x07, - 0xb7, 0xbd, 0x74, 0x5a, 0x2b, 0xec, 0x0d, 0xcb, 0xb8, 0x45, 0x91, 0x04, - 0xac, 0xa3, 0x65, 0x90, 0xbe, 0x07, 0x4c, 0x89, 0xfe, 0xf2, 0x66, 0xc5, - 0xff, 0xde, 0xfc, 0xa1, 0x50, 0x90, 0x84, 0xf8, 0x31, 0x02, 0xa0, 0xe0, - 0x70, 0x44, 0xb1, 0x11, 0x3d, 0xfa, 0xb1, 0x6c, 0x64, 0xb1, 0x59, 0xf9, - 0x85, 0xa1, 0x84, 0x99, 0xbc, 0x71, 0xbd, 0xaf, 0xfd, 0x61, 0x8b, 0x4a, - 0x6f, 0x7a, 0x85, 0xe7, 0xf5, 0x30, 0x5d, 0x13, 0x51, 0xe9, 0xa6, 0xde, - 0x92, 0x34, 0xb1, 0x4d, 0x0f, 0x30, 0xe5, 0x6d, 0x63, 0x3f, 0x60, 0x48, - 0xc7, 0x13, 0x20, 0x33, 0x8e, 0x5b, 0x9a, 0xf3, 0x9b, 0x64, 0xae, 0xf3, - 0xd6, 0xb4, 0x9b, 0x44, 0x55, 0x19, 0x8c, 0x11, 0x27, 0x47, 0xa9, 0x72, - 0xa4, 0x09, 0x29, 0x64, 0x90, 0xde, 0xb6, 0x2e, 0x48, 0x7a, 0xc1, 0x48, - 0x05, 0x95, 0xd8, 0x5d, 0xd4, 0xa4, 0x30, 0xcc, 0x5f, 0xeb, 0xd4, 0x3b, - 0x90, 0xf4, 0xb3, 0xe3, 0x81, 0xae, 0x13, 0x38, 0x70, 0x63, 0xb1, 0xce, - 0x97, 0x82, 0x08, 0xf5, 0x2a, 0xb0, 0xe5, 0x4d, 0xa2, 0xa8, 0x81, 0x9d, - 0x81, 0x08, 0xab, 0x80, 0x3e, 0x3a, 0xd0, 0x6d, 0x01, 0x74, 0xb6, 0xab, - 0x58, 0xf8, 0xd7, 0xd9, 0x68, 0xaf, 0xe7, 0x10, 0x8a, 0x44, 0x7a, 0xcf, - 0x45, 0x86, 0x33, 0x8b, 0x01, 0x1f, 0x23, 0x01, 0xff, 0x08, 0x01, 0xe4, - 0x98, 0x5f, 0x5a, 0x2e, 0x05, 0xf0, 0xac, 0x97, 0xa4, 0x6e, 0x39, 0xd1, - 0x4f, 0x66, 0x82, 0x95, 0x4b, 0xe9, 0x4f, 0xab, 0x52, 0xfe, 0x72, 0x7e, - 0x48, 0xb5, 0xf4, 0x7b, 0x6a, 0x46, 0x19, 0xce, 0xcd, 0x77, 0x8a, 0x77, - 0xcb, 0xf2, 0xc5, 0x6d, 0x17, 0x89, 0x14, 0xe9, 0x98, 0x14, 0x3a, 0x3f, - 0xd6, 0x04, 0x85, 0xcc, 0x28, 0xd3, 0x2f, 0x11, 0x61, 0x1a, 0x6f, 0x0c, - 0xd0, 0xf5, 0xc4, 0xd4, 0x69, 0x7b, 0x1a, 0x35, 0xa6, 0x65, 0xf6, 0xab, - 0x00, 0x2d, 0x02, 0xad, 0x65, 0x3a, 0xb3, 0xff, 0x57, 0xd2, 0x2d, 0x78, - 0x9b, 0xab, 0xe3, 0x52, 0x68, 0xf9, 0xb7, 0x72, 0x08, 0xbd, 0x36, 0xc6, - 0x4e, 0x0e, 0x46, 0xe4, 0x64, 0xa4, 0x90, 0x69, 0x77, 0x9e, 0x4e, 0x0f, - 0x7e, 0x56, 0x16, 0x9e, 0x25, 0xb5, 0xbf, 0x0c, 0xe3, 0x43, 0x8b, 0x7b, - 0x0f, 0x81, 0x93, 0xf5, 0xd0, 0x20, 0xf5, 0xf5, 0x78, 0xbb, 0x98, 0x5b, - 0xf4, 0xde, 0xd1, 0xf3, 0x9d, 0xaf, 0x42, 0x46, 0xe5, 0x13, 0xf4, 0x8a, - 0x4b, 0xae, 0x90, 0xe2, 0xdf, 0x25, 0x98, 0xcf, 0x33, 0xaf, 0xd3, 0xea, - 0x36, 0x25, 0xc8, 0x65, 0x3a, 0x76, 0x38, 0x26, 0xeb, 0x26, 0xd3, 0xec, - 0xaf, 0x6e, 0xba, 0x2c, 0x66, 0xca, 0x53, 0x01, 0x85, 0x6a, 0xdd, 0xce, - 0x4c, 0xcb, 0x8c, 0x03, 0xfe, 0xfd, 0x40, 0x9a, 0x25, 0x8a, 0x98, 0xf1, - 0xc0, 0x58, 0xa6, 0xe2, 0xfc, 0x79, 0x70, 0xdb, 0x6e, 0xeb, 0x9f, 0x87, - 0x1f, 0x50, 0xb9, 0x62, 0x49, 0x81, 0xe6, 0x66, 0x82, 0x31, 0xf6, 0x1d, - 0x08, 0x5f, 0x7d, 0xb8, 0x5d, 0x1c, 0xcc, 0x4e, 0x57, 0x2b, 0x33, 0x2c, - 0xe1, 0x5b, 0x9a, 0xbb, 0xdd, 0xca, 0x18, 0x75, 0x6a, 0x52, 0x85, 0xf5, - 0xe7, 0x16, 0xc7, 0xc6, 0xd0, 0x1b, 0xb0, 0x04, 0xb2, 0x34, 0x6b, 0xc5, - 0xba, 0x44, 0x03, 0x5a, 0x6b, 0x38, 0xab, 0xc2, 0x02, 0xa9, 0xe9, 0x40, - 0x23, 0x86, 0x72, 0xd5, 0x84, 0xf4, 0xed, 0xa4, 0xd7, 0x3b, 0x79, 0xda, - 0xcf, 0x5f, 0x38, 0x80, 0xbd, 0x62, 0x6b, 0x1b, 0xe4, 0x4c, 0x45, 0x20, - 0xd2, 0x59, 0x07, 0xc3, 0x9b, 0x00, 0x62, 0xf4, 0x1f, 0xf7, 0x3a, 0x15, - 0xa7, 0x8b, 0x4a, 0x68, 0xea, 0xa9, 0xa7, 0xba, 0x9c, 0xab, 0x90, 0xed, - 0x3c, 0x38, 0x59, 0x6f, 0x49, 0x64, 0x4e, 0x38, 0x58, 0xc8, 0xc9, 0x66, - 0xa8, 0x46, 0xd0, 0xa5, 0xb0, 0x78, 0x0e, 0x2f, 0x46, 0xb2, 0x0a, 0xc3, - 0xf1, 0x96, 0x12, 0xb1, 0x4c, 0xd7, 0x89, 0xd8, 0x32, 0xea, 0xd4, 0xed, - 0xb6, 0xf1, 0xc9, 0xae, 0xdc, 0x20, 0xc5, 0xf6, 0x7b, 0xc1, 0xa7, 0x68, - 0x6f, 0xde, 0x3f, 0xb1, 0xdc, 0xe6, 0x45, 0xb1, 0x4d, 0x75, 0xce, 0x27, - 0xf1, 0x8c, 0x00, 0xc7, 0xa1, 0x23, 0x62, 0xa3, 0xe7, 0x11, 0x51, 0xd1, - 0x9f, 0x17, 0x31, 0x19, 0x52, 0x69, 0x3a, 0x25, 0x8c, 0x62, 0x21, 0x4c, - 0x6b, 0x4d, 0x66, 0x4c, 0xc2, 0x8e, 0x3d, 0x9a, 0x42, 0x23, 0x9d, 0xcd, - 0xee, 0x95, 0x6c, 0x90, 0x17, 0x97, 0x4f, 0xf5, 0x00, 0xe8, 0x5a, 0xc5, - 0xf9, 0x82, 0x16, 0x24, 0x0f, 0xd2, 0x10, 0x5b, 0x92, 0xe1, 0xdb, 0xac, - 0xed, 0x2f, 0x8b, 0x7d, 0xe9, 0x00, 0x22, 0xab, 0xfd, 0xee, 0xe4, 0xf4, - 0x31, 0x3c, 0xf2, 0x02, 0xad, 0xd9, 0x1c, 0x05, 0xb6, 0x94, 0x6a, 0x1f, - 0x45, 0x6a, 0xc3, 0x2f, 0xba, 0xf3, 0x39, 0x3b, 0x4f, 0xb2, 0x3b, 0x6f, - 0x7f, 0x3a, 0x62, 0x2d, 0x49, 0xf7, 0xeb, 0xc7, 0xc2, 0xc1, 0x2f, 0x89, - 0x4b, 0x26, 0xf0, 0x82, 0x31, 0xa8, 0x83, 0x7c, 0x1b, 0x06, 0xc1, 0x5f, - 0x81, 0xb4, 0x5b, 0x16, 0xdf, 0x81, 0x68, 0x0e, 0x9f, 0x84, 0x47, 0xac, - 0xdc, 0x13, 0x2d, 0x50, 0xa3, 0x02, 0xf9, 0xf2, 0x11, 0x94, 0xd6, 0x55, - 0x75, 0x15, 0x7d, 0x4b, 0xc1, 0xee, 0x83, 0x0e, 0x2d, 0x4c, 0x6d, 0xf6, - 0xb5, 0xa1, 0x52, 0xaf, 0x68, 0xcd, 0xad, 0x05, 0xf0, 0xa6, 0x65, 0xff, - 0x59, 0x14, 0x84, 0x1d, 0xe7, 0xa8, 0xda, 0xfd, 0x62, 0x8a, 0x0c, 0x8e, - 0x50, 0x0b, 0x38, 0xc9, 0xea, 0x4b, 0x28, 0xa2, 0x3e, 0x90, 0x83, 0xff, - 0xf9, 0x69, 0x00, 0xb6, 0xee, 0xa9, 0xc8, 0xa3, 0x68, 0x1d, 0xcd, 0x79, - 0x23, 0x40, 0x18, 0xe8, 0x15, 0x82, 0x08, 0xb3, 0xf1, 0xc7, 0x84, 0x89, - 0xc9, 0x30, 0x9e, 0xbd, 0xe7, 0x9b, 0x2c, 0xde, 0x45, 0xad, 0xaa, 0xd3, - 0x72, 0xc1, 0x99, 0x3e, 0x48, 0xa6, 0x3a, 0x32, 0x5f, 0x13, 0x51, 0xfc, - 0x4a, 0x8b, 0x7e, 0x0e, 0xbd, 0xe3, 0xc4, 0x37, 0x1b, 0xc1, 0xd7, 0xbe, - 0x92, 0xde, 0x8c, 0x23, 0xcf, 0x11, 0xdd, 0xe0, 0x55, 0xda, 0x2a, 0x76, - 0xac, 0x10, 0x47, 0x4e, 0xe7, 0xe5, 0x52, 0x38, 0xb0, 0x24, 0x8f, 0x67, - 0x46, 0x72, 0x1c, 0x0e, 0xc6, 0x59, 0x6d, 0xff, 0x01, 0xf3, 0x59, 0x7f, - 0x1e, 0x4e, 0x59, 0x7c, 0x10, 0x25, 0x70, 0xf4, 0xbd, 0x38, 0x53, 0x4c, - 0xac, 0x0d, 0x86, 0x63, 0x53, 0xad, 0x25, 0x17, 0xab, 0x22, 0x10, 0x83, - 0x74, 0x9c, 0x9b, 0x4e, 0x70, 0xdb, 0x6b, 0x73, 0xaa, 0x5a, 0xa7, 0x55, - 0x10, 0x6e, 0xc4, 0xc9, 0x48, 0xbc, 0xf6, 0x8a, 0x64, 0xb7, 0x8e, 0x6d, - 0x89, 0x28, 0x1f, 0x72, 0x1e, 0x06, 0x60, 0x77, 0xf4, 0xdc, 0x23, 0x6c, - 0xb5, 0xf8, 0x15, 0xb4, 0xb5, 0x88, 0xdd, 0xed, 0x53, 0x28, 0x62, 0x80, - 0x4d, 0x8b, 0x4b, 0xd2, 0xbe, 0x1b, 0x63, 0x1e, 0xcd, 0x26, 0x10, 0x4e, - 0x74, 0x35, 0xd0, 0xd0, 0x1d, 0x71, 0xa7, 0x77, 0x47, 0xf5, 0x90, 0x55, - 0xa9, 0x37, 0x05, 0xe3, 0x44, 0xd4, 0x61, 0xe4, 0x2e, 0xd0, 0x52, 0x58, - 0x37, 0x98, 0x54, 0x58, 0xad, 0xc5, 0x88, 0xaf, 0x5b, 0xe1, 0xcf, 0xd0, - 0xda, 0x7b, 0x7a, 0x51, 0x67, 0xd1, 0xdf, 0xa6, 0xfe, 0xa2, 0xbd, 0xb1, - 0x07, 0x40, 0x27, 0x1f, 0x32, 0x91, 0x6a, 0x39, 0xe5, 0x9f, 0x7c, 0x32, - 0x9d, 0x89, 0xaf, 0x11, 0x72, 0x50, 0x29, 0x15, 0xe2, 0xd1, 0xf4, 0xf8, - 0x7d, 0x8b, 0x20, 0xd5, 0xb9, 0x9a, 0x60, 0x31, 0xf1, 0x17, 0x88, 0x33, - 0x1d, 0x59, 0xa5, 0xa7, 0xae, 0xf8, 0x56, 0xf5, 0x05, 0xb6, 0x47, 0x81, - 0x09, 0xb1, 0xe5, 0x36, 0x34, 0x7b, 0xe1, 0x3c, 0x77, 0xd8, 0x23, 0x1c, - 0x90, 0x6d, 0xab, 0x95, 0x0a, 0xc6, 0x27, 0xf0, 0x37, 0xd0, 0x68, 0xc1, - 0xec, 0x66, 0x03, 0x78, 0x7c, 0x92, 0x75, 0x55, 0x5a, 0xbf, 0x40, 0xa1, - 0x30, 0xd5, 0x9f, 0x23, 0xa2, 0x29, 0x52, 0x5c, 0xe6, 0x9b, 0xc5, 0xff, - 0x44, 0xea, 0x1b, 0x92, 0xad, 0xd5, 0x96, 0xd8, 0xc0, 0xe2, 0x2f, 0x5f, - 0x8c, 0x19, 0x21, 0x1a, 0x1b, 0x81, 0x46, 0xa7, 0x4f, 0x5b, 0x41, 0xf0, - 0x22, 0xf4, 0x69, 0xf3, 0xfd, 0xcc, 0xee, 0xca, 0x66, 0x0b, 0xb3, 0xa8, - 0x61, 0xe9, 0x37, 0xdc, 0x61, 0x14, 0x3e, 0xaf, 0xca, 0x21, 0x47, 0x91, - 0xd6, 0x3a, 0xe3, 0x18, 0x61, 0x1f, 0x49, 0xac, 0x8e, 0x9e, 0xa5, 0xec, - 0x7f, 0xf4, 0x05, 0x27, 0x32, 0x2d, 0xdf, 0x8e, 0x9f, 0x9a, 0xda, 0x5b, - 0x64, 0x83, 0xaf, 0x17, 0xa9, 0xec, 0x0e, 0x1a, 0x49, 0x14, 0x9d, 0xb6, - 0xb0, 0xa0, 0x6e, 0x79, 0x1f, 0x72, 0x56, 0x8e, 0xac, 0xfc, 0xe6, 0xd3, - 0x41, 0x04, 0xe1, 0x92, 0x00, 0x42, 0x0c, 0x4a, 0x6e, 0x4e, 0x90, 0x19, - 0xd3, 0x73, 0x93, 0x5b, 0x77, 0xd1, 0xd6, 0x0b, 0x89, 0x47, 0xda, 0xee, - 0xdb, 0x3d, 0x06, 0x99, 0x1c, 0xa0, 0xc5, 0x0c, 0x0f, 0x27, 0xde, 0xd9, - 0x1b, 0xad, 0x9a, 0x1f, 0xf9, 0xec, 0xbd, 0xce, 0x4c, 0x9d, 0xf2, 0x82, - 0xe3, 0x19, 0xe4, 0x44, 0xb4, 0x38, 0xc0, 0x35, 0x2b, 0xa9, 0xad, 0x06, - 0xa2, 0x7d, 0xb6, 0x6c, 0xff, 0x15, 0x74, 0x3f, 0x43, 0x90, 0x44, 0x4d, - 0x14, 0x62, 0x56, 0x99, 0xd9, 0xa3, 0x57, 0xbf, 0xa0, 0x82, 0x87, 0x40, - 0x50, 0x3a, 0xcd, 0x39, 0x9e, 0x5a, 0x01, 0xc1, 0x5c, 0xa5, 0x66, 0x3c, - 0x18, 0x6a, 0xe6, 0xc8, 0x91, 0x2f, 0xe7, 0xfe, 0x69, 0xfe, 0x24, 0x25, - 0xf9, 0x86, 0x1c, 0x4a, 0x2d, 0x2a, 0x29, 0xfe, 0x88, 0x53, 0x75, 0xa3, - 0x10, 0x1c, 0xb4, 0xaf, 0x27, 0xd7, 0x08, 0x64, 0x96, 0x73, 0x41, 0x94, - 0x29, 0x52, 0x9a, 0x25, 0x20, 0xa2, 0x3f, 0x39, 0x9a, 0xcc, 0x95, 0x5a, - 0x12, 0xf9, 0xad, 0xe1, 0xaf, 0x8f, 0xf3, 0x7d, 0x9e, 0x02, 0x3a, 0x81, - 0x48, 0xb1, 0x56, 0x0d, 0x42, 0x46, 0xc9, 0xca, 0x05, 0xf0, 0x8d, 0x5b, - 0x9f, 0x32, 0x9b, 0x66, 0x96, 0x37, 0xb5, 0xd4, 0x35, 0xc8, 0xbe, 0xab, - 0x50, 0xfc, 0xe5, 0x04, 0xc8, 0x22, 0x41, 0x0c, 0xb7, 0x7f, 0x96, 0xe2, - 0x38, 0xb3, 0xa1, 0x05, 0xe7, 0x2c, 0x94, 0xbd, 0xdf, 0x49, 0x94, 0x88, - 0x26, 0x03, 0x25, 0xc2, 0xb4, 0xb9, 0x71, 0x4b, 0x16, 0x58, 0x8f, 0x26, - 0x8c, 0xce, 0x8e, 0xd9, 0xa2, 0x74, 0x93, 0xa7, 0x2b, 0x09, 0xb6, 0x26, - 0xe8, 0x2c, 0x2a, 0x3a, 0x97, 0x24, 0x9d, 0x0b, 0xc3, 0xb2, 0x52, 0xda, - 0x29, 0x57, 0x9e, 0xd4, 0x68, 0x16, 0x0c, 0x47, 0x65, 0x84, 0xbe, 0x00, - 0x33, 0x03, 0xac, 0x07, 0x44, 0x63, 0x15, 0xe3, 0x07, 0x1b, 0x2f, 0x94, - 0xdb, 0x41, 0xe5, 0xaa, 0x75, 0xaf, 0xa3, 0x93, 0xf2, 0x19, 0xc9, 0xf4, - 0x74, 0x86, 0xd5, 0xb5, 0x3d, 0x8a, 0x61, 0x95, 0x3f, 0x3b, 0x2b, 0x79, - 0x3d, 0x19, 0x91, 0xf2, 0xe1, 0x9a, 0x2c, 0x9e, 0xdb, 0xef, 0xd8, 0xe2, - 0x0b, 0xc6, 0xc9, 0x47, 0x60, 0x26, 0x4c, 0xe1, 0xcf, 0x83, 0x9f, 0xc7, - 0x6c, 0xa4, 0x58, 0x36, 0x24, 0xcf, 0xf3, 0x55, 0x7d, 0x65, 0x2e, 0xfb, - 0x14, 0x90, 0x02, 0xde, 0x74, 0xea, 0x1c, 0xe6, 0xad, 0x7b, 0x07, 0xb5, - 0xe7, 0x3f, 0xda, 0xf8, 0x11, 0x85, 0xe2, 0xc1, 0x14, 0x84, 0x60, 0x19, - 0x3f, 0x0d, 0xdf, 0x6a, 0x77, 0x91, 0x7f, 0x28, 0xd8, 0x63, 0x3c, 0x48, - 0xff, 0x16, 0x8a, 0xe6, 0xfd, 0x56, 0xc1, 0x67, 0x97, 0xe0, 0x2b, 0x9e, - 0x52, 0x41, 0x04, 0x9a, 0xe5, 0x1e, 0xf0, 0x21, 0xee, 0x4d, 0xe3, 0xd9, - 0xb2, 0x95, 0x7c, 0x35, 0x0b, 0xab, 0x03, 0x2d, 0x2f, 0xa1, 0xb9, 0x36, - 0x05, 0x83, 0xec, 0xf7, 0x85, 0x40, 0xd9, 0x85, 0x88, 0xed, 0x72, 0xc7, - 0x57, 0x39, 0x79, 0xde, 0x46, 0x5a, 0x98, 0x44, 0xd2, 0xd2, 0xa2, 0x41, - 0x71, 0x1a, 0xe5, 0xe7, 0x88, 0xdd, 0x56, 0xa2, 0x88, 0xfc, 0xa8, 0xb7, - 0x6d, 0x58, 0xa2, 0x07, 0x46, 0xca, 0xb9, 0xc4, 0xca, 0x06, 0xe2, 0x2b, - 0xbc, 0x79, 0xaf, 0xde, 0xa1, 0x6d, 0x73, 0x12, 0xc8, 0xbe, 0xd9, 0x69, - 0x54, 0x96, 0x07, 0xde, 0xc9, 0x78, 0x8b, 0xd4, 0x87, 0x0e, 0x75, 0xaf, - 0x26, 0xcf, 0x39, 0x45, 0xf7, 0x25, 0xe7, 0xd8, 0x52, 0xf6, 0x6f, 0x31, - 0xd8, 0xf3, 0xf2, 0xf1, 0xec, 0x10, 0xc6, 0xfe, 0xd3, 0x73, 0x7a, 0xdf, - 0xb3, 0xd5, 0xa4, 0x70, 0x15, 0x79, 0x32, 0x87, 0xa6, 0xf5, 0xfa, 0xd7, - 0x88, 0xdb, 0xcf, 0x8b, 0x2d, 0x4c, 0xe2, 0xc8, 0x37, 0xda, 0x6a, 0x3b, - 0x43, 0x4b, 0xe7, 0x57, 0x95, 0x6d, 0x12, 0x12, 0xb1, 0x9c, 0xa4, 0x71, - 0x2d, 0x21, 0x58, 0x8d, 0xc9, 0xfe, 0x7b, 0x2d, 0xc8, 0x6e, 0xf7, 0xcc, - 0x0d, 0x0b, 0x0c, 0xb0, 0x1c, 0x48, 0x56, 0x02, 0xf4, 0x36, 0x1a, 0x8c, - 0x3b, 0xc3, 0xbb, 0x1b, 0x08, 0x18, 0x8c, 0x32, 0x55, 0x18, 0x8b, 0x6b, - 0x9a, 0xcb, 0xa0, 0x34, 0x4f, 0x47, 0xa0, 0x4e, 0x8a, 0x2a, 0x14, 0x6f, - 0x4c, 0x60, 0xd7, 0xb9, 0xb7, 0x22, 0x05, 0xb8, 0xac, 0xbf, 0x1f, 0xca, - 0x4d, 0x77, 0x9e, 0x3d, 0x98, 0x7e, 0xe1, 0x87, 0x30, 0x96, 0x7a, 0x8b, - 0xe3, 0x32, 0x6d, 0xe1, 0x47, 0x4f, 0xf0, 0xa7, 0x75, 0x8a, 0xd9, 0xdc, - 0xc0, 0x2b, 0x81, 0x08, 0xda, 0x56, 0xc7, 0xdf, 0x2a, 0x1c, 0x2b, 0x08, - 0x50, 0xec, 0x62, 0x56, 0xd2, 0x05, 0xa5, 0xe2, 0xa6, 0x04, 0xd8, 0x5c, - 0x83, 0x5b, 0x5e, 0x8c, 0x0d, 0xf4, 0xb7, 0x94, 0x8a, 0xea, 0x5f, 0x78, - 0x2a, 0xd0, 0xbf, 0xf1, 0xa2, 0x1d, 0x19, 0x1c, 0xa4, 0x36, 0xa2, 0x82, - 0x4c, 0xf3, 0xd8, 0xab, 0x02, 0xaa, 0xce, 0x8e, 0x5d, 0x79, 0x80, 0xd8, - 0x54, 0xb9, 0xd8, 0x38, 0xa4, 0x6f, 0x25, 0xea, 0xe5, 0xd6, 0xa6, 0x8f, - 0xcb, 0x55, 0x4a, 0xad, 0xa9, 0x22, 0xef, 0x8a, 0x83, 0xe2, 0x85, 0x17, - 0x92, 0x47, 0x9a, 0x7b, 0x65, 0xb5, 0x9f, 0x50, 0xce, 0x9c, 0x11, 0x1d, - 0x86, 0x5e, 0x51, 0x6a, 0x3c, 0x10, 0xf6, 0x2b, 0x71, 0xab, 0x73, 0xa5, - 0x04, 0x2c, 0xab, 0x9a, 0x74, 0xa1, 0x9d, 0xcd, 0xb8, 0x0d, 0x37, 0x9d, - 0x16, 0x94, 0xd9, 0xd3, 0x61, 0xe8, 0x63, 0xc7, 0x6a, 0xa3, 0xf2, 0xb8, - 0x80, 0x64, 0x8d, 0x05, 0xbc, 0x7b, 0xca, 0xb7, 0x42, 0xcb, 0x19, 0x34, - 0xb7, 0x44, 0x5d, 0x15, 0x9e, 0x1b, 0x27, 0x04, 0x94, 0x2f, 0x98, 0x9e, - 0x16, 0xc0, 0xc0, 0x16, 0xe6, 0x94, 0xcf, 0x71, 0x64, 0xb8, 0xcf, 0x69, - 0xde, 0x91, 0x2b, 0xe2, 0x3b, 0x27, 0xbf, 0x29, 0x9e, 0xf8, 0x6e, 0x20, - 0x2b, 0x0c, 0x6b, 0xff, 0x1b, 0x1f, 0xb0, 0xd3, 0xfd, 0x41, 0x4d, 0x49, - 0x92, 0xa9, 0x2c, 0x82, 0x48, 0xf7, 0x9d, 0x57, 0x23, 0x20, 0x18, 0xf4, - 0x18, 0x51, 0xe4, 0xe1, 0x26, 0xfb, 0xc4, 0x4e, 0x77, 0x8a, 0xb1, 0x3d, - 0xd8, 0x8d, 0xad, 0x96, 0xa8, 0x65, 0xd4, 0x7d, 0x26, 0xaf, 0xb3, 0x29, - 0x73, 0xf0, 0x5f, 0xda, 0xc2, 0xc2, 0x6b, 0x0c, 0x03, 0x17, 0x7e, 0x5f, - 0x33, 0xbd, 0x49, 0x2b, 0x77, 0xd1, 0xbb, 0xad, 0xa7, 0x8b, 0xb3, 0xd2, - 0x8c, 0xcc, 0x74, 0x5f, 0x3f, 0x91, 0x13, 0x96, 0x90, 0x6d, 0x76, 0x8c, - 0xcd, 0xc0, 0x08, 0x95, 0x35, 0x39, 0xa0, 0x22, 0x42, 0xb5, 0xdd, 0xe3, - 0x85, 0x01, 0x70, 0x2e, 0xb0, 0xb3, 0xaf, 0x65, 0x0a, 0x05, 0xb6, 0x95, - 0x02, 0x70, 0xfb, 0xe4, 0xf7, 0x27, 0x92, 0xcd, 0x3c, 0x39, 0xd0, 0x70, - 0x1d, 0x9d, 0x62, 0x36, 0x26, 0x02, 0x21, 0xab, 0x67, 0x81, 0x5f, 0x10, - 0x89, 0x89, 0x50, 0x5f, 0x37, 0x15, 0x0e, 0xba, 0x47, 0x65, 0xba, 0x34, - 0x99, 0x73, 0xfe, 0xce, 0x56, 0x96, 0x39, 0xf2, 0x39, 0xc1, 0x07, 0x07, - 0x28, 0xf2, 0x7e, 0x25, 0x55, 0x83, 0xc1, 0x62, 0x47, 0x85, 0xe0, 0x89, - 0x33, 0x88, 0xf7, 0x90, 0xdc, 0x4e, 0x38, 0x9c, 0x30, 0x69, 0xc3, 0x31, - 0x1a, 0x39, 0xa7, 0xa9, 0x09, 0x84, 0x13, 0xb7, 0x80, 0x4d, 0xcc, 0x7b, - 0xce, 0xbd, 0xd2, 0xb8, 0xd7, 0xde, 0xd3, 0x7c, 0x35, 0x67, 0xd5, 0x4d, - 0x51, 0xf5, 0xb4, 0x3a, 0x4d, 0x9d, 0x40, 0x03, 0x04, 0x2a, 0x05, 0xe0, - 0x1a, 0x40, 0xc1, 0x17, 0xbe, 0xcc, 0x31, 0xa5, 0xdd, 0xca, 0x27, 0x5d, - 0xc8, 0xb6, 0xb5, 0xb5, 0xf6, 0x30, 0xad, 0xb4, 0xca, 0xcf, 0x1e, 0x20, - 0xa2, 0x68, 0xc6, 0x5f, 0x52, 0x81, 0xc0, 0x7c, 0x63, 0x8a, 0x50, 0x8d, - 0x4b, 0xfc, 0x4a, 0x60, 0xb5, 0x3f, 0xac, 0x39, 0xa3, 0x36, 0xf7, 0xbc, - 0x95, 0xa9, 0x40, 0x24, 0xae, 0x1c, 0xb3, 0x17, 0xee, 0x63, 0x3f, 0x43, - 0x0c, 0x8f, 0xf6, 0xbb, 0x5a, 0x9f, 0xf3, 0x2f, 0xe3, 0x17, 0x59, 0x1d, - 0xc0, 0x2c, 0xbc, 0x5c, 0x19, 0x04, 0x5d, 0x0d, 0x39, 0xd3, 0x60, 0x5f, - 0x05, 0xc9, 0x2b, 0x8e, 0x68, 0x27, 0x50, 0xcb, 0x3e, 0xde, 0xb0, 0x3e, - 0xa9, 0x0d, 0xb8, 0xba, 0x89, 0x8f, 0xe6, 0xb8, 0xdc, 0x64, 0xd3, 0x77, - 0x00, 0x30, 0x57, 0xfd, 0x7a, 0xc1, 0xcb, 0xfe, 0x4e, 0xdb, 0x07, 0xb1, - 0xb5, 0xf5, 0xf9, 0xaf, 0xe6, 0x05, 0xe8, 0xc5, 0xc7, 0xcf, 0xfb, 0x08, - 0xc2, 0x67, 0x39, 0xfc, 0xb6, 0x58, 0x48, 0x34, 0x20, 0xf1, 0xcb, 0xa8, - 0x21, 0x0c, 0x3f, 0xa7, 0x6c, 0xaa, 0x9c, 0xcc, 0x8b, 0xd3, 0x38, 0x79, - 0x1c, 0x0d, 0xc3, 0x08, 0x57, 0x3f, 0x1b, 0xf3, 0xb7, 0x7e, 0xd7, 0x3e, - 0x47, 0x0a, 0x10, 0x31, 0x6a, 0x05, 0xa2, 0xc1, 0x02, 0x6b, 0xab, 0x0d, - 0xdc, 0x9c, 0x8e, 0x25, 0x79, 0xcf, 0xaa, 0x07, 0x7e, 0x1f, 0xf0, 0xbd, - 0x88, 0x05, 0x04, 0xe0, 0x88, 0xe3, 0xe7, 0x64, 0xd9, 0x25, 0xf4, 0x9d, - 0xf2, 0x01, 0x98, 0x42, 0x5d, 0xc0, 0x7f, 0x56, 0x88, 0x99, 0x80, 0x77, - 0xa0, 0xe7, 0x3c, 0x86, 0x04, 0x24, 0xef, 0x39, 0xcc, 0xc9, 0xd7, 0xfc, - 0x4a, 0x26, 0xab, 0xd7, 0x34, 0x1a, 0xb9, 0xf0, 0x43, 0x37, 0x89, 0x9e, - 0x63, 0xcc, 0xd5, 0x13, 0xe2, 0x57, 0x8b, 0x48, 0xf8, 0x84, 0xca, 0xcf, - 0xcb, 0xe6, 0xf8, 0x09, 0x75, 0x61, 0x3d, 0x66, 0x35, 0x92, 0xd3, 0xca, - 0x6f, 0xc1, 0xc1, 0xf5, 0xa7, 0x33, 0x91, 0xc0, 0xee, 0x4b, 0x62, 0x62, - 0x4e, 0xc3, 0x14, 0x0e, 0x4a, 0x15, 0x6c, 0xec, 0x0b, 0x06, 0x8c, 0x3f, - 0x25, 0x71, 0xab, 0x39, 0x7d, 0xa1, 0xe6, 0x75, 0x94, 0x9b, 0x4c, 0xfb, - 0x84, 0x61, 0x02, 0x72, 0x02, 0x1d, 0xa3, 0x88, 0xd7, 0xb0, 0x35, 0x15, - 0x7c, 0x02, 0xa2, 0x2a, 0x65, 0xe4, 0x86, 0x80, 0x03, 0x02, 0x99, 0x03, - 0x12, 0x90, 0xd0, 0x3c, 0x54, 0x27, 0x49, 0x5b, 0xa8, 0x1d, 0xca, 0x7f, - 0x59, 0x67, 0x76, 0x81, 0xbc, 0xb6, 0x8e, 0xce, 0x87, 0x29, 0xc3, 0x8c, - 0x94, 0x8b, 0x4d, 0x32, 0xa5, 0x2a, 0xea, 0x95, 0x4a, 0x42, 0xe7, 0x1f, - 0x78, 0x81, 0xdd, 0xa4, 0xa7, 0xf1, 0x16, 0x4f, 0x56, 0x70, 0xd9, 0x5d, - 0x19, 0xcf, 0xfd, 0xae, 0x99, 0x27, 0x0f, 0xb7, 0x68, 0x3b, 0x31, 0x97, - 0x45, 0x2b, 0xed, 0xce, 0x7d, 0x83, 0x23, 0x00, 0xb0, 0x03, 0x6a, 0x5a, - 0xe3, 0xfb, 0xb0, 0x29, 0x37, 0xbc, 0x37, 0xa5, 0x83, 0xf1, 0xb2, 0x85, - 0xf9, 0xbf, 0x14, 0x37, 0x00, 0x90, 0x82, 0x5b, 0xea, 0x30, 0x74, 0x52, - 0x31, 0x4d, 0xf3, 0xa2, 0xaf, 0xe4, 0xaf, 0xc6, 0x8f, 0x6a, 0x7f, 0x74, - 0xd1, 0x3a, 0x96, 0x4c, 0xb2, 0xc7, 0x90, 0x8b, 0xd1, 0x1b, 0x25, 0x08, - 0x61, 0x6f, 0x70, 0xf6, 0xa6, 0xfd, 0xd0, 0x11, 0xc1, 0x95, 0x52, 0xa5, - 0xb5, 0x42, 0x9a, 0xa1, 0x31, 0x7d, 0x92, 0xd2, 0xc0, 0x00, 0x4f, 0x34, - 0x79, 0xf3, 0x83, 0xb7, 0xa9, 0x0e, 0xea, 0x58, 0xc0, 0x40, 0xa5, 0x88, - 0x77, 0x9f, 0xdf, 0xd9, 0x99, 0x2e, 0xed, 0xc5, 0xec, 0xb9, 0xab, 0x8c, - 0x54, 0x50, 0xc1, 0x23, 0x7d, 0xe6, 0xc0, 0xd0, 0xfa, 0x65, 0xf2, 0x3b, - 0xed, 0xd6, 0x65, 0x8f, 0xa6, 0xfd, 0x61, 0x61, 0xbe, 0xcc, 0xb1, 0x53, - 0xec, 0x24, 0xb5, 0xa4, 0x78, 0x55, 0xb5, 0x70, 0x36, 0x00, 0xf1, 0x09, - 0x34, 0x35, 0x56, 0x54, 0x5c, 0xe1, 0xb0, 0xb8, 0x5a, 0x42, 0x02, 0x62, - 0xf3, 0xc5, 0x27, 0x76, 0xd1, 0xaf, 0x17, 0xe2, 0xc2, 0x05, 0x8c, 0x81, - 0xd6, 0xe1, 0x35, 0x3e, 0x37, 0xe9, 0x8b, 0xd7, 0xf6, 0xb7, 0x75, 0x5c, - 0xda, 0x28, 0x0b, 0x07, 0x0c, 0x99, 0x80, 0x6d, 0x84, 0x3f, 0x02, 0xcd, - 0x58, 0x58, 0xc3, 0xee, 0x18, 0xee, 0x7c, 0x83, 0xfa, 0xbb, 0x19, 0x2d, - 0x13, 0x20, 0x33, 0x33, 0x4a, 0x47, 0x3d, 0x8e, 0x89, 0x67, 0xb9, 0xe5, - 0x0a, 0x2c, 0x58, 0x4c, 0xbc, 0x3a, 0x27, 0x20, 0xa6, 0x1c, 0xac, 0xe8, - 0x0f, 0x9c, 0xb5, 0x02, 0x5c, 0x5f, 0x86, 0xbb, 0xbf, 0x3c, 0xb1, 0xa4, - 0x30, 0x26, 0x20, 0xd5, 0x36, 0xc1, 0xd3, 0x55, 0x3d, 0xaf, 0x77, 0x06, - 0x6d, 0x02, 0x1b, 0xeb, 0x2a, 0xb7, 0xd8, 0x6a, 0x80, 0x09, 0x84, 0xb4, - 0xc3, 0x8f, 0x7c, 0x33, 0xbc, 0x94, 0x02, 0x68, 0xc0, 0xe0, 0xd3, 0x33, - 0xdf, 0x7f, 0x9a, 0xd0, 0xf0, 0x1e, 0x3b, 0xb5, 0xd8, 0xaa, 0xf1, 0x0f, - 0xa0, 0x5c, 0x54, 0x19, 0xcc, 0x0f, 0x9b, 0x65, 0xe9, 0x60, 0x5e, 0xa8, - 0xb2, 0xb4, 0xfc, 0x57, 0x10, 0xce, 0x80, 0xbd, 0xff, 0x7a, 0x0d, 0x56, - 0x41, 0x37, 0x52, 0xbb, 0x30, 0xf7, 0x16, 0xd9, 0x0a, 0xb5, 0x7a, 0x47, - 0xea, 0x48, 0x51, 0xdd, 0x73, 0x92, 0x6d, 0x50, 0xd7, 0xc1, 0xe0, 0x62, - 0x8f, 0x27, 0xaf, 0x79, 0x9c, 0xf4, 0x37, 0x1b, 0x06, 0x9a, 0x44, 0x46, - 0x52, 0xca, 0x84, 0x04, 0xda, 0x3d, 0x5b, 0x31, 0xc2, 0x8e, 0xc7, 0x30, - 0x63, 0x24, 0x0a, 0x97, 0x8c, 0x11, 0x1d, 0x6f, 0xef, 0xb2, 0x59, 0x1b, - 0x3f, 0x21, 0x50, 0x29, 0x2f, 0x38, 0xb5, 0x04, 0x23, 0xe4, 0xb1, 0x33, - 0xe5, 0x70, 0xb6, 0x30, 0x37, 0x9f, 0x2d, 0x4a, 0x54, 0xb0, 0xf2, 0xb0, - 0x0e, 0x81, 0x3f, 0xf8, 0xfb, 0x26, 0x96, 0xd6, 0x25, 0x7c, 0x12, 0xe1, - 0xb5, 0xe8, 0x71, 0x2b, 0xa0, 0xd2, 0x00, 0x36, 0xe6, 0x20, 0xf9, 0x82, - 0xae, 0xc3, 0xc8, 0xcb, 0xd7, 0x8d, 0x70, 0x09, 0xb6, 0xf1, 0xc5, 0x4e, - 0xe7, 0xf0, 0xb8, 0x24, 0x58, 0xf2, 0x1b, 0x93, 0x37, 0xed, 0xb2, 0xb9, - 0xef, 0x9e, 0x88, 0x02, 0xe0, 0x75, 0x67, 0x1c, 0x68, 0xe8, 0x2e, 0xdb, - 0x71, 0x1e, 0x12, 0x67, 0x98, 0xf7, 0x42, 0x6a, 0xdb, 0xe5, 0xd8, 0x50, - 0xff, 0x2c, 0x4e, 0x94, 0x06, 0x82, 0xa9, 0x92, 0x59, 0x48, 0x94, 0x1f, - 0xf6, 0x0f, 0x3a, 0x4e, 0xe1, 0x0e, 0x31, 0x9d, 0x6d, 0xb8, 0x0a, 0xf7, - 0x3f, 0xe0, 0x18, 0xac, 0xfe, 0xcb, 0x1e, 0x01, 0x3a, 0x37, 0xa9, 0x05, - 0x98, 0xc7, 0xaf, 0x2d, 0x84, 0x32, 0x05, 0x50, 0xe2, 0xf7, 0x31, 0x61, - 0x3a, 0xc1, 0x4e, 0xb3, 0xb2, 0x25, 0x9e, 0x6c, 0x82, 0xfd, 0xd7, 0xb4, - 0x58, 0xde, 0x38, 0xb3, 0xb1, 0x1a, 0xae, 0xfe, 0xed, 0xaf, 0x05, 0x0e, - 0xe3, 0xd6, 0xdf, 0xa4, 0xbf, 0xaa, 0x57, 0x9b, 0xca, 0xa1, 0x6f, 0x35, - 0xf7, 0x89, 0x4d, 0x34, 0x46, 0xb6, 0xd6, 0xe2, 0x9f, 0xb3, 0x81, 0x12, - 0x68, 0x36, 0xac, 0xa6, 0x3c, 0x55, 0x0c, 0x23, 0x4d, 0x1e, 0xd5, 0x68, - 0x43, 0xae, 0x4f, 0x2e, 0x69, 0x52, 0x61, 0x31, 0x36, 0x08, 0x7a, 0xd8, - 0x54, 0x52, 0xfe, 0xa7, 0xbd, 0xc2, 0xde, 0x27, 0xf6, 0x64, 0xe1, 0x5c, - 0xf9, 0x54, 0x08, 0x6d, 0xae, 0xdc, 0xee, 0x9c, 0x7f, 0x7d, 0xc8, 0x98, - 0x5e, 0x17, 0x89, 0xaa, 0x26, 0xc7, 0x6e, 0xbd, 0xf8, 0xb5, 0xe6, 0x36, - 0xdd, 0x1a, 0xb5, 0x39, 0x38, 0x70, 0xd3, 0x18, 0xa6, 0x46, 0x27, 0x7a, - 0x22, 0xe4, 0xe5, 0x24, 0x49, 0x5b, 0x23, 0xee, 0x9f, 0xd5, 0xbe, 0x61, - 0x7a, 0x3b, 0x7d, 0x38, 0x96, 0xed, 0x0a, 0xd5, 0xb7, 0x0d, 0x8a, 0xf8, - 0xc9, 0x75, 0x34, 0x7c, 0x69, 0x35, 0xe1, 0x5a, 0x32, 0xdc, 0x64, 0xfd, - 0x6d, 0x27, 0x0e, 0xc9, 0x29, 0x8c, 0xdd, 0xc9, 0xe9, 0x5b, 0xe2, 0x3c, - 0xa3, 0x2d, 0xc3, 0x73, 0xb1, 0x00, 0x4c, 0xbf, 0x7a, 0x52, 0xed, 0x33, - 0xfe, 0x91, 0xc1, 0x8b, 0xc5, 0x74, 0x2f, 0xa4, 0x20, 0x99, 0x99, 0x0a, - 0xeb, 0x6f, 0xd5, 0xdb, 0x76, 0x7a, 0x55, 0xa4, 0xef, 0xbc, 0x97, 0x26, - 0x3a, 0x7d, 0x39, 0xa0, 0x43, 0x33, 0x4f, 0x7d, 0x0b, 0xd8, 0x4b, 0xaa, - 0x7e, 0x65, 0x6d, 0x18, 0x9a, 0x0b, 0xf4, 0x02, 0x90, 0x71, 0x6a, 0xeb, - 0x58, 0xb1, 0x2c, 0xac, 0x85, 0x20, 0x82, 0x59, 0xfd, 0xf5, 0x18, 0x02, - 0xfd, 0x1f, 0xbd, 0x92, 0x77, 0x1b, 0x49, 0x56, 0xea, 0x2f, 0xa0, 0x01, - 0xdf, 0x80, 0xd2, 0x47, 0x40, 0xb7, 0xe0, 0x77, 0x7a, 0x50, 0x9d, 0x97, - 0x77, 0x64, 0x3d, 0x0a, 0x64, 0xb7, 0xf5, 0x4f, 0x06, 0x03, 0x7f, 0xdc, - 0x26, 0xcd, 0x90, 0xa0, 0x34, 0x66, 0x78, 0xdf, 0x46, 0xba, 0x9e, 0x8e, - 0xec, 0x39, 0xc1, 0x5a, 0x52, 0xf7, 0x0d, 0x91, 0x76, 0xd4, 0x1a, 0xa0, - 0x10, 0x67, 0x2d, 0x7f, 0xca, 0xde, 0xda, 0x04, 0xf7, 0x4f, 0x63, 0x1f, - 0x91, 0x4d, 0xd5, 0xd4, 0x8b, 0xce, 0xfc, 0x7a, 0x3a, 0x3e, 0x9b, 0x9e, - 0x5d, 0x2c, 0x9b, 0x41, 0xc8, 0x65, 0x51, 0xc7, 0xac, 0x6c, 0xda, 0x98, - 0x49, 0x37, 0x42, 0x41, 0x36, 0x70, 0xbb, 0x4c, 0x20, 0xd0, 0xe5, 0xbc, - 0x25, 0x41, 0x9c, 0xd5, 0xf6, 0x25, 0x8e, 0x4b, 0x04, 0x90, 0xff, 0x6e, - 0x1a, 0xc5, 0xe0, 0x3c, 0x19, 0x9b, 0xdf, 0xc0, 0xca, 0xc2, 0x8b, 0xaa, - 0xf2, 0x18, 0x77, 0x9b, 0xb3, 0x71, 0x3f, 0x55, 0x6d, 0x8c, 0x13, 0xbf, - 0xc9, 0x03, 0xe2, 0xa0, 0x29, 0xdc, 0x82, 0x05, 0x58, 0x4f, 0x36, 0xd9, - 0x84, 0x8d, 0x8e, 0xf3, 0x9e, 0x34, 0xa1, 0x70, 0xde, 0x06, 0xd9, 0xda, - 0xde, 0x92, 0xf6, 0x12, 0xf7, 0xdf, 0x73, 0x44, 0x15, 0xd9, 0x2f, 0x73, - 0x31, 0xe6, 0x7c, 0xec, 0xdb, 0x65, 0x92, 0x54, 0x74, 0x1a, 0xe2, 0xfd, - 0x5c, 0xe2, 0x9b, 0x42, 0x2d, 0x88, 0x8f, 0x93, 0xb8, 0x9b, 0x0b, 0xde, - 0x4f, 0x65, 0xb9, 0xac, 0x2a, 0x1f, 0x4e, 0xe2, 0x6b, 0x5a, 0x7f, 0x8c, - 0xec, 0x54, 0x3a, 0x63, 0x28, 0xec, 0x6e, 0xcd, 0xf6, 0xae, 0x37, 0x8c, - 0x02, 0xbe, 0x59, 0xef, 0xe4, 0x85, 0x9e, 0xf3, 0x2f, 0x9c, 0x4d, 0x13, - 0x6e, 0xd1, 0xb6, 0xf8, 0xc8, 0x7a, 0xf4, 0x53, 0x37, 0x52, 0xc3, 0x86, - 0xd3, 0x46, 0x06, 0xa6, 0x8c, 0x29, 0x4f, 0x34, 0x91, 0xb1, 0x5f, 0x6f, - 0x4e, 0xc8, 0xd6, 0x36, 0xc5, 0x12, 0xdc, 0x79, 0xc4, 0x00, 0x06, 0x9d, - 0x2d, 0x9c, 0xf3, 0xc5, 0xd6, 0xd8, 0x6c, 0xf7, 0xea, 0xc6, 0x55, 0x28, - 0x0c, 0x4f, 0x60, 0x27, 0xca, 0xef, 0x1c, 0x80, 0x0c, 0x61, 0x93, 0x63, - 0x27, 0x7d, 0x26, 0x1f, 0xc1, 0xcd, 0x8f, 0x20, 0xc3, 0x6f, 0xb1, 0x68, - 0x87, 0x73, 0x3e, 0xca, 0x84, 0x6d, 0xcc, 0xec, 0xd3, 0x35, 0x88, 0x99, - 0xb6, 0xc2, 0xa6, 0xe1, 0x78, 0x22, 0xc1, 0xb0, 0xaa, 0x79, 0xa7, 0xb9, - 0xa5, 0x32, 0x88, 0x76, 0x8a, 0x12, 0x7b, 0xfe, 0x7c, 0x0e, 0x52, 0x24, - 0xf0, 0x70, 0x16, 0x0f, 0x74, 0xd2, 0xd6, 0xc6, 0x03, 0x44, 0x2d, 0x1e, - 0x61, 0xbc, 0x65, 0xbb, 0x34, 0xac, 0xf5, 0x8d, 0xfc, 0xc2, 0x46, 0x76, - 0x25, 0x02, 0x76, 0x58, 0x04, 0x59, 0x28, 0xe6, 0xc4, 0x06, 0x93, 0x6b, - 0xfb, 0x38, 0x6f, 0x72, 0x32, 0x1b, 0xcc, 0x87, 0x22, 0xa4, 0x3f, 0x85, - 0x49, 0xc0, 0x73, 0xa4, 0x80, 0x81, 0xde, 0xa4, 0xb3, 0xd5, 0x2c, 0x31, - 0x67, 0xa3, 0x0c, 0x1e, 0xd0, 0x6f, 0xb7, 0x1e, 0x63, 0x15, 0x90, 0xff, - 0x17, 0x92, 0x63, 0x83, 0xcb, 0xf2, 0xda, 0xcf, 0x36, 0xbc, 0xe7, 0xab, - 0x71, 0x46, 0xe6, 0xd3, 0x16, 0x74, 0x0d, 0x3c, 0x7d, 0xdb, 0x50, 0x07, - 0x53, 0x6c, 0xc0, 0xff, 0x27, 0x47, 0xaf, 0x77, 0xc6, 0xaa, 0xf2, 0xc3, - 0x63, 0xe6, 0xaf, 0x7b, 0x49, 0x56, 0x10, 0xad, 0x57, 0x45, 0xd3, 0x56, - 0x21, 0xf1, 0x3b, 0x9c, 0xbb, 0x18, 0x17, 0x14, 0x94, 0x11, 0x32, 0x18, - 0x0f, 0xb9, 0xd1, 0x43, 0xe1, 0xd7, 0xf2, 0x26, 0xb8, 0xe7, 0xcc, 0x47, - 0x7b, 0xb6, 0x9a, 0xc9, 0x3c, 0xf0, 0x51, 0x91, 0xcb, 0x03, 0x36, 0x2d, - 0x04, 0x9a, 0xa2, 0xbd, 0xc2, 0xa8, 0x0c, 0x24, 0x2d, 0x74, 0x15, 0x72, - 0xfa, 0xb0, 0x23, 0x3f, 0x2b, 0xe5, 0x93, 0xf3, 0xdf, 0xcb, 0x9a, 0x34, - 0xab, 0xe2, 0xb9, 0x0e, 0xd4, 0x8a, 0x1d, 0xa3, 0x86, 0x3c, 0x5b, 0xff, - 0x71, 0x3e, 0x64, 0x1b, 0xfe, 0x4c, 0xa0, 0x24, 0x15, 0x3b, 0xda, 0x1c, - 0x16, 0x88, 0x1f, 0x12, 0xcd, 0xd8, 0xcc, 0x94, 0x26, 0x39, 0xa4, 0xf5, - 0xb0, 0xf7, 0xff, 0xda, 0x1d, 0xae, 0xd7, 0x3c, 0x57, 0x83, 0x4a, 0xd8, - 0x16, 0x11, 0x25, 0x9f, 0x54, 0xcc, 0xd2, 0xd9, 0x53, 0xb1, 0xc4, 0x75, - 0x19, 0x00, 0xa9, 0xf3, 0x0f, 0xd0, 0x32, 0x2b, 0x64, 0x5d, 0xef, 0x95, - 0x7c, 0x7d, 0xbe, 0x11, 0xe7, 0xd9, 0x51, 0xba, 0xdb, 0x39, 0x22, 0x7f, - 0xd7, 0x46, 0x70, 0x6e, 0x51, 0x6a, 0x25, 0x57, 0xb1, 0x5f, 0x89, 0x51, - 0x3b, 0x11, 0xe9, 0xf6, 0x53, 0x6b, 0xdf, 0xb9, 0x8d, 0xf0, 0xde, 0x81, - 0x45, 0x4f, 0x49, 0xad, 0xc3, 0xf4, 0x49, 0x73, 0xd1, 0x59, 0xd1, 0xeb, - 0xa0, 0x5f, 0xf2, 0xe9, 0x4f, 0x95, 0x03, 0x29, 0xf4, 0x28, 0x06, 0x94, - 0x1a, 0xcd, 0xac, 0x7e, 0x49, 0xc1, 0x9d, 0xcf, 0xa0, 0xa5, 0x92, 0xf8, - 0x9c, 0x6b, 0xfa, 0xb7, 0x91, 0x55, 0xc2, 0x35, 0x81, 0xd4, 0xe6, 0xc5, - 0x48, 0x94, 0x60, 0x51, 0x3b, 0x0a, 0x25, 0xb3, 0x57, 0x77, 0x87, 0xf9, - 0x40, 0x73, 0x09, 0x67, 0x20, 0x26, 0xdd, 0xa5, 0xe7, 0x3e, 0xaf, 0x95, - 0x0c, 0x2b, 0xeb, 0x56, 0x2d, 0xf2, 0xf8, 0x0b, 0xed, 0x79, 0x43, 0xad, - 0xad, 0xf0, 0xe7, 0x00, 0xcf, 0x93, 0x58, 0xec, 0xec, 0x71, 0x11, 0x65, - 0x11, 0x0c, 0x02, 0x6f, 0x60, 0x73, 0x5d, 0x32, 0x32, 0x3c, 0x58, 0x4e, - 0xd6, 0xc9, 0xa3, 0xbd, 0x4c, 0x29, 0xdf, 0xe4, 0xae, 0xf7, 0xfc, 0x1a, - 0xfd, 0xaf, 0x1f, 0xf8, 0x72, 0x7f, 0xe9, 0xdb, 0xab, 0x61, 0x48, 0x42, - 0x72, 0xd4, 0x2b, 0x83, 0xbe, 0x60, 0xf4, 0x24, 0x70, 0x29, 0x42, 0x9c, - 0xe9, 0x5e, 0x0e, 0x54, 0x9c, 0xaa, 0x34, 0x39, 0xdd, 0xe3, 0x10, 0xc6, - 0x8e, 0xb9, 0xc9, 0x21, 0xab, 0x8d, 0xc1, 0x1c, 0x13, 0x92, 0xb6, 0x53, - 0x39, 0x8f, 0x6e, 0x90, 0xb6, 0x35, 0x4e, 0x4f, 0x03, 0x63, 0x3e, 0x32, - 0x4a, 0xa8, 0x9d, 0x2e, 0x28, 0x76, 0x04, 0xf3, 0x6d, 0x77, 0x0d, 0x57, - 0x9f, 0xf9, 0xf8, 0x04, 0x49, 0xec, 0xff, 0xec, 0x66, 0x60, 0x15, 0x71, - 0x75, 0xfe, 0xfc, 0x30, 0xb9, 0x7f, 0x10, 0x2c, 0x92, 0x9e, 0x7c, 0xc7, - 0xf6, 0x8f, 0x4c, 0x80, 0xb6, 0x70, 0xca, 0x03, 0x3f, 0xf1, 0x39, 0x3f, - 0x9a, 0xda, 0x67, 0x2e, 0x12, 0xd1, 0x56, 0xa8, 0x1c, 0x55, 0xa0, 0xa0, - 0xe9, 0x70, 0xc0, 0x82, 0xc1, 0x09, 0x23, 0x14, 0xca, 0xab, 0xce, 0x3e, - 0xa3, 0xd9, 0x66, 0x24, 0xdf, 0xe4, 0xb6, 0x4d, 0x30, 0xf4, 0x3c, 0xc8, - 0xe5, 0xbb, 0xbe, 0xd9, 0x12, 0x86, 0xce, 0xae, 0xd6, 0x87, 0x6d, 0x38, - 0xff, 0xf8, 0xa1, 0x30, 0x1d, 0x3a, 0x2b, 0x1e, 0x1e, 0x0d, 0x3c, 0x51, - 0x95, 0xd5, 0x66, 0x2a, 0x6c, 0xd3, 0xf3, 0x2f, 0x5b, 0xb7, 0x78, 0x3e, - 0xa0, 0x11, 0x40, 0xa9, 0x78, 0x91, 0x63, 0xa3, 0x93, 0xb7, 0xec, 0x70, - 0x77, 0xf1, 0xd8, 0xbe, 0x2a, 0x5d, 0xc9, 0x1d, 0x29, 0x67, 0xc6, 0x7e, - 0x94, 0x3e, 0x45, 0x76, 0xf7, 0x5c, 0xc1, 0xbb, 0x08, 0x53, 0x67, 0x06, - 0xa8, 0x57, 0xf1, 0xfc, 0x7a, 0x5a, 0x8c, 0x67, 0x54, 0x6f, 0xd7, 0x12, - 0xbc, 0xb2, 0x3d, 0x3e, 0xf0, 0x8d, 0xff, 0xe2, 0x46, 0x5c, 0xce, 0xd3, - 0xc2, 0x14, 0x7e, 0xdd, 0xca, 0x44, 0x28, 0x30, 0x4c, 0x96, 0xfd, 0xaf, - 0x91, 0x2e, 0x80, 0x71, 0x46, 0xcf, 0x0c, 0x6e, 0xbc, 0x87, 0xc4, 0x58, - 0x5a, 0xb2, 0x19, 0x88, 0xd9, 0xa8, 0x4f, 0x37, 0x55, 0xda, 0x22, 0xd8, - 0xc8, 0xc1, 0x34, 0xfd, 0x40, 0xb2, 0xb4, 0x95, 0xce, 0x3e, 0x34, 0x31, - 0x18, 0xfa, 0x70, 0x79, 0x09, 0xc4, 0x7a, 0xae, 0x7e, 0x94, 0xa1, 0x66, - 0xc8, 0x62, 0x61, 0xde, 0x48, 0x83, 0x69, 0x0d, 0x02, 0x56, 0x85, 0xb0, - 0x01, 0x78, 0xd2, 0x3d, 0xd6, 0x94, 0xa9, 0x63, 0xc5, 0x83, 0x98, 0x5c, - 0x54, 0xa3, 0xd3, 0xe9, 0xb3, 0xf2, 0x05, 0xb7, 0x9d, 0x08, 0x99, 0xb6, - 0xb3, 0x15, 0x60, 0xa9, 0x62, 0xfa, 0x1e, 0x0d, 0x9f, 0x16, 0x08, 0xd1, - 0x18, 0xc9, 0xd5, 0x78, 0xd4, 0xc4, 0x4e, 0x02, 0x7d, 0xbb, 0x62, 0x69, - 0xa0, 0xbd, 0xc5, 0x28, 0x12, 0x20, 0x3c, 0xd6, 0x8f, 0x02, 0xf4, 0xd2, - 0xe5, 0x22, 0x76, 0x5d, 0x91, 0xb3, 0x5a, 0x3a, 0x2d, 0x6d, 0xc5, 0x42, - 0x53, 0x97, 0x63, 0x2f, 0x6c, 0x82, 0x35, 0x7b, 0x5d, 0xaa, 0xdd, 0x59, - 0xa8, 0x3b, 0xdc, 0xcb, 0xcb, 0x8f, 0x26, 0xe6, 0x51, 0xf4, 0xeb, 0x69, - 0xc3, 0xf8, 0x51, 0x6c, 0x87, 0x80, 0x35, 0xe1, 0x0f, 0x6f, 0x43, 0x62, - 0x08, 0xb6, 0xd6, 0x27, 0x0b, 0x4d, 0x98, 0xe9, 0x90, 0x55, 0xd1, 0x40, - 0x95, 0x09, 0x25, 0x8a, 0x7a, 0xb2, 0x77, 0x58, 0xe5, 0x5b, 0xa3, 0x99, - 0xf0, 0x1b, 0xb2, 0x2a, 0x8a, 0xcc, 0xe0, 0x31, 0x08, 0xf6, 0xf3, 0xba, - 0xd8, 0x05, 0xaa, 0x1d, 0x2c, 0xd4, 0x43, 0x78, 0x84, 0x6f, 0x31, 0x61, - 0x2d, 0xc3, 0x6c, 0xe5, 0x7a, 0x40, 0xab, 0xb0, 0xe4, 0x24, 0x3c, 0xa1, - 0x2a, 0x4c, 0xce, 0x59, 0x16, 0x30, 0xd2, 0xb8, 0x44, 0x82, 0x0b, 0x93, - 0x83, 0x3c, 0xf5, 0xee, 0x0b, 0x31, 0xba, 0xf4, 0x5b, 0x28, 0x57, 0xf2, - 0x2c, 0x11, 0x10, 0x37, 0xac, 0xff, 0x30, 0xbe, 0xf0, 0xf9, 0xf2, 0xe3, - 0x89, 0xd0, 0x2e, 0xde, 0x71, 0x65, 0x7b, 0x49, 0x9a, 0x4c, 0x1d, 0xa3, - 0xb2, 0x55, 0x48, 0x78, 0x3d, 0xb2, 0xa7, 0x07, 0x75, 0x06, 0x1c, 0xc5, - 0xa4, 0x0d, 0x25, 0xe7, 0x08, 0x2b, 0xf5, 0x71, 0x9a, 0x88, 0x93, 0x36, - 0x2e, 0x65, 0x3d, 0x48, 0x89, 0xe8, 0x02, 0x69, 0x98, 0x28, 0xe3, 0x7b, - 0xc2, 0xac, 0x65, 0xb7, 0x44, 0x3f, 0x45, 0x72, 0x83, 0x54, 0x55, 0x5a, - 0x81, 0x85, 0x4f, 0xff, 0xab, 0x5e, 0xc9, 0x4c, 0x55, 0x9a, 0x9a, 0xf5, - 0x37, 0xfe, 0x49, 0xf3, 0x63, 0xee, 0xfe, 0xd9, 0xc8, 0x5c, 0xf6, 0x51, - 0x44, 0x78, 0xd9, 0x18, 0x0a, 0xe5, 0xd3, 0x1d, 0x2f, 0xce, 0x55, 0x2d, - 0x73, 0x9e, 0x56, 0xdb, 0xad, 0x9f, 0x59, 0xf6, 0x63, 0xa7, 0xe4, 0xb4, - 0x9c, 0x12, 0xc2, 0x59, 0xa9, 0xd9, 0x0f, 0x47, 0xeb, 0x5e, 0x2c, 0x67, - 0xe4, 0xdb, 0x07, 0x6f, 0xe2, 0x56, 0xd6, 0x10, 0x9f, 0x4b, 0x73, 0x3e, - 0xde, 0x38, 0x9a, 0x1c, 0xc8, 0x9b, 0x3a, 0x6e, 0x7b, 0x5c, 0x29, 0xd5, - 0x42, 0xb6, 0x5c, 0x4e, 0x1a, 0xb5, 0xd5, 0xe3, 0xba, 0x5b, 0x47, 0x36, - 0x82, 0x15, 0xba, 0xdd, 0xfc, 0x7f, 0x56, 0xdd, 0x96, 0x9d, 0x39, 0x05, - 0xfd, 0x38, 0x93, 0x21, 0x9f, 0x40, 0x8f, 0x90, 0x13, 0x6d, 0x1d, 0xf8, - 0x61, 0xea, 0xe9, 0xb7, 0x09, 0x53, 0x11, 0x76, 0x18, 0x3f, 0x9f, 0x90, - 0xfd, 0x3b, 0xd8, 0x45, 0xf1, 0x51, 0x2d, 0x54, 0x88, 0x05, 0xc9, 0xa9, - 0x46, 0x1f, 0x79, 0x2f, 0x61, 0xb2, 0xa4, 0xc8, 0xab, 0x63, 0xf8, 0x6f, - 0x59, 0xe2, 0xfc, 0x16, 0x99, 0x0a, 0xe5, 0x13, 0x0d, 0x2e, 0xed, 0x7e, - 0x4b, 0x07, 0x0e, 0xa4, 0x84, 0x38, 0x87, 0xd5, 0xe3, 0x2b, 0xa2, 0xfc, - 0xa1, 0xc7, 0x7e, 0x1f, 0xb6, 0x1a, 0xf2, 0x78, 0x7e, 0xaf, 0xda, 0xf1, - 0x5f, 0x24, 0x86, 0x6d, 0x70, 0x64, 0x61, 0x7e, 0xb6, 0xca, 0x40, 0x26, - 0xc4, 0x82, 0xe3, 0xdb, 0x69, 0x55, 0x56, 0x0b, 0x4d, 0x1f, 0xbb, 0xee, - 0xf0, 0x93, 0xca, 0xd1, 0x41, 0xeb, 0x4e, 0x58, 0xef, 0xc0, 0x52, 0x6e, - 0xbb, 0x49, 0x33, 0x00, 0x44, 0x31, 0x6e, 0xc3, 0xf8, 0xa6, 0xb3, 0x37, - 0xd2, 0xba, 0x86, 0x5a, 0x84, 0xd2, 0xd5, 0x78, 0x6e, 0x7d, 0xf3, 0xf2, - 0x0d, 0x11, 0x76, 0x2a, 0x97, 0x7c, 0x02, 0x48, 0x77, 0x9b, 0xf6, 0x43, - 0x40, 0x9a, 0x28, 0x14, 0x11, 0xb5, 0x5a, 0x2d, 0x35, 0xc5, 0xda, 0x99, - 0x0c, 0xfd, 0x77, 0xb8, 0xf4, 0x53, 0x44, 0x0a, 0xe1, 0x6f, 0x59, 0x8a, - 0xbe, 0xfc, 0xd2, 0x19, 0x60, 0x5c, 0xd8, 0xcd, 0xac, 0xd5, 0x5c, 0xb9, - 0x6a, 0x2e, 0x85, 0xe2, 0x30, 0xc2, 0x36, 0x96, 0xa7, 0x84, 0x92, 0x87, - 0x4d, 0xc7, 0x17, 0xa4, 0xd2, 0x28, 0x7f, 0x45, 0x49, 0xf1, 0xeb, 0xf4, - 0x02, 0x37, 0x75, 0xb7, 0x44, 0xac, 0xb7, 0x52, 0xb0, 0x42, 0x89, 0x89, - 0x08, 0x17, 0xe5, 0xa5, 0x43, 0x61, 0xcd, 0x54, 0x52, 0x34, 0x02, 0x57, - 0xf5, 0x83, 0x24, 0xf8, 0x4c, 0x8f, 0x6a, 0xd2, 0xa3, 0x1a, 0x17, 0x69, - 0xd4, 0x4f, 0xc5, 0x7d, 0x5c, 0x46, 0x0b, 0xf2, 0x10, 0xd0, 0x5c, 0xfe, - 0x08, 0xf8, 0x93, 0x63, 0x6a, 0x21, 0x7f, 0x63, 0x3f, 0x77, 0xda, 0xc8, - 0xcc, 0xbb, 0xc4, 0xa6, 0x53, 0x8e, 0xcb, 0xd8, 0x11, 0x81, 0xfe, 0xdb, - 0x28, 0x66, 0x5e, 0xad, 0xa4, 0xc0, 0x58, 0xc1, 0x0f, 0xf7, 0xd3, 0x1d, - 0x1c, 0x83, 0x71, 0x20, 0x28, 0xb1, 0x88, 0xc0, 0xf1, 0x3b, 0xc0, 0x25, - 0xaa, 0x9d, 0x5d, 0x9d, 0x93, 0x7d, 0x73, 0xf5, 0x36, 0x97, 0x53, 0x62, - 0x8d, 0xd4, 0x1d, 0xcd, 0x63, 0xe5, 0x50, 0x7d, 0xf1, 0xe0, 0x16, 0x1e, - 0x0b, 0x25, 0x91, 0x6d, 0x53, 0x28, 0x85, 0xb9, 0x4d, 0x79, 0x84, 0x53, - 0x29, 0x49, 0xb0, 0x40, 0x65, 0xf4, 0xa5, 0x44, 0x60, 0x82, 0xf8, 0x2c, - 0xb2, 0x01, 0xcf, 0x4e, 0x15, 0xd6, 0x5a, 0x20, 0xd7, 0x01, 0xf2, 0xbe, - 0x7e, 0x06, 0x1f, 0x09, 0xbb, 0xcd, 0x6e, 0x77, 0x39, 0x40, 0xea, 0x21, - 0x40, 0x02, 0x69, 0x5a, 0xac, 0x78, 0x6c, 0xf1, 0xba, 0x06, 0x60, 0x48, - 0x7b, 0x1e, 0xa8, 0x56, 0x5d, 0x66, 0xb9, 0x49, 0xda, 0xf0, 0x81, 0x40, - 0x7d, 0x32, 0xc9, 0x64, 0x55, 0xce, 0x1f, 0x94, 0xb5, 0xd3, 0xb2, 0xdc, - 0x17, 0x4e, 0xe3, 0x54, 0xf5, 0x98, 0xb2, 0xc0, 0xc0, 0x85, 0xcb, 0x83, - 0xc0, 0x0e, 0x1f, 0x58, 0x1b, 0x7b, 0xe2, 0x3f, 0x59, 0x44, 0xa0, 0xd9, - 0x07, 0x1f, 0xa1, 0xf8, 0xf3, 0x62, 0xb8, 0xa7, 0xe0, 0x41, 0x53, 0xcf, - 0x85, 0xc3, 0x5b, 0x06, 0x61, 0xfc, 0x7f, 0x9b, 0x00, 0x97, 0x62, 0xc0, - 0x29, 0xea, 0xf6, 0xa9, 0x93, 0x9d, 0xfb, 0x75, 0xb6, 0x20, 0x01, 0x4d, - 0x21, 0x19, 0x93, 0xec, 0x11, 0x87, 0x66, 0x2f, 0x79, 0x7c, 0x64, 0x70, - 0xb8, 0x6a, 0x37, 0xf0, 0x1d, 0x74, 0x28, 0x6f, 0x18, 0xd2, 0x69, 0xa2, - 0x1a, 0xb4, 0xdc, 0x3f, 0x3e, 0x9c, 0xbb, 0x70, 0xc5, 0xe4, 0x5d, 0x29, - 0x33, 0x85, 0xe0, 0x3e, 0x91, 0x61, 0x87, 0x11, 0x27, 0xbb, 0xd3, 0xa8, - 0x29, 0x63, 0x99, 0x10, 0xe1, 0xcb, 0xd3, 0x68, 0xc4, 0x3b, 0xe7, 0x5a, - 0x33, 0x28, 0xd5, 0x7d, 0xef, 0x4c, 0xb5, 0x53, 0x1e, 0x6d, 0x51, 0xfa, - 0x3e, 0x59, 0x5b, 0xf2, 0x0f, 0x50, 0x72, 0x68, 0x6b, 0xc6, 0x0c, 0x12, - 0x56, 0x0c, 0xe5, 0x0e, 0x13, 0x65, 0x7a, 0x12, 0x55, 0x16, 0x95, 0xc7, - 0xfd, 0xbb, 0xa1, 0x74, 0x5c, 0xc7, 0x4c, 0x4c, 0x4d, 0x95, 0x9f, 0xa3, - 0x11, 0x38, 0xd7, 0x82, 0x73, 0x4b, 0x8e, 0x42, 0x26, 0x57, 0x46, 0xd9, - 0x53, 0x7e, 0x10, 0x12, 0x8b, 0xbb, 0xf1, 0xa6, 0x3b, 0x1e, 0xb7, 0x74, - 0xee, 0x7c, 0x68, 0x10, 0xc9, 0x8c, 0x47, 0x80, 0x67, 0x0d, 0x64, 0xde, - 0x0d, 0xc2, 0xfe, 0x0a, 0xe4, 0x8d, 0xd8, 0x7b, 0x49, 0x1e, 0x4b, 0x3f, - 0x97, 0x53, 0xf6, 0x05, 0xeb, 0xeb, 0x05, 0xdc, 0x71, 0x87, 0x20, 0xa5, - 0xb0, 0xeb, 0x34, 0x80, 0x9f, 0x56, 0x32, 0x5f, 0x24, 0x9e, 0xfb, 0xf9, - 0xb9, 0x9d, 0xf4, 0x26, 0xc3, 0x7b, 0x2a, 0xef, 0xe2, 0x99, 0xf3, 0x27, - 0xf0, 0xfa, 0xd7, 0xee, 0x06, 0xa2, 0x4e, 0x4a, 0x45, 0xf5, 0x73, 0x09, - 0xe6, 0x8b, 0x6e, 0x7c, 0x9a, 0xf7, 0x1f, 0x09, 0x8d, 0xfd, 0x52, 0x76, - 0xc5, 0x06, 0x70, 0xf0, 0x92, 0xb7, 0x64, 0xdf, 0xae, 0x6e, 0x18, 0xbe, - 0x25, 0xc4, 0x25, 0x96, 0x1c, 0xd6, 0x47, 0xf9, 0x24, 0x1a, 0x62, 0x57, - 0xfa, 0x10, 0xa3, 0x36, 0xd2, 0x5b, 0x0a, 0x50, 0x1d, 0x11, 0x6a, 0x48, - 0x22, 0x71, 0x4f, 0xf9, 0xfa, 0x00, 0xfa, 0xb7, 0x27, 0x85, 0x0e, 0xa2, - 0x36, 0x2a, 0x06, 0x76, 0x2e, 0x0b, 0x0b, 0xc7, 0x1f, 0x9e, 0x5c, 0xc8, - 0x14, 0x5d, 0xee, 0x8c, 0x5b, 0x9f, 0x0b, 0x58, 0xa5, 0x5d, 0x43, 0x64, - 0x9e, 0xdc, 0x2c, 0xef, 0xcf, 0x0b, 0xf0, 0x1f, 0x52, 0xb8, 0xe5, 0x3c, - 0x56, 0x37, 0x7f, 0xd1, 0xfe, 0x13, 0x32, 0x5e, 0x08, 0xdf, 0xa6, 0xca, - 0x50, 0xa3, 0xd8, 0x85, 0x2b, 0xf5, 0x9c, 0xe8, 0x16, 0xc6, 0x7c, 0x19, - 0x24, 0xa1, 0x23, 0xfc, 0x5e, 0x76, 0xe7, 0x68, 0xa5, 0xf0, 0x57, 0xaa, - 0x90, 0x3f, 0x98, 0x34, 0x0f, 0xc8, 0xee, 0x11, 0x95, 0x92, 0x6e, 0xad, - 0xbc, 0xa2, 0xce, 0x1d, 0x60, 0xe3, 0x8d, 0x2c, 0x41, 0x7d, 0x85, 0xfd, - 0xf3, 0x3d, 0x53, 0xa8, 0x73, 0xa9, 0xe8, 0x93, 0x9a, 0xd9, 0x1d, 0x63, - 0x02, 0x1a, 0x8f, 0x2d, 0x1f, 0x97, 0x5f, 0xa2, 0x2a, 0x3d, 0x1e, 0x7e, - 0x47, 0xf8, 0xb0, 0x33, 0xe4, 0x67, 0xc9, 0x4c, 0x95, 0x2b, 0x4b, 0x66, - 0x52, 0x41, 0x04, 0xd2, 0x00, 0x4a, 0xf5, 0xa7, 0xee, 0x75, 0xc6, 0x62, - 0x4e, 0x3f, 0xf2, 0xd2, 0xee, 0xc0, 0xec, 0x07, 0xed, 0xf8, 0x7f, 0x79, - 0x19, 0x0d, 0xb6, 0x46, 0xda, 0xda, 0x20, 0xf6, 0x56, 0x69, 0xda, 0xe0, - 0xbe, 0x70, 0x8c, 0x9a, 0x61, 0x36, 0xe1, 0x96, 0xa4, 0xa8, 0x38, 0xaa, - 0xf6, 0x63, 0xde, 0x93, 0xbd, 0xe3, 0x01, 0x66, 0x58, 0xd7, 0xf8, 0xae, - 0xe2, 0x2b, 0x2e, 0x9b, 0xdd, 0x5f, 0x8e, 0x09, 0xd2, 0x91, 0x8c, 0x04, - 0x05, 0x70, 0xbd, 0x3c, 0xb0, 0x4c, 0xad, 0x6c, 0xe3, 0xc4, 0xb6, 0x1e, - 0x30, 0xe6, 0xdd, 0x33, 0x07, 0x02, 0x2c, 0x9f, 0x1c, 0x6f, 0xad, 0xce, - 0xf0, 0xb7, 0x59, 0x63, 0xed, 0xa3, 0x33, 0xf0, 0xbb, 0xbc, 0x21, 0x07, - 0xcf, 0xc7, 0xf5, 0x11, 0x97, 0xb1, 0x3a, 0xd2, 0x18, 0x31, 0x71, 0x02, - 0xd4, 0x2d, 0x34, 0x11, 0xe1, 0xeb, 0x73, 0x8c, 0x12, 0xa8, 0x31, 0x6f, - 0x9a, 0x07, 0xad, 0xe4, 0xee, 0x14, 0x79, 0x46, 0xa9, 0x7f, 0x4e, 0xc5, - 0x17, 0x36, 0xaa, 0xe5, 0xc4, 0xd4, 0xde, 0x8c, 0x43, 0x65, 0xd9, 0x70, - 0x58, 0xb5, 0xed, 0xa2, 0x38, 0x6b, 0x29, 0x34, 0x22, 0x89, 0x1a, 0xdf, - 0x9e, 0x22, 0xf0, 0xb1, 0xb2, 0x24, 0x62, 0x1b, 0x15, 0x67, 0x8e, 0x04, - 0xf7, 0xdd, 0x76, 0xf8, 0x85, 0x64, 0xdd, 0xc8, 0xed, 0xbd, 0x9f, 0xcc, - 0xe9, 0x26, 0x10, 0xf2, 0x40, 0x4c, 0x36, 0x2f, 0x47, 0x4b, 0x90, 0x75, - 0x70, 0x10, 0x8f, 0x81, 0xb0, 0x9f, 0x40, 0x61, 0x51, 0x69, 0x2f, 0x5b, - 0xfd, 0x61, 0x24, 0x33, 0x6d, 0x92, 0x24, 0x78, 0xa1, 0xaf, 0xeb, 0x1b, - 0xbb, 0x05, 0x9f, 0xab, 0x03, 0xcb, 0x8a, 0x00, 0xbb, 0x66, 0x90, 0x3b, - 0x08, 0xf3, 0x56, 0x2c, 0xd5, 0x27, 0xea, 0x4b, 0xd0, 0xf0, 0xbd, 0x22, - 0x07, 0x6a, 0x2c, 0xf2, 0x86, 0x56, 0x85, 0x8d, 0x31, 0x89, 0x13, 0x7e, - 0x9f, 0x60, 0x2f, 0x40, 0x11, 0x02, 0x06, 0x4c, 0x39, 0x8e, 0xae, 0xe8, - 0x54, 0x36, 0x04, 0x66, 0x07, 0x89, 0x07, 0x50, 0xeb, 0x72, 0x12, 0x75, - 0x33, 0xd8, 0x10, 0xc9, 0xd6, 0x67, 0xc4, 0xd9, 0x48, 0xca, 0xfc, 0x7e, - 0xbe, 0x9f, 0xb1, 0x3e, 0x48, 0x9f, 0xfd, 0x93, 0x75, 0xd1, 0xdf, 0x8a, - 0x00, 0x15, 0xb8, 0x18, 0x5f, 0x0f, 0x1e, 0x7b, 0xc1, 0x89, 0xcf, 0xdb, - 0xcf, 0x56, 0x16, 0xfc, 0xc7, 0xc0, 0x17, 0xb0, 0xeb, 0x69, 0x78, 0x0f, - 0x39, 0x9c, 0xae, 0x36, 0x5c, 0x44, 0x41, 0x7f, 0x45, 0x44, 0x93, 0xa4, - 0x55, 0x35, 0x30, 0x18, 0x1c, 0x80, 0xc9, 0xdb, 0x3c, 0x6f, 0x0b, 0xc3, - 0xa6, 0x0e, 0xf1, 0xfb, 0xa6, 0x93, 0x75, 0x29, 0x26, 0x56, 0x74, 0x06, - 0xff, 0x52, 0x81, 0x48, 0xc5, 0x80, 0x0e, 0x79, 0x58, 0x03, 0x84, 0x33, - 0xee, 0x74, 0x4e, 0x24, 0xf3, 0x7c, 0x50, 0x6c, 0x63, 0xaf, 0xa6, 0xc6, - 0x0b, 0x9e, 0x3d, 0xaa, 0xd8, 0x42, 0x76, 0x85, 0x3d, 0x26, 0x6e, 0xd6, - 0x38, 0x48, 0x32, 0x6f, 0xc5, 0x40, 0xff, 0xe4, 0xf1, 0x4d, 0xd0, 0xe5, - 0xf9, 0xc7, 0x32, 0xb1, 0x11, 0x5f, 0xe6, 0xf2, 0x4d, 0x73, 0x7a, 0x1a, - 0xd9, 0x6a, 0x9a, 0x06, 0x1c, 0xf4, 0x18, 0xbf, 0xcd, 0xe7, 0x15, 0x4b, - 0x02, 0xe7, 0xb6, 0xe3, 0x8f, 0xf9, 0x17, 0x43, 0x7b, 0x2c, 0xba, 0x0f, - 0xf4, 0x17, 0xd6, 0xf8, 0x79, 0x5d, 0x32, 0x68, 0x8b, 0x84, 0x6f, 0x79, - 0xb8, 0xd9, 0xb0, 0xbf, 0xd8, 0x2d, 0xbe, 0x51, 0x22, 0x34, 0xde, 0x6c, - 0x8f, 0xc0, 0xf4, 0x25, 0x74, 0xb3, 0x7b, 0xfc, 0xeb, 0xec, 0xba, 0x5c, - 0x15, 0x24, 0xb2, 0xaa, 0xe7, 0x91, 0x6d, 0x35, 0x81, 0x25, 0x26, 0x23, - 0x20, 0xa8, 0xf1, 0x40, 0x15, 0xc8, 0x9f, 0x56, 0xc2, 0xa3, 0x78, 0x09, - 0x38, 0x76, 0x60, 0x46, 0x4e, 0x66, 0x35, 0x99, 0xc1, 0x4f, 0xea, 0x83, - 0xcd, 0xd0, 0xfe, 0x51, 0xf7, 0xae, 0x15, 0x25, 0xae, 0x48, 0xd9, 0x12, - 0x6a, 0x1d, 0xf3, 0x1d, 0xbc, 0x82, 0x86, 0x72, 0x46, 0xb1, 0xd1, 0xf9, - 0xce, 0x13, 0x04, 0xea, 0xef, 0xd6, 0xe0, 0x36, 0xb2, 0x8d, 0x83, 0x18, - 0xfb, 0x5a, 0xb1, 0x1d, 0xef, 0x9d, 0x3b, 0x13, 0x47, 0x30, 0xf3, 0xdb, - 0x3e, 0x1a, 0x84, 0x1f, 0x5a, 0x2b, 0xf0, 0x6e, 0x96, 0x84, 0x8b, 0x74, - 0x1e, 0x32, 0xf8, 0x64, 0x38, 0xd3, 0xd7, 0xea, 0x37, 0x27, 0xfd, 0xb3, - 0x4d, 0xad, 0x92, 0x30, 0xf2, 0x3d, 0x29, 0x8d, 0x44, 0xd9, 0x72, 0x10, - 0x57, 0x91, 0x2f, 0x40, 0xfb, 0xa4, 0x2d, 0x13, 0x5e, 0xf9, 0xe5, 0x75, - 0x20, 0x31, 0x7e, 0xa3, 0x7c, 0x78, 0x6c, 0xc0, 0x0b, 0xf1, 0x0a, 0xb6, - 0xed, 0x0e, 0x7b, 0x8c, 0x1e, 0xdd, 0x83, 0x96, 0x3b, 0x67, 0xb0, 0x6a, - 0xa3, 0xf8, 0x90, 0x53, 0x52, 0x07, 0x2a, 0xe9, 0x85, 0x0d, 0xa4, 0xbb, - 0x3e, 0x8d, 0xd0, 0x07, 0xdb, 0xb8, 0x94, 0x92, 0x79, 0x95, 0x9e, 0xcf, - 0x7f, 0xdf, 0xa4, 0xf5, 0x56, 0x24, 0x06, 0x50, 0xf7, 0xff, 0x75, 0x9b, - 0x33, 0x3c, 0x1d, 0x98, 0xc4, 0x52, 0x77, 0xd9, 0x18, 0xba, 0xb2, 0x4d, - 0x96, 0x8b, 0x7d, 0x97, 0x19, 0xe5, 0x9e, 0x55, 0xef, 0x91, 0x4e, 0x8a, - 0x67, 0x15, 0xc0, 0x07, 0xfb, 0x7c, 0xb1, 0xe1, 0xf2, 0x01, 0xa7, 0x44, - 0x3e, 0x26, 0xe7, 0xcd, 0x1c, 0x27, 0x8e, 0xb7, 0x09, 0x55, 0xbb, 0x92, - 0x5b, 0xc4, 0x94, 0x90, 0xdf, 0xd8, 0xdf, 0x53, 0x74, 0xea, 0xac, 0xd4, - 0x26, 0xbb, 0x58, 0x0c, 0xc4, 0x33, 0xa0, 0x2f, 0x85, 0xae, 0x76, 0x03, - 0x57, 0x4b, 0x9e, 0x89, 0x0c, 0x10, 0xb1, 0xed, 0x99, 0xbb, 0x61, 0x78, - 0x9e, 0xbe, 0xab, 0x0a, 0xf4, 0x98, 0xb6, 0x20, 0x73, 0xd3, 0x9a, 0xa8, - 0x85, 0x4f, 0x29, 0x0b, 0x25, 0x29, 0xc7, 0x3b, 0x3e, 0x93, 0x71, 0x2e, - 0x2d, 0x88, 0x2c, 0x56, 0x48, 0x6a, 0x58, 0x72, 0x53, 0x2d, 0x6d, 0x7b, - 0x46, 0x1c, 0xfb, 0xac, 0xb2, 0x55, 0xf8, 0x5a, 0x6f, 0x84, 0x4b, 0x6e, - 0x31, 0xec, 0x5f, 0xfb, 0x29, 0x35, 0xc1, 0x40, 0x4b, 0x54, 0x22, 0x7d, - 0xce, 0x7a, 0x3a, 0xa6, 0x63, 0xbc, 0xf4, 0x7b, 0x04, 0x25, 0x65, 0x97, - 0xd9, 0x90, 0x8e, 0x9b, 0x46, 0x5e, 0x7b, 0xde, 0x10, 0x8c, 0x67, 0x26, - 0x6f, 0xd7, 0x19, 0x1f, 0xb3, 0xa7, 0x06, 0xf2, 0x07, 0xaa, 0x19, 0x79, - 0xf2, 0x02, 0xf8, 0x4e, 0x2e, 0x62, 0x9f, 0x0f, 0x60, 0x9f, 0xdd, 0x04, - 0x0a, 0x0f, 0x27, 0x5f, 0x0e, 0xfe, 0xe0, 0xc6, 0x6f, 0x43, 0xa8, 0x71, - 0x00, 0x5a, 0x9a, 0x38, 0x05, 0xa5, 0x2b, 0xa6, 0xc8, 0xcf, 0x39, 0x96, - 0xa5, 0xd6, 0x7d, 0xb7, 0x1e, 0x35, 0x98, 0x83, 0x68, 0x6a, 0x52, 0x9f, - 0x5a, 0x2a, 0xff, 0x73, 0x8a, 0xda, 0xfa, 0x16, 0xc5, 0x65, 0x70, 0xf0, - 0xfd, 0xc4, 0x3b, 0x5f, 0xcd, 0x7a, 0xbb, 0x3d, 0xf8, 0xb5, 0xeb, 0xdd, - 0xc3, 0x48, 0xe6, 0x01, 0xc1, 0xc4, 0x04, 0x94, 0x26, 0x54, 0x13, 0xd2, - 0x53, 0x30, 0x44, 0xbc, 0xb0, 0x36, 0x1e, 0xde, 0xc7, 0x47, 0xe0, 0xc7, - 0xa5, 0x5f, 0x17, 0x1f, 0x6c, 0xef, 0x70, 0x7e, 0x70, 0x13, 0x95, 0x9b, - 0xfd, 0xa2, 0xac, 0x35, 0xc0, 0x9b, 0xfc, 0x9e, 0x8e, 0x32, 0xa7, 0xa6, - 0x9e, 0xd0, 0xef, 0x97, 0x08, 0xff, 0xe4, 0x76, 0xc0, 0x0f, 0x0e, 0x71, - 0xa6, 0x43, 0xbb, 0x4b, 0x97, 0x40, 0x3e, 0x6b, 0x65, 0x64, 0x25, 0x87, - 0xd8, 0x1b, 0xee, 0x82, 0x02, 0x8a, 0x16, 0x16, 0x30, 0xfe, 0x13, 0x46, - 0x5d, 0xb8, 0x4d, 0x2a, 0x3f, 0xff, 0xe6, 0x11, 0x6f, 0x32, 0x4c, 0xff, - 0x51, 0x67, 0xad, 0xf9, 0x99, 0xc5, 0x6b, 0xbd, 0x7e, 0x73, 0xc8, 0xc7, - 0xe4, 0xb4, 0x20, 0x31, 0x23, 0x3f, 0x47, 0xc8, 0x3a, 0x3a, 0x47, 0x86, - 0xa8, 0x5b, 0x54, 0x5b, 0x47, 0xe8, 0x9a, 0x9f, 0x40, 0xd0, 0xe2, 0xec, - 0x09, 0x11, 0x05, 0x72, 0x4e, 0x08, 0x9f, 0x1e, 0xc2, 0xfe, 0x39, 0x3d, - 0x94, 0x8f, 0x58, 0xc8, 0x47, 0x66, 0xec, 0x32, 0x81, 0x38, 0xa9, 0xe5, - 0x98, 0x27, 0x52, 0x0d, 0x7b, 0xfb, 0xe7, 0x59, 0xe0, 0x5f, 0xd3, 0x2a, - 0x41, 0xa8, 0x36, 0xfa, 0xc7, 0xe8, 0x88, 0x0b, 0x27, 0xfe, 0xb1, 0x46, - 0x4f, 0x0c, 0xf0, 0xb5, 0x2e, 0xae, 0x2e, 0xa2, 0xde, 0x54, 0xb0, 0x09, - 0xff, 0xd2, 0xd7, 0x53, 0xdb, 0xe0, 0x65, 0xc9, 0x1c, 0x56, 0x6e, 0x77, - 0xeb, 0xe0, 0xb4, 0x2e, 0x00, 0x7b, 0x74, 0x42, 0x5d, 0xba, 0x1c, 0x80, - 0x0b, 0x86, 0xf1, 0x98, 0x59, 0x18, 0x3b, 0x21, 0x98, 0x23, 0x0f, 0x1c, - 0x8e, 0xaa, 0x4a, 0xe0, 0xdb, 0xa7, 0x5d, 0xde, 0xfd, 0x41, 0x76, 0x07, - 0x7d, 0xe7, 0x81, 0xdd, 0x46, 0x04, 0x90, 0xd0, 0x23, 0x69, 0xd8, 0x89, - 0xcb, 0xb6, 0x9c, 0xb4, 0x89, 0xc6, 0xa3, 0x42, 0x02, 0xb5, 0x4a, 0xe6, - 0x6d, 0xd3, 0x2f, 0x20, 0x27, 0xe9, 0x4e, 0x9a, 0xb8, 0xaa, 0x6e, 0xfb, - 0x80, 0x79, 0x03, 0xfa, 0x2c, 0x6a, 0x6e, 0x78, 0x91, 0x5e, 0xa2, 0xfe, - 0x6e, 0xc2, 0xbf, 0xc3, 0x7c, 0x87, 0x4a, 0xdd, 0xd1, 0x76, 0xa1, 0xfb, - 0x2c, 0xfc, 0xa6, 0xfc, 0x81, 0x46, 0x70, 0x94, 0x6e, 0xeb, 0xdb, 0x52, - 0x41, 0xac, 0x54, 0x0e, 0x0a, 0x06, 0xe3, 0xd2, 0x96, 0x10, 0x72, 0xaa, - 0xb6, 0x7a, 0x13, 0x25, 0x39, 0x04, 0xef, 0x8b, 0x0c, 0xc0, 0x0b, 0xf4, - 0x0a, 0xb3, 0xc5, 0x3e, 0xf4, 0xa1, 0x67, 0x04, 0x8c, 0x5f, 0x8f, 0xe3, - 0xf8, 0x64, 0xde, 0x3e, 0xc1, 0xe7, 0x45, 0x58, 0x05, 0xfa, 0x5c, 0x55, - 0xd7, 0x54, 0x0e, 0xc8, 0x50, 0x40, 0xb7, 0xc5, 0xa7, 0x16, 0x35, 0xf0, - 0x02, 0x01, 0x57, 0x96, 0x2a, 0x9e, 0xb0, 0x20, 0xbb, 0xd3, 0xd7, 0x0e, - 0x5e, 0xa0, 0xae, 0x38, 0x46, 0xd5, 0x52, 0x79, 0x6e, 0x28, 0xa8, 0x5e, - 0xb4, 0x19, 0xd4, 0xcc, 0xdd, 0xbf, 0x35, 0x7a, 0xf8, 0x05, 0x1d, 0x87, - 0xc9, 0x84, 0xe7, 0x93, 0x48, 0x1b, 0xab, 0xdb, 0x20, 0xbe, 0x4f, 0x3a, - 0x0e, 0xef, 0x31, 0x5f, 0xd0, 0x8b, 0x2f, 0x08, 0xaa, 0x74, 0x98, 0xd1, - 0xee, 0x02, 0x67, 0x78, 0x8c, 0xea, 0xc5, 0x77, 0x74, 0x5d, 0xbb, 0xf8, - 0x98, 0x82, 0x53, 0x5d, 0x9d, 0xb3, 0xb9, 0xf8, 0x23, 0x28, 0xf9, 0x1a, - 0x00, 0x34, 0x09, 0x4b, 0x3c, 0xaf, 0xaf, 0xd7, 0x77, 0x71, 0x87, 0x90, - 0xf9, 0x67, 0xd5, 0x92, 0xa1, 0xc7, 0xf2, 0x5d, 0x82, 0xad, 0x7a, 0x62, - 0xe4, 0xe2, 0x56, 0xae, 0x69, 0xa7, 0xf4, 0x1c, 0x24, 0x47, 0x6c, 0x42, - 0xb2, 0x5d, 0x9e, 0xf4, 0xbf, 0xe1, 0xc8, 0xb5, 0x7c, 0x5d, 0x73, 0xdd, - 0x30, 0x89, 0x6d, 0x04, 0x40, 0x43, 0x39, 0x1b, 0x2c, 0xbe, 0x4f, 0xd5, - 0x5b, 0x47, 0xd8, 0x2d, 0x1e, 0x22, 0x99, 0x1d, 0x75, 0x63, 0x77, 0xf7, - 0x6d, 0x34, 0xcb, 0xff, 0xa8, 0x17, 0x6e, 0x09, 0x52, 0xb7, 0xaf, 0x04, - 0x9f, 0x4c, 0x6f, 0x33, 0xbe, 0xe8, 0x5e, 0xb2, 0xf6, 0x65, 0x9a, 0xa0, - 0xdd, 0xf6, 0x76, 0x50, 0xca, 0x8e, 0x8d, 0x92, 0xaf, 0xec, 0x59, 0x11, - 0x80, 0x1b, 0xd4, 0xbc, 0xc1, 0x7a, 0x27, 0xb4, 0xa1, 0xc9, 0xd9, 0xae, - 0x98, 0xbd, 0xb9, 0xab, 0x08, 0xb1, 0x70, 0x00, 0x50, 0x6e, 0x9f, 0xbc, - 0xb3, 0xaf, 0xac, 0x56, 0x82, 0x0d, 0xe1, 0xc3, 0x26, 0x71, 0x51, 0xb9, - 0x37, 0xf7, 0x56, 0xbb, 0xda, 0xf8, 0x20, 0x3a, 0x6d, 0x67, 0x7c, 0x91, - 0x9d, 0xb5, 0x85, 0x33, 0xa6, 0xb8, 0x19, 0x6d, 0xe6, 0x4d, 0x2e, 0xe1, - 0xb4, 0x15, 0xa0, 0x1a, 0x40, 0x6a, 0x76, 0x6e, 0x8f, 0x8d, 0x9f, 0xad, - 0x2a, 0xe8, 0x29, 0x12, 0x71, 0x3e, 0x11, 0x9d, 0x0c, 0xec, 0xb4, 0xf8, - 0x5a, 0xa4, 0xee, 0xc9, 0xb1, 0xe4, 0xed, 0x62, 0x3e, 0xfc, 0x06, 0x26, - 0xeb, 0x61, 0xca, 0xf7, 0x3c, 0x32, 0x2a, 0x11, 0xc4, 0xa6, 0x10, 0xed, - 0xaf, 0x50, 0xb4, 0x11, 0x3e, 0x78, 0x21, 0x83, 0xb1, 0xf3, 0x96, 0x5e, - 0xf6, 0xab, 0x3a, 0xde, 0xab, 0x35, 0xa3, 0x24, 0xee, 0xf6, 0x34, 0x8c, - 0x42, 0x1f, 0xc6, 0xb0, 0xc4, 0x34, 0x70, 0x14, 0xd4, 0x67, 0x6e, 0x97, - 0x74, 0x3d, 0x05, 0xb7, 0x81, 0xf9, 0x3c, 0x3b, 0x37, 0x67, 0x5f, 0xb5, - 0x43, 0x92, 0xc6, 0x67, 0x58, 0x17, 0xdb, 0x92, 0x92, 0xd0, 0xf4, 0x04, - 0x0b, 0x0d, 0x89, 0xfd, 0x79, 0x3e, 0x00, 0x2f, 0xa8, 0x41, 0x58, 0x21, - 0xa6, 0x80, 0xae, 0x47, 0xdc, 0x62, 0x10, 0xf6, 0x78, 0x5d, 0x49, 0x18, - 0x06, 0x8d, 0x74, 0xa5, 0x05, 0xf9, 0xc4, 0x2b, 0xdc, 0x81, 0xda, 0xff, - 0xc6, 0xde, 0x27, 0x91, 0xca, 0x76, 0x01, 0xfe, 0xe3, 0x7e, 0x7b, 0x27, - 0xc4, 0x1e, 0x90, 0x1b, 0xc0, 0x2d, 0x29, 0x39, 0x29, 0x46, 0xe2, 0x86, - 0xaa, 0xd2, 0x96, 0x27, 0x78, 0x1f, 0x9c, 0xf7, 0x32, 0x09, 0xd5, 0xec, - 0x6d, 0xfa, 0x79, 0x56, 0x61, 0xf5, 0x60, 0xa9, 0xc9, 0xe8, 0x43, 0xb3, - 0x56, 0xfa, 0xa0, 0xe0, 0xc6, 0x8c, 0xc3, 0xba, 0x83, 0x41, 0xad, 0x4e, - 0x41, 0x6f, 0x69, 0x3e, 0x46, 0x63, 0xd0, 0xaf, 0x24, 0xcc, 0x58, 0x21, - 0x31, 0x5b, 0xfd, 0x34, 0x56, 0x07, 0x47, 0xc5, 0xa1, 0xe2, 0x32, 0x11, - 0xb9, 0xa7, 0x44, 0x18, 0x73, 0xb3, 0x1e, 0x55, 0x16, 0x42, 0x0f, 0x5d, - 0x9e, 0xde, 0xfd, 0x8c, 0xbb, 0xb7, 0x1f, 0xd6, 0x2f, 0x6a, 0x3a, 0x47, - 0x00, 0x33, 0x94, 0x48, 0x04, 0xe9, 0x58, 0x9b, 0xce, 0xce, 0x8b, 0x09, - 0x57, 0x5a, 0xbf, 0xd3, 0xfb, 0x2a, 0x02, 0xa3, 0x5b, 0x5c, 0x11, 0x22, - 0xe4, 0xa1, 0xaa, 0x3f, 0x7b, 0x43, 0x35, 0x07, 0xad, 0xdd, 0xf2, 0x6a, - 0x30, 0x3e, 0x45, 0xec, 0x0e, 0x51, 0xa0, 0x9f, 0xc0, 0x0a, 0x2f, 0x4e, - 0x88, 0x3f, 0xcc, 0xd4, 0x9b, 0x36, 0x27, 0x03, 0x7d, 0xc7, 0xa9, 0x0f, - 0x43, 0x50, 0xdb, 0x85, 0x4b, 0xba, 0x40, 0x52, 0x33, 0x74, 0xbe, 0xd1, - 0x2e, 0x75, 0xa9, 0xd3, 0x99, 0xcd, 0xa2, 0x01, 0x17, 0x74, 0xbb, 0x88, - 0x4c, 0xbf, 0x8b, 0x42, 0x99, 0xed, 0x0c, 0x24, 0x01, 0xe0, 0x47, 0x4f, - 0xa1, 0xe0, 0x19, 0x86, 0xdb, 0xfb, 0x09, 0x13, 0x32, 0x93, 0xec, 0xce, - 0x77, 0x38, 0x71, 0xe2, 0x52, 0xf5, 0x5c, 0x14, 0xfb, 0x4d, 0xa4, 0x79, - 0x8a, 0xb7, 0x0a, 0xf6, 0x99, 0x37, 0xae, 0xd9, 0xb9, 0x08, 0x27, 0x38, - 0x8c, 0x08, 0x75, 0x24, 0xa5, 0x4b, 0xc0, 0xbe, 0x15, 0xeb, 0xc1, 0x45, - 0x9a, 0xa4, 0x6b, 0x46, 0x8f, 0x87, 0x83, 0x08, 0x34, 0xd4, 0x18, 0x2f, - 0x68, 0x6a, 0xb7, 0x6c, 0xbc, 0xf0, 0x96, 0xcf, 0xfd, 0xe8, 0x49, 0x18, - 0xe4, 0x2f, 0x0e, 0x28, 0xbf, 0xa4, 0xc5, 0x62, 0x5a, 0x0f, 0x93, 0xbd, - 0xaa, 0xd4, 0x3e, 0x72, 0x25, 0xf8, 0xa4, 0xad, 0x66, 0x0f, 0x41, 0x0d, - 0x58, 0xb9, 0xeb, 0x64, 0x80, 0x12, 0xf1, 0x96, 0x4b, 0x21, 0x23, 0x94, - 0xa4, 0x74, 0x97, 0xbf, 0xf5, 0xe9, 0x0a, 0xfc, 0x28, 0x29, 0xfe, 0xdf, - 0x37, 0xa8, 0xcf, 0x29, 0x8f, 0x09, 0xcd, 0x9b, 0xa3, 0xad, 0xc6, 0x22, - 0xa2, 0xbd, 0xf5, 0x5a, 0xc6, 0xca, 0x1e, 0xae, 0xb3, 0xed, 0x53, 0x92, - 0x6c, 0xf1, 0x49, 0x8f, 0x61, 0xa2, 0xb6, 0xdc, 0x97, 0x14, 0xcb, 0x5f, - 0x26, 0xa4, 0x5a, 0x5f, 0x17, 0x22, 0xfe, 0x7e, 0xa2, 0xe8, 0x37, 0xa3, - 0xa2, 0x62, 0x3a, 0x1f, 0xbb, 0xe5, 0x3c, 0xe2, 0xac, 0x8d, 0xc5, 0xad, - 0x06, 0x32, 0xe7, 0xb4, 0xf9, 0xe1, 0x55, 0x9b, 0x0e, 0xf0, 0xd6, 0xa3, - 0xb0, 0x8c, 0xa4, 0xb0, 0xcc, 0x58, 0x81, 0x3d, 0xdf, 0x01, 0x38, 0x28, - 0xf9, 0x38, 0x91, 0x27, 0xf3, 0xe0, 0xac, 0x74, 0xb0, 0x3c, 0xfd, 0xdd, - 0x9e, 0x90, 0x23, 0x05, 0x50, 0x19, 0x56, 0x54, 0x29, 0xe3, 0x25, 0x7c, - 0x25, 0xbe, 0xe7, 0x5b, 0x93, 0x70, 0x78, 0x2a, 0x56, 0xb7, 0xe5, 0x0b, - 0xb7, 0xd5, 0xf5, 0xd2, 0xd4, 0xdd, 0x16, 0x49, 0xb5, 0xed, 0xd5, 0x41, - 0x0a, 0x3d, 0x0b, 0xdd, 0x7b, 0xf9, 0xf3, 0xf4, 0x52, 0x03, 0x55, 0xa8, - 0x37, 0x82, 0x66, 0xa8, 0x73, 0xbf, 0x2a, 0x41, 0xbf, 0x67, 0xc3, 0x81, - 0xe0, 0xd6, 0x3d, 0xf0, 0x7c, 0x47, 0x73, 0x34, 0xa2, 0x02, 0x25, 0xb9, - 0x0d, 0x40, 0x13, 0x67, 0xb0, 0xb0, 0xcf, 0x90, 0x93, 0x07, 0x44, 0xdc, - 0xbf, 0xd6, 0x37, 0x24, 0x37, 0x62, 0x1e, 0x26, 0xf2, 0x60, 0xc4, 0xc5, - 0x57, 0xeb, 0x96, 0x81, 0x28, 0x77, 0xe6, 0xcb, 0xa7, 0xc3, 0x26, 0x2c, - 0x14, 0x97, 0xc5, 0xe0, 0x90, 0x72, 0x00, 0x51, 0x56, 0x61, 0x4c, 0xd5, - 0xfb, 0x72, 0xf4, 0x05, 0x8f, 0xc2, 0xbb, 0x7e, 0x78, 0x54, 0xff, 0x9c, - 0xd3, 0x73, 0x91, 0x21, 0xb0, 0x64, 0x08, 0x38, 0x6a, 0x85, 0xae, 0x26, - 0xd0, 0xb0, 0xa9, 0x2a, 0xaf, 0xfc, 0xb1, 0xbc, 0x25, 0x4a, 0x71, 0x45, - 0xff, 0x98, 0xd3, 0xb6, 0x39, 0x31, 0xb0, 0xd9, 0xc7, 0xc6, 0xf5, 0x55, - 0x4b, 0x46, 0xe3, 0x7d, 0x0e, 0x19, 0x79, 0xb7, 0xfc, 0x4b, 0xf2, 0x28, - 0xed, 0xd2, 0xa4, 0xc9, 0x99, 0xbd, 0x0a, 0x6f, 0x16, 0xcf, 0x43, 0xd7, - 0xf6, 0x29, 0x8d, 0xd1, 0x32, 0xa7, 0xd2, 0x2f, 0x99, 0x46, 0x78, 0x31, - 0x62, 0xbd, 0x91, 0x51, 0x85, 0xab, 0x4d, 0xa1, 0xa1, 0xa6, 0x17, 0xc4, - 0xe9, 0x0f, 0x75, 0x41, 0xd5, 0x70, 0x66, 0xd0, 0x9f, 0xbc, 0x52, 0x4c, - 0x57, 0x5d, 0xe9, 0xda, 0x51, 0xa9, 0x26, 0x6d, 0xed, 0x55, 0x92, 0x18, - 0x2b, 0xf6, 0xa3, 0xe1, 0xfc, 0x3e, 0xc9, 0x8a, 0x4b, 0xd9, 0xdf, 0x3d, - 0x8d, 0x33, 0xaa, 0x99, 0x6c, 0x73, 0x5a, 0x40, 0x91, 0x43, 0xa9, 0xb8, - 0xc7, 0xf8, 0x87, 0xd6, 0x4f, 0xab, 0xbb, 0x2f, 0xbb, 0xa3, 0x77, 0x45, - 0x47, 0x06, 0xee, 0x17, 0xad, 0xf1, 0x9c, 0x46, 0x99, 0x62, 0x46, 0x9e, - 0x92, 0x09, 0xa9, 0xd7, 0x76, 0x5a, 0x18, 0xd3, 0x30, 0xf0, 0xf0, 0x2a, - 0x83, 0xba, 0x60, 0x4d, 0x32, 0x99, 0x0f, 0x6b, 0xf6, 0x5d, 0x90, 0x13, - 0xdb, 0x29, 0x4f, 0x62, 0xc2, 0xe8, 0xae, 0xb0, 0x3f, 0xd6, 0x36, 0x87, - 0xac, 0x6f, 0x11, 0x29, 0xd6, 0x11, 0x40, 0xa5, 0xb6, 0x91, 0xac, 0x22, - 0x80, 0x9a, 0x37, 0x38, 0x4d, 0x85, 0x65, 0x47, 0xa0, 0x93, 0x4d, 0xdc, - 0x44, 0x81, 0x18, 0xd4, 0xb8, 0x95, 0xe7, 0xc8, 0x66, 0x89, 0xd9, 0x53, - 0xbb, 0xd3, 0xd3, 0x91, 0x7e, 0x5c, 0xf5, 0x46, 0xd3, 0x5c, 0x52, 0xad, - 0x01, 0xaf, 0x28, 0x7b, 0x1d, 0xcb, 0x49, 0x05, 0xbd, 0x78, 0x2e, 0xfe, - 0x4f, 0x45, 0x89, 0xcd, 0xe3, 0x29, 0x86, 0x0e, 0xc8, 0x39, 0x7f, 0xdf, - 0x73, 0x75, 0x9f, 0xec, 0xf8, 0xe8, 0x4d, 0x53, 0x76, 0xaf, 0xa6, 0x7f, - 0xa8, 0x24, 0x2f, 0xb6, 0x89, 0x20, 0xa3, 0x99, 0x95, 0xfd, 0xbf, 0xc8, - 0x1f, 0x69, 0x9f, 0xee, 0x8c, 0x55, 0x9e, 0x0b, 0xce, 0x37, 0x14, 0x17, - 0x1d, 0xb3, 0x62, 0x71, 0xe9, 0xe5, 0x5e, 0x78, 0x0d, 0xa7, 0x36, 0x47, - 0x33, 0x5c, 0x4d, 0x0e, 0x43, 0x08, 0x5b, 0x10, 0xe8, 0x48, 0xb4, 0x86, - 0x2f, 0xaf, 0xbb, 0x4f, 0x36, 0x2b, 0xf5, 0x1b, 0xaf, 0xa0, 0x39, 0x63, - 0xfa, 0xf3, 0x66, 0xe2, 0x35, 0x3b, 0xa7, 0x07, 0xf6, 0xeb, 0x92, 0x04, - 0x02, 0x16, 0x28, 0x3c, 0x75, 0xce, 0x9e, 0xe9, 0x48, 0xce, 0xc5, 0xb3, - 0x1b, 0xca, 0x88, 0xcc, 0x6b, 0x21, 0x76, 0x24, 0x45, 0xdb, 0xde, 0x5f, - 0xaa, 0xf9, 0x97, 0xf1, 0x53, 0xf9, 0xb0, 0x5a, 0x08, 0x43, 0x5d, 0xb4, - 0xf8, 0x65, 0x4f, 0xf3, 0xd5, 0x5c, 0x2b, 0xcd, 0xa6, 0x06, 0xe7, 0xf2, - 0x8e, 0x9f, 0xb1, 0xf5, 0xbc, 0xa4, 0xbb, 0x59, 0x76, 0x50, 0xc5, 0xb8, - 0xf4, 0xf2, 0x64, 0xda, 0x69, 0x01, 0x62, 0x69, 0x97, 0x3a, 0x87, 0x77, - 0x38, 0xa5, 0x76, 0xc0, 0xf3, 0x92, 0x30, 0x77, 0x75, 0x65, 0xa3, 0xc2, - 0xc0, 0x96, 0x9a, 0xc1, 0xc8, 0xe7, 0x1e, 0xa1, 0x37, 0x0f, 0xb0, 0x42, - 0x6a, 0x2a, 0x29, 0x68, 0x9a, 0x8d, 0xdc, 0x49, 0xf6, 0xbb, 0x38, 0xea, - 0x7d, 0x76, 0x71, 0xb8, 0x23, 0xc2, 0x32, 0x0f, 0x2d, 0x0c, 0x57, 0xa9, - 0xd8, 0xaf, 0x89, 0xaa, 0x54, 0xa3, 0x51, 0xa6, 0xad, 0xa3, 0x10, 0xd4, - 0x3a, 0xed, 0x5b, 0x07, 0xbe, 0xc8, 0x20, 0xe2, 0xd8, 0x0d, 0x98, 0x8a, - 0x39, 0xef, 0x21, 0x3c, 0xec, 0xfe, 0x52, 0x49, 0xdc, 0xcc, 0xf9, 0x80, - 0x33, 0xb0, 0x04, 0x12, 0xb9, 0x01, 0x0f, 0xf8, 0x14, 0xc6, 0x3b, 0xd6, - 0xfc, 0x01, 0x00, 0x86, 0xf6, 0xdd, 0x09, 0x40, 0xd8, 0x9d, 0x37, 0xe0, - 0x68, 0x79, 0x88, 0xb3, 0x38, 0x20, 0x55, 0x47, 0xb7, 0x1c, 0xd5, 0xaf, - 0x35, 0x4e, 0x2d, 0x3c, 0x8b, 0x86, 0x31, 0x30, 0xd7, 0x8f, 0x2e, 0x14, - 0xa5, 0x54, 0x0c, 0xe6, 0x3e, 0x93, 0x54, 0x5f, 0xc4, 0x0f, 0x3e, 0xc4, - 0x86, 0x69, 0x70, 0xc3, 0xca, 0x89, 0x14, 0x38, 0x57, 0x71, 0x09, 0xbb, - 0xa8, 0x9c, 0xc5, 0x5c, 0x52, 0xf7, 0xb0, 0x48, 0x8e, 0xf7, 0x41, 0x03, - 0x09, 0xb8, 0x65, 0x98, 0xa4, 0x3b, 0x27, 0x99, 0x7e, 0xc0, 0x93, 0x46, - 0x49, 0x12, 0xe0, 0x6c, 0x9b, 0xfe, 0x96, 0x9a, 0xba, 0x05, 0x79, 0x08, - 0x7d, 0x5d, 0x96, 0x6c, 0xbd, 0x33, 0x83, 0xab, 0x40, 0xff, 0x83, 0xef, - 0xc2, 0x8e, 0xa7, 0x27, 0x04, 0x9b, 0x55, 0xb0, 0x0d, 0x32, 0x6e, 0xc9, - 0xca, 0xe1, 0x6a, 0xfd, 0xf3, 0x8c, 0x28, 0xe8, 0xa4, 0x65, 0x2b, 0xeb, - 0x00, 0xff, 0xed, 0x04, 0x4a, 0x1e, 0x19, 0x31, 0xfd, 0xcc, 0x7b, 0xfe, - 0x10, 0x1f, 0x86, 0xfd, 0x57, 0x28, 0x99, 0xe6, 0xd5, 0x8a, 0xa3, 0xa4, - 0x7e, 0x05, 0x4e, 0xbe, 0x2e, 0x85, 0xd4, 0xd0, 0x39, 0x60, 0x5e, 0xbb, - 0x80, 0x15, 0xf8, 0x2f, 0x9c, 0x25, 0x0f, 0x24, 0x71, 0x4e, 0x6e, 0xe3, - 0x75, 0x16, 0xf9, 0xe7, 0x2e, 0xe3, 0x15, 0x13, 0x57, 0xac, 0xd3, 0xba, - 0xcc, 0x05, 0xbc, 0x91, 0x10, 0xc4, 0x0a, 0x84, 0x7a, 0x6d, 0x8a, 0x1a, - 0x3f, 0x2c, 0xe2, 0x02, 0x65, 0x31, 0xf4, 0x62, 0xd8, 0x5e, 0x9f, 0x50, - 0xed, 0xc1, 0x17, 0xeb, 0xd2, 0x84, 0xdd, 0xf0, 0xfd, 0xee, 0x97, 0xcb, - 0xb3, 0x5a, 0xae, 0x74, 0xc3, 0xb3, 0xc1, 0x65, 0x42, 0xf1, 0xa3, 0xb8, - 0xf4, 0x51, 0x18, 0xe8, 0xea, 0x38, 0xe1, 0x0c, 0x2b, 0x60, 0xed, 0x81, - 0x9a, 0x28, 0x2d, 0x3d, 0x15, 0x3e, 0x7d, 0x76, 0x6c, 0xfa, 0x36, 0x12, - 0x67, 0x45, 0x37, 0xd7, 0xc9, 0xa2, 0xd7, 0x60, 0x05, 0xd8, 0xdd, 0x4d, - 0x07, 0x38, 0x82, 0x6b, 0x69, 0x08, 0xcb, 0x0d, 0xbc, 0x16, 0x6f, 0xd7, - 0x97, 0xe2, 0x23, 0x15, 0xa6, 0x20, 0x8b, 0xc5, 0x1d, 0x83, 0x44, 0x1a, - 0x80, 0x69, 0xd4, 0x4d, 0x6b, 0x70, 0x17, 0x0d, 0x37, 0xe5, 0xe9, 0xaa, - 0xb9, 0xfc, 0xc2, 0x4a, 0x49, 0x30, 0x34, 0xc2, 0x25, 0xe5, 0xf0, 0xd6, - 0x67, 0x81, 0x0c, 0x44, 0x95, 0x50, 0x8f, 0x84, 0x45, 0x34, 0x0a, 0x0f, - 0x8b, 0x16, 0x3e, 0xa7, 0xe9, 0xc7, 0xe7, 0x9b, 0xa2, 0xeb, 0xdc, 0x43, - 0x6d, 0xc8, 0x14, 0x5b, 0xff, 0x79, 0xef, 0xd2, 0xbc, 0x20, 0x01, 0xcb, - 0xf1, 0x0a, 0x69, 0xf8, 0xef, 0x1a, 0x89, 0x6d, 0xfa, 0x56, 0x4d, 0xfc, - 0x07, 0xac, 0x9b, 0x93, 0x44, 0xe3, 0x75, 0x23, 0x2e, 0xdc, 0x85, 0xf0, - 0x60, 0x00, 0x55, 0x9e, 0xd1, 0xea, 0x53, 0x3e, 0xa7, 0x69, 0x17, 0x90, - 0x4d, 0x2f, 0x26, 0x81, 0x30, 0x0c, 0x8a, 0x60, 0x87, 0x85, 0x7c, 0xb8, - 0x42, 0x32, 0xfa, 0x96, 0x8f, 0x86, 0x12, 0xae, 0xe3, 0xad, 0x78, 0x1b, - 0x59, 0x06, 0x9b, 0x5c, 0x0d, 0xce, 0x91, 0x8b, 0x32, 0x38, 0x28, 0x70, - 0x97, 0x0f, 0xa5, 0x46, 0xd1, 0xfe, 0xc7, 0x47, 0x90, 0xca, 0xd2, 0x5e, - 0x3e, 0x76, 0xc4, 0xf0, 0xb8, 0xa1, 0x2d, 0x1e, 0x26, 0x27, 0xb2, 0xa6, - 0x0b, 0xf0, 0x6d, 0xf2, 0x71, 0xc4, 0xd2, 0x60, 0xd5, 0xdd, 0xc2, 0xc4, - 0x44, 0xbc, 0x75, 0x12, 0xba, 0x8c, 0xe0, 0x85, 0x1c, 0xf7, 0x76, 0x0e, - 0x2d, 0xa6, 0x8e, 0x59, 0xd9, 0x39, 0x93, 0xc8, 0xa1, 0x25, 0x69, 0x8d, - 0x0b, 0x6a, 0xdb, 0xed, 0xfb, 0x32, 0x21, 0x3d, 0xc3, 0xff, 0x6d, 0x6a, - 0x8d, 0x92, 0x7e, 0x78, 0xe0, 0xe8, 0xc8, 0xc9, 0xb8, 0x78, 0x23, 0x41, - 0x87, 0x23, 0x67, 0x3b, 0xda, 0x78, 0x6b, 0x68, 0x43, 0x67, 0x68, 0x1c, - 0x15, 0xef, 0x07, 0x88, 0xb4, 0x54, 0xee, 0xae, 0x0b, 0x6f, 0x3a, 0x32, - 0x42, 0xff, 0x08, 0x01, 0x78, 0x8c, 0xc1, 0x66, 0x33, 0xcb, 0x30, 0x11, - 0x27, 0x36, 0xed, 0xcc, 0xec, 0x79, 0x8d, 0xb1, 0x90, 0x1c, 0x85, 0xcc, - 0x7e, 0xfa, 0x65, 0xa9, 0x08, 0xc0, 0x27, 0x07, 0x70, 0x24, 0x61, 0xac, - 0x71, 0xae, 0xc3, 0xd6, 0xdc, 0x7a, 0x75, 0x59, 0x79, 0xb6, 0x33, 0x40, - 0xb0, 0x13, 0x51, 0x42, 0x5e, 0xec, 0xfd, 0xd9, 0x7b, 0xcc, 0xb7, 0xd8, - 0x00, 0x82, 0x42, 0x7d, 0x1c, 0x74, 0x20, 0x00, 0xa5, 0xf2, 0x42, 0xd1, - 0x55, 0x35, 0xc7, 0x8f, 0x14, 0xfc, 0xc5, 0x63, 0x0c, 0x2d, 0x05, 0x64, - 0x67, 0x3a, 0x91, 0x72, 0x82, 0xff, 0x94, 0xe7, 0xf4, 0x9f, 0xd1, 0x1b, - 0x71, 0x60, 0xb2, 0xf8, 0x5d, 0x3c, 0xf9, 0x8e, 0x27, 0x0a, 0x30, 0xb6, - 0x28, 0x4e, 0x8d, 0xc1, 0xbb, 0xf3, 0x16, 0x1d, 0x44, 0x44, 0x37, 0xa9, - 0xa1, 0x34, 0x9b, 0xcc, 0xdb, 0xcb, 0x7b, 0x32, 0xe0, 0xc3, 0xd0, 0x6f, - 0x47, 0x54, 0x97, 0x79, 0xdb, 0x47, 0x45, 0xd6, 0x17, 0xc0, 0x88, 0x43, - 0xb4, 0xc5, 0x1c, 0x93, 0x69, 0x5b, 0x3e, 0x2b, 0x8b, 0x6d, 0xcc, 0x86, - 0x31, 0xd4, 0x56, 0x78, 0x80, 0xa4, 0xdf, 0xa9, 0xeb, 0x04, 0xa7, 0xb4, - 0xad, 0xd2, 0xb2, 0x60, 0x0f, 0xed, 0xa4, 0xed, 0x90, 0xd7, 0x59, 0xbd, - 0xbd, 0xb0, 0x17, 0xd4, 0x86, 0x0b, 0x57, 0x4c, 0x4f, 0x0c, 0x91, 0xe8, - 0x05, 0x26, 0x81, 0xab, 0xc3, 0x35, 0xb5, 0xdf, 0xc9, 0xdb, 0x3c, 0x1e, - 0x9f, 0x31, 0xd1, 0x64, 0xf5, 0x93, 0x3b, 0x47, 0xaf, 0x2d, 0x9a, 0x19, - 0x51, 0x8a, 0xb7, 0x69, 0x66, 0x74, 0x58, 0xfb, 0x2e, 0xcc, 0x2b, 0xdd, - 0x21, 0x34, 0x8d, 0xd4, 0xe7, 0x64, 0x94, 0xcb, 0x43, 0x07, 0x35, 0x85, - 0x40, 0x0f, 0xa6, 0x56, 0x28, 0xe7, 0xd2, 0xfa, 0x75, 0xab, 0xdf, 0xfc, - 0xf3, 0x70, 0x28, 0xae, 0xa3, 0x71, 0x49, 0x53, 0x58, 0x4f, 0x25, 0x96, - 0x00, 0x1d, 0x4c, 0x64, 0xc2, 0x28, 0x92, 0x98, 0x07, 0x01, 0x0c, 0x7f, - 0x99, 0xca, 0xb7, 0xde, 0x9c, 0x17, 0x2a, 0x05, 0x20, 0x34, 0xf4, 0x59, - 0xd6, 0x4f, 0x43, 0x68, 0xdf, 0x48, 0x0b, 0x07, 0x2e, 0x74, 0xa8, 0xdc, - 0xc0, 0x8e, 0x74, 0xf2, 0xec, 0xa0, 0x15, 0x8c, 0x4b, 0x1f, 0x09, 0x5a, - 0x30, 0x3d, 0xf1, 0x7c, 0x5d, 0x0b, 0x25, 0x7f, 0x78, 0x21, 0x42, 0x8a, - 0x3f, 0x80, 0x9e, 0x7e, 0x69, 0x58, 0x3b, 0x9b, 0xb3, 0x38, 0xfa, 0x86, - 0xef, 0x07, 0x10, 0x04, 0xc7, 0x66, 0x09, 0xd3, 0x82, 0x98, 0x74, 0x00, - 0xfc, 0x23, 0xea, 0x08, 0x57, 0x89, 0x92, 0x48, 0x54, 0x67, 0x24, 0xd0, - 0x81, 0xc6, 0x5c, 0x90, 0x9a, 0xe4, 0x93, 0xb3, 0xef, 0x5f, 0xb9, 0x97, - 0xf8, 0xe0, 0x27, 0x1e, 0x0d, 0xe0, 0xf9, 0x84, 0xce, 0x28, 0x70, 0x86, - 0xe6, 0xff, 0x9f, 0xc1, 0x74, 0x5d, 0x6f, 0xef, 0xab, 0x9c, 0x2e, 0xf0, - 0xcc, 0x21, 0x4a, 0x45, 0x07, 0xbd, 0x0e, 0x99, 0xdc, 0x8d, 0xe9, 0xa9, - 0x06, 0x5c, 0x9f, 0xc3, 0x12, 0xd2, 0x6f, 0x75, 0x26, 0x20, 0xfc, 0x94, - 0x0a, 0xd6, 0xff, 0xa9, 0x4b, 0x2c, 0xd2, 0x56, 0xb9, 0x6e, 0xb9, 0x5e, - 0xca, 0xb9, 0x24, 0x89, 0x69, 0x69, 0x81, 0xe6, 0xce, 0x00, 0xdd, 0x3f, - 0xb7, 0x13, 0x82, 0x89, 0xc6, 0x3e, 0xef, 0x3c, 0x2d, 0x9e, 0xf8, 0xb5, - 0x41, 0xdb, 0xa7, 0xa8, 0x66, 0x63, 0x3d, 0xd3, 0x43, 0x44, 0xcd, 0xf8, - 0x0b, 0xd7, 0x4a, 0x24, 0x8e, 0xdc, 0x11, 0x09, 0xe8, 0x75, 0x86, 0xe3, - 0x90, 0x97, 0xc8, 0xc3, 0x91, 0x36, 0x2c, 0x74, 0xbb, 0x4c, 0xb0, 0x31, - 0x4f, 0xbb, 0x8b, 0xe0, 0x1b, 0xd5, 0x30, 0x68, 0xf7, 0x8c, 0x7a, 0xd7, - 0x94, 0x98, 0x14, 0x24, 0xfa, 0x5e, 0x75, 0x9d, 0xe5, 0x7a, 0xda, 0x81, - 0xa9, 0x0a, 0xe9, 0xba, 0xd1, 0x5c, 0x28, 0xa5, 0x5c, 0xd8, 0x28, 0x28, - 0x42, 0xf7, 0x11, 0x22, 0x62, 0x12, 0xe5, 0xe7, 0xfe, 0x7b, 0x6c, 0xc0, - 0xa4, 0xa6, 0x92, 0x65, 0x33, 0xfb, 0x6d, 0x58, 0xb0, 0xfa, 0x9d, 0x37, - 0x0c, 0x1b, 0xc3, 0xcb, 0x86, 0xdc, 0x0a, 0x6f, 0xae, 0x56, 0x14, 0x73, - 0xf6, 0xca, 0x8b, 0x5d, 0x37, 0x0c, 0xa0, 0xd4, 0xf8, 0xe8, 0x3c, 0x34, - 0x8e, 0x10, 0x10, 0x58, 0x24, 0x65, 0x73, 0x90, 0xf0, 0xf5, 0xe5, 0xb0, - 0x6e, 0xa7, 0x1e, 0x19, 0x2d, 0xa1, 0x31, 0xa2, 0xec, 0x7e, 0x48, 0xce, - 0x76, 0x92, 0x96, 0xb4, 0x02, 0x32, 0xc7, 0x87, 0x34, 0x15, 0xb3, 0xdb, - 0xcd, 0xde, 0xc4, 0x3e, 0xe0, 0xce, 0x6b, 0x07, 0xa6, 0xd1, 0x3e, 0x51, - 0xe4, 0x43, 0xaf, 0xe8, 0xbc, 0x44, 0x97, 0x1a, 0x58, 0x4c, 0x7c, 0xdb, - 0xf6, 0x41, 0x9a, 0xc0, 0x95, 0x52, 0xdf, 0xe1, 0xb6, 0xad, 0x4a, 0xef, - 0x94, 0xbc, 0xee, 0xb6, 0x04, 0xe7, 0x6c, 0xb8, 0xcb, 0x11, 0xfe, 0x01, - 0x49, 0x37, 0x6e, 0x6d, 0xfc, 0x1a, 0x8d, 0x9b, 0x9e, 0x2a, 0xbd, 0x4a, - 0xe8, 0xc4, 0xcf, 0x64, 0xc0, 0x49, 0xb2, 0x17, 0x36, 0x2d, 0xff, 0x52, - 0x1c, 0x2c, 0x8d, 0x5f, 0x99, 0x7d, 0x60, 0xdf, 0xfe, 0x57, 0xdb, 0x2d, - 0x1e, 0x42, 0xda, 0x4f, 0xf7, 0x1c, 0xa7, 0xf4, 0x9b, 0xb6, 0xb2, 0xff, - 0xb7, 0x5a, 0x12, 0x9f, 0xd3, 0x29, 0xea, 0x6a, 0x21, 0xf4, 0x8b, 0x4f, - 0x01, 0x66, 0xa0, 0x15, 0xc2, 0x9c, 0xe6, 0x71, 0xf7, 0xc8, 0xbd, 0xce, - 0x81, 0xe5, 0x66, 0xec, 0x4b, 0x72, 0x3d, 0x0e, 0x70, 0x0f, 0x72, 0xa6, - 0x92, 0xe9, 0x38, 0x38, 0xc2, 0xee, 0x10, 0xba, 0x40, 0xd1, 0x3d, 0x7d, - 0x7a, 0x67, 0xb7, 0xa1, 0x62, 0xb9, 0x6b, 0x05, 0xb6, 0x2d, 0xab, 0xf1, - 0x98, 0x6f, 0x0c, 0x3f, 0xa1, 0x7e, 0xed, 0x21, 0xb0, 0x31, 0xf3, 0xad, - 0x90, 0x6e, 0xd3, 0xb9, 0x33, 0xa6, 0xdb, 0x31, 0x97, 0x52, 0x4c, 0xf1, - 0x6b, 0x56, 0x70, 0xf1, 0xcb, 0x1a, 0x71, 0x05, 0x82, 0x65, 0x87, 0x1d, - 0x1e, 0xa6, 0x38, 0x08, 0x02, 0xf0, 0x49, 0x9f, 0x69, 0x84, 0xa3, 0x5b, - 0xa9, 0xb5, 0x47, 0x33, 0x60, 0xe9, 0x7e, 0xf1, 0x95, 0xc6, 0x0e, 0xca, - 0x87, 0x83, 0x96, 0x7c, 0x5b, 0x47, 0x82, 0x73, 0x9d, 0x59, 0x14, 0xa7, - 0x21, 0x33, 0xef, 0xb7, 0x17, 0x8d, 0xab, 0xe8, 0xbb, 0x32, 0xf3, 0x8d, - 0x6f, 0xaf, 0x11, 0xde, 0xd1, 0xac, 0x07, 0xf1, 0x2e, 0x9d, 0x59, 0xf0, - 0x10, 0x51, 0x96, 0xff, 0x97, 0xc1, 0x19, 0xfd, 0xb8, 0x25, 0x71, 0x7c, - 0xa1, 0x4c, 0x87, 0x33, 0xb9, 0x85, 0x69, 0xe6, 0x56, 0x0e, 0xfa, 0x52, - 0xad, 0xa6, 0x57, 0x8f, 0x87, 0x68, 0xd3, 0x46, 0x6b, 0x9e, 0xc7, 0xcd, - 0x51, 0x87, 0x40, 0x26, 0xab, 0xae, 0x80, 0x85, 0x2a, 0xa7, 0x06, 0xd5, - 0xf1, 0xf2, 0x7f, 0x9e, 0xee, 0x81, 0x7e, 0xe9, 0x4b, 0x1e, 0x0b, 0xbb, - 0x4f, 0xb3, 0x39, 0xb0, 0xc7, 0xf7, 0xfc, 0xc1, 0x02, 0xad, 0xb3, 0x3b, - 0x79, 0x19, 0x0f, 0xf1, 0x6b, 0x58, 0xaf, 0xe1, 0xa6, 0xd3, 0x81, 0xb7, - 0xda, 0xe5, 0x4c, 0x80, 0x20, 0xd9, 0x04, 0x44, 0xdd, 0xec, 0xd2, 0xc2, - 0x85, 0x05, 0x11, 0x63, 0x6c, 0xa1, 0x6c, 0x76, 0x12, 0xfe, 0x83, 0xf0, - 0xe5, 0x31, 0x82, 0xf6, 0x92, 0x78, 0x7e, 0xb9, 0x0c, 0x31, 0x44, 0x3d, - 0xc5, 0xa8, 0xf0, 0xb0, 0x08, 0x70, 0x49, 0x48, 0x88, 0xdd, 0x52, 0x11, - 0xdf, 0x03, 0x96, 0x6f, 0xeb, 0x46, 0xe2, 0xc0, 0xd3, 0x6a, 0x16, 0x06, - 0x1b, 0x80, 0x8f, 0x9c, 0x4c, 0x26, 0xc2, 0x74, 0xc4, 0x16, 0xdf, 0x95, - 0x59, 0x89, 0xcb, 0x02, 0xd3, 0xed, 0x8e, 0x00, 0xb1, 0x2f, 0xb7, 0x48, - 0x43, 0x01, 0x52, 0x2e, 0x10, 0xd7, 0x41, 0x6d, 0x5f, 0x3d, 0x7e, 0xd6, - 0x07, 0x78, 0xc9, 0x5a, 0xe1, 0xc4, 0x09, 0x6d, 0xc8, 0x88, 0x38, 0x0a, - 0xc0, 0x2c, 0xc6, 0x39, 0x24, 0xd0, 0x12, 0x01, 0x81, 0x3a, 0x75, 0xb2, - 0x05, 0x9f, 0xae, 0x6a, 0x3c, 0xff, 0x78, 0xaa, 0xdf, 0xdf, 0xe7, 0x3f, - 0x54, 0xf0, 0x6e, 0xf1, 0xb9, 0x03, 0xce, 0xb3, 0xde, 0x25, 0xc6, 0x34, - 0x93, 0xed, 0x54, 0x6d, 0xf0, 0xe2, 0xcb, 0x4f, 0x63, 0xe5, 0xbe, 0x18, - 0xc4, 0x8f, 0x18, 0x91, 0x3b, 0x6e, 0xcc, 0x44, 0x74, 0xb5, 0xf0, 0x6b, - 0xc1, 0x9d, 0xb4, 0xd8, 0xb7, 0x95, 0xc1, 0x2e, 0x99, 0xc0, 0x9b, 0xa0, - 0xb3, 0x24, 0x41, 0x1e, 0x5d, 0x89, 0xde, 0xf5, 0xea, 0x44, 0xfe, 0x11, - 0xd3, 0xb5, 0xc6, 0x13, 0xdb, 0x8a, 0x2f, 0xdc, 0x92, 0x3d, 0xaa, 0x80, - 0x87, 0x62, 0xac, 0x3c, 0x8c, 0xfe, 0xfc, 0x6a, 0xed, 0xb0, 0x0b, 0x75, - 0x95, 0x63, 0x9d, 0x18, 0xcd, 0x1e, 0x8d, 0x90, 0xc1, 0x20, 0xfb, 0x4d, - 0xf5, 0x36, 0x24, 0x67, 0x3c, 0x1d, 0xf3, 0x7c, 0x53, 0xc2, 0xb5, 0x80, - 0x5f, 0x38, 0x25, 0xf7, 0x01, 0x87, 0x7b, 0x5b, 0x6a, 0x14, 0x17, 0x22, - 0x6c, 0x1f, 0x8a, 0x4b, 0x73, 0xed, 0x72, 0x0a, 0x78, 0x22, 0x6b, 0x99, - 0x0f, 0x15, 0xfc, 0xa8, 0x2b, 0x5a, 0x21, 0x44, 0xf4, 0xc5, 0xfd, 0x1d, - 0x5e, 0xbc, 0xba, 0xbb, 0x5c, 0xe1, 0x8e, 0x09, 0xb1, 0xd8, 0x81, 0x2c, - 0x01, 0x32, 0xe3, 0x28, 0xe6, 0x44, 0x8f, 0x09, 0x1f, 0x26, 0x1e, 0x44, - 0xb9, 0xea, 0x6a, 0x0e, 0x18, 0x52, 0x5c, 0x00, 0x91, 0x51, 0x7d, 0xa2, - 0x65, 0xdd, 0x61, 0xc4, 0xfa, 0x09, 0xda, 0x07, 0x31, 0xd4, 0xd0, 0x46, - 0x6c, 0x9e, 0x85, 0x36, 0xc6, 0x37, 0x56, 0x43, 0x58, 0xc8, 0x1c, 0xeb, - 0x8a, 0xfa, 0x1c, 0x4f, 0x03, 0x49, 0x4c, 0x48, 0xf9, 0x10, 0x68, 0x5f, - 0xe6, 0xb3, 0xc8, 0x08, 0x18, 0xbb, 0xe2, 0x1a, 0xda, 0x6b, 0xea, 0xb7, - 0x16, 0x4e, 0xf1, 0xa2, 0xef, 0xa3, 0xfe, 0x20, 0xb5, 0x93, 0x9e, 0x93, - 0x00, 0x7d, 0xc8, 0x04, 0x67, 0xe9, 0x76, 0x22, 0x4a, 0xde, 0xd5, 0xcc, - 0xac, 0x55, 0xbf, 0xa8, 0x0c, 0xb8, 0x1a, 0x48, 0x56, 0x7b, 0x12, 0x46, - 0xea, 0x62, 0x27, 0x9f, 0x88, 0xb9, 0x1e, 0x8f, 0xdd, 0x4f, 0x68, 0x77, - 0x64, 0x73, 0x65, 0x75, 0x76, 0x7a, 0x42, 0x67, 0x55, 0x9a, 0x46, 0xaa, - 0x7c, 0xd5, 0x5b, 0x00, 0x1c, 0x08, 0xce, 0x9e, 0xfe, 0xc6, 0x83, 0x77, - 0x1e, 0x77, 0x0c, 0xb6, 0x18, 0x05, 0x90, 0xf3, 0xe8, 0xc1, 0x16, 0xc7, - 0x43, 0xa7, 0xd7, 0x63, 0x38, 0x7b, 0xce, 0xe4, 0xd7, 0xcc, 0xf9, 0x24, - 0x11, 0xa1, 0xbf, 0xa0, 0x29, 0x40, 0xc8, 0x7f, 0x6b, 0x9c, 0x19, 0x47, - 0x30, 0xe5, 0x82, 0xba, 0x38, 0xd2, 0x34, 0x95, 0xc7, 0xbf, 0x5e, 0x16, - 0x5c, 0xb4, 0xac, 0x3c, 0x2f, 0x4c, 0xa8, 0xf6, 0x89, 0xc0, 0x57, 0xce, - 0xc2, 0xdd, 0xba, 0x7d, 0x94, 0x1b, 0x10, 0x5c, 0xcc, 0x4e, 0xa3, 0xd4, - 0x66, 0x1a, 0x93, 0x7a, 0x31, 0x64, 0x73, 0x40, 0xe6, 0x12, 0xf2, 0x35, - 0x90, 0xcd, 0x1d, 0xb9, 0xf3, 0x9c, 0xd2, 0xb4, 0x87, 0xd5, 0xed, 0xf3, - 0x5b, 0xab, 0x85, 0x4d, 0x77, 0xa5, 0x15, 0xb2, 0x64, 0x4d, 0xbf, 0x46, - 0xdc, 0xe5, 0x80, 0xe1, 0x53, 0xae, 0x40, 0xc9, 0x76, 0x1c, 0x7a, 0xd9, - 0xef, 0x48, 0xf4, 0x62, 0xc3, 0x2e, 0x8a, 0x77, 0xee, 0x9a, 0xb5, 0x1a, - 0x1b, 0xd9, 0x96, 0xaa, 0x43, 0xc5, 0x6c, 0x14, 0x4c, 0x3d, 0xa9, 0xf0, - 0x1d, 0xb2, 0x3d, 0xb8, 0x05, 0xc2, 0x2c, 0x7c, 0x32, 0xe1, 0xc8, 0xd7, - 0x28, 0xe2, 0xae, 0xbe, 0x51, 0xe7, 0x3a, 0xfe, 0xbe, 0x8f, 0xe0, 0x2d, - 0xea, 0x31, 0x41, 0xb7, 0xdc, 0x8e, 0x0c, 0xaf, 0xae, 0x3b, 0x85, 0x24, - 0x8d, 0x41, 0x52, 0x85, 0x9f, 0x6d, 0x57, 0xea, 0x03, 0x1a, 0x33, 0xc9, - 0x22, 0x15, 0x58, 0x06, 0x76, 0xe5, 0x99, 0x57, 0x29, 0xdc, 0x2b, 0xda, - 0x7f, 0xc3, 0xf4, 0x35, 0x20, 0x86, 0xfe, 0x1d, 0xf1, 0x68, 0xf0, 0x1f, - 0x69, 0x23, 0x35, 0x4a, 0x44, 0x5c, 0x61, 0x5a, 0xc3, 0x19, 0x8f, 0x26, - 0x80, 0x0e, 0x35, 0x52, 0xcc, 0xa1, 0xa6, 0x35, 0x8f, 0x8b, 0x13, 0x0e, - 0xad, 0x64, 0x36, 0x09, 0x79, 0x01, 0xef, 0xad, 0xc3, 0xc3, 0x14, 0x4b, - 0xaa, 0x1e, 0xce, 0xa3, 0x7b, 0x68, 0x9c, 0x96, 0xb3, 0xf0, 0xab, 0x36, - 0xf3, 0x33, 0x02, 0xfb, 0x89, 0x47, 0xa2, 0xc6, 0x4a, 0xa0, 0xbb, 0x8e, - 0xe9, 0xb1, 0x58, 0xc5, 0x66, 0x14, 0xa7, 0x06, 0x3c, 0x2a, 0x49, 0x5a, - 0x55, 0xee, 0x66, 0x16, 0xc3, 0x55, 0xfb, 0x19, 0x4f, 0x11, 0x95, 0xf8, - 0x12, 0xa0, 0xf2, 0x02, 0x43, 0x90, 0xa1, 0xd3, 0xb7, 0x36, 0x12, 0xbd, - 0xa1, 0xc1, 0x47, 0x59, 0x35, 0x1e, 0x38, 0xda, 0x40, 0xd5, 0x81, 0x76, - 0x9d, 0x29, 0x61, 0x97, 0xe6, 0x4d, 0x49, 0x47, 0xca, 0x56, 0xfa, 0xd4, - 0xa1, 0xa1, 0x02, 0x69, 0x16, 0x6d, 0xe7, 0x8e, 0xfd, 0x93, 0x2e, 0x51, - 0xfa, 0x69, 0xd0, 0x19, 0x18, 0x24, 0xbf, 0xbd, 0x13, 0xc8, 0xe5, 0x68, - 0xb9, 0xeb, 0x5a, 0x05, 0xba, 0xe2, 0x5d, 0xb0, 0xf6, 0x38, 0x27, 0xe8, - 0x00, 0x83, 0xde, 0xc5, 0xd7, 0x77, 0xb2, 0x8f, 0x49, 0xe2, 0xa7, 0x40, - 0x0c, 0x67, 0xb0, 0xf2, 0x16, 0xc4, 0x34, 0x68, 0x21, 0x02, 0xc1, 0x75, - 0x3e, 0x1e, 0x7d, 0x15, 0x1c, 0xa7, 0x8b, 0x29, 0xbe, 0xe5, 0xc1, 0x3d, - 0x82, 0x6e, 0x0e, 0x2f, 0x1c, 0x55, 0x8e, 0x2a, 0x8a, 0x51, 0x86, 0xcc, - 0x9e, 0x91, 0x49, 0x76, 0xa0, 0x0b, 0x44, 0x95, 0x1b, 0x13, 0x17, 0xf5, - 0xe2, 0x62, 0x8b, 0xbd, 0x9a, 0x73, 0x3a, 0xd2, 0x82, 0x53, 0xe9, 0x67, - 0xdd, 0xdd, 0x2d, 0xc4, 0x13, 0x9f, 0xce, 0x89, 0x94, 0x86, 0xb3, 0x5d, - 0xe5, 0x0a, 0x68, 0x22, 0x7c, 0x08, 0xec, 0xf2, 0x53, 0xd8, 0xa6, 0x2c, - 0xda, 0xb8, 0x42, 0x16, 0x80, 0x45, 0x43, 0x16, 0xdd, 0x62, 0x39, 0x06, - 0x21, 0x53, 0xcb, 0xf8, 0xa0, 0x41, 0x14, 0xce, 0x76, 0x87, 0x14, 0xd0, - 0x40, 0x13, 0xd6, 0x96, 0xde, 0x20, 0xc6, 0xf7, 0x28, 0x88, 0x46, 0x25, - 0x1d, 0x20, 0xa0, 0x0b, 0x67, 0x92, 0xa8, 0xaa, 0x94, 0x77, 0x55, 0xc2, - 0x84, 0x55, 0xb4, 0x03, 0x92, 0xf4, 0x92, 0xc2, 0x85, 0xe6, 0xa4, 0x2b, - 0x58, 0xeb, 0x2f, 0x9c, 0x56, 0x6f, 0x40, 0xe2, 0x4b, 0x5a, 0xfe, 0x1b, - 0x4b, 0x8c, 0x14, 0x76, 0x36, 0xcc, 0x2c, 0xae, 0xf6, 0x7e, 0xec, 0xee, - 0xc8, 0xef, 0xed, 0x38, 0x4e, 0xae, 0x4b, 0x54, 0x22, 0x3d, 0x88, 0x2b, - 0xcc, 0x86, 0x69, 0x76, 0x75, 0xc6, 0x5b, 0xf7, 0xf0, 0x4f, 0xa9, 0x53, - 0x11, 0xe9, 0x27, 0xd2, 0xa4, 0x2f, 0x13, 0x45, 0xc2, 0x2a, 0x91, 0x75, - 0x8a, 0x80, 0x4d, 0xc6, 0x1f, 0x40, 0xa3, 0x02, 0x39, 0xbe, 0x14, 0x9f, - 0x93, 0x69, 0x2f, 0x1b, 0xe9, 0xdb, 0x72, 0x5a, 0xa7, 0x36, 0xaf, 0xd8, - 0x24, 0x00, 0x87, 0x08, 0x79, 0x57, 0x01, 0x45, 0xc9, 0x93, 0x9d, 0x75, - 0xbc, 0xac, 0xa5, 0xb6, 0xd0, 0x2b, 0x2c, 0x58, 0xb2, 0x1d, 0x15, 0x29, - 0x4b, 0x4b, 0x49, 0xd7, 0xa6, 0x12, 0xe9, 0x0e, 0x0a, 0x88, 0x82, 0x24, - 0x29, 0x33, 0x6a, 0x89, 0x18, 0x1b, 0x98, 0x66, 0x31, 0x74, 0x13, 0xaa, - 0xcd, 0x3f, 0x34, 0x4c, 0xa2, 0x60, 0x18, 0xa4, 0xc8, 0x77, 0x52, 0xe0, - 0xf8, 0x66, 0x06, 0x7f, 0x95, 0xbd, 0x09, 0x4d, 0xc1, 0x43, 0x3e, 0x73, - 0xc1, 0x7f, 0x62, 0x90, 0x13, 0x49, 0x63, 0x3a, 0x40, 0xa7, 0x47, 0x57, - 0xf9, 0xcf, 0xde, 0x3e, 0x8c, 0x4c, 0x06, 0xc1, 0xc9, 0x93, 0x5e, 0xd9, - 0x27, 0x06, 0x01, 0xea, 0xcd, 0xc6, 0xd1, 0xb0, 0x2f, 0x08, 0x22, 0xf3, - 0xd3, 0xe8, 0xd3, 0x8b, 0xf0, 0x90, 0xc4, 0x0b, 0xff, 0x34, 0x51, 0xac, - 0xb1, 0xab, 0xbe, 0x0d, 0x58, 0xcc, 0x5a, 0x6e, 0x57, 0xd3, 0xc5, 0x1a, - 0x73, 0x46, 0x34, 0x15, 0x49, 0xf4, 0xa1, 0x85, 0x43, 0xa1, 0x5c, 0xd2, - 0x7c, 0x2c, 0x33, 0x92, 0xe5, 0x27, 0x5a, 0x9b, 0x75, 0x3a, 0x2f, 0x3b, - 0x57, 0x46, 0xe3, 0xdf, 0xd7, 0x0c, 0x5f, 0x49, 0x16, 0x2a, 0x1f, 0xe8, - 0x59, 0x59, 0x78, 0xf5, 0x7a, 0xc1, 0xf6, 0x1c, 0x5a, 0x0d, 0x56, 0x1f, - 0xdc, 0xf2, 0x83, 0x6a, 0xa5, 0x8a, 0x02, 0xc3, 0xe1, 0x46, 0x75, 0xe5, - 0x27, 0x0f, 0x57, 0x14, 0xc7, 0x8c, 0x61, 0x8d, 0xe8, 0xb1, 0xa2, 0xe1, - 0x54, 0x24, 0xc9, 0xb1, 0xb6, 0xbd, 0x13, 0x02, 0x3e, 0xa3, 0xcf, 0xa1, - 0x44, 0xe6, 0xb2, 0x0d, 0x19, 0xab, 0x71, 0x1d, 0x6f, 0x1c, 0xda, 0xe7, - 0x1e, 0x68, 0xdb, 0x7c, 0xee, 0x4c, 0x22, 0x44, 0x98, 0xf8, 0xc5, 0x52, - 0x09, 0x31, 0x3c, 0xea, 0x32, 0x1f, 0x88, 0x46, 0x3b, 0x55, 0x63, 0xe7, - 0xd6, 0x40, 0xef, 0x6e, 0xb4, 0xa0, 0x08, 0x65, 0x57, 0x79, 0xc2, 0x65, - 0xaa, 0x14, 0x2d, 0x95, 0x36, 0xb6, 0xdf, 0x0f, 0x43, 0xc7, 0x27, 0xb3, - 0xca, 0x85, 0x4f, 0x0c, 0x92, 0x48, 0x46, 0x9f, 0xae, 0x78, 0xbf, 0x12, - 0xe9, 0xb8, 0x06, 0xb4, 0x3d, 0x99, 0x41, 0x1a, 0x01, 0xf8, 0xe6, 0xb1, - 0x83, 0x7e, 0xf0, 0xd9, 0x79, 0x5b, 0x0d, 0xc6, 0x3d, 0xb8, 0xa5, 0x83, - 0xeb, 0x86, 0xdd, 0xf9, 0x31, 0x72, 0xec, 0xe3, 0xf5, 0x1b, 0x8d, 0x3e, - 0x40, 0xf4, 0xd7, 0xec, 0x8d, 0x20, 0x85, 0x46, 0xed, 0x80, 0x02, 0xbc, - 0x35, 0xff, 0x62, 0xe7, 0x19, 0xd2, 0x87, 0x97, 0xcd, 0x86, 0xc8, 0x07, - 0x17, 0x7d, 0xa6, 0xe5, 0x25, 0x9d, 0xce, 0x6d, 0x2b, 0x9f, 0xb4, 0xd7, - 0xe8, 0x16, 0x4d, 0x23, 0x8e, 0x20, 0xa6, 0x06, 0x77, 0x8c, 0x5f, 0x61, - 0xc5, 0x8b, 0x76, 0xe7, 0x51, 0x8f, 0x9d, 0x87, 0x97, 0x80, 0x4a, 0xbe, - 0x91, 0x14, 0xea, 0x27, 0x75, 0x55, 0xa6, 0xa4, 0x3a, 0x44, 0x7a, 0xf2, - 0x5b, 0xbf, 0xc0, 0x2e, 0x36, 0x76, 0x54, 0x12, 0xda, 0x6d, 0x93, 0x08, - 0x26, 0x5a, 0x8f, 0x98, 0xd4, 0x6f, 0x2e, 0xb1, 0xc0, 0xfc, 0xbb, 0xc5, - 0x81, 0x6a, 0x47, 0x7b, 0xbb, 0xcd, 0x1f, 0x20, 0x49, 0xb3, 0x79, 0x3d, - 0xbe, 0x6d, 0x0c, 0x48, 0x27, 0x92, 0xc7, 0x41, 0x71, 0x40, 0xe6, 0xf5, - 0x8f, 0x28, 0xb3, 0xb9, 0x17, 0x63, 0x42, 0x39, 0x46, 0x9c, 0xcf, 0x54, - 0x66, 0xd5, 0x33, 0xba, 0xfc, 0x6f, 0x68, 0x83, 0x66, 0x8c, 0x49, 0x09, - 0x58, 0x77, 0x87, 0x2a, 0x8b, 0x1f, 0xc9, 0xb2, 0x88, 0x1c, 0xa2, 0x96, - 0xb2, 0x1b, 0x50, 0x19, 0xc7, 0x45, 0x68, 0xc1, 0xea, 0x88, 0xf3, 0xf7, - 0x04, 0x41, 0x14, 0xcc, 0x8f, 0x3f, 0x25, 0x90, 0xec, 0xca, 0x68, 0xa1, - 0x0b, 0x40, 0xa3, 0xa4, 0x68, 0xe2, 0x53, 0x49, 0x65, 0x5f, 0x0c, 0xab, - 0x68, 0x8c, 0x81, 0x8f, 0x54, 0xe2, 0x0f, 0x1a, 0xeb, 0xc7, 0x36, 0x06, - 0x8e, 0xd3, 0x58, 0xe1, 0xb9, 0x8d, 0xcd, 0xc8, 0x35, 0x36, 0xe5, 0x0b, - 0xcc, 0xb1, 0x5a, 0x60, 0x79, 0x1a, 0x69, 0xf3, 0xa1, 0xc2, 0x3b, 0xd6, - 0x0c, 0xba, 0x85, 0x13, 0x7a, 0x42, 0x75, 0xec, 0x8a, 0x11, 0x38, 0x8b, - 0x25, 0x69, 0x57, 0x09, 0xb1, 0x7b, 0x48, 0x20, 0x40, 0x25, 0x8f, 0xd6, - 0xce, 0x98, 0xf4, 0xa2, 0x03, 0xd2, 0x9e, 0x10, 0x12, 0x79, 0x4c, 0x81, - 0xef, 0x58, 0xd4, 0xed, 0x03, 0x0c, 0xed, 0x75, 0x45, 0xf8, 0x0f, 0x2d, - 0x5d, 0x13, 0x43, 0xc1, 0x85, 0xd1, 0x44, 0x8b, 0x90, 0xbb, 0x9b, 0xbe, - 0xec, 0x46, 0xd5, 0x9e, 0xa8, 0x61, 0x3e, 0xa8, 0xc7, 0x44, 0xd5, 0x54, - 0x5d, 0x33, 0xfd, 0x2d, 0x3e, 0x60, 0xff, 0xe6, 0x4a, 0x67, 0x28, 0x0a, - 0x3b, 0x14, 0xab, 0x84, 0x4b, 0x91, 0xb9, 0x14, 0x53, 0xfc, 0x10, 0x10, - 0x12, 0x2d, 0x17, 0xc9, 0xfc, 0x47, 0x48, 0xc8, 0xe6, 0xc9, 0xe5, 0x00, - 0x61, 0xbc, 0x20, 0x23, 0x5b, 0x31, 0x44, 0x9f, 0xa9, 0x68, 0x4d, 0x52, - 0xc3, 0x94, 0xd4, 0x07, 0x22, 0x2f, 0xf9, 0xc4, 0x18, 0x5f, 0x60, 0x1a, - 0x85, 0x67, 0xca, 0x09, 0x86, 0xab, 0x13, 0xa7, 0x16, 0x78, 0x43, 0xf8, - 0x2b, 0x2f, 0x81, 0xd9, 0x5c, 0x11, 0x92, 0x31, 0x08, 0x49, 0xa8, 0xa3, - 0x05, 0x7d, 0x1f, 0xfe, 0xf7, 0x45, 0x11, 0x0b, 0x02, 0x39, 0xd2, 0x91, - 0x24, 0xff, 0xf5, 0x35, 0xff, 0x2a, 0xa4, 0xa8, 0x53, 0xc1, 0x03, 0x94, - 0xb1, 0x2d, 0x32, 0xaa, 0x18, 0xc0, 0x42, 0x23, 0x12, 0x63, 0xf9, 0x61, - 0xf8, 0x1c, 0x06, 0xa7, 0x2d, 0x8a, 0xc4, 0xa9, 0xdf, 0x41, 0x41, 0xf7, - 0x8c, 0x73, 0x58, 0x63, 0x1b, 0x40, 0x3a, 0x3d, 0x1a, 0xa6, 0x01, 0xbb, - 0x71, 0x03, 0x64, 0xed, 0xa3, 0x86, 0x26, 0xc8, 0xa0, 0x56, 0x86, 0x3c, - 0x53, 0x5e, 0xb6, 0x7b, 0xa6, 0x12, 0xaa, 0x78, 0xe8, 0xb2, 0xb8, 0xb7, - 0x31, 0x22, 0xc7, 0xe0, 0xec, 0xb6, 0x09, 0x24, 0x3f, 0x5f, 0xee, 0x14, - 0x6d, 0x57, 0x2b, 0x16, 0x7b, 0xb3, 0x5e, 0x34, 0x94, 0x10, 0x26, 0xa2, - 0x6b, 0x99, 0x7f, 0xd0, 0xf9, 0x78, 0xcc, 0x06, 0xd5, 0x7b, 0xb6, 0x6c, - 0x49, 0x9e, 0x8a, 0x96, 0xe3, 0x53, 0x5f, 0x47, 0x47, 0xc3, 0xb6, 0xa2, - 0x18, 0x1f, 0xff, 0xe7, 0xbc, 0xc6, 0xa2, 0xdd, 0x68, 0x2c, 0x1a, 0x9a, - 0x80, 0xb8, 0xd0, 0xa4, 0x2a, 0x20, 0xf4, 0x2c, 0x11, 0xe7, 0xfa, 0x20, - 0x15, 0xe0, 0xd7, 0xa6, 0x5a, 0xf9, 0x00, 0x9f, 0x03, 0x31, 0x43, 0xb5, - 0x4b, 0x92, 0x29, 0xf2, 0x93, 0xf6, 0x67, 0x27, 0xcf, 0xde, 0xd2, 0x32, - 0x55, 0x09, 0x0a, 0xd5, 0x3d, 0x35, 0x33, 0x7b, 0xd9, 0xf9, 0x03, 0x9d, - 0xf5, 0xd4, 0x50, 0x72, 0x79, 0xdf, 0x59, 0x5a, 0xfd, 0x83, 0x5a, 0xa4, - 0xe6, 0x90, 0xc5, 0xfd, 0x54, 0x4a, 0x6b, 0xbb, 0xdf, 0x1b, 0x55, 0xda, - 0xe5, 0xd2, 0xac, 0x1f, 0xa5, 0xe6, 0xe5, 0x52, 0x79, 0xdd, 0x69, 0x2d, - 0xc9, 0x42, 0x64, 0x4a, 0xa1, 0xbf, 0xc2, 0x54, 0x18, 0x3c, 0x48, 0x3f, - 0x5e, 0xd3, 0x4d, 0xc3, 0x78, 0xb1, 0xec, 0xc1, 0xc3, 0x32, 0x58, 0x94, - 0x14, 0x9f, 0x4b, 0xba, 0xe2, 0x5a, 0xfe, 0xb8, 0x29, 0x23, 0xfe, 0xea, - 0x80, 0x66, 0x42, 0x83, 0xd6, 0x3e, 0x70, 0xa6, 0xf6, 0x56, 0xa2, 0x03, - 0x0d, 0x2a, 0x25, 0xa3, 0x42, 0xdc, 0x88, 0x6d, 0x48, 0x89, 0x9e, 0x42, - 0xfd, 0xb7, 0x0e, 0x81, 0x9d, 0xd0, 0x13, 0x95, 0x8a, 0x60, 0xab, 0x43, - 0xc9, 0x93, 0xa5, 0xf4, 0x9b, 0xb6, 0xb3, 0x3a, 0xdf, 0xf8, 0x57, 0x9e, - 0x0a, 0xe5, 0x97, 0x69, 0x7c, 0x05, 0x6d, 0xfc, 0xc2, 0x19, 0x04, 0x79, - 0x1e, 0xc0, 0xb7, 0x8d, 0x15, 0x90, 0xda, 0xa4, 0xb0, 0x46, 0xda, 0xf2, - 0x96, 0xf6, 0x5a, 0xaf, 0x46, 0xbb, 0x64, 0x9c, 0xb8, 0xb2, 0x8f, 0x1b, - 0x85, 0x54, 0xc2, 0x3a, 0xc6, 0x71, 0xe9, 0xb8, 0x59, 0x0f, 0xe9, 0x62, - 0x1b, 0xc2, 0xb3, 0x64, 0x12, 0x2a, 0xea, 0x91, 0x49, 0x8b, 0x71, 0xdf, - 0x74, 0xed, 0x1e, 0x05, 0x22, 0xb3, 0x6d, 0xa3, 0x16, 0xf4, 0x27, 0xae, - 0x3b, 0x89, 0x97, 0x60, 0x2c, 0x4b, 0x2a, 0xb9, 0x39, 0x3f, 0xe7, 0x9e, - 0xad, 0xf7, 0x44, 0xd2, 0x73, 0x5c, 0x9a, 0xf0, 0xed, 0x3e, 0x77, 0xe1, - 0x42, 0x34, 0xe3, 0x6c, 0x4e, 0x14, 0x4c, 0x41, 0x4e, 0x84, 0x81, 0x6e, - 0x2d, 0xdb, 0x6e, 0x79, 0x29, 0x80, 0x82, 0x75, 0x17, 0x97, 0x6b, 0xbf, - 0xa8, 0x22, 0xd9, 0xb3, 0xf3, 0x71, 0xe5, 0x01, 0xc7, 0x8f, 0x68, 0x4a, - 0xe8, 0x4a, 0xca, 0xc7, 0x9b, 0x72, 0xfd, 0xa3, 0x99, 0x10, 0xc3, 0x3f, - 0xbd, 0x21, 0x39, 0x8b, 0x1e, 0x08, 0x26, 0x21, 0x59, 0xdb, 0x45, 0x61, - 0xaa, 0x00, 0x3a, 0xe5, 0xaa, 0x66, 0x95, 0x2e, 0xb9, 0xec, 0xdd, 0x46, - 0x97, 0x7e, 0x55, 0x71, 0x28, 0xe0, 0x0d, 0x7f, 0xd0, 0xc4, 0xb2, 0x20, - 0x14, 0x66, 0x8e, 0x9c, 0xf7, 0x67, 0x95, 0x56, 0xca, 0xf6, 0xa6, 0x71, - 0x91, 0xae, 0x22, 0xcb, 0x28, 0x58, 0xd5, 0x06, 0x64, 0xeb, 0x6a, 0xb0, - 0x87, 0xc3, 0xe9, 0x68, 0xa6, 0x21, 0xec, 0x51, 0x2d, 0x9f, 0x7f, 0xde, - 0x11, 0x8a, 0x55, 0x72, 0xd6, 0x5e, 0x5a, 0xbd, 0xc7, 0x78, 0x1f, 0x3e, - 0xd6, 0x8a, 0xbe, 0x4d, 0xaf, 0x6b, 0x96, 0x2d, 0x90, 0xba, 0xc7, 0x8e, - 0xd5, 0x90, 0x30, 0x3d, 0x61, 0x41, 0xc8, 0x2b, 0x3b, 0x0e, 0xf9, 0xed, - 0xcf, 0x67, 0x6b, 0x1f, 0x7a, 0x2d, 0x6e, 0x1a, 0xf5, 0x7b, 0x45, 0x7e, - 0x96, 0x50, 0xff, 0x4f, 0x9e, 0xe0, 0xa0, 0xf7, 0xc8, 0xd1, 0x0c, 0x34, - 0x1e, 0x6e, 0xdc, 0x4c, 0x3f, 0xf7, 0x22, 0xaa, 0xca, 0xd3, 0x69, 0x98, - 0x69, 0x51, 0x65, 0xab, 0x48, 0x76, 0x17, 0xa8, 0x6c, 0xe6, 0x2c, 0xa1, - 0xc8, 0xa7, 0xd0, 0x1f, 0xf3, 0xbd, 0x93, 0x4d, 0x89, 0x06, 0xdb, 0x33, - 0xca, 0xce, 0x4f, 0x65, 0x3b, 0xed, 0xeb, 0x31, 0xb5, 0xd3, 0x9f, 0x17, - 0xf8, 0x9e, 0xe9, 0x1f, 0x19, 0x62, 0xab, 0x2e, 0x82, 0xab, 0xf2, 0x84, - 0xe0, 0x5e, 0xbb, 0xde, 0x41, 0xd0, 0x7c, 0x10, 0x1d, 0xab, 0x86, 0xdb, - 0x4a, 0xbc, 0xdb, 0xce, 0x75, 0x39, 0x27, 0x60, 0x81, 0xfd, 0xe9, 0x4e, - 0xee, 0x04, 0x40, 0x6c, 0x9b, 0x25, 0x6a, 0x14, 0x1f, 0x16, 0xd8, 0x2b, - 0x86, 0x4d, 0x24, 0x63, 0xd8, 0x13, 0xfd, 0xa5, 0xf8, 0xa4, 0xb2, 0x0d, - 0x28, 0xa4, 0x0c, 0x91, 0x52, 0xd3, 0xe1, 0xbb, 0x35, 0xc4, 0x76, 0x00, - 0xe3, 0xd5, 0x00, 0x7e, 0xe1, 0x26, 0xe2, 0x79, 0xd9, 0xc3, 0x39, 0xf4, - 0xf2, 0xb9, 0x9f, 0xaf, 0x12, 0x0c, 0x73, 0x3f, 0xd1, 0x2c, 0x1f, 0x91, - 0xc9, 0x18, 0xe8, 0xe8, 0xb0, 0x03, 0xcc, 0xd5, 0x43, 0x17, 0xf2, 0x40, - 0xe9, 0x50, 0x50, 0x1c, 0x44, 0xa0, 0xe0, 0xc3, 0xc9, 0xec, 0xf9, 0x2d, - 0xc6, 0x04, 0xaf, 0x57, 0xf3, 0xd9, 0x69, 0xb7, 0x73, 0xc6, 0xd3, 0x23, - 0x94, 0x09, 0x30, 0x30, 0x5f, 0x4c, 0x95, 0x36, 0x52, 0xe3, 0x09, 0xf0, - 0x55, 0x00, 0xdd, 0xda, 0xa9, 0x91, 0x79, 0xff, 0xb1, 0xf6, 0x94, 0x62, - 0x32, 0x4e, 0x3e, 0xa8, 0xa8, 0x3f, 0x4e, 0x6e, 0x0e, 0xed, 0xdb, 0xf6, - 0xa9, 0x0e, 0x77, 0xf1, 0x94, 0x7c, 0x05, 0x32, 0xf8, 0x65, 0xd6, 0x51, - 0xf9, 0xe1, 0x0b, 0x28, 0xfb, 0x16, 0xe7, 0xd2, 0x8b, 0x38, 0x8e, 0xab, - 0x64, 0xd2, 0x47, 0x85, 0x10, 0x30, 0x33, 0x96, 0x1f, 0x68, 0x46, 0x10, - 0x0c, 0xe5, 0x0d, 0xf4, 0x3f, 0x31, 0x86, 0xbb, 0x7f, 0x88, 0x8e, 0x3b, - 0xe3, 0x81, 0x5a, 0x7b, 0xfd, 0x84, 0x00, 0x01, 0xa4, 0xba, 0x2f, 0x9a, - 0x7c, 0xfb, 0x3d, 0x1b, 0xd1, 0xf1, 0xe9, 0xfd, 0x85, 0x20, 0x5d, 0xb0, - 0xf7, 0x51, 0xab, 0x3c, 0xd2, 0x8e, 0xe6, 0x7b, 0x98, 0x32, 0x21, 0x8c, - 0x43, 0x23, 0x89, 0xa9, 0xfa, 0x1b, 0xfe, 0xe4, 0x4f, 0x9e, 0xac, 0x1d, - 0x2d, 0x07, 0x0f, 0x30, 0xb7, 0xbe, 0x99, 0x4c, 0xe4, 0xf9, 0x17, 0x66, - 0x24, 0xef, 0xa2, 0x35, 0x03, 0x5e, 0x6b, 0x1c, 0xa8, 0xa4, 0x89, 0x98, - 0x48, 0x28, 0xe5, 0x2d, 0x17, 0x50, 0xbd, 0x14, 0xc3, 0x21, 0xd4, 0xc8, - 0x31, 0xb9, 0xed, 0x9d, 0x07, 0x9a, 0xcb, 0x5c, 0xba, 0x53, 0xa4, 0x90, - 0xf1, 0xe9, 0x13, 0x87, 0x7b, 0x71, 0x11, 0x80, 0x10, 0x7b, 0x76, 0xe6, - 0x97, 0xb4, 0x62, 0x3a, 0x62, 0x3e, 0x88, 0xde, 0x19, 0x2a, 0xca, 0x7f, - 0x3e, 0x92, 0x4e, 0xf6, 0xfd, 0x5d, 0xe1, 0x82, 0x31, 0x52, 0x6e, 0x0b, - 0x94, 0xa5, 0x49, 0xa9, 0x3a, 0x1a, 0x0a, 0x26, 0x1d, 0x3f, 0x50, 0x84, - 0x79, 0x51, 0xb6, 0xcd, 0x1a, 0xa1, 0xf1, 0x40, 0x42, 0x6d, 0x78, 0x5a, - 0xb2, 0x50, 0x5f, 0x71, 0x4e, 0x77, 0x46, 0x00, 0x27, 0x3b, 0x50, 0x95, - 0xcf, 0x53, 0x37, 0x68, 0x54, 0xb4, 0x34, 0x5b, 0xce, 0x7f, 0x8c, 0x9d, - 0x82, 0x7d, 0xfb, 0x62, 0xa9, 0x10, 0xfc, 0xe7, 0x6f, 0x96, 0x21, 0x83, - 0x09, 0x62, 0xae, 0xcf, 0x8b, 0xc8, 0xb1, 0x41, 0x00, 0xf0, 0x1a, 0xdd, - 0x3e, 0x1a, 0xde, 0xa5, 0x00, 0x84, 0x74, 0xe6, 0x92, 0x61, 0xb3, 0x4e, - 0xfd, 0x3b, 0x68, 0xf0, 0x15, 0x40, 0x4d, 0xaa, 0xa0, 0x4e, 0x75, 0x39, - 0x93, 0x3e, 0xa7, 0x35, 0x40, 0xb8, 0xc9, 0x7b, 0x87, 0xef, 0xaf, 0x6d, - 0xd0, 0xc0, 0x89, 0x57, 0x8b, 0x71, 0x1e, 0x67, 0x4e, 0x57, 0xbf, 0xd2, - 0x1a, 0x08, 0x48, 0xe4, 0xc9, 0xb5, 0x5d, 0x93, 0x09, 0x44, 0x3d, 0xb0, - 0xbb, 0xe4, 0x7a, 0x50, 0x4f, 0x1f, 0x41, 0x34, 0x1e, 0xab, 0x60, 0x2e, - 0xcc, 0x18, 0xd1, 0x27, 0xc5, 0x9e, 0x9b, 0x8b, 0xee, 0xde, 0x31, 0xde, - 0x3d, 0xf7, 0x22, 0x71, 0x99, 0x6e, 0x57, 0x58, 0xe8, 0xb6, 0x87, 0x9b, - 0x20, 0xd9, 0x5d, 0x20, 0x1b, 0x1c, 0xdb, 0x9e, 0x27, 0xe1, 0x5c, 0xc1, - 0x32, 0x33, 0xab, 0x04, 0x3c, 0x91, 0xbb, 0xa2, 0x6d, 0xa7, 0xdb, 0x59, - 0x0c, 0x88, 0x4b, 0x36, 0x28, 0xdb, 0x05, 0x3e, 0xc3, 0x8d, 0x60, 0x8a, - 0xd6, 0x13, 0x15, 0xe4, 0x9f, 0x1d, 0x89, 0x95, 0x0a, 0xd6, 0xbf, 0xe0, - 0xe5, 0x94, 0x29, 0x80, 0x24, 0x78, 0x82, 0x3b, 0x14, 0xb9, 0x9f, 0x8b, - 0xb4, 0x6f, 0x91, 0x98, 0xc5, 0x82, 0xe2, 0x82, 0xf7, 0x57, 0xec, 0x0f, - 0x09, 0x36, 0x2a, 0x89, 0x9d, 0x38, 0xb7, 0x86, 0x04, 0x5c, 0xb5, 0xf6, - 0xc8, 0x09, 0xd4, 0xe2, 0x07, 0x0e, 0xcc, 0xae, 0x8c, 0x04, 0x03, 0xbe, - 0x07, 0x4d, 0xfe, 0xea, 0xe6, 0x8c, 0x5e, 0x9b, 0xc4, 0xcd, 0x73, 0x8b, - 0xc6, 0xcc, 0x7e, 0xe0, 0x28, 0x03, 0x4c, 0x44, 0x74, 0x22, 0x88, 0x05, - 0x79, 0x29, 0x58, 0x61, 0x7e, 0x21, 0x03, 0x71, 0xe4, 0x5e, 0x9e, 0x7b, - 0x6d, 0x80, 0xaa, 0xd6, 0xed, 0x7c, 0xd9, 0x14, 0xe1, 0xd6, 0x9b, 0xbd, - 0xb7, 0xb2, 0xed, 0x2f, 0xea, 0x93, 0x13, 0x78, 0xef, 0x49, 0xdf, 0xb6, - 0x15, 0xa3, 0x07, 0xa2, 0x4c, 0xbf, 0x4a, 0xd4, 0xe1, 0x42, 0x92, 0x7a, - 0xa5, 0xe5, 0x58, 0x73, 0xea, 0x59, 0xef, 0x1a, 0xab, 0xfd, 0xce, 0x5d, - 0xf5, 0x48, 0xf0, 0x3b, 0x6a, 0x17, 0xae, 0x6b, 0x59, 0x90, 0x7b, 0xd0, - 0xee, 0x1c, 0x37, 0x72, 0xc2, 0x61, 0x2f, 0x99, 0xd0, 0xff, 0x32, 0xad, - 0x33, 0xdd, 0x97, 0xe9, 0x8d, 0x51, 0x7a, 0xb9, 0x29, 0xa1, 0xda, 0x3e, - 0xba, 0xf4, 0x4f, 0x97, 0xd8, 0x87, 0x8e, 0xc2, 0x95, 0xeb, 0x46, 0x7a, - 0x30, 0xc4, 0x23, 0x19, 0x5d, 0x99, 0x32, 0x08, 0x30, 0x3c, 0x01, 0xbd, - 0x68, 0x29, 0x8f, 0x92, 0xc7, 0x1f, 0x2a, 0x80, 0x40, 0x17, 0x69, 0x7a, - 0xb1, 0xca, 0x96, 0xac, 0x60, 0x66, 0x7f, 0x06, 0x93, 0x58, 0x41, 0xc8, - 0x0e, 0x83, 0x2f, 0x27, 0x6a, 0x80, 0x30, 0xe9, 0x73, 0x23, 0x0a, 0x8c, - 0xa6, 0x85, 0x95, 0x51, 0xa8, 0x1c, 0xdd, 0x6d, 0x72, 0xaa, 0x43, 0x75, - 0xb8, 0xb4, 0xba, 0x2c, 0x86, 0xa1, 0x81, 0xf1, 0x21, 0xe1, 0xe0, 0xd5, - 0xf9, 0x92, 0x01, 0xae, 0x08, 0x4c, 0xc4, 0x70, 0xce, 0x28, 0xef, 0x3b, - 0x07, 0x7c, 0x8c, 0x8a, 0x6e, 0x6c, 0x20, 0xe1, 0x22, 0x96, 0xb5, 0x59, - 0x6a, 0xa8, 0x11, 0xbc, 0x6d, 0x99, 0x53, 0xd0, 0x71, 0x6c, 0x27, 0x2d, - 0x36, 0x9d, 0x5b, 0xa3, 0x33, 0x7e, 0xae, 0xa0, 0xb0, 0x37, 0xbe, 0x6c, - 0x2a, 0x94, 0x05, 0x61, 0xf3, 0xb0, 0xf0, 0x36, 0x9e, 0x9f, 0x77, 0x16, - 0xd4, 0xc2, 0xca, 0x78, 0x0a, 0x62, 0xeb, 0x12, 0x78, 0xc8, 0x92, 0x86, - 0xfa, 0x93, 0xb7, 0x81, 0x10, 0xcc, 0xee, 0x89, 0xed, 0xbc, 0x44, 0xa7, - 0x81, 0x1c, 0x49, 0x95, 0x91, 0x03, 0xaa, 0xaa, 0x44, 0x93, 0x5e, 0xf4, - 0x62, 0x97, 0x7d, 0xae, 0x50, 0xa4, 0x3a, 0x51, 0x65, 0x9e, 0x05, 0x4f, - 0xb7, 0x9c, 0x90, 0x67, 0xc3, 0x1b, 0x5b, 0xaa, 0x33, 0x44, 0x12, 0xc3, - 0x3d, 0xc5, 0x1e, 0x54, 0x96, 0x39, 0xe6, 0xa4, 0x7c, 0xb8, 0xa6, 0x81, - 0x13, 0x4a, 0xac, 0x13, 0x23, 0x8f, 0x8b, 0x67, 0xde, 0xdd, 0xd9, 0xee, - 0x68, 0xd3, 0x94, 0x11, 0xf9, 0x9d, 0x2f, 0xca, 0xf9, 0xb9, 0x9e, 0xec, - 0x35, 0xf4, 0xae, 0x5d, 0xe7, 0xe2, 0x81, 0x9f, 0x89, 0xa5, 0x0e, 0x79, - 0xc1, 0x5c, 0x6a, 0x63, 0x84, 0xa1, 0xaf, 0xa8, 0x21, 0x48, 0xbf, 0xed, - 0xaf, 0x00, 0x4f, 0xa3, 0x66, 0x87, 0xde, 0xd9, 0x14, 0x3b, 0x15, 0xc0, - 0x8c, 0xfb, 0x20, 0xde, 0x53, 0xbc, 0x3e, 0xa8, 0xe3, 0x36, 0x93, 0xe3, - 0xc0, 0x41, 0x8a, 0xd3, 0x3d, 0x29, 0xb6, 0xf7, 0xd1, 0x92, 0xe1, 0xf6, - 0xe1, 0x38, 0xf3, 0xca, 0x6c, 0xfb, 0x74, 0x2c, 0x10, 0x49, 0x5f, 0x88, - 0x95, 0xe1, 0x12, 0xe3, 0x7f, 0x11, 0x22, 0xdd, 0x92, 0x86, 0x15, 0xfb, - 0xe3, 0x2d, 0xe5, 0x1d, 0x3e, 0x33, 0xa3, 0xab, 0x6f, 0x9e, 0xf4, 0x27, - 0xe0, 0x9f, 0xc1, 0xd4, 0x4a, 0xd3, 0x6b, 0x03, 0x16, 0x79, 0x81, 0x63, - 0xe8, 0xdf, 0x54, 0x89, 0xce, 0x06, 0x38, 0xd4, 0x30, 0xa9, 0xa1, 0x1b, - 0xbf, 0x8a, 0xab, 0xaa, 0x26, 0xb2, 0x85, 0xcc, 0x08, 0x0b, 0x08, 0x30, - 0xcf, 0x77, 0x8d, 0x17, 0x00, 0x40, 0x41, 0xcf, 0xe7, 0x7f, 0x4d, 0x84, - 0xb0, 0x7d, 0x8e, 0xdf, 0x2c, 0xae, 0xcc, 0xa0, 0x1f, 0x7b, 0xba, 0xd0, - 0xab, 0x68, 0xbe, 0x55, 0xc6, 0xec, 0x28, 0xc6, 0x08, 0x33, 0x37, 0x25, - 0x04, 0x71, 0x6d, 0x6a, 0xc5, 0x8b, 0x6e, 0xca, 0xad, 0x2d, 0xb1, 0xc3, - 0x25, 0x6e, 0xad, 0x16, 0x1a, 0x2b, 0xe4, 0x61, 0x06, 0x89, 0xe0, 0xf0, - 0xfc, 0xa4, 0x48, 0x8a, 0xdd, 0x6f, 0x43, 0x18, 0x63, 0x8f, 0xda, 0x88, - 0xc2, 0x09, 0x93, 0x63, 0xfb, 0xed, 0xb7, 0xa9, 0xdc, 0x7a, 0xa7, 0xab, - 0x1f, 0x9e, 0x36, 0xac, 0x9f, 0xd3, 0xaf, 0x31, 0x7e, 0x33, 0x5a, 0xde, - 0xf7, 0x34, 0xde, 0xce, 0x52, 0x8b, 0xb1, 0x45, 0x82, 0x75, 0x12, 0x4c, - 0xe4, 0x00, 0x1e, 0xf7, 0xca, 0x0d, 0x3b, 0xa6, 0x10, 0x13, 0x3e, 0x78, - 0x41, 0x1a, 0xc3, 0xdb, 0x33, 0x26, 0x69, 0xfc, 0x04, 0xbd, 0xc8, 0xaa, - 0x8f, 0x50, 0x55, 0x7e, 0xb2, 0xd2, 0x27, 0xbb, 0xb4, 0x2d, 0x3d, 0x15, - 0xf1, 0x1a, 0x83, 0x75, 0x5c, 0x8d, 0xc9, 0x61, 0xa4, 0xde, 0xd0, 0x46, - 0x5d, 0x53, 0xa1, 0xf9, 0x0c, 0xeb, 0xc1, 0x5f, 0xaf, 0x40, 0x5e, 0xb2, - 0x77, 0xbe, 0x21, 0x05, 0x80, 0x24, 0x94, 0x20, 0xf4, 0x59, 0x52, 0xbb, - 0x0f, 0x84, 0xb4, 0xff, 0xb1, 0x45, 0x2a, 0x5a, 0x77, 0xe0, 0x93, 0x37, - 0x37, 0xf5, 0x83, 0x5b, 0xfc, 0x3d, 0xd2, 0x97, 0xb5, 0xb3, 0xc7, 0xcd, - 0xb8, 0x1a, 0xae, 0x35, 0x5a, 0x20, 0x14, 0xf7, 0x7d, 0x7c, 0x12, 0x6b, - 0x84, 0xb7, 0x17, 0x65, 0x0d, 0xbf, 0x2a, 0xc0, 0x8d, 0x71, 0x10, 0x3b, - 0x7f, 0xd4, 0x20, 0x55, 0xe6, 0x49, 0xb5, 0x77, 0xe5, 0x28, 0x39, 0xf4, - 0x0f, 0xc0, 0x01, 0xd9, 0x30, 0xee, 0x9b, 0x22, 0xd6, 0x03, 0x82, 0x60, - 0x57, 0x9a, 0xd3, 0xe9, 0x99, 0x8c, 0x85, 0xd7, 0xa5, 0x2f, 0xac, 0xe8, - 0xa6, 0x1b, 0xd9, 0x74, 0x2e, 0x4a, 0x42, 0xd2, 0x11, 0x5b, 0x11, 0xf2, - 0x65, 0xef, 0xbd, 0xb2, 0x8e, 0xa3, 0xb4, 0x7f, 0x67, 0x53, 0xa3, 0x62, - 0x5c, 0x3c, 0xde, 0x4b, 0x73, 0x36, 0x68, 0xe3, 0x70, 0x24, 0x09, 0x5a, - 0xa1, 0xc8, 0x7b, 0x65, 0x2a, 0xae, 0x78, 0xd4, 0xcc, 0x0d, 0x64, 0xcb, - 0x45, 0x30, 0x43, 0x66, 0x9f, 0xb7, 0x4f, 0x5f, 0x28, 0x69, 0x2f, 0xef, - 0x0f, 0xa1, 0x9b, 0x82, 0x98, 0x7d, 0x12, 0xa5, 0x49, 0x32, 0xef, 0x89, - 0xf5, 0xc2, 0x87, 0xce, 0xd3, 0x5c, 0x44, 0x7e, 0x7f, 0xa6, 0x99, 0xd4, - 0x2b, 0xe1, 0x7a, 0x86, 0x0b, 0x54, 0x26, 0xb9, 0x5e, 0x4a, 0x46, 0x38, - 0xbf, 0x23, 0x12, 0x1f, 0x3f, 0x28, 0xfe, 0x8f, 0x91, 0x3f, 0xcd, 0xfa, - 0xe3, 0x4f, 0xc0, 0xef, 0xc0, 0xc2, 0x94, 0x42, 0x5f, 0xd1, 0x34, 0x2e, - 0xa8, 0xd0, 0x46, 0xc1, 0x6a, 0x32, 0x5b, 0xf9, 0x4b, 0xb9, 0x34, 0x86, - 0x2e, 0xaf, 0x30, 0x38, 0x43, 0xd3, 0xe4, 0xbb, 0xb0, 0x89, 0x20, 0x5c, - 0xca, 0x66, 0x91, 0xb6, 0xd7, 0x9a, 0xdd, 0xc7, 0x80, 0x1c, 0x4c, 0xc9, - 0x59, 0x6f, 0xcf, 0x91, 0x0b, 0x0a, 0x15, 0x68, 0x19, 0xd0, 0x6c, 0x44, - 0xed, 0x97, 0xb5, 0x76, 0x93, 0xb7, 0xe0, 0x52, 0x13, 0xfd, 0x7d, 0x77, - 0xdd, 0xad, 0x0b, 0x27, 0xa5, 0xad, 0x0f, 0x77, 0x4a, 0x88, 0xae, 0xfb, - 0xda, 0xa5, 0x8a, 0xb1, 0x44, 0x0c, 0x02, 0x13, 0x18, 0x74, 0x3a, 0x97, - 0x34, 0xb0, 0x66, 0xd2, 0x2b, 0xf4, 0x48, 0xe2, 0x5b, 0xac, 0x82, 0xe5, - 0xb9, 0xea, 0x7a, 0x7b, 0x7b, 0x28, 0x17, 0xbc, 0xd5, 0x6c, 0x8c, 0x0b, - 0x42, 0x2d, 0xbd, 0xa1, 0x5d, 0x52, 0x99, 0x91, 0xf4, 0xb7, 0xd1, 0x8e, - 0x79, 0x2b, 0xa8, 0xd1, 0x38, 0xa1, 0x4e, 0xa6, 0x39, 0x4a, 0xad, 0xff, - 0x57, 0x0b, 0x6a, 0x1b, 0x3f, 0xf7, 0x04, 0xb7, 0x01, 0x68, 0x9e, 0x69, - 0xf9, 0x19, 0x01, 0x55, 0x20, 0x53, 0x01, 0x8c, 0xcf, 0x93, 0x43, 0xc4, - 0x93, 0xb6, 0x21, 0xc2, 0xb1, 0x35, 0x6b, 0x89, 0x3b, 0xf7, 0x36, 0x81, - 0xfd, 0x9b, 0xa6, 0xf0, 0x84, 0x1e, 0x33, 0xe5, 0xce, 0x66, 0xe9, 0xb9, - 0xc8, 0xc7, 0x77, 0x4a, 0x48, 0x83, 0x4e, 0xee, 0x30, 0x73, 0xed, 0x1f, - 0xcb, 0xdb, 0x15, 0x4d, 0xbc, 0xdf, 0xec, 0x12, 0xa0, 0xf0, 0x9b, 0x81, - 0x55, 0x99, 0x19, 0x2a, 0x77, 0x90, 0xee, 0x79, 0xc1, 0x34, 0x90, 0xfd, - 0x94, 0x30, 0xd3, 0x5d, 0xe5, 0xcf, 0xc9, 0x1c, 0x47, 0xbf, 0x0e, 0xe9, - 0x48, 0x6c, 0x20, 0x20, 0xef, 0xc3, 0x1b, 0x63, 0xa2, 0xed, 0xfa, 0x91, - 0x0d, 0x63, 0x43, 0xff, 0xb9, 0x18, 0xbd, 0xd7, 0x80, 0xcd, 0x74, 0x55, - 0x32, 0x58, 0x90, 0x01, 0x6b, 0x6a, 0x84, 0xe6, 0x11, 0xc6, 0x69, 0x0f, - 0x5e, 0x50, 0x2c, 0x16, 0x28, 0xdb, 0x4f, 0x7c, 0xa4, 0x0f, 0x07, 0x2a, - 0x42, 0x22, 0x49, 0x9d, 0x2c, 0x53, 0x83, 0x9d, 0x08, 0xe3, 0xb5, 0x8e, - 0x18, 0x94, 0xbd, 0x38, 0x48, 0x30, 0x00, 0x8c, 0x66, 0x98, 0xfa, 0x1e, - 0xfc, 0x59, 0xfc, 0x24, 0x90, 0xf3, 0x5a, 0x32, 0xca, 0x20, 0x73, 0xd6, - 0xc4, 0x63, 0xee, 0x65, 0x01, 0x9f, 0x5c, 0x1d, 0x7d, 0x5d, 0xba, 0xda, - 0x22, 0x95, 0x2a, 0x4b, 0xdd, 0xe4, 0xc9, 0xb1, 0x3f, 0xd4, 0x71, 0xa6, - 0x2c, 0xe3, 0x2c, 0xf9, 0x22, 0x34, 0x72, 0xee, 0x13, 0x4e, 0xd5, 0x8a, - 0x71, 0x3a, 0x80, 0x23, 0x02, 0x5f, 0xe9, 0xc4, 0x8d, 0x29, 0xca, 0x84, - 0x0f, 0xc4, 0x69, 0x2c, 0x03, 0xf8, 0x8c, 0xaf, 0x5e, 0xb9, 0xa9, 0x1a, - 0xca, 0x9f, 0xe8, 0xae, 0x84, 0xe0, 0x74, 0xba, 0x38, 0x67, 0x1b, 0xb3, - 0xb8, 0x3c, 0xca, 0x3a, 0x47, 0x1b, 0x93, 0x43, 0x89, 0xb0, 0x22, 0x66, - 0xa8, 0xd4, 0xa9, 0x2e, 0xfb, 0x18, 0x30, 0x80, 0xa0, 0x36, 0xe5, 0x64, - 0x38, 0x23, 0xeb, 0x78, 0xdd, 0x52, 0x6a, 0xc6, 0x85, 0xc4, 0xaf, 0x9b, - 0xbc, 0x2d, 0x3d, 0x2d, 0xfb, 0x12, 0x3d, 0x8c, 0x87, 0x11, 0xea, 0xc8, - 0x57, 0xa4, 0x3d, 0x72, 0xaa, 0x4e, 0x59, 0x2f, 0xb7, 0xf7, 0x50, 0xab, - 0x40, 0xa8, 0xc9, 0x73, 0xa1, 0x96, 0x45, 0x2d, 0x29, 0xb6, 0x9e, 0x24, - 0xdd, 0x48, 0x2e, 0x5c, 0x72, 0x30, 0xf0, 0x22, 0x9c, 0x92, 0x78, 0x68, - 0x46, 0x23, 0x02, 0x70, 0x3c, 0x89, 0xbf, 0xc3, 0x61, 0xba, 0xc5, 0x21, - 0x78, 0x79, 0xcf, 0xee, 0x74, 0x3e, 0x33, 0x9d, 0x60, 0x3c, 0x81, 0x0f, - 0xe3, 0xa9, 0x3f, 0xf3, 0x80, 0x19, 0x74, 0xbe, 0x2e, 0x15, 0xb2, 0x73, - 0xe3, 0x6a, 0xa7, 0x25, 0x3f, 0xa1, 0xa1, 0xd3, 0x8f, 0xc2, 0xb9, 0xa5, - 0x70, 0x70, 0x52, 0x00, 0xfd, 0xfd, 0x5a, 0xd8, 0x5b, 0xb8, 0x10, 0x9b, - 0x1d, 0xc1, 0x60, 0xf6, 0x8b, 0x5c, 0x95, 0xda, 0x51, 0x88, 0x1a, 0xca, - 0xfe, 0xef, 0x50, 0xbb, 0x5f, 0xba, 0x19, 0xc2, 0x21, 0x16, 0x88, 0x2e, - 0x14, 0x8e, 0xd2, 0x73, 0x25, 0xaa, 0xcd, 0x29, 0x91, 0xd3, 0x2a, 0x65, - 0x69, 0xe4, 0x68, 0x6d, 0xb0, 0xf7, 0x33, 0xaa, 0x54, 0x15, 0x6e, 0xc9, - 0x30, 0x40, 0xca, 0x50, 0x42, 0x76, 0x7b, 0x6d, 0x30, 0x04, 0xed, 0xd1, - 0x64, 0xbd, 0x3f, 0xed, 0xb5, 0x31, 0xbe, 0xdf, 0x33, 0x63, 0x43, 0xac, - 0x24, 0x49, 0x66, 0xe8, 0x67, 0x7d, 0x32, 0x6f, 0x19, 0xda, 0x8f, 0xc8, - 0x0e, 0x6b, 0x51, 0xbe, 0xa1, 0x72, 0x25, 0x91, 0xd3, 0xef, 0xe5, 0xfd, - 0x81, 0xa1, 0x36, 0xf4, 0x84, 0x72, 0xdb, 0xc9, 0x34, 0xdb, 0xa5, 0xe3, - 0x2b, 0xbf, 0x5e, 0x75, 0xac, 0xda, 0xc4, 0x62, 0x07, 0x81, 0x4d, 0xd0, - 0x37, 0x45, 0x20, 0xfb, 0xc8, 0xb2, 0xe4, 0xe5, 0x7f, 0x06, 0x06, 0x58, - 0x1a, 0xe3, 0xfb, 0xe7, 0x00, 0xb7, 0xc8, 0x60, 0xa0, 0x0e, 0xeb, 0xcb, - 0xb7, 0xab, 0x97, 0xe1, 0x1c, 0x72, 0x54, 0x08, 0x88, 0x35, 0x2a, 0x67, - 0xd0, 0x2b, 0x53, 0x4e, 0xcd, 0xb4, 0x52, 0x9a, 0xe8, 0x71, 0x94, 0x75, - 0xa4, 0xc1, 0xf5, 0xc5, 0xf7, 0xec, 0xed, 0x72, 0xd2, 0x2e, 0x3b, 0x5a, - 0x72, 0x22, 0x91, 0x7d, 0xb7, 0xca, 0x35, 0xd6, 0x6a, 0x33, 0x39, 0x18, - 0xf5, 0x0a, 0x86, 0xaa, 0xcb, 0xea, 0xf9, 0xfc, 0x44, 0x78, 0x78, 0x5d, - 0xf8, 0x8b, 0xac, 0xf1, 0x25, 0x43, 0x3c, 0xab, 0x0b, 0x36, 0x02, 0x4b, - 0x12, 0x65, 0xe7, 0xed, 0xab, 0x98, 0x20, 0xd6, 0x9e, 0xe3, 0x38, 0x98, - 0x7c, 0xf2, 0x9f, 0x07, 0x98, 0xb5, 0x7c, 0x9d, 0x6a, 0x39, 0x19, 0x10, - 0x1e, 0x1e, 0x12, 0xc8, 0x63, 0xbf, 0x2d, 0x9b, 0x3c, 0x72, 0x5c, 0xed, - 0x1a, 0x3f, 0xc6, 0xab, 0xb5, 0x28, 0xc2, 0xe1, 0x72, 0x81, 0x45, 0x59, - 0xfa, 0x89, 0x43, 0x8a, 0xb4, 0x2f, 0x28, 0xd9, 0x9f, 0xcb, 0xb6, 0x71, - 0x8c, 0xbb, 0x1f, 0xad, 0xa8, 0xd0, 0x01, 0x8c, 0x7a, 0x8b, 0xa2, 0x11, - 0x6b, 0x6e, 0xb8, 0x88, 0x7b, 0x4d, 0xc3, 0x6b, 0xf3, 0xfa, 0xa9, 0x2a, - 0xea, 0xff, 0x76, 0x45, 0x70, 0xe8, 0x4a, 0xbe, 0x86, 0xf6, 0x27, 0x58, - 0x06, 0x83, 0x60, 0x58, 0xc1, 0x0f, 0x53, 0x38, 0x46, 0xde, 0xe8, 0xda, - 0xd4, 0xb2, 0xa6, 0xdd, 0x49, 0x5e, 0x31, 0x69, 0xeb, 0x75, 0xcb, 0xf6, - 0x0d, 0x90, 0x64, 0x71, 0xbd, 0x57, 0x34, 0xa7, 0xc5, 0xb4, 0x51, 0x30, - 0x28, 0x86, 0x97, 0xec, 0xe7, 0x4c, 0xef, 0xf4, 0x30, 0xb1, 0xe8, 0x33, - 0xe9, 0x9a, 0x75, 0xf0, 0x64, 0x74, 0x6a, 0xa0, 0x25, 0xa3, 0x3e, 0xb0, - 0xad, 0xc6, 0xb8, 0x67, 0xbe, 0xf9, 0x5d, 0xea, 0xd3, 0x39, 0x38, 0xea, - 0xbb, 0xe2, 0x47, 0x15, 0x54, 0x5f, 0xc8, 0xe4, 0x01, 0x8f, 0xd7, 0xe2, - 0xb3, 0x29, 0xc0, 0xdf, 0x6e, 0x28, 0x8a, 0xcf, 0xca, 0xbf, 0xf4, 0xd0, - 0xfe, 0x53, 0xeb, 0xc9, 0x6d, 0x4a, 0x72, 0x21, 0xfb, 0x15, 0xd9, 0xcd, - 0x0c, 0x05, 0x32, 0x9d, 0x8a, 0x4a, 0x46, 0x04, 0x0c, 0xa3, 0x38, 0x99, - 0x41, 0x47, 0x6f, 0x49, 0x14, 0x11, 0xc3, 0x3c, 0x6c, 0x3a, 0xdb, 0x18, - 0x83, 0xfd, 0xc7, 0xf4, 0x92, 0xd5, 0xcb, 0x66, 0x08, 0xf1, 0x6e, 0xc9, - 0x0e, 0x22, 0x7c, 0x2c, 0x52, 0xc5, 0x7c, 0x16, 0x57, 0x0c, 0xc9, 0x7b, - 0x17, 0x31, 0xd3, 0x6b, 0x13, 0x45, 0x63, 0xcd, 0x6f, 0xb4, 0xcb, 0xce, - 0x8a, 0x12, 0x3e, 0x52, 0xef, 0x2f, 0x86, 0x79, 0x43, 0xf4, 0x33, 0x5b, - 0x32, 0x36, 0xb4, 0x9e, 0xdd, 0xe1, 0x7e, 0x44, 0x71, 0x90, 0xfb, 0x9d, - 0xdf, 0xb2, 0x49, 0x81, 0x1d, 0xca, 0x41, 0x4f, 0x1d, 0x35, 0x32, 0xf1, - 0x1c, 0xbd, 0x2c, 0xc7, 0x86, 0x78, 0xdd, 0xac, 0x09, 0x76, 0x04, 0xaa, - 0x14, 0x37, 0x92, 0x1a, 0xf1, 0x97, 0xb8, 0xa0, 0x65, 0x27, 0x2a, 0xc3, - 0x48, 0x3f, 0xa0, 0xb7, 0x86, 0x9a, 0xa7, 0x11, 0x58, 0x8d, 0x48, 0x48, - 0xe9, 0xe2, 0x5d, 0xd7, 0x47, 0x3f, 0xea, 0x6e, 0xa1, 0xad, 0x0b, 0x66, - 0x3f, 0xac, 0x0a, 0xd5, 0x77, 0xe6, 0xf5, 0x8f, 0x7a, 0xb7, 0x69, 0xf9, - 0xf9, 0x94, 0xbf, 0xfe, 0xbd, 0x29, 0x59, 0xb3, 0xd0, 0xe5, 0xc8, 0x0b, - 0x93, 0x0b, 0x6c, 0x8f, 0xe5, 0xa3, 0x82, 0xb5, 0x9d, 0xb2, 0x68, 0xdb, - 0x3d, 0x77, 0x7d, 0xbb, 0xe7, 0x52, 0xad, 0xd1, 0xfc, 0xf4, 0xd3, 0x39, - 0x94, 0xf8, 0xa7, 0x20, 0x56, 0xd9, 0xcc, 0x71, 0x30, 0x12, 0x34, 0x37, - 0x77, 0x24, 0x25, 0xa4, 0xd2, 0xae, 0x43, 0x29, 0x18, 0x2c, 0x37, 0x44, - 0x7e, 0xa8, 0xaf, 0xc1, 0x79, 0x27, 0xfc, 0xdc, 0x51, 0x55, 0xdd, 0xc4, - 0xa2, 0x42, 0x6b, 0xb0, 0x09, 0x31, 0x8f, 0xbc, 0x58, 0xe7, 0x86, 0xe0, - 0xb4, 0xfb, 0xb1, 0x76, 0x80, 0x94, 0x31, 0xc9, 0xd8, 0x34, 0xc4, 0xe2, - 0x15, 0x4c, 0x97, 0xa8, 0x21, 0xa1, 0xb5, 0x05, 0x1e, 0xa2, 0xa3, 0x0c, - 0x44, 0x44, 0xce, 0xf6, 0x0a, 0xa6, 0x6d, 0x0c, 0xc4, 0x54, 0x2f, 0x02, - 0x26, 0xdf, 0xf4, 0x42, 0x4d, 0x78, 0x25, 0xe6, 0x0a, 0xb6, 0xc1, 0xe8, - 0xc4, 0xf3, 0x9b, 0x88, 0x53, 0x26, 0x0e, 0x84, 0x34, 0xc3, 0x2f, 0xcf, - 0xe2, 0x59, 0x3a, 0x5a, 0xc9, 0x69, 0x86, 0x8f, 0x86, 0x50, 0xf8, 0x47, - 0xd1, 0x8c, 0xe7, 0x60, 0xf0, 0x02, 0xaf, 0xb6, 0xa7, 0xa0, 0x01, 0x66, - 0xb7, 0x0b, 0x22, 0xf6, 0x11, 0xbb, 0x5b, 0x80, 0x0a, 0x4e, 0x3b, 0xd2, - 0x3a, 0xd1, 0x46, 0x48, 0xc2, 0xc9, 0xe5, 0x2d, 0xf8, 0xeb, 0x58, 0xf4, - 0x6b, 0x91, 0x60, 0x1a, 0x95, 0xef, 0x74, 0x16, 0x2e, 0xb6, 0x80, 0xda, - 0x75, 0xcb, 0x0a, 0x04, 0xd7, 0x98, 0x5b, 0xa7, 0xa4, 0x3a, 0x8a, 0xa6, - 0x62, 0xe7, 0x1c, 0xca, 0x87, 0xe9, 0x68, 0x4c, 0x29, 0xae, 0x6f, 0xd0, - 0x28, 0x12, 0x93, 0x82, 0x1c, 0x73, 0x6d, 0x23, 0xb6, 0x43, 0x49, 0x1d, - 0x02, 0x5e, 0x39, 0x2d, 0xf3, 0xb6, 0x21, 0xb3, 0xf8, 0x35, 0x9b, 0xd1, - 0x44, 0xe2, 0x51, 0x51, 0xbd, 0x10, 0x6c, 0x60, 0x13, 0x5e, 0x6f, 0x08, - 0x6f, 0x2c, 0x00, 0x66, 0x24, 0x39, 0xd4, 0xde, 0xfc, 0x81, 0xe1, 0x27, - 0xd7, 0x68, 0xaa, 0xea, 0xa1, 0xb7, 0x72, 0x75, 0x65, 0x35, 0x32, 0x3a, - 0xb6, 0x51, 0xfe, 0x0f, 0x75, 0xa1, 0x1d, 0x2a, 0x10, 0x3b, 0xf8, 0x23, - 0x0f, 0x5e, 0xf7, 0xc0, 0x39, 0x30, 0x34, 0x17, 0xf2, 0xf3, 0x28, 0xbb, - 0xe7, 0xdf, 0x45, 0x77, 0x20, 0xa8, 0x63, 0x37, 0x00, 0x60, 0xc6, 0xec, - 0xc8, 0x0d, 0xd2, 0x7a, 0x66, 0x6c, 0x8f, 0xb0, 0x4b, 0x6b, 0x7d, 0x8f, - 0x03, 0x72, 0xc7, 0x97, 0x9c, 0x5f, 0x79, 0x23, 0x3f, 0x0c, 0x05, 0xbb, - 0xe2, 0xf7, 0x45, 0x75, 0xed, 0x2c, 0xff, 0xc2, 0xac, 0x0b, 0xa9, 0xae, - 0xe6, 0xc5, 0x16, 0xb1, 0xc8, 0x3a, 0x59, 0xea, 0xef, 0x64, 0x51, 0x5e, - 0x8e, 0x9c, 0x8f, 0x49, 0x07, 0x23, 0x86, 0x50, 0x29, 0x86, 0x4d, 0xfd, - 0xd6, 0x42, 0xcd, 0xb6, 0x15, 0x80, 0xcd, 0x03, 0x4d, 0x81, 0xc0, 0x41, - 0x1e, 0x77, 0xf3, 0x2b, 0x93, 0x96, 0xd0, 0x36, 0xa8, 0xbb, 0xb9, 0x2a, - 0x30, 0xcc, 0x58, 0x6a, 0x63, 0xa7, 0x9c, 0x55, 0x84, 0x7a, 0x8d, 0xb9, - 0x4d, 0xbf, 0x86, 0x7a, 0x77, 0x4d, 0x21, 0x46, 0x30, 0xaf, 0x40, 0xfc, - 0xde, 0x81, 0xd6, 0xdd, 0x6e, 0x5f, 0xd1, 0x17, 0x6a, 0x8f, 0xc7, 0x31, - 0x46, 0x8e, 0x78, 0x7d, 0x38, 0x24, 0xea, 0x13, 0xa2, 0x67, 0x97, 0x71, - 0x28, 0xa9, 0x02, 0x50, 0x22, 0x09, 0x2a, 0xe7, 0xa9, 0x6d, 0x9a, 0xdd, - 0x3b, 0x33, 0x16, 0x14, 0x0a, 0x99, 0x06, 0x1f, 0x9e, 0xb1, 0x27, 0xaa, - 0x78, 0xee, 0x77, 0xad, 0x1b, 0xdc, 0xfc, 0x09, 0xef, 0x01, 0x5d, 0x6b, - 0xca, 0x6f, 0x44, 0xcc, 0x8a, 0x53, 0x25, 0xdf, 0x43, 0x41, 0x99, 0xdb, - 0x2a, 0xed, 0x00, 0xb2, 0x5d, 0x74, 0xfd, 0x52, 0x8b, 0xb2, 0xbf, 0x4a, - 0x99, 0x3e, 0xa1, 0x67, 0x76, 0xc0, 0x55, 0xf8, 0x9e, 0x1d, 0xf3, 0x1d, - 0x13, 0x22, 0x92, 0x44, 0xd8, 0x39, 0x63, 0x3b, 0x6d, 0x62, 0x96, 0xc7, - 0xce, 0xfc, 0x92, 0x9b, 0x77, 0x76, 0x99, 0x7b, 0xbf, 0x5b, 0xfe, 0x8b, - 0x5c, 0xd0, 0x01, 0x97, 0x0a, 0xef, 0x8c, 0x15, 0xed, 0x8e, 0x47, 0xb6, - 0xe6, 0x42, 0x52, 0x7e, 0x6b, 0x10, 0x66, 0x04, 0x05, 0xb0, 0x0c, 0x77, - 0x04, 0xe3, 0x6a, 0x9f, 0xcc, 0x29, 0xdd, 0x84, 0x80, 0x77, 0x40, 0xfd, - 0x2a, 0x09, 0x40, 0x76, 0xa9, 0x21, 0x44, 0x5b, 0x3c, 0x37, 0xad, 0xa5, - 0xbc, 0xf9, 0x6b, 0x6f, 0xe4, 0x4c, 0xf5, 0xd1, 0xcd, 0x68, 0xba, 0xc1, - 0xe7, 0xcf, 0x59, 0x1d, 0xa7, 0x9c, 0x68, 0x91, 0x71, 0x2e, 0xc9, 0x17, - 0xb3, 0xce, 0xa3, 0x70, 0xcd, 0x90, 0x27, 0x42, 0x01, 0x49, 0xed, 0x95, - 0xf0, 0x00, 0x5b, 0xec, 0xd2, 0xbe, 0xd6, 0xa5, 0xb5, 0xf7, 0x42, 0x32, - 0x4b, 0x01, 0x97, 0xcd, 0xda, 0xef, 0x08, 0x83, 0xe6, 0x9c, 0x49, 0xc1, - 0xbe, 0xb3, 0xf4, 0x6a, 0x45, 0x56, 0xf6, 0xef, 0x6b, 0xfc, 0x3b, 0x40, - 0xa8, 0x67, 0x3a, 0x98, 0xaa, 0x76, 0x86, 0x10, 0x2b, 0xe0, 0x47, 0x3c, - 0x13, 0xee, 0x16, 0x08, 0xe7, 0x75, 0x99, 0x59, 0xb5, 0xd2, 0x90, 0x3e, - 0x96, 0x40, 0xa6, 0xe3, 0xdc, 0xff, 0x13, 0xa5, 0x7f, 0xbd, 0x6c, 0xc6, - 0xe8, 0x28, 0xc9, 0x34, 0xb9, 0x1b, 0xaf, 0x3f, 0x49, 0x2e, 0x22, 0x16, - 0xf5, 0x57, 0x3c, 0x2b, 0x23, 0xf3, 0xd2, 0xfb, 0xb5, 0x8c, 0x47, 0x07, - 0x3f, 0xb0, 0x7e, 0xb7, 0x99, 0x65, 0x32, 0xda, 0x92, 0x3b, 0x99, 0xc6, - 0x0d, 0x01, 0xe9, 0x22, 0x59, 0x63, 0x02, 0x7a, 0x83, 0x10, 0xe6, 0xb0, - 0x2e, 0x14, 0x01, 0xd5, 0x87, 0x7e, 0x0c, 0x98, 0x0b, 0x9b, 0x78, 0x98, - 0x75, 0xa6, 0x46, 0x25, 0xf3, 0x36, 0x22, 0x37, 0x9a, 0xaa, 0x7b, 0xc1, - 0xfb, 0x8d, 0xb2, 0x1b, 0x52, 0x0b, 0xa4, 0x09, 0xed, 0x8b, 0xe5, 0xc4, - 0x9e, 0x8a, 0xb2, 0x46, 0x3d, 0xf5, 0x9d, 0x49, 0x8c, 0xb6, 0xd7, 0x07, - 0xb1, 0xdb, 0x3e, 0x83, 0xc4, 0xf2, 0xed, 0x17, 0x2d, 0x9d, 0x96, 0x42, - 0xd6, 0x21, 0x54, 0xd4, 0x1c, 0x40, 0x72, 0xea, 0x55, 0x95, 0x29, 0x76, - 0xd0, 0x69, 0x8f, 0xa0, 0x74, 0x71, 0xe0, 0x1b, 0xe3, 0x70, 0xd2, 0xe3, - 0x96, 0x21, 0x94, 0x4b, 0x60, 0xbf, 0xe6, 0x32, 0x1e, 0xd2, 0x25, 0xfe, - 0x6c, 0xb3, 0xed, 0x7d, 0x72, 0xd7, 0x88, 0x68, 0x1e, 0x32, 0xe7, 0x32, - 0x36, 0x7d, 0x11, 0xac, 0x66, 0xf9, 0xa4, 0x51, 0x92, 0xb0, 0xb4, 0x8b, - 0xdc, 0x5e, 0xdc, 0x5a, 0x29, 0x7d, 0xa7, 0xe2, 0x26, 0xdf, 0xdd, 0xc1, - 0x95, 0x15, 0xfe, 0x07, 0x1e, 0x72, 0x53, 0x4c, 0xe5, 0x52, 0xf0, 0xfa, - 0x84, 0x67, 0x9d, 0xe6, 0x01, 0x7f, 0x31, 0xe2, 0x7c, 0x93, 0x04, 0xb7, - 0x9b, 0x5e, 0x91, 0xb6, 0xba, 0xe1, 0xa8, 0xc7, 0xb7, 0x7c, 0x69, 0x29, - 0xbc, 0x08, 0x94, 0x3a, 0xf5, 0x16, 0xf4, 0x00, 0x06, 0xb8, 0xde, 0xf0, - 0x03, 0xf0, 0xf0, 0x3b, 0xd8, 0xfd, 0x94, 0x1d, 0x94, 0x5b, 0x36, 0x96, - 0x10, 0x7a, 0x74, 0x24, 0x7f, 0x5d, 0x47, 0x3a, 0xc3, 0x53, 0xa7, 0xb3, - 0xdb, 0x22, 0x7b, 0xc0, 0x40, 0x10, 0x03, 0xa0, 0xf1, 0xbb, 0x6d, 0x2b, - 0x36, 0x5d, 0xfc, 0x95, 0x31, 0xeb, 0x6c, 0x86, 0x84, 0x38, 0x58, 0x1d, - 0x6e, 0x9c, 0x10, 0xa5, 0x15, 0xdd, 0xdb, 0x62, 0xb9, 0x43, 0x1b, 0xab, - 0x57, 0xe1, 0xa9, 0xd2, 0x3f, 0x74, 0x60, 0xe7, 0xf5, 0x77, 0x02, 0x83, - 0x5c, 0xac, 0x01, 0x56, 0x7d, 0x45, 0x5e, 0xf8, 0x98, 0x71, 0xc7, 0x16, - 0xa8, 0x3c, 0x85, 0x3f, 0x8f, 0x92, 0x77, 0x22, 0x0b, 0x90, 0x2f, 0x3c, - 0x4c, 0x13, 0x8c, 0xf6, 0x9f, 0x07, 0x31, 0x24, 0x16, 0x65, 0xfc, 0xa7, - 0x8c, 0xe4, 0x0f, 0x3a, 0xea, 0x9f, 0x62, 0x7c, 0x5a, 0x4d, 0x6c, 0x47, - 0x2e, 0x57, 0x33, 0x1e, 0xdf, 0xe0, 0x40, 0x04, 0xd5, 0x5b, 0x98, 0x08, - 0xf9, 0x7e, 0xc8, 0x26, 0xd1, 0xd9, 0x4b, 0x9e, 0x7d, 0x74, 0x45, 0x38, - 0xff, 0xc6, 0x08, 0x9d, 0xf1, 0x2c, 0xc3, 0xde, 0x03, 0x83, 0x33, 0xe9, - 0xe9, 0x7f, 0xd3, 0x91, 0xfb, 0x5c, 0x41, 0x62, 0xf7, 0xa5, 0x4a, 0x2c, - 0x73, 0x24, 0x08, 0xdd, 0xba, 0x04, 0x92, 0xb0, 0xfc, 0x62, 0x45, 0xab, - 0x7a, 0xf4, 0x96, 0xb3, 0xed, 0x83, 0x67, 0x83, 0x02, 0xd2, 0x2c, 0x20, - 0x83, 0xfa, 0x0f, 0xf8, 0x61, 0xa4, 0x3c, 0xd0, 0x45, 0xcb, 0xe7, 0xb1, - 0xdc, 0xa8, 0x2f, 0x68, 0x99, 0xc1, 0x58, 0x5e, 0xef, 0xdd, 0x28, 0x7c, - 0x50, 0x62, 0x9c, 0xb5, 0xc4, 0xc4, 0xbc, 0x2b, 0xf8, 0xd6, 0x8c, 0x01, - 0x59, 0xc4, 0x65, 0x90, 0xc7, 0x53, 0xa4, 0x6b, 0xe5, 0xab, 0xc8, 0x8a, - 0xd1, 0x7e, 0x77, 0xce, 0xbc, 0x5f, 0x3d, 0xe1, 0x77, 0x5a, 0xaf, 0xd5, - 0xc3, 0x4e, 0xc6, 0x76, 0x55, 0x24, 0x4c, 0xba, 0xd0, 0x72, 0xbf, 0x81, - 0x86, 0xfe, 0x9d, 0x8f, 0x14, 0x89, 0x64, 0xe0, 0x0c, 0x11, 0x51, 0x9d, - 0x9b, 0x7d, 0xc7, 0x32, 0x8a, 0x27, 0xfc, 0x86, 0xb0, 0x59, 0x2f, 0x1a, - 0x89, 0x90, 0x16, 0x2e, 0xc6, 0x48, 0x21, 0x72, 0xb3, 0xb5, 0x1b, 0xf7, - 0xae, 0xbe, 0x4f, 0xb7, 0xce, 0xdd, 0xa4, 0x3e, 0x8c, 0x37, 0xd2, 0x1e, - 0x05, 0x59, 0x70, 0x10, 0xa1, 0x36, 0x3c, 0xb9, 0x52, 0xd4, 0x16, 0x9b, - 0x47, 0x16, 0xb5, 0x69, 0x6c, 0xec, 0x5a, 0x73, 0xf9, 0x35, 0x80, 0xaf, - 0xfc, 0xd0, 0xa2, 0xd9, 0x96, 0x23, 0x5d, 0x6e, 0xb9, 0x36, 0x98, 0xd5, - 0xab, 0x57, 0xe1, 0xb0, 0x9f, 0x2d, 0x73, 0xea, 0xac, 0x48, 0xec, 0x2b, - 0x06, 0xe4, 0x39, 0x99, 0x93, 0x01, 0x9a, 0x80, 0x3c, 0x90, 0x31, 0x8d, - 0x6e, 0x05, 0xae, 0xa5, 0xc6, 0xd5, 0xd1, 0x5b, 0xfc, 0xee, 0x8b, 0xea, - 0x79, 0x5b, 0xa8, 0x8e, 0xa7, 0x1a, 0xd9, 0x22, 0xbb, 0x8d, 0x98, 0xb2, - 0x57, 0x11, 0xff, 0x7a, 0xcc, 0x78, 0xf7, 0xf7, 0x04, 0x87, 0xe4, 0x42, - 0x06, 0xfd, 0x23, 0xd4, 0x08, 0x67, 0xd2, 0x50, 0x12, 0xc0, 0x7b, 0x6e, - 0x84, 0xa7, 0x6b, 0x2b, 0x0b, 0x44, 0xd1, 0xe9, 0x88, 0x91, 0xf3, 0xe0, - 0x0a, 0xc8, 0x55, 0x56, 0x89, 0xa0, 0xd9, 0xe2, 0x6d, 0x46, 0xb9, 0xad, - 0x54, 0x10, 0xd9, 0xe0, 0xac, 0x76, 0x0e, 0x27, 0x85, 0x79, 0x6e, 0x47, - 0xd3, 0x10, 0xc5, 0x39, 0x8d, 0x7a, 0x4d, 0x6b, 0x0d, 0x07, 0xa6, 0xa7, - 0x65, 0x5f, 0x92, 0x6e, 0x03, 0xab, 0x97, 0x2d, 0xa6, 0xec, 0x10, 0x57, - 0x26, 0xac, 0x94, 0x84, 0xe5, 0x65, 0x54, 0xf4, 0xcf, 0x03, 0xc1, 0x94, - 0x9f, 0xba, 0x67, 0x66, 0x4d, 0x24, 0xdd, 0xf5, 0x5e, 0xf2, 0x85, 0xba, - 0x3c, 0x2c, 0x2e, 0xd5, 0x8e, 0x99, 0x0f, 0x0d, 0x53, 0x32, 0x0d, 0x6d, - 0x48, 0x3c, 0xc0, 0x0e, 0x4c, 0xed, 0xfb, 0xc0, 0x76, 0x5a, 0x0b, 0x4a, - 0x00, 0xa1, 0x4b, 0x63, 0x54, 0xfb, 0x33, 0x7a, 0xdc, 0x84, 0xef, 0xbb, - 0xcd, 0x9b, 0xf7, 0x19, 0xc3, 0x56, 0x6b, 0x98, 0x46, 0x35, 0x21, 0x7b, - 0x29, 0x3b, 0xcc, 0xa2, 0x33, 0x4f, 0xb5, 0x20, 0x1a, 0x20, 0x30, 0xef, - 0x6c, 0xab, 0xe1, 0x4b, 0x05, 0xc3, 0x0b, 0x9b, 0xa4, 0xe7, 0xa9, 0x70, - 0xb5, 0xf1, 0x66, 0xca, 0xfe, 0x38, 0xe1, 0x03, 0xa1, 0xf8, 0x64, 0x56, - 0xfb, 0x01, 0xf7, 0x27, 0x08, 0x14, 0x5e, 0x71, 0x03, 0x34, 0xe6, 0x2b, - 0xf8, 0x12, 0x1d, 0x77, 0x15, 0x28, 0x5e, 0xe7, 0xf4, 0xe6, 0x6f, 0x10, - 0x7d, 0x49, 0xac, 0xb2, 0x45, 0xb1, 0xbb, 0x1e, 0x52, 0x0c, 0xbe, 0x84, - 0x20, 0x59, 0x41, 0x7e, 0xb6, 0x13, 0x70, 0x32, 0xbb, 0xaf, 0xc8, 0xf3, - 0x58, 0x1e, 0xff, 0x9a, 0x6e, 0xa2, 0xcd, 0xfa, 0x92, 0x93, 0x72, 0xf5, - 0xdb, 0x6e, 0xe8, 0xdb, 0x58, 0x49, 0x62, 0x6d, 0xcf, 0x6a, 0x92, 0x26, - 0xbe, 0x1f, 0x7f, 0xc3, 0x38, 0xfc, 0x5e, 0xf1, 0xa8, 0x98, 0xff, 0x07, - 0x8b, 0x7b, 0x90, 0x9d, 0xcb, 0x2c, 0x33, 0x07, 0x89, 0x4a, 0x70, 0xa6, - 0x37, 0x4d, 0x64, 0xd8, 0xae, 0xfc, 0x7d, 0xe3, 0xea, 0x55, 0x1a, 0x8e, - 0x91, 0x8d, 0xc3, 0x19, 0x43, 0x89, 0xf1, 0xab, 0xf1, 0x8a, 0xae, 0xfa, - 0x1a, 0x9b, 0xf0, 0x15, 0x01, 0x09, 0x03, 0xea, 0x79, 0x52, 0x1c, 0x3c, - 0x76, 0x77, 0x05, 0x54, 0x2f, 0xa1, 0x2d, 0xa4, 0x0a, 0x67, 0x89, 0xf5, - 0x34, 0x37, 0x57, 0xd5, 0xb8, 0x37, 0x30, 0xda, 0x9b, 0x39, 0x72, 0x1b, - 0x4c, 0x84, 0xa5, 0xb3, 0xa2, 0xcd, 0x93, 0x3b, 0xee, 0x88, 0x73, 0x3f, - 0xad, 0x56, 0xc6, 0x28, 0xec, 0x1a, 0xab, 0x06, 0x46, 0xd7, 0xee, 0x74, - 0xe2, 0x38, 0xd1, 0xae, 0xd3, 0x4e, 0x51, 0xb8, 0xf8, 0x0a, 0x80, 0xe2, - 0x27, 0x08, 0x41, 0xe2, 0xd0, 0xfb, 0x24, 0x3e, 0x9b, 0x67, 0xca, 0xe4, - 0x2e, 0x54, 0x84, 0x0f, 0x82, 0xbb, 0x70, 0x57, 0x2b, 0x1c, 0xbf, 0xfa, - 0xc9, 0x00, 0x7b, 0xfd, 0x3f, 0x0b, 0x8c, 0x02, 0x91, 0x3a, 0xec, 0x95, - 0xf5, 0xfa, 0x23, 0x38, 0x23, 0x06, 0x44, 0x14, 0x14, 0x0e, 0xcd, 0x28, - 0x89, 0x10, 0x50, 0xb2, 0xc6, 0xf5, 0xee, 0x0a, 0x6b, 0xba, 0xf8, 0x84, - 0x25, 0x1c, 0x91, 0xbf, 0x6a, 0x30, 0xe6, 0x32, 0x22, 0x9b, 0x82, 0x90, - 0x2e, 0xc2, 0x91, 0xc9, 0x71, 0xa3, 0x1e, 0xf9, 0x46, 0x7e, 0x15, 0xe8, - 0xd0, 0x50, 0x92, 0x2b, 0x44, 0xd9, 0xa0, 0x6c, 0x14, 0x23, 0xd7, 0xb6, - 0x7f, 0x9b, 0x8a, 0x1d, 0x99, 0x43, 0x94, 0xb2, 0x43, 0x86, 0x4d, 0xe1, - 0x21, 0xca, 0x4b, 0x5b, 0x98, 0x20, 0xbf, 0x8e, 0xb7, 0x83, 0x31, 0x2b, - 0x1d, 0xfb, 0x05, 0x4a, 0x09, 0x7c, 0x55, 0xc6, 0xc7, 0x3b, 0x49, 0x27, - 0xf4, 0xe2, 0x51, 0x41, 0xa6, 0x0a, 0x90, 0xc1, 0xdb, 0xf7, 0x62, 0x04, - 0xdb, 0x67, 0x9d, 0x34, 0x5e, 0x43, 0x4f, 0x52, 0xdd, 0x37, 0x24, 0xab, - 0x41, 0x8f, 0x22, 0x25, 0x1b, 0x96, 0x02, 0xc0, 0x4f, 0x72, 0x7e, 0x64, - 0x76, 0x47, 0x6d, 0x19, 0x6e, 0xac, 0x7d, 0xf0, 0x05, 0xb2, 0x54, 0xc0, - 0x7d, 0x01, 0xac, 0x89, 0x58, 0x98, 0x0b, 0x40, 0x42, 0x38, 0x7c, 0xfc, - 0x89, 0x32, 0x7d, 0xe0, 0x89, 0x44, 0xa1, 0x2e, 0x66, 0x03, 0xff, 0x0e, - 0xb6, 0x33, 0xae, 0x3a, 0x6f, 0xcd, 0xdb, 0xc2, 0xa9, 0xf5, 0x91, 0x8c, - 0x1d, 0x67, 0x1a, 0x62, 0xee, 0x8a, 0xdb, 0x14, 0x30, 0x8b, 0x2f, 0x54, - 0x28, 0xfb, 0x4b, 0x45, 0x8e, 0x9e, 0xe1, 0x76, 0x3e, 0xcd, 0x2e, 0x2f, - 0x44, 0xee, 0x83, 0xbb, 0x80, 0xab, 0x26, 0xef, 0xcf, 0xf5, 0xf3, 0x60, - 0x54, 0xf5, 0x9c, 0xdf, 0x38, 0x5d, 0x79, 0x9b, 0xa9, 0x86, 0x8b, 0x8a, - 0x65, 0x45, 0xed, 0xc6, 0x28, 0xa8, 0x6e, 0x42, 0xb5, 0xfe, 0xa9, 0x00, - 0x69, 0x68, 0xc0, 0x9b, 0x8f, 0xa8, 0xf0, 0xdb, 0x9e, 0xef, 0x6b, 0xa8, - 0xb1, 0xed, 0x3c, 0xb7, 0x12, 0x29, 0x2b, 0x4a, 0xa6, 0x78, 0xfe, 0x0a, - 0x3a, 0xa6, 0x45, 0xa8, 0x3f, 0x21, 0x0d, 0x04, 0x79, 0xc1, 0xbb, 0x04, - 0xc0, 0xf7, 0x93, 0x7c, 0xb3, 0xed, 0x56, 0xcf, 0x85, 0x69, 0x42, 0x87, - 0x6e, 0x21, 0x39, 0xe6, 0xfc, 0x82, 0xd7, 0x15, 0xc6, 0x60, 0x15, 0x69, - 0x0e, 0x7e, 0x48, 0x8d, 0x96, 0x66, 0x00, 0x2c, 0xcb, 0x58, 0xe8, 0xa6, - 0x26, 0xad, 0x6a, 0x18, 0x52, 0x90, 0x15, 0x7d, 0x15, 0x40, 0x61, 0x1d, - 0x90, 0x97, 0x39, 0x39, 0x8e, 0xc3, 0xb5, 0x80, 0xd1, 0xc8, 0x60, 0x29, - 0x1f, 0x6e, 0x97, 0xee, 0x1c, 0x3b, 0x7b, 0x16, 0x49, 0x1d, 0x50, 0x4f, - 0xc9, 0x95, 0xed, 0x15, 0xba, 0x37, 0x4f, 0x0c, 0xf4, 0xb3, 0xd8, 0xac, - 0x44, 0xf6, 0x8f, 0x0e, 0xae, 0x81, 0xab, 0x48, 0x97, 0xeb, 0x2a, 0xd8, - 0x34, 0xa2, 0xfc, 0xd7, 0xe3, 0xef, 0xd6, 0xf3, 0xe0, 0xb7, 0x1f, 0x1d, - 0x2c, 0x7d, 0x11, 0xa3, 0xaa, 0x9f, 0x15, 0x68, 0xa1, 0xee, 0x31, 0x8e, - 0x98, 0x9a, 0x29, 0x65, 0x28, 0x7d, 0xb8, 0xa7, 0x8c, 0xd6, 0xba, 0x9e, - 0x55, 0x5b, 0xa6, 0xbd, 0x0f, 0x72, 0xa1, 0x66, 0xa0, 0x7a, 0x04, 0x68, - 0x1c, 0xf4, 0x2e, 0x6a, 0xfd, 0xfc, 0xeb, 0x8c, 0x27, 0xcf, 0x0a, 0xd9, - 0x4a, 0x1b, 0xaf, 0x96, 0x56, 0x8d, 0x75, 0x13, 0x0d, 0xa3, 0x98, 0x03, - 0x96, 0xb0, 0x60, 0xc5, 0x6b, 0xf7, 0x51, 0xa4, 0x4d, 0x27, 0x5c, 0x1b, - 0x0a, 0x99, 0xb7, 0x3b, 0xc1, 0x8e, 0xf9, 0x0e, 0xc6, 0x8d, 0xe3, 0xfc, - 0x85, 0x9f, 0xea, 0x14, 0x8b, 0x09, 0xc7, 0xfe, 0xe5, 0x12, 0x21, 0xc4, - 0xb4, 0x10, 0xe0, 0x42, 0x05, 0xe2, 0x5c, 0xd2, 0x5d, 0x1b, 0x58, 0x12, - 0x33, 0x8d, 0x17, 0x8c, 0xaf, 0xad, 0xbc, 0xaa, 0x67, 0x7c, 0xb0, 0xdf, - 0xd6, 0x3d, 0x97, 0xef, 0xe5, 0x05, 0x38, 0x64, 0xf9, 0xf6, 0x9b, 0xfc, - 0x4e, 0x5d, 0x9f, 0x31, 0x40, 0xd2, 0x53, 0x05, 0x06, 0x50, 0xe1, 0x4c, - 0x01, 0x55, 0x91, 0x25, 0xbc, 0x76, 0xe0, 0x62, 0x18, 0xca, 0x07, 0x75, - 0xa0, 0x0d, 0xb0, 0xd4, 0x8a, 0xcc, 0x15, 0x9d, 0xc8, 0x3d, 0xcf, 0x09, - 0xe6, 0x1f, 0x33, 0x33, 0xe9, 0xc2, 0x8b, 0xd1, 0xe4, 0x29, 0x4d, 0x44, - 0x03, 0x4d, 0x22, 0x3e, 0xe6, 0x2f, 0xcd, 0x78, 0xcd, 0xef, 0x61, 0x24, - 0x3c, 0x3f, 0xdd, 0xc4, 0xea, 0xe2, 0x80, 0xa9, 0x4e, 0xec, 0x3e, 0xfb, - 0xa4, 0x8f, 0x8b, 0xc4, 0x17, 0x68, 0x2c, 0xc6, 0x32, 0x99, 0xd8, 0x1a, - 0x90, 0xa6, 0x05, 0xb2, 0xe7, 0xa1, 0x1d, 0x42, 0xc7, 0x75, 0x71, 0xdc, - 0x84, 0xe7, 0x7a, 0x38, 0x4e, 0x39, 0x09, 0xd1, 0xe5, 0xf2, 0xa5, 0xed, - 0x22, 0xc1, 0xc6, 0xaa, 0x03, 0x61, 0xca, 0x78, 0xed, 0xb0, 0xed, 0x32, - 0xc4, 0x90, 0x75, 0x47, 0x93, 0x17, 0xac, 0x27, 0xb9, 0x84, 0x39, 0xfa, - 0x4f, 0xe4, 0x7f, 0xc7, 0x81, 0x06, 0x13, 0x08, 0x61, 0xef, 0xaf, 0xf9, - 0xf4, 0x74, 0xcf, 0xf7, 0xc4, 0x41, 0xc4, 0xb0, 0xbb, 0xa7, 0x92, 0x82, - 0x2c, 0x86, 0xbb, 0xd2, 0x2f, 0x13, 0x1e, 0x52, 0x58, 0x88, 0xdb, 0x20, - 0xbb, 0x44, 0xb9, 0x94, 0x97, 0x3c, 0xbd, 0x49, 0xac, 0x32, 0x58, 0x41, - 0xb8, 0xd4, 0x55, 0x12, 0x8b, 0x1c, 0x8f, 0x8d, 0xad, 0x3a, 0x28, 0x13, - 0x8e, 0x67, 0x7a, 0xbd, 0xe8, 0x84, 0x48, 0x72, 0x7f, 0x67, 0x89, 0xb4, - 0x6f, 0x40, 0xe2, 0x72, 0x2e, 0x72, 0x08, 0x3b, 0xe1, 0x9f, 0x34, 0x54, - 0x27, 0x1c, 0xf0, 0xad, 0xe5, 0xe3, 0xac, 0x26, 0x9d, 0xc0, 0x1a, 0x7f, - 0x99, 0xd2, 0xc4, 0x90, 0xe7, 0x58, 0xac, 0x11, 0xd2, 0x27, 0x3a, 0xd5, - 0xf0, 0x9a, 0xe5, 0xe1, 0xe3, 0xf1, 0x41, 0x59, 0x4c, 0x6c, 0x4e, 0x9a, - 0x49, 0x4c, 0x3c, 0x82, 0xaf, 0x08, 0xb4, 0x9b, 0x2d, 0x5a, 0x7e, 0xd6, - 0x3b, 0xaa, 0x02, 0xf0, 0xe0, 0xd6, 0x05, 0x46, 0x3e, 0x69, 0x7f, 0x80, - 0x5c, 0x3d, 0xf7, 0x9c, 0xd3, 0xd5, 0x00, 0x5a, 0x13, 0xec, 0x04, 0xce, - 0x4c, 0x5c, 0x53, 0x7a, 0x00, 0x03, 0x2b, 0x6e, 0x2d, 0x04, 0xbd, 0xc7, - 0x4a, 0xe7, 0xc6, 0xe7, 0xfd, 0xe5, 0x39, 0x16, 0x2b, 0xef, 0x49, 0x55, - 0xfc, 0xed, 0x83, 0x08, 0x11, 0xb1, 0x7d, 0x0c, 0x4f, 0x1f, 0x55, 0xa2, - 0x15, 0x49, 0x26, 0x12, 0xd8, 0x27, 0xb0, 0x51, 0xd0, 0x64, 0xaf, 0x45, - 0xbe, 0x98, 0xc2, 0x39, 0x4a, 0x15, 0xec, 0x07, 0x79, 0xc6, 0x59, 0x6c, - 0x2d, 0x3d, 0x2d, 0x33, 0x48, 0x12, 0x6f, 0x32, 0x9c, 0x75, 0xe3, 0x10, - 0x99, 0x30, 0x72, 0xcc, 0x96, 0x47, 0x36, 0x44, 0xde, 0x36, 0xf0, 0x23, - 0xe1, 0xf9, 0x02, 0xdc, 0x58, 0x4b, 0xd6, 0xb3, 0xe5, 0x98, 0xe3, 0x45, - 0xf5, 0x9a, 0xe4, 0xae, 0x6c, 0x89, 0xa0, 0xfe, 0x70, 0xbc, 0x7e, 0x63, - 0x6b, 0x0b, 0x19, 0x38, 0xd9, 0x75, 0xb4, 0x8c, 0xdc, 0x5a, 0xc1, 0x4f, - 0x23, 0x78, 0xd4, 0x28, 0x65, 0x11, 0x87, 0x64, 0x04, 0xd4, 0x22, 0x3e, - 0xbc, 0x7b, 0x7b, 0x4e, 0x88, 0xf8, 0x63, 0x25, 0xb4, 0x31, 0x71, 0xaf, - 0x71, 0xcf, 0x59, 0xaf, 0x91, 0x29, 0x52, 0x22, 0x92, 0x42, 0x63, 0x09, - 0x68, 0xed, 0x4c, 0xa2, 0x76, 0x3f, 0x11, 0x54, 0x9a, 0xb5, 0x94, 0x2e, - 0x38, 0x33, 0x3c, 0xf5, 0x00, 0x92, 0xcc, 0xed, 0xa8, 0xb2, 0x26, 0x2d, - 0x65, 0x35, 0x49, 0x3c, 0xaf, 0x42, 0xb1, 0xa8, 0xc8, 0x31, 0xb1, 0x99, - 0x51, 0x54, 0x66, 0x55, 0x1e, 0x39, 0xf2, 0x42, 0x53, 0x9d, 0x97, 0x13, - 0xe0, 0xc0, 0xd7, 0x5e, 0x41, 0x98, 0x62, 0x9c, 0x82, 0x67, 0x07, 0x77, - 0x11, 0x6a, 0xea, 0x42, 0x85, 0xc9, 0xda, 0x41, 0x77, 0xaa, 0xfb, 0x35, - 0x83, 0x44, 0x7d, 0x8c, 0x87, 0x89, 0xd9, 0x6b, 0x76, 0x62, 0x1e, 0x78, - 0x84, 0xbe, 0xb5, 0x8f, 0x1e, 0x98, 0xcc, 0xd5, 0x08, 0x88, 0x06, 0x2e, - 0x4a, 0xaf, 0x8f, 0x1e, 0x2c, 0x2d, 0xfa, 0xa9, 0xe0, 0xc8, 0xf1, 0x4b, - 0x0d, 0x48, 0xc9, 0x1e, 0xeb, 0x7c, 0x49, 0x45, 0xbc, 0xf4, 0x4e, 0x09, - 0xd3, 0x4d, 0xff, 0xeb, 0xc7, 0x94, 0xf2, 0x62, 0x0d, 0xc7, 0x41, 0x87, - 0x0d, 0xc2, 0x71, 0xdb, 0x7b, 0x56, 0x0e, 0xf6, 0xc7, 0x48, 0x04, 0x28, - 0xdd, 0x32, 0x8f, 0x17, 0x15, 0x2e, 0x15, 0x20, 0x9e, 0x01, 0x18, 0x19, - 0x1d, 0xac, 0x52, 0x14, 0x91, 0x21, 0x29, 0x64, 0x05, 0x53, 0x79, 0xde, - 0x41, 0x5c, 0x53, 0xe8, 0x80, 0xb2, 0x25, 0x81, 0x06, 0x6c, 0x23, 0xd0, - 0x56, 0x66, 0x51, 0x9b, 0xea, 0xa0, 0x71, 0xbe, 0x87, 0x53, 0x7e, 0xa5, - 0xe5, 0x5b, 0x88, 0x76, 0x9b, 0x3e, 0xc5, 0x52, 0x4f, 0xdf, 0x1f, 0xaf, - 0x75, 0x88, 0xd2, 0x6d, 0x23, 0xc5, 0xa9, 0x78, 0x9e, 0xac, 0x5b, 0x57, - 0x35, 0x54, 0x8e, 0xe0, 0xbc, 0x1d, 0xdc, 0x0f, 0x83, 0xf7, 0x50, 0x22, - 0xb6, 0x11, 0x5c, 0xc1, 0x9d, 0x50, 0x02, 0xac, 0xb6, 0x1e, 0xe2, 0x17, - 0x09, 0x3a, 0xcf, 0xe5, 0xb8, 0x65, 0x86, 0x81, 0x77, 0xe2, 0xa8, 0xb4, - 0x92, 0xcc, 0x33, 0xe4, 0x85, 0xc6, 0x17, 0xf3, 0x9b, 0xb9, 0xab, 0x1e, - 0x1b, 0x0c, 0xda, 0x3f, 0x3b, 0x7a, 0xb1, 0x4d, 0x60, 0x56, 0x66, 0x9c, - 0xe7, 0xf6, 0x58, 0xf7, 0xe2, 0xfa, 0x40, 0x41, 0xfb, 0x94, 0x59, 0x18, - 0xfc, 0x48, 0xe8, 0xd3, 0xce, 0x20, 0x9a, 0x25, 0xd7, 0x95, 0xe4, 0x02, - 0x80, 0x1f, 0x97, 0xc5, 0x05, 0x8f, 0x83, 0x7d, 0x57, 0xf3, 0x91, 0x14, - 0x15, 0x9d, 0x55, 0xc3, 0x7e, 0x49, 0xd9, 0xcf, 0x04, 0x8a, 0xdc, 0x36, - 0x4c, 0x6f, 0x87, 0x46, 0x09, 0x01, 0x24, 0xe2, 0x76, 0x93, 0xc9, 0xf1, - 0x00, 0x13, 0x1e, 0x52, 0x99, 0xf1, 0xd6, 0x33, 0x31, 0x9d, 0x0c, 0xb5, - 0x5f, 0x24, 0x20, 0x50, 0xd9, 0x81, 0xa9, 0x7f, 0x4b, 0xf8, 0x2e, 0xf9, - 0x4d, 0xdb, 0x21, 0x0c, 0xb1, 0xc6, 0x4f, 0x3f, 0x89, 0xf5, 0x8b, 0xe1, - 0x8a, 0x2c, 0xde, 0x86, 0x1d, 0xcc, 0xa8, 0x17, 0xc9, 0xec, 0xec, 0xcb, - 0x50, 0xb7, 0x4b, 0xf6, 0x31, 0xd2, 0x58, 0x5c, 0x78, 0x9c, 0xf7, 0x60, - 0xd2, 0x31, 0x68, 0x27, 0xeb, 0x65, 0x86, 0xba, 0xca, 0x29, 0x26, 0x2c, - 0x19, 0x57, 0xb4, 0x84, 0x63, 0x0b, 0x60, 0x23, 0x6f, 0x42, 0x8d, 0xa6, - 0xff, 0x0b, 0xb6, 0x43, 0xa3, 0xea, 0xcb, 0x6c, 0x51, 0x48, 0x1a, 0x75, - 0x87, 0x37, 0xc5, 0x4d, 0xfa, 0x5f, 0x36, 0x4a, 0xe7, 0x9a, 0x24, 0xb9, - 0x75, 0x69, 0x5e, 0x30, 0xa7, 0x29, 0x68, 0xbd, 0x58, 0xf0, 0x64, 0xcd, - 0x9f, 0xc2, 0xa5, 0x3c, 0x23, 0xac, 0xf3, 0x04, 0x0a, 0x5f, 0x8c, 0x7d, - 0x37, 0xed, 0xe7, 0x49, 0x94, 0x86, 0xce, 0x3c, 0x0b, 0xb0, 0x14, 0xda, - 0x22, 0xd6, 0x1b, 0xaf, 0x3a, 0xe0, 0xaf, 0x9b, 0x7d, 0x80, 0x88, 0x67, - 0xd8, 0x14, 0x8f, 0xd8, 0xce, 0xbb, 0x45, 0x22, 0xda, 0xb9, 0x0f, 0xd0, - 0x71, 0xce, 0x0c, 0x90, 0xf0, 0x39, 0x69, 0xc8, 0x73, 0xc5, 0xa8, 0x95, - 0xf3, 0xa6, 0x4d, 0x3f, 0xa8, 0x78, 0x55, 0xee, 0x08, 0x16, 0x70, 0x81, - 0x5b, 0x74, 0xd2, 0x90, 0x40, 0xaf, 0xe8, 0xa1, 0x65, 0xea, 0x16, 0x4f, - 0xae, 0x9c, 0xa6, 0x04, 0x94, 0xbc, 0xaf, 0xab, 0x2d, 0x1a, 0xc9, 0x4e, - 0xbc, 0xa6, 0xc4, 0x64, 0xd5, 0x68, 0x18, 0x5e, 0x06, 0xb5, 0xa7, 0x30, - 0x37, 0x2d, 0x37, 0xc2, 0xce, 0xa6, 0x3c, 0xf4, 0x7e, 0x20, 0x43, 0xad, - 0x88, 0x68, 0xb4, 0xbd, 0x43, 0x95, 0xeb, 0xb8, 0x0b, 0xee, 0xbf, 0xba, - 0xa3, 0x98, 0xff, 0x7a, 0x55, 0x9a, 0xe5, 0x94, 0x1f, 0x09, 0x32, 0x5a, - 0xf0, 0x6b, 0x99, 0x72, 0x94, 0x74, 0x8a, 0xd3, 0xff, 0x7f, 0x96, 0xf1, - 0xf8, 0xe3, 0x86, 0xf5, 0x72, 0x42, 0x2a, 0xf5, 0xc7, 0xa9, 0x06, 0x80, - 0x6a, 0x66, 0xfe, 0x37, 0xcc, 0xe9, 0xbe, 0x7f, 0x05, 0x76, 0xb4, 0x80, - 0x7d, 0x52, 0x6a, 0xe3, 0x6c, 0x6d, 0x48, 0x24, 0x96, 0xfa, 0x45, 0x2d, - 0x8d, 0x21, 0x00, 0xc8, 0x34, 0x5e, 0x2c, 0x53, 0xfb, 0x9c, 0x0d, 0xc1, - 0x75, 0xbc, 0x85, 0x9c, 0x3b, 0x78, 0x8d, 0x78, 0xac, 0x43, 0x43, 0xe6, - 0x19, 0xbf, 0x9a, 0x62, 0x4a, 0x35, 0xa3, 0xfb, 0x3e, 0xf2, 0x0a, 0x88, - 0xa4, 0xb4, 0xc8, 0x8a, 0x19, 0x36, 0xac, 0x1b, 0xe2, 0x09, 0x79, 0x1a, - 0x44, 0x0e, 0xda, 0x12, 0x6b, 0x90, 0xe9, 0xd5, 0x7c, 0xf6, 0xcb, 0x9a, - 0xb6, 0x02, 0xfa, 0x60, 0xa4, 0xd6, 0xac, 0x44, 0xd2, 0xc8, 0xd9, 0xc3, - 0x81, 0x63, 0x29, 0xf8, 0xd3, 0xd8, 0x9a, 0x37, 0xaf, 0xba, 0x7a, 0x7d, - 0xeb, 0x6d, 0x95, 0x04, 0x44, 0x6e, 0xba, 0xdf, 0x23, 0xb8, 0xca, 0x40, - 0x42, 0x6b, 0xb9, 0x86, 0xd1, 0x8f, 0x3e, 0x03, 0x3d, 0x1c, 0xc7, 0x6f, - 0xf5, 0x96, 0xbb, 0x13, 0x27, 0xb7, 0x62, 0xbe, 0x6f, 0x90, 0x84, 0x09, - 0xeb, 0x9b, 0x71, 0xf9, 0x49, 0x7b, 0x99, 0x7c, 0xf2, 0x3a, 0x25, 0x5d, - 0x88, 0x70, 0xd9, 0xdc, 0x99, 0x6e, 0xe7, 0x15, 0x88, 0xd2, 0x7b, 0xf1, - 0xf0, 0x08, 0xec, 0x2f, 0xaf, 0x40, 0xad, 0xc7, 0xb6, 0x78, 0x9b, 0x07, - 0x33, 0xc2, 0xf5, 0x05, 0x3b, 0xea, 0xbe, 0x3d, 0x3e, 0xf6, 0xc3, 0x2b, - 0xdf, 0x1d, 0x5f, 0x27, 0x91, 0xde, 0x0e, 0x35, 0x69, 0x8d, 0x3d, 0xa3, - 0x4a, 0x70, 0x9d, 0xf5, 0x66, 0xf4, 0xe2, 0xdc, 0x9c, 0xdd, 0x1b, 0x99, - 0xce, 0x3c, 0x50, 0x9c, 0xe4, 0xd6, 0xf1, 0xfa, 0xff, 0x1a, 0xb2, 0x1a, - 0x36, 0xd5, 0xe5, 0xbc, 0xcb, 0x31, 0x8e, 0x05, 0x89, 0x4a, 0x89, 0x12, - 0x6a, 0xb4, 0x4b, 0x98, 0xd1, 0x23, 0xbf, 0xc5, 0xea, 0x5c, 0x08, 0x2e, - 0xc6, 0x36, 0x7b, 0xa2, 0x57, 0x7b, 0xa4, 0xbc, 0x6c, 0x91, 0x75, 0x03, - 0x04, 0xc7, 0x46, 0x46, 0xa8, 0xff, 0xfc, 0x2b, 0xf8, 0xec, 0x7e, 0x5d, - 0x71, 0x65, 0xcc, 0x7b, 0x28, 0xad, 0xde, 0xc0, 0x0a, 0x35, 0x4b, 0x6a, - 0xd0, 0xee, 0x93, 0x88, 0x45, 0xb2, 0x83, 0xd4, 0x38, 0xc4, 0x05, 0x3a, - 0x05, 0x5f, 0xb4, 0x04, 0x13, 0x39, 0xce, 0xc3, 0xc1, 0xc4, 0xed, 0x5b, - 0x24, 0x59, 0xa6, 0xe5, 0x6c, 0xe3, 0xc7, 0xe6, 0x86, 0x1b, 0x96, 0x01, - 0xb3, 0xa2, 0xb6, 0x4a, 0xd7, 0xb0, 0x4b, 0x5a, 0xad, 0x74, 0x6a, 0x69, - 0x5a, 0xe5, 0xac, 0x3f, 0x4d, 0xb9, 0x34, 0x38, 0x3a, 0xda, 0x93, 0x12, - 0x90, 0x19, 0xcf, 0x0a, 0xa2, 0xcf, 0xaa, 0xb9, 0x89, 0x9b, 0x41, 0x92, - 0xb5, 0x24, 0xf8, 0x94, 0xe3, 0x55, 0x00, 0x8f, 0x74, 0xc6, 0x4f, 0x3c, - 0x6d, 0x1a, 0xf3, 0x85, 0x48, 0x15, 0x34, 0x7b, 0x58, 0xe1, 0xfe, 0x2b, - 0x3a, 0xec, 0xd3, 0x73, 0x1b, 0x36, 0x04, 0x96, 0x72, 0xe4, 0x13, 0x57, - 0xc4, 0x30, 0xfb, 0xb4, 0xf2, 0x6c, 0xa9, 0x9e, 0x83, 0x93, 0x3c, 0x74, - 0x42, 0xd6, 0x60, 0x25, 0x24, 0xa8, 0x0f, 0x0c, 0x73, 0xd8, 0x0f, 0x47, - 0xcc, 0xcf, 0xe9, 0xda, 0x9d, 0xcd, 0xc6, 0x61, 0x6f, 0xab, 0x52, 0x39, - 0xe3, 0x5e, 0x3b, 0x7c, 0x15, 0xdd, 0x2c, 0xf0, 0x6e, 0xfa, 0xd3, 0x63, - 0xd7, 0x39, 0x59, 0x9e, 0xe8, 0x8f, 0xc4, 0x44, 0xbd, 0xa3, 0x52, 0x8d, - 0x1d, 0xae, 0x4d, 0xdc, 0x5a, 0x8b, 0x6a, 0x61, 0x04, 0x66, 0x68, 0xdd, - 0x8f, 0x3b, 0x09, 0x65, 0xd9, 0x13, 0x86, 0x0d, 0x26, 0x88, 0xe8, 0x1a, - 0xaa, 0x5e, 0x48, 0x7e, 0xfe, 0x2b, 0xbd, 0xb1, 0xeb, 0x4d, 0xbf, 0xcc, - 0xcf, 0x46, 0xb3, 0x3a, 0x03, 0xac, 0xef, 0xcf, 0x6f, 0x85, 0x2b, 0x42, - 0x17, 0xa0, 0x8d, 0x19, 0x91, 0xc4, 0x65, 0x48, 0xe2, 0xde, 0x73, 0x5f, - 0xc7, 0x49, 0x8d, 0xe6, 0xa3, 0x28, 0xff, 0x8b, 0x16, 0xde, 0x36, 0x60, - 0x57, 0x31, 0x7a, 0xbf, 0x08, 0x74, 0x44, 0xc8, 0xc3, 0xa6, 0xce, 0x6c, - 0x9b, 0x4f, 0xe7, 0x14, 0x0b, 0xdf, 0x05, 0x90, 0x0e, 0x1e, 0x7c, 0x0d, - 0xe3, 0x8b, 0x73, 0x0b, 0x38, 0x75, 0xfe, 0xf2, 0x91, 0xbe, 0x9c, 0xae, - 0xb1, 0x77, 0xf7, 0xca, 0x25, 0xef, 0x57, 0x93, 0xde, 0xe3, 0xd5, 0xa5, - 0x26, 0x89, 0xca, 0xc3, 0x6f, 0x8f, 0x01, 0x21, 0xf0, 0xa5, 0xb1, 0xf2, - 0xbb, 0x5d, 0x39, 0x28, 0x75, 0xcf, 0x7c, 0x16, 0xff, 0x1a, 0x62, 0x7e, - 0x66, 0x1d, 0x51, 0x8c, 0x8b, 0xa6, 0xfe, 0xd1, 0x99, 0x0d, 0x20, 0xc8, - 0x4a, 0x1f, 0xca, 0x88, 0x51, 0xbd, 0xa0, 0x99, 0xeb, 0x4d, 0xc4, 0xbe, - 0x0d, 0xa7, 0xb7, 0x03, 0xbc, 0x5c, 0x83, 0x45, 0xb8, 0xa3, 0x3f, 0x03, - 0x27, 0xd0, 0xbf, 0x70, 0x58, 0xd8, 0xa4, 0x23, 0xf5, 0xb3, 0xeb, 0x9e, - 0xb5, 0xc2, 0xf2, 0xbb, 0xad, 0x6c, 0x49, 0xee, 0x7e, 0x5a, 0xb4, 0x86, - 0x09, 0x4f, 0xa1, 0x14, 0x3e, 0x1c, 0xb7, 0x8f, 0xc8, 0x4a, 0x26, 0xe8, - 0x34, 0x50, 0xed, 0xa8, 0xe5, 0x64, 0x3e, 0x1d, 0xf7, 0x2d, 0x77, 0x72, - 0x0d, 0x75, 0xc7, 0x53, 0x94, 0x68, 0x02, 0xb2, 0x98, 0x1e, 0xc2, 0x05, - 0x5e, 0x99, 0x35, 0x55, 0xec, 0x29, 0xe6, 0xa7, 0x47, 0x1c, 0x55, 0x56, - 0x79, 0x7a, 0xa3, 0x3f, 0xb4, 0xe8, 0x93, 0xb4, 0x07, 0x86, 0xc9, 0x6e, - 0x85, 0x64, 0x23, 0x44, 0x62, 0x6b, 0x79, 0x1e, 0x7b, 0xa2, 0x71, 0xdb, - 0xa1, 0xed, 0xf9, 0x06, 0x41, 0x29, 0xf1, 0x2c, 0x9d, 0x78, 0xc1, 0x4e, - 0x79, 0xce, 0xc3, 0xa8, 0x03, 0x38, 0x23, 0x40, 0xc2, 0x41, 0x4e, 0xb9, - 0x3d, 0x26, 0xce, 0x8a, 0x98, 0x58, 0xd2, 0x08, 0xf6, 0x3c, 0xfc, 0xd2, - 0xe8, 0x11, 0x5c, 0xa0, 0x5b, 0x98, 0x72, 0x5b, 0x9f, 0x1e, 0x1d, 0xf3, - 0x78, 0x42, 0x6d, 0x9e, 0xed, 0xf7, 0xb0, 0x06, 0x78, 0x48, 0x78, 0x46, - 0x9c, 0xd8, 0x7e, 0x20, 0x9c, 0xd2, 0x6b, 0x94, 0x88, 0x98, 0x88, 0x3b, - 0x16, 0x1e, 0xff, 0xa1, 0x51, 0xf0, 0xcb, 0xa3, 0x84, 0x20, 0x2e, 0x16, - 0xcd, 0xb2, 0xad, 0x75, 0xc7, 0xa3, 0x59, 0x41, 0x3e, 0x48, 0xc7, 0x1b, - 0x0d, 0x0b, 0xcd, 0x75, 0x6b, 0x00, 0x14, 0x0c, 0xa4, 0x62, 0x3c, 0xe4, - 0x76, 0xd0, 0xa7, 0x02, 0xd7, 0xa9, 0xb1, 0xc5, 0xfa, 0x98, 0xa0, 0x51, - 0xd3, 0x5d, 0xa4, 0x69, 0xbd, 0x1f, 0xed, 0x32, 0xa5, 0xcd, 0x02, 0xd2, - 0x0e, 0xed, 0x75, 0x42, 0x47, 0xd7, 0xc5, 0xd6, 0xb1, 0xb7, 0x95, 0x31, - 0xe0, 0xce, 0xf6, 0x93, 0x15, 0xd5, 0xc9, 0x5a, 0x22, 0xff, 0x8a, 0xe0, - 0x84, 0xe3, 0x40, 0xbd, 0x5a, 0x9c, 0x1b, 0x95, 0x75, 0xc6, 0x70, 0xf8, - 0x0c, 0x22, 0xc0, 0xdf, 0x88, 0x7d, 0x8b, 0xb9, 0xa7, 0x7a, 0xd1, 0x61, - 0x30, 0x26, 0x4c, 0x95, 0x30, 0x5d, 0x95, 0xf3, 0x5a, 0xa0, 0xce, 0xa9, - 0x68, 0xba, 0x4b, 0x5f, 0x59, 0xe2, 0x9d, 0x91, 0xbf, 0x2a, 0xa9, 0x3c, - 0x3b, 0xd9, 0x12, 0xb9, 0x75, 0xea, 0xfa, 0x90, 0xac, 0x80, 0xcf, 0x6f, - 0xd3, 0x14, 0x7d, 0x47, 0xad, 0xbf, 0xee, 0x1b, 0xe5, 0x94, 0xaa, 0x60, - 0xa5, 0x7f, 0x94, 0xd0, 0x87, 0x7b, 0x13, 0xaa, 0x9a, 0x14, 0x4b, 0x13, - 0x8c, 0xbf, 0xcc, 0xc7, 0x49, 0xd1, 0x58, 0x4a, 0x1a, 0x8e, 0x56, 0x04, - 0x41, 0xf9, 0x50, 0x4a, 0x28, 0x36, 0xc1, 0x8a, 0x6f, 0x0a, 0xd5, 0xb7, - 0x0d, 0x13, 0x7b, 0x6a, 0xfc, 0x1a, 0xe4, 0x07, 0x82, 0xce, 0x79, 0xc2, - 0xac, 0x47, 0x40, 0x32, 0x84, 0xd9, 0x09, 0x23, 0xf5, 0x0c, 0xc5, 0x7e, - 0x04, 0xb5, 0x77, 0x06, 0x73, 0xc2, 0x04, 0x06, 0x43, 0xb8, 0xed, 0x6e, - 0x9f, 0xd5, 0x5b, 0x68, 0x0d, 0xa3, 0x4b, 0xfd, 0x45, 0x33, 0x66, 0x92, - 0x8a, 0x6b, 0x5e, 0x98, 0xfa, 0x4c, 0x92, 0xa3, 0xc9, 0xe5, 0x76, 0xaf, - 0xbd, 0x5b, 0xc6, 0x29, 0xd3, 0xa9, 0xf0, 0x8a, 0x93, 0xfc, 0x9e, 0x6d, - 0x01, 0xde, 0x30, 0x68, 0x6a, 0x41, 0x39, 0x19, 0x13, 0xf8, 0x08, 0x43, - 0xd4, 0x17, 0xa9, 0x57, 0xc1, 0x6f, 0xec, 0xd2, 0x97, 0xed, 0x8d, 0x67, - 0x67, 0x00, 0xa6, 0x17, 0xcd, 0x9b, 0x17, 0xcc, 0x2f, 0xe4, 0x87, 0xe3, - 0xc2, 0x95, 0xbb, 0x87, 0xbc, 0x45, 0x89, 0xb5, 0x17, 0x43, 0xbe, 0xdb, - 0xd8, 0x1d, 0xfc, 0x96, 0xa4, 0x92, 0xd6, 0x26, 0x9a, 0x0b, 0xa7, 0x49, - 0x1f, 0xc7, 0x25, 0xa7, 0x44, 0x12, 0xb3, 0xf2, 0x1e, 0x29, 0x73, 0xf5, - 0x03, 0xf3, 0xb0, 0xd8, 0xf8, 0x8c, 0x28, 0xc5, 0x7b, 0xa2, 0x59, 0x09, - 0x24, 0x78, 0xd5, 0xbe, 0xd7, 0xca, 0xcb, 0x60, 0xa5, 0x88, 0x57, 0x53, - 0xf5, 0xa0, 0xe7, 0x54, 0xf8, 0xde, 0x9f, 0xa0, 0x2b, 0x4a, 0x29, 0x69, - 0xac, 0xfe, 0x7a, 0x68, 0x7d, 0x90, 0xa1, 0x52, 0xe7, 0x15, 0x35, 0x9e, - 0xaa, 0xac, 0xb5, 0xd5, 0xa9, 0x68, 0x0c, 0x34, 0xe9, 0x5c, 0x9d, 0x67, - 0x92, 0xdb, 0x3d, 0xde, 0x63, 0x41, 0x06, 0x0f, 0xa9, 0xc2, 0x10, 0xed, - 0x83, 0xb0, 0x06, 0x3e, 0x22, 0x19, 0xb5, 0x9a, 0x52, 0x6a, 0x09, 0x1c, - 0x4f, 0xc0, 0x93, 0x6d, 0x3e, 0x48, 0x09, 0xbf, 0x97, 0xf4, 0xb7, 0xba, - 0x6a, 0xbd, 0x60, 0xfc, 0x90, 0x70, 0x49, 0xcb, 0xb9, 0xbc, 0x58, 0x40, - 0x30, 0xf0, 0xc4, 0x4b, 0x86, 0xfb, 0xef, 0xef, 0xea, 0x94, 0x30, 0x77, - 0xa5, 0x29, 0x85, 0x9f, 0x2b, 0x74, 0x73, 0x32, 0x67, 0x21, 0x00, 0xe4, - 0xfb, 0x3f, 0x8b, 0xaa, 0x35, 0x43, 0x43, 0xb1, 0x4f, 0xd2, 0xe1, 0x1c, - 0xe5, 0x9e, 0x3e, 0x27, 0x0e, 0xd4, 0x84, 0xc9, 0xe7, 0x8d, 0xbc, 0x76, - 0x80, 0xff, 0xf4, 0x45, 0x69, 0x26, 0xdc, 0x5a, 0xad, 0x2a, 0xbe, 0x2e, - 0x34, 0x2d, 0xa3, 0x76, 0x4c, 0x44, 0xf1, 0xf2, 0x7b, 0x78, 0x33, 0xfd, - 0xca, 0xd4, 0x0e, 0x23, 0xd6, 0x87, 0x5b, 0xc1, 0x68, 0x12, 0x35, 0x96, - 0xcb, 0x34, 0xd1, 0xf5, 0xf0, 0x79, 0x9e, 0x55, 0x5d, 0x53, 0xf0, 0x01, - 0xb2, 0xd7, 0xff, 0x6a, 0x0b, 0x79, 0xe8, 0x73, 0x16, 0xb2, 0x21, 0x08, - 0x84, 0x4a, 0x1e, 0xb9, 0x41, 0x8f, 0x58, 0x1d, 0x98, 0xea, 0x29, 0x0b, - 0x4e, 0x43, 0xd1, 0xde, 0xd0, 0xe5, 0x79, 0x0d, 0x80, 0xad, 0x3b, 0x1d, - 0xf7, 0x02, 0xae, 0x13, 0x08, 0xca, 0x5c, 0x77, 0x3b, 0xd5, 0xfb, 0x4e, - 0xb9, 0x4e, 0xb7, 0x1d, 0xf3, 0x78, 0xd2, 0x80, 0x0d, 0x8b, 0x70, 0xa5, - 0xe9, 0xbe, 0x7b, 0x5f, 0x44, 0xac, 0xfc, 0xfe, 0xbb, 0x2d, 0x30, 0x11, - 0x79, 0x78, 0xf9, 0x0e, 0x2a, 0x67, 0x13, 0x3b, 0x5f, 0xf4, 0x7b, 0xcc, - 0x12, 0xf3, 0x5a, 0xdf, 0x54, 0x50, 0x55, 0x77, 0x21, 0xbe, 0x46, 0x15, - 0xf5, 0xf4, 0xae, 0x62, 0xe2, 0xda, 0x0d, 0xb0, 0xc5, 0xd7, 0x85, 0x16, - 0x34, 0x3d, 0xa7, 0x94, 0x58, 0x14, 0xd5, 0x13, 0x00, 0x44, 0x9c, 0x97, - 0xf9, 0xd5, 0x6e, 0x81, 0x12, 0xac, 0xae, 0x08, 0xfc, 0xb5, 0xd7, 0xfe, - 0xc3, 0xb8, 0x3e, 0x6d, 0x83, 0x6c, 0x8f, 0xf5, 0xe9, 0x6b, 0x39, 0xdb, - 0x91, 0xa6, 0x58, 0x26, 0x4e, 0x5f, 0x7a, 0xcf, 0xca, 0x18, 0xcf, 0x71, - 0xed, 0x02, 0x04, 0xa2, 0xc3, 0xf3, 0x72, 0xbd, 0x14, 0xcc, 0x0e, 0x86, - 0x72, 0x8b, 0x20, 0xf3, 0x4e, 0x13, 0x9e, 0xe9, 0x65, 0xe2, 0x14, 0x11, - 0x2c, 0x13, 0xda, 0x64, 0x15, 0x29, 0x71, 0x6e, 0x3c, 0x3d, 0xae, 0x9c, - 0x9d, 0x37, 0x91, 0xaa, 0x1b, 0x8b, 0x37, 0xd8, 0x32, 0x53, 0x14, 0xc1, - 0x7f, 0x31, 0x8b, 0xc5, 0x18, 0x14, 0x46, 0x0b, 0xd7, 0x6d, 0x3c, 0x71, - 0xba, 0xd9, 0xf3, 0xb0, 0x90, 0xf6, 0x56, 0x51, 0x15, 0x0c, 0x63, 0x9b, - 0x25, 0xa9, 0x2c, 0xd7, 0x70, 0xd3, 0x6c, 0x83, 0x78, 0x5e, 0xca, 0xc0, - 0xa8, 0x7c, 0x35, 0x02, 0xee, 0xc1, 0x53, 0x02, 0x01, 0x64, 0x95, 0x08, - 0x17, 0xce, 0x87, 0xd0, 0x6f, 0x67, 0x15, 0x1a, 0x4e, 0x1f, 0xa9, 0x23, - 0x90, 0x76, 0x66, 0x73, 0x78, 0xbd, 0x0b, 0x0a, 0x2f, 0xa0, 0x08, 0xd4, - 0xdd, 0x9b, 0x42, 0x3d, 0x5e, 0x8b, 0xaf, 0xb2, 0xa9, 0xab, 0x70, 0x08, - 0x2c, 0xc0, 0x5b, 0xdf, 0x8a, 0xe8, 0x9d, 0x84, 0x3f, 0xbc, 0xa1, 0x33, - 0x49, 0x0c, 0x9b, 0x84, 0xb3, 0x1a, 0x38, 0x85, 0x47, 0xd6, 0x68, 0x50, - 0x36, 0xc7, 0x49, 0x09, 0xba, 0x42, 0x70, 0x10, 0xe0, 0xd7, 0x77, 0xce, - 0x57, 0x7c, 0xaf, 0x6a, 0x21, 0x28, 0xb0, 0x8c, 0x80, 0x16, 0xe1, 0x9c, - 0x5b, 0x12, 0x5f, 0x72, 0x1c, 0x4d, 0x82, 0x79, 0x25, 0x60, 0x8e, 0x71, - 0x38, 0x63, 0x59, 0x0b, 0x96, 0x50, 0xdb, 0xa9, 0xe1, 0x5a, 0x89, 0x35, - 0xc4, 0xc8, 0x4f, 0xc1, 0x83, 0xd8, 0x9c, 0x8c, 0x0d, 0x5d, 0xae, 0xaa, - 0x10, 0xac, 0xd8, 0xf4, 0xb1, 0xb6, 0xa4, 0x88, 0xb7, 0x29, 0x9d, 0x22, - 0xc0, 0xd9, 0x7d, 0xc5, 0x1f, 0x4f, 0x7a, 0x52, 0xa7, 0x01, 0xdb, 0xbe, - 0xaa, 0xc0, 0x9d, 0x7f, 0x6c, 0x6a, 0x7e, 0xb6, 0x12, 0x43, 0xb4, 0x2a, - 0x4c, 0x4a, 0xfa, 0xff, 0x48, 0x77, 0x13, 0xed, 0x42, 0xae, 0xc0, 0x3c, - 0x12, 0xbd, 0xb6, 0xf7, 0xfd, 0xcd, 0x1c, 0x4d, 0x0a, 0x24, 0x84, 0xa7, - 0x93, 0xd0, 0xa2, 0x39, 0x1d, 0x02, 0x9e, 0xd9, 0x5f, 0xc5, 0x6e, 0xb2, - 0x62, 0xeb, 0x79, 0x30, 0x5c, 0x73, 0xc0, 0x88, 0x60, 0xd7, 0x33, 0xb6, - 0xb3, 0x41, 0x26, 0x35, 0xb8, 0x7f, 0x61, 0xef, 0x48, 0xe5, 0xf5, 0xd2, - 0x89, 0x6f, 0x7e, 0x10, 0xeb, 0xb2, 0xfc, 0x23, 0xd7, 0x03, 0x6b, 0xd3, - 0xcd, 0x63, 0x26, 0xeb, 0x7a, 0x7a, 0xd9, 0x0d, 0x4a, 0xef, 0xa6, 0x12, - 0xf8, 0x5d, 0x15, 0x55, 0xb1, 0xfd, 0x73, 0x8c, 0x5a, 0x73, 0x7c, 0x83, - 0x41, 0xde, 0x07, 0x32, 0xce, 0x20, 0x6a, 0x7d, 0xae, 0xb8, 0xf5, 0xa4, - 0x31, 0xdf, 0x36, 0x77, 0x2e, 0xe4, 0xf0, 0x96, 0x7e, 0x41, 0x7a, 0x2b, - 0x80, 0xa9, 0x45, 0x7c, 0x85, 0xab, 0x0f, 0x8a, 0x87, 0xd9, 0x91, 0x57, - 0xa6, 0x5f, 0xbd, 0x67, 0xae, 0x5a, 0x63, 0xb1, 0x60, 0xee, 0x4b, 0xea, - 0x95, 0x98, 0x83, 0x0c, 0x1a, 0x1a, 0xf7, 0x71, 0xbc, 0xaa, 0x5c, 0x08, - 0xe4, 0x56, 0xa9, 0x64, 0xe0, 0x58, 0x85, 0x41, 0x1f, 0x64, 0x13, 0x03, - 0x97, 0x0f, 0x97, 0x6f, 0xc2, 0x0a, 0x97, 0x49, 0x6f, 0xbb, 0xc4, 0x39, - 0xa3, 0xc6, 0xd8, 0x13, 0x77, 0x9c, 0x9a, 0xa0, 0x97, 0x16, 0xd5, 0xa7, - 0xae, 0x27, 0xab, 0x26, 0x0f, 0xb3, 0x9f, 0x6a, 0x8f, 0xe0, 0x43, 0xe0, - 0xc2, 0xb0, 0xe1, 0x6f, 0x8a, 0x03, 0x23, 0x8a, 0xf0, 0x55, 0x14, 0x7e, - 0xf5, 0x31, 0x45, 0x2a, 0xa1, 0x6e, 0x1a, 0x6b, 0x95, 0x67, 0x89, 0x4b, - 0x97, 0x83, 0xe4, 0x59, 0xda, 0xcc, 0xf1, 0x1d, 0x59, 0x72, 0xe8, 0xbe, - 0x81, 0xa4, 0xbf, 0xc7, 0x36, 0xeb, 0xf4, 0xb4, 0xf1, 0xe6, 0x17, 0xef, - 0x6d, 0x7a, 0x4a, 0xfa, 0xa1, 0x00, 0xc3, 0x97, 0x57, 0x8e, 0x2b, 0x98, - 0xd8, 0x19, 0x4a, 0xa9, 0x99, 0xbb, 0x08, 0x86, 0x62, 0xca, 0xf2, 0x34, - 0x64, 0xda, 0xd2, 0xbf, 0xbb, 0x9c, 0x2d, 0x6c, 0x0a, 0x8c, 0xe0, 0x3e, - 0x6d, 0xba, 0x43, 0x57, 0x31, 0xf6, 0xb3, 0xd9, 0x2b, 0x02, 0xab, 0xfc, - 0x0b, 0x26, 0x60, 0x57, 0x7d, 0xd8, 0x11, 0x14, 0x91, 0xae, 0xcf, 0x56, - 0x6f, 0x76, 0xdd, 0x4e, 0x14, 0xc8, 0xa8, 0x51, 0x66, 0x1e, 0xe6, 0xac, - 0x6c, 0x96, 0xef, 0x7a, 0x4c, 0x08, 0x21, 0xcc, 0x8c, 0x22, 0x67, 0x2c, - 0x79, 0x9f, 0x7d, 0x48, 0xde, 0x69, 0x35, 0x2c, 0xf7, 0x0e, 0x0a, 0x5b, - 0x91, 0xe9, 0x1f, 0x67, 0x96, 0x86, 0xbb, 0x83, 0xca, 0x1b, 0xdf, 0x92, - 0x75, 0xf1, 0x01, 0x5f, 0x95, 0x63, 0xe4, 0x73, 0xc7, 0x42, 0xed, 0x91, - 0xd4, 0x72, 0x6b, 0x0e, 0x7d, 0x01, 0xdc, 0x1d, 0x18, 0xe7, 0x25, 0x8d, - 0x9c, 0xa9, 0x6b, 0x2c, 0x73, 0x2a, 0xb5, 0x8c, 0x4b, 0xd6, 0xc4, 0xc1, - 0x89, 0xc3, 0x23, 0x1e, 0x6d, 0x7e, 0x1b, 0x99, 0xbd, 0xca, 0x05, 0xcc, - 0xee, 0x33, 0x8d, 0xe7, 0xbf, 0xf9, 0x25, 0xff, 0x1e, 0x34, 0xa7, 0x24, - 0x7a, 0x10, 0x77, 0xa8, 0xe2, 0xb2, 0xb5, 0x7c, 0xcd, 0xc1, 0xa3, 0x3e, - 0x91, 0x48, 0x38, 0xe6, 0x99, 0x99, 0xe4, 0x6f, 0x1b, 0xf0, 0x68, 0x27, - 0x27, 0x2b, 0x67, 0xd7, 0xf9, 0x89, 0xcc, 0x43, 0x0c, 0x0e, 0x1f, 0x7c, - 0x29, 0xc6, 0xdf, 0xb7, 0x45, 0x53, 0x05, 0x23, 0x69, 0x06, 0x1b, 0x4f, - 0x93, 0xac, 0x44, 0xce, 0x67, 0x37, 0x19, 0xa9, 0x28, 0x2a, 0x52, 0xb8, - 0x2e, 0x0a, 0x1f, 0x91, 0x67, 0x4c, 0x55, 0x43, 0x04, 0x81, 0x15, 0x53, - 0x60, 0x27, 0xbf, 0xe8, 0x7e, 0x1b, 0xd5, 0x0d, 0xd8, 0x6a, 0x63, 0x34, - 0x18, 0x1e, 0xce, 0x1e, 0x1f, 0x44, 0x4e, 0x44, 0x71, 0xcc, 0x4b, 0x9d, - 0x59, 0xca, 0xbf, 0xec, 0x9d, 0xeb, 0x9e, 0x96, 0x27, 0x89, 0x4d, 0x07, - 0xa3, 0x2f, 0x35, 0xd0, 0xc6, 0xe9, 0xdc, 0x05, 0xcc, 0x06, 0xaa, 0x1e, - 0xc6, 0x2d, 0x49, 0x6c, 0xf0, 0x7c, 0xc3, 0x9a, 0x7a, 0xda, 0x2f, 0x56, - 0xe1, 0xcb, 0x4f, 0x77, 0xc7, 0xfd, 0xe3, 0xb8, 0xdb, 0x39, 0x80, 0x0a, - 0x0a, 0x7b, 0x77, 0x04, 0xd2, 0xb5, 0x77, 0x31, 0x53, 0xe1, 0x4c, 0xf2, - 0x30, 0xd4, 0xcc, 0x09, 0x82, 0xa3, 0x28, 0x04, 0xd7, 0x69, 0x8f, 0xf5, - 0xc1, 0x7c, 0xf9, 0x43, 0x6d, 0xdd, 0x97, 0x83, 0x1f, 0x35, 0x7d, 0x43, - 0x40, 0x39, 0x1e, 0x0d, 0x54, 0xa1, 0x57, 0x80, 0xdf, 0x54, 0xe5, 0x9d, - 0xd9, 0x50, 0xc2, 0x9d, 0xb9, 0xae, 0xc0, 0x09, 0x73, 0x43, 0xfa, 0x13, - 0x3e, 0x8f, 0x17, 0xb7, 0x1b, 0x73, 0xf9, 0xbc, 0xf0, 0x01, 0x1d, 0x56, - 0xf5, 0x6c, 0x6d, 0xa1, 0xba, 0xb0, 0x74, 0xc7, 0x80, 0x6a, 0x34, 0x0a, - 0x06, 0x32, 0xe9, 0x86, 0xd2, 0xe4, 0x2e, 0xab, 0x85, 0x0d, 0x9d, 0x44, - 0xdb, 0xbc, 0x9f, 0x91, 0x71, 0x34, 0x00, 0xc2, 0xf0, 0xd9, 0x00, 0x20, - 0x69, 0x1d, 0xe5, 0x23, 0xe1, 0xeb, 0x34, 0x2a, 0x48, 0x0e, 0xc4, 0xfd, - 0xa4, 0xc3, 0x7e, 0xd0, 0x2f, 0x6d, 0xd5, 0x95, 0x79, 0x58, 0x64, 0xdb, - 0x0c, 0xd0, 0x10, 0xad, 0xab, 0x21, 0x43, 0xcf, 0xb2, 0x7d, 0x8f, 0x51, - 0x7f, 0xe5, 0x85, 0x36, 0x45, 0x33, 0x35, 0xb9, 0xd6, 0x01, 0x7d, 0xe3, - 0x90, 0xda, 0xc1, 0x4c, 0x38, 0x74, 0x36, 0x3a, 0x21, 0xec, 0x4f, 0x78, - 0x54, 0x48, 0x0a, 0x33, 0xc4, 0x60, 0x3c, 0xca, 0xcf, 0x3c, 0xce, 0xe0, - 0xf2, 0x1a, 0x54, 0x0f, 0x84, 0xcd, 0x21, 0x68, 0xcb, 0x63, 0x8c, 0x12, - 0xe0, 0xf1, 0x35, 0x4e, 0x7c, 0xdb, 0x36, 0x05, 0x65, 0x05, 0xc4, 0xf1, - 0x19, 0x6b, 0x74, 0xfe, 0xef, 0xa3, 0xa2, 0x51, 0xfb, 0x25, 0x85, 0xcd, - 0x6d, 0x01, 0x0f, 0xd3, 0xb0, 0xa4, 0xed, 0x4c, 0x66, 0xb5, 0x3c, 0xcc, - 0x2e, 0x38, 0xed, 0x44, 0x8c, 0xb3, 0xd0, 0xcd, 0x98, 0xfd, 0x5e, 0x39, - 0xa4, 0x0f, 0x5e, 0x7c, 0xc2, 0xb6, 0x53, 0x4c, 0xbd, 0x73, 0x57, 0xe0, - 0xe2, 0x9f, 0x59, 0x0b, 0x20, 0x02, 0x64, 0x15, 0xd4, 0x00, 0x9a, 0x64, - 0x57, 0x38, 0x1a, 0x92, 0x9d, 0x76, 0xba, 0x88, 0x43, 0x0b, 0xb0, 0xd8, - 0xcb, 0xa8, 0x63, 0x42, 0x97, 0x19, 0x4b, 0xf1, 0xfd, 0x1d, 0x03, 0x6d, - 0xa8, 0x04, 0x0f, 0x0d, 0xf6, 0xfb, 0xfa, 0x0a, 0xaa, 0x19, 0xc1, 0x22, - 0x8a, 0x22, 0xba, 0xa7, 0xfd, 0xe6, 0x96, 0xf7, 0xaf, 0x19, 0xad, 0xad, - 0xc7, 0x75, 0xea, 0xe9, 0x47, 0xb7, 0x81, 0x1f, 0x61, 0xb2, 0x5d, 0x74, - 0xac, 0x03, 0xf4, 0xd2, 0xdc, 0x58, 0x9d, 0x45, 0x26, 0x6b, 0xdb, 0x92, - 0x23, 0xab, 0x7d, 0x52, 0x75, 0x93, 0x0b, 0x8d, 0xdb, 0xd2, 0xab, 0x33, - 0xa1, 0x1e, 0x98, 0x65, 0x8e, 0x91, 0xd3, 0x12, 0xe6, 0x1a, 0xa3, 0x66, - 0x3b, 0x4f, 0x90, 0xde, 0x95, 0x6e, 0x94, 0x0a, 0x3c, 0xcc, 0x4c, 0x04, - 0xc8, 0x34, 0x5b, 0x43, 0x79, 0xc8, 0x38, 0x32, 0x1b, 0x16, 0x5e, 0xd3, - 0xfc, 0xb7, 0x21, 0xc1, 0xc8, 0x0a, 0x62, 0x20, 0xf9, 0xf2, 0x76, 0xe0, - 0x01, 0xcd, 0xbe, 0xfa, 0x13, 0x37, 0xb5, 0xd2, 0x59, 0x11, 0x0f, 0x57, - 0x18, 0x9c, 0x5a, 0x2c, 0x1a, 0x7b, 0x9e, 0x15, 0x60, 0xa9, 0x19, 0xe5, - 0xed, 0xba, 0x66, 0x71, 0x81, 0xdd, 0x7f, 0xc5, 0x53, 0x61, 0x78, 0x27, - 0xc2, 0x68, 0x7b, 0x16, 0xdb, 0x67, 0xc7, 0x74, 0x05, 0x1c, 0x90, 0x24, - 0x36, 0xc5, 0xa6, 0x8c, 0xa7, 0x26, 0x56, 0x3e, 0xd2, 0xb2, 0x43, 0x0d, - 0xf0, 0x9e, 0x50, 0x46, 0x1b, 0x89, 0x24, 0x04, 0x81, 0x69, 0xb2, 0x4b, - 0x99, 0x4e, 0x47, 0x66, 0x2f, 0xa8, 0x4e, 0xe7, 0x5f, 0xd2, 0x6b, 0x0b, - 0xdc, 0xe7, 0x5f, 0xd6, 0xb7, 0x48, 0x56, 0x8d, 0x9b, 0xe1, 0xc5, 0x69, - 0x8c, 0x87, 0x36, 0xd4, 0xae, 0x74, 0x9e, 0x77, 0xbf, 0x2f, 0x42, 0x25, - 0xb2, 0x97, 0xb1, 0x6b, 0x5a, 0x58, 0x08, 0x01, 0x7b, 0xda, 0x51, 0xf2, - 0x89, 0x80, 0x47, 0x8a, 0x37, 0xad, 0x8c, 0xd9, 0x99, 0xe6, 0xa0, 0x49, - 0x15, 0x63, 0x75, 0x91, 0x50, 0x92, 0xbd, 0x5e, 0xed, 0x41, 0xe9, 0xc1, - 0xd2, 0xe1, 0x58, 0x25, 0x7c, 0x67, 0x4e, 0x8b, 0x08, 0x78, 0x01, 0xf4, - 0xfa, 0x84, 0xa2, 0x87, 0xd6, 0x18, 0x71, 0x87, 0x66, 0x90, 0x99, 0x17, - 0xda, 0x08, 0xf5, 0x34, 0xd0, 0x5c, 0xea, 0x87, 0x78, 0x72, 0xb5, 0x18, - 0x10, 0x5c, 0x90, 0x26, 0xef, 0xc2, 0xa2, 0xb3, 0x15, 0x7f, 0x1d, 0xed, - 0xe8, 0x9d, 0x35, 0x18, 0xc4, 0x20, 0x1e, 0x5a, 0xf2, 0xa2, 0x00, 0x04, - 0x01, 0x4b, 0x27, 0xc1, 0xbb, 0xfa, 0xa4, 0xec, 0x33, 0xeb, 0xf2, 0x36, - 0xae, 0x76, 0x3a, 0x03, 0xe2, 0x2f, 0x93, 0xcb, 0xdd, 0x60, 0x65, 0xaf, - 0xf1, 0x2c, 0xee, 0x99, 0xfe, 0x01, 0x6d, 0x02, 0x2d, 0xf4, 0xf0, 0x09, - 0x22, 0x28, 0x91, 0xdb, 0x05, 0x8c, 0x09, 0xfc, 0xa9, 0x58, 0x2a, 0x6c, - 0x36, 0x11, 0x50, 0x41, 0xd5, 0xfe, 0x36, 0xf7, 0x5d, 0x22, 0xb2, 0xd7, - 0x84, 0x8f, 0xe8, 0x4d, 0x23, 0x1a, 0xc5, 0x9a, 0x33, 0xbc, 0x41, 0xa3, - 0x03, 0x12, 0xbc, 0x90, 0x5d, 0x40, 0xce, 0x03, 0xab, 0xc2, 0x2c, 0xce, - 0x7b, 0x21, 0x1f, 0xc9, 0x8f, 0x4d, 0xd2, 0x1c, 0xf4, 0xf9, 0xa7, 0x4c, - 0x93, 0xb2, 0x12, 0x25, 0x88, 0x10, 0xd3, 0xfa, 0xa7, 0x9f, 0xb9, 0x95, - 0x4d, 0x7e, 0x5d, 0x4d, 0x03, 0x8e, 0x01, 0x82, 0x67, 0xe4, 0xec, 0x45, - 0xdf, 0xa5, 0x1f, 0x47, 0x44, 0xc0, 0x2f, 0xf6, 0xa3, 0x2d, 0xfb, 0xa3, - 0xbf, 0x74, 0xc5, 0xaf, 0xa0, 0xce, 0xf5, 0x54, 0xda, 0x6e, 0x6d, 0xd5, - 0xe9, 0x67, 0x63, 0x5e, 0x8d, 0x61, 0x98, 0xed, 0x3b, 0xe4, 0x4e, 0x29, - 0x36, 0x92, 0x9a, 0x53, 0x6a, 0x75, 0x6e, 0x0e, 0xa7, 0x96, 0xec, 0x1c, - 0x0a, 0x1d, 0x83, 0x14, 0x0d, 0xeb, 0x2e, 0xd5, 0xfa, 0x02, 0x77, 0x71, - 0x2d, 0xb2, 0x40, 0x0a, 0x96, 0xcd, 0x1e, 0x95, 0xee, 0x40, 0xd3, 0x96, - 0x32, 0x43, 0x58, 0x9d, 0x91, 0xbd, 0x71, 0xcd, 0x67, 0xe1, 0x45, 0xd9, - 0x1a, 0x1b, 0xf6, 0xca, 0x2f, 0x51, 0x2d, 0x79, 0x24, 0x70, 0x3f, 0xd6, - 0x24, 0x56, 0xc0, 0xbe, 0x73, 0x72, 0x4d, 0x79, 0x3f, 0xf9, 0xe8, 0xbc, - 0xf1, 0xb0, 0x84, 0xf6, 0x49, 0x87, 0x17, 0x4d, 0xe8, 0xcb, 0xab, 0x08, - 0x57, 0xf2, 0x4f, 0x11, 0x45, 0xf1, 0x3e, 0x60, 0x82, 0xae, 0x4a, 0xd0, - 0x96, 0x7c, 0xab, 0x32, 0xf4, 0xc5, 0xd5, 0x4c, 0x2a, 0x5e, 0x41, 0xea, - 0x67, 0xd3, 0xc7, 0x46, 0xdd, 0x12, 0x55, 0x8a, 0x36, 0xf8, 0x04, 0x92, - 0x75, 0x45, 0x00, 0xea, 0x83, 0xf8, 0x0c, 0x94, 0x5f, 0xe6, 0x44, 0xec, - 0xbf, 0x5e, 0x89, 0x1e, 0xa0, 0xc9, 0xef, 0x69, 0xbf, 0x20, 0x41, 0x9f, - 0xa2, 0x4c, 0xb4, 0xca, 0x54, 0xef, 0xe7, 0xa3, 0xef, 0xcf, 0xb9, 0xc3, - 0xd3, 0x17, 0xfc, 0xf4, 0x18, 0xc1, 0xbb, 0x75, 0x0b, 0x45, 0xe5, 0x52, - 0xa3, 0x5c, 0x21, 0xbb, 0x17, 0x9a, 0x70, 0xf5, 0x87, 0x69, 0x1a, 0xe8, - 0x19, 0xb0, 0x3c, 0x15, 0x43, 0x6c, 0x4b, 0x54, 0x5f, 0xd2, 0x31, 0xc9, - 0x6d, 0x58, 0x6c, 0x01, 0xa2, 0x43, 0x3d, 0x51, 0x6d, 0x45, 0x98, 0x03, - 0x8f, 0xee, 0xb4, 0x79, 0x6e, 0xb6, 0x94, 0x79, 0x8c, 0x58, 0x53, 0x7e, - 0x12, 0x3d, 0x6e, 0xe4, 0x83, 0x3b, 0x10, 0x5b, 0xc3, 0x14, 0x0e, 0x01, - 0xaf, 0xf1, 0xc4, 0x77, 0x47, 0x29, 0x3f, 0xe1, 0xc3, 0x6e, 0x71, 0x43, - 0x32, 0x32, 0x93, 0x77, 0x71, 0xf3, 0x9c, 0xf1, 0xdc, 0xd5, 0x08, 0x82, - 0xbb, 0x62, 0x0e, 0xc4, 0x20, 0xb1, 0x07, 0xfb, 0x71, 0x93, 0xdc, 0xc1, - 0x52, 0xc2, 0x0d, 0xfc, 0x4e, 0x2b, 0x51, 0x01, 0x5c, 0x15, 0x13, 0x4d, - 0x16, 0x20, 0x30, 0x9a, 0xe2, 0x75, 0x6d, 0x65, 0x10, 0x71, 0xd7, 0xc8, - 0x59, 0x2e, 0xab, 0xac, 0x0f, 0x62, 0xf2, 0xf0, 0x7b, 0xec, 0x63, 0x0c, - 0x17, 0xb1, 0x5c, 0x78, 0x06, 0x32, 0xde, 0x8e, 0x55, 0xd8, 0xe3, 0x8f, - 0x8d, 0x2c, 0xa4, 0x44, 0xf8, 0x3e, 0x05, 0xb8, 0xa3, 0x0b, 0x66, 0xaf, - 0x0d, 0x6e, 0xa7, 0x1d, 0xbd, 0x14, 0x35, 0x32, 0xfa, 0x9b, 0xed, 0xd1, - 0xb9, 0x05, 0xc0, 0x9b, 0xfc, 0xe3, 0x16, 0x39, 0xba, 0xf8, 0x95, 0x6d, - 0x2a, 0xe5, 0x3f, 0x9e, 0xde, 0xba, 0x8c, 0x86, 0xbe, 0xf1, 0x22, 0x22, - 0xdc, 0x87, 0x6e, 0xfd, 0x4f, 0xd1, 0x8f, 0x39, 0x21, 0x8c, 0x43, 0x07, - 0xc3, 0x28, 0x89, 0x33, 0x00, 0x50, 0x06, 0x66, 0x6d, 0x5a, 0xb2, 0x37, - 0xf6, 0x48, 0x8d, 0xba, 0xfa, 0xa7, 0xd8, 0x63, 0x60, 0x6c, 0xf8, 0x28, - 0x81, 0xd7, 0xd8, 0xeb, 0x4d, 0x34, 0xd9, 0xe9, 0xd2, 0xb6, 0xdd, 0x6c, - 0x05, 0xa2, 0xb9, 0x66, 0x97, 0x50, 0x6d, 0xf9, 0x63, 0x92, 0xca, 0x30, - 0xf5, 0x90, 0x4d, 0xe7, 0x12, 0x88, 0xe9, 0x59, 0xe1, 0x41, 0xf1, 0x3a, - 0x84, 0x9a, 0x94, 0x64, 0x37, 0x8c, 0xb1, 0x60, 0x76, 0x9d, 0x1e, 0xd3, - 0xd0, 0xdf, 0xcc, 0xcf, 0x55, 0x7b, 0x37, 0xc9, 0x42, 0x76, 0xff, 0xe2, - 0x92, 0x21, 0x59, 0xfd, 0x3f, 0x60, 0xff, 0x3e, 0x4d, 0xe9, 0xb1, 0x8c, - 0xae, 0xbe, 0x20, 0x19, 0xe0, 0xe8, 0x8a, 0xcb, 0xe7, 0x18, 0x66, 0xd2, - 0x93, 0x40, 0xbf, 0xe2, 0xa7, 0x92, 0x53, 0xa8, 0xf0, 0x37, 0xd9, 0xf4, - 0xce, 0xaf, 0xfb, 0xe5, 0x19, 0xf4, 0xa5, 0xeb, 0xdd, 0x6f, 0x46, 0xdb, - 0xca, 0x62, 0x2e, 0xb8, 0xb3, 0x30, 0xac, 0x72, 0xd4, 0x2f, 0x63, 0xf4, - 0x59, 0x80, 0x50, 0x6e, 0x13, 0x5e, 0x16, 0xae, 0xae, 0x54, 0xf8, 0xdf, - 0xc6, 0x39, 0xa7, 0xff, 0x7f, 0x67, 0xc7, 0x6f, 0x97, 0x4d, 0x02, 0x9d, - 0xe1, 0x62, 0x9a, 0x7f, 0xcb, 0x8c, 0xc9, 0xb2, 0x12, 0x55, 0xfb, 0x97, - 0xa2, 0x81, 0x3a, 0xda, 0x56, 0x00, 0xc8, 0x5e, 0x90, 0x88, 0xaa, 0x0a, - 0x6c, 0x58, 0x47, 0x08, 0x46, 0x4d, 0x3b, 0xc9, 0xc5, 0xb9, 0x34, 0x78, - 0x4e, 0xd1, 0xc9, 0x9b, 0x2a, 0x77, 0x8f, 0x2b, 0xe9, 0xa3, 0x57, 0xcd, - 0x4e, 0x04, 0xb2, 0x89, 0x06, 0xbd, 0x83, 0x43, 0xe6, 0x94, 0x52, 0xe2, - 0x5c, 0x75, 0x9b, 0xd5, 0x25, 0x5e, 0xf4, 0x04, 0x30, 0x70, 0x29, 0xcc, - 0x77, 0xe5, 0x21, 0xee, 0x36, 0xf0, 0x03, 0x64, 0xdb, 0x7c, 0xca, 0xab, - 0xc3, 0xb4, 0xe8, 0x84, 0xff, 0xe6, 0x7c, 0xb3, 0xf3, 0x86, 0xec, 0x93, - 0x21, 0x1c, 0x56, 0x16, 0x4e, 0xe9, 0x6d, 0x67, 0x21, 0xfe, 0x89, 0x96, - 0x9e, 0xb8, 0x02, 0x6e, 0x7f, 0xf0, 0xe9, 0x08, 0x7c, 0x50, 0xad, 0x9f, - 0x59, 0xc6, 0xcf, 0xa6, 0xff, 0xbe, 0xf7, 0x27, 0xdb, 0x17, 0x23, 0xd9, - 0x91, 0xbc, 0x5f, 0x12, 0x9e, 0xa9, 0x58, 0x0a, 0x06, 0x39, 0x93, 0x38, - 0xa5, 0xe6, 0x31, 0xdf, 0x04, 0x3c, 0x38, 0x9f, 0xec, 0xdb, 0x87, 0x19, - 0x56, 0xe9, 0x41, 0x82, 0xfb, 0x79, 0xc7, 0x27, 0x42, 0x55, 0x95, 0x90, - 0x1c, 0x57, 0x85, 0xc4, 0xf5, 0x33, 0x69, 0x63, 0x19, 0x50, 0x14, 0x6c, - 0xce, 0xda, 0x3f, 0x53, 0x2f, 0x2b, 0xd7, 0x6a, 0x56, 0x42, 0x92, 0x5c, - 0x25, 0xbf, 0xed, 0x26, 0x7d, 0xd0, 0x11, 0xd5, 0x7f, 0xd6, 0xda, 0x7d, - 0x92, 0xff, 0xb0, 0x4c, 0x21, 0x5f, 0xc9, 0x4a, 0x3f, 0xab, 0x7d, 0x08, - 0x89, 0x9c, 0xcf, 0x42, 0x4f, 0xe6, 0x2e, 0x82, 0x25, 0x29, 0x32, 0xce, - 0x37, 0xe4, 0x4c, 0x17, 0x0b, 0x2b, 0x1d, 0x4e, 0xb5, 0x5a, 0x87, 0x79, - 0xd1, 0x48, 0x78, 0x44, 0x32, 0x0b, 0xde, 0x34, 0x9a, 0x28, 0x78, 0x18, - 0xcf, 0x25, 0x37, 0x57, 0x66, 0x22, 0x92, 0xd8, 0x34, 0xe2, 0x0a, 0xbb, - 0xa3, 0x84, 0x98, 0xdb, 0x7b, 0x5b, 0xe4, 0x9a, 0x21, 0x84, 0x46, 0xe9, - 0x74, 0xd7, 0x08, 0x23, 0x73, 0xdc, 0x6e, 0xa6, 0x23, 0x89, 0xb3, 0x55, - 0x53, 0xbc, 0x56, 0xf0, 0x6e, 0xf1, 0x29, 0x7d, 0x9c, 0x6e, 0x76, 0xc2, - 0xea, 0x77, 0x81, 0x94, 0xaa, 0xe8, 0x23, 0x34, 0x38, 0xdd, 0x1b, 0x99, - 0x5f, 0xc3, 0x25, 0x6a, 0x92, 0xc6, 0x94, 0x5d, 0x08, 0x95, 0x1f, 0x1b, - 0xc7, 0x7a, 0x01, 0x2c, 0x08, 0x45, 0xa4, 0x73, 0x9b, 0x3a, 0x76, 0xd4, - 0xbd, 0x8d, 0x75, 0x66, 0x74, 0xef, 0xad, 0x15, 0x04, 0x69, 0x76, 0x52, - 0xea, 0x5e, 0xdd, 0x86, 0x14, 0x9f, 0x07, 0x72, 0x57, 0x80, 0x50, 0x05, - 0x4b, 0xa8, 0xfe, 0x64, 0x55, 0x5c, 0x3f, 0x22, 0xe7, 0xdb, 0x89, 0x2d, - 0x04, 0x2d, 0x31, 0x33, 0xb9, 0x83, 0x23, 0x64, 0x62, 0x16, 0xf3, 0x81, - 0x52, 0x0f, 0x9f, 0x34, 0x88, 0x8b, 0x0f, 0x39, 0x0e, 0x77, 0x58, 0xc9, - 0x56, 0x93, 0x00, 0x55, 0xdf, 0x75, 0x4b, 0x65, 0x4a, 0x3b, 0x48, 0x9c, - 0x86, 0x75, 0x5c, 0x65, 0xbb, 0xbb, 0xd6, 0x21, 0xc4, 0xfd, 0x27, 0x5f, - 0x88, 0xba, 0xe0, 0xe4, 0x95, 0x4b, 0xec, 0x2a, 0x47, 0xfd, 0xd1, 0x0c, - 0x4c, 0x30, 0xeb, 0x30, 0xf9, 0xb7, 0x80, 0xfe, 0xf1, 0x3d, 0x6a, 0x7b, - 0xfc, 0x07, 0x98, 0x3e, 0x6a, 0x9b, 0x3e, 0xd9, 0x97, 0x14, 0x75, 0xd5, - 0xac, 0xec, 0xc4, 0x60, 0x6f, 0x4f, 0x79, 0xac, 0x84, 0xce, 0x42, 0x07, - 0x35, 0x52, 0x10, 0xfb, 0xdc, 0xb5, 0x48, 0xb9, 0x54, 0xdd, 0xef, 0xf8, - 0xb6, 0x0d, 0x60, 0x64, 0xf1, 0x44, 0xa7, 0x93, 0x6e, 0x82, 0x23, 0xa5, - 0x6c, 0x9f, 0x81, 0x5b, 0x71, 0x12, 0x1f, 0xe9, 0xd0, 0x53, 0x12, 0x64, - 0x30, 0x04, 0xd5, 0xf5, 0x48, 0xdb, 0x69, 0x45, 0xc7, 0xd6, 0x51, 0xc0, - 0x96, 0x7c, 0x98, 0xbe, 0x89, 0xaf, 0x11, 0x29, 0x53, 0x7f, 0x2b, 0xf4, - 0x86, 0x38, 0x6e, 0x7d, 0xc0, 0x62, 0x7c, 0xb3, 0xfc, 0x15, 0xb4, 0xed, - 0x3b, 0x10, 0x46, 0x8c, 0x57, 0x85, 0x0d, 0x0e, 0xe7, 0xc4, 0x1b, 0x7b, - 0xc1, 0x49, 0x6c, 0x9f, 0x6a, 0xfc, 0xa9, 0x97, 0x85, 0xea, 0xa6, 0x38, - 0x1f, 0x46, 0xd5, 0x38, 0x1b, 0xdf, 0xc1, 0x13, 0x71, 0xfd, 0x3e, 0xc9, - 0xab, 0xf8, 0x0c, 0xf7, 0x6a, 0xb4, 0xc1, 0xb1, 0xad, 0xf2, 0xd8, 0x6c, - 0x92, 0x82, 0x46, 0xf6, 0x44, 0xb4, 0xc6, 0x60, 0x8d, 0x7a, 0x40, 0xb0, - 0x1e, 0x6e, 0x19, 0xbb, 0xdb, 0xcb, 0x0f, 0x59, 0x2d, 0xa9, 0x63, 0x2a, - 0xf7, 0x36, 0xf6, 0x0c, 0xee, 0x3f, 0x6a, 0xa8, 0x62, 0x17, 0x5a, 0x8a, - 0xff, 0x91, 0xce, 0x56, 0xe2, 0x4c, 0xa1, 0x2a, 0xdc, 0xc7, 0x16, 0xb2, - 0x90, 0x48, 0xe5, 0x30, 0x94, 0x3a, 0x61, 0xb0, 0x83, 0xbb, 0xd5, 0xbe, - 0x06, 0x85, 0xb9, 0x5e, 0xaa, 0x5d, 0x65, 0x1c, 0xb4, 0x6a, 0xf4, 0xbb, - 0xef, 0x12, 0x3b, 0x3f, 0x85, 0x2d, 0xfd, 0x53, 0xd6, 0x1d, 0xf0, 0x62, - 0xcf, 0xd4, 0xb7, 0x5e, 0xfc, 0x80, 0x5f, 0xf8, 0x4f, 0xa9, 0x1b, 0x0c, - 0x08, 0xfe, 0xb1, 0x17, 0x1f, 0x01, 0xae, 0xaa, 0x64, 0xf3, 0xa1, 0x55, - 0x8a, 0xd3, 0x0d, 0x70, 0xa3, 0x2b, 0x6d, 0x38, 0x33, 0xb1, 0x1b, 0x39, - 0xf9, 0x7f, 0xdc, 0xb0, 0xdb, 0x86, 0x43, 0xfb, 0x0e, 0xbc, 0x79, 0x84, - 0x0c, 0xe9, 0x2c, 0xc6, 0x3d, 0xed, 0x32, 0x29, 0xc2, 0x3a, 0x22, 0xdf, - 0x91, 0x97, 0x8a, 0x8f, 0xf1, 0x30, 0x7a, 0xe6, 0x0c, 0x39, 0x91, 0xc0, - 0xd3, 0xf3, 0x68, 0xb3, 0x6d, 0x4a, 0xa1, 0x6b, 0x13, 0x43, 0xab, 0x3e, - 0xbf, 0x06, 0x7f, 0x7d, 0xf6, 0x44, 0xeb, 0x64, 0xe2, 0xfd, 0x55, 0x3f, - 0xc0, 0xe9, 0x8c, 0x90, 0x77, 0x38, 0x1c, 0x38, 0xe3, 0xa6, 0x7b, 0x41, - 0xf7, 0xf6, 0x93, 0x51, 0x1c, 0xc9, 0x69, 0xc6, 0x8f, 0xa0, 0x79, 0xc8, - 0x19, 0x42, 0x75, 0xda, 0x76, 0xbe, 0x6b, 0xfc, 0x96, 0x20, 0x7b, 0x92, - 0x0a, 0x9d, 0xe6, 0x51, 0x28, 0xc7, 0x57, 0xff, 0xa2, 0x21, 0xc3, 0xe1, - 0x06, 0x90, 0x32, 0xf7, 0x1c, 0x8d, 0xf0, 0xbb, 0xe9, 0xa6, 0x31, 0x15, - 0xa8, 0x34, 0x80, 0xc0, 0x54, 0x97, 0x46, 0x68, 0xa0, 0x8b, 0x8d, 0xf5, - 0xd6, 0x77, 0xac, 0x01, 0xa2, 0x2b, 0xcb, 0x4b, 0x72, 0xdc, 0xe3, 0x4c, - 0x09, 0xe6, 0x59, 0x19, 0x40, 0x77, 0xc1, 0xd7, 0x17, 0xf6, 0x40, 0x66, - 0x0f, 0xaf, 0xd7, 0x00, 0x6d, 0x99, 0x81, 0x4a, 0x76, 0xff, 0x78, 0x1a, - 0xa8, 0x41, 0x2b, 0xc1, 0x52, 0x38, 0x2d, 0x5a, 0x01, 0xb6, 0x8c, 0x30, - 0xf6, 0xd0, 0xcc, 0x3c, 0x01, 0x9b, 0x3c, 0x57, 0xe6, 0x06, 0x31, 0x73, - 0xd0, 0xaf, 0x18, 0x51, 0xff, 0xad, 0x76, 0x61, 0xcb, 0x2a, 0x86, 0xb8, - 0xfd, 0x43, 0xcf, 0x52, 0x3e, 0x53, 0x39, 0xff, 0xc9, 0x63, 0xd9, 0x4f, - 0xbc, 0xfc, 0x15, 0xb8, 0x88, 0x8e, 0x1a, 0x5b, 0xc8, 0x3e, 0xa3, 0x1b, - 0x8e, 0x08, 0x8d, 0x53, 0x15, 0xd5, 0x9d, 0xf5, 0x3e, 0xcc, 0x77, 0x21, - 0xec, 0x1c, 0xc9, 0x72, 0xdf, 0xf3, 0x70, 0x80, 0x05, 0x60, 0x70, 0x51, - 0x1e, 0x8d, 0x5a, 0xb5, 0xcd, 0x5a, 0x1f, 0x1d, 0xd3, 0xdf, 0x7b, 0x0a, - 0x44, 0x11, 0x44, 0xa0, 0xc4, 0x74, 0xca, 0xf3, 0xc7, 0x55, 0xbf, 0xe5, - 0x9f, 0x3a, 0x1f, 0xba, 0xaa, 0x3f, 0x32, 0xd7, 0x75, 0x36, 0x8f, 0x37, - 0x92, 0xc3, 0x1e, 0x58, 0x78, 0x15, 0x09, 0x56, 0xd9, 0xd5, 0xff, 0xcc, - 0x90, 0x8b, 0x78, 0x3d, 0x14, 0x67, 0x0c, 0x34, 0x9c, 0x70, 0xef, 0xcb, - 0xe8, 0xfc, 0x47, 0x4c, 0x3f, 0xb1, 0xea, 0xc9, 0x09, 0x77, 0x0a, 0x19, - 0x70, 0x1e, 0xf9, 0x6f, 0x59, 0x97, 0xb6, 0x10, 0xc8, 0x41, 0xe0, 0x06, - 0x4e, 0x28, 0x0b, 0xf6, 0xd0, 0xc6, 0x33, 0x3d, 0x01, 0xdc, 0xb8, 0x81, - 0x5e, 0x9e, 0x0e, 0xd1, 0x68, 0x7d, 0xd9, 0x6a, 0x36, 0x39, 0xa9, 0x6a, - 0xdd, 0xd5, 0x83, 0xd3, 0xb0, 0x00, 0x92, 0xd5, 0x39, 0x74, 0xc3, 0xaa, - 0x2e, 0x71, 0x72, 0x4c, 0x13, 0x30, 0x31, 0x57, 0x0d, 0x2b, 0x61, 0x4a, - 0x07, 0x8e, 0x93, 0xfb, 0x43, 0x5f, 0xe2, 0x56, 0xcc, 0x44, 0xd4, 0x9d, - 0x27, 0xf1, 0xc5, 0xde, 0x8a, 0x94, 0xff, 0xe9, 0x02, 0x63, 0x3f, 0x7d, - 0x92, 0x6d, 0x6b, 0x48, 0xf8, 0x4b, 0xd1, 0x86, 0x56, 0x7a, 0x51, 0x6f, - 0x52, 0x68, 0x78, 0xc5, 0x72, 0xab, 0x76, 0xd2, 0x3f, 0x60, 0x8e, 0x3d, - 0x23, 0x8c, 0x34, 0xe5, 0xe6, 0x7e, 0x8f, 0x69, 0x25, 0xe0, 0xf7, 0x1e, - 0xc0, 0x02, 0xc7, 0x96, 0x96, 0x7e, 0x63, 0xbc, 0x0b, 0x0b, 0xbd, 0xcc, - 0x0d, 0x28, 0x37, 0xb2, 0xe6, 0x91, 0xac, 0x91, 0x84, 0x67, 0x12, 0xb8, - 0x7d, 0x7b, 0x45, 0x77, 0xaf, 0x87, 0x1a, 0x99, 0x37, 0xb7, 0x61, 0x4a, - 0x6f, 0xed, 0x27, 0xc4, 0x2e, 0x68, 0xc4, 0xc9, 0xb9, 0xa3, 0xf4, 0x05, - 0xcb, 0x0e, 0x59, 0x19, 0xba, 0x63, 0x24, 0xe1, 0xf3, 0xc4, 0xde, 0xad, - 0x7b, 0x15, 0xf8, 0x71, 0x27, 0x6e, 0x7b, 0xb9, 0x7e, 0xd9, 0xb9, 0x42, - 0xc6, 0xb7, 0x7b, 0x3e, 0x33, 0x92, 0x96, 0x14, 0x3d, 0x52, 0x5a, 0x3a, - 0x44, 0xea, 0x0a, 0x2a, 0xbc, 0x85, 0xf8, 0x75, 0x48, 0x78, 0xfc, 0x34, - 0x92, 0x6f, 0x83, 0xd7, 0x2d, 0x37, 0xd8, 0xb0, 0x64, 0x6e, 0x55, 0x55, - 0x1a, 0xd4, 0x22, 0x48, 0xfc, 0x8b, 0x32, 0x20, 0x6a, 0x24, 0x71, 0x35, - 0xfe, 0x32, 0xf8, 0x00, 0x5a, 0x9d, 0x8b, 0x87, 0xcc, 0x87, 0x71, 0xd4, - 0xf2, 0x5c, 0x32, 0x12, 0xef, 0x7f, 0x5d, 0xad, 0xb9, 0x22, 0xd3, 0xf7, - 0xb5, 0xb2, 0xe5, 0xef, 0xa0, 0x1b, 0x8b, 0xa2, 0xb2, 0x4d, 0xc7, 0x72, - 0x6c, 0x33, 0xe0, 0x6e, 0x6f, 0x7c, 0x75, 0x42, 0x5f, 0xfa, 0x31, 0x3e, - 0x51, 0xbd, 0x4b, 0x11, 0x49, 0xe0, 0x5c, 0x0d, 0xed, 0x75, 0x36, 0x21, - 0x4f, 0x34, 0x76, 0x02, 0x0c, 0x30, 0x7a, 0xbb, 0x5f, 0x62, 0x13, 0x85, - 0x36, 0x20, 0xe6, 0x2a, 0x01, 0x36, 0x3c, 0x49, 0x1f, 0xa0, 0x5f, 0x99, - 0xe5, 0x01, 0xc7, 0x6e, 0xcc, 0x9c, 0x39, 0xef, 0x18, 0xf6, 0x10, 0xd8, - 0x98, 0xa6, 0xdd, 0x8b, 0x79, 0x4f, 0xad, 0xf7, 0xd1, 0xdc, 0xdf, 0x9b, - 0xd1, 0xfe, 0xaf, 0xd2, 0x34, 0x6a, 0xd9, 0x02, 0xd1, 0x2f, 0x27, 0xd3, - 0xbc, 0xf8, 0x64, 0x3c, 0x52, 0x8a, 0xb2, 0x39, 0x20, 0x79, 0xc2, 0x5c, - 0xef, 0x6e, 0x74, 0x46, 0xc1, 0xd9, 0xf7, 0x6e, 0xc1, 0x06, 0xac, 0xe8, - 0xa1, 0x36, 0x85, 0x8c, 0x06, 0x9d, 0xea, 0x90, 0x81, 0x10, 0xc1, 0x25, - 0x61, 0x40, 0x2d, 0xe3, 0x51, 0x5e, 0x4b, 0xaf, 0xe8, 0xcd, 0x3c, 0xd9, - 0xc0, 0x93, 0x25, 0x99, 0xc1, 0xca, 0xd5, 0x10, 0xa4, 0xf6, 0x53, 0x8b, - 0x1d, 0xe5, 0x73, 0xcd, 0x6e, 0x97, 0x9e, 0x04, 0xe4, 0x70, 0x69, 0x50, - 0x8a, 0x77, 0x7c, 0xe6, 0x9a, 0x8c, 0x5d, 0xe9, 0x04, 0x81, 0x9f, 0x22, - 0x4a, 0x76, 0xf4, 0xcf, 0xe2, 0x9f, 0x3f, 0x2d, 0x19, 0x0b, 0x23, 0x04, - 0x45, 0xef, 0xea, 0x00, 0x49, 0x5c, 0x99, 0x3f, 0xad, 0x09, 0x1c, 0x8f, - 0xeb, 0x6d, 0xcf, 0x79, 0x90, 0x93, 0x15, 0xa8, 0xff, 0xaf, 0x22, 0xcb, - 0x56, 0xae, 0x76, 0x45, 0xab, 0x25, 0x0d, 0xb7, 0x3d, 0xf7, 0x04, 0x12, - 0xa3, 0x0a, 0x7b, 0x0a, 0xb2, 0xac, 0xe4, 0xfc, 0x1c, 0x19, 0xe3, 0x51, - 0x4a, 0x24, 0xde, 0x45, 0xf0, 0xe6, 0x50, 0x93, 0x02, 0x56, 0xd0, 0xe2, - 0xb7, 0x44, 0x7a, 0x95, 0xfc, 0x5b, 0x8c, 0x88, 0xbd, 0x24, 0x9b, 0x5c, - 0x42, 0xd0, 0x64, 0x62, 0xb0, 0xb5, 0x3a, 0xdd, 0xc8, 0x53, 0x94, 0x9f, - 0x68, 0x03, 0xa1, 0x37, 0xbc, 0x69, 0xec, 0x50, 0x0a, 0xe9, 0x8d, 0x19, - 0x38, 0xc6, 0x36, 0x05, 0x62, 0x00, 0x66, 0x8a, 0x8c, 0xae, 0x3a, 0xf9, - 0xfd, 0x82, 0xe9, 0xb4, 0x61, 0x81, 0x37, 0x13, 0x6c, 0x1f, 0x2d, 0x62, - 0xaa, 0x29, 0xa6, 0xc6, 0xde, 0xd8, 0xe0, 0xdc, 0x9a, 0x2f, 0xf3, 0x33, - 0x75, 0x55, 0xc3, 0x9e, 0x98, 0x17, 0x57, 0xe7, 0x92, 0x0a, 0xb7, 0xeb, - 0x87, 0x47, 0x0e, 0x24, 0xc0, 0x1a, 0x9d, 0x83, 0x2c, 0xa5, 0x6e, 0x97, - 0x67, 0xc7, 0xd1, 0x7c, 0x8a, 0x0e, 0xd4, 0x83, 0x7a, 0x7e, 0x61, 0x8d, - 0xab, 0x6b, 0xdd, 0xf7, 0x96, 0x70, 0xa1, 0xb8, 0x05, 0xaf, 0x64, 0x35, - 0x3e, 0x0f, 0xab, 0x3d, 0x76, 0xea, 0x5c, 0x61, 0xde, 0xdb, 0x5a, 0xea, - 0x63, 0xfe, 0x52, 0x47, 0x54, 0xbb, 0x27, 0x9e, 0x66, 0xa3, 0x18, 0x4a, - 0xf9, 0x84, 0xd8, 0xa9, 0x14, 0x48, 0x58, 0xb6, 0x88, 0x9e, 0xde, 0xf3, - 0x19, 0x01, 0xa3, 0x82, 0x78, 0xad, 0xcc, 0xfd, 0xf3, 0x8f, 0xb1, 0xa2, - 0xab, 0xe7, 0x39, 0x7e, 0x15, 0xd3, 0x31, 0xb5, 0x22, 0x27, 0xec, 0xb3, - 0x39, 0xbb, 0x83, 0xf6, 0xc4, 0xab, 0xb4, 0x0e, 0xc0, 0x83, 0xa9, 0x24, - 0xba, 0x12, 0x95, 0xb0, 0xa0, 0x1f, 0x3a, 0xe4, 0x21, 0x40, 0xa7, 0x19, - 0xf7, 0xab, 0xa0, 0xed, 0x56, 0xe7, 0xac, 0xd6, 0x13, 0xdb, 0x0f, 0x5a, - 0x14, 0x81, 0x05, 0xfb, 0x25, 0xff, 0x54, 0x1d, 0x94, 0x32, 0x25, 0x52, - 0x6a, 0x9c, 0x92, 0x78, 0x25, 0xe3, 0x23, 0x47, 0xd5, 0x76, 0xf0, 0x86, - 0xf3, 0x73, 0x11, 0x54, 0x8c, 0xc7, 0x81, 0xcd, 0xfc, 0xbe, 0xc1, 0xf2, - 0xa3, 0x24, 0x3e, 0x4d, 0xb4, 0x60, 0xa3, 0xd3, 0x4a, 0x84, 0x8b, 0x13, - 0x0c, 0xab, 0x0c, 0x2e, 0x40, 0x2a, 0x35, 0x5a, 0x1a, 0xcc, 0xfb, 0x57, - 0x5e, 0x70, 0x9f, 0x4e, 0x19, 0x88, 0xe0, 0x2c, 0x26, 0xca, 0x88, 0xbb, - 0x53, 0x6b, 0x55, 0x59, 0x6e, 0x7b, 0x11, 0x72, 0x00, 0xc4, 0x98, 0x16, - 0xdd, 0x38, 0x1d, 0x8e, 0x9f, 0x91, 0x1c, 0x83, 0x45, 0xec, 0xe2, 0x79, - 0xb8, 0x64, 0x98, 0xb4, 0x73, 0x65, 0x3a, 0x74, 0x85, 0x7e, 0x0f, 0x6e, - 0xc5, 0x17, 0xd8, 0x6f, 0xe1, 0xb2, 0xef, 0x56, 0x5c, 0x83, 0xcf, 0x49, - 0x6c, 0x33, 0xcc, 0xae, 0xdc, 0xde, 0xc7, 0x85, 0x14, 0xc7, 0x33, 0xfe, - 0x80, 0xb3, 0x28, 0x03, 0x27, 0x37, 0xf1, 0x98, 0xd5, 0x2f, 0x00, 0x14, - 0x2e, 0xbe, 0xd9, 0x9a, 0x38, 0x0b, 0xef, 0x2f, 0xbe, 0x9c, 0x95, 0x54, - 0x01, 0x11, 0x3a, 0xf6, 0xca, 0x75, 0x85, 0xb4, 0xdd, 0xa3, 0x99, 0x86, - 0xfd, 0xa9, 0xd5, 0x92, 0xe0, 0xd7, 0x91, 0x49, 0x85, 0xac, 0xe5, 0x0c, - 0xc2, 0x42, 0x4e, 0x1c, 0xe8, 0x83, 0x50, 0x4e, 0xd8, 0xe5, 0xdb, 0x32, - 0xca, 0x19, 0x17, 0x3b, 0x88, 0x47, 0x24, 0xb6, 0x68, 0xe5, 0xe3, 0xdc, - 0x9f, 0xde, 0x0a, 0x01, 0xeb, 0xe7, 0x67, 0x72, 0x48, 0xe6, 0xfd, 0x41, - 0xd4, 0xbd, 0x28, 0x8d, 0x5e, 0x00, 0xf9, 0x65, 0xfe, 0x82, 0xf6, 0x48, - 0x64, 0xc5, 0xfa, 0x8b, 0xb2, 0x70, 0x07, 0xad, 0xc2, 0xb0, 0xf8, 0x8f, - 0x3b, 0x95, 0x79, 0xa3, 0x62, 0x6f, 0xeb, 0x51, 0x20, 0xf5, 0x27, 0x12, - 0x23, 0xa2, 0xfb, 0xb0, 0x50, 0x6c, 0x37, 0x3f, 0x2e, 0xe6, 0xbc, 0xbf, - 0x87, 0xb4, 0xe8, 0x46, 0xd5, 0xbc, 0xe6, 0x10, 0x46, 0x4e, 0xc3, 0x33, - 0x65, 0x05, 0xde, 0x5b, 0xb3, 0xfc, 0x42, 0x0d, 0x44, 0x25, 0x5b, 0x99, - 0x49, 0x6c, 0xdd, 0xea, 0x18, 0x07, 0xcf, 0x82, 0xd4, 0x40, 0xd8, 0xfc, - 0x4f, 0xfc, 0x63, 0x50, 0xbe, 0x16, 0x90, 0x84, 0xff, 0x53, 0x4a, 0xbf, - 0x83, 0x1a, 0x17, 0xba, 0x3e, 0xaa, 0x4b, 0x54, 0x47, 0x55, 0x84, 0x57, - 0x67, 0x4f, 0x7b, 0x8d, 0xd4, 0x92, 0xa2, 0xc3, 0x24, 0x1b, 0xae, 0xf6, - 0x70, 0x1f, 0xa9, 0xab, 0xf0, 0x42, 0xa1, 0xcb, 0x7f, 0xdc, 0xe0, 0xf6, - 0x91, 0x0b, 0xde, 0x8e, 0x84, 0x8d, 0xff, 0x4e, 0x2d, 0x73, 0x32, 0xfc, - 0xf0, 0xea, 0x55, 0x0f, 0xfc, 0x28, 0xc9, 0x28, 0x50, 0x27, 0xdf, 0x13, - 0xd3, 0x36, 0x08, 0xfb, 0x5d, 0x67, 0x94, 0x5b, 0x7e, 0x29, 0x5b, 0x60, - 0x41, 0xaa, 0xcd, 0xd9, 0x51, 0xa8, 0x8e, 0xe7, 0x75, 0x36, 0x83, 0xfc, - 0xee, 0xa8, 0x55, 0xbe, 0xa3, 0xa9, 0xd4, 0x8b, 0x57, 0xa9, 0x42, 0xff, - 0x2a, 0x84, 0xc0, 0x61, 0xb3, 0xf9, 0xc8, 0x4d, 0xd0, 0x57, 0x45, 0x26, - 0x00, 0xf7, 0xac, 0x71, 0x45, 0xe2, 0xf0, 0xed, 0xc4, 0xd5, 0xba, 0x7c, - 0x16, 0x09, 0xba, 0xe6, 0x93, 0x6e, 0x8d, 0x3b, 0xd6, 0x60, 0x64, 0x91, - 0xa4, 0x66, 0x51, 0x02, 0x28, 0x12, 0x14, 0xa5, 0x07, 0xf5, 0xc4, 0x84, - 0x2c, 0x27, 0xd1, 0x24, 0x89, 0x61, 0x8e, 0x6e, 0x1c, 0xc5, 0x6a, 0xbe, - 0x74, 0xb5, 0x9c, 0xdc, 0x0d, 0x2e, 0xf6, 0x18, 0x9f, 0x4a, 0x39, 0x69, - 0x13, 0x22, 0x9a, 0xe7, 0xf6, 0x78, 0xf2, 0x48, 0x71, 0x42, 0x2b, 0x88, - 0x21, 0x35, 0x0c, 0x78, 0x5f, 0xa6, 0x14, 0x90, 0x85, 0x69, 0x7b, 0x90, - 0x38, 0xe3, 0x39, 0x49, 0xa2, 0xba, 0x21, 0x27, 0xbc, 0x92, 0xbb, 0x37, - 0x3a, 0x8d, 0xa6, 0xb5, 0xd3, 0xd6, 0xe6, 0x17, 0x92, 0x45, 0x43, 0xb2, - 0x79, 0x46, 0xbd, 0xc4, 0x94, 0xa3, 0xb2, 0x46, 0xce, 0xe7, 0x25, 0x82, - 0x26, 0x7a, 0x24, 0x88, 0x53, 0x46, 0xc5, 0x2c, 0x8c, 0xa1, 0xb1, 0xf8, - 0x1c, 0xcc, 0x87, 0xd7, 0x6c, 0x46, 0x63, 0xe1, 0x22, 0x1b, 0xb6, 0x1e, - 0x47, 0xba, 0x29, 0x6f, 0x6d, 0x28, 0x35, 0x44, 0x9d, 0x89, 0x08, 0x38, - 0xc4, 0xd4, 0xc1, 0xcc, 0x75, 0x67, 0x91, 0xbc, 0x55, 0xcb, 0xe2, 0x61, - 0x6b, 0xa1, 0x54, 0x44, 0x31, 0xdb, 0x4a, 0x7a, 0x97, 0x3d, 0xb4, 0x66, - 0x9b, 0x93, 0xe3, 0x44, 0xc3, 0x5c, 0x23, 0x35, 0xa5, 0x1b, 0x38, 0xdb, - 0x6a, 0xb4, 0xbf, 0x72, 0x0a, 0x5c, 0xbd, 0x4d, 0x3f, 0x19, 0x55, 0x5c, - 0x6a, 0x3e, 0xc3, 0x19, 0xa5, 0x41, 0x9d, 0xb1, 0x15, 0x0f, 0x73, 0xfd, - 0x6b, 0x65, 0xa4, 0x7e, 0x29, 0x73, 0xcc, 0x80, 0x96, 0x52, 0x5a, 0xce, - 0x82, 0xdd, 0xdb, 0x61, 0x56, 0xe8, 0xa1, 0x8f, 0x47, 0x03, 0x3e, 0xe9, - 0x66, 0x68, 0x4e, 0x01, 0x31, 0xd2, 0x1e, 0xb4, 0x75, 0xa1, 0x8d, 0x99, - 0xf3, 0x6d, 0xd9, 0x49, 0x8b, 0xb7, 0xc9, 0xde, 0x53, 0x8c, 0x06, 0xb4, - 0x10, 0x71, 0x79, 0x69, 0x4f, 0x0c, 0xb8, 0xf6, 0xb3, 0x5e, 0x06, 0xb1, - 0x27, 0xcc, 0xd5, 0xb8, 0x39, 0x91, 0x2c, 0xe3, 0x79, 0xb9, 0xcd, 0x03, - 0x8a, 0x18, 0xcb, 0xc4, 0x40, 0x14, 0xf3, 0x44, 0x54, 0xc7, 0xaf, 0x4d, - 0xa3, 0xff, 0x91, 0x26, 0x69, 0xfd, 0xd1, 0x92, 0x42, 0x45, 0xdc, 0x63, - 0xb3, 0xbe, 0xd6, 0xc1, 0xe0, 0x13, 0xb9, 0xc1, 0x9c, 0xe6, 0xef, 0x9a, - 0x80, 0x46, 0xc3, 0x73, 0xfb, 0x09, 0x13, 0x33, 0x79, 0xaf, 0x36, 0x5c, - 0x3c, 0xf4, 0x23, 0x72, 0x82, 0x4c, 0xbd, 0xd7, 0x73, 0xc4, 0x18, 0x86, - 0x7b, 0xa5, 0x25, 0x90, 0x2c, 0xc5, 0x8f, 0xac, 0x0b, 0x5b, 0x7a, 0xec, - 0x0b, 0x9e, 0x64, 0x73, 0x38, 0x36, 0x94, 0xc0, 0x80, 0x78, 0xab, 0xde, - 0x47, 0x20, 0x0f, 0x34, 0x15, 0x64, 0x9d, 0x8a, 0x27, 0xc0, 0xcd, 0xc6, - 0xcb, 0xe9, 0x43, 0x97, 0x88, 0xe2, 0xb7, 0x47, 0x33, 0xff, 0xc3, 0x37, - 0x7e, 0x90, 0x21, 0x3c, 0xe1, 0x9d, 0x97, 0x84, 0x8c, 0x11, 0xb4, 0x75, - 0xb7, 0x24, 0xdd, 0xde, 0x99, 0xff, 0x44, 0xab, 0xbc, 0x22, 0xd4, 0x18, - 0x51, 0x62, 0x71, 0x0f, 0x45, 0xd0, 0xaf, 0xb4, 0x82, 0x0d, 0x70, 0xfa, - 0xc1, 0x34, 0xc9, 0x56, 0x78, 0x3f, 0x85, 0x9b, 0x60, 0x95, 0x30, 0x96, - 0xe1, 0x02, 0x8c, 0x07, 0xf0, 0x83, 0x24, 0x49, 0x9a, 0xc0, 0x84, 0x79, - 0xb9, 0x1d, 0x98, 0xf0, 0x51, 0xd7, 0x64, 0xa0, 0xe3, 0x80, 0xf0, 0xa1, - 0x2f, 0xde, 0x52, 0x79, 0x45, 0xa3, 0x9c, 0x62, 0xb5, 0x32, 0xd6, 0x86, - 0x9e, 0xda, 0xed, 0x65, 0x67, 0xee, 0xdc, 0x15, 0x07, 0x65, 0x63, 0x9d, - 0x78, 0x84, 0xf2, 0x03, 0xad, 0x14, 0x79, 0x8f, 0x8d, 0xd6, 0x5c, 0xc9, - 0x62, 0x0c, 0x29, 0x01, 0xc5, 0xbb, 0x81, 0x21, 0x0b, 0x38, 0xcc, 0x64, - 0x0f, 0x4f, 0xac, 0x57, 0xdf, 0x89, 0xcd, 0x82, 0xcc, 0x6f, 0xca, 0x9c, - 0xb7, 0xe2, 0x24, 0x76, 0xa7, 0x3b, 0xe9, 0xd6, 0x7b, 0x53, 0x7c, 0x82, - 0xdf, 0xf3, 0x9f, 0xb7, 0x20, 0x62, 0xde, 0xac, 0x09, 0x3e, 0x36, 0xd8, - 0x98, 0x91, 0x63, 0x98, 0x79, 0xde, 0xd7, 0x26, 0x21, 0x45, 0x72, 0x46, - 0xd6, 0xa0, 0xba, 0x81, 0xc0, 0x2f, 0xe1, 0x82, 0xbd, 0x83, 0xa1, 0x21, - 0x04, 0x71, 0xc5, 0x3b, 0x2e, 0xe7, 0xb1, 0x5f, 0x33, 0x04, 0xf6, 0xcd, - 0xc1, 0x2d, 0x85, 0xa0, 0xad, 0x56, 0x8c, 0x91, 0x27, 0xd1, 0x77, 0x7f, - 0xca, 0xdb, 0xc5, 0xd8, 0x81, 0xe4, 0x90, 0x0c, 0x1b, 0xaf, 0xaf, 0xae, - 0x68, 0x88, 0x25, 0x24, 0xa2, 0x70, 0xa5, 0xe9, 0xec, 0x63, 0x6e, 0x8e, - 0xc6, 0xfb, 0x08, 0x85, 0x3f, 0xf9, 0x34, 0x01, 0xa3, 0x8b, 0x59, 0x3c, - 0x37, 0x40, 0x44, 0xcb, 0x16, 0x58, 0xdc, 0xb3, 0x5b, 0x7a, 0xb4, 0x64, - 0x02, 0x7c, 0x30, 0x67, 0x18, 0xdc, 0x10, 0x7a, 0x54, 0x1a, 0x2e, 0xf7, - 0xef, 0x88, 0x97, 0xd0, 0x76, 0x2f, 0xf6, 0x49, 0x12, 0x15, 0x7a, 0xbe, - 0x31, 0x7a, 0x45, 0x1e, 0x08, 0x11, 0x1a, 0xa5, 0xbb, 0xc0, 0xb9, 0xc8, - 0x7e, 0x64, 0x44, 0xa7, 0x57, 0x6a, 0x4c, 0x0f, 0x0d, 0x93, 0x47, 0x0d, - 0x1c, 0xb2, 0xa2, 0xd8, 0xeb, 0x5f, 0x1d, 0x1b, 0x1c, 0xad, 0x5f, 0xf5, - 0xea, 0x92, 0x2d, 0x77, 0x1d, 0xf7, 0x03, 0xa1, 0xc1, 0xab, 0x97, 0x12, - 0xfa, 0x95, 0x18, 0x63, 0x1f, 0x2b, 0xf1, 0x32, 0x35, 0xe2, 0x93, 0xae, - 0x4b, 0xfb, 0x83, 0x83, 0x6c, 0x3c, 0xed, 0x0f, 0x8a, 0xb8, 0x9f, 0x50, - 0x02, 0xad, 0x3f, 0x8e, 0xbd, 0x85, 0x50, 0x18, 0x7b, 0xd3, 0x62, 0xfc, - 0xb9, 0x9a, 0x86, 0xd9, 0x65, 0xff, 0x96, 0x66, 0xe4, 0x85, 0xc8, 0xd7, - 0x83, 0x90, 0xaf, 0x52, 0x0e, 0x00, 0xd0, 0x9f, 0x82, 0xa6, 0x6c, 0x63, - 0x8d, 0x2a, 0xcd, 0x11, 0x32, 0x8f, 0x08, 0xa3, 0xe1, 0x85, 0x89, 0xf4, - 0x10, 0x40, 0x97, 0x4d, 0x92, 0xd6, 0x5d, 0xd7, 0xa7, 0x60, 0x7d, 0x3e, - 0x88, 0x71, 0x70, 0x86, 0xc2, 0xd4, 0x66, 0x18, 0x89, 0x83, 0x6f, 0x2e, - 0x08, 0x6f, 0xe4, 0xde, 0x37, 0x5a, 0x21, 0x49, 0x64, 0xcf, 0xf7, 0xad, - 0xe7, 0x16, 0x0d, 0xf6, 0xa8, 0xe0, 0x81, 0x05, 0x39, 0x02, 0x20, 0x01, - 0xcf, 0xcc, 0x22, 0x5c, 0x49, 0x95, 0x0d, 0x65, 0x67, 0xe5, 0x80, 0xe5, - 0x25, 0xe1, 0x25, 0x45, 0x24, 0x36, 0xb2, 0xc7, 0xd0, 0xd2, 0x9d, 0xe3, - 0xc1, 0x7d, 0x90, 0x43, 0x9a, 0x54, 0xc6, 0x58, 0x98, 0x86, 0x5c, 0xea, - 0xd9, 0xcb, 0x15, 0xdc, 0xa2, 0x39, 0x2e, 0x33, 0xac, 0x1e, 0x63, 0xe4, - 0x7e, 0x07, 0x8a, 0x00, 0x1a, 0x7b, 0xc3, 0x6e, 0xb8, 0x9b, 0x3b, 0x04, - 0x9e, 0x8c, 0xbe, 0x37, 0x2b, 0x6f, 0xa1, 0xca, 0xb7, 0x01, 0x38, 0x20, - 0x16, 0xc5, 0xa1, 0x11, 0xad, 0x11, 0x0f, 0x69, 0x2b, 0x8d, 0x94, 0x91, - 0x41, 0xfb, 0x37, 0xe0, 0x45, 0x2e, 0x47, 0xa4, 0xca, 0x2b, 0xf7, 0x79, - 0xf5, 0xe1, 0xff, 0xb1, 0x02, 0xff, 0x52, 0xdf, 0x2c, 0xd8, 0x4a, 0x15, - 0xe0, 0x90, 0x2b, 0x99, 0x51, 0x95, 0xc7, 0x25, 0xfa, 0x8d, 0x9b, 0xe5, - 0x52, 0x1c, 0xdf, 0x96, 0x37, 0x62, 0x93, 0x64, 0xf9, 0x86, 0x90, 0x45, - 0xde, 0x26, 0x7e, 0xd5, 0x5f, 0xcc, 0xfc, 0x33, 0x1a, 0xc2, 0xdc, 0x57, - 0x41, 0xa4, 0x43, 0xc9, 0xce, 0x90, 0xe6, 0x5c, 0x01, 0xf6, 0x2e, 0x9b, - 0x01, 0x14, 0x46, 0x54, 0x64, 0xdb, 0x02, 0x9f, 0xa9, 0x86, 0x1d, 0x47, - 0x57, 0x6c, 0x55, 0x2b, 0x81, 0x29, 0x71, 0x3c, 0xf4, 0xc3, 0x14, 0xb6, - 0x31, 0x94, 0x59, 0xba, 0xf1, 0x61, 0x6d, 0x28, 0x55, 0x65, 0x9c, 0x2e, - 0x08, 0xcb, 0x11, 0x97, 0xce, 0xa4, 0xdc, 0x73, 0xc5, 0xda, 0x45, 0x9b, - 0xea, 0xb3, 0x54, 0x0c, 0xe5, 0xb9, 0x22, 0x78, 0x7d, 0xb8, 0x6e, 0xe1, - 0x07, 0x19, 0x0c, 0xee, 0x70, 0x56, 0x32, 0xcf, 0x06, 0x2e, 0x15, 0x0c, - 0x11, 0xe5, 0x19, 0x30, 0x4f, 0xc5, 0x33, 0x79, 0xa0, 0x3d, 0x00, 0xea, - 0x26, 0x08, 0xa3, 0x0e, 0xa4, 0x88, 0x5a, 0x72, 0x20, 0x59, 0xa0, 0xa9, - 0x88, 0xde, 0x42, 0x39, 0x87, 0x43, 0x48, 0x00, 0xbf, 0x16, 0xae, 0x2f, - 0xb4, 0x1c, 0x82, 0x33, 0x2a, 0xff, 0xb9, 0xab, 0xf9, 0x1d, 0xa4, 0x3b, - 0xbc, 0x27, 0xf3, 0x58, 0x3e, 0xae, 0x15, 0x96, 0x54, 0x5c, 0x42, 0xd2, - 0xff, 0x23, 0x1c, 0x5f, 0xfe, 0xd8, 0xea, 0xa0, 0xc3, 0x4d, 0x73, 0x83, - 0x09, 0x3e, 0xde, 0xc2, 0xf9, 0xa6, 0xf9, 0xff, 0xba, 0x2e, 0x53, 0xc7, - 0x36, 0x72, 0xa2, 0x48, 0x48, 0xb1, 0x25, 0x9c, 0x47, 0x9a, 0x62, 0x8a, - 0x41, 0xaa, 0xbe, 0xfb, 0xe2, 0x32, 0x8a, 0xb4, 0x58, 0x7c, 0xb3, 0x56, - 0xb9, 0x68, 0x06, 0x74, 0xff, 0xbc, 0x55, 0xe1, 0x09, 0xed, 0xc6, 0x79, - 0xa6, 0x67, 0x4d, 0x07, 0x6d, 0x7a, 0x67, 0xae, 0xb7, 0xa4, 0xa2, 0x44, - 0xb8, 0x68, 0x00, 0x0d, 0xc0, 0xb8, 0x39, 0x91, 0x6a, 0xc5, 0x28, 0xf4, - 0x71, 0x12, 0xa6, 0x7a, 0x10, 0x44, 0xa2, 0xb3, 0x88, 0xa4, 0x82, 0x73, - 0x70, 0xbd, 0xeb, 0x30, 0x36, 0xae, 0x93, 0x3b, 0x73, 0xce, 0xa2, 0x3c, - 0x6e, 0x88, 0x5f, 0xf4, 0x87, 0x7a, 0x6a, 0x74, 0xca, 0x0a, 0x04, 0x92, - 0x55, 0x7c, 0x0c, 0x9d, 0x9a, 0x04, 0x3a, 0xd2, 0x21, 0x9b, 0x8b, 0xb8, - 0x11, 0x72, 0xf4, 0xd7, 0xb6, 0x3c, 0xb6, 0xb6, 0x4b, 0xb6, 0xed, 0xc9, - 0xf3, 0x2b, 0x4d, 0x9d, 0x20, 0x5e, 0x38, 0x28, 0xfa, 0xb1, 0x71, 0x7a, - 0xb0, 0x1c, 0xfb, 0x56, 0x46, 0x9e, 0x17, 0xe2, 0x5c, 0x28, 0xbd, 0x6b, - 0xe6, 0xc1, 0xb2, 0x06, 0x23, 0x2c, 0x4a, 0x7b, 0xa9, 0x9d, 0xef, 0x8e, - 0xc0, 0x1f, 0x94, 0x38, 0xf7, 0xc9, 0x9f, 0x0b, 0x02, 0x52, 0xfa, 0x86, - 0xf2, 0xe0, 0x75, 0x66, 0x02, 0x09, 0x09, 0xb5, 0x1c, 0xc8, 0x1f, 0xdd, - 0x87, 0x87, 0xe4, 0xba, 0xab, 0x87, 0xb5, 0x64, 0xda, 0x8b, 0x51, 0x24, - 0x53, 0x08, 0x35, 0x95, 0x73, 0xc0, 0xce, 0xae, 0x71, 0xf9, 0x4d, 0x34, - 0xb6, 0x25, 0x86, 0xd1, 0x84, 0x05, 0xb9, 0xfd, 0xa4, 0x5e, 0x30, 0xcf, - 0x21, 0xda, 0x67, 0xcb, 0x21, 0x5f, 0xb8, 0xbd, 0xc7, 0x34, 0x61, 0xc7, - 0x4c, 0x08, 0x37, 0xe5, 0xca, 0x56, 0xcd, 0x17, 0x01, 0xc8, 0xe0, 0x7e, - 0xe1, 0x58, 0x3b, 0x14, 0x83, 0x35, 0xeb, 0x41, 0x22, 0x67, 0xa4, 0x6c, - 0x80, 0x2a, 0x36, 0x82, 0x13, 0x26, 0x35, 0x0e, 0x1d, 0x97, 0xca, 0xf8, - 0x6f, 0x0a, 0xea, 0x70, 0x62, 0xab, 0x45, 0x4c, 0xc5, 0x57, 0xae, 0x4d, - 0x06, 0xd2, 0x52, 0xf0, 0xc3, 0xe9, 0x68, 0x0b, 0xb6, 0xc9, 0x53, 0x8c, - 0xb0, 0x14, 0x10, 0xf9, 0x92, 0xdd, 0x6c, 0x1f, 0xfa, 0xee, 0xef, 0x25, - 0x7c, 0x91, 0xa1, 0x18, 0x5c, 0xf1, 0x88, 0xe6, 0x39, 0x0c, 0xa7, 0xae, - 0x90, 0xf3, 0x69, 0x50, 0x76, 0xac, 0x4c, 0x75, 0xdf, 0xe2, 0x36, 0x8e, - 0xbb, 0x02, 0x86, 0x05, 0x26, 0x3a, 0x14, 0x0a, 0x20, 0x1d, 0x8f, 0xc8, - 0xa5, 0x4a, 0xd0, 0xef, 0x1b, 0x7b, 0x6e, 0x8c, 0xca, 0x4e, 0xfe, 0xf1, - 0x23, 0x8b, 0x47, 0xce, 0xd2, 0x56, 0x52, 0xe5, 0x09, 0xc6, 0xfc, 0x42, - 0xdc, 0xa7, 0x53, 0x4c, 0x88, 0xa7, 0x7a, 0x8f, 0xf7, 0xa4, 0x6d, 0x36, - 0x48, 0x2e, 0x76, 0x21, 0xdc, 0xdd, 0x0a, 0xb6, 0x14, 0xee, 0xd5, 0xe1, - 0xa2, 0x25, 0x8f, 0xb6, 0xb2, 0xbf, 0xff, 0xad, 0xcc, 0xf8, 0xb7, 0x44, - 0x0c, 0x30, 0x24, 0x86, 0x64, 0x00, 0x99, 0x0f, 0xc9, 0xf9, 0x63, 0x01, - 0x25, 0x70, 0xc5, 0xab, 0x00, 0xa3, 0x60, 0x8c, 0x7f, 0xa2, 0x8a, 0xb6, - 0xec, 0xa7, 0x69, 0x92, 0xb1, 0xa1, 0xd5, 0xf3, 0x69, 0x5f, 0x77, 0x8a, - 0xba, 0x9e, 0xca, 0xd8, 0xe7, 0xf7, 0x4b, 0x03, 0x8f, 0x8d, 0x0f, 0x5d, - 0x9f, 0x65, 0x2f, 0xd8, 0x1a, 0xd2, 0xe6, 0x6c, 0x34, 0xab, 0x38, 0x53, - 0x2e, 0xbd, 0x52, 0x6c, 0xea, 0xca, 0x7b, 0x8c, 0x90, 0x14, 0x65, 0x02, - 0xb1, 0xd4, 0x8d, 0xdd, 0x40, 0x9f, 0x91, 0x5b, 0xb7, 0x35, 0x0a, 0x65, - 0xe0, 0xd5, 0x30, 0xf3, 0x5d, 0x51, 0xb6, 0x51, 0x33, 0x2c, 0xd1, 0x60, - 0x2e, 0x08, 0x18, 0x4d, 0xc3, 0xf5, 0x63, 0x5c, 0x95, 0xa5, 0xfe, 0xb0, - 0x8f, 0x7d, 0x79, 0x96, 0xe6, 0xd9, 0x52, 0x70, 0xf1, 0xed, 0xb5, 0x61, - 0x21, 0xcd, 0xa6, 0xb1, 0x7b, 0x0b, 0x99, 0x12, 0x4f, 0x21, 0x31, 0xa8, - 0xb3, 0x75, 0x53, 0xfe, 0x39, 0xa9, 0xa8, 0xbe, 0x00, 0x77, 0x69, 0x61, - 0xcb, 0xd1, 0xb8, 0x29, 0x31, 0x68, 0xb6, 0x28, 0x6e, 0x5d, 0xea, 0xdf, - 0xa3, 0x33, 0x70, 0xb3, 0xdf, 0x4c, 0xb0, 0xa5, 0xb0, 0xdd, 0x29, 0x13, - 0xd6, 0x0a, 0xad, 0xbf, 0xc3, 0x13, 0x83, 0x58, 0x5c, 0xa5, 0x9a, 0x2f, - 0x82, 0x0f, 0x20, 0x27, 0xec, 0x4d, 0x3d, 0x7b, 0xf1, 0x66, 0x9d, 0x81, - 0xdd, 0xf1, 0x87, 0xd2, 0x72, 0x1f, 0x6e, 0x41, 0x8d, 0x66, 0xec, 0x2a, - 0xae, 0xa1, 0x53, 0x2b, 0xa2, 0x4f, 0xbc, 0x4f, 0xd8, 0x3d, 0xce, 0x8e, - 0x86, 0xeb, 0x72, 0x82, 0x96, 0x13, 0x3c, 0x12, 0xfc, 0xa4, 0x56, 0x7b, - 0x99, 0xa1, 0x8c, 0xa1, 0x98, 0x50, 0x86, 0x40, 0x82, 0xf5, 0x54, 0x0c, - 0x59, 0xe5, 0x61, 0xe4, 0x11, 0x02, 0x6e, 0x86, 0x4c, 0xbc, 0xfd, 0xbd, - 0x5a, 0xb4, 0x3d, 0x5d, 0x4e, 0x31, 0x63, 0x33, 0x20, 0x3b, 0x3b, 0x34, - 0x58, 0xba, 0x73, 0x14, 0xa3, 0x7d, 0xd2, 0x11, 0xe7, 0x35, 0x43, 0xf8, - 0x04, 0x81, 0x1c, 0x8f, 0xdb, 0xfa, 0x15, 0x21, 0x9b, 0xc1, 0x03, 0xd4, - 0x4d, 0x16, 0xc3, 0x3f, 0x6a, 0x86, 0xb3, 0x99, 0x31, 0xfe, 0x22, 0x9d, - 0xbb, 0x2b, 0x8e, 0x4c, 0xd5, 0x33, 0x02, 0x3a, 0xbe, 0xe7, 0xe4, 0x2d, - 0xc6, 0xa8, 0x4f, 0xda, 0x7c, 0xf5, 0x09, 0x2e, 0x46, 0xa0, 0x78, 0x64, - 0xb4, 0x41, 0x0f, 0x97, 0x8d, 0x93, 0xb6, 0x4d, 0x28, 0x38, 0x6f, 0x4e, - 0xc9, 0x70, 0xf9, 0xc4, 0x56, 0xed, 0x33, 0xf3, 0x36, 0xb1, 0x4f, 0x12, - 0x2e, 0x18, 0x6a, 0x03, 0x06, 0x11, 0x54, 0x5d, 0xd1, 0xb5, 0xe9, 0x11, - 0xff, 0x11, 0x76, 0x78, 0x88, 0x7f, 0x94, 0x23, 0x8b, 0x13, 0xd8, 0x14, - 0x42, 0x32, 0x68, 0x1b, 0xd1, 0x0c, 0x3c, 0x67, 0x7d, 0x6e, 0xc6, 0xfe, - 0xfb, 0x97, 0xff, 0x40, 0x6b, 0xd8, 0x83, 0x62, 0x53, 0x3b, 0x94, 0x00, - 0x0a, 0xae, 0xb5, 0x76, 0xca, 0x18, 0xc9, 0x07, 0x9d, 0x0d, 0xa8, 0xc0, - 0xa5, 0x2b, 0x94, 0xe3, 0x79, 0x39, 0x1e, 0x8b, 0x3d, 0xe9, 0x59, 0xd3, - 0x91, 0xbe, 0x7a, 0xa8, 0x10, 0x6d, 0xc1, 0xe1, 0x10, 0xa5, 0xb4, 0x0d, - 0x5b, 0x26, 0x80, 0x42, 0xbb, 0xeb, 0x18, 0x85, 0xc3, 0xfb, 0xb0, 0x71, - 0x60, 0x5c, 0x46, 0x5e, 0xf2, 0x25, 0xef, 0x0b, 0x83, 0xd4, 0x7c, 0xa1, - 0x95, 0xc9, 0xfc, 0xa7, 0x4d, 0xe5, 0xbe, 0x75, 0x22, 0xe5, 0x97, 0xe3, - 0x30, 0x4a, 0x08, 0x59, 0xce, 0xaf, 0xbc, 0x95, 0x24, 0x0b, 0x94, 0xe1, - 0x69, 0x29, 0xd4, 0xea, 0xfa, 0xc3, 0x45, 0x39, 0x57, 0x08, 0x77, 0x93, - 0x72, 0x1c, 0xce, 0xfc, 0xc6, 0xf5, 0x70, 0x0e, 0x99, 0x52, 0x17, 0xad, - 0x53, 0x94, 0xbe, 0xce, 0x04, 0xc5, 0xf3, 0x0c, 0xaa, 0x85, 0xcf, 0x51, - 0xb2, 0x37, 0x99, 0x19, 0xe3, 0x1f, 0x85, 0x09, 0x31, 0x2f, 0xcf, 0x21, - 0xd7, 0xd2, 0x72, 0x91, 0xa4, 0x48, 0x21, 0x47, 0x1e, 0x33, 0xb3, 0xcd, - 0x6a, 0x93, 0xd9, 0x95, 0x0a, 0x2a, 0xe5, 0x6b, 0x42, 0x92, 0x89, 0x72, - 0x88, 0x56, 0x60, 0x21, 0xf1, 0x7c, 0x60, 0xc8, 0x54, 0xe6, 0xd1, 0x93, - 0x44, 0x32, 0x66, 0x41, 0x30, 0xac, 0x41, 0x5a, 0x74, 0x9c, 0x02, 0xd4, - 0x10, 0xb9, 0xbf, 0xa4, 0x1a, 0xb0, 0x46, 0x8f, 0x77, 0xf6, 0x7d, 0xe4, - 0x3a, 0x77, 0x64, 0x30, 0x21, 0x20, 0x64, 0x02, 0x2b, 0xba, 0xa4, 0xea, - 0x01, 0xaa, 0xc9, 0x26, 0x0f, 0x58, 0xa3, 0xac, 0xff, 0x2c, 0x68, 0xee, - 0xba, 0xb3, 0xf0, 0x0f, 0x72, 0xb8, 0x7f, 0x58, 0x76, 0xc6, 0xd2, 0x9f, - 0x19, 0x7f, 0xd1, 0xaa, 0xae, 0x6d, 0x95, 0xab, 0x65, 0x06, 0xf6, 0x2e, - 0xdf, 0x00, 0xf1, 0x8d, 0x0e, 0x9b, 0xc6, 0x4a, 0x70, 0x82, 0x69, 0xf1, - 0x30, 0xf8, 0xf7, 0xb0, 0xe2, 0x9a, 0x91, 0xff, 0xab, 0x46, 0xf7, 0xbc, - 0x52, 0xb7, 0x7d, 0x5e, 0x18, 0x53, 0x8e, 0xca, 0x89, 0x85, 0x36, 0x78, - 0x71, 0x6d, 0xaa, 0x57, 0x05, 0xe5, 0xfc, 0x3a, 0xfb, 0xfc, 0xbf, 0x9a, - 0x53, 0x8c, 0x6d, 0x20, 0xc6, 0x49, 0x12, 0xb1, 0x32, 0xb6, 0x16, 0x2b, - 0x68, 0xcd, 0x90, 0x46, 0x5d, 0xf9, 0xfb, 0xe4, 0x2a, 0xd6, 0x01, 0x8a, - 0x9d, 0x2e, 0x2f, 0x6c, 0xb0, 0xcf, 0xc7, 0x6d, 0x39, 0xea, 0xdc, 0x7e, - 0x8f, 0x5c, 0xd1, 0xa7, 0x53, 0xdb, 0x9f, 0x82, 0x01, 0xa8, 0x3f, 0x85, - 0x2c, 0xa9, 0x12, 0x69, 0x0c, 0x81, 0x16, 0xff, 0xa2, 0xa4, 0xcb, 0x31, - 0x6a, 0x0c, 0x2e, 0x6d, 0xf2, 0x49, 0x75, 0x8e, 0xdf, 0xfd, 0xb1, 0xd1, - 0x43, 0xd6, 0x1d, 0x86, 0x22, 0xb4, 0x94, 0x6b, 0x48, 0x01, 0xef, 0xcb, - 0x84, 0x56, 0x76, 0x38, 0x30, 0x71, 0xf2, 0x77, 0x30, 0xd0, 0x90, 0x97, - 0x50, 0x83, 0xf6, 0xd0, 0xfa, 0xaf, 0x4e, 0x4c, 0xd1, 0x00, 0x8c, 0x5c, - 0x61, 0x6b, 0x5a, 0x06, 0x75, 0xfc, 0x92, 0xae, 0xf8, 0x16, 0xcc, 0xed, - 0x43, 0x33, 0xa2, 0xb0, 0x04, 0xab, 0xff, 0x32, 0xab, 0x4a, 0x7a, 0xe1, - 0x79, 0xb4, 0x89, 0x06, 0x54, 0x84, 0xb0, 0xfb, 0x31, 0x8c, 0xbf, 0x04, - 0x61, 0xe4, 0xf0, 0x36, 0xa4, 0xa6, 0x72, 0x69, 0x18, 0xdb, 0x61, 0x99, - 0xa2, 0x4f, 0xed, 0xf1, 0x80, 0xae, 0x77, 0x61, 0x38, 0x88, 0xd8, 0xbe, - 0xa3, 0x1f, 0x55, 0xe6, 0xb1, 0xc3, 0xdf, 0xb3, 0xd5, 0x25, 0x41, 0xde, - 0x97, 0xbd, 0xc8, 0x8d, 0x2d, 0x50, 0xd7, 0x6c, 0x1f, 0xeb, 0x06, 0x01, - 0x7d, 0x6f, 0x41, 0x28, 0x0c, 0x64, 0xa0, 0x5c, 0xae, 0x33, 0x0b, 0xb9, - 0xaa, 0xf7, 0xe7, 0xb2, 0x19, 0xa1, 0x59, 0xe3, 0xc9, 0xc9, 0x6c, 0x9f, - 0x6a, 0x57, 0x17, 0x22, 0x77, 0x48, 0x5b, 0x53, 0xcd, 0xb0, 0x10, 0xd7, - 0xc0, 0x4d, 0x45, 0xd2, 0x43, 0x2c, 0x2f, 0x72, 0x80, 0x15, 0xf7, 0x82, - 0x7f, 0x03, 0x02, 0x1d, 0x7e, 0xbd, 0xfa, 0x48, 0x73, 0xe3, 0x0a, 0xfd, - 0x39, 0x90, 0xfb, 0x1a, 0x16, 0xa1, 0xf7, 0x14, 0xf9, 0x46, 0x22, 0x3a, - 0x3a, 0x85, 0x21, 0x2d, 0x47, 0x7b, 0xd9, 0x74, 0x78, 0x05, 0x93, 0xd1, - 0x1d, 0xed, 0x34, 0x3d, 0x74, 0x19, 0xf9, 0x88, 0x58, 0x9d, 0x1f, 0x32, - 0xee, 0x47, 0xbe, 0xa8, 0xac, 0x10, 0x9f, 0xf6, 0xee, 0xf4, 0x84, 0x6b, - 0xfb, 0x45, 0xd8, 0x63, 0xa3, 0x64, 0x51, 0x14, 0xe6, 0x3e, 0xc0, 0xb6, - 0x1e, 0xa1, 0xeb, 0x39, 0x59, 0xc4, 0x76, 0xc0, 0x9f, 0x9b, 0xe8, 0x4e, - 0x67, 0xd3, 0xff, 0x9f, 0x35, 0x0d, 0xdf, 0xaf, 0xef, 0xca, 0x6f, 0x08, - 0x93, 0x5f, 0x55, 0xa1, 0xa0, 0x5e, 0x9a, 0x56, 0x05, 0xbc, 0xb2, 0x20, - 0x57, 0x52, 0xdc, 0x83, 0xd1, 0x6c, 0xa1, 0x03, 0x71, 0xe6, 0x0d, 0xc2, - 0x31, 0x7e, 0x1c, 0xd9, 0xfe, 0x05, 0xa0, 0x2d, 0xe9, 0x2b, 0xcb, 0xcd, - 0x86, 0x24, 0xf9, 0x13, 0x41, 0x72, 0x2f, 0xa0, 0x29, 0x15, 0xbd, 0xa1, - 0x0f, 0xb3, 0x28, 0x32, 0x8f, 0xda, 0xc0, 0xa1, 0xe7, 0xaa, 0xec, 0x3a, - 0x18, 0xe8, 0x07, 0xaa, 0x70, 0xa2, 0x39, 0xae, 0x99, 0x42, 0x4e, 0x7d, - 0x13, 0xb2, 0x91, 0x93, 0x2e, 0x83, 0x7b, 0xc2, 0x36, 0xc4, 0xc9, 0xf5, - 0x55, 0xad, 0xd2, 0x56, 0x33, 0x43, 0x2b, 0xf1, 0x00, 0xa1, 0x6f, 0xcb, - 0x76, 0x54, 0x23, 0x22, 0xf5, 0x2d, 0x3c, 0x7a, 0x61, 0x33, 0x04, 0x3d, - 0x62, 0xe9, 0x49, 0x91, 0x7a, 0xe5, 0x12, 0xe5, 0xab, 0x95, 0xbd, 0x3d, - 0xff, 0x85, 0x94, 0x55, 0x4d, 0x23, 0x86, 0x08, 0xf9, 0xd6, 0x11, 0x1d, - 0xc4, 0xdd, 0x22, 0xa3, 0x76, 0xe7, 0x97, 0x32, 0x26, 0xc1, 0xbe, 0x5b, - 0x60, 0xcc, 0x56, 0x3d, 0x9f, 0xfd, 0x4a, 0x5a, 0x26, 0x57, 0xfc, 0x4f, - 0xd4, 0xa0, 0xc2, 0xc5, 0x39, 0xb9, 0xf0, 0x03, 0x70, 0xb9, 0x63, 0x90, - 0x1b, 0xae, 0x3c, 0x92, 0xf5, 0x6b, 0x44, 0xcf, 0xa5, 0x21, 0x75, 0x79, - 0xeb, 0xa9, 0x4e, 0xf7, 0x90, 0x07, 0x6f, 0x13, 0x2d, 0x0d, 0xff, 0xe3, - 0xbf, 0x7e, 0x42, 0xee, 0xde, 0x1b, 0xec, 0xc2, 0xb5, 0x31, 0x58, 0x1d, - 0xa5, 0x51, 0x3c, 0x85, 0xd1, 0x71, 0xec, 0xb9, 0x03, 0x2c, 0x40, 0xff, - 0x40, 0xae, 0xa4, 0x7f, 0xb1, 0xd8, 0xb7, 0xb1, 0x37, 0x95, 0x62, 0xa5, - 0x11, 0x20, 0xd4, 0xb3, 0x80, 0xed, 0x1e, 0x66, 0xd7, 0x5c, 0x4c, 0xe1, - 0xc5, 0xe1, 0x3e, 0xdf, 0xfe, 0x91, 0xe6, 0x5a, 0xaa, 0xb7, 0x82, 0x70, - 0x8e, 0xad, 0x31, 0x74, 0x96, 0x0e, 0x06, 0x98, 0x52, 0x33, 0x5e, 0xc6, - 0x9c, 0xb3, 0xe9, 0x65, 0x67, 0x65, 0xe1, 0x5c, 0x58, 0x03, 0x45, 0x18, - 0x65, 0x06, 0x6a, 0x4d, 0xde, 0x5a, 0x92, 0xfe, 0xc0, 0x37, 0x0b, 0x40, - 0x8b, 0x6a, 0xcb, 0x27, 0x18, 0x89, 0xc8, 0x1a, 0x38, 0x00, 0x85, 0xd0, - 0x9b, 0x32, 0xfe, 0xfc, 0x63, 0xb4, 0xaa, 0xe4, 0xb7, 0x92, 0xcd, 0xb2, - 0x54, 0xfc, 0xbb, 0x65, 0xaa, 0xf4, 0x23, 0xb6, 0xaf, 0x8e, 0xba, 0x29, - 0x05, 0x13, 0x8b, 0x59, 0x5b, 0xcf, 0x6a, 0xcb, 0x3a, 0xb9, 0x77, 0xb7, - 0x4d, 0x18, 0x7b, 0x25, 0x30, 0x06, 0xb4, 0x8d, 0xb7, 0x01, 0x60, 0x1a, - 0xa8, 0x3d, 0xaa, 0xca, 0xc1, 0x19, 0x32, 0xc4, 0xdf, 0x2c, 0x07, 0x8e, - 0xbf, 0xbf, 0xac, 0x55, 0x9e, 0xb9, 0x96, 0x17, 0xf4, 0x02, 0x0d, 0xe1, - 0xd6, 0x2c, 0x23, 0xe2, 0x67, 0x51, 0x20, 0xb8, 0x32, 0xf8, 0xe1, 0x81, - 0x1d, 0x14, 0xf0, 0x08, 0x74, 0xf8, 0x4c, 0xc5, 0x56, 0x5d, 0x3e, 0x12, - 0xa5, 0xd8, 0x2d, 0x85, 0xfb, 0xf3, 0xfa, 0xac, 0xf9, 0xee, 0x17, 0x40, - 0x04, 0x37, 0xe5, 0x22, 0x50, 0x81, 0xe0, 0x6f, 0xcc, 0x82, 0x87, 0x99, - 0x09, 0xdd, 0x52, 0x3e, 0x8e, 0xa1, 0x07, 0x84, 0xfb, 0x1b, 0xd0, 0xb7, - 0xad, 0x97, 0x27, 0xb1, 0xa9, 0xa3, 0x29, 0x4f, 0xbe, 0x8a, 0x9c, 0x9d, - 0xaf, 0x7a, 0xab, 0x4e, 0x4b, 0xae, 0xb6, 0xfb, 0xfe, 0x95, 0x31, 0xc1, - 0xc9, 0xfb, 0x91, 0x1f, 0x44, 0x0b, 0x06, 0xde, 0xdc, 0x9b, 0x5c, 0xbe, - 0xd1, 0x33, 0x84, 0x1b, 0xf2, 0x5c, 0x7d, 0xec, 0xe5, 0x02, 0x1d, 0x7e, - 0xb8, 0x3f, 0x29, 0x5a, 0x3a, 0x00, 0x46, 0x5a, 0xdd, 0x8d, 0x85, 0x39, - 0xb0, 0xe7, 0xd8, 0xb2, 0x01, 0x96, 0xc9, 0x06, 0x1e, 0xec, 0xe7, 0x49, - 0x51, 0xe4, 0x73, 0xab, 0xa5, 0x85, 0x55, 0x40, 0x93, 0x13, 0xea, 0x49, - 0xec, 0xaa, 0x18, 0xc3, 0x81, 0xfb, 0x64, 0x04, 0x3f, 0x9e, 0x7b, 0x86, - 0xd3, 0xcc, 0xb3, 0x6e, 0x54, 0xe4, 0xb6, 0xbf, 0xd5, 0xcc, 0xe4, 0x09, - 0x02, 0x01, 0x15, 0xdc, 0xdc, 0x52, 0x48, 0x8f, 0xc4, 0x37, 0x25, 0xf0, - 0xf5, 0x14, 0x54, 0x94, 0x2f, 0xca, 0xef, 0x1f, 0x0f, 0xe9, 0x67, 0x32, - 0xd8, 0x39, 0xd1, 0x0f, 0x64, 0x7b, 0x28, 0xa8, 0x58, 0xc8, 0x52, 0xa6, - 0x42, 0x7a, 0xfe, 0xa0, 0xf4, 0x11, 0x31, 0x19, 0x8f, 0xc1, 0x3b, 0x0d, - 0x5d, 0x21, 0x00, 0x3c, 0xef, 0xa0, 0x63, 0xd3, 0x01, 0x74, 0x11, 0x7f, - 0xc3, 0xfd, 0xe9, 0xec, 0xa6, 0x5d, 0xdb, 0xb9, 0x5d, 0x35, 0xbb, 0xd6, - 0x6f, 0xaf, 0x4d, 0xd8, 0x41, 0x7f, 0x71, 0x45, 0x0e, 0xc6, 0xf4, 0xd4, - 0x70, 0x0a, 0x2d, 0x53, 0x8a, 0x59, 0x54, 0x52, 0x7c, 0x80, 0xd9, 0x1e, - 0x6f, 0xce, 0x46, 0xe9, 0x99, 0x1e, 0x7d, 0x5d, 0x79, 0x33, 0x40, 0x3c, - 0x16, 0xef, 0xeb, 0x19, 0xb0, 0xf7, 0xc3, 0x70, 0x24, 0x88, 0xfa, 0x58, - 0x1f, 0x92, 0xce, 0x20, 0x99, 0x35, 0x65, 0x2d, 0x3b, 0xf7, 0x9a, 0xc1, - 0xa9, 0x15, 0x47, 0x25, 0x51, 0xcd, 0x01, 0xe6, 0x46, 0xcc, 0x8c, 0xaa, - 0x7b, 0x96, 0xd6, 0x44, 0x54, 0x86, 0x71, 0xa9, 0xbe, 0x59, 0xfd, 0xde, - 0xec, 0x2c, 0x70, 0x40, 0x85, 0x2e, 0x74, 0x5d, 0xdb, 0x33, 0x77, 0x3b, - 0xa0, 0x85, 0x50, 0x16, 0x29, 0x7e, 0x34, 0x70, 0xe6, 0x48, 0x88, 0x43, - 0xf2, 0x56, 0xd4, 0xf9, 0x06, 0x94, 0x7f, 0x54, 0x92, 0x5e, 0xc2, 0x8b, - 0x34, 0xaa, 0x4c, 0x31, 0x99, 0xe3, 0xa6, 0x45, 0xcd, 0x37, 0x77, 0x2f, - 0x91, 0xbf, 0xa7, 0x4d, 0xf1, 0x36, 0x23, 0x72, 0xa7, 0xb8, 0xb2, 0xeb, - 0x5e, 0xa9, 0x73, 0x32, 0x1d, 0x09, 0xc2, 0x13, 0xe5, 0x30, 0xfd, 0x7c, - 0x1a, 0x3e, 0xda, 0xea, 0x41, 0x76, 0xdd, 0x74, 0xc5, 0x41, 0x96, 0x84, - 0x0b, 0x5f, 0x7c, 0x60, 0x66, 0xe3, 0x16, 0xf9, 0xe9, 0x40, 0x34, 0x5c, - 0x2e, 0xc3, 0xf1, 0xfc, 0x08, 0xd4, 0xe3, 0xc0, 0xde, 0x60, 0x19, 0x8d, - 0xd8, 0x72, 0x07, 0x8a, 0x08, 0x09, 0x48, 0x2f, 0x9b, 0x76, 0xc9, 0x09, - 0xe7, 0xb8, 0x79, 0x18, 0x1f, 0x97, 0x35, 0x90, 0x74, 0x30, 0x0b, 0x77, - 0x8e, 0x21, 0x6b, 0x13, 0xdb, 0xd9, 0x3c, 0x8a, 0x2a, 0xea, 0x6e, 0x74, - 0x76, 0x6a, 0x6a, 0x79, 0xb7, 0x52, 0xee, 0x06, 0x0d, 0x26, 0x23, 0x26, - 0x3c, 0x04, 0xe5, 0xf3, 0xb4, 0x84, 0x4a, 0x8d, 0xef, 0xa5, 0xaa, 0x00, - 0x8d, 0x85, 0xcb, 0xb4, 0xcd, 0xa8, 0xc7, 0xa4, 0x41, 0x93, 0x5a, 0x3f, - 0xf6, 0xc3, 0x3a, 0x30, 0xc5, 0x7f, 0x29, 0x2d, 0x6b, 0xb3, 0x7a, 0x9b, - 0x7d, 0xed, 0xda, 0xe8, 0x5f, 0x7f, 0x04, 0x48, 0xc4, 0x11, 0x01, 0x15, - 0x55, 0x09, 0xff, 0xc3, 0x7b, 0x2b, 0x34, 0xd2, 0x0e, 0xf8, 0x2c, 0xea, - 0x37, 0x7d, 0x8f, 0x46, 0x89, 0x5b, 0x44, 0x85, 0xe5, 0x42, 0xab, 0xb1, - 0xc0, 0x12, 0x4c, 0x40, 0xd1, 0x86, 0xfc, 0x06, 0x6a, 0x14, 0x35, 0x23, - 0x04, 0xfd, 0x6d, 0x6e, 0x68, 0xbb, 0x82, 0x5d, 0x5c, 0x97, 0x77, 0xb9, - 0x8e, 0xbd, 0x20, 0x81, 0xe1, 0x96, 0x93, 0x0f, 0x64, 0xca, 0xc3, 0xc0, - 0x99, 0xb9, 0xca, 0x80, 0x02, 0x2e, 0xb7, 0xce, 0x48, 0x39, 0xc4, 0xae, - 0xf9, 0x9f, 0x3f, 0x9d, 0x90, 0x4c, 0x68, 0x52, 0x8c, 0x7f, 0x9c, 0x0b, - 0x89, 0x6c, 0xe0, 0xf0, 0x73, 0x00, 0xc8, 0xa5, 0x78, 0x0e, 0x46, 0x34, - 0x61, 0x2c, 0x96, 0xea, 0xd6, 0x3f, 0x61, 0x09, 0xfe, 0x89, 0x9d, 0x90, - 0xc1, 0xc4, 0xe3, 0x5f, 0x93, 0x93, 0xbf, 0x71, 0x67, 0x62, 0xca, 0xc8, - 0xb5, 0x1d, 0xbc, 0x50, 0x2d, 0x9f, 0x34, 0x00, 0xe4, 0xbc, 0x4f, 0x1f, - 0xcc, 0x80, 0x12, 0x70, 0x3a, 0x20, 0x31, 0x2f, 0x5a, 0x29, 0x75, 0x32, - 0xbf, 0x7a, 0x6f, 0x54, 0xb8, 0x3a, 0x91, 0x2c, 0xdd, 0x80, 0x24, 0x70, - 0x1b, 0x2f, 0xab, 0x9c, 0xaa, 0x39, 0x58, 0x75, 0x4b, 0xc6, 0x5d, 0xd0, - 0x93, 0xdd, 0x08, 0x75, 0x2b, 0xe7, 0x0d, 0x67, 0x18, 0x91, 0xcc, 0xa0, - 0x83, 0xb8, 0x03, 0x92, 0x12, 0x9e, 0xb4, 0xe4, 0xc6, 0x36, 0xf2, 0x12, - 0x2a, 0x6a, 0xbf, 0xc8, 0xcc, 0x11, 0x8a, 0x5d, 0x01, 0xd0, 0x73, 0xc7, - 0xf6, 0x3a, 0x97, 0x0d, 0x6d, 0x70, 0x11, 0xca, 0x15, 0x4d, 0xa2, 0xe2, - 0x7b, 0x82, 0xf8, 0xdc, 0x18, 0x32, 0xf3, 0x65, 0x06, 0x28, 0x0f, 0x14, - 0xac, 0x0a, 0x3b, 0xab, 0x57, 0xf0, 0x1d, 0x49, 0x56, 0x01, 0x23, 0x3a, - 0xff, 0x8b, 0x30, 0x98, 0xaa, 0x23, 0x21, 0xde, 0x1f, 0x8f, 0x28, 0xb0, - 0x49, 0x26, 0xcb, 0x49, 0x4d, 0x80, 0xb3, 0xa2, 0xff, 0xa9, 0xd1, 0x0e, - 0xd9, 0x12, 0x95, 0xa7, 0x79, 0x0a, 0x0e, 0xc6, 0x21, 0x72, 0xe8, 0xb3, - 0x58, 0xfe, 0xb6, 0x47, 0x29, 0xdc, 0xb5, 0x1a, 0x88, 0xb2, 0x80, 0x3a, - 0x71, 0xe3, 0x76, 0xca, 0x4a, 0xab, 0x72, 0xd2, 0xc4, 0xe5, 0x2d, 0x1b, - 0x16, 0x7d, 0x96, 0x99, 0x0d, 0x9a, 0x50, 0x0f, 0x7a, 0xfb, 0x06, 0x38, - 0x1c, 0x71, 0x14, 0x53, 0x6e, 0x53, 0xdf, 0xaa, 0x2d, 0x18, 0x2e, 0xe4, - 0x40, 0x8f, 0xbe, 0xf8, 0x48, 0x43, 0x08, 0x1b, 0x1f, 0xd0, 0x88, 0x4f, - 0x6d, 0x55, 0x61, 0x05, 0x10, 0xa2, 0x89, 0xa3, 0xc5, 0x1e, 0xde, 0x69, - 0xa4, 0xe9, 0xb1, 0x23, 0xac, 0x94, 0xaa, 0xfa, 0xfe, 0x4c, 0xfb, 0x49, - 0x24, 0x71, 0xd3, 0xe8, 0x0c, 0xd7, 0x8a, 0x25, 0x5b, 0x66, 0x7d, 0xe6, - 0xbf, 0xf7, 0x92, 0x56, 0xa0, 0x3c, 0x02, 0xd8, 0x9b, 0x8b, 0x59, 0x86, - 0xc7, 0x6c, 0xf6, 0x6d, 0x9d, 0x85, 0x29, 0x6f, 0x52, 0xc6, 0x05, 0x85, - 0x02, 0xf3, 0x8d, 0x7e, 0x84, 0x5c, 0x06, 0x59, 0xe1, 0x83, 0x67, 0x2a, - 0x4d, 0x1a, 0x5e, 0xdd, 0x9a, 0x57, 0x6a, 0x6f, 0x70, 0x3b, 0xc4, 0x6c, - 0xe4, 0xb3, 0x8e, 0xb2, 0x3b, 0xdd, 0x95, 0x8e, 0xfd, 0x0f, 0x4f, 0xc1, - 0x65, 0x85, 0x17, 0xb3, 0x64, 0x73, 0x2f, 0xc7, 0xdf, 0xd8, 0x07, 0x74, - 0x41, 0x3f, 0x1b, 0x50, 0xfd, 0xfa, 0x26, 0xbc, 0xdd, 0x65, 0xec, 0x0f, - 0xee, 0xc2, 0x0d, 0x50, 0xbf, 0xf6, 0x2a, 0x94, 0xac, 0x1c, 0x03, 0x85, - 0x60, 0x83, 0x6f, 0xa3, 0x03, 0xc8, 0x60, 0x82, 0x1e, 0x9c, 0xd7, 0xe3, - 0xee, 0x3a, 0xa9, 0x3a, 0x90, 0xa0, 0xff, 0x55, 0xb7, 0x49, 0x7f, 0x0c, - 0xe8, 0xa0, 0x3c, 0xc2, 0xa4, 0x2b, 0x25, 0x0e, 0xf0, 0xc9, 0x23, 0x10, - 0xd8, 0x80, 0xbf, 0xf2, 0x1e, 0x5b, 0xfb, 0x4c, 0xca, 0x98, 0x4f, 0x63, - 0xd8, 0x3b, 0xc9, 0x7c, 0xf2, 0x15, 0x98, 0xc5, 0x77, 0x46, 0x8d, 0xae, - 0x66, 0x1d, 0x44, 0x17, 0xce, 0xf6, 0x78, 0x06, 0xef, 0xef, 0x2a, 0xbb, - 0xb8, 0x6d, 0x0d, 0xc9, 0x9d, 0x13, 0xe9, 0xa6, 0x56, 0xf9, 0x07, 0x73, - 0x3a, 0xfd, 0xf7, 0x56, 0x62, 0xe3, 0xdf, 0x60, 0x28, 0xc1, 0x4d, 0x0f, - 0x52, 0x8d, 0x1e, 0xda, 0xa2, 0xcc, 0x04, 0xd9, 0x49, 0x71, 0xa0, 0x77, - 0x5f, 0x1d, 0xcf, 0x61, 0x02, 0x40, 0xf3, 0x61, 0x4e, 0x8f, 0xa5, 0xb4, - 0x5a, 0x4e, 0xfb, 0x5d, 0xac, 0xa9, 0x01, 0xee, 0xe0, 0x34, 0x90, 0x4c, - 0x54, 0x1f, 0x1b, 0x26, 0xf8, 0x9c, 0xfa, 0xc9, 0x2f, 0x52, 0x43, 0x59, - 0x53, 0x3c, 0x68, 0x13, 0x01, 0xdc, 0x8b, 0xe7, 0x8f, 0x42, 0xa0, 0xac, - 0xb9, 0xed, 0xa5, 0x67, 0x79, 0xe3, 0x16, 0xa4, 0xd6, 0xf0, 0x54, 0xcc, - 0xc0, 0xe7, 0xa1, 0x4a, 0xee, 0xe0, 0x75, 0xf7, 0xf4, 0xde, 0xf3, 0x93, - 0x2f, 0xde, 0x24, 0x10, 0x04, 0xa6, 0xb6, 0x16, 0x3b, 0x24, 0x68, 0xb4, - 0x9e, 0xff, 0x38, 0x58, 0x53, 0x70, 0xfc, 0x25, 0xb4, 0x15, 0x44, 0x70, - 0xf5, 0x77, 0x9a, 0xd1, 0x73, 0xdf, 0xe8, 0x14, 0xe4, 0x3b, 0xc4, 0xba, - 0x6f, 0x96, 0xb7, 0x98, 0x96, 0xf6, 0x6a, 0x3f, 0xf1, 0x2d, 0x9f, 0x2e, - 0x55, 0x34, 0x77, 0x1d, 0xb6, 0xbe, 0xaa, 0x8c, 0x17, 0xa4, 0xf7, 0xbd, - 0x7d, 0x76, 0x0a, 0x21, 0x8d, 0x77, 0x6d, 0xcc, 0xfa, 0x2c, 0x77, 0xa0, - 0x0e, 0xf7, 0x29, 0x70, 0x78, 0x1b, 0x07, 0x6a, 0xfb, 0x5f, 0x17, 0x1e, - 0x50, 0xf0, 0x8d, 0x0a, 0x20, 0x97, 0xcc, 0xc6, 0x4a, 0x94, 0x27, 0xa1, - 0xea, 0x33, 0x12, 0xb7, 0xd2, 0x38, 0x07, 0xfd, 0x1a, 0x8c, 0xf5, 0x11, - 0x86, 0x58, 0x3b, 0x76, 0x10, 0x9f, 0xbb, 0x96, 0x83, 0xbc, 0x87, 0x79, - 0x4e, 0x29, 0xd0, 0xb7, 0x4a, 0x1a, 0x67, 0x51, 0x6d, 0x99, 0x4f, 0x42, - 0x4c, 0xf9, 0xc7, 0x12, 0xfd, 0xba, 0xde, 0x63, 0x9a, 0xca, 0x74, 0x56, - 0x4c, 0xcd, 0x0f, 0x5f, 0xb0, 0x8d, 0x90, 0xe2, 0x80, 0x33, 0x0f, 0xba, - 0xd6, 0x52, 0x7c, 0x37, 0xf0, 0x38, 0xab, 0x73, 0xab, 0x3c, 0xc8, 0xc5, - 0x19, 0xb1, 0x86, 0xaa, 0x1b, 0xe6, 0xd2, 0xd7, 0xdf, 0xaa, 0x07, 0x7c, - 0x7a, 0xf1, 0x43, 0xa3, 0x64, 0xa5, 0x43, 0xd2, 0xb9, 0x35, 0x57, 0xa0, - 0x56, 0x23, 0x62, 0xc6, 0x6c, 0x06, 0x7d, 0x90, 0x03, 0x29, 0x24, 0xe3, - 0x13, 0x23, 0x10, 0xbd, 0xdc, 0xdb, 0xef, 0x3c, 0xd2, 0xa8, 0x63, 0x0d, - 0x60, 0xf1, 0x47, 0x9d, 0xfa, 0xf1, 0x9d, 0x40, 0x0a, 0x30, 0xe7, 0x66, - 0x67, 0x73, 0x19, 0xf3, 0x51, 0x22, 0x6d, 0x53, 0x26, 0xbc, 0xa4, 0x20, - 0x96, 0xad, 0x33, 0xf9, 0x6f, 0x57, 0xa9, 0x84, 0x08, 0xcf, 0x4d, 0x44, - 0x96, 0x53, 0xc1, 0xa6, 0x70, 0x6a, 0xf7, 0x0b, 0x35, 0x8f, 0xf2, 0xb4, - 0x17, 0xfa, 0xd2, 0x40, 0x01, 0x5f, 0x1a, 0xfa, 0x1f, 0xee, 0xb0, 0xa8, - 0xa2, 0x1e, 0xc7, 0xdf, 0x99, 0x27, 0x98, 0xb4, 0x52, 0x1d, 0x4b, 0x2f, - 0x96, 0xd1, 0x74, 0xc8, 0xae, 0xe1, 0x2b, 0x91, 0x64, 0xb6, 0x98, 0x69, - 0xa6, 0xb3, 0x27, 0x00, 0xef, 0x7e, 0xe6, 0x90, 0xcb, 0x7a, 0x4a, 0x93, - 0x00, 0x5d, 0x99, 0x70, 0x1f, 0x10, 0x25, 0xd3, 0x57, 0x1b, 0x24, 0xdf, - 0x6e, 0x80, 0x19, 0xff, 0x42, 0xc6, 0x3e, 0x80, 0x17, 0xb8, 0xe7, 0x36, - 0x82, 0xe2, 0xb8, 0x0e, 0x8c, 0xde, 0xc7, 0x30, 0xb4, 0xfa, 0x2d, 0x70, - 0xdc, 0x83, 0xd3, 0x22, 0xa6, 0xf1, 0x38, 0x6c, 0xfd, 0xa0, 0x6f, 0xc8, - 0x74, 0x7b, 0x2b, 0x7f, 0xa0, 0xd1, 0x64, 0xe5, 0xf3, 0x4e, 0xa2, 0x2f, - 0xbd, 0x1f, 0x72, 0x6b, 0x24, 0xa5, 0x7a, 0x69, 0x74, 0xa2, 0x92, 0x13, - 0xf1, 0xfa, 0x71, 0x97, 0x51, 0x17, 0x0e, 0x94, 0xb8, 0x2a, 0x4a, 0x96, - 0x4b, 0xf9, 0x0b, 0x3c, 0xf5, 0x24, 0xad, 0x2c, 0x25, 0xea, 0xf2, 0xab, - 0xe9, 0xf6, 0x25, 0x62, 0xea, 0x70, 0xe1, 0x81, 0x22, 0x67, 0x96, 0xc7, - 0x63, 0xd7, 0xdc, 0x93, 0xcd, 0x72, 0x8a, 0xe6, 0xe4, 0xbf, 0x70, 0x90, - 0x5e, 0xaa, 0x14, 0xe7, 0xf5, 0xa4, 0x11, 0x74, 0x6f, 0xc4, 0xac, 0xfe, - 0x92, 0x2e, 0x6b, 0x24, 0x6f, 0x72, 0x60, 0x78, 0x8d, 0xd3, 0x87, 0xd8, - 0x6e, 0x63, 0xa5, 0xbf, 0x85, 0xad, 0x52, 0xdd, 0x24, 0xb5, 0x82, 0x6a, - 0xfc, 0x5b, 0x0d, 0x22, 0x82, 0xdf, 0xdb, 0xd3, 0xce, 0xf9, 0x3d, 0x46, - 0x52, 0x28, 0xd2, 0x9c, 0x3e, 0x61, 0xee, 0x4e, 0xe7, 0x6a, 0xf6, 0x20, - 0xa4, 0x45, 0x24, 0x2e, 0x2a, 0x65, 0x27, 0xa3, 0xff, 0x6f, 0xea, 0x2c, - 0xfc, 0xeb, 0x04, 0x3e, 0x95, 0x4a, 0x5a, 0xa3, 0xe5, 0x62, 0xfd, 0xc2, - 0x1e, 0x26, 0x66, 0xb6, 0x85, 0x92, 0x7d, 0x6f, 0x27, 0xb8, 0xfb, 0x18, - 0xb1, 0x0d, 0xaa, 0xff, 0x22, 0xc5, 0xe4, 0xad, 0x7c, 0xe1, 0x15, 0x91, - 0xcc, 0xf9, 0x51, 0xfe, 0xaa, 0x14, 0x8d, 0x43, 0x59, 0x0f, 0x2b, 0x7a, - 0x24, 0x8d, 0xe0, 0x6b, 0x19, 0xd6, 0xc8, 0xd5, 0x95, 0x11, 0x83, 0x8b, - 0x85, 0x4f, 0xa2, 0xdb, 0xf7, 0x22, 0xdc, 0x36, 0x5a, 0xb0, 0xbc, 0xb9, - 0x5a, 0xb2, 0xd2, 0xa7, 0xd4, 0xb6, 0x4e, 0x1e, 0x01, 0xb1, 0xb3, 0x8e, - 0xfa, 0x38, 0x2d, 0x7c, 0x1d, 0xb3, 0xef, 0x52, 0x27, 0x45, 0x93, 0x72, - 0x53, 0x06, 0x61, 0xfd, 0xbf, 0x5d, 0x2c, 0xf8, 0x71, 0x32, 0x89, 0x82, - 0xc1, 0x7b, 0x46, 0xf5, 0xaf, 0x1a, 0x06, 0xe7, 0xcf, 0xee, 0x5b, 0xd5, - 0xca, 0xea, 0x6f, 0x5f, 0x97, 0x7d, 0x9b, 0xda, 0x02, 0x38, 0x3a, 0xf8, - 0x76, 0xa4, 0x43, 0x0a, 0x79, 0xba, 0x15, 0x58, 0xe4, 0xb3, 0xe2, 0x64, - 0x43, 0xbd, 0xd6, 0x4c, 0x05, 0x8c, 0x49, 0xd3, 0x67, 0xa4, 0xc6, 0x11, - 0xab, 0x99, 0xfb, 0xb4, 0x91, 0x03, 0xa5, 0x18, 0x71, 0xae, 0xb1, 0x4c, - 0x77, 0xdf, 0xb6, 0x5a, 0x4a, 0xd9, 0x48, 0x74, 0x47, 0x33, 0x4a, 0x1d, - 0x25, 0xb2, 0x0c, 0x0c, 0xb5, 0xa0, 0x73, 0x0e, 0xd1, 0x9e, 0x33, 0x1d, - 0xce, 0xf8, 0x06, 0x0e, 0xfa, 0x6c, 0x07, 0x1c, 0x1c, 0x20, 0xa6, 0x9f, - 0xf8, 0x51, 0xd5, 0x00, 0xe3, 0xea, 0xda, 0x81, 0xac, 0xc3, 0x43, 0x8f, - 0x89, 0xd4, 0x1d, 0x74, 0xbb, 0x7f, 0x80, 0x6c, 0x37, 0x72, 0x20, 0x35, - 0x6d, 0x4b, 0xcc, 0xd6, 0x78, 0xe6, 0x38, 0x4c, 0xcb, 0xc0, 0xbc, 0x46, - 0xef, 0x99, 0xa5, 0x6b, 0xbf, 0x78, 0x77, 0xce, 0xa4, 0x2b, 0xef, 0xc8, - 0xea, 0x93, 0x95, 0x80, 0x14, 0x9d, 0x00, 0xe2, 0x82, 0x03, 0x0b, 0xd1, - 0x08, 0xb7, 0xe5, 0x0e, 0xf0, 0x12, 0xe3, 0x03, 0xe9, 0x55, 0x5d, 0x18, - 0x54, 0x4b, 0xfc, 0x1b, 0xf9, 0x75, 0x65, 0xf3, 0xd3, 0xd3, 0xab, 0x5b, - 0xbd, 0xea, 0xfb, 0x92, 0x2e, 0x8c, 0x95, 0x57, 0x10, 0x1d, 0xb0, 0x35, - 0x1c, 0x75, 0x4d, 0xcb, 0x2d, 0x92, 0x8e, 0x47, 0x38, 0x0d, 0xe3, 0x03, - 0x2b, 0x12, 0x21, 0x11, 0xc4, 0x2f, 0x06, 0x73, 0x6e, 0x96, 0xed, 0xb3, - 0xf6, 0xf6, 0xee, 0x89, 0xdd, 0x16, 0xf6, 0xef, 0x26, 0x44, 0x38, 0x08, - 0xb5, 0x48, 0xc0, 0x6e, 0xfe, 0x72, 0x67, 0x72, 0x63, 0xb0, 0xa4, 0xd0, - 0x84, 0xd5, 0x37, 0x24, 0xa6, 0xbd, 0xad, 0x92, 0xbf, 0x74, 0xcc, 0xd1, - 0x03, 0x5d, 0xcd, 0xbe, 0x26, 0x15, 0x37, 0x29, 0x8d, 0x85, 0x51, 0x0f, - 0x88, 0x8d, 0x25, 0x96, 0x10, 0xb2, 0x28, 0x80, 0x66, 0x9a, 0xbe, 0xb4, - 0x85, 0xf9, 0x68, 0x4c, 0x55, 0xc9, 0x38, 0xdf, 0x82, 0x32, 0x73, 0xcf, - 0xfb, 0x6b, 0x48, 0x8b, 0x70, 0x44, 0x9b, 0xdf, 0x92, 0xf6, 0x02, 0x88, - 0x20, 0xa3, 0xac, 0x5c, 0x54, 0x67, 0x5b, 0xee, 0xba, 0xb5, 0x7f, 0x7f, - 0xf9, 0x80, 0x78, 0xa8, 0x1a, 0xfa, 0x27, 0xea, 0x72, 0x4b, 0x4b, 0x32, - 0x17, 0x72, 0x10, 0x5e, 0x3b, 0x44, 0xbc, 0x54, 0x01, 0x21, 0xd4, 0x52, - 0xe5, 0xa1, 0xd7, 0x7c, 0x02, 0x09, 0x94, 0x94, 0x71, 0x3a, 0xfc, 0xab, - 0x41, 0xb6, 0x48, 0xc8, 0x43, 0x75, 0xe8, 0xfd, 0xb7, 0x27, 0xc6, 0xce, - 0xfb, 0x1a, 0xfc, 0xeb, 0x0c, 0x3c, 0x03, 0x7a, 0x8e, 0xe2, 0xb7, 0x7d, - 0x5b, 0xa3, 0xae, 0x70, 0xb8, 0x57, 0xd1, 0xf2, 0x19, 0xbc, 0xb6, 0x69, - 0xcb, 0x64, 0xa0, 0x3d, 0x7f, 0xc5, 0xfe, 0x78, 0xcb, 0x34, 0x08, 0x33, - 0x49, 0xfc, 0x08, 0x23, 0x23, 0x4f, 0x21, 0x3a, 0x02, 0x2d, 0x30, 0x4a, - 0x1f, 0x74, 0x2d, 0xfd, 0x95, 0x8b, 0x04, 0xea, 0x54, 0x2a, 0xfc, 0x72, - 0x28, 0xc4, 0xdf, 0xc8, 0xaf, 0x6e, 0x5a, 0x24, 0xf3, 0x97, 0x8c, 0x1d, - 0x64, 0xb1, 0x29, 0x5e, 0x4a, 0x0a, 0x41, 0x53, 0x87, 0xeb, 0x80, 0xd9, - 0x2a, 0xa1, 0x42, 0x33, 0xdd, 0xb1, 0x64, 0x22, 0xec, 0x7e, 0xcc, 0xfd, - 0xd4, 0x3e, 0x34, 0xc1, 0x23, 0xa3, 0x62, 0x96, 0x50, 0x96, 0xc8, 0x5a, - 0x22, 0x84, 0xda, 0x12, 0x51, 0xa3, 0x25, 0xc4, 0x76, 0x09, 0x10, 0x26, - 0x5a, 0xc6, 0xe6, 0xe5, 0xff, 0xc6, 0xde, 0x6b, 0x4b, 0x0e, 0xab, 0x96, - 0x93, 0x77, 0xc6, 0xef, 0x06, 0x96, 0x1c, 0xe4, 0x23, 0x0b, 0x58, 0xfb, - 0xf1, 0x75, 0x2a, 0x3a, 0xa7, 0x38, 0xa8, 0x83, 0x7d, 0x36, 0x66, 0xdd, - 0x10, 0xe8, 0xa9, 0x38, 0x2b, 0x8d, 0x5a, 0xd1, 0x88, 0x60, 0x0e, 0x40, - 0x9a, 0x39, 0x67, 0x0e, 0x5a, 0xd5, 0xc6, 0xae, 0x1b, 0xba, 0x19, 0x44, - 0x36, 0xf1, 0xdf, 0xac, 0xaa, 0x67, 0x0f, 0x8e, 0x8d, 0x82, 0x74, 0xe9, - 0x61, 0xbf, 0x80, 0x6b, 0xfc, 0x0a, 0x0c, 0x92, 0xad, 0x08, 0xfc, 0xbc, - 0xc3, 0x21, 0xfb, 0x0c, 0x06, 0x71, 0x15, 0xcd, 0x7c, 0x5c, 0x4f, 0x9f, - 0x1b, 0xe3, 0xfd, 0xb9, 0xb6, 0x8b, 0x87, 0x32, 0xa4, 0x14, 0x3d, 0xfb, - 0x45, 0x9a, 0xdf, 0x29, 0x5b, 0x47, 0xcb, 0xb0, 0xa6, 0xf6, 0xe5, 0x3f, - 0x3f, 0xca, 0x49, 0x7b, 0x10, 0xee, 0xaa, 0x77, 0xb7, 0x5c, 0x97, 0xe9, - 0x34, 0xac, 0xab, 0xa2, 0xd8, 0x7d, 0xc7, 0x15, 0x37, 0x39, 0xc8, 0x68, - 0xf1, 0x98, 0x82, 0xb4, 0x6e, 0x8f, 0xe3, 0x68, 0x71, 0xf8, 0xed, 0x90, - 0x4b, 0x1c, 0xd4, 0xdb, 0x2f, 0xe4, 0x1e, 0x59, 0xbb, 0xd3, 0xd1, 0x4f, - 0xd4, 0xb9, 0x19, 0xfe, 0xbf, 0x83, 0xb0, 0x43, 0xca, 0xef, 0xbb, 0xcb, - 0x95, 0xaf, 0x65, 0x91, 0x8a, 0x00, 0xe1, 0x2b, 0x69, 0xbe, 0xfa, 0x3a, - 0xb5, 0x34, 0x63, 0x45, 0x57, 0x79, 0x8f, 0x21, 0x5a, 0x1a, 0xe1, 0x04, - 0xeb, 0x3f, 0x2c, 0x56, 0xe9, 0xa9, 0x82, 0x09, 0xac, 0x40, 0x68, 0x1f, - 0xee, 0x56, 0x35, 0x85, 0xba, 0x67, 0x9a, 0xf1, 0x8b, 0x11, 0x6b, 0x35, - 0xb7, 0x71, 0x98, 0x43, 0xbe, 0x0d, 0x6d, 0x0a, 0x19, 0xeb, 0x96, 0x5b, - 0x3c, 0x81, 0xf8, 0xd1, 0xd1, 0x5b, 0x31, 0xff, 0x17, 0x90, 0x50, 0xff, - 0x0f, 0xba, 0xd9, 0xa5, 0x78, 0x6f, 0x99, 0x42, 0x0f, 0x33, 0x27, 0x9c, - 0x8e, 0xc7, 0x5d, 0x55, 0x1d, 0x79, 0xb5, 0x4f, 0x97, 0x06, 0xae, 0xf9, - 0xa5, 0x62, 0xc6, 0x2d, 0xf4, 0xb4, 0xaa, 0x12, 0x2a, 0x34, 0xd3, 0xc0, - 0xc0, 0xcd, 0x6e, 0x98, 0xe5, 0x43, 0x40, 0xc2, 0x12, 0x46, 0xc8, 0x28, - 0x58, 0x4c, 0x07, 0x04, 0xe7, 0xd9, 0xb9, 0x51, 0x65, 0xdc, 0xf8, 0xce, - 0xee, 0xf2, 0x50, 0xaa, 0x54, 0x09, 0xdb, 0x5e, 0x22, 0xf4, 0xe7, 0xc1, - 0x38, 0x4e, 0xce, 0xbe, 0x39, 0x2d, 0xf8, 0xbe, 0xe9, 0xb8, 0x92, 0x70, - 0x56, 0x04, 0x6c, 0xef, 0x51, 0xb5, 0x5a, 0x89, 0x8a, 0x27, 0x90, 0x6d, - 0x70, 0xe5, 0xc2, 0x5c, 0xb8, 0xc3, 0xaf, 0x26, 0xfe, 0x74, 0xdb, 0xfb, - 0x3d, 0x90, 0x95, 0xcc, 0x3d, 0x25, 0xee, 0xd4, 0x2a, 0xd5, 0xb9, 0xe5, - 0xdb, 0x6e, 0xe2, 0x8c, 0xfb, 0xaa, 0x78, 0x59, 0xa8, 0x0a, 0x89, 0xbe, - 0xfb, 0x3e, 0x5e, 0xdf, 0xf1, 0xc7, 0x33, 0x31, 0xf0, 0x9d, 0x83, 0xb4, - 0xd5, 0x4b, 0x6d, 0x7b, 0x6b, 0x7d, 0x85, 0x53, 0x43, 0xa5, 0xb0, 0x87, - 0x6b, 0x03, 0x37, 0x3d, 0x4b, 0xab, 0x96, 0x20, 0x22, 0x0b, 0xa2, 0x63, - 0x75, 0x0f, 0xdd, 0x40, 0x8f, 0x7c, 0x60, 0x20, 0xab, 0x1a, 0x1a, 0x01, - 0xa3, 0x0f, 0xac, 0x43, 0x4b, 0xea, 0x0a, 0x9a, 0xd0, 0x0e, 0x11, 0xd7, - 0xed, 0x5c, 0x42, 0xab, 0xb8, 0xb9, 0xa7, 0x42, 0xa6, 0xeb, 0x76, 0x1c, - 0x94, 0xa6, 0xbc, 0x38, 0xe1, 0xd2, 0x60, 0xfb, 0x7e, 0x3c, 0x54, 0x41, - 0xae, 0xb0, 0x41, 0x1f, 0xf8, 0x46, 0x89, 0xd1, 0x69, 0x19, 0x85, 0xb1, - 0x07, 0x04, 0x13, 0xb6, 0xec, 0xf2, 0x04, 0x0c, 0x40, 0xc3, 0x15, 0xcb, - 0x77, 0x18, 0x38, 0x52, 0x05, 0x2c, 0xf8, 0x01, 0xc0, 0xd8, 0x1c, 0xb1, - 0xb6, 0xbf, 0x8f, 0x51, 0x2a, 0xb6, 0x63, 0x6f, 0xdf, 0x23, 0x46, 0xb6, - 0xbd, 0xba, 0x63, 0x71, 0x5f, 0x13, 0x2c, 0x31, 0x3c, 0xa3, 0x13, 0x24, - 0x9a, 0xba, 0x33, 0xfd, 0x68, 0x69, 0x07, 0xb2, 0xfa, 0x6d, 0x70, 0x75, - 0xce, 0xd2, 0x02, 0x52, 0xa1, 0x0d, 0xeb, 0xf1, 0x40, 0x30, 0x4b, 0x58, - 0x36, 0x6e, 0xed, 0x0f, 0xd8, 0x33, 0x7f, 0x92, 0x5c, 0xd2, 0xde, 0xa9, - 0xa2, 0xe9, 0xe0, 0x90, 0x5a, 0xbb, 0xdb, 0x94, 0x8a, 0x17, 0x54, 0xda, - 0xf0, 0x16, 0x3c, 0xca, 0x02, 0xa5, 0xcc, 0xdc, 0xa2, 0xdc, 0x5e, 0x5e, - 0xb0, 0x78, 0xd8, 0xa0, 0x5e, 0xf7, 0xca, 0x12, 0xb3, 0x85, 0x8e, 0x76, - 0xca, 0xa8, 0x4f, 0x08, 0xd2, 0x24, 0x6c, 0x80, 0xac, 0x4b, 0xdc, 0x7f, - 0x46, 0x0a, 0x05, 0x3f, 0xd5, 0x3e, 0x0e, 0xff, 0x81, 0x93, 0xb2, 0x81, - 0x4f, 0xa6, 0xcd, 0xf2, 0x9b, 0xb6, 0xc9, 0x7b, 0x1c, 0xc3, 0x43, 0x53, - 0x3d, 0x3c, 0x56, 0x20, 0xab, 0xee, 0x07, 0xee, 0x14, 0x6b, 0xa0, 0x77, - 0x1b, 0x60, 0x75, 0xcd, 0xb3, 0x5f, 0xe1, 0xd1, 0x73, 0x37, 0xb0, 0xf6, - 0xb1, 0x6e, 0xc4, 0x8f, 0x1b, 0xe8, 0x88, 0x04, 0x23, 0x89, 0x97, 0xb6, - 0xe4, 0x9b, 0xfb, 0xce, 0xd1, 0x24, 0xdc, 0x30, 0x7a, 0x7c, 0x58, 0xa6, - 0x3b, 0x00, 0x74, 0x61, 0x06, 0x19, 0xee, 0xf6, 0x09, 0x64, 0x2e, 0xd6, - 0xaa, 0x13, 0x0e, 0xc8, 0x50, 0xf1, 0x86, 0x05, 0xd2, 0x39, 0x23, 0xbe, - 0x9c, 0x9e, 0x54, 0xd6, 0xf0, 0x94, 0x60, 0x19, 0xce, 0x8e, 0xb0, 0xdf, - 0x6c, 0xc6, 0x2c, 0x24, 0x07, 0xb5, 0x41, 0x8f, 0xbc, 0xe8, 0x9e, 0xec, - 0xbf, 0x81, 0xba, 0xd7, 0xe4, 0x48, 0x27, 0x86, 0x94, 0xb1, 0xd0, 0x5f, - 0xb7, 0x0d, 0x54, 0x85, 0x4c, 0x7e, 0xb5, 0xed, 0xeb, 0x41, 0xa8, 0xed, - 0xf6, 0x0b, 0x2c, 0x3d, 0x70, 0x9a, 0x6a, 0xcc, 0xc6, 0xfb, 0x55, 0x25, - 0x04, 0x1a, 0x39, 0x3c, 0x47, 0xb0, 0x93, 0x3b, 0x47, 0xb9, 0x6f, 0xd4, - 0x63, 0xea, 0xcb, 0xad, 0xf0, 0xbc, 0x81, 0xe8, 0xc2, 0x1e, 0x94, 0xe1, - 0x95, 0x6f, 0xac, 0x8e, 0xd1, 0xee, 0xd5, 0x90, 0x88, 0x01, 0x7a, 0x09, - 0x69, 0x05, 0xfa, 0x23, 0x37, 0xa7, 0xf4, 0x48, 0x63, 0xf0, 0x3c, 0x62, - 0xd1, 0x06, 0xbb, 0x98, 0x0f, 0x3b, 0x63, 0x22, 0xff, 0x96, 0xe5, 0x88, - 0x70, 0x21, 0x68, 0x1b, 0x8d, 0x61, 0x6e, 0x17, 0x15, 0x37, 0x55, 0x4d, - 0x24, 0x17, 0x11, 0x1c, 0x17, 0x09, 0xfd, 0xf7, 0xe7, 0x51, 0x9e, 0x2f, - 0x23, 0x8c, 0xa7, 0xe4, 0x8f, 0x97, 0x54, 0x68, 0x50, 0x63, 0xa3, 0xb0, - 0x93, 0x27, 0xd0, 0xce, 0xe8, 0x3c, 0xc8, 0x4c, 0xf9, 0xae, 0xca, 0x61, - 0xe3, 0xe5, 0x79, 0x16, 0x97, 0x4b, 0xcf, 0xb6, 0xcc, 0x9f, 0x8a, 0xe8, - 0x30, 0x54, 0xa7, 0xf4, 0x54, 0x7a, 0x47, 0x4f, 0xd1, 0x09, 0x82, 0x34, - 0x1c, 0x42, 0x23, 0xb6, 0x59, 0xab, 0xd9, 0x7f, 0x73, 0x4a, 0x4b, 0xef, - 0xf4, 0x39, 0x89, 0xaa, 0x2a, 0x38, 0x0a, 0x1c, 0x4d, 0xff, 0x05, 0x9f, - 0x67, 0x33, 0x33, 0xe0, 0x44, 0x65, 0xf2, 0x5d, 0x29, 0x82, 0x86, 0x30, - 0x02, 0xa2, 0x80, 0x6b, 0x4d, 0x75, 0xc0, 0xac, 0x7b, 0x13, 0x8e, 0xf1, - 0x1d, 0xcb, 0xcc, 0xc4, 0x3d, 0x6c, 0xa4, 0x34, 0xf0, 0x11, 0xb4, 0x7e, - 0xc7, 0xef, 0xf6, 0xc6, 0xbf, 0xd5, 0x53, 0x53, 0xec, 0x00, 0xfe, 0x53, - 0x4f, 0x53, 0xa6, 0x22, 0xeb, 0xd4, 0xe3, 0x71, 0x67, 0x89, 0xf1, 0x49, - 0xcd, 0xba, 0xa5, 0x2d, 0x90, 0xd4, 0xc5, 0xcc, 0x88, 0x54, 0x53, 0xed, - 0x62, 0xd7, 0xe7, 0xc9, 0x54, 0x8e, 0x33, 0xbf, 0x52, 0xa9, 0xd8, 0xbf, - 0x3f, 0x92, 0xba, 0x67, 0xe0, 0xf9, 0x9c, 0x34, 0x18, 0xb9, 0x4e, 0xac, - 0x70, 0x3d, 0xf1, 0x71, 0x8c, 0x01, 0x93, 0x69, 0x9a, 0x59, 0x65, 0x6f, - 0x34, 0x0d, 0x2d, 0x75, 0x9e, 0x3a, 0xca, 0x1c, 0xcc, 0x7d, 0xf7, 0x75, - 0xf3, 0x4e, 0xc8, 0x80, 0xbd, 0x20, 0x76, 0x7c, 0x45, 0xa6, 0xf7, 0x36, - 0x73, 0xee, 0x2f, 0x82, 0xa8, 0x93, 0x22, 0x81, 0x49, 0x41, 0xa3, 0x1c, - 0xdc, 0x70, 0xe3, 0x33, 0x27, 0xc3, 0xe7, 0x5b, 0xb4, 0x5e, 0xe1, 0x8f, - 0x2c, 0xb9, 0x3b, 0x9e, 0xbc, 0x8e, 0x92, 0x04, 0x8b, 0x31, 0xf7, 0xaf, - 0x64, 0x6d, 0xdb, 0xec, 0x3e, 0x7b, 0x8b, 0x7d, 0x6a, 0xcb, 0xf3, 0x77, - 0xfe, 0xf3, 0x68, 0xbb, 0x24, 0x66, 0x29, 0x71, 0xb4, 0xcc, 0xe4, 0x0e, - 0xdf, 0x8c, 0x04, 0x49, 0x4f, 0xe6, 0x44, 0x92, 0x18, 0x6b, 0x0a, 0x71, - 0x75, 0xa7, 0x13, 0xd1, 0x31, 0x79, 0xee, 0x5b, 0x00, 0xf1, 0x48, 0x54, - 0xdb, 0x63, 0x3c, 0x29, 0x7f, 0x89, 0x35, 0x0c, 0xfa, 0xc1, 0x62, 0x79, - 0x29, 0x14, 0xc3, 0x1a, 0xac, 0x17, 0x8a, 0x53, 0x65, 0xa4, 0x25, 0x85, - 0x33, 0x29, 0xce, 0x5b, 0x71, 0x83, 0x55, 0x22, 0x50, 0x39, 0xce, 0xab, - 0x58, 0x21, 0x5f, 0x23, 0x36, 0x66, 0xbc, 0x4e, 0xc5, 0x58, 0x60, 0xbc, - 0xf2, 0x2b, 0xcd, 0xc8, 0x41, 0x50, 0xd1, 0xda, 0x7c, 0xe8, 0x55, 0x29, - 0x41, 0x8d, 0x3d, 0x47, 0x98, 0xb4, 0xf3, 0x9c, 0xfc, 0x89, 0xeb, 0xfd, - 0x8c, 0x90, 0x12, 0xab, 0x41, 0x30, 0xd6, 0x14, 0x58, 0x9f, 0x16, 0xaa, - 0x26, 0xb3, 0xee, 0xb7, 0x34, 0x74, 0x92, 0x82, 0xda, 0x24, 0x47, 0xe2, - 0x15, 0x35, 0xb7, 0x8d, 0xb3, 0xd3, 0xc9, 0xa0, 0xdb, 0x87, 0x79, 0x46, - 0xc2, 0x06, 0xda, 0x27, 0xcf, 0xc8, 0x15, 0xe3, 0xdd, 0x4c, 0x67, 0x5c, - 0x3c, 0x55, 0x8a, 0x2d, 0x7c, 0x51, 0x24, 0x05, 0xd4, 0xc5, 0x9c, 0x91, - 0xa2, 0x96, 0x59, 0x02, 0xba, 0xac, 0xde, 0x9e, 0xa3, 0xc8, 0xc8, 0x37, - 0xb2, 0xfe, 0x0c, 0x0f, 0x14, 0x80, 0x16, 0xcc, 0x16, 0xc5, 0x44, 0x36, - 0xc5, 0xf5, 0x58, 0x75, 0x95, 0xee, 0x3c, 0x4e, 0xa1, 0x7b, 0x8f, 0xd3, - 0xb3, 0x19, 0x8f, 0xb1, 0x65, 0x6b, 0x2e, 0x3f, 0x77, 0x86, 0xd9, 0xf9, - 0xdc, 0x6b, 0xbc, 0xa6, 0x5b, 0x35, 0xc9, 0x02, 0x20, 0x39, 0x40, 0x75, - 0x2f, 0x4d, 0xa8, 0x57, 0x53, 0xed, 0xaa, 0x7a, 0x18, 0x52, 0x65, 0x7e, - 0xe2, 0x97, 0xc1, 0x3a, 0xcf, 0x32, 0xe2, 0x02, 0x37, 0x30, 0x2f, 0xe7, - 0xc4, 0xae, 0xed, 0x13, 0x46, 0x7e, 0xcd, 0x8a, 0x7d, 0x4c, 0x05, 0x6e, - 0x19, 0xc5, 0x3c, 0x49, 0x32, 0xe2, 0x1c, 0x8b, 0x03, 0x0c, 0x9e, 0xda, - 0xb6, 0xdc, 0xf2, 0xdc, 0xb9, 0x0a, 0xb5, 0x03, 0xba, 0x56, 0xc6, 0x21, - 0xf0, 0xe7, 0xdd, 0x1d, 0xb0, 0x0c, 0x5f, 0xd4, 0x3f, 0x9b, 0xf7, 0x76, - 0xa8, 0x6f, 0x79, 0xda, 0xcd, 0x7d, 0xc1, 0x11, 0x4a, 0x0a, 0x1e, 0x26, - 0x79, 0x71, 0xe7, 0x40, 0x50, 0xe6, 0x4e, 0x7b, 0x8e, 0x1a, 0x2f, 0xa4, - 0x7c, 0x51, 0x07, 0x85, 0x12, 0xe9, 0x32, 0x62, 0x42, 0x42, 0x68, 0xb5, - 0x9a, 0x14, 0x5e, 0x41, 0x6a, 0x0e, 0x27, 0x72, 0xae, 0x69, 0x49, 0x38, - 0xe1, 0x41, 0xc5, 0x61, 0xdb, 0x89, 0x6c, 0xc4, 0x19, 0xd8, 0xa0, 0xd0, - 0xc5, 0x4a, 0x7e, 0xc6, 0x58, 0xb9, 0x31, 0x9e, 0xf1, 0x6b, 0xf1, 0x70, - 0x76, 0xd9, 0xd0, 0x01, 0xc3, 0x59, 0xfe, 0x1b, 0x66, 0x9e, 0xfe, 0x37, - 0xf9, 0x84, 0xa2, 0x3f, 0x75, 0xe1, 0xa5, 0x66, 0x95, 0x4f, 0x46, 0xca, - 0xcb, 0xa4, 0x98, 0xc2, 0xf0, 0x2f, 0xf2, 0xbb, 0x82, 0x78, 0x8b, 0x0a, - 0x87, 0xe9, 0xc3, 0x81, 0x7a, 0xc4, 0xa1, 0x62, 0xb3, 0xbb, 0xb7, 0xb8, - 0x1a, 0x2f, 0x6f, 0x4c, 0xfc, 0x02, 0xcb, 0x51, 0xb9, 0xe2, 0x8a, 0x76, - 0x40, 0x66, 0xc5, 0x93, 0x87, 0x0a, 0xb8, 0x65, 0x75, 0xc0, 0x43, 0xaf, - 0x18, 0x9f, 0x5c, 0xa7, 0xcf, 0xca, 0xfa, 0x50, 0xfd, 0x57, 0x00, 0xc1, - 0x0a, 0x61, 0xf2, 0x0b, 0x77, 0x6a, 0xc5, 0x20, 0x82, 0xd8, 0xe1, 0x3a, - 0x7e, 0x2c, 0xdb, 0x86, 0xc9, 0x6a, 0x8b, 0xe6, 0x7c, 0xb9, 0x82, 0x58, - 0xa0, 0x41, 0x0a, 0xcb, 0xe3, 0xd1, 0xd0, 0xb0, 0xfa, 0xf4, 0x71, 0x71, - 0x6b, 0x1d, 0x2b, 0x81, 0x9e, 0x33, 0x11, 0x9e, 0xa3, 0x12, 0x52, 0x7c, - 0xb9, 0xd3, 0x97, 0x6d, 0x93, 0xbb, 0xfa, 0xb5, 0x7a, 0x8a, 0x90, 0xe3, - 0x5a, 0x00, 0x1d, 0x9e, 0xc5, 0xc6, 0x78, 0xda, 0xb5, 0x90, 0x64, 0xa0, - 0xce, 0x49, 0x70, 0x38, 0xc1, 0x71, 0x46, 0x78, 0x94, 0xf2, 0x94, 0x79, - 0x5a, 0x25, 0xb1, 0x31, 0x06, 0xb8, 0x69, 0xff, 0x8d, 0x17, 0x34, 0x87, - 0x06, 0xac, 0x12, 0xcd, 0xb6, 0x3c, 0x35, 0x97, 0xfb, 0x3b, 0xf4, 0xa7, - 0xb1, 0xb5, 0xee, 0x47, 0x8d, 0xf1, 0xfc, 0x97, 0xf7, 0x11, 0xcd, 0xf7, - 0x54, 0xc7, 0x3f, 0xaa, 0xd3, 0xd6, 0xf1, 0x7d, 0x54, 0xb1, 0x09, 0x65, - 0x28, 0x86, 0x21, 0xea, 0x74, 0xba, 0x48, 0xf6, 0xd3, 0x7d, 0x44, 0xec, - 0x77, 0x08, 0x78, 0xa0, 0xa5, 0xea, 0xbb, 0xec, 0x8d, 0xc0, 0xd2, 0xd9, - 0x95, 0x33, 0x07, 0x52, 0x5d, 0x0f, 0x04, 0x22, 0xf9, 0x07, 0xfd, 0xa3, - 0x6b, 0x4e, 0x7e, 0xd1, 0xa1, 0x1b, 0x00, 0xcb, 0x7d, 0x1f, 0xff, 0x50, - 0x52, 0x14, 0x6c, 0x96, 0x15, 0xc0, 0x78, 0x91, 0x0e, 0x61, 0x16, 0x04, - 0x6e, 0xd4, 0xa0, 0xf2, 0xe0, 0x66, 0x61, 0x34, 0x1a, 0xab, 0xcb, 0xb0, - 0x37, 0xf3, 0xaf, 0xdd, 0x49, 0x9b, 0x1c, 0x43, 0x15, 0xd5, 0xdb, 0x70, - 0x41, 0x4a, 0x65, 0xdd, 0x45, 0x00, 0x3f, 0x2d, 0xc2, 0xc7, 0x7b, 0xd6, - 0xa6, 0x65, 0xb0, 0x0a, 0x51, 0xf0, 0xd0, 0xe2, 0xbe, 0x28, 0xb3, 0x45, - 0x98, 0x6d, 0x76, 0xef, 0x30, 0x2c, 0x59, 0xef, 0x3b, 0x1c, 0xc4, 0xa7, - 0x9d, 0x71, 0xa8, 0x43, 0xd2, 0x0e, 0xbf, 0xe6, 0xcd, 0xf1, 0xc2, 0xd6, - 0xd3, 0x30, 0x69, 0x49, 0xbf, 0x76, 0x73, 0x17, 0xd5, 0x54, 0x7c, 0x80, - 0xb2, 0x9f, 0xce, 0x0d, 0x4a, 0x74, 0x4c, 0x73, 0xa3, 0x28, 0x61, 0x43, - 0x67, 0xc2, 0xfe, 0x80, 0xf7, 0xe4, 0xa9, 0xd6, 0xc0, 0x17, 0x7f, 0x44, - 0xda, 0xad, 0x40, 0x67, 0x33, 0x04, 0xb8, 0xd7, 0x95, 0x72, 0x7c, 0xef, - 0xa0, 0xc0, 0x85, 0x31, 0x13, 0x97, 0x4b, 0x95, 0x55, 0xaa, 0xfb, 0xd4, - 0x27, 0x04, 0x54, 0x27, 0x7a, 0xc3, 0x6a, 0xbf, 0x11, 0x40, 0x23, 0x74, - 0x17, 0x28, 0xeb, 0x8d, 0xb7, 0xe9, 0xe4, 0xe1, 0xf3, 0xbb, 0xbf, 0x18, - 0xfe, 0xd9, 0x75, 0x6a, 0x5d, 0x6c, 0x15, 0xe5, 0x68, 0x8e, 0x81, 0x60, - 0xa8, 0x6f, 0xc2, 0x65, 0xcc, 0xc2, 0xd5, 0xac, 0x44, 0x1a, 0x05, 0x85, - 0xcb, 0x4e, 0x27, 0xb8, 0x03, 0x60, 0x93, 0xf2, 0x21, 0xce, 0x78, 0x13, - 0x50, 0x9a, 0x86, 0x22, 0x93, 0x5f, 0x5f, 0xb8, 0x92, 0x35, 0xd5, 0x3e, - 0x22, 0xde, 0x38, 0xeb, 0x3d, 0x8f, 0x36, 0x6c, 0x91, 0xed, 0xd6, 0x7e, - 0xb6, 0x7d, 0x97, 0x4a, 0xf5, 0x1e, 0xf3, 0x09, 0x0c, 0xae, 0x29, 0x2f, - 0x65, 0xa7, 0x34, 0xfb, 0x7d, 0x92, 0x31, 0x28, 0x8b, 0x7b, 0x58, 0xfa, - 0x4b, 0x7b, 0xe8, 0x2b, 0x9a, 0x3d, 0x2f, 0x63, 0xa8, 0x0b, 0x3e, 0x9c, - 0x43, 0x17, 0xc0, 0x68, 0x94, 0x68, 0x8a, 0xc1, 0x3c, 0x23, 0x53, 0x09, - 0x78, 0x65, 0xf2, 0xb4, 0x79, 0x00, 0xc0, 0xce, 0x9d, 0x01, 0xeb, 0x39, - 0x7b, 0x45, 0x91, 0xb8, 0x2b, 0x54, 0xa1, 0x2d, 0x24, 0xa7, 0x2f, 0x0a, - 0x3a, 0x08, 0xad, 0x05, 0xde, 0x6d, 0x8c, 0xcc, 0xfc, 0xb8, 0x80, 0x9c, - 0x3a, 0xd7, 0x78, 0x9c, 0x6d, 0x70, 0xca, 0xf6, 0x03, 0xad, 0xcc, 0x2d, - 0x18, 0x5b, 0x60, 0x1a, 0x15, 0xed, 0x91, 0x1c, 0x62, 0x2a, 0xa7, 0x5b, - 0x9b, 0x28, 0x92, 0xe7, 0x07, 0x3e, 0xb0, 0x98, 0x42, 0x4b, 0x67, 0xdd, - 0x3f, 0x7e, 0xe4, 0x85, 0xe9, 0xa2, 0x8c, 0x8a, 0xdc, 0x35, 0x5f, 0xfa, - 0xfe, 0xac, 0x9f, 0x27, 0x22, 0x98, 0x8a, 0x32, 0xc0, 0xfb, 0xc5, 0x70, - 0x71, 0x0f, 0x9f, 0x87, 0x72, 0xd7, 0x63, 0xb7, 0xb4, 0x65, 0x46, 0x7a, - 0x28, 0xbf, 0xa2, 0xf7, 0xe6, 0x8e, 0x72, 0x7d, 0x89, 0x48, 0xd0, 0xf8, - 0xaa, 0x1a, 0xff, 0x8d, 0x1a, 0x4a, 0x12, 0x45, 0x45, 0x82, 0xa8, 0x63, - 0x50, 0x17, 0x8a, 0xa9, 0x75, 0xd7, 0xc0, 0x52, 0x12, 0x03, 0x69, 0xa7, - 0xc5, 0xd8, 0x07, 0x8f, 0xd7, 0xb7, 0x22, 0xc9, 0xe2, 0x0b, 0xc1, 0x80, - 0xa9, 0x25, 0x2f, 0x38, 0xfb, 0xd3, 0x45, 0x6f, 0x80, 0xfe, 0x66, 0xad, - 0xd1, 0x41, 0x4b, 0x87, 0x62, 0xb8, 0x48, 0xda, 0x49, 0x82, 0x58, 0x51, - 0x0c, 0xdf, 0x5f, 0x05, 0x1b, 0x99, 0x10, 0x90, 0x58, 0x6f, 0x47, 0xe8, - 0x0e, 0x8e, 0x0f, 0x78, 0x03, 0xbd, 0x01, 0x51, 0xdc, 0x3e, 0x95, 0x26, - 0x0c, 0x5a, 0x01, 0x3b, 0xda, 0x69, 0x6d, 0x8a, 0xa4, 0xc0, 0x42, 0xcf, - 0x78, 0x11, 0xd0, 0x68, 0xc8, 0x59, 0x4a, 0xc1, 0x8f, 0xe8, 0x0f, 0x97, - 0xeb, 0x44, 0x67, 0xb3, 0xe8, 0xed, 0xa3, 0xb8, 0x97, 0xf8, 0xe1, 0xbb, - 0x2c, 0x2e, 0xc9, 0x9e, 0x75, 0xa7, 0xd4, 0xdb, 0x40, 0x70, 0xb5, 0x7c, - 0x28, 0x42, 0x88, 0x15, 0x19, 0x3d, 0xd3, 0x8c, 0x77, 0xbc, 0xfe, 0x92, - 0x74, 0xb0, 0x33, 0x1c, 0xf1, 0x27, 0x13, 0x0f, 0x2f, 0xd9, 0x6a, 0x32, - 0xdf, 0xa7, 0xa8, 0x4b, 0x1d, 0x1b, 0x49, 0x86, 0x2c, 0xdf, 0x53, 0xc3, - 0xfb, 0x1a, 0xc3, 0x6e, 0xdc, 0x2f, 0xed, 0xb0, 0xf7, 0x5c, 0x00, 0x6a, - 0x5b, 0xdb, 0x37, 0x82, 0x38, 0xad, 0xf6, 0x53, 0x8f, 0xe8, 0xc0, 0x81, - 0x5d, 0x0a, 0x78, 0x71, 0x3d, 0x43, 0xe3, 0x57, 0xff, 0x73, 0xf2, 0x9b, - 0x0e, 0x4e, 0x39, 0x2f, 0xdc, 0xd1, 0x52, 0xe7, 0xd2, 0x0a, 0xcb, 0x7f, - 0x54, 0xfb, 0xd2, 0xbe, 0xf7, 0x30, 0xf6, 0x45, 0x89, 0x3f, 0xe7, 0xa8, - 0xf5, 0x13, 0x02, 0xa9, 0xea, 0x39, 0x85, 0x43, 0x91, 0xd0, 0x44, 0x69, - 0x68, 0x78, 0xc6, 0x5d, 0xb2, 0x0e, 0xea, 0x35, 0x19, 0x72, 0xce, 0x2c, - 0x66, 0x9a, 0xaa, 0x4f, 0x41, 0x5a, 0xdc, 0xe7, 0x33, 0x42, 0xe9, 0xd3, - 0xaf, 0x8a, 0x2e, 0x60, 0x58, 0xdd, 0x0c, 0x6f, 0xc3, 0xa1, 0x55, 0xbf, - 0x30, 0xd2, 0x1e, 0xa0, 0x51, 0x2f, 0x25, 0x31, 0x4f, 0xc5, 0x2c, 0xf3, - 0x70, 0xb6, 0x29, 0xba, 0xdd, 0x2a, 0xac, 0x2b, 0xa0, 0x4c, 0x6c, 0x86, - 0x7b, 0xf9, 0xf3, 0xd1, 0x4d, 0x21, 0x94, 0x3c, 0x9c, 0x18, 0xe2, 0x4c, - 0xa9, 0xd2, 0x52, 0x55, 0x19, 0x98, 0x0b, 0xab, 0x36, 0x88, 0xc9, 0x78, - 0xc4, 0x0b, 0x00, 0xa8, 0x22, 0x60, 0xb3, 0xc9, 0x28, 0x65, 0xd7, 0x43, - 0x8e, 0x26, 0x00, 0x2d, 0xdc, 0x46, 0x22, 0xfa, 0x3f, 0x42, 0xc6, 0x0b, - 0x0f, 0x9f, 0x45, 0xd1, 0xe5, 0xd3, 0x84, 0x3e, 0x5f, 0x6b, 0xe8, 0xb4, - 0x72, 0x2c, 0x13, 0x4e, 0x7a, 0x51, 0xf1, 0x6c, 0xe6, 0x8b, 0x3b, 0xff, - 0x2a, 0x1b, 0x71, 0x16, 0x5b, 0x63, 0xdd, 0x9f, 0x06, 0xe2, 0x6e, 0xdc, - 0xa6, 0x27, 0xf6, 0x8c, 0xca, 0x3d, 0x8c, 0x80, 0x2a, 0xc7, 0x57, 0x4c, - 0x1d, 0x41, 0xbc, 0x85, 0x3b, 0xe9, 0xb1, 0x05, 0x8b, 0xd1, 0x6f, 0xd9, - 0x36, 0xa7, 0x30, 0xa9, 0x7d, 0x83, 0xf8, 0x69, 0x07, 0x1b, 0x29, 0xe5, - 0xa2, 0x8e, 0xae, 0xe0, 0xa1, 0x02, 0x19, 0xa9, 0xd1, 0xf9, 0xb6, 0x39, - 0xd3, 0x55, 0x41, 0xbb, 0x62, 0xfb, 0xb4, 0x07, 0xc3, 0x9b, 0x00, 0x6e, - 0xb0, 0xa9, 0xdd, 0x6e, 0x32, 0x33, 0xf9, 0x0b, 0xc2, 0x56, 0xfa, 0x7e, - 0x03, 0x42, 0x3e, 0x45, 0x85, 0x02, 0xb1, 0xfc, 0x1a, 0x5f, 0x6c, 0x07, - 0x2e, 0xc9, 0x46, 0xc1, 0x27, 0x6d, 0x98, 0xc9, 0xbc, 0x46, 0xba, 0x29, - 0x46, 0x90, 0x28, 0xf7, 0x14, 0xbe, 0xa9, 0xf7, 0x12, 0x99, 0x8d, 0xb7, - 0xba, 0xcc, 0xc2, 0x7d, 0xd0, 0x59, 0xc2, 0xba, 0xd4, 0x55, 0xb9, 0xdf, - 0x40, 0xdf, 0x33, 0x99, 0x38, 0xac, 0x4b, 0x9d, 0x65, 0xe9, 0x04, 0x57, - 0xe5, 0x08, 0x5a, 0x30, 0xb0, 0x77, 0x84, 0x70, 0xbd, 0xf5, 0x90, 0xd4, - 0xb7, 0x1d, 0x42, 0x0b, 0xc2, 0xc1, 0x93, 0xf2, 0x35, 0xc7, 0xcc, 0xf5, - 0xc7, 0x1a, 0x90, 0x17, 0x91, 0xd2, 0xcf, 0x2d, 0x66, 0x5b, 0xfb, 0xc2, - 0xfc, 0xae, 0x37, 0xf8, 0xaa, 0xe6, 0x51, 0x7b, 0xe1, 0x08, 0xf7, 0x7b, - 0xdc, 0xbc, 0x8b, 0x70, 0x56, 0xa4, 0xd9, 0xcd, 0x76, 0xa9, 0xed, 0x74, - 0x33, 0x5b, 0xa2, 0x27, 0x06, 0x4e, 0x5e, 0xac, 0x8f, 0x63, 0x2d, 0x97, - 0x32, 0x1a, 0xe5, 0x88, 0x3a, 0xbf, 0xf7, 0x79, 0x63, 0xbe, 0xaa, 0xda, - 0x60, 0x7c, 0x69, 0xea, 0x7a, 0xd8, 0xea, 0xcc, 0xe4, 0x79, 0xd0, 0xc8, - 0xef, 0xf9, 0xa1, 0x4e, 0x0a, 0x8d, 0x3a, 0x8b, 0x2e, 0x2b, 0xab, 0x61, - 0x1b, 0x1e, 0xa2, 0x77, 0x8d, 0x96, 0x09, 0x1e, 0x86, 0xaa, 0x87, 0x37, - 0x48, 0xc7, 0x6c, 0xfa, 0x08, 0xf4, 0xbd, 0xb1, 0x2e, 0xa9, 0x5b, 0x02, - 0xb0, 0x19, 0xfe, 0x95, 0xb7, 0xe6, 0x29, 0x67, 0xca, 0x32, 0xcb, 0x02, - 0x2d, 0x36, 0x66, 0x5f, 0x48, 0xd3, 0x7d, 0xd4, 0x1b, 0x13, 0x0f, 0xad, - 0x69, 0x49, 0x70, 0x0e, 0xd5, 0x06, 0x0e, 0x5b, 0x9b, 0xca, 0x85, 0x66, - 0x67, 0xcd, 0x8c, 0xfe, 0x58, 0x31, 0xc1, 0x65, 0xc0, 0x91, 0xfb, 0xb4, - 0x83, 0x3e, 0xc7, 0x19, 0xec, 0x14, 0x9f, 0x12, 0x3c, 0x18, 0xa8, 0x7e, - 0x23, 0x54, 0x23, 0xe2, 0xc6, 0x01, 0x92, 0x7f, 0xb9, 0xcb, 0xa8, 0x3f, - 0x52, 0xb6, 0xd1, 0x36, 0x8f, 0x6c, 0x4f, 0x20, 0x0d, 0xdb, 0x53, 0xc8, - 0x50, 0x4e, 0x15, 0x48, 0xe4, 0xed, 0x5a, 0xb0, 0x87, 0xe5, 0xd9, 0x8b, - 0xf8, 0x8d, 0x3e, 0x20, 0x16, 0xde, 0x52, 0x4e, 0x5c, 0xeb, 0x5f, 0x0c, - 0x3b, 0x2f, 0xaa, 0xac, 0xfc, 0x57, 0x1f, 0x5b, 0x46, 0xa8, 0xdb, 0x70, - 0xa6, 0xd4, 0x73, 0xfc, 0x98, 0x64, 0x04, 0xa5, 0xaf, 0xed, 0x99, 0xe1, - 0x8e, 0x19, 0x85, 0x50, 0x9d, 0x64, 0x8f, 0x40, 0x59, 0x64, 0xcc, 0x15, - 0xc4, 0x96, 0xc0, 0x86, 0xa3, 0xc2, 0xa5, 0x2b, 0x9b, 0x4a, 0x93, 0x18, - 0x07, 0x92, 0x42, 0x26, 0x46, 0xe5, 0xe5, 0x87, 0x3b, 0x99, 0xaf, 0xfd, - 0xcd, 0x70, 0xf0, 0xcd, 0x4d, 0xae, 0x78, 0x63, 0x0e, 0x16, 0xa0, 0x8b, - 0x05, 0x3c, 0x47, 0x92, 0x39, 0xd4, 0x9a, 0x7b, 0xab, 0x13, 0x5f, 0xa8, - 0xf2, 0x9a, 0x08, 0x8a, 0x1e, 0x77, 0xad, 0x1a, 0x7c, 0xe0, 0xb9, 0xcc, - 0x44, 0xe6, 0x86, 0xd4, 0xeb, 0x64, 0xa3, 0x1b, 0x38, 0xad, 0x80, 0x4f, - 0x0e, 0x59, 0x01, 0xe7, 0x14, 0x80, 0xbf, 0xdd, 0x5f, 0x63, 0x86, 0x08, - 0x28, 0xb8, 0x19, 0xb1, 0xc3, 0x0b, 0x6a, 0xf7, 0x07, 0xe5, 0xbb, 0x0a, - 0x20, 0xb5, 0x60, 0x1f, 0x1c, 0xfc, 0xdf, 0xcf, 0xc9, 0xf1, 0xd4, 0x94, - 0xa4, 0xe5, 0x95, 0x7a, 0x68, 0x49, 0x6c, 0x14, 0xf6, 0x98, 0x36, 0x19, - 0x69, 0x64, 0x18, 0x5e, 0x29, 0x26, 0x67, 0x0c, 0xe1, 0x0e, 0xd0, 0x8c, - 0x33, 0x06, 0x55, 0xcf, 0xeb, 0x5d, 0xcf, 0x2e, 0x4c, 0x50, 0xf0, 0xd1, - 0xf2, 0x4d, 0xa0, 0x1d, 0xf0, 0x2b, 0xf6, 0x93, 0x10, 0xfa, 0xec, 0x9d, - 0xd8, 0x3c, 0x31, 0xf5, 0x76, 0x92, 0x8e, 0x43, 0x20, 0xe6, 0x2a, 0xeb, - 0xdf, 0x1e, 0xe8, 0xbd, 0x6a, 0xef, 0x60, 0x05, 0xf5, 0xc3, 0x9e, 0x4f, - 0xac, 0xee, 0x2f, 0xec, 0x24, 0xa4, 0x33, 0x4b, 0x96, 0x4c, 0x5c, 0x0d, - 0x58, 0x1b, 0xdf, 0xb0, 0x1c, 0xf9, 0xab, 0xce, 0x44, 0x7c, 0xd7, 0xfd, - 0xae, 0xa0, 0x1e, 0xbb, 0xbc, 0xab, 0x4f, 0x2a, 0x58, 0x6b, 0xa1, 0x0e, - 0x40, 0x9b, 0x4f, 0x2e, 0x10, 0xe9, 0x2b, 0xb3, 0x39, 0x8c, 0xec, 0x0a, - 0x86, 0x4e, 0x33, 0xaf, 0xcf, 0x89, 0x4f, 0x11, 0x23, 0xb4, 0xdc, 0x95, - 0xfe, 0x0f, 0x99, 0xd2, 0xae, 0xbc, 0xc1, 0x89, 0x3e, 0x1b, 0x4d, 0x32, - 0xd7, 0x0b, 0x4e, 0x50, 0x71, 0x65, 0xad, 0xbf, 0xa6, 0xcc, 0x1a, 0x65, - 0x1b, 0x49, 0x28, 0x4f, 0x80, 0x1f, 0xe0, 0x21, 0x96, 0xa1, 0xfa, 0x88, - 0xf2, 0x98, 0xd7, 0x82, 0xd1, 0x4c, 0x8a, 0x9e, 0x48, 0x37, 0xff, 0x9e, - 0xe4, 0xf7, 0xd3, 0xa3, 0x84, 0x7a, 0xd3, 0x23, 0x15, 0x5c, 0xb7, 0xca, - 0xf2, 0x7b, 0x66, 0x46, 0x73, 0x96, 0xe8, 0xcf, 0x52, 0xdb, 0x39, 0x4b, - 0x19, 0x63, 0x72, 0x9c, 0x78, 0x84, 0xfd, 0xfe, 0x76, 0x21, 0xa2, 0xec, - 0x00, 0xfa, 0x70, 0xe8, 0x02, 0x4d, 0xb5, 0x7b, 0xda, 0xb5, 0x50, 0xaa, - 0x88, 0x9b, 0x8a, 0x2c, 0xdb, 0x98, 0x80, 0x9e, 0x77, 0x55, 0x0f, 0xf9, - 0x99, 0x87, 0xfa, 0xf4, 0xe0, 0xc7, 0x80, 0x23, 0x66, 0x35, 0x73, 0x80, - 0xd6, 0xa1, 0x7e, 0x6f, 0xd1, 0xcb, 0xff, 0x84, 0xe5, 0xd9, 0x74, 0x6f, - 0x9f, 0x24, 0x51, 0x65, 0x9a, 0x49, 0xf2, 0xec, 0x5d, 0x0d, 0x58, 0x35, - 0xba, 0x2d, 0x48, 0x53, 0x75, 0x96, 0xe6, 0x8a, 0x92, 0x4f, 0x95, 0xe7, - 0xaf, 0x42, 0x41, 0xd8, 0xc0, 0x92, 0x79, 0x85, 0xe0, 0xfd, 0xa3, 0xf3, - 0x82, 0xa4, 0xc3, 0xa5, 0x85, 0x3e, 0xc4, 0x4b, 0x2e, 0xe0, 0xef, 0x30, - 0x33, 0xe4, 0x05, 0x86, 0x0b, 0xd2, 0x13, 0xa9, 0x4d, 0xcd, 0x03, 0xc1, - 0xa4, 0xcc, 0x68, 0xc7, 0x4e, 0x2a, 0x57, 0xc7, 0xc3, 0x78, 0xd5, 0xa0, - 0xfd, 0x34, 0x35, 0xf7, 0xfd, 0xde, 0xae, 0xba, 0x4c, 0x61, 0x80, 0x34, - 0xe3, 0xfa, 0x5e, 0x62, 0xe6, 0x73, 0x48, 0xc8, 0xff, 0xc2, 0x5e, 0x43, - 0x4e, 0x43, 0x01, 0x65, 0x41, 0x54, 0xd2, 0x42, 0xdd, 0x25, 0xdc, 0x15, - 0x54, 0x28, 0x3d, 0xee, 0xc3, 0x9e, 0xf9, 0xa4, 0xe1, 0x0a, 0x91, 0x85, - 0xed, 0x33, 0xf9, 0x98, 0x4e, 0x11, 0xea, 0x7d, 0x54, 0x02, 0x52, 0xec, - 0x5d, 0x7c, 0x99, 0x6d, 0x00, 0xe4, 0x5c, 0x02, 0xfd, 0xf4, 0x32, 0xfb, - 0x70, 0x25, 0x10, 0x46, 0x8b, 0xe3, 0x17, 0xe4, 0xd2, 0xa6, 0x3f, 0x79, - 0xd5, 0xfe, 0xe9, 0x43, 0x39, 0xa8, 0x78, 0x0e, 0xa8, 0xfe, 0xc1, 0x4a, - 0x80, 0xa8, 0x55, 0x49, 0xb8, 0xb5, 0x82, 0x84, 0x2f, 0x88, 0xbb, 0x38, - 0x96, 0x2f, 0x99, 0x01, 0x72, 0x22, 0xd4, 0x12, 0xbf, 0x79, 0x03, 0x92, - 0xb3, 0x9d, 0x78, 0x3d, 0x28, 0x78, 0x6f, 0x71, 0x1a, 0x53, 0xd7, 0x15, - 0x8a, 0x24, 0x5e, 0x01, 0xa1, 0x8c, 0xb3, 0x24, 0xa9, 0x00, 0x2c, 0xc5, - 0x0f, 0x2b, 0xe6, 0x8d, 0xca, 0x58, 0x14, 0x67, 0x3b, 0xbd, 0x12, 0xeb, - 0x10, 0x27, 0xb1, 0x4e, 0x09, 0xc9, 0x08, 0x60, 0x17, 0x92, 0xc0, 0x33, - 0xee, 0x61, 0x1c, 0x36, 0x5f, 0xed, 0xd2, 0x4f, 0x4e, 0x76, 0xe1, 0x79, - 0xc6, 0xeb, 0x64, 0x70, 0xa8, 0x95, 0x3e, 0xbc, 0x9a, 0x26, 0xbc, 0xc3, - 0x65, 0x56, 0xd8, 0x4c, 0xe7, 0xc2, 0xe0, 0x22, 0x8a, 0x93, 0xbd, 0x4d, - 0x4f, 0x8b, 0x91, 0xc4, 0x7c, 0xa2, 0xff, 0xf7, 0x9b, 0x85, 0x76, 0x90, - 0x5b, 0x48, 0xe7, 0xe9, 0x40, 0x31, 0x14, 0x31, 0x49, 0xa5, 0x8f, 0x6f, - 0x68, 0xca, 0xb1, 0x74, 0x5c, 0x84, 0x02, 0x0b, 0x7a, 0x57, 0x3a, 0x6a, - 0x47, 0x9a, 0xc5, 0x2c, 0xdc, 0x19, 0xf3, 0x0a, 0x8e, 0x8c, 0x6e, 0x2c, - 0xc7, 0x59, 0xfb, 0xa3, 0xfd, 0xd3, 0x90, 0xd6, 0x6b, 0xee, 0x6f, 0x74, - 0x41, 0x54, 0xe7, 0x4d, 0xf0, 0xc5, 0x72, 0xab, 0x0b, 0x44, 0x6e, 0x48, - 0xa3, 0xb5, 0x28, 0x45, 0xd5, 0x7f, 0x3b, 0xaf, 0x1f, 0x56, 0x32, 0xed, - 0x1f, 0xc4, 0xe9, 0x77, 0x19, 0xa6, 0xd6, 0x9a, 0x35, 0x0a, 0xd5, 0x20, - 0x94, 0x36, 0x9c, 0xb7, 0x37, 0x8d, 0x14, 0x94, 0x72, 0xb2, 0xe5, 0xa4, - 0xfa, 0x61, 0xf7, 0x2a, 0x11, 0xe8, 0x29, 0xeb, 0x15, 0xa6, 0xf4, 0x1c, - 0x79, 0x27, 0x92, 0x9b, 0x6a, 0x1a, 0xc8, 0x2d, 0xae, 0x5d, 0x9e, 0x57, - 0x55, 0x44, 0x2f, 0x1e, 0x7c, 0x38, 0xe0, 0x49, 0x03, 0x4f, 0x8a, 0x44, - 0x2a, 0xbe, 0x13, 0x41, 0x8b, 0x87, 0xb6, 0xc7, 0x2c, 0xe1, 0xa7, 0xb3, - 0xd3, 0xda, 0x32, 0x67, 0x97, 0xe6, 0xde, 0xb1, 0x87, 0x45, 0x73, 0x28, - 0x1a, 0xee, 0x05, 0xbc, 0x42, 0xad, 0x12, 0xe2, 0x31, 0x6d, 0xd9, 0x2c, - 0xcf, 0x21, 0xcc, 0x5a, 0x5f, 0x45, 0x18, 0x97, 0x62, 0x33, 0xe7, 0x65, - 0x2a, 0xd7, 0x2c, 0x22, 0x40, 0x12, 0xb7, 0x64, 0x8a, 0x6f, 0xdd, 0x32, - 0x26, 0xe4, 0x2e, 0x3a, 0x77, 0x43, 0x28, 0x9b, 0x1e, 0xf4, 0x2b, 0x73, - 0xf3, 0x6c, 0xbe, 0x99, 0x42, 0x90, 0x8e, 0xaa, 0x64, 0x50, 0x87, 0x38, - 0x48, 0xd1, 0xc3, 0xa0, 0x58, 0x23, 0x3b, 0x09, 0xcf, 0x6b, 0x30, 0x05, - 0x4c, 0x26, 0x3d, 0x25, 0xee, 0xd8, 0x87, 0x50, 0xd3, 0x0a, 0x61, 0x15, - 0x4e, 0x07, 0x91, 0x79, 0x85, 0x85, 0xb4, 0x96, 0xd4, 0xd7, 0xba, 0xc8, - 0x65, 0xea, 0xed, 0x0f, 0xb3, 0xde, 0x57, 0x7c, 0xe1, 0xf6, 0x3a, 0x99, - 0xb4, 0xeb, 0xf0, 0xea, 0x6b, 0xf5, 0xc0, 0x2e, 0x8f, 0x91, 0x2e, 0x6e, - 0xb9, 0xc7, 0x8c, 0x90, 0x66, 0xbc, 0xee, 0x1f, 0x6f, 0x5c, 0xb2, 0x28, - 0x3a, 0xf6, 0x1b, 0x87, 0xe0, 0x55, 0xf6, 0x42, 0x99, 0x5a, 0x60, 0xfb, - 0xbe, 0x73, 0x21, 0x72, 0x4a, 0xad, 0x26, 0x75, 0x47, 0xf6, 0x2b, 0xcd, - 0x3c, 0x7e, 0x3d, 0xb1, 0xac, 0xa0, 0xfe, 0xc0, 0x62, 0xcf, 0x34, 0x1f, - 0xf7, 0x7b, 0x06, 0x5f, 0xb3, 0xd8, 0x3f, 0x03, 0x41, 0x5f, 0x33, 0x20, - 0x39, 0x57, 0x85, 0x04, 0x43, 0xd4, 0xc9, 0x56, 0x8d, 0xc4, 0x1e, 0xbb, - 0xf8, 0x30, 0xb1, 0xb5, 0x9d, 0x5d, 0xc7, 0x24, 0x07, 0x4b, 0x87, 0xc7, - 0xe3, 0xaa, 0x36, 0xa9, 0xd8, 0xe1, 0x25, 0x62, 0xdd, 0xd0, 0x54, 0x60, - 0xad, 0x1c, 0x17, 0xc6, 0xfc, 0xa5, 0x7f, 0x2d, 0x9c, 0xf1, 0xaa, 0xd2, - 0x50, 0xcb, 0xad, 0xa3, 0xc4, 0x4c, 0x28, 0x88, 0xe0, 0x3c, 0xbd, 0x90, - 0x65, 0x26, 0xdc, 0xea, 0x63, 0xfb, 0x3d, 0xb3, 0x7a, 0x51, 0x95, 0xc3, - 0x6a, 0xf1, 0xb6, 0xc3, 0x13, 0x18, 0xcf, 0xe6, 0x5e, 0x4b, 0x9e, 0x8d, - 0x32, 0x55, 0xc8, 0xe6, 0x89, 0xbb, 0x41, 0xf9, 0x75, 0x33, 0x00, 0x94, - 0xcd, 0x87, 0x0f, 0x63, 0xf4, 0x20, 0x38, 0xf2, 0x60, 0x56, 0xc0, 0x34, - 0x38, 0x5e, 0x5a, 0x59, 0x87, 0x35, 0xde, 0x68, 0x01, 0x1e, 0x57, 0xf3, - 0x10, 0x91, 0x1c, 0x3c, 0xbb, 0x93, 0xa5, 0x0d, 0x2d, 0xb0, 0x4b, 0x6d, - 0xd1, 0xa7, 0xd7, 0x15, 0xfb, 0x5b, 0xde, 0x42, 0x79, 0x65, 0x44, 0x7c, - 0xcc, 0xb5, 0x36, 0x86, 0x8b, 0xcf, 0x59, 0xff, 0xfe, 0x44, 0x10, 0xce, - 0x8e, 0x8f, 0x1e, 0x63, 0x63, 0x62, 0xb2, 0x80, 0x3d, 0x14, 0x05, 0x6d, - 0xcd, 0x62, 0x23, 0x8e, 0xf8, 0xce, 0x5b, 0x30, 0x50, 0x2d, 0x7b, 0x2f, - 0x00, 0x2d, 0xaf, 0x7a, 0xc2, 0x7f, 0x9e, 0xc0, 0xc2, 0x97, 0x47, 0x16, - 0x81, 0xb2, 0xde, 0x62, 0x59, 0x8a, 0x90, 0xf8, 0xf2, 0x53, 0x4d, 0x98, - 0x4c, 0x3f, 0x4a, 0x1a, 0x43, 0x95, 0x37, 0x46, 0x51, 0x7e, 0x73, 0x7a, - 0xc6, 0x8c, 0xba, 0x6e, 0x4a, 0x33, 0xb3, 0x5a, 0x5c, 0x47, 0xbe, 0xe6, - 0x7b, 0xf3, 0x8a, 0x24, 0x0f, 0xf8, 0x18, 0xd3, 0x1b, 0xb6, 0xf5, 0x73, - 0x85, 0xd1, 0x68, 0xd7, 0x00, 0x0c, 0x4b, 0x72, 0x39, 0xee, 0x99, 0x82, - 0xfb, 0xa0, 0x35, 0x16, 0x81, 0xe4, 0x94, 0x8c, 0xe5, 0x4a, 0xb4, 0xe0, - 0xec, 0xbd, 0x95, 0xf4, 0x71, 0x52, 0x4f, 0x12, 0xa4, 0x38, 0x6b, 0xa0, - 0x17, 0x1e, 0x6f, 0xca, 0x14, 0x0e, 0xd4, 0x50, 0x36, 0xee, 0x79, 0xf1, - 0xe4, 0x7e, 0xff, 0x81, 0x66, 0xae, 0x18, 0xff, 0x93, 0xf0, 0x67, 0x9a, - 0xb1, 0x73, 0x87, 0xf9, 0x34, 0x02, 0x0b, 0x7a, 0x60, 0xa7, 0x97, 0xce, - 0x2d, 0x75, 0x35, 0xc8, 0xfc, 0xa8, 0xfa, 0xf5, 0xdc, 0x7e, 0x7d, 0xf7, - 0xb3, 0x9c, 0x34, 0x53, 0xaf, 0xaa, 0xeb, 0xff, 0xc3, 0x36, 0x5e, 0x4b, - 0x2c, 0xc3, 0x2f, 0x5a, 0xb2, 0xdd, 0xc1, 0xa6, 0xee, 0xd2, 0xd9, 0xf3, - 0x2d, 0x41, 0x5b, 0x72, 0x99, 0x90, 0xae, 0x3e, 0x00, 0x24, 0xf3, 0xfd, - 0x23, 0x9b, 0x44, 0xdf, 0xdd, 0x1e, 0x32, 0x24, 0x27, 0x1e, 0x8f, 0x32, - 0xfe, 0xd1, 0x09, 0x93, 0x86, 0xb8, 0x0f, 0x28, 0xcb, 0xc2, 0xf9, 0xd1, - 0x66, 0x87, 0x43, 0x51, 0xca, 0xff, 0xb4, 0xad, 0xc2, 0x50, 0x7f, 0xdb, - 0x5f, 0xdc, 0x3a, 0x2f, 0xe1, 0xbf, 0xe5, 0x0a, 0x24, 0xd8, 0x04, 0x3b, - 0x02, 0x5c, 0xce, 0x96, 0x14, 0xec, 0xe5, 0xba, 0x7b, 0xa0, 0xfd, 0x06, - 0xb2, 0x9b, 0x92, 0x22, 0x36, 0x92, 0x69, 0x9e, 0x1b, 0x95, 0x7f, 0xcd, - 0x71, 0x1a, 0xb5, 0xf9, 0x2c, 0x71, 0xe4, 0xb8, 0xb2, 0xe2, 0x74, 0xd3, - 0x9b, 0x14, 0x75, 0x44, 0x85, 0x2d, 0xd1, 0xbc, 0xed, 0x98, 0xbf, 0x9e, - 0x89, 0x6e, 0x0d, 0x45, 0x89, 0xe0, 0x87, 0xb3, 0x1c, 0x7e, 0x0a, 0x1e, - 0x87, 0xd8, 0xbb, 0x4a, 0xde, 0x8b, 0xa8, 0xd4, 0x80, 0x82, 0x35, 0xf5, - 0xdf, 0xb5, 0x14, 0x9f, 0x00, 0x4b, 0x8f, 0x6f, 0xc4, 0x6d, 0xee, 0x2b, - 0x7e, 0xf6, 0x39, 0x99, 0x00, 0xfc, 0xd1, 0xf4, 0x2a, 0x34, 0x6a, 0x89, - 0x42, 0x75, 0x31, 0x62, 0x7a, 0x72, 0xb3, 0xdc, 0x64, 0xbd, 0xdf, 0xad, - 0x57, 0x00, 0xfb, 0x18, 0x78, 0xa7, 0x08, 0x69, 0xfb, 0x34, 0xb9, 0x6f, - 0x18, 0x54, 0x3a, 0xf6, 0x39, 0x06, 0x78, 0x83, 0x18, 0x04, 0x91, 0xe3, - 0x1f, 0x47, 0xdd, 0x2f, 0x99, 0x2d, 0xbd, 0xb5, 0xe2, 0x36, 0xde, 0x54, - 0x7e, 0x60, 0x1a, 0x7e, 0xee, 0x91, 0x50, 0x8e, 0x86, 0xa8, 0x79, 0x82, - 0x70, 0x5d, 0x09, 0x9a, 0x0d, 0x03, 0xd1, 0x6b, 0xe2, 0xc6, 0xd2, 0x57, - 0x21, 0xa2, 0x34, 0x56, 0x1f, 0xc2, 0x63, 0x8f, 0x12, 0xd6, 0xf8, 0xfc, - 0xb2, 0x2f, 0xcd, 0xdc, 0xf4, 0xc3, 0xac, 0xd6, 0xf7, 0xf0, 0x08, 0x25, - 0x16, 0x1a, 0x65, 0xab, 0x14, 0xc5, 0x55, 0xfa, 0x86, 0xa4, 0xe5, 0xa1, - 0xec, 0x4b, 0xa0, 0xdc, 0x09, 0x72, 0x67, 0x30, 0xff, 0x3c, 0x4a, 0xe8, - 0x5c, 0xa0, 0xd6, 0x3f, 0x07, 0x99, 0xc0, 0x43, 0xa2, 0x3a, 0x62, 0x03, - 0xd7, 0xa6, 0x98, 0x2b, 0x05, 0x81, 0x73, 0x94, 0x2d, 0xac, 0x38, 0x34, - 0xdc, 0xad, 0x89, 0xe4, 0x7e, 0xfc, 0x04, 0x7d, 0x10, 0x22, 0x60, 0x08, - 0x4c, 0x4e, 0xa4, 0x03, 0x38, 0xe7, 0xbe, 0xed, 0x4d, 0x89, 0x6e, 0x9b, - 0xf5, 0xe0, 0xb7, 0xec, 0x7e, 0x52, 0xe4, 0x5b, 0x32, 0x10, 0xc4, 0x5f, - 0x51, 0xc6, 0xb7, 0x6b, 0x9a, 0xf2, 0xfe, 0x74, 0x1c, 0xcc, 0x33, 0x84, - 0x69, 0xeb, 0xd2, 0xe9, 0x01, 0x90, 0xcb, 0x6e, 0x52, 0x1a, 0x22, 0xb7, - 0x68, 0x4a, 0x05, 0xc1, 0x62, 0x47, 0x98, 0x28, 0x59, 0xdf, 0x93, 0xd4, - 0x3b, 0x55, 0x36, 0xc6, 0xd9, 0xb3, 0x94, 0xde, 0xe5, 0x3b, 0x71, 0x4c, - 0x36, 0xeb, 0x32, 0x3f, 0x95, 0xf6, 0x81, 0x99, 0xea, 0x60, 0x7e, 0x68, - 0x33, 0x07, 0x5a, 0x15, 0x46, 0x54, 0xe9, 0x42, 0xae, 0xec, 0xb1, 0xd7, - 0x40, 0xd4, 0x41, 0xcc, 0xc8, 0xdb, 0x5a, 0xe4, 0x86, 0x7c, 0x11, 0xb3, - 0x94, 0x13, 0x28, 0x9f, 0x7d, 0x94, 0x64, 0x37, 0x0b, 0x36, 0x4a, 0xe9, - 0x08, 0xaf, 0xcc, 0xd5, 0x21, 0x43, 0xa9, 0xa3, 0x4c, 0x74, 0x95, 0xbe, - 0xd6, 0xa6, 0xae, 0xd8, 0x6c, 0x3b, 0xb0, 0x59, 0x28, 0xc5, 0x9d, 0xf1, - 0x4a, 0xe7, 0x28, 0xc5, 0x34, 0xc9, 0xd4, 0x6d, 0x7a, 0xf2, 0xfd, 0xca, - 0x3e, 0xc2, 0x16, 0x53, 0xbf, 0x77, 0xa0, 0xee, 0xa2, 0x52, 0x90, 0x01, - 0xd4, 0x74, 0x20, 0x56, 0xb1, 0x79, 0xda, 0xf9, 0x7d, 0x0f, 0xe9, 0x47, - 0xf6, 0x34, 0x63, 0xfb, 0x2f, 0x44, 0xe1, 0x04, 0x98, 0x43, 0x4e, 0x51, - 0x2e, 0xfa, 0x92, 0x0e, 0x17, 0x89, 0x1c, 0x17, 0x2e, 0x0f, 0x0a, 0x3b, - 0x55, 0xba, 0xab, 0x83, 0x50, 0x6e, 0x1a, 0x55, 0x7f, 0x1b, 0x59, 0x8e, - 0xe7, 0xf0, 0x47, 0x32, 0x1e, 0x3b, 0x6c, 0x4b, 0x3b, 0x0b, 0xe0, 0x3e, - 0x17, 0x85, 0x57, 0xad, 0x5c, 0x25, 0x22, 0x58, 0x2e, 0xe6, 0x5d, 0x91, - 0x41, 0xeb, 0xaf, 0x87, 0x78, 0x91, 0x7c, 0xe6, 0x3f, 0x53, 0x38, 0x36, - 0xb0, 0x7a, 0x84, 0xdf, 0x67, 0x0f, 0x04, 0x8d, 0xe7, 0x58, 0xf4, 0x0d, - 0xa4, 0xc5, 0xff, 0xb2, 0xb0, 0xe2, 0xab, 0x0c, 0xa1, 0x1b, 0x2c, 0x5c, - 0x79, 0xd3, 0x9b, 0x5b, 0x31, 0x65, 0xf2, 0x5b, 0x25, 0x87, 0xd3, 0x3a, - 0xc8, 0x27, 0x1b, 0x80, 0x9a, 0xc7, 0xe6, 0x78, 0xd1, 0x39, 0xe4, 0x20, - 0xbd, 0x04, 0x77, 0x1e, 0xd8, 0x2c, 0x85, 0xf4, 0xc1, 0x12, 0xc7, 0xcd, - 0xf9, 0x10, 0x36, 0xd3, 0xa5, 0x2a, 0x04, 0x0d, 0x4e, 0xc9, 0x6b, 0xbf, - 0x73, 0x3f, 0x44, 0xfa, 0x86, 0x4b, 0x05, 0x0a, 0xbc, 0x62, 0x07, 0x31, - 0xcd, 0x10, 0x43, 0x07, 0xf2, 0xf2, 0x1b, 0x4b, 0x93, 0x06, 0x28, 0x89, - 0x18, 0x24, 0xd4, 0xfb, 0xf5, 0x53, 0x9d, 0x74, 0x26, 0x5e, 0xfc, 0xce, - 0x33, 0xe0, 0xe3, 0x25, 0xf1, 0x01, 0x51, 0x6d, 0x47, 0x7f, 0xd1, 0x87, - 0x50, 0xbf, 0x20, 0xe4, 0x11, 0x16, 0xad, 0xc7, 0xf0, 0x8f, 0x62, 0x53, - 0x38, 0xf0, 0xd0, 0xae, 0x0a, 0xb0, 0x13, 0xaf, 0x7f, 0x67, 0x92, 0x4b, - 0x64, 0x28, 0x65, 0xd4, 0x38, 0x27, 0xf6, 0x06, 0xac, 0x65, 0xf1, 0x35, - 0x14, 0x95, 0xa2, 0x54, 0xbb, 0x48, 0x11, 0xee, 0x75, 0xf4, 0x27, 0x6e, - 0x2b, 0x6f, 0x22, 0x72, 0xf5, 0xc9, 0x2c, 0xa7, 0xf1, 0xfe, 0x75, 0x52, - 0x95, 0xa0, 0x75, 0x9b, 0xb8, 0x11, 0x4a, 0x57, 0x2c, 0x1f, 0x0f, 0x37, - 0x49, 0x37, 0xd9, 0x67, 0x31, 0x23, 0x4a, 0x0e, 0xf2, 0xbd, 0x5b, 0x9b, - 0x51, 0x71, 0x66, 0x14, 0x8f, 0x72, 0x51, 0xf6, 0xb4, 0xff, 0x0e, 0x08, - 0xf7, 0xf7, 0x68, 0xa4, 0xb2, 0x6e, 0x27, 0x99, 0x51, 0x79, 0x47, 0x2f, - 0xb4, 0x97, 0x45, 0x27, 0x2f, 0x57, 0x9f, 0x7a, 0xff, 0x25, 0xc7, 0xfe, - 0x3c, 0xe3, 0x18, 0xa2, 0x7a, 0x71, 0x68, 0x4e, 0x6e, 0x06, 0xbc, 0x4c, - 0xfd, 0x1d, 0x2a, 0x83, 0x9a, 0x93, 0x7c, 0x25, 0x99, 0xc4, 0x95, 0x6a, - 0x93, 0x6a, 0x11, 0x0c, 0x19, 0xe4, 0x9f, 0x88, 0x4b, 0x66, 0xbf, 0x83, - 0xc0, 0x28, 0xaf, 0xe5, 0x1b, 0x05, 0xb6, 0xca, 0xca, 0xe7, 0x6c, 0x76, - 0x25, 0x91, 0x9c, 0xbc, 0x18, 0x48, 0x7d, 0x22, 0x4d, 0x2a, 0xa1, 0xad, - 0x17, 0xc5, 0xcf, 0xde, 0x70, 0xb7, 0x40, 0x35, 0x29, 0x18, 0x48, 0x17, - 0x1d, 0x3b, 0xcb, 0x23, 0x25, 0x5f, 0x70, 0xb0, 0x21, 0xc6, 0x37, 0xec, - 0x81, 0x72, 0x38, 0x42, 0xbe, 0x7f, 0x65, 0x43, 0xf5, 0xd2, 0xad, 0x85, - 0x69, 0xbe, 0x27, 0x9c, 0x72, 0x83, 0x6f, 0xd5, 0x7d, 0x5a, 0x1f, 0x72, - 0xca, 0xa4, 0x8c, 0x0d, 0xf9, 0x05, 0x7c, 0xef, 0xbe, 0x09, 0x9a, 0xe2, - 0xa9, 0x92, 0xf6, 0x15, 0xc1, 0x9c, 0x78, 0x38, 0xb8, 0x67, 0xde, 0xf6, - 0x7d, 0x5a, 0x70, 0xdd, 0x94, 0x44, 0x48, 0xd9, 0xda, 0x7c, 0xab, 0x77, - 0x25, 0x22, 0x07, 0x56, 0x9e, 0xc0, 0x15, 0x16, 0xd5, 0x71, 0x26, 0x99, - 0x4b, 0x8a, 0x1e, 0x56, 0x53, 0x2a, 0xfc, 0xbd, 0x82, 0xe8, 0xfb, 0xfa, - 0xe3, 0xa1, 0x19, 0xa8, 0x8c, 0xc4, 0xfe, 0x19, 0xfb, 0x5e, 0xa5, 0x5d, - 0x96, 0x48, 0xd4, 0x13, 0x61, 0xf8, 0xbc, 0x47, 0xc0, 0xbe, 0x2e, 0xe2, - 0xe6, 0xa6, 0x73, 0x29, 0x45, 0x6c, 0x6e, 0x62, 0x2f, 0xdf, 0x8f, 0x8e, - 0xea, 0x37, 0x77, 0xe4, 0x2f, 0xa2, 0x52, 0xef, 0x07, 0x5f, 0xfc, 0x57, - 0x9b, 0x2a, 0xe5, 0x48, 0x13, 0xb5, 0x8b, 0xa9, 0xb6, 0x86, 0x5d, 0xb9, - 0xed, 0x33, 0xa5, 0x3b, 0x06, 0xbe, 0xbf, 0xff, 0x5f, 0x7a, 0x7e, 0x15, - 0x7a, 0x62, 0x28, 0x6c, 0x09, 0xca, 0xeb, 0x5d, 0x4a, 0x96, 0x9f, 0x47, - 0x14, 0x82, 0xf1, 0x5c, 0xc4, 0xb7, 0x28, 0xa5, 0x74, 0xa2, 0x04, 0x46, - 0x85, 0x97, 0xae, 0x2b, 0x87, 0x42, 0xc0, 0xf9, 0x3c, 0xad, 0x21, 0x73, - 0xe4, 0xb1, 0x27, 0xe8, 0x5c, 0xc5, 0x39, 0x90, 0x52, 0xc2, 0x75, 0x3f, - 0x66, 0x00, 0xcc, 0xc7, 0xa3, 0x72, 0xe9, 0x55, 0x55, 0xb4, 0x8b, 0xe5, - 0x54, 0x62, 0x78, 0x2e, 0x4e, 0xc0, 0x80, 0xcc, 0x06, 0xed, 0x8e, 0x50, - 0xd0, 0xbc, 0x23, 0xdb, 0x93, 0x66, 0xc1, 0x65, 0x11, 0x0e, 0x1a, 0xaa, - 0x8a, 0x77, 0x49, 0x68, 0xd5, 0xe6, 0x58, 0x73, 0x2d, 0x67, 0x56, 0x5e, - 0x05, 0x97, 0xa2, 0xb0, 0x12, 0x9f, 0x89, 0xac, 0xc4, 0xa1, 0xfd, 0x60, - 0x26, 0xf1, 0x15, 0x51, 0x87, 0x3e, 0x74, 0xf7, 0x56, 0xaf, 0x02, 0xb6, - 0xd7, 0xed, 0x57, 0x58, 0x7c, 0x95, 0xcf, 0x66, 0xff, 0x07, 0x69, 0xc9, - 0xd0, 0xb3, 0xfd, 0xa3, 0x1f, 0xce, 0xb4, 0x05, 0x73, 0x94, 0xff, 0x6c, - 0x93, 0x12, 0x12, 0x74, 0x9f, 0x69, 0x77, 0x42, 0x5e, 0xb2, 0x17, 0x2f, - 0x2c, 0x1e, 0xc1, 0x1f, 0x90, 0xa0, 0xbb, 0xf7, 0x21, 0x2b, 0x86, 0x34, - 0xa8, 0x7a, 0x5c, 0x3d, 0xf2, 0x93, 0xa6, 0xd6, 0x45, 0xf9, 0x24, 0xae, - 0x69, 0x24, 0xfb, 0x3f, 0x8a, 0x56, 0x96, 0xd6, 0x5d, 0x9a, 0xfb, 0xee, - 0x42, 0x27, 0x53, 0x8a, 0x1f, 0xb7, 0xe0, 0x46, 0x06, 0xa9, 0xdc, 0xb0, - 0x14, 0x31, 0x38, 0xc8, 0xc8, 0x7b, 0xcd, 0x2b, 0xef, 0x4f, 0x20, 0xbe, - 0xbd, 0xe0, 0x3c, 0x40, 0x97, 0x65, 0x11, 0xd2, 0xc4, 0x60, 0x16, 0x30, - 0xec, 0x5b, 0xc5, 0xda, 0x84, 0x09, 0x45, 0xa4, 0xff, 0x9e, 0xe6, 0xb5, - 0x12, 0x59, 0x79, 0xde, 0xd7, 0x97, 0x81, 0x42, 0xb4, 0x70, 0xe8, 0x3f, - 0x26, 0xf4, 0x83, 0x88, 0x28, 0xd7, 0x92, 0x46, 0xc8, 0xae, 0xcc, 0x09, - 0x34, 0x47, 0x00, 0x47, 0xc9, 0xcb, 0xd1, 0xdb, 0xf0, 0x82, 0xf5, 0x5a, - 0x44, 0x56, 0xc3, 0xe8, 0x0f, 0x0b, 0x79, 0x65, 0x27, 0x81, 0x19, 0x83, - 0xa4, 0xb7, 0x98, 0x2f, 0xb3, 0xfd, 0x5f, 0xdd, 0x0f, 0x03, 0xfe, 0xd1, - 0x1b, 0x4e, 0xb3, 0xb5, 0xef, 0xfc, 0x1f, 0x04, 0xb8, 0x35, 0x4b, 0xb6, - 0xaf, 0xa8, 0x67, 0xa3, 0x75, 0x4b, 0x2c, 0xca, 0xce, 0x66, 0xbf, 0x9e, - 0x24, 0x79, 0x86, 0xce, 0x45, 0xe5, 0x1d, 0x62, 0x34, 0x1e, 0x07, 0xea, - 0xcd, 0x16, 0x48, 0x21, 0xfb, 0xd7, 0x9c, 0x61, 0xaa, 0x44, 0x41, 0xfa, - 0xd2, 0x34, 0xb0, 0x9e, 0x25, 0xd0, 0x9a, 0x98, 0x5a, 0xd9, 0x59, 0x42, - 0x5b, 0x30, 0x29, 0x64, 0xa4, 0x08, 0xe6, 0xe8, 0xd9, 0x5a, 0xa2, 0xb0, - 0x7d, 0xb9, 0xd5, 0x09, 0xdd, 0x09, 0xc9, 0x46, 0x55, 0xcd, 0x03, 0x51, - 0xa2, 0xbd, 0xae, 0x90, 0x28, 0x17, 0x0c, 0x58, 0xa7, 0xd9, 0x1c, 0x01, - 0xf5, 0x68, 0x18, 0xd0, 0x98, 0x41, 0x7f, 0x2b, 0x65, 0x63, 0x2b, 0x03, - 0x8a, 0xdc, 0xb2, 0x7e, 0xcd, 0xfe, 0x84, 0x56, 0x6e, 0x25, 0x34, 0xa6, - 0xa8, 0x4d, 0x97, 0xe9, 0x04, 0xf3, 0xd5, 0x7d, 0x01, 0x57, 0x8b, 0x2e, - 0x35, 0x3a, 0xce, 0xae, 0x29, 0xac, 0x27, 0xe3, 0x86, 0x58, 0xae, 0xe4, - 0xaf, 0xac, 0xe1, 0xc1, 0xa4, 0x2a, 0xa4, 0x2e, 0xf3, 0xdf, 0x44, 0xc3, - 0x7b, 0x4f, 0x16, 0x62, 0xce, 0xf7, 0xba, 0xa2, 0x34, 0x95, 0x27, 0x84, - 0x89, 0xd8, 0x76, 0x94, 0xc5, 0xec, 0xf5, 0x5c, 0x0e, 0x45, 0xc9, 0xdd, - 0xa4, 0xa3, 0x92, 0xa1, 0x24, 0x0e, 0x8e, 0x2f, 0x0b, 0x67, 0x38, 0x33, - 0x1b, 0x39, 0xba, 0x48, 0x67, 0xfd, 0xab, 0xe7, 0x76, 0x96, 0xbc, 0x8a, - 0x9d, 0x92, 0xda, 0xad, 0xda, 0x48, 0x7e, 0x7d, 0xd4, 0x0d, 0xf7, 0x1c, - 0xf7, 0x49, 0x76, 0xbf, 0xc9, 0x82, 0xf1, 0x1c, 0xd1, 0x51, 0x7f, 0x6c, - 0xfc, 0x95, 0x20, 0xf3, 0xae, 0xc5, 0xb0, 0xd3, 0x08, 0xff, 0xd8, 0x3d, - 0x35, 0x80, 0x8c, 0x80, 0x02, 0x0c, 0x2f, 0x94, 0xa4, 0x3d, 0x61, 0xc9, - 0xec, 0xd9, 0xcc, 0x93, 0x1d, 0xf0, 0x7b, 0xd5, 0xd1, 0x44, 0x5a, 0xa8, - 0xe6, 0xa6, 0xbe, 0x05, 0x7f, 0x5a, 0xb3, 0xb5, 0x0f, 0xdc, 0x66, 0x3a, - 0x57, 0xea, 0x85, 0xb9, 0xb0, 0x45, 0x70, 0xc4, 0x05, 0x26, 0x9e, 0xbd, - 0xb2, 0x00, 0xb5, 0x97, 0x6d, 0x9a, 0x3e, 0xb2, 0xd9, 0x23, 0x14, 0x1a, - 0xfb, 0x5a, 0x6f, 0xf0, 0xef, 0x60, 0xe6, 0xd6, 0x1a, 0x7f, 0x58, 0x27, - 0x40, 0x02, 0x9f, 0x1e, 0x80, 0x51, 0x58, 0x3b, 0x9f, 0xae, 0x80, 0x66, - 0xc0, 0xe1, 0xa4, 0xf6, 0x49, 0x18, 0x5e, 0xfe, 0x18, 0x5b, 0x66, 0x89, - 0xa6, 0x79, 0x8a, 0x43, 0x8d, 0xe5, 0xcc, 0x43, 0x50, 0x71, 0x1f, 0x37, - 0x94, 0xde, 0xc1, 0x92, 0x09, 0xcc, 0x1b, 0xe9, 0x24, 0x58, 0xa2, 0x42, - 0xb0, 0x01, 0xb5, 0xd4, 0xe5, 0x97, 0xd9, 0x21, 0x61, 0x0e, 0x1d, 0xfd, - 0x06, 0x79, 0x06, 0x8b, 0xd7, 0x69, 0x2e, 0x9c, 0x0c, 0xcb, 0x02, 0x70, - 0xd0, 0x32, 0xcd, 0xb7, 0xd4, 0x5b, 0x3e, 0xdc, 0xa0, 0x8a, 0xba, 0x9c, - 0x47, 0xdb, 0x74, 0x60, 0x05, 0x73, 0xa3, 0xf9, 0x2e, 0x79, 0x00, 0xf6, - 0xce, 0xf6, 0xcd, 0x40, 0x3d, 0x3e, 0xba, 0xfb, 0x08, 0x1f, 0x13, 0x99, - 0xc7, 0xe0, 0x31, 0x06, 0x24, 0xc8, 0xfe, 0x73, 0x80, 0xdc, 0xba, 0x3e, - 0x72, 0x28, 0x56, 0x10, 0x60, 0xaf, 0x41, 0x99, 0xcf, 0x74, 0x0f, 0x39, - 0x28, 0x70, 0x0c, 0x66, 0x13, 0xfe, 0xc5, 0xbe, 0x09, 0x61, 0xfd, 0xa6, - 0x9e, 0x9a, 0xf9, 0xed, 0x42, 0x81, 0xd4, 0xe0, 0x5c, 0x81, 0x09, 0x9d, - 0x96, 0xc3, 0xa7, 0x2c, 0x57, 0x7b, 0x35, 0xa0, 0x3e, 0x6f, 0x9d, 0x13, - 0x0c, 0xa5, 0x6d, 0xf8, 0xf6, 0xc6, 0xd8, 0xc6, 0x43, 0x92, 0x30, 0x33, - 0x25, 0x49, 0x8c, 0x50, 0xf7, 0xa6, 0xa2, 0x89, 0x50, 0xe3, 0x86, 0x99, - 0xcd, 0xc4, 0x52, 0xa1, 0x37, 0x01, 0xde, 0xb3, 0x8f, 0xf2, 0xf5, 0x7a, - 0x61, 0x1f, 0x31, 0xaa, 0x84, 0x0e, 0xd5, 0xab, 0xab, 0x3d, 0x98, 0x8b, - 0x48, 0x6d, 0x50, 0xc6, 0x77, 0xc3, 0xf0, 0x37, 0x1f, 0x4c, 0xcc, 0x3a, - 0xfa, 0x15, 0xe7, 0xf3, 0x88, 0x26, 0xbf, 0xd4, 0x0d, 0x5b, 0xaa, 0x71, - 0x19, 0xd4, 0x26, 0xd2, 0x5d, 0x2e, 0x39, 0xaa, 0xe4, 0xf5, 0x25, 0xf7, - 0xa8, 0xf4, 0x26, 0x4c, 0xcf, 0xa5, 0x52, 0x73, 0xb7, 0x7c, 0xb6, 0x15, - 0x88, 0xb2, 0xb6, 0x8c, 0x6b, 0x73, 0xd8, 0x30, 0x5c, 0xff, 0x45, 0x06, - 0xb8, 0x4b, 0xfb, 0xbc, 0x2c, 0xbe, 0xfd, 0x5b, 0x0f, 0x69, 0x7d, 0x53, - 0x70, 0x34, 0x64, 0x01, 0x65, 0x2b, 0x34, 0xf3, 0xf8, 0xa2, 0x51, 0xc8, - 0x53, 0xd3, 0x38, 0x00, 0xc5, 0xd6, 0x1d, 0x95, 0x9a, 0x57, 0x80, 0x5f, - 0x11, 0x9e, 0x74, 0x10, 0x31, 0x62, 0x6b, 0x43, 0xca, 0xad, 0xe0, 0x95, - 0xe5, 0x67, 0xcd, 0x6c, 0x2c, 0x50, 0xa6, 0x56, 0x8d, 0xe6, 0xbe, 0x36, - 0xf4, 0x61, 0xfc, 0x77, 0xd3, 0x78, 0x65, 0x3a, 0x28, 0x9e, 0x2d, 0x48, - 0x36, 0xa7, 0x17, 0x32, 0xd6, 0x47, 0xec, 0x99, 0x81, 0xb2, 0x7a, 0x0c, - 0x72, 0x86, 0x9e, 0xca, 0x66, 0x97, 0x68, 0xfb, 0xbb, 0x8c, 0x2a, 0x9b, - 0x61, 0xa1, 0x56, 0xbe, 0xc4, 0x0f, 0x9c, 0xf0, 0x63, 0x9d, 0xc8, 0x31, - 0x9f, 0xa5, 0xf3, 0xc9, 0x5c, 0x39, 0x66, 0x0c, 0x6b, 0x6d, 0x4a, 0x98, - 0xf7, 0x10, 0xbc, 0x4a, 0xc3, 0x3e, 0xd3, 0xfd, 0x4d, 0x32, 0x73, 0x3f, - 0xd4, 0x95, 0x75, 0x7e, 0x6b, 0x1b, 0x17, 0xb7, 0x71, 0xe4, 0x5d, 0x31, - 0xb8, 0x22, 0x51, 0x0b, 0xd9, 0x45, 0x7c, 0x1e, 0x0e, 0x11, 0xe3, 0xbb, - 0xf3, 0xa2, 0x82, 0x26, 0x01, 0x10, 0xf3, 0x79, 0x2a, 0x54, 0x15, 0x41, - 0x67, 0xad, 0xa1, 0x29, 0x16, 0x40, 0x24, 0x22, 0x90, 0x20, 0xbe, 0x6d, - 0xbf, 0xc7, 0x10, 0x32, 0x3d, 0x9e, 0x47, 0xc7, 0x7d, 0xb0, 0x94, 0xcf, - 0xfa, 0xa6, 0x18, 0x62, 0xd9, 0x62, 0xdf, 0x21, 0x11, 0x68, 0xc0, 0x09, - 0x38, 0x4a, 0x49, 0x22, 0x5d, 0x3a, 0xb5, 0xaa, 0x71, 0x37, 0x86, 0x1a, - 0xa7, 0xea, 0xff, 0x71, 0x80, 0x82, 0x00, 0xc1, 0xed, 0x5b, 0x15, 0xff, - 0x30, 0x12, 0xe3, 0xf9, 0x0e, 0xcc, 0x97, 0xb5, 0x48, 0xec, 0x47, 0xc9, - 0x66, 0xeb, 0xdc, 0x0d, 0x7f, 0x34, 0x3e, 0x07, 0xfd, 0x55, 0xce, 0x8c, - 0x5a, 0x7c, 0x54, 0xb7, 0x4b, 0xb5, 0xc6, 0xb4, 0x75, 0x27, 0x59, 0xe8, - 0x08, 0x33, 0x78, 0xce, 0xb2, 0xf2, 0xa3, 0x6d, 0xe7, 0x0e, 0xb3, 0x34, - 0xbf, 0xa9, 0xc1, 0x4e, 0x3f, 0x7f, 0x44, 0xe0, 0x2d, 0x8b, 0x75, 0xda, - 0xb2, 0x56, 0x40, 0x82, 0x04, 0x38, 0x45, 0x08, 0x27, 0x7f, 0xed, 0x39, - 0xd0, 0x6c, 0x8f, 0xae, 0xcf, 0xbd, 0xd4, 0xf6, 0x74, 0x13, 0xb6, 0x72, - 0xe5, 0x2d, 0xed, 0x71, 0x13, 0xba, 0x8d, 0xda, 0x73, 0x3f, 0x2d, 0xd4, - 0xf8, 0x18, 0x45, 0x56, 0xbc, 0xe2, 0xae, 0x77, 0x1c, 0xea, 0xe2, 0x95, - 0x94, 0x54, 0xac, 0xe2, 0xfb, 0x33, 0xff, 0x70, 0x9e, 0xe0, 0xb2, 0x45, - 0xd2, 0xaf, 0x84, 0x24, 0xd1, 0x8a, 0x12, 0x24, 0x8a, 0x4d, 0xef, 0x98, - 0xe6, 0x3a, 0x8a, 0x5a, 0xaf, 0x4a, 0x2c, 0xa7, 0x1b, 0x10, 0x7c, 0x65, - 0x32, 0x1d, 0x18, 0xce, 0x05, 0x50, 0x86, 0xf8, 0x03, 0x7c, 0x25, 0xcc, - 0x50, 0xb2, 0xa9, 0x2e, 0x8f, 0x66, 0x16, 0xe3, 0xe4, 0x3c, 0x77, 0xc5, - 0xe0, 0x8b, 0xc5, 0xc7, 0x1c, 0xbb, 0x9a, 0x96, 0x0d, 0x50, 0x1c, 0x32, - 0x73, 0xf9, 0x41, 0x67, 0x02, 0xf8, 0xbe, 0xa8, 0xb0, 0x9f, 0x2a, 0x84, - 0xda, 0x62, 0xb0, 0x3f, 0x77, 0xe9, 0xf3, 0x54, 0xed, 0xbe, 0xca, 0x91, - 0xfc, 0x16, 0x5f, 0x78, 0x83, 0xb1, 0x9d, 0x0e, 0x5c, 0x8a, 0x03, 0x23, - 0x80, 0xd7, 0x8b, 0x8a, 0xb6, 0xd9, 0x2b, 0x07, 0x06, 0xad, 0xaa, 0x28, - 0x25, 0xfc, 0x20, 0xf1, 0x02, 0x03, 0x89, 0x4a, 0xe6, 0xc8, 0xf9, 0xe1, - 0xbb, 0xe7, 0x5e, 0xd5, 0xbe, 0x64, 0x16, 0x7b, 0x23, 0x61, 0xe4, 0x27, - 0xcd, 0x6d, 0x91, 0xea, 0xd0, 0x94, 0xb9, 0x41, 0x95, 0xd9, 0xff, 0xe8, - 0x03, 0xfa, 0xf6, 0x73, 0xb6, 0xe3, 0xb4, 0x81, 0x2e, 0xd8, 0x5b, 0x75, - 0x14, 0xa3, 0x0e, 0x6b, 0xcd, 0x64, 0x90, 0xaa, 0x88, 0x0e, 0x77, 0x69, - 0x4d, 0x4a, 0x29, 0xdb, 0x6b, 0xc1, 0x8f, 0x7c, 0x92, 0xd7, 0x4c, 0x4b, - 0x36, 0x82, 0x2b, 0xd9, 0x66, 0x5b, 0xa5, 0x26, 0x09, 0xfe, 0xcd, 0x9b, - 0x15, 0xd5, 0xa8, 0x6e, 0xda, 0x96, 0xfd, 0xfc, 0xf2, 0xac, 0xf9, 0xb6, - 0x1c, 0xdd, 0x0d, 0xbb, 0x8d, 0xde, 0x4a, 0x2a, 0xbe, 0x5d, 0xa6, 0x58, - 0x04, 0x6e, 0x79, 0x31, 0x8f, 0x57, 0xbb, 0x6d, 0xda, 0xec, 0x28, 0x42, - 0x5a, 0x10, 0x7c, 0xa8, 0x4c, 0x11, 0x9a, 0x86, 0x14, 0x93, 0xae, 0x1b, - 0x7b, 0x9c, 0x8c, 0xde, 0x1b, 0x25, 0x05, 0x38, 0x08, 0x10, 0xbb, 0x0e, - 0x95, 0x16, 0xbc, 0x2c, 0x96, 0x74, 0xc1, 0x61, 0x5c, 0xa6, 0x19, 0x7a, - 0x27, 0xbb, 0x55, 0x61, 0xb9, 0xc0, 0xfa, 0xa6, 0x5d, 0x6f, 0x9e, 0x9b, - 0x6c, 0x7f, 0x6b, 0x75, 0xe9, 0x84, 0xec, 0x55, 0xd4, 0xa6, 0x84, 0x85, - 0x44, 0x8c, 0x45, 0xe7, 0x80, 0xf8, 0x76, 0xca, 0xea, 0x5a, 0x34, 0x3e, - 0xb7, 0x8d, 0x47, 0x43, 0xf2, 0x38, 0xe8, 0x28, 0x20, 0xa4, 0x60, 0x23, - 0x29, 0xf4, 0x3a, 0xec, 0xa3, 0x00, 0x21, 0x65, 0xab, 0xbc, 0xee, 0x3e, - 0xa1, 0x5f, 0xf8, 0x6b, 0x50, 0x20, 0x95, 0x0e, 0x93, 0xd2, 0x09, 0xb5, - 0x2e, 0x80, 0xce, 0x0d, 0x5f, 0x41, 0xa5, 0xdd, 0xbc, 0x6c, 0x6d, 0x0f, - 0xe8, 0xc4, 0x2d, 0x41, 0x47, 0xff, 0x5d, 0xdf, 0xb3, 0xe3, 0x17, 0x91, - 0x65, 0x3f, 0x46, 0x58, 0x29, 0xc4, 0x0f, 0x5e, 0x3f, 0x9a, 0xef, 0x86, - 0xe2, 0x8e, 0x62, 0x35, 0x52, 0xb4, 0x21, 0x22, 0x39, 0x00, 0x5a, 0x70, - 0xac, 0x34, 0xfb, 0x14, 0x14, 0x5d, 0x33, 0xeb, 0x4d, 0x24, 0x02, 0xf2, - 0xca, 0x63, 0x9e, 0x6c, 0x78, 0xde, 0xd2, 0xd9, 0x12, 0x0e, 0x10, 0x43, - 0xa6, 0x82, 0x1d, 0x55, 0x94, 0x9c, 0x6d, 0x74, 0xe9, 0x36, 0xcf, 0x1d, - 0x30, 0x09, 0x60, 0x53, 0xdc, 0xbb, 0xf0, 0xe9, 0xc8, 0x29, 0xfa, 0x7f, - 0x8e, 0x62, 0x20, 0x6b, 0xec, 0x5e, 0xd8, 0x50, 0xe6, 0x9a, 0x10, 0x99, - 0xe8, 0x81, 0x18, 0x6b, 0xc2, 0xc6, 0xd5, 0x63, 0xa5, 0x54, 0x53, 0xc6, - 0x0f, 0x43, 0x7b, 0x91, 0xd5, 0xda, 0x01, 0xa0, 0xf3, 0x99, 0xa0, 0x3d, - 0xb4, 0xc0, 0x0e, 0xb2, 0x2b, 0x7e, 0xf3, 0x74, 0x61, 0x36, 0x15, 0xc6, - 0x1e, 0x6a, 0x5c, 0x1b, 0x99, 0x04, 0x7c, 0x5f, 0x69, 0x78, 0x33, 0x98, - 0xe4, 0x78, 0xdb, 0xb8, 0x5a, 0x73, 0x72, 0xc5, 0x2d, 0xca, 0x82, 0xf1, - 0xd1, 0x94, 0x97, 0xbc, 0xbf, 0xd3, 0x3a, 0x3f, 0x5e, 0xee, 0xbc, 0xaf, - 0x54, 0xc4, 0xe4, 0x9a, 0x4d, 0x67, 0x34, 0xf5, 0x16, 0x96, 0x62, 0xfb, - 0x96, 0x03, 0x88, 0xa6, 0x79, 0x2f, 0x47, 0x32, 0xb9, 0x5e, 0x4f, 0x33, - 0xbe, 0x54, 0xe3, 0xb0, 0x48, 0x8b, 0x7e, 0xee, 0x28, 0xef, 0xb5, 0xab, - 0x9a, 0xbd, 0xb7, 0x89, 0x3c, 0x19, 0xc9, 0x18, 0x9b, 0xda, 0x90, 0x5e, - 0xd5, 0xd5, 0x8a, 0x43, 0x50, 0x84, 0x16, 0xd3, 0xe7, 0x9d, 0xd0, 0xce, - 0xc1, 0xbc, 0xcf, 0x41, 0xf0, 0x7b, 0x28, 0xfc, 0x3c, 0xb5, 0xbf, 0x0b, - 0xfc, 0x3c, 0x44, 0xbc, 0xbe, 0x9c, 0x45, 0x90, 0xd4, 0x62, 0xe7, 0x31, - 0x40, 0xef, 0xb0, 0x07, 0x81, 0x6c, 0x8f, 0xd8, 0x2a, 0x80, 0x01, 0x3a, - 0xa0, 0xfe, 0xef, 0x4c, 0xf3, 0x41, 0xa2, 0xa9, 0xce, 0xd5, 0xd5, 0x9c, - 0x1d, 0xd7, 0xe1, 0x86, 0x42, 0x7d, 0xeb, 0x58, 0xba, 0x54, 0x2e, 0x29, - 0xf9, 0xc0, 0xcc, 0x6a, 0xb1, 0xd7, 0x61, 0xc3, 0x62, 0xc1, 0x60, 0x6e, - 0xe5, 0x53, 0x14, 0xf1, 0x5f, 0xe0, 0xe9, 0x6c, 0xca, 0xec, 0x04, 0x12, - 0xc7, 0xad, 0xc8, 0xb0, 0x96, 0xba, 0x50, 0x24, 0x68, 0x8f, 0xd6, 0x84, - 0x7c, 0xa2, 0x7d, 0x21, 0xd0, 0x21, 0x92, 0x1f, 0xbf, 0x9d, 0xf3, 0xb0, - 0x67, 0x5e, 0x1b, 0xe6, 0x4f, 0x98, 0x09, 0x9c, 0xfe, 0x94, 0xef, 0x83, - 0xc0, 0x7f, 0xb9, 0xec, 0x13, 0x1a, 0x79, 0x3d, 0x14, 0x9b, 0x74, 0xac, - 0xac, 0x20, 0xca, 0x7b, 0xa8, 0xa6, 0xc3, 0xdc, 0x80, 0xd8, 0xa3, 0x44, - 0xcf, 0xa8, 0x58, 0xef, 0xa3, 0xbe, 0x88, 0x7d, 0xe7, 0x90, 0xd1, 0x1b, - 0x4e, 0x64, 0x02, 0xab, 0xd1, 0xbb, 0xe8, 0xbd, 0xbf, 0x7e, 0x97, 0xbf, - 0xc3, 0xb4, 0xee, 0x47, 0x65, 0xf4, 0x3d, 0x5e, 0x3c, 0x14, 0xd8, 0x8b, - 0x94, 0xd9, 0xb4, 0x24, 0x4a, 0x75, 0x87, 0x04, 0x69, 0x89, 0x45, 0x3f, - 0x05, 0xca, 0x17, 0x61, 0x73, 0x50, 0x97, 0xce, 0xbc, 0x3c, 0x36, 0xd2, - 0xf7, 0x40, 0x8f, 0x7d, 0x12, 0xb8, 0x8f, 0xcb, 0xa1, 0x38, 0x4c, 0x5b, - 0x4a, 0x8a, 0xc4, 0xa5, 0x62, 0x2c, 0x0f, 0xac, 0x23, 0xac, 0x41, 0x35, - 0xad, 0x34, 0xf9, 0x28, 0x5a, 0x38, 0x6c, 0x95, 0x40, 0xbd, 0x12, 0xa2, - 0x27, 0x45, 0x3b, 0xbe, 0x32, 0x53, 0x21, 0x76, 0xef, 0xa8, 0x65, 0x79, - 0xa6, 0x91, 0x45, 0xdc, 0xad, 0x81, 0xca, 0x1c, 0x41, 0x5a, 0xac, 0x08, - 0xa0, 0x62, 0x08, 0xee, 0x89, 0x2b, 0xcb, 0xd1, 0xcb, 0x58, 0xf8, 0x4e, - 0x3f, 0x0a, 0xb2, 0xef, 0x59, 0x38, 0x7b, 0xb5, 0x09, 0x23, 0x01, 0xcf, - 0x7f, 0xfb, 0x9e, 0xed, 0xe9, 0x2a, 0x37, 0x22, 0x28, 0x40, 0xd8, 0xc1, - 0xe3, 0xcd, 0x77, 0x5e, 0x43, 0x03, 0x72, 0x49, 0xef, 0x56, 0xef, 0x7a, - 0x53, 0x76, 0xca, 0xea, 0x5f, 0x37, 0x4e, 0xb2, 0x17, 0x25, 0xdb, 0x04, - 0x3a, 0x0c, 0x79, 0x31, 0x2f, 0x21, 0xa6, 0x60, 0x2f, 0x79, 0xd9, 0x17, - 0xa3, 0x53, 0x8b, 0x7f, 0xf6, 0x40, 0x1e, 0xf7, 0x22, 0xee, 0x4e, 0x78, - 0x38, 0x30, 0xfe, 0x38, 0x48, 0x1a, 0x59, 0xcf, 0x36, 0xb8, 0x52, 0x61, - 0xa7, 0xb5, 0x9e, 0x43, 0xb3, 0x5c, 0x72, 0xe1, 0x09, 0x2a, 0x56, 0x41, - 0xc3, 0xab, 0xad, 0x7c, 0x80, 0x0d, 0xcf, 0xd1, 0x05, 0xe1, 0x5a, 0x91, - 0xc3, 0x06, 0xf0, 0x88, 0x41, 0x80, 0x0c, 0x43, 0xcc, 0x6d, 0x26, 0x3d, - 0x9e, 0xf3, 0x92, 0xda, 0xb7, 0x54, 0x55, 0x34, 0x57, 0xf8, 0xd4, 0xac, - 0xbf, 0xe6, 0x3f, 0x6e, 0xcc, 0x4f, 0x39, 0x09, 0x71, 0xdb, 0x3a, 0x2e, - 0x09, 0xe9, 0xf2, 0x23, 0x92, 0xf2, 0x2a, 0xc7, 0x37, 0xf2, 0x7c, 0x27, - 0x66, 0x06, 0x85, 0x89, 0x20, 0x72, 0x86, 0xde, 0x80, 0xe1, 0x6f, 0xcc, - 0xd7, 0x9e, 0x02, 0x24, 0xd0, 0xea, 0xac, 0x0f, 0x4e, 0x25, 0xbe, 0x97, - 0x84, 0x39, 0x57, 0x25, 0x3a, 0xb2, 0x31, 0x05, 0x6b, 0xd0, 0x3d, 0x75, - 0x4b, 0xf7, 0x57, 0xf5, 0x58, 0x89, 0xa8, 0x82, 0x52, 0xd1, 0x18, 0x4e, - 0xd4, 0x7c, 0xbc, 0x30, 0xac, 0x74, 0x9d, 0x1b, 0xb7, 0x02, 0x7f, 0x55, - 0xdb, 0x6d, 0x53, 0xeb, 0x99, 0x46, 0x99, 0xb6, 0x4f, 0x23, 0x9a, 0xa8, - 0x61, 0x23, 0xf5, 0x54, 0xa3, 0x97, 0xca, 0x4b, 0x7f, 0x9e, 0x31, 0x0c, - 0xd3, 0xaf, 0x19, 0xa7, 0xb3, 0xd1, 0x8d, 0x22, 0xdb, 0x0d, 0x4e, 0x4a, - 0xdf, 0xc3, 0x32, 0x35, 0x64, 0x34, 0xc1, 0xdc, 0x3c, 0x38, 0x80, 0xd9, - 0xe4, 0x87, 0xcc, 0x70, 0xe3, 0x3f, 0x36, 0x6a, 0xeb, 0xa3, 0xbd, 0xfa, - 0x69, 0xf8, 0xa8, 0x4e, 0x51, 0xbe, 0x13, 0xaa, 0xe9, 0x03, 0xbd, 0x52, - 0x6f, 0x97, 0x19, 0xf7, 0xa6, 0x6d, 0x9e, 0xf8, 0x48, 0x7d, 0x56, 0xf8, - 0xd2, 0xdc, 0xe5, 0x39, 0x7e, 0xbc, 0xd6, 0x51, 0xc0, 0x00, 0xea, 0x41, - 0xa0, 0x1f, 0x55, 0x97, 0xb1, 0x09, 0xcc, 0xa4, 0x50, 0x04, 0xe7, 0x0d, - 0x72, 0x1f, 0xcf, 0x75, 0x6a, 0xdd, 0x94, 0xe2, 0x9d, 0x0c, 0x90, 0x75, - 0x04, 0x05, 0xb4, 0xc7, 0x19, 0xac, 0x7e, 0x8c, 0x24, 0xe7, 0x49, 0xbe, - 0xf4, 0x5d, 0x3b, 0x35, 0x27, 0xdb, 0x88, 0xda, 0x8f, 0xd1, 0xc7, 0x9f, - 0x61, 0x52, 0x05, 0xa6, 0x01, 0x89, 0x65, 0x38, 0xf5, 0x62, 0x22, 0x51, - 0xa5, 0xbf, 0xe3, 0x22, 0x16, 0xfd, 0x2c, 0xa8, 0x83, 0x6c, 0x24, 0x81, - 0x01, 0x45, 0x43, 0xa4, 0x58, 0x49, 0x34, 0xc8, 0x65, 0x8c, 0x2d, 0xa9, - 0xf8, 0xf0, 0x35, 0x89, 0x6f, 0x7a, 0xd8, 0x5e, 0x95, 0xee, 0x85, 0x3a, - 0x3b, 0x44, 0xad, 0xc6, 0x90, 0xac, 0x27, 0x4a, 0x46, 0x6a, 0x16, 0x6b, - 0xa9, 0x42, 0xe0, 0xca, 0x69, 0x92, 0xe0, 0x2b, 0x3a, 0x46, 0x8a, 0xa5, - 0xae, 0xe5, 0x1a, 0xd8, 0x2f, 0xde, 0x42, 0x9a, 0x28, 0xbe, 0xcd, 0x0b, - 0x37, 0xab, 0x4e, 0x3f, 0x63, 0x88, 0xd8, 0x1f, 0xbd, 0x0e, 0xca, 0x9a, - 0x71, 0x3c, 0x5a, 0x4a, 0x2d, 0x8a, 0x04, 0x55, 0xb1, 0x2b, 0x5c, 0xb1, - 0x9a, 0x70, 0x50, 0x13, 0xa1, 0x37, 0x2b, 0xeb, 0x9b, 0xed, 0xb7, 0x8c, - 0xfa, 0x6b, 0x03, 0x0a, 0xaf, 0xf7, 0x8c, 0xec, 0xa3, 0x1c, 0xea, 0xbf, - 0x74, 0xdc, 0xe5, 0xd1, 0x5a, 0x38, 0x3f, 0xc1, 0x69, 0x7a, 0x0d, 0xe8, - 0x45, 0x87, 0x56, 0x58, 0xd8, 0x8f, 0xfd, 0x8d, 0x8a, 0x0f, 0x5c, 0x19, - 0x60, 0x6d, 0xd8, 0x32, 0x18, 0x3b, 0xc3, 0xdf, 0x31, 0x95, 0xf5, 0xed, - 0x7a, 0xbb, 0xdf, 0xd3, 0x54, 0x1d, 0x22, 0xfa, 0xd4, 0x6b, 0xe1, 0xdc, - 0xec, 0x04, 0x52, 0x5e, 0x70, 0x52, 0xb0, 0x7b, 0x23, 0x16, 0x67, 0x7b, - 0xf6, 0x97, 0xae, 0x02, 0x6f, 0xc4, 0xa0, 0xd6, 0x34, 0xd3, 0xa2, 0xa5, - 0xbd, 0x63, 0x88, 0xe1, 0x27, 0xde, 0x27, 0x38, 0x71, 0x89, 0xef, 0x0f, - 0x4f, 0x8d, 0xb6, 0x1e, 0xee, 0x8e, 0x06, 0xdc, 0x00, 0x42, 0x8a, 0xf9, - 0x41, 0xa2, 0x6b, 0x6d, 0xc6, 0x17, 0x4d, 0x65, 0x06, 0x76, 0x11, 0xec, - 0x81, 0xd1, 0x7c, 0x62, 0x66, 0x88, 0x05, 0x91, 0x7d, 0x1c, 0x32, 0x5a, - 0x47, 0xb5, 0xa1, 0x11, 0xda, 0xca, 0x45, 0xea, 0x9e, 0xb8, 0x01, 0xf4, - 0x79, 0x55, 0x65, 0xaf, 0xd6, 0x9e, 0x35, 0xb3, 0xac, 0x17, 0x27, 0x1d, - 0x8d, 0x15, 0xd9, 0x63, 0xfd, 0xbe, 0x70, 0x19, 0x1e, 0xb2, 0x8c, 0x36, - 0x0b, 0x3e, 0x02, 0x04, 0xce, 0xa6, 0x54, 0xd5, 0xb7, 0x28, 0x15, 0x1c, - 0xdf, 0xb2, 0x04, 0x1f, 0x73, 0xf2, 0x31, 0xdd, 0x3c, 0x1b, 0x99, 0xe1, - 0x11, 0xc9, 0x09, 0x81, 0xfb, 0xd5, 0xaf, 0x9f, 0x98, 0xde, 0x01, 0xeb, - 0xaf, 0xa2, 0xb0, 0x8c, 0x1d, 0x93, 0x36, 0x6f, 0x7a, 0x25, 0xf6, 0x4a, - 0xa8, 0x77, 0xe4, 0x39, 0x58, 0xc0, 0x6a, 0xb1, 0x14, 0xcf, 0x77, 0x17, - 0xe7, 0xb3, 0x78, 0x8d, 0x8b, 0xcd, 0xf6, 0xf9, 0xda, 0x04, 0xd4, 0x35, - 0xb6, 0xa9, 0x3d, 0x40, 0xad, 0x1a, 0x2c, 0xa3, 0x57, 0x56, 0x5a, 0x1f, - 0xe6, 0xca, 0x55, 0x0e, 0x7c, 0x85, 0xe0, 0xdd, 0xb9, 0xa6, 0x95, 0xd7, - 0x87, 0x8f, 0xb8, 0x57, 0x00, 0xef, 0x72, 0xc4, 0xee, 0x5e, 0x4a, 0xb5, - 0x04, 0x7b, 0x75, 0x73, 0xf1, 0x04, 0xe3, 0xb7, 0x6f, 0xaa, 0x4b, 0x30, - 0xc3, 0x6c, 0xf5, 0xff, 0xd1, 0xc3, 0x40, 0xb5, 0x06, 0xc3, 0x8e, 0x25, - 0x64, 0xcd, 0x5f, 0x72, 0x3d, 0x16, 0x7e, 0x42, 0xaf, 0xec, 0xf1, 0x0f, - 0x16, 0x57, 0x46, 0x9b, 0x3d, 0x0d, 0x4d, 0xc5, 0x2e, 0xa8, 0x2f, 0x24, - 0x7a, 0x84, 0x30, 0x80, 0x3c, 0x10, 0x1e, 0x44, 0x20, 0x7a, 0x61, 0x7e, - 0xb9, 0xef, 0x7b, 0x93, 0x39, 0x2f, 0xe7, 0xfc, 0x51, 0xea, 0x44, 0x2f, - 0xfb, 0x25, 0x64, 0x0e, 0xb1, 0xc3, 0xb7, 0x61, 0x58, 0xd3, 0xd7, 0x7d, - 0xed, 0x02, 0xbd, 0xe2, 0xe4, 0xca, 0x88, 0x72, 0x20, 0x4c, 0xfd, 0x6d, - 0xfc, 0xca, 0x79, 0xf1, 0x06, 0x1d, 0x54, 0x96, 0xc9, 0x6b, 0xd3, 0xc7, - 0xde, 0xce, 0x9f, 0x5e, 0xf6, 0x29, 0xd1, 0xe5, 0xff, 0x18, 0x84, 0x5d, - 0xe7, 0x50, 0x0c, 0x09, 0x62, 0xac, 0x01, 0x71, 0x9a, 0x1c, 0x3a, 0x69, - 0x3b, 0xce, 0x2d, 0x18, 0xee, 0x42, 0x28, 0x50, 0xdb, 0x04, 0x91, 0x04, - 0xed, 0xa2, 0x60, 0x52, 0x8f, 0x96, 0x62, 0x68, 0x5f, 0x2e, 0x3d, 0xe4, - 0xd4, 0x43, 0x41, 0xf3, 0x44, 0x9c, 0x08, 0x0c, 0x2a, 0xdc, 0x74, 0xac, - 0x2a, 0xd0, 0x4c, 0xf4, 0x5f, 0x67, 0x79, 0x45, 0x79, 0x2c, 0x41, 0x04, - 0x69, 0xa6, 0x3a, 0xa6, 0x60, 0x56, 0x23, 0x7c, 0xec, 0x97, 0xd6, 0x06, - 0x63, 0x73, 0xc2, 0x76, 0x69, 0x4d, 0x3f, 0x68, 0xd4, 0xa8, 0x1e, 0xca, - 0x04, 0x01, 0xd2, 0x75, 0x49, 0x98, 0x51, 0xf3, 0xdf, 0xe0, 0x30, 0xf9, - 0x19, 0xbe, 0x01, 0xd0, 0x4e, 0x14, 0x26, 0xb5, 0xa7, 0x51, 0x36, 0xa8, - 0x20, 0xf1, 0xf9, 0x3c, 0xd8, 0xab, 0x47, 0xa8, 0x95, 0xb1, 0x20, 0x09, - 0x5e, 0x79, 0x0b, 0x61, 0xca, 0xe7, 0xc1, 0x11, 0xe8, 0xf3, 0x78, 0x1c, - 0xac, 0x10, 0x52, 0x5f, 0xe2, 0xd8, 0x5b, 0xa4, 0x44, 0xaf, 0x64, 0xc9, - 0xe2, 0xed, 0xf0, 0x3c, 0x96, 0xec, 0x8d, 0xa2, 0x32, 0xa9, 0x5f, 0xb6, - 0xb7, 0xff, 0x27, 0x51, 0xec, 0x9e, 0x6f, 0x33, 0xa2, 0x8c, 0x38, 0x23, - 0xbb, 0x8a, 0xbe, 0xa6, 0xa0, 0x31, 0x22, 0xbc, 0xd1, 0x01, 0x90, 0x23, - 0x3c, 0xe9, 0x01, 0xdb, 0x32, 0x66, 0x7e, 0x6d, 0x98, 0x8e, 0x22, 0xfb, - 0x83, 0xa1, 0xd8, 0x61, 0xcb, 0x79, 0x5f, 0x0e, 0xd7, 0x01, 0xb1, 0x75, - 0x0b, 0x22, 0x0a, 0x51, 0x08, 0x68, 0x6d, 0x20, 0xa1, 0x5e, 0xbe, 0xe2, - 0xab, 0x18, 0x6b, 0x50, 0x25, 0x46, 0x98, 0x49, 0xfa, 0xbc, 0x51, 0x50, - 0xb6, 0xd3, 0x66, 0xcd, 0x12, 0xc8, 0xde, 0x42, 0x73, 0x2e, 0x8e, 0x07, - 0xb7, 0x20, 0xb9, 0x6f, 0x1d, 0xe2, 0x19, 0xad, 0xe3, 0x57, 0x0e, 0xb9, - 0xef, 0xc3, 0x26, 0x29, 0x2c, 0xf6, 0x11, 0x69, 0xb7, 0x42, 0x84, 0x02, - 0x1b, 0x13, 0x80, 0x71, 0x95, 0x08, 0x9d, 0xf6, 0xac, 0x47, 0x49, 0x7c, - 0x1a, 0x44, 0x07, 0x23, 0xfe, 0xb1, 0x05, 0x5b, 0xde, 0xb0, 0xa2, 0xb5, - 0xe1, 0x54, 0x03, 0x1a, 0xf2, 0x48, 0x92, 0xa5, 0xd7, 0x41, 0x73, 0x7b, - 0x01, 0xc1, 0x69, 0xb1, 0x67, 0x22, 0x9b, 0x99, 0x51, 0x63, 0x1c, 0x47, - 0x3f, 0x22, 0x25, 0xf4, 0xbc, 0xfc, 0x85, 0xb7, 0x0a, 0x2f, 0x37, 0x53, - 0x91, 0xef, 0xfe, 0xf0, 0xc4, 0x76, 0x19, 0xad, 0xb4, 0xc0, 0x72, 0xd3, - 0x58, 0x1b, 0x65, 0x49, 0x08, 0xea, 0xf7, 0xb6, 0x78, 0x2f, 0x0d, 0x00, - 0x75, 0x36, 0x15, 0x9d, 0xf9, 0x62, 0xf2, 0x8f, 0x77, 0x62, 0x77, 0xce, - 0xa5, 0x88, 0xcf, 0x72, 0xb6, 0x99, 0x18, 0x32, 0x85, 0x46, 0xb6, 0x70, - 0x50, 0x85, 0x5a, 0x14, 0x44, 0x42, 0x75, 0x64, 0xf7, 0x02, 0x33, 0x23, - 0xbf, 0x53, 0x90, 0x00, 0x7e, 0xe5, 0xda, 0xfe, 0x14, 0x67, 0x0b, 0x26, - 0x54, 0x08, 0x2d, 0x24, 0xe7, 0xb8, 0xd9, 0x32, 0x54, 0x77, 0x45, 0x8e, - 0x3b, 0x0c, 0x5b, 0x1a, 0x47, 0xa2, 0x79, 0x0d, 0x62, 0x73, 0x5b, 0xe7, - 0x85, 0x07, 0x6d, 0xfc, 0x06, 0x2d, 0x03, 0xf3, 0x26, 0x4d, 0x66, 0x13, - 0x1d, 0x58, 0x60, 0xc1, 0x82, 0x6e, 0xbd, 0x0c, 0x1f, 0xf5, 0x46, 0xa8, - 0xfe, 0x17, 0x56, 0x83, 0xcc, 0x19, 0xd7, 0xd4, 0x2d, 0x5c, 0x39, 0x41, - 0x50, 0x6c, 0x4a, 0x39, 0xee, 0xab, 0xd2, 0xea, 0x01, 0x22, 0x49, 0x3c, - 0x58, 0x0f, 0x2d, 0x5b, 0x94, 0x60, 0x70, 0x9e, 0x66, 0xb7, 0x24, 0x5b, - 0xc8, 0x19, 0xb9, 0xb4, 0x28, 0xce, 0x3a, 0x5b, 0x0e, 0xe8, 0xc0, 0xc5, - 0x4e, 0x16, 0x32, 0x75, 0xd4, 0x0f, 0x74, 0xac, 0x06, 0x64, 0x24, 0x30, - 0xc9, 0xce, 0x7e, 0xa5, 0x8b, 0x3c, 0xee, 0x2f, 0x16, 0x81, 0x6f, 0xc5, - 0x6c, 0xe4, 0xf4, 0x85, 0x48, 0xd4, 0x71, 0x14, 0xb3, 0xdd, 0xab, 0x98, - 0xc6, 0x79, 0x86, 0xb8, 0x5e, 0x16, 0xb2, 0x64, 0x2b, 0xa7, 0xd3, 0x19, - 0x05, 0xb8, 0x9f, 0x17, 0x40, 0x23, 0x06, 0x62, 0x45, 0xbb, 0x12, 0xfb, - 0x49, 0xd5, 0xd4, 0xc7, 0x46, 0xb2, 0x8a, 0x08, 0x2d, 0x24, 0x26, 0xeb, - 0x43, 0x4d, 0x77, 0x8d, 0xf4, 0xaa, 0xef, 0xfe, 0x17, 0x1a, 0x23, 0x9a, - 0x26, 0x02, 0x3f, 0xb8, 0xb0, 0x8e, 0x6b, 0x0d, 0xf5, 0x4d, 0x91, 0xbc, - 0x4e, 0x00, 0xdd, 0x75, 0xa3, 0x9b, 0xbb, 0x48, 0xd3, 0x26, 0x03, 0xe3, - 0x09, 0x07, 0xa4, 0x85, 0x3b, 0x03, 0x4f, 0x59, 0x40, 0x5b, 0x0c, 0x79, - 0x6d, 0xb1, 0x13, 0x3a, 0x5a, 0x75, 0xf3, 0xe4, 0xf6, 0xc2, 0x3a, 0xd0, - 0x3b, 0xd2, 0x1f, 0x09, 0x2d, 0xcf, 0x93, 0x5b, 0x01, 0x13, 0x61, 0xc5, - 0x03, 0x49, 0x0e, 0x8a, 0x4b, 0x51, 0x0a, 0x7b, 0x78, 0x12, 0xc2, 0x49, - 0x8b, 0x23, 0x3e, 0x8f, 0xfa, 0x57, 0xa2, 0x6f, 0x01, 0x32, 0x44, 0xcf, - 0xb5, 0x5c, 0x02, 0xc9, 0x84, 0x0d, 0xff, 0x8e, 0x8d, 0xb6, 0x18, 0xfb, - 0x73, 0x30, 0xc3, 0x94, 0x58, 0x18, 0xed, 0xc9, 0xa8, 0xfa, 0xa4, 0xc9, - 0x37, 0xbe, 0x2d, 0xbf, 0x1a, 0xd9, 0xb8, 0xfa, 0xf0, 0xb8, 0x3f, 0x01, - 0x6c, 0x64, 0xa9, 0xb0, 0x18, 0xce, 0x51, 0x25, 0xd7, 0x02, 0xed, 0x08, - 0x35, 0x7e, 0x87, 0x65, 0x6b, 0x2c, 0xa0, 0x83, 0xb2, 0x22, 0x6a, 0x26, - 0x8d, 0x95, 0x5a, 0x94, 0x49, 0xf9, 0xa7, 0x4d, 0xdd, 0x8d, 0xb4, 0x59, - 0x47, 0x83, 0x07, 0x35, 0x7d, 0xde, 0x8c, 0x3f, 0xf7, 0x24, 0xe1, 0x59, - 0x28, 0x14, 0x0e, 0xc2, 0x49, 0x12, 0xef, 0x8a, 0x34, 0xb0, 0xe2, 0xd2, - 0x06, 0xbc, 0x52, 0x70, 0xeb, 0x2d, 0x9d, 0x82, 0x32, 0x21, 0xda, 0x0d, - 0x7d, 0xe2, 0x8b, 0xd6, 0x98, 0x1a, 0x6c, 0xd1, 0x05, 0x7c, 0xa3, 0xd5, - 0x62, 0x58, 0x1e, 0x32, 0xf6, 0xaf, 0x8a, 0x36, 0x55, 0x27, 0x4a, 0x49, - 0xd1, 0x9b, 0xd7, 0x86, 0x1b, 0x7b, 0xc9, 0xdd, 0x6d, 0xfa, 0x8d, 0x49, - 0xc5, 0x03, 0xce, 0x2e, 0x2c, 0xb3, 0x6a, 0x97, 0x90, 0xe6, 0x2d, 0x0d, - 0x96, 0xbb, 0x10, 0x82, 0xae, 0xbc, 0x9e, 0xe0, 0x18, 0x29, 0xc4, 0xf1, - 0xd9, 0xb4, 0x50, 0xd9, 0x71, 0xda, 0xfd, 0xbd, 0xc2, 0x54, 0x6f, 0x4f, - 0x06, 0x7d, 0x86, 0xd6, 0x9a, 0xaf, 0x56, 0x6f, 0xb4, 0xb2, 0xa1, 0xe4, - 0x7b, 0xda, 0x44, 0x99, 0xce, 0x9e, 0xfa, 0x3b, 0xd9, 0x94, 0x07, 0xd2, - 0xe2, 0xfd, 0xed, 0x66, 0x08, 0x22, 0x7a, 0x13, 0x88, 0x82, 0x37, 0x33, - 0x8b, 0x57, 0x91, 0x05, 0xc7, 0xfe, 0x50, 0x45, 0x37, 0xf9, 0x20, 0x49, - 0x02, 0x86, 0x8d, 0x7c, 0x21, 0x69, 0xec, 0x5f, 0xe9, 0x6a, 0xa8, 0xe0, - 0x98, 0x1c, 0x35, 0x75, 0x94, 0x2e, 0x29, 0x45, 0x47, 0xd2, 0x0b, 0x1b, - 0x41, 0x18, 0x92, 0x7d, 0x86, 0x09, 0x0a, 0xc3, 0x20, 0x78, 0x1b, 0xae, - 0xa6, 0x70, 0x05, 0x44, 0xad, 0xfd, 0xc7, 0xcf, 0x27, 0x3d, 0x48, 0xce, - 0x04, 0xa2, 0xfa, 0x2e, 0x0d, 0x54, 0x84, 0xe5, 0xee, 0xa0, 0x51, 0x60, - 0x1f, 0x43, 0x38, 0x6e, 0x55, 0x1b, 0x7b, 0x67, 0xec, 0x0c, 0xf6, 0xdf, - 0x75, 0x0b, 0xc8, 0xf8, 0xb1, 0xf0, 0x05, 0x60, 0x8a, 0x8f, 0xcc, 0x36, - 0x9d, 0xce, 0x45, 0x3a, 0xf9, 0x19, 0xcf, 0xfa, 0x71, 0xba, 0xb4, 0x9d, - 0xd1, 0x0a, 0x51, 0x5c, 0x35, 0x18, 0x30, 0xc6, 0xc4, 0x0c, 0x48, 0xa4, - 0x58, 0x42, 0x50, 0x4d, 0x9b, 0x7f, 0xd5, 0xda, 0x6d, 0xa8, 0x33, 0x55, - 0xb2, 0xdd, 0x04, 0x83, 0x64, 0x9b, 0x29, 0xc1, 0xd9, 0xfe, 0xdd, 0xea, - 0xc1, 0xa8, 0x40, 0x95, 0x99, 0x66, 0xa9, 0xc0, 0x4d, 0xb1, 0x26, 0xaa, - 0x9a, 0xc9, 0x1c, 0x00, 0xc2, 0x9b, 0x2b, 0x0b, 0x6c, 0xbc, 0x27, 0x80, - 0x36, 0x4e, 0x63, 0xaf, 0x45, 0x2b, 0x9d, 0xf6, 0x4d, 0x44, 0x66, 0xd4, - 0x76, 0x58, 0x9c, 0xcd, 0x29, 0x91, 0x9f, 0xf5, 0x55, 0xd4, 0x2f, 0x61, - 0xb8, 0xbf, 0xc9, 0x04, 0xc0, 0xbc, 0xb5, 0x81, 0x7f, 0x9e, 0x97, 0x63, - 0xca, 0xce, 0xd9, 0xe1, 0xe1, 0xd2, 0x77, 0x1c, 0xac, 0x1c, 0x3f, 0xb8, - 0x69, 0x9c, 0x8d, 0x3a, 0xb0, 0x50, 0x63, 0x25, 0xaf, 0x6c, 0x64, 0xbb, - 0x55, 0x9d, 0xd9, 0x2c, 0xf1, 0x39, 0xd7, 0xe4, 0x9e, 0x81, 0x9f, 0x28, - 0x1c, 0xa5, 0x02, 0x0f, 0x5e, 0x1e, 0x32, 0x0a, 0x23, 0x30, 0x8a, 0x67, - 0xf6, 0xe3, 0xce, 0xee, 0x01, 0xfa, 0x08, 0x79, 0x09, 0xe6, 0x71, 0x41, - 0x04, 0x1e, 0x4d, 0x23, 0xda, 0x62, 0x1a, 0xbe, 0x43, 0xda, 0x51, 0x35, - 0xaf, 0xe4, 0xd0, 0xc1, 0xf5, 0x78, 0x28, 0x6b, 0x3e, 0x27, 0xfb, 0xa5, - 0xf8, 0x84, 0x33, 0x83, 0x31, 0xd5, 0x5d, 0x5b, 0x2a, 0x90, 0xa8, 0x09, - 0x64, 0x84, 0x72, 0x83, 0xf6, 0x0d, 0x10, 0xb4, 0xdf, 0x84, 0x07, 0x70, - 0x3a, 0xe3, 0xef, 0x78, 0xe5, 0x55, 0x41, 0x6d, 0xa8, 0x09, 0xb5, 0x25, - 0x9b, 0xc1, 0x03, 0xb5, 0x79, 0xcd, 0xf6, 0x17, 0x34, 0xcf, 0x15, 0x5a, - 0x95, 0x1f, 0x73, 0xc9, 0xe5, 0x8c, 0x45, 0x43, 0x22, 0x90, 0x52, 0x44, - 0xe9, 0x3b, 0xbc, 0xa3, 0xca, 0x2f, 0x6c, 0xdb, 0x75, 0xdf, 0xb8, 0xe8, - 0xf9, 0x25, 0x93, 0x6c, 0x39, 0x9a, 0x20, 0xf4, 0xe5, 0x9a, 0xe0, 0x87, - 0x16, 0xbe, 0x2f, 0x8d, 0x97, 0x18, 0x9c, 0x59, 0x0b, 0x71, 0x74, 0xa5, - 0x0e, 0x5d, 0xd2, 0x85, 0xcc, 0xb5, 0x15, 0x19, 0xbf, 0x6f, 0x68, 0xb9, - 0x2d, 0x47, 0xbc, 0x94, 0x6a, 0x7e, 0x41, 0x05, 0x86, 0x5b, 0xa5, 0x61, - 0x6f, 0x15, 0x65, 0x15, 0x71, 0x00, 0xcf, 0x95, 0xab, 0x4d, 0xb9, 0xbe, - 0xaa, 0xa0, 0xa5, 0x8a, 0x02, 0x7b, 0x0a, 0xa6, 0x70, 0xe5, 0x60, 0x71, - 0xdb, 0x6a, 0xfc, 0x26, 0xca, 0x49, 0xf4, 0xa6, 0x50, 0x6c, 0x01, 0xcf, - 0xd7, 0xfd, 0x1a, 0x73, 0xf2, 0x9b, 0x7d, 0xf5, 0xd4, 0xf0, 0x9d, 0x4a, - 0x4c, 0xaf, 0xbc, 0x58, 0xcb, 0x36, 0x7c, 0x7c, 0x59, 0xa8, 0x4d, 0x44, - 0x13, 0x2d, 0x4d, 0x04, 0xe1, 0xaa, 0xaf, 0x1a, 0x20, 0xdc, 0x2c, 0x77, - 0xd7, 0x07, 0x98, 0xf1, 0x30, 0x4b, 0x4f, 0x6a, 0x10, 0x66, 0x8e, 0xc8, - 0xd0, 0x62, 0x19, 0x76, 0x2f, 0xdd, 0x66, 0x8a, 0xa4, 0xec, 0xe7, 0xfe, - 0x89, 0x2a, 0x80, 0xe7, 0x2a, 0x11, 0x13, 0x5d, 0x0a, 0x7f, 0xc3, 0x66, - 0x10, 0xa2, 0x8b, 0x4d, 0xfe, 0xba, 0x32, 0xf0, 0x6a, 0x97, 0x02, 0xaf, - 0x12, 0xdc, 0x4f, 0x46, 0x5a, 0x98, 0x9f, 0x70, 0x0e, 0xc7, 0x84, 0x0a, - 0x05, 0xf8, 0xec, 0x07, 0x31, 0x25, 0xd7, 0x74, 0x46, 0xf0, 0xd8, 0x65, - 0xe2, 0x60, 0x03, 0x15, 0x39, 0x42, 0x47, 0x4c, 0x50, 0x32, 0xef, 0xf8, - 0xf0, 0x6b, 0xdd, 0x28, 0xc2, 0xe4, 0x4a, 0xe3, 0x14, 0x29, 0xeb, 0x93, - 0x08, 0x1a, 0x06, 0x45, 0x0d, 0xd6, 0xb3, 0x5d, 0xbe, 0x2d, 0x9b, 0xdb, - 0x8d, 0xec, 0x82, 0xd1, 0x12, 0x94, 0xc7, 0x73, 0x12, 0x08, 0xe0, 0x4c, - 0x3c, 0x12, 0x77, 0xf6, 0x5a, 0x93, 0xea, 0xf2, 0x85, 0x09, 0xd2, 0xa6, - 0x12, 0x2d, 0x32, 0xd9, 0x0f, 0x9c, 0x44, 0xde, 0x7b, 0x0e, 0x11, 0xfa, - 0x20, 0x94, 0x7a, 0xad, 0xfa, 0xaa, 0x18, 0x3d, 0x2c, 0xde, 0x64, 0xa4, - 0x05, 0xb1, 0x34, 0x1b, 0x80, 0x43, 0x44, 0x7a, 0xc5, 0x9e, 0xe5, 0xc7, - 0x89, 0xc3, 0x62, 0x95, 0x74, 0x2f, 0xc0, 0xe2, 0x19, 0xfb, 0xf1, 0xc8, - 0x38, 0xcd, 0x75, 0xc4, 0x35, 0xc7, 0x75, 0xa5, 0x39, 0x14, 0xcc, 0x65, - 0xae, 0xae, 0x75, 0x89, 0xc4, 0x56, 0xe5, 0x75, 0x61, 0x0d, 0x97, 0xd3, - 0x8e, 0xfd, 0x68, 0x8d, 0x9a, 0xb0, 0xf0, 0x9f, 0xa1, 0x57, 0x04, 0x89, - 0xd5, 0x6c, 0x3b, 0xd2, 0x17, 0x6c, 0x60, 0x0f, 0xc9, 0x0e, 0xc6, 0x53, - 0x09, 0x7f, 0x47, 0xa8, 0x7c, 0x6c, 0x88, 0xe6, 0xbd, 0xc4, 0xe6, 0x68, - 0x5d, 0xea, 0xc5, 0x32, 0x0c, 0xe9, 0x10, 0xdd, 0x1a, 0xdb, 0x26, 0x23, - 0xc5, 0x74, 0x0a, 0x60, 0x42, 0x07, 0x39, 0x7d, 0xb5, 0x93, 0x64, 0xff, - 0x91, 0x29, 0x72, 0x8c, 0xc3, 0xbd, 0x51, 0xa7, 0xaa, 0xe6, 0x0a, 0xb2, - 0xa4, 0x89, 0x8c, 0x9e, 0x4e, 0x64, 0xab, 0x61, 0xdf, 0x09, 0xca, 0xb6, - 0x50, 0xe8, 0x27, 0x86, 0x27, 0x34, 0xc0, 0x33, 0x21, 0x0b, 0x36, 0x36, - 0xdf, 0xab, 0x76, 0xc8, 0x91, 0x69, 0x49, 0x1f, 0x7f, 0x7b, 0xad, 0x8e, - 0xb6, 0xd1, 0xa6, 0x6f, 0xaf, 0x73, 0x5f, 0x17, 0xa0, 0x03, 0x6a, 0x9d, - 0x43, 0x33, 0x23, 0x5d, 0xfe, 0x4f, 0x66, 0xb2, 0x6e, 0x6d, 0xc3, 0xaa, - 0xc5, 0xf1, 0xf4, 0x87, 0x8f, 0x69, 0xec, 0x5f, 0x70, 0xae, 0x4d, 0x97, - 0x12, 0xfd, 0x84, 0xee, 0xac, 0xc9, 0x04, 0xe6, 0x35, 0xb3, 0x8b, 0x05, - 0xce, 0x12, 0x83, 0x06, 0xab, 0xfe, 0xaa, 0xb0, 0x07, 0x20, 0x63, 0x67, - 0xad, 0x49, 0xe5, 0xf7, 0xb1, 0x9d, 0x3d, 0xdf, 0x73, 0x45, 0x09, 0x37, - 0xd3, 0x5c, 0xfd, 0xb5, 0xa0, 0x88, 0x5f, 0x8a, 0xb5, 0x40, 0x4b, 0x8a, - 0x07, 0x4b, 0x5f, 0x99, 0x49, 0x44, 0xb2, 0xa4, 0x07, 0x06, 0xb6, 0x72, - 0x46, 0x50, 0x1e, 0x20, 0x30, 0xd1, 0x0b, 0xcb, 0xe5, 0xf1, 0x52, 0x85, - 0xf9, 0x9f, 0x2d, 0xa2, 0xca, 0xad, 0x9f, 0x60, 0x5c, 0x0a, 0xa2, 0xce, - 0x16, 0xe3, 0x63, 0x51, 0xca, 0x7c, 0x89, 0xfa, 0x77, 0xa9, 0xed, 0xc9, - 0x7f, 0x45, 0x7a, 0x9d, 0xfd, 0xa7, 0x3f, 0x20, 0xef, 0x81, 0xd8, 0x9e, - 0xb9, 0x49, 0xa7, 0xc9, 0xa5, 0xa1, 0x69, 0xb2, 0xe9, 0xbe, 0x05, 0xc3, - 0x88, 0x4d, 0x2a, 0x9a, 0x93, 0xb1, 0x2a, 0x76, 0x52, 0x2d, 0xb1, 0xb9, - 0xae, 0xfe, 0x92, 0x03, 0x23, 0xed, 0x6e, 0xc3, 0x85, 0xfc, 0x1f, 0x34, - 0x18, 0xad, 0x44, 0x7f, 0xcc, 0x05, 0xeb, 0xdd, 0xdf, 0xb9, 0x03, 0xda, - 0x00, 0x53, 0xd0, 0x9b, 0x9e, 0xf8, 0xd1, 0x35, 0xb4, 0xb8, 0x1a, 0xcb, - 0x5a, 0xe9, 0x1b, 0x10, 0x30, 0x38, 0x51, 0xc6, 0xd5, 0xe1, 0xcb, 0x9c, - 0xc3, 0xc9, 0x84, 0xfc, 0xf6, 0x40, 0x53, 0xcf, 0x37, 0x89, 0x11, 0xe2, - 0xf5, 0x84, 0xe9, 0xf0, 0xe2, 0x85, 0x86, 0xe3, 0xa9, 0xbf, 0xea, 0x59, - 0x38, 0xa5, 0x78, 0x88, 0xc5, 0x3b, 0x60, 0x77, 0xb1, 0xa4, 0x51, 0x7a, - 0x47, 0xdf, 0xca, 0x45, 0xce, 0xe2, 0xfb, 0x9a, 0x04, 0x13, 0x69, 0xfd, - 0x37, 0x73, 0x68, 0x97, 0x1d, 0xc6, 0x0e, 0x41, 0x70, 0x25, 0x63, 0xf3, - 0x5f, 0xb7, 0xe9, 0xcd, 0x93, 0xc2, 0x24, 0x54, 0x92, 0x28, 0xf4, 0x08, - 0x6a, 0xf6, 0xc2, 0x60, 0x5a, 0x9c, 0x78, 0x6d, 0x55, 0xcc, 0x0a, 0xa0, - 0x1a, 0x5c, 0xc3, 0x54, 0x09, 0xfc, 0x82, 0x45, 0x26, 0xc7, 0x45, 0x09, - 0x43, 0x38, 0x9a, 0x07, 0x9a, 0x2e, 0x37, 0x73, 0x23, 0x32, 0x1c, 0xf7, - 0x83, 0xb1, 0xf6, 0x33, 0x9a, 0xc6, 0x8f, 0xfa, 0x42, 0xaa, 0xf2, 0xb1, - 0xb9, 0xfc, 0x21, 0x38, 0xa1, 0xf3, 0x8f, 0xd0, 0x8b, 0xaf, 0x2d, 0xe5, - 0xda, 0x67, 0x25, 0xb0, 0x78, 0x45, 0x3f, 0x52, 0x8c, 0x78, 0x15, 0x29, - 0xb1, 0x14, 0x45, 0x1d, 0x6c, 0x48, 0x15, 0x59, 0x64, 0xd2, 0x2e, 0xe0, - 0x12, 0x71, 0xf0, 0x95, 0x35, 0x9a, 0xb9, 0xd0, 0x77, 0x2c, 0x3b, 0x77, - 0x34, 0x5e, 0x3e, 0xbf, 0x79, 0xa4, 0xf5, 0xff, 0x39, 0x39, 0x96, 0x96, - 0xe8, 0x08, 0x9d, 0xa2, 0x1d, 0x39, 0x73, 0x36, 0x24, 0x9f, 0xbe, 0x64, - 0xb6, 0xcc, 0xed, 0xcb, 0x69, 0x1c, 0x69, 0x71, 0x51, 0x9e, 0x9d, 0x0a, - 0xa5, 0x35, 0xd2, 0x6e, 0xe9, 0xf8, 0xe0, 0x84, 0xd2, 0xdb, 0x1e, 0x00, - 0x8a, 0x32, 0x65, 0x31, 0xdf, 0xc5, 0x48, 0xc3, 0x97, 0xce, 0xe8, 0x90, - 0xfe, 0xfe, 0x18, 0x3a, 0x77, 0x4d, 0x54, 0x40, 0x02, 0x60, 0xa5, 0x88, - 0xf3, 0x46, 0x88, 0x73, 0xfb, 0x90, 0xad, 0xb9, 0x14, 0x71, 0x47, 0x22, - 0x9f, 0x1c, 0xa3, 0xe5, 0x50, 0x96, 0x0c, 0x7a, 0x25, 0x05, 0x4c, 0xa8, - 0x66, 0x43, 0x52, 0x73, 0x4b, 0xce, 0x25, 0x88, 0x88, 0xdf, 0xec, 0x27, - 0x92, 0x3c, 0x27, 0x0c, 0xa6, 0xa0, 0xb5, 0xed, 0xc0, 0x04, 0x5c, 0x24, - 0x13, 0xef, 0x99, 0x48, 0x8b, 0x92, 0xc9, 0xdf, 0x0e, 0x51, 0x04, 0x09, - 0x38, 0x68, 0x8b, 0x3c, 0x12, 0xd6, 0x6a, 0xf3, 0x45, 0x2a, 0xd7, 0xf3, - 0x9e, 0xd2, 0xeb, 0x77, 0x8a, 0x60, 0x63, 0xd0, 0xe0, 0x7b, 0x05, 0xc0, - 0xe4, 0xe0, 0x1f, 0xf8, 0x67, 0xe9, 0x67, 0x8b, 0x81, 0x6d, 0x3a, 0x9f, - 0x13, 0xd2, 0x42, 0xde, 0xd0, 0xcf, 0x84, 0xcf, 0x64, 0xc5, 0x15, 0x89, - 0x78, 0x5f, 0x29, 0x75, 0x5d, 0x01, 0xd6, 0x09, 0x8d, 0x69, 0xc1, 0x99, - 0x55, 0x30, 0x00, 0x7d, 0x0a, 0x68, 0xc8, 0x2c, 0x26, 0xe6, 0x7d, 0x24, - 0x3f, 0xd3, 0x1f, 0x1e, 0xfe, 0x5a, 0xae, 0xc5, 0xe8, 0xc9, 0x1b, 0x0a, - 0xe0, 0x50, 0xf3, 0xf5, 0x83, 0x27, 0xc7, 0x81, 0x35, 0x97, 0x9a, 0xdc, - 0x4f, 0xc4, 0xc2, 0x80, 0x34, 0x87, 0x4c, 0xa2, 0x09, 0x03, 0xcb, 0xfb, - 0xde, 0x35, 0xa9, 0xb0, 0xb1, 0x0a, 0x0e, 0xfc, 0x24, 0x78, 0x9b, 0x97, - 0x78, 0x8f, 0x7a, 0xa0, 0xab, 0x65, 0x1b, 0x17, 0xb1, 0x4b, 0x00, 0xfc, - 0x0d, 0xdb, 0x40, 0x42, 0x04, 0x3d, 0xda, 0x5b, 0x50, 0x4a, 0xa3, 0x62, - 0xe7, 0x28, 0x35, 0x83, 0x28, 0x92, 0x46, 0x24, 0x6a, 0x0e, 0x95, 0x20, - 0x74, 0xec, 0x31, 0xd7, 0xbf, 0x7e, 0xad, 0x54, 0xa7, 0xf9, 0x84, 0x79, - 0x75, 0x4a, 0xfe, 0x3e, 0x0b, 0x4f, 0x4d, 0x68, 0x23, 0xce, 0xd1, 0xf1, - 0xb1, 0x5d, 0xb5, 0x1e, 0xe6, 0x5f, 0xa2, 0x67, 0xe5, 0xc4, 0xb7, 0x9d, - 0x83, 0xf8, 0xa4, 0xaa, 0x6d, 0x7d, 0xac, 0x17, 0x4a, 0x8e, 0x20, 0xa6, - 0xae, 0x4c, 0xfe, 0x38, 0x0a, 0x28, 0x15, 0x67, 0x0f, 0x80, 0x98, 0xb2, - 0xe5, 0x76, 0x1b, 0xd6, 0x74, 0xbf, 0x6b, 0x11, 0x86, 0xfc, 0x2b, 0x28, - 0xce, 0xf4, 0x1d, 0xfa, 0xbc, 0xf1, 0x5c, 0x7b, 0x17, 0x28, 0xfd, 0x1e, - 0x72, 0x83, 0xdb, 0xcc, 0xce, 0x0c, 0x77, 0x95, 0xd1, 0x6b, 0x0f, 0x79, - 0x3e, 0x18, 0x99, 0xf8, 0x85, 0x27, 0x3d, 0x7c, 0x5b, 0xb3, 0x98, 0x77, - 0x1d, 0xf2, 0x57, 0xec, 0xe1, 0x86, 0xbc, 0xef, 0xff, 0x93, 0x3e, 0x15, - 0x1e, 0x6b, 0x73, 0xab, 0x93, 0xbe, 0x24, 0xc1, 0x72, 0xfa, 0x95, 0x65, - 0x94, 0x1f, 0x47, 0x0d, 0x0f, 0xac, 0x1c, 0x4a, 0xc9, 0x54, 0xb1, 0x2d, - 0xa5, 0x3a, 0x4c, 0x7e, 0x0f, 0xa6, 0x1d, 0x68, 0xd8, 0x73, 0xec, 0xe0, - 0x19, 0x90, 0xdd, 0xa3, 0x8c, 0xae, 0x21, 0x40, 0xaf, 0x71, 0x86, 0x4c, - 0xd5, 0x5a, 0x6a, 0x81, 0x8d, 0xa7, 0xa4, 0xcc, 0x0b, 0x5b, 0x32, 0x19, - 0xdd, 0xd9, 0xb4, 0x4f, 0x49, 0x61, 0xfd, 0xe4, 0xf7, 0x66, 0x8e, 0x48, - 0xcf, 0x3e, 0xfa, 0x98, 0xbc, 0x70, 0x02, 0x62, 0x25, 0x10, 0x9a, 0x08, - 0x17, 0x41, 0x00, 0x2e, 0xb4, 0x86, 0x66, 0x71, 0xb2, 0x00, 0xdf, 0xfc, - 0xae, 0xf6, 0x58, 0xdd, 0xbe, 0x27, 0x75, 0x0a, 0x0d, 0x9c, 0x22, 0x03, - 0xd0, 0xa2, 0x06, 0x0d, 0xf1, 0xeb, 0x3b, 0xe2, 0x01, 0x84, 0x15, 0x42, - 0xee, 0x1c, 0x46, 0x51, 0xad, 0x6c, 0x3b, 0x72, 0xaa, 0x6a, 0x2e, 0x2a, - 0xb3, 0xe6, 0x30, 0x76, 0x49, 0xdb, 0x16, 0xf9, 0xef, 0xad, 0x11, 0xe9, - 0x7c, 0xfa, 0x0e, 0x47, 0xd4, 0xac, 0xe9, 0x73, 0xa1, 0xa5, 0xfb, 0x9c, - 0x42, 0xa4, 0x89, 0x76, 0xef, 0xae, 0xed, 0x81, 0xa3, 0x77, 0x2c, 0xa1, - 0xf5, 0x89, 0x65, 0xaf, 0x61, 0xdf, 0x80, 0x3a, 0x09, 0x20, 0x40, 0x4d, - 0x06, 0xd0, 0xdc, 0xb6, 0x58, 0x43, 0x38, 0x9e, 0x09, 0x7e, 0xcf, 0xe4, - 0x5d, 0x2e, 0xa3, 0x1d, 0x32, 0x34, 0xed, 0x7e, 0x38, 0x94, 0xad, 0x87, - 0xc2, 0xa6, 0x50, 0xd1, 0x0e, 0x5f, 0x78, 0x5a, 0xf5, 0xec, 0xd1, 0x18, - 0xbc, 0xb6, 0x3d, 0xd7, 0x17, 0xca, 0xb9, 0x33, 0xef, 0x05, 0x33, 0xb0, - 0x5b, 0xb0, 0x48, 0x04, 0xd1, 0xd5, 0x07, 0xef, 0x94, 0xca, 0x81, 0xf2, - 0xe9, 0xa5, 0x67, 0x82, 0x30, 0x23, 0x70, 0x3a, 0x57, 0x69, 0xf7, 0x13, - 0x25, 0x41, 0xdb, 0x9a, 0x08, 0x39, 0xd3, 0x48, 0xc3, 0x20, 0xdf, 0xf8, - 0x07, 0x9e, 0x53, 0x30, 0x69, 0xec, 0x26, 0xb2, 0x2b, 0x00, 0xad, 0x84, - 0x6b, 0x41, 0x3a, 0x69, 0x9c, 0x8d, 0xf0, 0xd2, 0x71, 0x48, 0x71, 0x8b, - 0x46, 0xdf, 0x74, 0x33, 0xc9, 0x13, 0xa8, 0x6f, 0x43, 0x52, 0xbe, 0x37, - 0x25, 0xa8, 0xdb, 0x9e, 0x27, 0x29, 0x89, 0x69, 0x1c, 0x72, 0xc1, 0x89, - 0x82, 0x0a, 0x6a, 0xb0, 0x15, 0xeb, 0x52, 0x63, 0x70, 0x93, 0x08, 0x33, - 0xea, 0x88, 0x24, 0x14, 0x77, 0x3c, 0x68, 0x83, 0x86, 0x25, 0x7e, 0xac, - 0x0a, 0x78, 0x9c, 0xae, 0x7b, 0xd2, 0x64, 0x2e, 0x5a, 0xe2, 0xd6, 0xd3, - 0x65, 0xa1, 0x59, 0xe0, 0x81, 0x0d, 0x08, 0xb8, 0x6e, 0x6a, 0x04, 0xb3, - 0xae, 0x55, 0x12, 0x3f, 0x01, 0xa5, 0xc4, 0x07, 0xe9, 0x0d, 0xa2, 0xef, - 0x6b, 0x0f, 0x80, 0x78, 0x57, 0x8c, 0xe0, 0x23, 0x8c, 0xf6, 0x82, 0x27, - 0xb1, 0xcc, 0x3c, 0x71, 0xcd, 0x2a, 0xda, 0xab, 0x7f, 0x73, 0xc6, 0xbf, - 0x23, 0x70, 0x5e, 0x55, 0x53, 0x5f, 0x11, 0xb3, 0x9d, 0x15, 0xbf, 0xd5, - 0xe9, 0x68, 0x39, 0x2b, 0xd9, 0x85, 0x9f, 0x06, 0x5d, 0x42, 0x20, 0xb9, - 0x65, 0x0a, 0x8a, 0x87, 0xb3, 0x68, 0x30, 0x66, 0xa4, 0x11, 0x21, 0xca, - 0x61, 0x27, 0x60, 0x0f, 0xf9, 0x72, 0x34, 0x56, 0x7c, 0x61, 0x18, 0x98, - 0x57, 0x65, 0x7c, 0xb3, 0x2b, 0x9e, 0xad, 0xc0, 0xd2, 0x8d, 0x7b, 0xf4, - 0x47, 0x2f, 0xfa, 0x08, 0x27, 0x0b, 0x6c, 0x12, 0x5d, 0xa5, 0xcb, 0xac, - 0x60, 0xeb, 0x21, 0x5a, 0xf6, 0x5c, 0xd1, 0x36, 0xc3, 0xae, 0x29, 0x33, - 0xf1, 0x7c, 0x3c, 0x69, 0xcb, 0x41, 0x35, 0x16, 0xfb, 0x68, 0x98, 0xa6, - 0x48, 0x4b, 0xe3, 0x14, 0x68, 0x17, 0x6e, 0xed, 0x3f, 0x17, 0x42, 0xe9, - 0xa1, 0x9a, 0x24, 0xdc, 0x27, 0x3f, 0x57, 0x74, 0xc7, 0xf6, 0xd2, 0x28, - 0x37, 0xd1, 0xe7, 0x2d, 0x4e, 0xbf, 0x29, 0xee, 0x5d, 0x54, 0x75, 0x95, - 0x88, 0xa5, 0x75, 0xec, 0x36, 0x42, 0x90, 0x93, 0x94, 0x65, 0xe0, 0x0f, - 0xf8, 0x04, 0xb4, 0x4a, 0x78, 0xc4, 0xc2, 0x04, 0x55, 0x21, 0xfe, 0x67, - 0xc7, 0x9b, 0x57, 0xe6, 0x3d, 0xe8, 0x96, 0x0b, 0x26, 0x02, 0xc3, 0xf5, - 0xf1, 0xb3, 0x0b, 0x4f, 0x10, 0xf3, 0x16, 0xe4, 0xca, 0x5c, 0xeb, 0x88, - 0x71, 0x4a, 0xe8, 0xc6, 0x90, 0xc0, 0xae, 0xd6, 0xf3, 0xa6, 0x21, 0xe7, - 0x21, 0x9c, 0x83, 0xc7, 0x1b, 0x29, 0xcd, 0x6d, 0xcb, 0xf7, 0x13, 0x69, - 0xd1, 0xa7, 0xdf, 0xf0, 0x21, 0x4b, 0x6e, 0x7f, 0xc7, 0xb3, 0x18, 0x51, - 0xf6, 0x78, 0xf4, 0xa9, 0x22, 0xcf, 0xfb, 0x7f, 0x56, 0x8c, 0xd1, 0xc7, - 0x04, 0x8a, 0xf0, 0x56, 0x23, 0x7d, 0x28, 0x1a, 0x11, 0x12, 0xdc, 0x0b, - 0x43, 0x3b, 0x8a, 0x7b, 0x94, 0xfb, 0x75, 0x10, 0x4f, 0x99, 0xd1, 0xee, - 0xc1, 0x22, 0xe9, 0x81, 0x28, 0x92, 0xca, 0xea, 0x73, 0x4e, 0xa0, 0xdd, - 0xaf, 0xe7, 0xdd, 0x15, 0xdf, 0xbc, 0x78, 0xd9, 0x18, 0xac, 0x8f, 0xdf, - 0x98, 0x29, 0x6a, 0x1d, 0x9f, 0x4b, 0x4d, 0x44, 0x62, 0x5d, 0xa6, 0x36, - 0xe8, 0x07, 0xff, 0x06, 0x77, 0xe8, 0x21, 0x5c, 0x31, 0xe3, 0xae, 0xaa, - 0xcd, 0x03, 0x6c, 0x77, 0xc2, 0xa2, 0x10, 0xf8, 0x1f, 0xd6, 0x74, 0xb8, - 0xe4, 0xd0, 0x95, 0xb3, 0x99, 0x63, 0xb3, 0x90, 0x3c, 0x62, 0xe2, 0x53, - 0xdc, 0xb0, 0xcc, 0x1e, 0x2c, 0x74, 0x4d, 0xb2, 0xf7, 0x9b, 0x4e, 0x26, - 0xab, 0xe5, 0xe6, 0x21, 0xea, 0x95, 0xbb, 0xba, 0x11, 0x19, 0xaf, 0xee, - 0x84, 0x75, 0x53, 0x12, 0x28, 0x19, 0xe5, 0xb3, 0x1e, 0x05, 0xe6, 0xb7, - 0xb3, 0x9a, 0x4b, 0xb7, 0x09, 0xa4, 0xd1, 0x8a, 0x6c, 0x60, 0x57, 0xe0, - 0xca, 0x56, 0x55, 0xbc, 0x49, 0xa9, 0x31, 0xea, 0x84, 0x8f, 0x1a, 0x03, - 0xf3, 0xf5, 0xf5, 0xf8, 0x0f, 0x6b, 0x15, 0xb5, 0xc8, 0xab, 0xc4, 0x9c, - 0x8d, 0x42, 0x23, 0x5e, 0x6b, 0x31, 0xd6, 0x8a, 0x46, 0xcd, 0x4f, 0x5e, - 0xed, 0xbb, 0xa5, 0xc9, 0xb2, 0x41, 0x6c, 0x79, 0xfe, 0xa2, 0x3f, 0x84, - 0x1a, 0x7c, 0x1e, 0x03, 0x01, 0x54, 0xdf, 0x44, 0x6f, 0x33, 0xc3, 0x55, - 0x7f, 0x8d, 0x32, 0xea, 0x10, 0xd3, 0xfa, 0xf5, 0x4c, 0x16, 0x34, 0xc4, - 0xb7, 0xd3, 0x6c, 0x11, 0xac, 0xf7, 0x04, 0xf2, 0x75, 0x5f, 0xf2, 0x0d, - 0x55, 0x98, 0xdb, 0x56, 0xed, 0x63, 0xa7, 0xaf, 0x57, 0x65, 0xcc, 0xd1, - 0x22, 0x51, 0xfe, 0xcf, 0x61, 0x0b, 0x35, 0x49, 0x31, 0xcf, 0xb7, 0xd5, - 0xff, 0x7e, 0x31, 0x04, 0xc0, 0x48, 0x0d, 0x23, 0x57, 0x18, 0x13, 0xd7, - 0x10, 0xf3, 0x36, 0x91, 0x0c, 0x46, 0xa8, 0xf9, 0x63, 0x9f, 0xcf, 0x11, - 0x5d, 0xd4, 0xe0, 0x51, 0x6d, 0xbd, 0x3f, 0x50, 0x06, 0x22, 0x98, 0x2b, - 0xce, 0x07, 0xeb, 0x43, 0xbc, 0x80, 0x50, 0x82, 0x60, 0xa8, 0x5b, 0xa3, - 0x0a, 0x17, 0x9b, 0x79, 0x42, 0x98, 0x1e, 0x4f, 0x51, 0xcf, 0xc2, 0x7e, - 0x6d, 0x6d, 0x14, 0x7c, 0xc5, 0xbc, 0xa2, 0x91, 0x04, 0x1f, 0x76, 0x45, - 0x48, 0x02, 0x82, 0x8c, 0x86, 0xca, 0x66, 0xe3, 0x62, 0x17, 0xab, 0x6c, - 0x9e, 0x65, 0x34, 0x97, 0xff, 0x9e, 0x2c, 0x3b, 0xa7, 0x22, 0xb7, 0x86, - 0xe8, 0x72, 0xf0, 0xb6, 0x2c, 0x43, 0x59, 0x38, 0x49, 0x02, 0xa6, 0x41, - 0xa4, 0xd0, 0x29, 0x60, 0xe2, 0xdb, 0x52, 0x6b, 0x08, 0x62, 0x75, 0xe8, - 0x17, 0x1b, 0x03, 0x25, 0x4d, 0xc8, 0x8b, 0xd9, 0x2f, 0x76, 0x9b, 0x5f, - 0x75, 0xc8, 0x50, 0x7e, 0x61, 0x84, 0xcb, 0x5d, 0xbd, 0x9d, 0xd1, 0x93, - 0x52, 0x61, 0xef, 0x7b, 0xbc, 0xc1, 0xa6, 0x85, 0xbc, 0x42, 0x86, 0x69, - 0x0a, 0x8e, 0x11, 0x03, 0xab, 0x0e, 0xef, 0x30, 0x50, 0x35, 0xa6, 0x6c, - 0x44, 0x81, 0x6a, 0x2a, 0x61, 0x38, 0x4d, 0x88, 0xa3, 0xaa, 0x73, 0xf3, - 0x93, 0x74, 0xb0, 0xad, 0x9d, 0xc4, 0x5c, 0xd4, 0xe7, 0x89, 0x09, 0x92, - 0xa1, 0x38, 0x01, 0xb6, 0xfb, 0x7d, 0x41, 0x9e, 0xf8, 0x16, 0x12, 0x53, - 0xc1, 0x04, 0xd6, 0x86, 0x88, 0xb6, 0x65, 0x66, 0xc8, 0x51, 0x25, 0x3b, - 0x19, 0x2e, 0x29, 0x2b, 0x8a, 0xbd, 0x0a, 0xc1, 0xf2, 0xb7, 0xce, 0xae, - 0x6d, 0x77, 0x25, 0x37, 0xb2, 0x90, 0x5f, 0xcf, 0xa5, 0x24, 0xd8, 0xdd, - 0xd3, 0x29, 0x84, 0x26, 0x81, 0xfe, 0x50, 0xc7, 0x0d, 0x3a, 0x24, 0x2e, - 0x7b, 0xb8, 0xcc, 0x4c, 0xb5, 0xd6, 0x44, 0x7a, 0x59, 0xa8, 0xb4, 0xe6, - 0x14, 0x17, 0x79, 0xe0, 0x61, 0xa0, 0x35, 0xdf, 0x43, 0xac, 0xef, 0xb8, - 0x62, 0x45, 0xd3, 0x41, 0x6c, 0x63, 0xb4, 0xb1, 0x2c, 0x95, 0xe4, 0x88, - 0x08, 0xa4, 0x87, 0xe8, 0xe1, 0x98, 0xbd, 0x53, 0x30, 0x6e, 0xbd, 0xb5, - 0x8f, 0xfe, 0xf0, 0x36, 0x70, 0xf5, 0x98, 0x48, 0xe3, 0x1e, 0xa9, 0x8a, - 0x3d, 0xaf, 0xbf, 0x96, 0x66, 0x20, 0x3a, 0x7c, 0x8f, 0x75, 0x9b, 0xb4, - 0x54, 0x92, 0x74, 0xac, 0xce, 0xc4, 0xde, 0x60, 0xff, 0xb4, 0x48, 0xf0, - 0xb7, 0xc0, 0xe0, 0x9e, 0xcd, 0xa1, 0x2d, 0x7a, 0x36, 0xb8, 0x94, 0x4d, - 0x91, 0x53, 0x2a, 0x72, 0xe3, 0x7f, 0x64, 0x2d, 0xfe, 0xfb, 0xfe, 0x05, - 0x54, 0x2a, 0xdb, 0xc3, 0xd9, 0x23, 0xce, 0xf6, 0xbd, 0x87, 0x47, 0xf7, - 0x32, 0xfb, 0x93, 0x28, 0x89, 0x4d, 0x6a, 0x58, 0x1f, 0x40, 0xd3, 0x48, - 0xd1, 0x70, 0x60, 0xa3, 0x4d, 0xa0, 0xb4, 0xab, 0x78, 0x7f, 0x8d, 0xe1, - 0x06, 0xc2, 0x30, 0x3b, 0x4e, 0x00, 0x9e, 0x4f, 0xc6, 0xe2, 0xa5, 0xe8, - 0x8a, 0x90, 0xaa, 0x43, 0x3b, 0xc7, 0x37, 0x5f, 0x47, 0x36, 0x21, 0xad, - 0xf2, 0xd4, 0x05, 0x2f, 0xd7, 0x60, 0xe3, 0x1e, 0x5c, 0x7c, 0x61, 0xf7, - 0x10, 0x46, 0xc0, 0x43, 0x45, 0x63, 0xb5, 0xd9, 0xe4, 0x41, 0x11, 0x61, - 0x6c, 0x92, 0xd4, 0x17, 0x1f, 0xc9, 0xbe, 0xec, 0x3f, 0x1d, 0xf8, 0x49, - 0xca, 0x86, 0x45, 0xf1, 0xd9, 0x0e, 0x28, 0x15, 0x24, 0x4d, 0xfc, 0x93, - 0x6d, 0x55, 0xde, 0x27, 0x81, 0xd7, 0x83, 0x33, 0x60, 0x88, 0xad, 0x78, - 0x3d, 0xf1, 0xeb, 0x32, 0x4a, 0xa7, 0x50, 0x58, 0x80, 0x2d, 0xda, 0xee, - 0xba, 0xb0, 0x15, 0x43, 0x49, 0x7f, 0xf1, 0xa5, 0x40, 0x90, 0xe3, 0xb7, - 0x71, 0x1c, 0xfc, 0xdd, 0x25, 0xb8, 0xd2, 0x02, 0xb0, 0x78, 0x5d, 0x23, - 0x7b, 0x26, 0xe7, 0xd3, 0xb2, 0x6f, 0xa5, 0x79, 0x67, 0x62, 0x60, 0xaa, - 0xcf, 0x8f, 0x01, 0xf8, 0xa8, 0xe7, 0xc5, 0xbc, 0x9a, 0xd6, 0x47, 0x50, - 0x46, 0x6b, 0xb1, 0x83, 0x20, 0x6b, 0x16, 0x86, 0x15, 0x5d, 0x8b, 0x9f, - 0x66, 0x57, 0x34, 0xd4, 0x07, 0xfe, 0x85, 0x68, 0xc6, 0xa4, 0x8e, 0x56, - 0x1a, 0xaf, 0x78, 0xca, 0xac, 0xb7, 0xdc, 0xc7, 0xa9, 0x5f, 0x84, 0x28, - 0xe6, 0xe4, 0xc1, 0x62, 0x22, 0x94, 0x85, 0xf9, 0xd7, 0x28, 0xbe, 0x46, - 0x52, 0xa4, 0x35, 0xac, 0x23, 0x83, 0x29, 0xfc, 0xb5, 0x4c, 0x20, 0x4c, - 0x0f, 0x28, 0x9e, 0x40, 0x77, 0x16, 0x8f, 0xc7, 0xb2, 0x83, 0x82, 0x24, - 0xfa, 0x75, 0xd7, 0xe8, 0x63, 0xa0, 0xec, 0xc5, 0xe0, 0x90, 0xb2, 0x58, - 0xb1, 0xe8, 0x0e, 0x4c, 0x3d, 0x6a, 0x58, 0x28, 0xc3, 0xde, 0xbf, 0xbc, - 0xcd, 0x1f, 0x63, 0x32, 0xc2, 0xeb, 0xb0, 0x2d, 0xd8, 0x61, 0x7c, 0x5f, - 0x79, 0x31, 0x36, 0x7d, 0xb0, 0x00, 0x51, 0x5b, 0xce, 0x5a, 0x98, 0x23, - 0x75, 0x84, 0x54, 0xa6, 0x58, 0xb7, 0x9e, 0xe4, 0x42, 0xe8, 0x36, 0x99, - 0x0f, 0x10, 0xc1, 0x0a, 0x16, 0xc7, 0xaa, 0x2f, 0xb3, 0x1d, 0x69, 0x68, - 0x57, 0x68, 0x9a, 0x1e, 0x00, 0x8b, 0x45, 0xf2, 0x8b, 0x9a, 0x42, 0x4b, - 0xa9, 0xac, 0xfe, 0x89, 0x12, 0xcc, 0x3e, 0xa8, 0xc8, 0x51, 0xdf, 0x75, - 0x90, 0xc1, 0x0e, 0xa3, 0x2e, 0x20, 0x8a, 0xa5, 0x38, 0x6b, 0xde, 0x57, - 0x8a, 0x23, 0x6f, 0x6a, 0x4f, 0x38, 0xc0, 0x84, 0xf5, 0x1a, 0x26, 0x49, - 0x50, 0x92, 0x0e, 0x59, 0x02, 0xee, 0x7f, 0xf1, 0xca, 0x5b, 0x52, 0x3e, - 0x3a, 0x35, 0x75, 0xca, 0xe8, 0x27, 0x49, 0x98, 0x46, 0xd3, 0x5a, 0xed, - 0x97, 0xe4, 0x97, 0xc4, 0xfe, 0x9b, 0x3f, 0x98, 0x08, 0x1f, 0x5b, 0x5b, - 0x44, 0x47, 0xbe, 0xff, 0x8e, 0x71, 0x37, 0x06, 0xaf, 0xd2, 0xa3, 0x3d, - 0x4b, 0x70, 0xdd, 0x01, 0x10, 0xbe, 0x69, 0xe8, 0x53, 0x7b, 0xed, 0x48, - 0xa4, 0xaa, 0x3c, 0x6a, 0xb3, 0x57, 0xdf, 0x1f, 0x56, 0x77, 0xd3, 0x9c, - 0x4b, 0xc6, 0x96, 0xb5, 0xe6, 0x1f, 0x49, 0xbe, 0x69, 0x92, 0xc6, 0x72, - 0x7a, 0x8f, 0x33, 0x8b, 0x40, 0x87, 0x10, 0x94, 0xa5, 0xca, 0xb0, 0x48, - 0x9c, 0xae, 0xb7, 0x3c, 0xab, 0x88, 0x47, 0x6d, 0xec, 0x10, 0x09, 0x5b, - 0x1f, 0xcc, 0xd4, 0x79, 0x79, 0xd8, 0x75, 0x54, 0xe3, 0x19, 0x3a, 0x8b, - 0x0c, 0xf0, 0xe3, 0xcc, 0xd7, 0xad, 0x6b, 0x32, 0xae, 0x22, 0x5e, 0xfd, - 0xa9, 0x52, 0x1d, 0x9c, 0xe3, 0x79, 0xab, 0x5f, 0x38, 0x3d, 0xd9, 0x06, - 0xb6, 0x21, 0x28, 0x66, 0xb7, 0x16, 0x1b, 0x19, 0x95, 0xe2, 0xa6, 0x07, - 0xc3, 0x53, 0x44, 0xbc, 0xa5, 0x69, 0x87, 0x8a, 0x1f, 0x0e, 0x3c, 0x6e, - 0x1a, 0x25, 0xbb, 0x37, 0x04, 0x71, 0xb6, 0xce, 0x5e, 0x92, 0x18, 0x23, - 0x3f, 0xed, 0xa5, 0x33, 0x8c, 0x81, 0xbb, 0xc2, 0xeb, 0x0e, 0x2e, 0x4d, - 0x16, 0x0b, 0xa1, 0xbe, 0x1c, 0x83, 0xaf, 0xb9, 0x5a, 0x01, 0x24, 0xda, - 0x58, 0x3a, 0x37, 0x7d, 0xd2, 0x39, 0x3b, 0x33, 0x7d, 0x39, 0xe5, 0x9d, - 0xbd, 0x3d, 0x0d, 0x93, 0x29, 0x5e, 0x8f, 0xe5, 0xda, 0xe8, 0x7d, 0x00, - 0xb5, 0x20, 0xf0, 0xa5, 0x3d, 0x9d, 0x37, 0x7b, 0x63, 0x4e, 0xb1, 0x40, - 0x5f, 0x0f, 0x06, 0x84, 0x38, 0x3b, 0x64, 0x37, 0x1f, 0xb6, 0xbe, 0x1f, - 0xfc, 0x0b, 0x9c, 0xd5, 0x1f, 0x74, 0x13, 0xf8, 0x27, 0xda, 0xc7, 0x20, - 0x91, 0x8a, 0xb4, 0x2a, 0x30, 0x42, 0x6d, 0xcd, 0x6b, 0x51, 0xff, 0xb7, - 0xb3, 0x7a, 0x4d, 0x84, 0x0f, 0x51, 0x73, 0x77, 0x78, 0x4d, 0x7c, 0x13, - 0x49, 0x2b, 0xcf, 0x70, 0xbe, 0x6e, 0xc3, 0x92, 0xc3, 0xc8, 0x64, 0x95, - 0x1d, 0xef, 0xe0, 0xff, 0xd4, 0x47, 0xe3, 0x75, 0xcc, 0x5b, 0xb2, 0x94, - 0xd6, 0x8f, 0xc8, 0xca, 0x00, 0xea, 0xa3, 0xbf, 0x53, 0x51, 0x90, 0x1c, - 0xe8, 0xb8, 0x10, 0x71, 0x38, 0x1f, 0x68, 0xd1, 0x95, 0x2d, 0x2c, 0x69, - 0x87, 0x8f, 0x72, 0x98, 0x26, 0x6a, 0xf2, 0xd6, 0x9e, 0xb9, 0xaf, 0x4b, - 0xcc, 0x5f, 0x29, 0xd1, 0xb1, 0x05, 0xbb, 0xa6, 0x3c, 0x8b, 0x9c, 0xa1, - 0xd3, 0x75, 0x34, 0x42, 0x56, 0xb1, 0x66, 0xa2, 0x3b, 0x4c, 0xb1, 0x5d, - 0x7c, 0x84, 0x9f, 0x9c, 0x03, 0x84, 0x3c, 0xfb, 0xb1, 0x05, 0x19, 0x41, - 0xc9, 0x74, 0xfc, 0x01, 0x5e, 0xc6, 0xd0, 0x3d, 0x7b, 0x0a, 0xfa, 0xec, - 0x9f, 0xa7, 0x03, 0x34, 0xa5, 0xa3, 0x2a, 0x78, 0x2c, 0x00, 0xe8, 0xfa, - 0x40, 0x27, 0xf1, 0x54, 0x8c, 0x0c, 0x16, 0xa2, 0x15, 0x62, 0x49, 0xbb, - 0xce, 0x19, 0x3b, 0x3b, 0xf1, 0xb9, 0xdd, 0x7b, 0x42, 0x28, 0xba, 0x65, - 0xf5, 0x3b, 0xd2, 0xc5, 0xb7, 0x59, 0xae, 0xe9, 0x3a, 0x7f, 0x9f, 0x2b, - 0x35, 0xe1, 0x82, 0xbd, 0x65, 0x6b, 0xe3, 0x3b, 0x65, 0x1a, 0x90, 0x57, - 0xf0, 0x90, 0xaa, 0x7a, 0xf4, 0x0f, 0x16, 0x7f, 0xbb, 0x73, 0x14, 0xd2, - 0x98, 0x19, 0x59, 0x7c, 0xb9, 0x70, 0x5a, 0xbc, 0x65, 0xc4, 0x71, 0xd5, - 0x45, 0xc5, 0x1a, 0xcd, 0xa8, 0x3b, 0x1f, 0xdb, 0x84, 0x09, 0xbc, 0xdc, - 0xbe, 0x1a, 0xa8, 0x32, 0x86, 0xb3, 0xa0, 0xaf, 0xbb, 0x10, 0x0a, 0xbe, - 0x26, 0xce, 0x2b, 0x4c, 0xbc, 0x04, 0xf9, 0x54, 0xe5, 0x00, 0x27, 0xf6, - 0xcc, 0xd3, 0xad, 0x0d, 0x91, 0x90, 0xba, 0xf8, 0x61, 0xaa, 0xd7, 0x55, - 0xb5, 0xff, 0x85, 0x12, 0xb5, 0x88, 0xfe, 0x1d, 0xdb, 0x57, 0x82, 0x25, - 0x26, 0xef, 0x34, 0xf1, 0x08, 0x78, 0x27, 0xe1, 0x94, 0xc5, 0xee, 0x73, - 0x54, 0xdd, 0x8e, 0x8a, 0xcc, 0xe8, 0xcf, 0x4a, 0xf7, 0x23, 0x3e, 0xa5, - 0x92, 0x41, 0x12, 0xad, 0xd0, 0x8f, 0xb7, 0x49, 0x0a, 0x4d, 0x03, 0xb8, - 0x92, 0x4c, 0xca, 0x56, 0xe5, 0xdc, 0x6c, 0xbf, 0xb6, 0xa1, 0xaa, 0xce, - 0xd0, 0xdf, 0xfc, 0xe3, 0xe0, 0x2c, 0xce, 0x5b, 0x93, 0x72, 0x3d, 0x55, - 0x77, 0x76, 0x49, 0x26, 0x76, 0x88, 0xf3, 0xcd, 0x7f, 0x7b, 0xa7, 0xe0, - 0xa4, 0x80, 0xf5, 0x5e, 0x75, 0xa0, 0xed, 0xfe, 0x82, 0xe7, 0x6a, 0x1a, - 0xb8, 0x85, 0xfe, 0x15, 0x1e, 0xd7, 0x9e, 0x5a, 0x7c, 0xfe, 0x6e, 0xbd, - 0x08, 0x46, 0x67, 0x02, 0xa0, 0x01, 0x36, 0x62, 0xc4, 0x59, 0xc6, 0xd3, - 0xd1, 0x90, 0x88, 0x33, 0x73, 0xac, 0xf9, 0x96, 0x96, 0x28, 0x83, 0xac, - 0xe2, 0xda, 0x7c, 0xc0, 0xdb, 0x71, 0xcb, 0xaf, 0xf3, 0x42, 0x0c, 0xba, - 0xca, 0xca, 0xe5, 0x51, 0xd5, 0x3a, 0x0e, 0x8e, 0x4d, 0xc8, 0x68, 0xcb, - 0x7d, 0xbf, 0xf0, 0xdd, 0xbf, 0x7d, 0x7a, 0x67, 0x0f, 0x4d, 0xba, 0xce, - 0xdc, 0xf7, 0x3a, 0x51, 0x7d, 0x42, 0x36, 0x05, 0xc1, 0xcf, 0x2e, 0xf4, - 0xd0, 0xab, 0x02, 0xe9, 0x22, 0x75, 0x9c, 0x25, 0x0c, 0x79, 0x58, 0x18, - 0x8a, 0xec, 0x7f, 0x56, 0xf5, 0x5a, 0x41, 0x15, 0xfe, 0x5c, 0x2a, 0x26, - 0xe5, 0xe5, 0xb1, 0xe1, 0xe9, 0xf4, 0x53, 0xab, 0xd3, 0x0a, 0x0e, 0x81, - 0xed, 0xf1, 0x7d, 0x22, 0xc3, 0x06, 0x2e, 0x4b, 0x46, 0xab, 0x08, 0xe0, - 0x49, 0xc3, 0xf3, 0x3c, 0x14, 0x34, 0x0b, 0x83, 0x29, 0x95, 0xe1, 0x28, - 0x0a, 0x3e, 0xc4, 0x45, 0x16, 0x1e, 0xf0, 0xa2, 0x6f, 0xf6, 0xea, 0x16, - 0x48, 0xa9, 0xca, 0x54, 0x16, 0xa1, 0xc9, 0x8c, 0x00, 0xaa, 0x39, 0x52, - 0x0c, 0xdf, 0x25, 0xe8, 0x4a, 0xda, 0x38, 0x86, 0xd8, 0x0e, 0xee, 0xf8, - 0x43, 0xb3, 0x20, 0xc1, 0xcb, 0xd0, 0x03, 0xdc, 0x5f, 0x59, 0xff, 0x73, - 0x55, 0xc1, 0xad, 0x68, 0x00, 0x4d, 0x50, 0xd5, 0xe8, 0xab, 0xf0, 0x9a, - 0x9d, 0x29, 0xd4, 0x35, 0x77, 0x99, 0x7d, 0x59, 0xa3, 0x02, 0x3b, 0x2f, - 0x4a, 0xe4, 0x42, 0x10, 0x50, 0x2d, 0x82, 0xc2, 0x65, 0x20, 0x7a, 0xb9, - 0xd1, 0x14, 0xed, 0xd4, 0xda, 0xf5, 0xe8, 0x92, 0xc9, 0xa0, 0xa8, 0x9a, - 0x25, 0x30, 0xd3, 0xb3, 0xd5, 0xbf, 0x3a, 0x97, 0x7e, 0x0c, 0x39, 0xd3, - 0x05, 0xf8, 0x82, 0x09, 0xf8, 0xc8, 0x62, 0xb8, 0x48, 0xd9, 0x16, 0x93, - 0x36, 0x1a, 0x17, 0xd8, 0x6f, 0x29, 0x55, 0x4d, 0x7c, 0x29, 0x66, 0x39, - 0xc2, 0x54, 0x53, 0x30, 0x86, 0x77, 0x44, 0xb3, 0xfd, 0xb0, 0xb8, 0x4a, - 0x5b, 0xba, 0x74, 0xa5, 0x68, 0x95, 0x63, 0x24, 0x66, 0xb3, 0xb2, 0x44, - 0x83, 0xae, 0x92, 0x98, 0xeb, 0xf6, 0x0f, 0x8a, 0x94, 0x5c, 0x61, 0xe3, - 0x0b, 0x0f, 0x2d, 0xe5, 0xe4, 0x56, 0x6c, 0x44, 0x09, 0x63, 0x88, 0x99, - 0x7a, 0xbe, 0xdc, 0xe1, 0xfa, 0x21, 0xed, 0x30, 0xc6, 0xfc, 0x37, 0x6d, - 0x91, 0xa9, 0xc8, 0x7e, 0x9e, 0xff, 0x76, 0xcd, 0x17, 0x36, 0xe0, 0x21, - 0x65, 0x70, 0x69, 0x18, 0xaa, 0x2e, 0x6e, 0xa0, 0x54, 0x8c, 0x82, 0xd7, - 0xfb, 0xe9, 0x1c, 0x2a, 0xc7, 0x78, 0x98, 0x61, 0xc2, 0x39, 0xeb, 0xd0, - 0x79, 0x38, 0x1d, 0x0a, 0x13, 0x5e, 0x30, 0x66, 0xc4, 0x24, 0xe0, 0xd0, - 0x48, 0x0b, 0x5f, 0xd3, 0x15, 0x57, 0x49, 0x81, 0x15, 0x7e, 0x6d, 0xc0, - 0x96, 0x83, 0x8e, 0x42, 0x5a, 0xe8, 0x04, 0x1f, 0xa4, 0xd0, 0xb1, 0xe9, - 0xa2, 0xcb, 0xab, 0x73, 0x0a, 0x2d, 0x8b, 0xb3, 0x8b, 0x2c, 0xec, 0x5e, - 0xac, 0xdf, 0x30, 0xac, 0x44, 0x08, 0x9c, 0xa0, 0x3d, 0x16, 0xaf, 0x45, - 0x42, 0x1b, 0xa9, 0x8d, 0x5e, 0xb4, 0x3e, 0xf7, 0x29, 0x5f, 0x50, 0xb0, - 0x31, 0x5a, 0x49, 0xd7, 0x71, 0xf5, 0x5a, 0x19, 0x9f, 0xef, 0x17, 0xdc, - 0x20, 0xcf, 0xec, 0x7d, 0xc5, 0x25, 0x01, 0xef, 0xda, 0x0f, 0x23, 0x22, - 0x3c, 0x98, 0x75, 0x87, 0x1e, 0x2e, 0xa1, 0x2d, 0xf8, 0x88, 0xc6, 0xf0, - 0xe3, 0xea, 0xbb, 0x6b, 0x04, 0xcb, 0xb6, 0x32, 0xd3, 0xfb, 0x85, 0x35, - 0x0d, 0xb6, 0xa2, 0x3c, 0xe8, 0x64, 0x9b, 0x7e, 0xa8, 0x90, 0x63, 0x58, - 0x17, 0xed, 0x67, 0x13, 0x87, 0x90, 0x13, 0x5c, 0x2a, 0xaf, 0x5e, 0xb2, - 0x7b, 0xd0, 0xd4, 0xfb, 0x37, 0x71, 0x7a, 0x00, 0x01, 0x7e, 0xc7, 0x9c, - 0xcb, 0xf6, 0xc8, 0x02, 0xf1, 0xf3, 0xa5, 0x04, 0x36, 0x27, 0x43, 0xf7, - 0xdc, 0x11, 0x41, 0xf6, 0xfc, 0xa3, 0xad, 0x0b, 0x56, 0xd5, 0xeb, 0x07, - 0xbb, 0x53, 0x18, 0x49, 0x38, 0xb7, 0xce, 0x78, 0x71, 0x95, 0x09, 0x15, - 0xc7, 0x51, 0x05, 0x6c, 0x26, 0x50, 0x00, 0x17, 0xbb, 0xd2, 0xbd, 0xd3, - 0x35, 0xe9, 0x1e, 0x42, 0x58, 0x35, 0x28, 0x0e, 0xf7, 0xc3, 0x04, 0xe7, - 0x67, 0x24, 0x94, 0x6a, 0xca, 0x3a, 0x10, 0xde, 0xce, 0xb4, 0x11, 0x0d, - 0xfd, 0x4b, 0x7b, 0x5e, 0x46, 0x88, 0xba, 0xb8, 0x20, 0x8c, 0xc3, 0x44, - 0x5e, 0xbb, 0x1f, 0x87, 0xe2, 0xe1, 0x37, 0xf1, 0x6b, 0xb1, 0x65, 0x11, - 0x0e, 0x6d, 0xba, 0xa3, 0x7b, 0xd5, 0x43, 0xf3, 0xed, 0xae, 0xa5, 0xa2, - 0x04, 0x68, 0xf3, 0x9b, 0xee, 0xb6, 0xfe, 0x29, 0x5e, 0x91, 0xc6, 0x1e, - 0xa2, 0x05, 0xed, 0x3f, 0xc9, 0x83, 0x79, 0xaa, 0xd7, 0x6c, 0xf4, 0xe8, - 0x04, 0xe6, 0xb7, 0x24, 0x55, 0x0f, 0xdf, 0x67, 0x61, 0xcb, 0x27, 0xa5, - 0xbf, 0x1c, 0xd7, 0x29, 0x59, 0xf1, 0xc7, 0x64, 0x2e, 0xcc, 0x16, 0x6f, - 0xc9, 0x86, 0xbe, 0x7f, 0xff, 0xb3, 0x91, 0x52, 0xf5, 0x48, 0xef, 0x6d, - 0xf6, 0xc5, 0xab, 0xd6, 0x48, 0xd4, 0xb7, 0xd9, 0x92, 0x8a, 0x6b, 0x28, - 0xcb, 0x85, 0x95, 0x82, 0x0b, 0xe9, 0xca, 0x18, 0x3c, 0x6f, 0xc7, 0x59, - 0x28, 0x6e, 0xc4, 0xe7, 0x02, 0x64, 0x88, 0x17, 0xe7, 0x27, 0x25, 0xed, - 0xbf, 0xa9, 0xb3, 0x2a, 0x2e, 0xdf, 0x9f, 0xf7, 0xa3, 0x4e, 0x29, 0xe9, - 0x1f, 0x7b, 0x09, 0x39, 0x9c, 0x14, 0x3c, 0x09, 0x01, 0x68, 0xda, 0x63, - 0xe1, 0x13, 0xf9, 0x79, 0x20, 0xe9, 0xae, 0x3c, 0x34, 0xc0, 0xe4, 0x01, - 0x35, 0xfa, 0xba, 0x6b, 0xd0, 0x08, 0x9f, 0xbb, 0xc6, 0xa8, 0x9d, 0xf4, - 0xd9, 0x28, 0xb3, 0x3d, 0x66, 0x7a, 0x71, 0x98, 0x8b, 0x1d, 0xb3, 0xa6, - 0xed, 0x59, 0x57, 0xce, 0xce, 0xbd, 0xb6, 0x8f, 0x2d, 0x0c, 0xd7, 0x5f, - 0x7a, 0xdc, 0xff, 0xc6, 0xd8, 0xc3, 0x2c, 0x10, 0xa4, 0xfd, 0x2b, 0xcd, - 0xb2, 0x44, 0x94, 0xa5, 0xb8, 0x36, 0x05, 0x66, 0xda, 0x62, 0x68, 0x08, - 0x39, 0x19, 0xec, 0x0e, 0x16, 0x61, 0xc7, 0x9f, 0x64, 0x9f, 0xeb, 0xcb, - 0x82, 0x83, 0xb3, 0x48, 0x10, 0x18, 0x7a, 0xec, 0x8e, 0x8e, 0xcf, 0x09, - 0xfd, 0xfa, 0x5f, 0xca, 0xf6, 0xc9, 0x82, 0x86, 0x01, 0xc3, 0xae, 0x68, - 0xba, 0x2b, 0x75, 0x88, 0x5f, 0x30, 0x9d, 0x01, 0x19, 0x0d, 0xf3, 0xa6, - 0x95, 0xfe, 0x36, 0xc2, 0x71, 0xa9, 0x6f, 0x2f, 0xca, 0x1d, 0x69, 0xa6, - 0x9b, 0xcb, 0x15, 0x30, 0xf7, 0x15, 0xf9, 0x46, 0xc4, 0xd7, 0x46, 0xd2, - 0xf6, 0x2a, 0x8e, 0x16, 0x52, 0x92, 0x07, 0xcc, 0x54, 0xed, 0xff, 0x6e, - 0x56, 0x30, 0x99, 0xd2, 0xeb, 0xc2, 0xdc, 0x87, 0x6b, 0x7b, 0x2c, 0x98, - 0xf5, 0x1a, 0x42, 0x8c, 0x52, 0x10, 0x59, 0x61, 0xac, 0xbf, 0x5a, 0x4b, - 0x25, 0x2f, 0x7f, 0xde, 0xfc, 0x5d, 0x84, 0x2e, 0x73, 0xd6, 0x42, 0xa3, - 0x5a, 0x3f, 0x43, 0x5f, 0x26, 0xee, 0x43, 0xfc, 0xef, 0x53, 0x8c, 0x58, - 0xa3, 0x86, 0x71, 0xd0, 0xfe, 0x3d, 0x10, 0xa8, 0x57, 0x7d, 0xcb, 0xa0, - 0xba, 0x4b, 0xfa, 0xa6, 0x21, 0x04, 0xaa, 0x13, 0x1f, 0x74, 0x3f, 0x7f, - 0xd0, 0xf4, 0x6a, 0xc7, 0xec, 0x4a, 0x02, 0xb9, 0x39, 0xe8, 0xc2, 0x7e, - 0x7a, 0x2b, 0x1e, 0x2c, 0xfe, 0xf1, 0x81, 0x97, 0x6b, 0xe5, 0x87, 0x0a, - 0xa1, 0xf7, 0x7b, 0xda, 0x94, 0xa2, 0x85, 0xc0, 0xaa, 0xff, 0x7a, 0x0a, - 0x93, 0x2c, 0x57, 0x99, 0xe7, 0xb1, 0xc2, 0x02, 0x2e, 0xf8, 0x85, 0xe9, - 0x28, 0xb1, 0xac, 0xec, 0x5a, 0xfd, 0xef, 0x9b, 0x39, 0xa6, 0xcf, 0xf6, - 0x19, 0x91, 0x33, 0xb6, 0x1a, 0x6c, 0x1c, 0x31, 0xe6, 0x2a, 0x31, 0x9c, - 0xd9, 0xbf, 0xcc, 0x31, 0xb9, 0x22, 0x7a, 0xe9, 0x4e, 0xcd, 0x46, 0x33, - 0x8f, 0xa0, 0x15, 0xa8, 0x9e, 0xbe, 0x78, 0x3e, 0x63, 0x6c, 0x10, 0x5f, - 0x8a, 0x61, 0xea, 0x35, 0x01, 0xdd, 0x60, 0x6c, 0x36, 0x4d, 0x17, 0x06, - 0xb3, 0x6d, 0xd4, 0xbe, 0xe3, 0x61, 0x7f, 0x28, 0x8d, 0x1c, 0xd9, 0xe5, - 0x6c, 0x60, 0x81, 0x9d, 0x90, 0xf2, 0x0a, 0x47, 0x8d, 0xc9, 0xa1, 0x07, - 0x4c, 0x5b, 0xec, 0xc4, 0xa7, 0x2a, 0x3a, 0xbf, 0xd8, 0x09, 0x93, 0xb7, - 0x22, 0xd1, 0x37, 0xd9, 0x34, 0x7c, 0x85, 0x86, 0xcc, 0x96, 0xce, 0xb7, - 0xab, 0xab, 0xba, 0x1d, 0x4e, 0xc4, 0x7b, 0x2b, 0x57, 0x9a, 0x5a, 0x51, - 0xf7, 0x1c, 0xac, 0x36, 0x91, 0xa5, 0xf5, 0xd9, 0x84, 0x9e, 0xc1, 0x5c, - 0xa4, 0x51, 0x04, 0xcc, 0xc3, 0xa1, 0x58, 0xb5, 0x45, 0x15, 0x95, 0x88, - 0xad, 0x7a, 0xd5, 0x1c, 0x45, 0xa4, 0x59, 0x96, 0x46, 0x56, 0xb9, 0xc1, - 0xaa, 0x64, 0xfb, 0xbd, 0x8b, 0x18, 0xc8, 0x9d, 0x01, 0xda, 0x78, 0x16, - 0x39, 0x6c, 0xe6, 0x97, 0x63, 0x47, 0xd1, 0x24, 0xe2, 0x65, 0x94, 0x3c, - 0xd1, 0x4d, 0x50, 0xee, 0xfe, 0x00, 0x05, 0x7f, 0x61, 0x85, 0xeb, 0x53, - 0x92, 0x5b, 0xb5, 0x55, 0x74, 0xe2, 0x02, 0x2d, 0xdb, 0x72, 0x69, 0x7a, - 0x78, 0x93, 0xb3, 0xd9, 0xfb, 0x96, 0x7e, 0xea, 0xc1, 0xcc, 0x79, 0xf4, - 0xa1, 0xde, 0x00, 0x12, 0x0f, 0xd9, 0x93, 0xd0, 0xda, 0xcc, 0x30, 0xa7, - 0x53, 0x22, 0x02, 0xc0, 0xf5, 0x65, 0xb9, 0xcc, 0xb4, 0xa1, 0x7d, 0x1f, - 0xc5, 0xfd, 0xd9, 0xb3, 0xfa, 0x96, 0xde, 0xb0, 0xe0, 0xd8, 0xed, 0x9e, - 0x0f, 0x7e, 0xdc, 0xb0, 0x8d, 0x5f, 0x69, 0xdc, 0x83, 0xf5, 0xcf, 0xc4, - 0xc6, 0xb6, 0x2b, 0xf6, 0xa3, 0x1c, 0x0f, 0xcd, 0x8e, 0xfb, 0xae, 0xb5, - 0x3b, 0xd8, 0xc2, 0xa3, 0xb1, 0xea, 0xd6, 0x34, 0x67, 0x19, 0x06, 0xd3, - 0x00, 0xd9, 0x26, 0xc9, 0x83, 0x58, 0x29, 0x51, 0x29, 0x12, 0x67, 0x68, - 0xd9, 0x89, 0xb9, 0x24, 0x5c, 0xc7, 0x4b, 0x27, 0xda, 0x2d, 0x33, 0x6b, - 0x4e, 0x42, 0x03, 0xbd, 0xd2, 0x63, 0xef, 0x9e, 0x50, 0xa5, 0x9f, 0x02, - 0xfe, 0x2f, 0x2c, 0xbe, 0xd0, 0x3b, 0x03, 0x39, 0x7f, 0x4c, 0x41, 0xbd, - 0xcd, 0x0a, 0x63, 0x06, 0xfc, 0xdd, 0x01, 0x8f, 0x9e, 0xe3, 0x64, 0x48, - 0x37, 0xdb, 0x81, 0xaa, 0xf9, 0x13, 0xd9, 0x32, 0xa6, 0xe3, 0xe2, 0x07, - 0x4f, 0x1c, 0xbe, 0xc5, 0x6b, 0x6d, 0xfb, 0x48, 0x4d, 0x80, 0x87, 0xb3, - 0x58, 0x8c, 0x4e, 0xfb, 0x4d, 0x5f, 0xcb, 0xc3, 0x44, 0xf3, 0x6d, 0x28, - 0x67, 0x68, 0x65, 0x53, 0xc6, 0x47, 0xe1, 0xb1, 0xb4, 0xe8, 0xf0, 0x63, - 0xf9, 0xef, 0x81, 0xd1, 0xcb, 0x44, 0xa3, 0x97, 0xf8, 0x67, 0x02, 0xbb, - 0xe0, 0x1f, 0x7a, 0xed, 0xd5, 0xa3, 0xb0, 0x4c, 0xf2, 0xfe, 0x17, 0x5f, - 0x5a, 0x1b, 0x47, 0x6b, 0x25, 0x59, 0x3b, 0x4e, 0x18, 0x98, 0xf2, 0x0a, - 0x19, 0xad, 0x3f, 0x9c, 0x02, 0x9b, 0x1d, 0x7a, 0xda, 0x98, 0x2d, 0x0f, - 0x69, 0x94, 0xa1, 0x03, 0x2f, 0x26, 0xfe, 0x73, 0x17, 0x4f, 0xd5, 0xd4, - 0x74, 0x74, 0xab, 0xf9, 0xd9, 0x98, 0x0d, 0x4f, 0x36, 0xf2, 0xf7, 0x71, - 0xf6, 0xb6, 0xdd, 0x73, 0x83, 0xdf, 0xc4, 0x2e, 0x44, 0x18, 0x51, 0x4d, - 0xc4, 0x1a, 0x44, 0xea, 0xa2, 0xfe, 0xc0, 0xea, 0x15, 0xf8, 0x0b, 0x30, - 0x2f, 0xc8, 0xad, 0x7d, 0x3b, 0xef, 0xf0, 0x6b, 0x5a, 0xfb, 0xe1, 0x26, - 0x88, 0x9c, 0x4c, 0xf2, 0x30, 0xe8, 0xc6, 0x76, 0xc0, 0x31, 0x2e, 0x20, - 0xfc, 0x49, 0x6a, 0xd8, 0x13, 0x6e, 0x7d, 0x9d, 0x0f, 0x05, 0x88, 0x00, - 0x7e, 0xac, 0xad, 0x35, 0xe5, 0x8a, 0xbe, 0x61, 0x2a, 0xde, 0x35, 0x1b, - 0x17, 0xcb, 0x15, 0xfa, 0x2f, 0x41, 0xbc, 0x84, 0x84, 0x7b, 0xb6, 0xcf, - 0x5c, 0x3b, 0x29, 0x6b, 0x0f, 0x7e, 0xe7, 0x06, 0xa1, 0xa1, 0xe7, 0xee, - 0x6a, 0x24, 0xaf, 0x8f, 0xcc, 0xd3, 0xec, 0x2f, 0x35, 0x78, 0x84, 0xa6, - 0x29, 0x42, 0x26, 0x8e, 0xd5, 0x5e, 0x11, 0x61, 0xa5, 0x33, 0x14, 0xe2, - 0x00, 0xeb, 0xef, 0x58, 0x98, 0xd3, 0x0a, 0xcb, 0x60, 0xa6, 0xf8, 0x44, - 0x0a, 0xa7, 0x05, 0x4d, 0x08, 0x1a, 0xa8, 0xf7, 0x27, 0x19, 0x26, 0xe8, - 0xe5, 0x15, 0x9a, 0x3b, 0x40, 0x86, 0xc2, 0x31, 0xef, 0x07, 0x78, 0xe8, - 0xfc, 0x71, 0xeb, 0xd0, 0xfa, 0xaf, 0x70, 0x48, 0xbf, 0xac, 0xc8, 0x5a, - 0x11, 0xa4, 0x96, 0x40, 0x6b, 0xac, 0x18, 0xb3, 0x9c, 0x84, 0x9f, 0xb0, - 0xe0, 0xe9, 0x36, 0x3f, 0x94, 0x17, 0x7c, 0x24, 0x92, 0xe0, 0xba, 0xbd, - 0xca, 0x08, 0xf8, 0xdc, 0x1e, 0x7f, 0xe8, 0x19, 0x1a, 0x6f, 0xf8, 0x6a, - 0xaf, 0x65, 0x8f, 0x1d, 0xec, 0x72, 0x81, 0xf4, 0x60, 0x9f, 0xc1, 0xe9, - 0x5d, 0x3f, 0xf3, 0x4f, 0x32, 0x4d, 0x2f, 0xb3, 0x3f, 0x49, 0xd6, 0x3e, - 0xb5, 0x62, 0x63, 0x89, 0x7b, 0x93, 0x65, 0x55, 0x0f, 0xa6, 0xea, 0xfb, - 0x8d, 0x73, 0x34, 0x2a, 0xcd, 0x97, 0x5e, 0xb2, 0x3a, 0x3d, 0xd9, 0x54, - 0xaf, 0x50, 0x6c, 0xe5, 0xc4, 0x79, 0x28, 0x49, 0x13, 0xa6, 0x8b, 0xd0, - 0xa5, 0x96, 0xe0, 0xcc, 0x76, 0x94, 0x84, 0x3f, 0xfb, 0x81, 0x0a, 0xd2, - 0xe9, 0x02, 0x0b, 0xab, 0x0b, 0xd9, 0x7c, 0x77, 0xc0, 0x94, 0xae, 0x56, - 0x11, 0x42, 0xda, 0x71, 0x58, 0x58, 0x59, 0x6a, 0xc3, 0xa2, 0xd7, 0x09, - 0xea, 0xd6, 0xe7, 0x4a, 0x2b, 0xb7, 0xf2, 0x35, 0xad, 0x9b, 0xb5, 0x67, - 0x10, 0xb5, 0x6f, 0xa4, 0x91, 0x80, 0x32, 0xd6, 0x9c, 0x89, 0x2e, 0xbc, - 0xcf, 0x4d, 0x7d, 0xf0, 0x23, 0xcc, 0xa9, 0x8f, 0x5a, 0x91, 0xcb, 0xef, - 0x68, 0x25, 0x83, 0x03, 0x81, 0x94, 0x41, 0x23, 0xdb, 0x91, 0xca, 0x3b, - 0x03, 0x37, 0x8d, 0x64, 0x1e, 0xbf, 0xf4, 0x63, 0xeb, 0xd4, 0x97, 0x22, - 0xd8, 0x13, 0x00, 0x06, 0x75, 0x28, 0x74, 0x6c, 0x37, 0x09, 0x20, 0xec, - 0x36, 0x2b, 0xcd, 0x91, 0xd6, 0x46, 0x33, 0xb1, 0x60, 0x7d, 0x55, 0x4f, - 0xe5, 0xac, 0x09, 0xb8, 0xdd, 0x18, 0x78, 0xcc, 0x72, 0xaf, 0x0d, 0xfe, - 0xac, 0xf8, 0xf7, 0x31, 0xef, 0x59, 0x94, 0x0f, 0xac, 0xe7, 0x85, 0x15, - 0xee, 0xb1, 0x78, 0x27, 0x27, 0xa8, 0xb4, 0xee, 0x42, 0x2d, 0x02, 0x5a, - 0xf9, 0x3d, 0x3c, 0x50, 0xa8, 0x57, 0xdf, 0x79, 0xbc, 0x88, 0x88, 0x95, - 0x66, 0xef, 0xc6, 0x7b, 0xe3, 0x20, 0xb9, 0x82, 0x7c, 0xaa, 0x08, 0x6a, - 0x29, 0xfe, 0x8e, 0x64, 0x40, 0x15, 0x29, 0x33, 0x59, 0xad, 0x7c, 0x2d, - 0x2d, 0x16, 0x68, 0x3d, 0xc1, 0xc6, 0xc3, 0xb4, 0x89, 0xa5, 0x0e, 0x4a, - 0x17, 0x6d, 0xf6, 0x90, 0xd4, 0x6c, 0x72, 0xa1, 0x52, 0x06, 0x39, 0x5c, - 0xad, 0x49, 0xef, 0xc6, 0x64, 0x79, 0xed, 0x22, 0xc1, 0xde, 0x43, 0x93, - 0x9c, 0x19, 0xa2, 0xd1, 0x07, 0xe3, 0xb4, 0xf7, 0xa9, 0x85, 0xbb, 0x8a, - 0xe6, 0x8c, 0xdb, 0x40, 0x4d, 0x6a, 0xb1, 0xbc, 0xc7, 0x78, 0x40, 0xc6, - 0xe0, 0x0b, 0xe5, 0x7b, 0x75, 0x74, 0x26, 0x79, 0x25, 0x3d, 0x0d, 0xc6, - 0x60, 0x1e, 0xf6, 0x5f, 0xdb, 0x65, 0x8c, 0x34, 0x30, 0x1d, 0x5d, 0x48, - 0x82, 0xd0, 0x32, 0x1f, 0xa2, 0xef, 0x34, 0x20, 0x6c, 0xe7, 0x3e, 0x34, - 0x79, 0x02, 0x7a, 0xe9, 0x46, 0xd0, 0x3f, 0x92, 0x6e, 0xc5, 0x84, 0x60, - 0x26, 0x67, 0xef, 0x1a, 0x5e, 0x4d, 0x06, 0x32, 0xa5, 0x83, 0xe7, 0x74, - 0xba, 0x6a, 0x4a, 0x9d, 0x1f, 0x77, 0xf0, 0x0a, 0x17, 0xa7, 0xb1, 0x99, - 0x24, 0x97, 0xe9, 0x7b, 0x43, 0x29, 0xd4, 0x0a, 0x6b, 0x1a, 0x02, 0x99, - 0x10, 0x43, 0x11, 0x6e, 0xc4, 0x1b, 0x0b, 0xee, 0x84, 0xa4, 0x70, 0x5b, - 0xeb, 0xbb, 0xdb, 0x81, 0x44, 0x0b, 0x1d, 0x9c, 0xfc, 0xe3, 0xf1, 0xa5, - 0x60, 0x4c, 0x55, 0xb9, 0xdd, 0xcd, 0x4b, 0xa9, 0xfb, 0xae, 0xdb, 0xdc, - 0x71, 0xbb, 0xf1, 0xb8, 0xec, 0x96, 0xa8, 0x39, 0x72, 0xf1, 0x07, 0xaa, - 0x9f, 0xd9, 0x1b, 0xeb, 0x3f, 0xa7, 0xc1, 0xe2, 0xfe, 0xba, 0xba, 0xf6, - 0x31, 0xf6, 0x14, 0x3b, 0x5d, 0xf8, 0x28, 0x4f, 0x0b, 0x63, 0x54, 0x96, - 0xaa, 0x8c, 0xa7, 0xab, 0xd9, 0x17, 0x2c, 0x54, 0xb1, 0xff, 0x91, 0x61, - 0x35, 0xc7, 0x3f, 0x66, 0x6f, 0x4a, 0xab, 0x86, 0xfa, 0xd2, 0x9e, 0x63, - 0x0a, 0x4e, 0x93, 0xb8, 0xd5, 0xbf, 0xa0, 0xa1, 0x29, 0xca, 0x8d, 0xfc, - 0xf2, 0x2f, 0x6a, 0xcb, 0x6d, 0x76, 0x01, 0x33, 0x0b, 0x4f, 0x41, 0x7f, - 0x1f, 0x20, 0xd1, 0x40, 0xf1, 0x04, 0x3b, 0x6b, 0x31, 0x3d, 0x81, 0x6b, - 0x04, 0xd7, 0x0f, 0x69, 0x66, 0x8e, 0x98, 0x40, 0x6b, 0xbf, 0x62, 0xf6, - 0x85, 0x36, 0xd3, 0xa6, 0x89, 0x17, 0x43, 0xc3, 0x0a, 0x10, 0x77, 0x8c, - 0xe6, 0xea, 0x17, 0xad, 0x87, 0x16, 0x7d, 0x07, 0xfb, 0x03, 0x87, 0x3e, - 0xa1, 0xad, 0x6e, 0x3b, 0x1e, 0x2c, 0x4e, 0xe1, 0xaa, 0x02, 0xa2, 0x79, - 0xab, 0x6f, 0x54, 0x30, 0xea, 0x3d, 0x54, 0xb8, 0x74, 0x98, 0xa4, 0x90, - 0xa9, 0x6c, 0x87, 0x2f, 0xd6, 0x0e, 0xaa, 0xed, 0x71, 0x93, 0x5c, 0x7d, - 0xfc, 0xdc, 0x75, 0xfb, 0xb4, 0xf3, 0xcc, 0x36, 0x95, 0xa1, 0x8f, 0x7e, - 0x20, 0x02, 0x2c, 0x28, 0x2b, 0xf5, 0x35, 0xc9, 0x7a, 0xde, 0xf8, 0x26, - 0x05, 0xcf, 0xd7, 0xb6, 0x26, 0xc1, 0x9a, 0xa9, 0x1c, 0xf8, 0xdb, 0x53, - 0x6b, 0x87, 0xe7, 0xea, 0x79, 0x16, 0x78, 0x02, 0xa9, 0x06, 0xa6, 0x40, - 0x26, 0x64, 0xef, 0x46, 0x63, 0x93, 0x91, 0xc2, 0x52, 0x7c, 0x65, 0x0c, - 0x61, 0x7d, 0xf7, 0xa3, 0xd6, 0xe1, 0x30, 0x34, 0x02, 0xf1, 0xd0, 0xe7, - 0x73, 0x23, 0x4a, 0x45, 0x57, 0x5d, 0x6b, 0xcc, 0x2f, 0x7e, 0xee, 0x29, - 0x66, 0x34, 0x3a, 0x28, 0x40, 0x34, 0x97, 0x41, 0xb4, 0x5d, 0x79, 0x42, - 0x35, 0xc8, 0x7c, 0x59, 0xa7, 0x3d, 0x6f, 0x72, 0x25, 0x12, 0xd9, 0xe7, - 0x14, 0x39, 0xf2, 0x57, 0xd3, 0x48, 0x66, 0xf2, 0xe4, 0xbd, 0x49, 0x52, - 0x93, 0xdc, 0xe8, 0x2a, 0xd1, 0x38, 0x77, 0x5f, 0x79, 0x6c, 0x98, 0xa3, - 0x29, 0xfa, 0x7f, 0x8d, 0x82, 0x52, 0xc5, 0x28, 0x80, 0xe0, 0x01, 0x3f, - 0x53, 0xb1, 0xbf, 0x72, 0x15, 0x2a, 0xd9, 0x14, 0xae, 0x03, 0xd2, 0x39, - 0xc2, 0x0e, 0x2c, 0xad, 0xfc, 0xe7, 0xe6, 0xda, 0xc9, 0x0e, 0x85, 0xb2, - 0x8a, 0x77, 0x6b, 0x71, 0x8d, 0xd3, 0x6a, 0xd9, 0xb3, 0xd6, 0xf0, 0xa3, - 0x67, 0x64, 0x61, 0x41, 0xcf, 0x7a, 0xf0, 0xed, 0xb4, 0xb7, 0x39, 0x6a, - 0x66, 0x4f, 0x02, 0x15, 0x00, 0x23, 0x2f, 0x76, 0x92, 0x0a, 0xdc, 0xd3, - 0xdf, 0x83, 0x57, 0x8f, 0xb1, 0x84, 0xe8, 0x72, 0xc5, 0x88, 0x4b, 0x0a, - 0xf4, 0xc2, 0x63, 0x1e, 0x57, 0x11, 0xe5, 0xbb, 0x4f, 0x82, 0x74, 0xcc, - 0x6c, 0x11, 0x3c, 0xf0, 0x9e, 0x0c, 0x35, 0xef, 0x77, 0x34, 0x4c, 0xbc, - 0x13, 0x00, 0xe7, 0xc4, 0xea, 0x7b, 0x40, 0xcc, 0x08, 0x6d, 0x37, 0x0d, - 0x7d, 0xe5, 0xc7, 0xb7, 0xc7, 0x18, 0x40, 0x2e, 0x8c, 0x32, 0x49, 0x15, - 0xb6, 0xd0, 0xc5, 0x94, 0x9d, 0x2c, 0x96, 0xb9, 0xac, 0xa0, 0x54, 0xd8, - 0x3e, 0xd8, 0xa1, 0x47, 0x86, 0xb6, 0x21, 0x21, 0x30, 0x80, 0xc1, 0x48, - 0x55, 0xf7, 0x90, 0xff, 0xeb, 0x25, 0xf6, 0xba, 0x94, 0x4b, 0xd5, 0x00, - 0x42, 0x18, 0xd3, 0x1b, 0x72, 0x90, 0xaf, 0x19, 0x34, 0x9f, 0x43, 0x10, - 0x87, 0xc9, 0x38, 0x84, 0x57, 0x67, 0x94, 0xd6, 0x7a, 0x68, 0x3c, 0x31, - 0x64, 0x85, 0x8c, 0x96, 0x88, 0xb4, 0xbc, 0x42, 0x68, 0xa2, 0x16, 0x31, - 0xe2, 0x6c, 0x7f, 0x7f, 0xd6, 0x90, 0xea, 0x58, 0xb6, 0x0f, 0x2a, 0x07, - 0x26, 0x6e, 0x52, 0xa6, 0x90, 0x57, 0xcd, 0xae, 0x9c, 0xc8, 0x11, 0xda, - 0x94, 0x96, 0x93, 0xf3, 0x69, 0xab, 0xe4, 0x16, 0xb0, 0x86, 0x33, 0xd4, - 0x46, 0x65, 0x9d, 0x1f, 0xeb, 0x07, 0xff, 0x29, 0x0d, 0xfd, 0x3d, 0xe2, - 0x10, 0xee, 0x4e, 0xfe, 0xac, 0x4f, 0x82, 0x3d, 0x3b, 0x20, 0xaf, 0xd0, - 0x88, 0x80, 0xa0, 0x85, 0x5a, 0x5e, 0x7d, 0x0f, 0x3f, 0x0b, 0x6e, 0x8f, - 0xf1, 0x26, 0xf1, 0xed, 0xef, 0x31, 0x2a, 0x5f, 0x3c, 0x01, 0x78, 0x6a, - 0x97, 0x43, 0xfd, 0x48, 0x17, 0x67, 0xc9, 0x61, 0x76, 0x59, 0xfe, 0xef, - 0x70, 0x28, 0x51, 0x8d, 0x52, 0x7f, 0x3b, 0xaf, 0x53, 0x30, 0xae, 0x6b, - 0xaf, 0xb6, 0x9a, 0x3f, 0x66, 0xf8, 0xc8, 0x65, 0x4d, 0x2b, 0xc8, 0x10, - 0xb8, 0x8e, 0x65, 0x69, 0x25, 0xc2, 0x12, 0xbc, 0xdc, 0xb1, 0x1a, 0x06, - 0x6e, 0xcc, 0x0c, 0x82, 0x80, 0x23, 0xed, 0x94, 0xfb, 0x1d, 0xc9, 0x80, - 0xba, 0x44, 0x11, 0x3b, 0x96, 0x9b, 0x90, 0x47, 0xb7, 0xe1, 0x90, 0x59, - 0xa3, 0x49, 0x19, 0x6a, 0xab, 0xc3, 0x38, 0x36, 0xf2, 0x22, 0x28, 0x41, - 0x81, 0x8f, 0x8d, 0x3f, 0xe8, 0x42, 0x46, 0x22, 0x93, 0xa4, 0x7c, 0xfe, - 0x25, 0x51, 0xd9, 0xab, 0x5f, 0xa3, 0xa8, 0xc0, 0xfa, 0x1d, 0xab, 0xfb, - 0xe9, 0xb2, 0x36, 0xfe, 0x14, 0xd4, 0x47, 0xdb, 0xf1, 0x51, 0x50, 0x2b, - 0x57, 0xf2, 0x26, 0x20, 0x44, 0x2a, 0x58, 0x90, 0x2b, 0xa0, 0x8f, 0x47, - 0x2d, 0x19, 0xfb, 0xe4, 0x07, 0xb9, 0x77, 0xf7, 0xb1, 0xd6, 0x84, 0x4d, - 0xa7, 0xc8, 0xa6, 0x82, 0x97, 0x67, 0xee, 0xbc, 0x07, 0xfc, 0x31, 0xe6, - 0x84, 0x11, 0x34, 0xd5, 0xf2, 0xfb, 0xa2, 0xd4, 0xc1, 0xf8, 0xcc, 0xf0, - 0x76, 0xfc, 0x02, 0x78, 0xa7, 0xfe, 0xfe, 0x41, 0x47, 0xb2, 0x44, 0x53, - 0xf5, 0x91, 0x35, 0xee, 0x0f, 0x6a, 0xf2, 0x19, 0x92, 0x07, 0x47, 0x3e, - 0x66, 0x79, 0x8d, 0x7f, 0x9e, 0x32, 0xf2, 0x96, 0xd1, 0x00, 0x79, 0xb0, - 0x66, 0xac, 0x4c, 0xeb, 0xfe, 0xac, 0x9b, 0xcb, 0x16, 0x2b, 0x8e, 0xed, - 0x27, 0x8d, 0x3e, 0xb3, 0xac, 0x91, 0x76, 0x41, 0xf4, 0xe3, 0x14, 0x92, - 0x2e, 0xd7, 0x2c, 0x38, 0x3e, 0x7e, 0x0a, 0x02, 0xf1, 0x20, 0x93, 0xc9, - 0x51, 0xef, 0x5f, 0xcc, 0x11, 0x45, 0x51, 0x47, 0x44, 0xdb, 0xf2, 0xc0, - 0xf4, 0x11, 0x63, 0x9b, 0xb0, 0x74, 0x14, 0x95, 0xa6, 0x49, 0xb0, 0x24, - 0x97, 0x5a, 0x55, 0xd6, 0x4c, 0xbf, 0x90, 0x32, 0x35, 0x05, 0x38, 0x3e, - 0xbb, 0x88, 0x2b, 0xb0, 0x39, 0xee, 0xe7, 0xa2, 0x77, 0xbe, 0x57, 0x64, - 0x4c, 0x60, 0xaa, 0x1c, 0x71, 0xb6, 0xb0, 0x6c, 0xc2, 0xef, 0xce, 0x9a, - 0xc0, 0xf7, 0x91, 0x7f, 0x44, 0x67, 0xfe, 0x45, 0x5e, 0xc3, 0x5d, 0xdd, - 0xa3, 0x2b, 0x71, 0xe6, 0x6c, 0x99, 0xad, 0xeb, 0xda, 0x31, 0xa6, 0x94, - 0x96, 0xd9, 0x89, 0x9c, 0xad, 0xb0, 0x3a, 0x1a, 0xd7, 0x00, 0x39, 0xb0, - 0x7f, 0x47, 0x3b, 0xc1, 0x98, 0xc6, 0x81, 0xab, 0xe1, 0x86, 0x29, 0x30, - 0xe5, 0xc4, 0xd8, 0xd0, 0xdf, 0x38, 0xbb, 0x64, 0xb1, 0xf3, 0xd8, 0x49, - 0x35, 0x66, 0x39, 0x16, 0x5f, 0x13, 0xa0, 0xf0, 0xd1, 0x62, 0x2c, 0xa4, - 0xcd, 0xbd, 0xb2, 0x09, 0x1d, 0x6e, 0xef, 0xdb, 0xa7, 0x72, 0xbf, 0x40, - 0x67, 0x05, 0x78, 0xca, 0x02, 0xe4, 0xf9, 0x62, 0x4b, 0x50, 0x27, 0xa8, - 0x11, 0x09, 0x74, 0x52, 0x05, 0xb9, 0x15, 0x4b, 0xfb, 0x05, 0x8d, 0x53, - 0xc0, 0x9a, 0x67, 0x7b, 0x09, 0xb5, 0x9f, 0x36, 0xf5, 0xa3, 0x2e, 0x60, - 0x48, 0xbb, 0x22, 0x3c, 0x83, 0x1c, 0xf0, 0x2d, 0x19, 0xb9, 0xa4, 0xdb, - 0x4e, 0x4c, 0x97, 0x54, 0x7f, 0xf6, 0x86, 0x06, 0x64, 0x84, 0x1d, 0x39, - 0x06, 0xac, 0x1c, 0x11, 0xc3, 0xfe, 0x36, 0x53, 0xe8, 0x05, 0xd5, 0x0d, - 0xbf, 0xb3, 0xfc, 0xa1, 0x2c, 0x3d, 0x5c, 0x4f, 0xcd, 0xbc, 0x21, 0xf8, - 0x45, 0x43, 0x06, 0xca, 0xe2, 0x13, 0x2e, 0x82, 0x96, 0x9f, 0x2f, 0xb4, - 0x0c, 0x13, 0x5c, 0x6f, 0x8e, 0x3b, 0xf2, 0xa9, 0xd2, 0x9a, 0x33, 0xec, - 0xb3, 0x85, 0x55, 0x32, 0x24, 0xdd, 0xd1, 0xf1, 0x3c, 0xaf, 0x71, 0x1f, - 0x4b, 0x0b, 0xfa, 0x79, 0x06, 0xb0, 0x0e, 0x67, 0x6b, 0xea, 0x41, 0xdb, - 0x70, 0x8d, 0x27, 0x6a, 0xee, 0x28, 0xd2, 0x4b, 0xa7, 0x42, 0x7a, 0x8d, - 0xdc, 0x9a, 0xea, 0xf1, 0x1b, 0x42, 0x2e, 0x7d, 0x66, 0x61, 0x11, 0x75, - 0x95, 0x41, 0x15, 0xc1, 0xb2, 0x78, 0x05, 0x13, 0x95, 0x66, 0x39, 0xc8, - 0x13, 0xbf, 0x41, 0x79, 0x05, 0x6d, 0xca, 0xef, 0x19, 0x16, 0x6f, 0xd3, - 0x62, 0x56, 0x52, 0xd6, 0x10, 0xdf, 0x7d, 0x2b, 0xb5, 0xcd, 0x4c, 0x0e, - 0x55, 0x5b, 0x3c, 0xe7, 0xb3, 0xa6, 0x04, 0x65, 0xb6, 0xbb, 0xcb, 0x3f, - 0xa1, 0x5a, 0x48, 0x1a, 0xbd, 0xc9, 0x68, 0xe1, 0xb1, 0x41, 0x90, 0x29, - 0xf1, 0x8d, 0x4b, 0x75, 0x09, 0x0b, 0x9c, 0x88, 0x2b, 0xcb, 0x00, 0x19, - 0x4e, 0xec, 0xb8, 0xda, 0x5b, 0x05, 0x08, 0x64, 0x20, 0x67, 0x2a, 0xad, - 0xed, 0xf7, 0x2d, 0x5a, 0x94, 0x0b, 0x6b, 0xb4, 0xdf, 0xde, 0xa3, 0x56, - 0xc6, 0xdd, 0x16, 0xd9, 0xcf, 0x60, 0xa6, 0xc5, 0x8c, 0x48, 0x40, 0xd3, - 0x5a, 0xa7, 0x9c, 0xa0, 0x13, 0x45, 0x39, 0x79, 0xfc, 0x81, 0x49, 0x8b, - 0x17, 0xc4, 0xd8, 0x9d, 0x57, 0x17, 0xd7, 0x17, 0xa0, 0xc9, 0xfa, 0x34, - 0x9c, 0x8e, 0x6a, 0x25, 0xee, 0x8c, 0x62, 0x9f, 0x37, 0x5a, 0x44, 0xf8, - 0x95, 0x39, 0x16, 0x9b, 0xd5, 0x5e, 0xd7, 0x0b, 0x31, 0xf7, 0x82, 0x00, - 0x12, 0x8d, 0x97, 0x13, 0xf7, 0x26, 0xeb, 0xd6, 0xfb, 0xeb, 0x93, 0x19, - 0xe2, 0x2d, 0x08, 0xd7, 0x02, 0x6a, 0x86, 0xb6, 0x43, 0x0f, 0x05, 0xe2, - 0x34, 0x37, 0xa0, 0x6b, 0xf7, 0x64, 0xd6, 0x63, 0x32, 0xc2, 0x41, 0xad, - 0x6f, 0x96, 0x17, 0xe5, 0xaf, 0x05, 0x3f, 0xdc, 0xf1, 0xf5, 0xa1, 0xd8, - 0x75, 0x7d, 0x1f, 0xaa, 0xb4, 0x8d, 0x3f, 0x22, 0x46, 0xb0, 0x4f, 0xe6, - 0x22, 0xd9, 0xbd, 0x98, 0x81, 0x27, 0x31, 0x91, 0xdf, 0xcc, 0xaa, 0xc6, - 0x00, 0x70, 0x41, 0xf3, 0xe2, 0x02, 0x78, 0x20, 0xea, 0x86, 0xc1, 0xfb, - 0x80, 0xb2, 0x99, 0x40, 0x79, 0x5a, 0x59, 0x55, 0xea, 0x43, 0x14, 0xd7, - 0x2a, 0xe7, 0x7d, 0x1d, 0x68, 0x7f, 0xce, 0xef, 0x63, 0x88, 0x77, 0x87, - 0xc3, 0xf0, 0xd7, 0xf2, 0xc1, 0xf5, 0xa7, 0xa7, 0x47, 0x19, 0x72, 0x38, - 0x7e, 0x79, 0x5a, 0xa5, 0x05, 0x02, 0x41, 0x76, 0xf9, 0xae, 0xf7, 0x35, - 0x28, 0x66, 0x11, 0xc9, 0xef, 0x7b, 0x98, 0x78, 0x4b, 0x07, 0xef, 0xda, - 0x78, 0xdd, 0x3e, 0x9e, 0x9c, 0xc6, 0xfd, 0x87, 0xb2, 0xb9, 0xe4, 0x91, - 0x12, 0x68, 0xbc, 0x4e, 0x3f, 0x1c, 0x9d, 0xc5, 0x0d, 0xe1, 0x1b, 0x2a, - 0x1b, 0x16, 0xc1, 0xb8, 0xa2, 0x34, 0xe2, 0xd2, 0xa4, 0x53, 0x96, 0xc6, - 0x47, 0xfa, 0xef, 0x3d, 0x67, 0x41, 0xa6, 0x3e, 0x6f, 0x9e, 0x9c, 0x3c, - 0x5a, 0xc1, 0x41, 0x92, 0xf3, 0xed, 0x84, 0x7c, 0x20, 0xec, 0x7d, 0x5f, - 0xc4, 0xd0, 0xb2, 0xc0, 0x20, 0xb2, 0xc7, 0x43, 0x2d, 0xad, 0xea, 0x57, - 0x6b, 0xde, 0xd2, 0xc4, 0x73, 0x66, 0x5a, 0x47, 0x10, 0x3b, 0x97, 0x4f, - 0x97, 0x53, 0x16, 0x64, 0x0a, 0x00, 0x35, 0x26, 0x55, 0xab, 0x59, 0x53, - 0xca, 0x02, 0x88, 0x9b, 0xf5, 0x10, 0x16, 0xcc, 0x04, 0xa3, 0x93, 0xd2, - 0xf6, 0xb8, 0x15, 0x20, 0xe4, 0x82, 0x07, 0xe5, 0xd2, 0x4f, 0x49, 0xed, - 0xa8, 0xc6, 0xa0, 0xb2, 0xc4, 0x9b, 0x1e, 0xd4, 0xd6, 0xb4, 0xef, 0x34, - 0x41, 0x9a, 0xbe, 0xa7, 0x82, 0xa6, 0x0f, 0xcf, 0x2c, 0xed, 0x7e, 0x38, - 0x11, 0xdc, 0x31, 0xcb, 0x5d, 0xa8, 0x28, 0x07, 0x3d, 0x6f, 0x99, 0x3b, - 0xf8, 0x9a, 0xca, 0x5c, 0x73, 0x38, 0xad, 0x12, 0x6f, 0x55, 0xd9, 0xbb, - 0xf9, 0x36, 0xb0, 0x38, 0x4e, 0x4d, 0xa7, 0x58, 0xe9, 0x03, 0x68, 0x27, - 0xd1, 0x73, 0xc0, 0xfa, 0xc7, 0xdc, 0xad, 0x94, 0xf8, 0x74, 0xb7, 0xf0, - 0xa9, 0x15, 0x82, 0x69, 0x30, 0xd9, 0x29, 0x31, 0x62, 0xb0, 0x4a, 0x4b, - 0x14, 0x01, 0xd2, 0xf2, 0xe5, 0x24, 0x3d, 0xca, 0xc3, 0xf8, 0x17, 0xbc, - 0xee, 0xb1, 0xc3, 0xb9, 0x61, 0xa5, 0x26, 0x38, 0xfe, 0x6d, 0x67, 0xb0, - 0x1a, 0x50, 0xee, 0xb8, 0xa6, 0x5f, 0x8f, 0xde, 0xa2, 0xe7, 0x9f, 0xf5, - 0xbc, 0xaf, 0xc0, 0x2b, 0xe9, 0xd5, 0x9f, 0x6e, 0x7b, 0xc8, 0xc6, 0x4d, - 0x2e, 0xeb, 0x27, 0x37, 0x73, 0x72, 0x98, 0x18, 0x43, 0xe7, 0xa5, 0xa3, - 0xf9, 0x6e, 0x3d, 0x5b, 0x7d, 0x0e, 0x76, 0x5e, 0xea, 0x33, 0xc8, 0x9a, - 0xb3, 0x26, 0x10, 0x30, 0xd5, 0xc0, 0x63, 0x29, 0x57, 0x3c, 0x27, 0xce, - 0x34, 0x56, 0x28, 0x3b, 0xf3, 0x2d, 0x7f, 0x64, 0x7e, 0x81, 0x62, 0xbc, - 0x6e, 0x93, 0x0c, 0xec, 0xb4, 0x56, 0x1f, 0x80, 0x1d, 0x50, 0xe6, 0xd6, - 0x00, 0x5d, 0x99, 0x68, 0xa3, 0x5c, 0x79, 0xc1, 0x6f, 0xf5, 0x5a, 0x09, - 0x22, 0x33, 0xec, 0xfc, 0x89, 0x78, 0x0a, 0x5f, 0xde, 0x1b, 0x2a, 0xba, - 0x63, 0x2a, 0x2c, 0x3c, 0x13, 0xdd, 0xd7, 0xce, 0xc3, 0xa6, 0xf0, 0xb5, - 0x0e, 0x73, 0xaa, 0x8e, 0x0f, 0x2a, 0xb1, 0x11, 0xa9, 0x09, 0xeb, 0x56, - 0x2a, 0xad, 0xa0, 0x41, 0x7f, 0xb5, 0x41, 0x7f, 0x54, 0x9e, 0xe1, 0x15, - 0xda, 0x1c, 0x6b, 0xae, 0x7b, 0x58, 0x77, 0x62, 0x58, 0xb6, 0x85, 0x6f, - 0x9c, 0x8d, 0xee, 0x11, 0x2a, 0x47, 0xf1, 0xc0, 0xfc, 0xcc, 0x5d, 0x23, - 0x24, 0xc3, 0x79, 0xbf, 0xd6, 0x0e, 0x8b, 0x64, 0x57, 0xe9, 0x3d, 0x99, - 0xde, 0xa5, 0xa9, 0x47, 0x3d, 0xdf, 0xb5, 0xf3, 0x0a, 0x33, 0x5e, 0xf4, - 0x3c, 0xc1, 0x51, 0x05, 0x13, 0x02, 0xa2, 0xc4, 0x8e, 0xae, 0xdf, 0x67, - 0xe2, 0x04, 0xcf, 0x16, 0xdb, 0x3c, 0xfa, 0x0f, 0x5a, 0x0e, 0x7f, 0xaa, - 0xa4, 0x72, 0x6d, 0xec, 0x07, 0xe0, 0xe3, 0x6f, 0xb9, 0xe3, 0xdd, 0xb6, - 0x09, 0x0f, 0xa0, 0xc3, 0x2d, 0x29, 0xdb, 0xaf, 0xed, 0x90, 0xc7, 0xdf, - 0x3e, 0x36, 0x04, 0x61, 0xad, 0xc8, 0x23, 0xe1, 0x9e, 0x0c, 0x6c, 0x8a, - 0x40, 0xac, 0xe4, 0x4b, 0x3d, 0xd5, 0x7b, 0x27, 0x07, 0xc5, 0x37, 0xdb, - 0x32, 0xd6, 0x37, 0xe8, 0xd7, 0x63, 0xc4, 0x50, 0x7c, 0x2c, 0x4f, 0x49, - 0x21, 0x9b, 0x66, 0x8c, 0x6e, 0x4e, 0xf1, 0x5d, 0xfd, 0x63, 0x94, 0x66, - 0x3c, 0x9d, 0xa6, 0x9f, 0xc9, 0x14, 0x2f, 0x3b, 0xdc, 0xfd, 0xb2, 0xd0, - 0x41, 0x4d, 0xbb, 0x37, 0xa2, 0x3f, 0x8e, 0xd2, 0xda, 0x32, 0x2e, 0x3f, - 0x62, 0x33, 0x84, 0x31, 0xaf, 0x74, 0x7d, 0x11, 0xa4, 0x2f, 0x96, 0xef, - 0x7e, 0xe0, 0x57, 0xba, 0x3c, 0x0d, 0xa8, 0x80, 0x28, 0x66, 0x94, 0x6d, - 0x54, 0xed, 0x8a, 0xfc, 0xad, 0xe6, 0x14, 0xc0, 0x8f, 0x34, 0x00, 0x1c, - 0xde, 0x95, 0xfb, 0x8a, 0x5e, 0xea, 0x98, 0x40, 0xcd, 0xae, 0xed, 0xfd, - 0x35, 0xc0, 0x0c, 0xd0, 0x47, 0x61, 0x3c, 0x80, 0x02, 0xcb, 0x64, 0xb0, - 0x85, 0xfb, 0x1c, 0x9b, 0x7c, 0x6b, 0x4f, 0xae, 0xeb, 0x4e, 0xf0, 0xe5, - 0x75, 0xc7, 0x80, 0x3f, 0x2d, 0x93, 0x63, 0x90, 0x8a, 0x9f, 0xf8, 0x99, - 0x00, 0x8c, 0x67, 0x8b, 0x92, 0x72, 0xee, 0x00, 0x1e, 0x15, 0xf4, 0x14, - 0xe8, 0xf3, 0xd0, 0xae, 0x6a, 0xf4, 0xd7, 0x36, 0x60, 0x5c, 0x60, 0xff, - 0x7b, 0x31, 0x3a, 0x18, 0x72, 0xb3, 0x46, 0x28, 0x0f, 0x46, 0x9d, 0x3c, - 0xbe, 0x7a, 0xee, 0x16, 0x01, 0xc8, 0xa3, 0x09, 0x7a, 0xdd, 0x77, 0x38, - 0x63, 0xc6, 0x3f, 0x17, 0x28, 0xe0, 0x25, 0x24, 0xad, 0x2b, 0xd0, 0xf1, - 0x6a, 0x44, 0x9b, 0x8b, 0x25, 0x4d, 0xb9, 0x41, 0x5d, 0x86, 0x1d, 0x67, - 0xaa, 0xc8, 0x0d, 0x6e, 0x62, 0x9c, 0x7f, 0x49, 0xc2, 0x7a, 0x71, 0x86, - 0x13, 0xb4, 0x52, 0xbe, 0xd8, 0x64, 0x01, 0xcf, 0x0b, 0x25, 0xf9, 0x90, - 0x50, 0x54, 0x47, 0x8c, 0xc1, 0x2b, 0xc1, 0x32, 0xea, 0xe0, 0x30, 0x49, - 0xed, 0xa2, 0x67, 0xb8, 0xb5, 0x25, 0x5d, 0x23, 0x46, 0xe6, 0x65, 0xb1, - 0x98, 0xbc, 0x2c, 0x5e, 0x69, 0x8d, 0x91, 0xb2, 0xdd, 0x35, 0xb9, 0x43, - 0xfa, 0x04, 0xb4, 0x42, 0x01, 0x40, 0xf2, 0x8f, 0x10, 0x82, 0x3e, 0x59, - 0x7b, 0xd3, 0xa0, 0x24, 0xac, 0x27, 0x01, 0x4e, 0x2c, 0xdc, 0x44, 0x22, - 0xe9, 0xc3, 0x98, 0xf4, 0x0d, 0x61, 0x38, 0xb1, 0x69, 0x46, 0xf8, 0xc4, - 0xd4, 0x08, 0x1f, 0x09, 0xba, 0xa0, 0x48, 0x8d, 0xf1, 0x28, 0x9e, 0xfc, - 0x12, 0x73, 0x3c, 0x6d, 0xfe, 0x8b, 0xf4, 0x7f, 0x00, 0x19, 0xfa, 0x57, - 0x2d, 0x11, 0x40, 0xef, 0xae, 0x7b, 0xd5, 0x4e, 0x2a, 0x1e, 0x2c, 0xf7, - 0x6c, 0xea, 0x21, 0xcb, 0xd1, 0x61, 0x22, 0xdf, 0x64, 0xcd, 0xa1, 0x1a, - 0x86, 0x6d, 0x66, 0x17, 0xab, 0x46, 0xb5, 0x5b, 0xbd, 0x55, 0x4a, 0x02, - 0xe5, 0xd3, 0xdc, 0x38, 0xae, 0xfb, 0x91, 0x86, 0xe0, 0x30, 0x38, 0x7c, - 0x53, 0x9d, 0x5b, 0x3c, 0xb4, 0x71, 0x03, 0xcc, 0xe5, 0xc5, 0x05, 0xe3, - 0x14, 0x93, 0xc3, 0x78, 0x09, 0xf4, 0x10, 0x13, 0xff, 0xc1, 0x73, 0x8a, - 0x73, 0x4c, 0x75, 0x11, 0x3c, 0x4c, 0x09, 0xf1, 0xe8, 0x20, 0x2c, 0x20, - 0xfd, 0x7c, 0x3a, 0x70, 0xe0, 0xb1, 0x1a, 0xf0, 0x00, 0x7d, 0xc9, 0x7f, - 0x07, 0x00, 0x92, 0x1b, 0xb9, 0xa6, 0x31, 0xc1, 0x34, 0x6c, 0x01, 0xd1, - 0xb0, 0x86, 0xf7, 0x78, 0xdb, 0x3b, 0x01, 0x94, 0xf2, 0x02, 0xa3, 0xd8, - 0xfb, 0x55, 0x91, 0xe8, 0xb7, 0xc9, 0x12, 0xe5, 0xb0, 0xe1, 0x5a, 0x84, - 0x61, 0x0b, 0xa0, 0x78, 0x0c, 0x5a, 0x4e, 0x67, 0xfa, 0xc9, 0x38, 0xe5, - 0x8d, 0xce, 0x86, 0x0b, 0x92, 0x3b, 0x00, 0xbc, 0x6c, 0xea, 0xa3, 0xe5, - 0x92, 0x51, 0xfd, 0x34, 0x5d, 0x10, 0xfc, 0xbd, 0xc9, 0x23, 0x0c, 0xf0, - 0x27, 0x63, 0xb1, 0x66, 0x3d, 0x9d, 0x16, 0x38, 0x8a, 0x19, 0x25, 0x9a, - 0x90, 0x47, 0x3d, 0xb0, 0x31, 0x37, 0xc4, 0x14, 0x84, 0x86, 0x45, 0xf2, - 0xfe, 0xfb, 0x75, 0x91, 0x49, 0xe0, 0xde, 0x5a, 0x92, 0x9d, 0xad, 0x33, - 0x82, 0xac, 0xa1, 0xdb, 0x6b, 0x57, 0x78, 0x35, 0xe7, 0x88, 0x9d, 0xb6, - 0xd5, 0xa7, 0x8f, 0xef, 0x3e, 0x46, 0x2c, 0x6a, 0x6c, 0x4a, 0xfe, 0x7b, - 0xd2, 0x35, 0xd7, 0xf5, 0x06, 0xe1, 0xc2, 0x9d, 0xbd, 0xb3, 0xc9, 0xb4, - 0x28, 0xc8, 0x12, 0xe5, 0xda, 0x57, 0xf5, 0x7f, 0x0f, 0x07, 0xfe, 0xc0, - 0x27, 0xc7, 0x9b, 0xb6, 0x13, 0xaa, 0x88, 0xa6, 0x38, 0x85, 0x6e, 0xd3, - 0xea, 0x02, 0x94, 0xaf, 0x76, 0xa6, 0x24, 0x37, 0x86, 0x4e, 0xa7, 0xde, - 0xb3, 0x24, 0xa7, 0x4b, 0x27, 0x04, 0x87, 0x25, 0x0e, 0xc9, 0x6c, 0x40, - 0xb0, 0x2c, 0xe7, 0x37, 0xc0, 0xd9, 0x5e, 0x5f, 0x8e, 0x7f, 0xd4, 0xf4, - 0xdf, 0x55, 0xc1, 0xb3, 0x48, 0x38, 0x79, 0xa3, 0x56, 0x19, 0x02, 0x12, - 0x7c, 0xa8, 0x20, 0x2a, 0x1e, 0x79, 0x69, 0x1a, 0xd5, 0x61, 0x79, 0x39, - 0xb6, 0xd8, 0xac, 0x49, 0xb6, 0x04, 0xe4, 0xf0, 0x5f, 0x2e, 0x3c, 0xae, - 0x05, 0x70, 0x5c, 0x60, 0x9a, 0xf9, 0x42, 0xf4, 0x89, 0xe6, 0xd3, 0x23, - 0x99, 0x7a, 0x8f, 0x55, 0xeb, 0xf5, 0xc9, 0x99, 0xfb, 0x7f, 0x78, 0x2b, - 0x16, 0x88, 0x69, 0x9f, 0xf7, 0x6b, 0x30, 0x27, 0xe4, 0xe2, 0x08, 0x32, - 0xa1, 0xec, 0xe0, 0xb1, 0x3a, 0xef, 0xc9, 0xa9, 0x31, 0x06, 0xf2, 0x38, - 0x84, 0x05, 0x6e, 0xa8, 0xda, 0xbd, 0x2d, 0xf9, 0x11, 0x35, 0x7f, 0x97, - 0x6f, 0xa1, 0xf9, 0xb5, 0x41, 0xd5, 0xb9, 0x75, 0x73, 0x49, 0xce, 0x0d, - 0x8f, 0x04, 0xcf, 0xb3, 0x6c, 0x89, 0xb0, 0x45, 0x16, 0xf8, 0x15, 0x1b, - 0x72, 0x6e, 0x51, 0xf9, 0x7d, 0x6e, 0x94, 0xa5, 0xba, 0x5d, 0xd3, 0xab, - 0xcd, 0xf8, 0x32, 0xd5, 0x14, 0xc9, 0x73, 0x37, 0xaf, 0x9c, 0x00, 0xf2, - 0x8d, 0x85, 0x7e, 0x45, 0xec, 0xa2, 0x22, 0x07, 0xed, 0xc2, 0xfa, 0x11, - 0x0b, 0xdc, 0xf9, 0xde, 0x1e, 0x92, 0x96, 0xe0, 0x5a, 0x42, 0x3c, 0xa5, - 0xce, 0x07, 0x9f, 0x8f, 0xbe, 0x79, 0x3d, 0xa7, 0x8d, 0xad, 0xea, 0x06, - 0x73, 0xbe, 0xfe, 0x7a, 0xde, 0xec, 0x74, 0x28, 0xf8, 0xa7, 0x22, 0x92, - 0x31, 0x50, 0xad, 0xe6, 0x9a, 0x3f, 0xc7, 0xbb, 0x4f, 0xca, 0xaf, 0xef, - 0xf5, 0x16, 0x51, 0x03, 0x00, 0xa4, 0x4a, 0x4f, 0xf6, 0x62, 0x21, 0x9e, - 0x12, 0xb7, 0x17, 0xed, 0xc4, 0xec, 0x04, 0xa7, 0x2d, 0x82, 0xb1, 0x49, - 0x96, 0x1f, 0xc4, 0xbf, 0x2a, 0x9d, 0xe6, 0xbc, 0x9e, 0xf1, 0x15, 0xfb, - 0x80, 0xcc, 0xbe, 0xc8, 0x03, 0x5f, 0xc2, 0xa0, 0xd6, 0x1c, 0x24, 0xc8, - 0x1e, 0xa9, 0x5d, 0x18, 0x6e, 0x62, 0xa1, 0x51, 0x90, 0x91, 0x02, 0xf1, - 0xa2, 0xc3, 0x11, 0xbf, 0xd0, 0x88, 0x7a, 0x5c, 0x60, 0x0d, 0x15, 0x54, - 0xf5, 0xad, 0x03, 0xc4, 0xf9, 0x82, 0x8f, 0xed, 0x25, 0x30, 0x90, 0x24, - 0x7b, 0xcf, 0xbc, 0x64, 0xad, 0x47, 0x0e, 0xaa, 0x89, 0x22, 0xf0, 0xf9, - 0x5e, 0x9e, 0x80, 0xb0, 0x6a, 0xf1, 0x62, 0x2e, 0x8d, 0xeb, 0x63, 0x6e, - 0x6c, 0xab, 0x34, 0xba, 0xfb, 0x7d, 0xf3, 0xd0, 0xda, 0xcf, 0x2a, 0x9b, - 0x15, 0x4d, 0xcc, 0xad, 0xa0, 0x49, 0x0a, 0x50, 0x3d, 0x8c, 0xc2, 0x92, - 0xd1, 0x77, 0xe8, 0xf1, 0xa1, 0x1e, 0xb0, 0x5a, 0x68, 0x5d, 0xfe, 0x42, - 0x5e, 0x4b, 0x8a, 0x2d, 0xe6, 0xf7, 0x5f, 0x53, 0x26, 0xd3, 0x8a, 0x83, - 0x57, 0x87, 0x6b, 0xc1, 0x22, 0x0d, 0xb9, 0x22, 0x33, 0xe8, 0x79, 0x79, - 0x5f, 0x84, 0xbe, 0x4e, 0x76, 0x0d, 0x70, 0xe4, 0x4f, 0x8b, 0xe5, 0x36, - 0x2a, 0xcb, 0x2b, 0xe4, 0xa4, 0xc8, 0xfb, 0x4d, 0xaa, 0x52, 0xc0, 0x88, - 0xa0, 0x15, 0x1f, 0x3c, 0xd4, 0x53, 0xc6, 0x72, 0xbe, 0xe2, 0x5c, 0x6f, - 0x67, 0x7b, 0xbb, 0x43, 0x3c, 0x11, 0xd7, 0x08, 0x5a, 0xe5, 0x37, 0x78, - 0xc7, 0xc9, 0x6f, 0x38, 0xe1, 0xbb, 0x2a, 0xc7, 0x06, 0xc6, 0xbe, 0x2f, - 0xf9, 0xbe, 0x1d, 0xb3, 0xa8, 0xc8, 0xe1, 0x4c, 0xf1, 0xc2, 0xb4, 0xd1, - 0xaa, 0x64, 0x0c, 0x31, 0x30, 0xa5, 0xc0, 0xcd, 0x83, 0x56, 0x08, 0x53, - 0x95, 0x6a, 0x04, 0xaa, 0xae, 0x50, 0xa7, 0x93, 0x37, 0x66, 0x7a, 0x50, - 0x58, 0x1b, 0xaf, 0x95, 0x32, 0xc9, 0x46, 0xfd, 0x29, 0xf8, 0xd1, 0x76, - 0xa6, 0x4f, 0x57, 0x18, 0x59, 0xd4, 0xcf, 0x3e, 0x86, 0xb8, 0xd5, 0xc5, - 0xab, 0xbf, 0xf9, 0xa1, 0x02, 0xfc, 0x76, 0xb8, 0x07, 0x67, 0xa7, 0x2a, - 0x75, 0x09, 0x99, 0x9d, 0x0f, 0x71, 0x51, 0x88, 0xf5, 0xaa, 0xb3, 0x93, - 0x45, 0xf9, 0x99, 0x08, 0xa1, 0xe2, 0xc9, 0x6e, 0x08, 0x4d, 0xed, 0x82, - 0xe4, 0xe1, 0x36, 0x3f, 0x16, 0x33, 0xb9, 0x2e, 0x7b, 0x1c, 0x3c, 0xda, - 0x6e, 0xdb, 0xf8, 0xc3, 0x30, 0x6b, 0x57, 0x2d, 0x17, 0x64, 0xda, 0xf5, - 0x21, 0x9b, 0x4c, 0xd9, 0x16, 0xa9, 0x47, 0xed, 0xb5, 0x5b, 0xe0, 0xe0, - 0x39, 0xb4, 0x63, 0x03, 0xa2, 0x8e, 0xc6, 0x84, 0xb6, 0x90, 0xce, 0x36, - 0x0c, 0x25, 0x72, 0xb4, 0x5b, 0xe1, 0xf6, 0x24, 0x33, 0x28, 0x6e, 0xc8, - 0xe2, 0x79, 0xb6, 0xe4, 0x34, 0xc4, 0x9f, 0x70, 0xaf, 0x0e, 0xff, 0xee, - 0x00, 0x61, 0xcf, 0x5f, 0x44, 0xfd, 0x25, 0xc2, 0xc9, 0x58, 0xac, 0x01, - 0x95, 0x94, 0x2b, 0xf9, 0xfa, 0xaa, 0x76, 0xad, 0xe5, 0x90, 0xa2, 0x59, - 0x1c, 0xc9, 0xe9, 0x59, 0xb4, 0x49, 0xfe, 0x44, 0x4b, 0x67, 0x22, 0x12, - 0xa6, 0x3a, 0x12, 0x3e, 0x98, 0xe5, 0xc2, 0x20, 0xba, 0x59, 0x7b, 0x42, - 0x58, 0x36, 0xec, 0xad, 0x30, 0x18, 0x3b, 0x7f, 0x71, 0xfd, 0x14, 0x03, - 0x41, 0xdd, 0xd1, 0xbe, 0x5b, 0x80, 0xfa, 0xcc, 0x1d, 0x38, 0x7b, 0x2e, - 0x8c, 0xaa, 0x63, 0x90, 0x53, 0x7b, 0xd9, 0xdc, 0x30, 0x7c, 0xf5, 0x08, - 0xa2, 0xb0, 0xe1, 0x78, 0xd5, 0x41, 0x55, 0x09, 0x4f, 0x2c, 0x82, 0xc1, - 0x62, 0x36, 0xc9, 0xa7, 0x81, 0x35, 0x8d, 0x4c, 0xf6, 0xed, 0xa7, 0x7a, - 0x01, 0x16, 0x99, 0x2c, 0xb2, 0xff, 0x33, 0x98, 0x11, 0x97, 0x83, 0x60, - 0x54, 0xa9, 0x88, 0x80, 0x58, 0xa4, 0xad, 0x8b, 0x39, 0x58, 0x56, 0x84, - 0x2e, 0x48, 0x3a, 0xa4, 0xed, 0x47, 0xbc, 0x6e, 0xaa, 0x0e, 0xc2, 0xb4, - 0xc5, 0x66, 0x3c, 0xb0, 0x86, 0x92, 0x47, 0x34, 0xc6, 0x3b, 0xd6, 0x6f, - 0xac, 0xb8, 0xab, 0xfd, 0x02, 0x9e, 0x3d, 0x75, 0xec, 0x9c, 0x06, 0xef, - 0xdd, 0xcc, 0x33, 0x89, 0x65, 0xd0, 0xf4, 0x0c, 0x49, 0x36, 0xb6, 0xb5, - 0xf4, 0x74, 0x30, 0x43, 0xab, 0x4c, 0x38, 0x7c, 0xd8, 0x3b, 0x73, 0x88, - 0x8c, 0x61, 0x7e, 0x31, 0x4d, 0x80, 0xae, 0x38, 0x31, 0xcb, 0xc4, 0x42, - 0x82, 0x26, 0xf0, 0x4d, 0x03, 0x58, 0x1e, 0x4c, 0xd3, 0x03, 0x40, 0xcb, - 0x6c, 0x50, 0xac, 0xbd, 0x6c, 0x5b, 0x4b, 0xd2, 0x64, 0xe3, 0x33, 0xcd, - 0x68, 0x51, 0x39, 0x3f, 0x90, 0x06, 0x66, 0xd1, 0x2e, 0x71, 0x7d, 0xcc, - 0x55, 0xea, 0x35, 0x2a, 0x57, 0xc5, 0x54, 0x47, 0x33, 0x12, 0xb3, 0x02, - 0xe9, 0x38, 0xad, 0xd1, 0x98, 0x46, 0x07, 0x3c, 0x13, 0x5f, 0xbb, 0xed, - 0x40, 0x67, 0x9e, 0x36, 0xe0, 0xb3, 0x4a, 0xeb, 0x7b, 0x8f, 0xbc, 0xfb, - 0x53, 0x93, 0x50, 0xea, 0x8a, 0x5c, 0x76, 0x8b, 0x0d, 0x14, 0x26, 0xf8, - 0xe8, 0x06, 0x90, 0x9a, 0xa2, 0x1c, 0x5e, 0xbb, 0x0b, 0x8c, 0x5f, 0x54, - 0x23, 0x94, 0xf4, 0xc7, 0x04, 0xa4, 0x74, 0x24, 0x35, 0xc6, 0xa2, 0xac, - 0xaf, 0xfc, 0x91, 0x8f, 0xfa, 0xe4, 0xfb, 0x48, 0x36, 0x95, 0x32, 0xdb, - 0xce, 0xd6, 0x90, 0xf2, 0x83, 0x60, 0x1c, 0xae, 0x01, 0x06, 0x01, 0xbe, - 0x33, 0xa2, 0x83, 0xc7, 0x8a, 0x4d, 0xfd, 0xbf, 0xcc, 0x17, 0x86, 0x7e, - 0x45, 0xdf, 0xad, 0x69, 0xbc, 0x18, 0xf7, 0x26, 0xb5, 0x04, 0xde, 0x43, - 0x30, 0x89, 0x30, 0xac, 0x66, 0x54, 0xf5, 0xd6, 0xad, 0x29, 0xd1, 0x93, - 0xb4, 0x09, 0x33, 0x9d, 0xec, 0x9c, 0x55, 0xe7, 0x83, 0x40, 0xce, 0xab, - 0x20, 0xa8, 0x30, 0x6b, 0x6e, 0x8e, 0x6e, 0x0d, 0xec, 0xe1, 0xfd, 0x00, - 0xeb, 0x26, 0x88, 0x20, 0x91, 0x44, 0x52, 0x72, 0xe1, 0x45, 0x23, 0x4b, - 0x31, 0x58, 0xed, 0x68, 0xc5, 0x7c, 0x80, 0x21, 0x48, 0x9b, 0xc6, 0x1a, - 0x5a, 0x28, 0xc5, 0xac, 0x4d, 0xec, 0x44, 0x3e, 0x70, 0xa9, 0xe1, 0x9d, - 0x14, 0x85, 0x25, 0x3f, 0x60, 0x34, 0x9b, 0x10, 0xc2, 0x8f, 0xdd, 0xfb, - 0x11, 0x31, 0x8d, 0x9b, 0xed, 0xde, 0x5e, 0x7e, 0x52, 0x84, 0x06, 0x0f, - 0x5d, 0x22, 0x1d, 0x06, 0x13, 0x9a, 0xba, 0x40, 0xe8, 0x11, 0xe4, 0x48, - 0x74, 0x86, 0x30, 0x6c, 0x98, 0x40, 0xa2, 0xe7, 0xfa, 0x86, 0x7f, 0x73, - 0x35, 0x11, 0xaa, 0x0b, 0x8d, 0x3f, 0x80, 0x95, 0x68, 0x48, 0xf6, 0x9d, - 0x55, 0x19, 0xd7, 0x44, 0x80, 0x03, 0xf9, 0x96, 0xda, 0x4d, 0x1b, 0x2f, - 0x7f, 0x0d, 0xaf, 0x3f, 0x27, 0x6f, 0x60, 0x4c, 0xb7, 0xae, 0xf2, 0x81, - 0x98, 0x2b, 0x5f, 0xfc, 0xba, 0x37, 0x04, 0x20, 0x72, 0x6a, 0x90, 0xdf, - 0x23, 0x09, 0x16, 0x5a, 0x9f, 0x40, 0xf7, 0x5a, 0x10, 0x6b, 0xa6, 0xba, - 0xcf, 0xf4, 0x84, 0x92, 0xc5, 0xfb, 0x0e, 0x98, 0xae, 0x32, 0x43, 0x8b, - 0x55, 0x6f, 0xf6, 0x32, 0x1f, 0x7d, 0x53, 0xc1, 0xf8, 0x8a, 0xf6, 0xa7, - 0x64, 0x76, 0xdd, 0xaa, 0x0b, 0xea, 0xfa, 0x00, 0xac, 0xf2, 0x40, 0x57, - 0xfe, 0xe7, 0x24, 0xe4, 0x5f, 0x99, 0xce, 0xec, 0xef, 0xc2, 0xe5, 0x7d, - 0x77, 0x35, 0x48, 0x72, 0xb6, 0xdb, 0x05, 0xe8, 0x62, 0xf5, 0x32, 0x19, - 0x9a, 0xc0, 0x10, 0x68, 0x63, 0xa3, 0xf0, 0x01, 0x0d, 0xef, 0xc6, 0x02, - 0x36, 0x52, 0x33, 0x5a, 0x3f, 0xb3, 0xe0, 0x97, 0x80, 0xa9, 0xf5, 0xda, - 0x54, 0x1b, 0xb3, 0x8b, 0xb0, 0x2e, 0x62, 0x90, 0x99, 0xff, 0x36, 0x4c, - 0xa1, 0xf1, 0xf1, 0xc0, 0x1f, 0xc7, 0xdf, 0xcd, 0x1f, 0x20, 0x6d, 0xf3, - 0x12, 0x56, 0x19, 0x1e, 0xe5, 0x04, 0x89, 0x95, 0x56, 0x79, 0x08, 0xb1, - 0xd4, 0xed, 0x91, 0xce, 0xd7, 0x22, 0x01, 0x7e, 0x0c, 0xda, 0x05, 0x2a, - 0xcb, 0x60, 0xcb, 0x26, 0xc8, 0x4b, 0x63, 0xf9, 0xf5, 0x15, 0x4a, 0xd4, - 0xc0, 0x36, 0xe5, 0x98, 0x7c, 0xef, 0x08, 0x7c, 0xd3, 0x76, 0x7b, 0x10, - 0x55, 0x1e, 0x79, 0x11, 0x36, 0x17, 0x4c, 0x9d, 0xb0, 0xcf, 0x0e, 0x26, - 0xfc, 0x80, 0x43, 0xed, 0x6b, 0x24, 0x4a, 0x26, 0xe6, 0xf9, 0x14, 0x5a, - 0x85, 0xdd, 0xa6, 0x0e, 0xad, 0x22, 0x32, 0x29, 0x7a, 0x6d, 0xf7, 0x0c, - 0x23, 0x8c, 0xdf, 0x9b, 0x73, 0xba, 0xb8, 0x6d, 0x32, 0x77, 0x61, 0x0f, - 0x63, 0x69, 0x8f, 0xbb, 0x31, 0xf7, 0xcf, 0xb4, 0x8f, 0x7d, 0xae, 0x6d, - 0x8f, 0x19, 0x45, 0xee, 0x63, 0x64, 0x5c, 0xd6, 0x30, 0x8d, 0xcb, 0x42, - 0xb1, 0x43, 0xbb, 0x1f, 0x13, 0x50, 0x47, 0x44, 0x5b, 0xf1, 0x94, 0xfc, - 0x7c, 0xf6, 0xd8, 0xe5, 0xd1, 0x16, 0x91, 0x3d, 0x44, 0xc2, 0x92, 0x40, - 0xe6, 0x85, 0x15, 0x05, 0x59, 0xdb, 0x27, 0x65, 0x5f, 0x31, 0xe9, 0x5a, - 0xed, 0x88, 0x73, 0xb8, 0x78, 0xa0, 0x2b, 0xc6, 0x08, 0x5c, 0x9f, 0xa5, - 0xfe, 0xc9, 0x25, 0x18, 0xfd, 0x67, 0x8b, 0x8e, 0x84, 0xee, 0xb6, 0x9f, - 0x8d, 0xcb, 0xaa, 0x86, 0xd2, 0x4a, 0x3b, 0x2c, 0x0f, 0x32, 0x3c, 0xcd, - 0x3b, 0x21, 0xdd, 0x9c, 0x33, 0x54, 0xf2, 0x43, 0x13, 0xf0, 0xbe, 0xaa, - 0xd2, 0xae, 0x7e, 0x7a, 0xd1, 0x16, 0xd2, 0x1f, 0xe8, 0x38, 0xc5, 0xad, - 0xa8, 0xe8, 0xa7, 0x46, 0xb7, 0xed, 0x0a, 0x4f, 0xb9, 0x85, 0x5c, 0x23, - 0x56, 0xb8, 0x38, 0xb5, 0x57, 0x1d, 0x0f, 0xcb, 0x1e, 0x3e, 0x40, 0xcf, - 0x85, 0x36, 0xeb, 0xe7, 0x31, 0xea, 0xa9, 0xab, 0xe0, 0x66, 0x57, 0x78, - 0x8a, 0x01, 0xfc, 0x50, 0x93, 0xdc, 0x30, 0x09, 0x1d, 0x5c, 0xc1, 0xfe, - 0xc0, 0x5f, 0xed, 0xb8, 0x9b, 0x93, 0xce, 0xff, 0x98, 0xca, 0xc8, 0x78, - 0xb0, 0x4e, 0xa2, 0x14, 0x63, 0xd6, 0x68, 0x43, 0x8e, 0x16, 0xf7, 0x2c, - 0x05, 0x34, 0x46, 0x27, 0xea, 0x4e, 0x16, 0x9d, 0xee, 0x83, 0xa7, 0x94, - 0x95, 0x5c, 0x9c, 0xb5, 0x7b, 0x30, 0xab, 0x35, 0xdb, 0x95, 0x4e, 0x92, - 0x06, 0xec, 0x1b, 0xfe, 0x50, 0x7a, 0x23, 0xe5, 0xb3, 0x7d, 0x43, 0xd1, - 0xa0, 0xd1, 0x96, 0xee, 0xd9, 0xe9, 0x3b, 0xe9, 0xea, 0xb0, 0x85, 0xfb, - 0xe2, 0xe5, 0x03, 0xef, 0x1b, 0x66, 0x70, 0xba, 0xeb, 0x03, 0x05, 0x04, - 0x1e, 0x98, 0x6f, 0xea, 0xf8, 0xf4, 0xda, 0xad, 0xe2, 0xff, 0x8c, 0x2f, - 0x4c, 0x54, 0x8e, 0xe1, 0x97, 0xa3, 0xa6, 0xa8, 0xb0, 0xb8, 0x99, 0x00, - 0x9e, 0xdd, 0x13, 0x99, 0x5c, 0xae, 0xfe, 0x6c, 0x39, 0x75, 0xf6, 0x4b, - 0xff, 0xa3, 0xa2, 0x8d, 0xda, 0xac, 0x3e, 0x87, 0x91, 0x12, 0x54, 0x97, - 0x63, 0x2f, 0xea, 0x63, 0x0c, 0x88, 0xe4, 0x7d, 0xc3, 0x8a, 0x3a, 0x11, - 0x7b, 0xf6, 0x96, 0x71, 0x29, 0x48, 0x88, 0x1a, 0x66, 0x68, 0x95, 0xd1, - 0xa6, 0xd7, 0xd9, 0xf5, 0x90, 0x3a, 0xf7, 0xf1, 0xd8, 0xcb, 0xa4, 0x79, - 0x22, 0x03, 0x78, 0xb6, 0x13, 0x57, 0x73, 0x49, 0x94, 0xd9, 0xe6, 0x1f, - 0x4c, 0x68, 0x4a, 0x26, 0x72, 0x20, 0x8a, 0xd4, 0x45, 0x8f, 0xfa, 0xb2, - 0x55, 0xd5, 0x07, 0xdf, 0x2e, 0xd3, 0x33, 0x1c, 0xb5, 0x16, 0x4d, 0xc9, - 0x78, 0xea, 0x8d, 0xc5, 0x97, 0x5c, 0x58, 0x0d, 0x98, 0x4d, 0x28, 0x70, - 0x3d, 0x39, 0xe4, 0xea, 0xc0, 0xfb, 0x5c, 0x22, 0xf8, 0x12, 0x19, 0xbe, - 0x4e, 0x89, 0xdc, 0x22, 0xdf, 0xda, 0x8b, 0x32, 0x03, 0xb0, 0x63, 0x16, - 0xe0, 0x78, 0x11, 0xba, 0x4c, 0xc9, 0x71, 0x6b, 0xed, 0x42, 0x8a, 0x64, - 0x71, 0x0b, 0x36, 0xc6, 0x80, 0xe3, 0xf2, 0x2c, 0xb5, 0x56, 0xdd, 0xe5, - 0x37, 0xe0, 0xa1, 0x0f, 0x31, 0x21, 0xd3, 0x47, 0x01, 0x66, 0xa1, 0x14, - 0xb5, 0x18, 0xe5, 0xe7, 0xb1, 0x4d, 0x3e, 0xc3, 0x1b, 0xa6, 0x9c, 0x9e, - 0x62, 0xdb, 0x5b, 0x54, 0xf3, 0xb6, 0x90, 0x45, 0x8a, 0x35, 0xfc, 0x2e, - 0x60, 0xa1, 0x46, 0xce, 0x2e, 0xa6, 0xf4, 0x98, 0x48, 0xcb, 0xd2, 0x76, - 0x57, 0xd0, 0xc5, 0xf3, 0x52, 0x4a, 0x40, 0x6d, 0x37, 0x83, 0xae, 0x25, - 0xa2, 0xd3, 0xae, 0xcc, 0x69, 0x20, 0xdc, 0x18, 0x06, 0x7f, 0x52, 0xa4, - 0xb1, 0x42, 0x78, 0x58, 0xbc, 0x0e, 0x36, 0x16, 0x84, 0x13, 0x03, 0xb6, - 0x88, 0xdf, 0x05, 0x30, 0x2d, 0x89, 0x21, 0x08, 0xa9, 0x48, 0xb8, 0xd4, - 0xb7, 0x25, 0x41, 0x56, 0xfc, 0x40, 0x8d, 0x44, 0xe7, 0xfe, 0x41, 0xcc, - 0xfa, 0x9e, 0x46, 0xcf, 0x58, 0xe9, 0xaf, 0x6a, 0x20, 0x8d, 0xc8, 0x75, - 0x28, 0x8e, 0xdb, 0x59, 0xa2, 0xdf, 0xf0, 0xa2, 0xf1, 0xd9, 0x00, 0x43, - 0xcd, 0x94, 0xcb, 0xba, 0x00, 0x0f, 0x1d, 0xb4, 0x38, 0xe2, 0x73, 0x28, - 0x79, 0x08, 0x91, 0xb8, 0xd4, 0x93, 0xca, 0xb0, 0x75, 0x10, 0x99, 0x32, - 0xd1, 0x4e, 0xca, 0xd4, 0x57, 0x8d, 0xba, 0x9b, 0x1f, 0x40, 0x51, 0xa8, - 0x27, 0xc3, 0x7c, 0x87, 0x20, 0x24, 0x77, 0x62, 0xca, 0xa5, 0xdd, 0x46, - 0xa6, 0x4f, 0x26, 0x5f, 0x3c, 0x15, 0xf4, 0x75, 0x61, 0x87, 0x62, 0xb0, - 0xba, 0x01, 0xa5, 0xcc, 0x98, 0xc4, 0x01, 0x42, 0x45, 0x83, 0xfa, 0x41, - 0xaa, 0x84, 0xd9, 0x40, 0x86, 0x8a, 0xb4, 0x03, 0x05, 0x9d, 0x59, 0x03, - 0x17, 0xd4, 0x53, 0x3d, 0x51, 0x24, 0x08, 0x1c, 0x36, 0xd1, 0xe2, 0xe3, - 0x2a, 0xe1, 0xc8, 0xeb, 0x0b, 0x9e, 0x29, 0xce, 0x1a, 0x0c, 0xe9, 0x34, - 0x97, 0xb1, 0x04, 0x53, 0xb4, 0xd4, 0xaa, 0xd7, 0x3c, 0xbd, 0x5d, 0x32, - 0x37, 0xd7, 0xcf, 0x5e, 0x1c, 0x66, 0x51, 0xb0, 0xe1, 0xa8, 0x12, 0xb4, - 0x2e, 0x63, 0x07, 0x87, 0xb9, 0x0d, 0xc0, 0xe1, 0x5b, 0xc7, 0xf8, 0x1f, - 0x96, 0x7e, 0xae, 0x89, 0x57, 0x4d, 0xde, 0x05, 0xcd, 0x25, 0x43, 0x5e, - 0x7c, 0x48, 0xef, 0xa6, 0x9c, 0x00, 0xbf, 0x11, 0xd8, 0x88, 0x2e, 0x6d, - 0x1a, 0x33, 0xa9, 0xac, 0xa8, 0x75, 0xa3, 0xf5, 0x13, 0x23, 0x75, 0x5a, - 0xc7, 0x66, 0xc7, 0x30, 0xc9, 0xc0, 0x18, 0xcb, 0xc1, 0x90, 0x86, 0xb9, - 0x42, 0xde, 0x3e, 0x3c, 0x3c, 0x6d, 0x74, 0x04, 0xe5, 0x4d, 0x62, 0xc9, - 0x2c, 0xb7, 0x22, 0x54, 0x60, 0x8f, 0xa7, 0xc3, 0x19, 0xac, 0xcc, 0xba, - 0x78, 0x9d, 0x41, 0x12, 0x31, 0x57, 0xf0, 0x55, 0x65, 0xfb, 0x98, 0xf6, - 0xdf, 0x03, 0x54, 0x34, 0x12, 0xdb, 0xa3, 0x1c, 0x74, 0xea, 0x43, 0x40, - 0xad, 0xff, 0x4e, 0x51, 0x50, 0x8a, 0x6d, 0x9e, 0x66, 0x88, 0x06, 0xa1, - 0x94, 0x06, 0x2b, 0x27, 0xef, 0x7e, 0x52, 0x1e, 0x64, 0x6f, 0xa5, 0x67, - 0x58, 0x22, 0xa5, 0xf4, 0x37, 0x38, 0xbf, 0x0e, 0xc9, 0x72, 0x23, 0xc3, - 0x76, 0x9c, 0x5a, 0x4e, 0x6d, 0xa3, 0x12, 0xd0, 0x91, 0xb4, 0xbf, 0x30, - 0x3c, 0x10, 0x35, 0x06, 0x30, 0x6c, 0xad, 0x86, 0x1a, 0x1c, 0x58, 0xde, - 0x08, 0xae, 0xda, 0x11, 0xc7, 0xf3, 0x19, 0x4a, 0xab, 0x31, 0x4e, 0xb7, - 0xcd, 0x18, 0x39, 0x27, 0x14, 0xd4, 0x73, 0x31, 0x8e, 0x11, 0x60, 0xf3, - 0x1e, 0x96, 0x69, 0x3f, 0xe1, 0x27, 0x26, 0x9a, 0xd2, 0x4f, 0x5c, 0x61, - 0xec, 0x03, 0x5a, 0xfa, 0x38, 0x66, 0x27, 0xed, 0xca, 0x19, 0x08, 0x72, - 0xb7, 0xfb, 0x9f, 0x14, 0xcc, 0xaa, 0x03, 0x2b, 0xb5, 0x62, 0xc7, 0x48, - 0x6e, 0x4b, 0x61, 0x37, 0xf2, 0x4e, 0x17, 0x3d, 0xaa, 0x69, 0xe4, 0x3a, - 0xd1, 0x60, 0x85, 0x85, 0xc3, 0xdb, 0x5e, 0xbe, 0x4c, 0x38, 0xcb, 0xb0, - 0xd7, 0x2d, 0x33, 0xe1, 0x28, 0x1f, 0xa2, 0x7d, 0x3c, 0x43, 0xd8, 0x55, - 0x1c, 0xae, 0xcd, 0x91, 0xad, 0xc2, 0x31, 0xc9, 0x77, 0x82, 0xca, 0xc1, - 0x07, 0xb9, 0x64, 0xcf, 0x7c, 0xc2, 0xa4, 0x9e, 0x61, 0x8b, 0xfc, 0x57, - 0xd8, 0xac, 0xcf, 0x4a, 0x44, 0x67, 0x6d, 0x6b, 0x36, 0x63, 0x21, 0xdf, - 0x7a, 0xcb, 0x3c, 0xf6, 0xd2, 0x3b, 0x86, 0xec, 0x9d, 0xda, 0x56, 0x2d, - 0x4e, 0x7f, 0xb9, 0x11, 0x93, 0x46, 0x7e, 0x9c, 0x60, 0x32, 0x34, 0x07, - 0x8f, 0x41, 0xbe, 0x5b, 0x48, 0xd2, 0xa4, 0x5b, 0x5f, 0xba, 0x0c, 0x03, - 0xe5, 0x41, 0x7c, 0xb4, 0xa1, 0x97, 0xd9, 0x26, 0x2b, 0xb5, 0x3a, 0x7e, - 0x49, 0x03, 0xdb, 0x06, 0x6d, 0x8c, 0x66, 0x99, 0x7d, 0xe4, 0x83, 0xea, - 0x90, 0x45, 0xa0, 0x52, 0x8f, 0x7d, 0x02, 0x0e, 0x33, 0x35, 0x18, 0xa9, - 0xf0, 0xf0, 0xe7, 0x2b, 0xdc, 0x82, 0xb1, 0x83, 0x90, 0xcd, 0x3c, 0x20, - 0x40, 0x6a, 0x68, 0x8d, 0xb9, 0xc5, 0xd9, 0xb4, 0x4f, 0x8f, 0x37, 0x5c, - 0x2a, 0x8c, 0x58, 0x73, 0xc3, 0xb8, 0x91, 0x0b, 0x40, 0x25, 0x01, 0x56, - 0x14, 0x8a, 0xd3, 0x55, 0x26, 0x24, 0xf2, 0x0f, 0x8d, 0xa8, 0xa2, 0x5d, - 0xa9, 0xf4, 0x06, 0x95, 0x34, 0x23, 0xfa, 0x7b, 0x7d, 0xf1, 0x69, 0x28, - 0x32, 0xd2, 0xa8, 0x59, 0x09, 0xd2, 0x09, 0xff, 0x47, 0x5f, 0x33, 0xe2, - 0x8c, 0x9e, 0xb6, 0x45, 0x17, 0x3c, 0x71, 0x2c, 0xcf, 0xe0, 0x8d, 0xf8, - 0xa4, 0x3e, 0xa0, 0x4e, 0x90, 0xfb, 0x28, 0x2b, 0x64, 0xab, 0x0e, 0xbf, - 0xa4, 0xcf, 0x56, 0xa3, 0x49, 0x9b, 0xa6, 0xfe, 0x71, 0x06, 0xbe, 0xe1, - 0xad, 0x72, 0x3a, 0x58, 0x73, 0x58, 0x2f, 0xb2, 0xfe, 0x70, 0xc1, 0x72, - 0x0e, 0xd2, 0x5f, 0xef, 0x8a, 0x9f, 0x5c, 0x9b, 0xa4, 0xf0, 0x50, 0x55, - 0x3c, 0x23, 0x07, 0x45, 0x78, 0xf6, 0xfc, 0x04, 0xea, 0x82, 0x21, 0x1a, - 0x94, 0xde, 0x05, 0x54, 0x25, 0xe7, 0x37, 0xc8, 0x98, 0x5d, 0x61, 0xb2, - 0x0e, 0xa2, 0x48, 0x5a, 0x7d, 0x0c, 0x9f, 0x85, 0x88, 0x0e, 0xb4, 0xf7, - 0xab, 0xe9, 0xb1, 0xf3, 0xba, 0xf4, 0xa9, 0xf8, 0xab, 0x25, 0x38, 0x45, - 0x68, 0x56, 0x00, 0xeb, 0x81, 0x26, 0x0b, 0xf1, 0xb9, 0x4d, 0x4d, 0x5b, - 0x20, 0xd9, 0xf5, 0xf5, 0x27, 0x43, 0xd9, 0xe8, 0x54, 0x09, 0xd4, 0x80, - 0x6d, 0x82, 0xbb, 0x65, 0xf5, 0xef, 0xa0, 0x89, 0x7e, 0x39, 0xd4, 0x14, - 0xca, 0x52, 0xd4, 0x69, 0x77, 0x8d, 0x5c, 0x1d, 0xa9, 0xae, 0x76, 0x40, - 0xeb, 0xf4, 0xb4, 0x06, 0x67, 0x11, 0x2f, 0x51, 0x41, 0x3b, 0xa8, 0x23, - 0x4c, 0xe2, 0x28, 0x31, 0xe2, 0x42, 0xed, 0xee, 0x62, 0x75, 0x3b, 0x79, - 0x21, 0x4f, 0x7d, 0x22, 0x9e, 0x98, 0x44, 0x55, 0x6c, 0x89, 0x02, 0xb2, - 0x26, 0x24, 0x50, 0xc8, 0x57, 0x06, 0x22, 0x86, 0xdc, 0xf4, 0xa3, 0xf2, - 0xae, 0x11, 0x0f, 0x59, 0xd7, 0x92, 0x84, 0xcf, 0xde, 0x69, 0xbd, 0xa6, - 0xe4, 0xd4, 0x8f, 0x38, 0x6b, 0x74, 0xe1, 0x8d, 0xb8, 0x3b, 0xb2, 0xf1, - 0x0d, 0x05, 0x34, 0xe7, 0x14, 0x94, 0x37, 0x04, 0x01, 0xf6, 0x08, 0x26, - 0x70, 0xca, 0xdc, 0x9d, 0x95, 0xd7, 0xf7, 0x4d, 0xc3, 0xc2, 0xaa, 0x7a, - 0xcc, 0x8f, 0x55, 0x43, 0x36, 0x5f, 0xdd, 0x91, 0x5a, 0xdf, 0x6e, 0x79, - 0x4f, 0x9d, 0x58, 0xd7, 0xb2, 0x3f, 0x3f, 0x82, 0xb3, 0x7a, 0xe1, 0xec, - 0x32, 0x5e, 0x76, 0x24, 0x2b, 0xe0, 0x37, 0x9e, 0x00, 0x72, 0x4f, 0x0a, - 0x05, 0xb0, 0x9a, 0xa5, 0xaa, 0x47, 0xeb, 0x70, 0xcb, 0xf0, 0x6f, 0xf6, - 0x6a, 0x78, 0x8a, 0x10, 0xfc, 0xf1, 0x6b, 0x07, 0x18, 0xdc, 0x5b, 0x19, - 0x75, 0xf9, 0xc4, 0x41, 0x26, 0x88, 0x30, 0x3f, 0x14, 0xf6, 0xf9, 0x07, - 0x7c, 0x04, 0x28, 0xa5, 0x9f, 0xa7, 0x2d, 0x39, 0xb3, 0x79, 0xbb, 0x4f, - 0x4b, 0x16, 0x12, 0x43, 0xee, 0xad, 0x64, 0x15, 0xf6, 0x3f, 0x8d, 0x00, - 0x0d, 0x94, 0xf8, 0x44, 0x32, 0xea, 0x64, 0x3a, 0x91, 0xb4, 0x04, 0xa3, - 0xe2, 0xd2, 0x39, 0x66, 0x62, 0xf5, 0x5f, 0xa9, 0xe3, 0x2e, 0x07, 0x4e, - 0x18, 0x46, 0x48, 0x4b, 0x62, 0x09, 0x99, 0xa3, 0x91, 0xbd, 0x61, 0xdf, - 0x1f, 0x60, 0xba, 0xa8, 0x3e, 0x99, 0xc7, 0x02, 0x43, 0x9c, 0xe7, 0x0b, - 0xff, 0x07, 0x60, 0xd0, 0x55, 0x60, 0xde, 0xbd, 0x3d, 0x86, 0x02, 0x0e, - 0x3d, 0x3b, 0x2b, 0x49, 0x8c, 0x1b, 0x5c, 0xa6, 0x12, 0x1c, 0xf7, 0x93, - 0xcd, 0xb7, 0xa5, 0xe5, 0x07, 0xb6, 0xee, 0x67, 0xfd, 0x36, 0x4b, 0xce, - 0x62, 0xbd, 0x2d, 0x43, 0x3f, 0xc6, 0x56, 0xd8, 0x91, 0x6b, 0x06, 0x54, - 0x95, 0x5d, 0xf3, 0xfb, 0xe7, 0xc6, 0x9a, 0x67, 0x63, 0x08, 0xc6, 0x4d, - 0x8f, 0x00, 0x97, 0x1b, 0x1d, 0xe9, 0x03, 0x75, 0x33, 0x72, 0xfa, 0x6a, - 0xda, 0xf3, 0x70, 0xa4, 0x2d, 0x5f, 0x66, 0x6e, 0x82, 0x2f, 0x8d, 0xad, - 0xe0, 0x75, 0x78, 0x08, 0x9a, 0x3a, 0xf4, 0x77, 0x74, 0x6e, 0xb4, 0xc3, - 0x64, 0x36, 0xc3, 0xd0, 0x7f, 0x5b, 0x03, 0xa0, 0x03, 0x89, 0xf5, 0x91, - 0xda, 0x35, 0xcd, 0x10, 0x05, 0xd7, 0xde, 0x5a, 0x64, 0x2a, 0x20, 0x9a, - 0x36, 0x3f, 0xbf, 0xda, 0xeb, 0x81, 0x71, 0xae, 0xb9, 0xf8, 0x3a, 0x5f, - 0xa7, 0xa8, 0x14, 0x92, 0xa2, 0x41, 0x5e, 0xda, 0x92, 0x7c, 0xb5, 0x9a, - 0xec, 0x06, 0xe1, 0xdd, 0x4c, 0x28, 0x86, 0x34, 0xa4, 0x09, 0x64, 0x37, - 0x63, 0x2d, 0xca, 0x6e, 0x01, 0xed, 0xef, 0xf5, 0x26, 0x02, 0x8f, 0x37, - 0x84, 0x7a, 0x60, 0x44, 0x69, 0x0a, 0xef, 0xb7, 0xde, 0xbf, 0xfe, 0x2a, - 0x44, 0x88, 0xa6, 0xc1, 0xb9, 0x5e, 0xd2, 0xed, 0x56, 0xc3, 0xcd, 0x6a, - 0xc6, 0x41, 0x5c, 0xa7, 0xe6, 0x30, 0x69, 0x7e, 0x6f, 0xad, 0x35, 0xd0, - 0x74, 0x72, 0x70, 0xa6, 0x5e, 0x73, 0x5f, 0x7f, 0x92, 0x13, 0xab, 0x37, - 0x9d, 0x23, 0x33, 0x61, 0x60, 0x1b, 0xec, 0xce, 0xee, 0x4b, 0x76, 0x15, - 0x9d, 0x88, 0x40, 0xa7, 0xe6, 0xf2, 0x5b, 0xed, 0xc0, 0xe5, 0xa6, 0x98, - 0x61, 0x0d, 0x28, 0x1f, 0x2a, 0x5d, 0xca, 0xe4, 0x86, 0x34, 0x1a, 0x20, - 0x82, 0x10, 0x05, 0xef, 0x6d, 0x6f, 0x52, 0xf7, 0x3e, 0x05, 0x03, 0x4f, - 0x71, 0x71, 0x6d, 0x8e, 0x01, 0xcb, 0x68, 0xd0, 0x3b, 0x44, 0x33, 0xea, - 0xb0, 0xcc, 0xbd, 0xed, 0x53, 0xbc, 0xd1, 0x14, 0xd3, 0x18, 0x1a, 0xd4, - 0x60, 0xa1, 0x20, 0xf2, 0x65, 0x5b, 0x6d, 0x39, 0x47, 0xcd, 0x53, 0xb4, - 0xa0, 0x5e, 0x95, 0x18, 0x8c, 0x64, 0x4a, 0x5c, 0x75, 0x03, 0x7c, 0xb0, - 0x2a, 0x7d, 0xc6, 0x81, 0x88, 0x59, 0xaa, 0xa9, 0xcf, 0x45, 0x7f, 0xe3, - 0x44, 0x64, 0x05, 0xcf, 0x67, 0x19, 0xb0, 0xbb, 0x39, 0x74, 0x59, 0x2d, - 0xc2, 0x58, 0xb8, 0x49, 0xca, 0xed, 0xdc, 0xc6, 0xd5, 0x40, 0x43, 0x53, - 0xe3, 0xa6, 0xd9, 0x2f, 0x6c, 0xab, 0x9a, 0x0e, 0x63, 0x38, 0xce, 0x33, - 0x15, 0xd7, 0x5a, 0x24, 0x0c, 0x16, 0xb4, 0x2b, 0x5f, 0x9b, 0xe1, 0x5f, - 0x2e, 0x0e, 0xbd, 0x96, 0x92, 0xe4, 0x03, 0x38, 0xef, 0xc5, 0x1d, 0x49, - 0x6f, 0x32, 0x5d, 0xb0, 0xfe, 0x64, 0x41, 0xf1, 0xb9, 0x75, 0x9f, 0x3f, - 0x67, 0x94, 0x2b, 0x87, 0x52, 0x5f, 0x72, 0x98, 0xa5, 0x9b, 0x0d, 0xfe, - 0x36, 0xfd, 0x81, 0x73, 0x84, 0xdc, 0x12, 0x11, 0xde, 0xb6, 0x0f, 0xae, - 0xbe, 0x5c, 0x87, 0x56, 0x21, 0xc5, 0xec, 0xc2, 0xff, 0x8f, 0x77, 0x13, - 0x83, 0x53, 0xa1, 0x38, 0x44, 0xd5, 0xa8, 0xb8, 0x3e, 0x55, 0x33, 0x1f, - 0x5f, 0xaf, 0xea, 0x0c, 0x48, 0x3a, 0x18, 0x94, 0xa6, 0xfa, 0xfb, 0x74, - 0x80, 0x0a, 0x5a, 0x3d, 0x6f, 0x63, 0xaf, 0xad, 0x22, 0x7c, 0x4f, 0xb9, - 0x7f, 0xd8, 0x73, 0x67, 0x49, 0x32, 0x46, 0x38, 0xd6, 0xb4, 0xbd, 0x77, - 0x2c, 0x93, 0x5b, 0x0e, 0xe2, 0x86, 0x39, 0x4b, 0xcf, 0x50, 0x52, 0xea, - 0xe7, 0x67, 0x01, 0x03, 0xe0, 0xd3, 0x27, 0x8a, 0xbd, 0x7c, 0x45, 0x46, - 0xe9, 0x89, 0xec, 0x19, 0xef, 0x56, 0xc7, 0xbb, 0x32, 0x05, 0xd3, 0xbb, - 0xf2, 0xff, 0xcf, 0x2d, 0x36, 0x07, 0xc0, 0x6f, 0xd9, 0x28, 0x9b, 0xf4, - 0x86, 0xdc, 0xc8, 0x60, 0x8f, 0x7c, 0xa4, 0xa7, 0x52, 0xd6, 0x7c, 0xb3, - 0xb8, 0xb3, 0x72, 0x3e, 0xf9, 0xbb, 0x56, 0x61, 0x8e, 0xe7, 0x35, 0x58, - 0x28, 0x79, 0x27, 0x10, 0xb7, 0x9a, 0x24, 0xfa, 0x5c, 0x83, 0x69, 0xcc, - 0xde, 0xad, 0x37, 0xd0, 0x7c, 0xcd, 0x5f, 0x96, 0x08, 0xda, 0xf7, 0x37, - 0xea, 0xdb, 0xa0, 0x0a, 0xc1, 0x20, 0xd6, 0xa7, 0x4e, 0xff, 0xdd, 0x1b, - 0xb8, 0xe7, 0xd6, 0xa4, 0x84, 0xde, 0x34, 0x77, 0xb5, 0xbb, 0x45, 0x69, - 0xe6, 0x4b, 0x1b, 0x7b, 0x55, 0xb2, 0xe4, 0xa9, 0x8d, 0x19, 0xf6, 0x1e, - 0x6b, 0xbd, 0xc3, 0x56, 0x80, 0xd4, 0x6a, 0x67, 0xc7, 0x60, 0x38, 0xa6, - 0x86, 0x8c, 0x3c, 0x96, 0x27, 0xb9, 0xc4, 0x43, 0xd3, 0x51, 0x53, 0x82, - 0xf6, 0x13, 0xc4, 0x87, 0x2b, 0x83, 0x4d, 0x58, 0xbe, 0x10, 0x67, 0x2c, - 0x6c, 0x49, 0xc8, 0x97, 0x75, 0x21, 0x2f, 0x92, 0xa6, 0x2c, 0xc6, 0x8e, - 0x2d, 0x14, 0xde, 0x2e, 0xb1, 0xb5, 0xd5, 0x64, 0x1e, 0xc5, 0x07, 0xbc, - 0x20, 0x3f, 0x3b, 0x21, 0x09, 0x99, 0x9e, 0x1c, 0x07, 0xda, 0xff, 0x3f, - 0x76, 0xfe, 0x34, 0x43, 0x9a, 0x91, 0x0b, 0x77, 0xba, 0xb4, 0xbc, 0xc7, - 0xce, 0x18, 0xde, 0x37, 0x0b, 0xa7, 0x1b, 0x66, 0x17, 0xee, 0x4e, 0x6d, - 0xae, 0xf9, 0x43, 0xdb, 0x19, 0xd6, 0xce, 0x40, 0x0d, 0x5f, 0x5e, 0x43, - 0x1b, 0x03, 0xcf, 0xea, 0xd0, 0xd3, 0x92, 0x0f, 0xac, 0xe9, 0xee, 0xd5, - 0x70, 0x3b, 0xf7, 0x8a, 0xf4, 0x38, 0x2a, 0xa2, 0x40, 0x4e, 0xed, 0xe4, - 0x27, 0x72, 0x6a, 0x1d, 0xcb, 0x06, 0x91, 0x29, 0x7d, 0x78, 0xab, 0x13, - 0x3e, 0x97, 0x7a, 0x9f, 0x93, 0x22, 0xdb, 0x21, 0x7c, 0xbe, 0xfd, 0x3d, - 0xa0, 0x17, 0x0d, 0x45, 0x64, 0x7f, 0x8f, 0xc5, 0xbd, 0x0f, 0xd0, 0x85, - 0x18, 0x0d, 0xa8, 0x1a, 0x8a, 0xed, 0x7d, 0x20, 0xb8, 0x3d, 0x89, 0x59, - 0xe7, 0x51, 0xf6, 0x48, 0xf6, 0xbe, 0x63, 0x76, 0x53, 0x8c, 0xb1, 0xb8, - 0x69, 0x4a, 0xfc, 0x96, 0xc9, 0x3b, 0x61, 0xd4, 0xc9, 0x03, 0x66, 0x19, - 0xe6, 0xbf, 0x74, 0x77, 0xe6, 0x25, 0xdf, 0xad, 0x93, 0xcc, 0x1b, 0x6f, - 0x0b, 0x23, 0xae, 0xc6, 0x56, 0x28, 0xcc, 0x60, 0xbe, 0x5e, 0xba, 0x34, - 0x59, 0xd7, 0xee, 0xa7, 0x94, 0xef, 0x62, 0x1d, 0x5d, 0x80, 0x74, 0xcb, - 0xdf, 0x1c, 0x01, 0xa0, 0xf1, 0x5b, 0xa7, 0xef, 0x20, 0x61, 0xb2, 0xcb, - 0xe7, 0xca, 0x50, 0x5b, 0x9f, 0x6a, 0xdf, 0x85, 0xe0, 0x4d, 0xfc, 0x71, - 0x8d, 0x90, 0x31, 0x89, 0x58, 0xdd, 0x3b, 0x05, 0xaa, 0xa5, 0x59, 0x9c, - 0xe6, 0xfa, 0x24, 0x8f, 0xcd, 0x25, 0xb3, 0x29, 0x85, 0xe2, 0x19, 0x0f, - 0xbd, 0xa0, 0xe7, 0x1f, 0x9c, 0x3e, 0xf2, 0xf6, 0xd6, 0xa7, 0x13, 0x3a, - 0x0d, 0xdc, 0x9a, 0xaa, 0x63, 0x79, 0xf2, 0xe9, 0x71, 0xe2, 0x4a, 0x74, - 0x2e, 0x84, 0xbd, 0x42, 0x49, 0x20, 0x45, 0x77, 0x8c, 0xfb, 0x8a, 0x96, - 0xd5, 0xd2, 0x8f, 0x9c, 0x34, 0x72, 0x79, 0xc5, 0x51, 0xa7, 0x63, 0x5d, - 0xcb, 0x02, 0x0b, 0x0f, 0xb0, 0x6d, 0x25, 0xc1, 0x83, 0x46, 0x20, 0xd1, - 0xb0, 0x73, 0x40, 0x73, 0xad, 0xbb, 0x43, 0xff, 0x7f, 0x06, 0xe8, 0xd3, - 0x24, 0x39, 0x18, 0x46, 0x1a, 0xa5, 0x5b, 0x49, 0xfe, 0xe0, 0xbc, 0x8c, - 0x0d, 0x40, 0x3b, 0x48, 0xd3, 0x04, 0x1f, 0xa7, 0xc5, 0x7f, 0x9c, 0xfb, - 0x1c, 0xef, 0x46, 0xba, 0xc8, 0x9b, 0x59, 0xa3, 0x37, 0xd2, 0x68, 0xf8, - 0xb5, 0xfa, 0x5f, 0xe2, 0x1d, 0x5e, 0x6d, 0x8c, 0x00, 0x11, 0x36, 0xe1, - 0xee, 0xe2, 0x5f, 0xff, 0x2d, 0x95, 0x04, 0x52, 0x87, 0xa3, 0x61, 0x50, - 0x00, 0x48, 0x5d, 0xb4, 0x8b, 0xe1, 0x1f, 0x8c, 0x4f, 0x66, 0xb5, 0xef, - 0x1b, 0x0f, 0x08, 0xea, 0x79, 0x46, 0xfd, 0x5e, 0x8a, 0x0e, 0xbe, 0xd2, - 0xca, 0x6c, 0xdc, 0xd0, 0x6c, 0x02, 0x97, 0x94, 0xd5, 0xd3, 0x29, 0x5e, - 0xe1, 0x02, 0xd1, 0x33, 0x19, 0x3e, 0x8b, 0xd4, 0xf0, 0xb8, 0xfd, 0x69, - 0xb7, 0xb4, 0x09, 0x69, 0x7f, 0x92, 0x31, 0xaf, 0x05, 0x9a, 0xd1, 0xa2, - 0x5b, 0xa3, 0xd1, 0x76, 0x49, 0x2e, 0xed, 0xf5, 0x0c, 0x41, 0x1e, 0xcd, - 0x5e, 0x1c, 0xde, 0x92, 0x99, 0x0e, 0x30, 0x75, 0xb5, 0xef, 0x7c, 0x57, - 0x42, 0x77, 0x5a, 0x2a, 0x71, 0xc7, 0xf0, 0xef, 0x9c, 0xbc, 0x32, 0x25, - 0x48, 0x07, 0x96, 0x6f, 0xaa, 0x43, 0xe4, 0x5d, 0xcf, 0xe1, 0x25, 0x1a, - 0x50, 0x47, 0x02, 0x6f, 0xbc, 0x5b, 0xf6, 0xfc, 0xce, 0x66, 0xf1, 0x36, - 0xf0, 0xaa, 0x35, 0x73, 0xb6, 0xfb, 0x12, 0xaf, 0xfc, 0x47, 0xca, 0xea, - 0xfd, 0xa8, 0x95, 0x6d, 0xba, 0xd2, 0x7c, 0x4d, 0x69, 0xb7, 0x02, 0x3d, - 0xfd, 0x4d, 0x2c, 0x95, 0x2d, 0x99, 0x25, 0x97, 0xb0, 0xbe, 0x36, 0x48, - 0xb1, 0x25, 0xe2, 0xac, 0x8e, 0x68, 0xd7, 0x56, 0x99, 0xee, 0xb1, 0xd8, - 0x27, 0x0a, 0x0d, 0xe7, 0x1e, 0x4d, 0x81, 0x71, 0x83, 0xbc, 0x3d, 0x2c, - 0x96, 0xd2, 0xee, 0x75, 0x5b, 0xee, 0xfa, 0xd5, 0x51, 0x85, 0x01, 0xcf, - 0x42, 0x5f, 0x15, 0x4a, 0x82, 0x49, 0xa9, 0x89, 0x7f, 0xaf, 0x44, 0x67, - 0x62, 0x10, 0x78, 0x19, 0xaf, 0x6f, 0xf0, 0xb9, 0xd4, 0xd3, 0x51, 0x37, - 0x38, 0xb4, 0xbb, 0x10, 0x32, 0xe4, 0x4f, 0x17, 0xe7, 0x59, 0x7b, 0x6a, - 0xe6, 0x95, 0x2a, 0x4c, 0xf3, 0xa0, 0x77, 0x81, 0xeb, 0x31, 0x26, 0x3c, - 0x05, 0x77, 0x0f, 0x81, 0x02, 0xf0, 0x20, 0xa3, 0xa6, 0xdd, 0x71, 0x2f, - 0x10, 0x8e, 0x7c, 0x47, 0xe1, 0xdd, 0xc3, 0x3f, 0xd8, 0x7d, 0x5c, 0x8d, - 0xb2, 0xeb, 0x1a, 0x4a, 0x9a, 0xc0, 0x9a, 0x3d, 0x8a, 0xf0, 0x86, 0x45, - 0xdf, 0x95, 0x05, 0xbb, 0x0e, 0x96, 0x5a, 0x33, 0x62, 0x90, 0x8f, 0x8b, - 0x1e, 0xc5, 0x2c, 0x1b, 0x11, 0x7f, 0xa0, 0x80, 0xa9, 0x5a, 0x24, 0x51, - 0x6a, 0xd2, 0xfe, 0x02, 0x1f, 0x8b, 0x1a, 0x19, 0xea, 0xfd, 0xf1, 0x72, - 0x05, 0x11, 0x38, 0x21, 0x1d, 0xe0, 0x9a, 0x74, 0x92, 0x31, 0xeb, 0x98, - 0x7c, 0x0c, 0xb9, 0xc1, 0x40, 0x88, 0x30, 0x41, 0xc3, 0x0a, 0x84, 0xfe, - 0xfc, 0x0b, 0x40, 0x75, 0x18, 0x9d, 0x8b, 0xbe, 0xbb, 0x3e, 0xf9, 0xd9, - 0x56, 0x41, 0xf7, 0xd7, 0xad, 0xee, 0xd4, 0xd4, 0xac, 0xb7, 0x96, 0x7c, - 0x7d, 0x2a, 0xd2, 0x3b, 0xb5, 0x5b, 0x35, 0xde, 0x09, 0xc6, 0x0e, 0x3e, - 0xd2, 0x97, 0xa1, 0xfd, 0x38, 0x39, 0x11, 0x36, 0x26, 0x12, 0xc4, 0x84, - 0x39, 0xa6, 0x47, 0x6b, 0x3e, 0x55, 0xe7, 0x4a, 0x81, 0x0a, 0x22, 0x87, - 0x6d, 0xfb, 0x70, 0x72, 0xdf, 0x2c, 0x2e, 0xc6, 0x78, 0x11, 0xe5, 0xc4, - 0xec, 0xfa, 0xeb, 0x1f, 0x69, 0xf1, 0xcf, 0xda, 0x54, 0xf2, 0x0e, 0x88, - 0xe0, 0x8b, 0x2b, 0x45, 0xe6, 0x76, 0x17, 0x7a, 0xf1, 0x7a, 0x0a, 0x75, - 0xc4, 0x18, 0x5b, 0x52, 0x63, 0xdf, 0xe7, 0xc4, 0x60, 0xc4, 0x44, 0xa7, - 0xd2, 0x2a, 0xa6, 0xe4, 0x2e, 0xb0, 0x58, 0xe7, 0x71, 0x33, 0x55, 0xef, - 0x02, 0x24, 0x70, 0x73, 0x92, 0x2a, 0x39, 0x90, 0x20, 0x0e, 0x55, 0xea, - 0x7f, 0x8e, 0xef, 0x77, 0x4b, 0x67, 0xf0, 0x3b, 0xc0, 0x93, 0x96, 0x9c, - 0x17, 0x00, 0xb2, 0x29, 0x61, 0xe9, 0xdf, 0x0e, 0xe0, 0x0a, 0x67, 0x1d, - 0x47, 0xcb, 0x0f, 0x56, 0x36, 0x24, 0x61, 0x5c, 0xc7, 0xf1, 0xff, 0x8a, - 0xeb, 0x4a, 0xb1, 0x85, 0x22, 0x26, 0x84, 0x1c, 0x15, 0x78, 0x36, 0xfd, - 0xe3, 0xb9, 0x2f, 0x4d, 0x54, 0x92, 0xf4, 0x87, 0x3b, 0x7a, 0xf0, 0x27, - 0xbc, 0x72, 0x14, 0x66, 0x3d, 0x81, 0xd2, 0x3e, 0xc2, 0xe9, 0xd0, 0x8a, - 0xd1, 0x47, 0x1a, 0x83, 0xe5, 0x36, 0xc2, 0x48, 0x6e, 0x5b, 0xf7, 0x35, - 0x04, 0xd3, 0x01, 0x77, 0xf0, 0x18, 0x5c, 0xb2, 0x51, 0x30, 0x4d, 0x75, - 0x95, 0xd2, 0x0b, 0xa6, 0xd8, 0x4a, 0xce, 0x03, 0xf9, 0xe0, 0xa8, 0x0c, - 0x15, 0xb2, 0x6e, 0x77, 0xc9, 0x77, 0xd4, 0x28, 0x6b, 0x38, 0xa6, 0xc2, - 0x6f, 0xc3, 0x6f, 0x36, 0xf2, 0x29, 0xc4, 0x17, 0xc6, 0x1a, 0x19, 0x16, - 0x04, 0x79, 0xf8, 0xe1, 0xee, 0x93, 0xa3, 0x5a, 0x12, 0x4a, 0x99, 0x30, - 0x0c, 0x05, 0xd2, 0x3d, 0x1e, 0xdc, 0xd0, 0xdf, 0x35, 0xa1, 0x06, 0x52, - 0x7d, 0x3c, 0xce, 0xa8, 0xbc, 0x19, 0x58, 0x0e, 0xa4, 0x20, 0x4b, 0x9c, - 0x1c, 0x66, 0x57, 0x13, 0x65, 0xe9, 0xff, 0xf0, 0x52, 0xa2, 0xf2, 0x1a, - 0x71, 0x03, 0x44, 0x6f, 0xf3, 0xfd, 0xe7, 0x44, 0xd0, 0xfb, 0x24, 0x0b, - 0x25, 0x1d, 0x03, 0xf9, 0xd3, 0x18, 0xe6, 0xf1, 0x82, 0x47, 0x6f, 0x08, - 0x02, 0x75, 0x79, 0x35, 0x65, 0xb7, 0x39, 0xae, 0x1a, 0x3b, 0x16, 0x1c, - 0xc2, 0xfd, 0x8d, 0x04, 0x9c, 0xb2, 0x45, 0x18, 0x24, 0x2d, 0xc3, 0x62, - 0x3a, 0x70, 0xc3, 0xa7, 0x35, 0xb0, 0x90, 0xfb, 0xe0, 0x13, 0x64, 0x60, - 0x4f, 0x25, 0x6e, 0x36, 0xd0, 0xe7, 0x84, 0xd1, 0xad, 0x39, 0xb9, 0x3b, - 0xec, 0x3d, 0x41, 0xf7, 0xac, 0x3d, 0x7e, 0x68, 0xa4, 0xea, 0x85, 0xd9, - 0x72, 0x35, 0xbe, 0x54, 0xd5, 0x40, 0x46, 0xa8, 0x92, 0xff, 0x62, 0x16, - 0xa0, 0xc2, 0xc2, 0x51, 0xb2, 0x44, 0xff, 0xfa, 0x1f, 0x22, 0x6e, 0xcb, - 0xab, 0x4d, 0x34, 0xc5, 0x6b, 0x43, 0xb5, 0xaf, 0xad, 0x3c, 0x10, 0x5b, - 0x0d, 0x95, 0x81, 0xc1, 0x1c, 0x49, 0xa3, 0x7a, 0xb7, 0x07, 0x76, 0xac, - 0xe0, 0x25, 0x0e, 0x58, 0xf1, 0x64, 0x54, 0xb1, 0xb4, 0x5a, 0x81, 0x2e, - 0xb9, 0xd5, 0x43, 0xc8, 0x09, 0x04, 0xb6, 0xbb, 0xb0, 0x87, 0xa0, 0x52, - 0x3a, 0x75, 0xfa, 0xf3, 0xc9, 0x18, 0xc3, 0xbb, 0xff, 0xae, 0xf9, 0x69, - 0x3c, 0x95, 0x57, 0x65, 0xd9, 0x24, 0x6e, 0x50, 0xc8, 0x9c, 0x9c, 0xdd, - 0x74, 0x6f, 0xdd, 0xb0, 0x1f, 0x88, 0xad, 0x2f, 0x04, 0x73, 0xda, 0xf2, - 0xf0, 0x6e, 0x31, 0xcf, 0x42, 0x72, 0x4a, 0x08, 0xce, 0xf8, 0xa9, 0x74, - 0xec, 0xcf, 0x94, 0x17, 0x37, 0x45, 0x7d, 0xd6, 0x67, 0x54, 0x98, 0x44, - 0x47, 0xb3, 0x12, 0x7e, 0xd8, 0xe9, 0xbd, 0x6c, 0x06, 0xc1, 0x1d, 0x55, - 0x4a, 0xd4, 0x84, 0x78, 0x78, 0x06, 0x4e, 0x05, 0x54, 0xe6, 0x44, 0xee, - 0xc2, 0x23, 0xc4, 0x08, 0x2d, 0x13, 0x22, 0x2b, 0x27, 0xbc, 0x55, 0xda, - 0x77, 0xf7, 0x2a, 0xe0, 0x1c, 0x27, 0x8d, 0x34, 0xb6, 0x4e, 0xeb, 0xe8, - 0x81, 0xa9, 0x54, 0x71, 0x71, 0x35, 0x12, 0xe1, 0x25, 0x01, 0x54, 0x94, - 0x0a, 0xed, 0x3b, 0xe2, 0xe7, 0x1c, 0x84, 0xe2, 0xff, 0x20, 0x26, 0x7a, - 0x8a, 0xf9, 0xbc, 0xe9, 0x37, 0x4a, 0x30, 0xd3, 0x70, 0x78, 0xcc, 0x6b, - 0x0f, 0x75, 0xcd, 0x46, 0x95, 0x1f, 0x16, 0xf5, 0x63, 0xc5, 0x50, 0xdd, - 0x6a, 0xc7, 0xf4, 0x67, 0x1e, 0x6f, 0x98, 0x5a, 0x79, 0xf7, 0x85, 0x99, - 0x44, 0x4f, 0xd7, 0x17, 0x38, 0xd6, 0xb6, 0x09, 0xb7, 0x0f, 0xdd, 0x86, - 0x5f, 0xfc, 0x57, 0xe4, 0x43, 0x42, 0xc0, 0x2c, 0x16, 0x20, 0x2f, 0x4c, - 0x9d, 0x0e, 0x54, 0x5a, 0x34, 0x7c, 0x00, 0x56, 0x5d, 0x6c, 0x15, 0xb5, - 0x54, 0x86, 0xdd, 0x09, 0xcf, 0x3f, 0xe2, 0x63, 0xe7, 0xfd, 0xb8, 0xfd, - 0xc0, 0x5b, 0xae, 0x88, 0xf1, 0xcb, 0xab, 0xa3, 0x2e, 0x04, 0xf4, 0x94, - 0xc7, 0xc2, 0xe0, 0xcb, 0x37, 0x5c, 0xde, 0x12, 0x46, 0xd0, 0x13, 0x9b, - 0xa2, 0x31, 0x25, 0x91, 0x65, 0x27, 0x18, 0xb1, 0xbc, 0x4a, 0xf1, 0x9e, - 0x58, 0x79, 0x0d, 0x24, 0xeb, 0x81, 0x2d, 0xd5, 0xbe, 0x22, 0xda, 0x41, - 0x57, 0xfe, 0xfe, 0xa1, 0xa5, 0x12, 0xd9, 0xd2, 0xfe, 0x80, 0x52, 0x7d, - 0xe0, 0x3a, 0xc0, 0xb9, 0xbf, 0xce, 0xf0, 0x5c, 0xff, 0x51, 0x10, 0x53, - 0xd3, 0x0c, 0xdb, 0xc5, 0xd8, 0xe4, 0xa6, 0x33, 0x77, 0x87, 0x2b, 0x3e, - 0xd7, 0xfd, 0x22, 0xcd, 0x3f, 0x46, 0xc0, 0xb2, 0xba, 0xdc, 0x2f, 0x2a, - 0xe9, 0xa6, 0xfd, 0x9e, 0x6b, 0x94, 0x30, 0xa1, 0x13, 0xfd, 0x2f, 0xa9, - 0xd2, 0xa2, 0xc5, 0x40, 0xa4, 0x2f, 0x29, 0x12, 0xc2, 0xce, 0xbd, 0xa0, - 0x8e, 0xc0, 0x30, 0x72, 0xc5, 0x7f, 0xfb, 0xfe, 0x5d, 0x27, 0x74, 0x7c, - 0xe9, 0x8e, 0x10, 0x43, 0xe0, 0x68, 0x14, 0xc4, 0xd1, 0xd4, 0x1b, 0xfd, - 0xbd, 0xc9, 0xdd, 0xb5, 0x0f, 0xd9, 0x1a, 0xd6, 0x3f, 0xb0, 0x9e, 0x2c, - 0xc9, 0x83, 0xf3, 0x70, 0x78, 0x94, 0x1f, 0x50, 0x82, 0xf6, 0x40, 0x54, - 0x41, 0x4f, 0x55, 0xf8, 0xa3, 0xfd, 0xae, 0x96, 0x91, 0xe0, 0xb1, 0xcd, - 0xd8, 0x94, 0xf7, 0x89, 0x97, 0x22, 0x54, 0x22, 0x09, 0x6e, 0x81, 0xe8, - 0xbd, 0x89, 0x98, 0x9f, 0xb2, 0xf3, 0x87, 0x40, 0x7d, 0x78, 0x21, 0x40, - 0xcc, 0x8f, 0x5b, 0xf4, 0x1b, 0xb4, 0x1e, 0x56, 0x2e, 0x5a, 0xde, 0x5e, - 0xd6, 0xf1, 0x30, 0xe3, 0x02, 0x8c, 0xa6, 0xe2, 0xd0, 0x19, 0xbb, 0xe8, - 0x0b, 0xd9, 0x7b, 0xf7, 0x6a, 0xa1, 0x5a, 0x6b, 0xce, 0x4b, 0xc0, 0xdd, - 0xaf, 0xe4, 0x02, 0x8f, 0x52, 0xf8, 0xb7, 0x8e, 0x7c, 0x50, 0x20, 0x1a, - 0xb7, 0xa7, 0x60, 0xdf, 0x77, 0xdf, 0x68, 0xde, 0x73, 0xb8, 0x67, 0x87, - 0xb9, 0x92, 0xa3, 0x78, 0x16, 0xb2, 0x94, 0xe5, 0x0b, 0xe2, 0x0e, 0xc5, - 0xca, 0x89, 0xca, 0x58, 0x17, 0x8b, 0x0e, 0x23, 0xf3, 0x02, 0xf6, 0xd2, - 0x0d, 0x75, 0xd7, 0x43, 0x25, 0xb1, 0x69, 0xb2, 0xdb, 0x54, 0x83, 0x10, - 0xfc, 0xa6, 0x56, 0xf2, 0x9c, 0xcc, 0x4b, 0xf4, 0x98, 0x06, 0xdb, 0xa9, - 0x8b, 0xd7, 0x72, 0xc2, 0x40, 0x3e, 0xa8, 0xca, 0xc5, 0xe3, 0xfc, 0xdd, - 0x3c, 0x8b, 0x3e, 0x7b, 0xa3, 0x71, 0x5e, 0x4a, 0x59, 0xd7, 0x52, 0xf8, - 0x7a, 0xab, 0xce, 0x92, 0x94, 0x3f, 0x8c, 0x1f, 0x5a, 0x5e, 0x5b, 0xf5, - 0xb5, 0x8c, 0x21, 0x1d, 0x8e, 0x94, 0x9b, 0x12, 0x9e, 0x27, 0x6d, 0xd6, - 0x26, 0x5d, 0xc8, 0x1e, 0x29, 0x23, 0x94, 0x8c, 0x74, 0xd2, 0x1e, 0x94, - 0x25, 0xb2, 0x00, 0x77, 0xf7, 0xf4, 0x65, 0xa9, 0xd7, 0x4c, 0x66, 0xbb, - 0x3b, 0xfa, 0x65, 0xe8, 0xd9, 0x1e, 0xf0, 0x28, 0xf9, 0x30, 0x53, 0xc3, - 0xc9, 0x7d, 0x2a, 0xdc, 0xf0, 0x0b, 0xef, 0x21, 0xe5, 0x99, 0xe8, 0xbc, - 0x2d, 0xd0, 0x09, 0x24, 0xc2, 0x34, 0xd5, 0xab, 0xa6, 0xe0, 0x31, 0x55, - 0x73, 0xe8, 0xa1, 0x07, 0x5e, 0xdd, 0x29, 0x92, 0xff, 0xe4, 0x8a, 0x68, - 0x51, 0x31, 0xf3, 0x85, 0x5c, 0x3f, 0xe5, 0x39, 0x86, 0xed, 0xaf, 0xd2, - 0xa1, 0x8f, 0xc3, 0x6b, 0x77, 0x31, 0xaa, 0x28, 0x53, 0xc8, 0x07, 0x03, - 0xd0, 0x3f, 0x39, 0x55, 0x90, 0xb3, 0xf2, 0x59, 0x26, 0x66, 0x42, 0x4a, - 0x6b, 0xc4, 0x13, 0xab, 0x78, 0x53, 0x19, 0x3f, 0x17, 0x65, 0x68, 0xfa, - 0x13, 0xc9, 0x79, 0x00, 0xc2, 0x22, 0xe8, 0x5f, 0x44, 0x04, 0x7f, 0x5d, - 0x4f, 0x11, 0xc3, 0x7c, 0x18, 0xe1, 0xe3, 0x2a, 0xf0, 0x0e, 0xb1, 0x12, - 0x1e, 0x44, 0x2b, 0x50, 0x06, 0x0e, 0xe5, 0x65, 0x36, 0xb3, 0xe0, 0x22, - 0xf7, 0x05, 0x77, 0x70, 0x70, 0x04, 0x19, 0x6e, 0xf3, 0x20, 0xe9, 0x34, - 0xfd, 0x35, 0x88, 0x3d, 0x42, 0x76, 0xea, 0x22, 0xad, 0x4e, 0x8f, 0x12, - 0xa3, 0x0a, 0x7d, 0x5a, 0x63, 0x95, 0xda, 0xd6, 0x3a, 0xb3, 0xc3, 0xff, - 0x21, 0x71, 0xe0, 0x1c, 0x95, 0x79, 0x90, 0x46, 0x29, 0xb6, 0x7d, 0x8e, - 0xc4, 0xa3, 0x1b, 0xc9, 0xb1, 0xeb, 0x9d, 0xb0, 0x9c, 0xd2, 0xd9, 0x6f, - 0x12, 0xbb, 0x74, 0xd9, 0xf2, 0xc5, 0xf6, 0x1c, 0x36, 0x3c, 0xc9, 0x34, - 0xa6, 0x57, 0xe3, 0xac, 0x0f, 0x69, 0x82, 0x80, 0x0d, 0xff, 0xe2, 0x19, - 0xb4, 0x45, 0xa7, 0x71, 0x08, 0x90, 0xae, 0x2c, 0xc0, 0xfd, 0xd6, 0xc3, - 0x68, 0xa7, 0x52, 0xe0, 0xf3, 0x2e, 0x91, 0xaf, 0x4b, 0xc3, 0x4e, 0xea, - 0x18, 0x07, 0xec, 0x76, 0x88, 0x23, 0x0d, 0xfb, 0x9f, 0x95, 0x59, 0xcd, - 0x71, 0x1a, 0x51, 0xa8, 0x91, 0x32, 0xdc, 0x2a, 0xe2, 0xc5, 0x01, 0xc3, - 0x47, 0x23, 0x28, 0xfc, 0x37, 0x93, 0x0d, 0xb1, 0xaa, 0x00, 0x66, 0x55, - 0x46, 0x9e, 0x43, 0xd4, 0xfa, 0x47, 0xc8, 0xec, 0x9c, 0x5c, 0xc6, 0x69, - 0xc2, 0x0d, 0xdf, 0x0d, 0x3d, 0x69, 0xc2, 0x2d, 0xbe, 0x13, 0x6f, 0x85, - 0x8d, 0x4f, 0xd8, 0x66, 0x14, 0x92, 0xcf, 0x1c, 0xe8, 0xd1, 0x20, 0x4b, - 0xdf, 0x2e, 0x93, 0xa2, 0x21, 0xda, 0x76, 0x52, 0xd4, 0x03, 0x0d, 0xe3, - 0x1f, 0x08, 0x9b, 0x19, 0xcf, 0x76, 0xd2, 0x07, 0x7b, 0xf5, 0xbc, 0xa0, - 0xc5, 0x81, 0x09, 0xbe, 0x90, 0x0f, 0xcc, 0xf7, 0x08, 0xc3, 0xc9, 0x98, - 0xf3, 0x7e, 0x7c, 0xb5, 0x5a, 0x76, 0xa4, 0x89, 0x44, 0x4a, 0xa8, 0xb8, - 0x0b, 0xb7, 0xf6, 0xb7, 0xd3, 0xa0, 0x85, 0x24, 0x41, 0x1f, 0x90, 0xf3, - 0x77, 0x6c, 0x68, 0x9a, 0xc0, 0xfa, 0xa1, 0x32, 0xfb, 0x91, 0x66, 0x4b, - 0xdf, 0x55, 0xe3, 0x3a, 0xb0, 0xbc, 0x30, 0xd4, 0x6f, 0xb1, 0x6d, 0x0d, - 0x3f, 0x3b, 0x83, 0x39, 0xdb, 0x7c, 0x91, 0xb0, 0x72, 0x96, 0x20, 0xa9, - 0x0b, 0x30, 0xe8, 0x9d, 0xaa, 0x1e, 0x95, 0x4a, 0x0f, 0x2e, 0xda, 0x66, - 0xc3, 0xb9, 0xb4, 0x5c, 0x2d, 0xc9, 0xe7, 0x06, 0x0d, 0xd1, 0x8b, 0x9d, - 0x7c, 0xa6, 0x3a, 0x9a, 0x57, 0x4e, 0x14, 0x7f, 0x76, 0x4c, 0xc5, 0xa2, - 0xbc, 0xf8, 0x73, 0xa4, 0x16, 0x39, 0x71, 0x4a, 0x27, 0x24, 0xa4, 0xd2, - 0x54, 0x34, 0xae, 0x24, 0x61, 0xab, 0xc8, 0x0f, 0xbd, 0x97, 0xe7, 0x0e, - 0xde, 0x1e, 0x28, 0x9a, 0x45, 0x15, 0x8e, 0xda, 0x51, 0x8f, 0x90, 0xe0, - 0xf8, 0xb0, 0xfa, 0x3d, 0xb3, 0x7e, 0x8a, 0xc9, 0x3b, 0x12, 0x4f, 0x8b, - 0x3a, 0x6a, 0xe5, 0x46, 0xea, 0x15, 0xaa, 0x7a, 0x18, 0x20, 0xa4, 0x46, - 0x0b, 0xec, 0x2a, 0x49, 0x97, 0xba, 0x3e, 0xe3, 0x69, 0xb8, 0x8e, 0x31, - 0xf7, 0x35, 0x14, 0x7a, 0x90, 0x0e, 0xca, 0x9e, 0x2a, 0x14, 0x81, 0xb6, - 0xbd, 0x0c, 0x3d, 0x78, 0x24, 0x35, 0xa5, 0x84, 0xc1, 0xad, 0xfa, 0x32, - 0xc7, 0xb7, 0x36, 0x96, 0x72, 0xce, 0xa6, 0xf2, 0x60, 0xd0, 0x12, 0x7b, - 0xbc, 0xab, 0xfa, 0xb0, 0xde, 0x59, 0xba, 0xf3, 0x50, 0xb0, 0xa6, 0x4b, - 0xcb, 0x7b, 0x64, 0xd8, 0x63, 0x7f, 0x1e, 0xef, 0x4f, 0x87, 0x2d, 0xce, - 0x3e, 0xc8, 0xd2, 0x92, 0x95, 0x02, 0x97, 0xc6, 0xbe, 0x2c, 0x1f, 0x5b, - 0x8e, 0x0c, 0x83, 0xac, 0x02, 0x3b, 0x42, 0x46, 0x52, 0x58, 0x4a, 0xb9, - 0xc9, 0xf6, 0x18, 0x87, 0x27, 0x99, 0x21, 0x44, 0x81, 0x68, 0xf3, 0xce, - 0x28, 0x26, 0x0b, 0x09, 0x08, 0x0a, 0x4a, 0xf2, 0x84, 0x6e, 0x7d, 0x5f, - 0xbe, 0x35, 0x7c, 0x87, 0x98, 0x61, 0x07, 0xeb, 0x0e, 0xb8, 0x4f, 0x34, - 0xd5, 0x3b, 0x33, 0x57, 0x0f, 0x2e, 0x2f, 0x98, 0x11, 0x53, 0x6d, 0xcb, - 0xb2, 0xfb, 0xd9, 0x49, 0xd4, 0x60, 0x03, 0x6d, 0x2c, 0x0d, 0x31, 0xa8, - 0x39, 0xc5, 0x1c, 0xda, 0x65, 0x4a, 0xf6, 0x83, 0x5d, 0x71, 0xfb, 0x2f, - 0x42, 0xd6, 0x14, 0x1d, 0x11, 0xcc, 0x4d, 0x50, 0x3d, 0x5e, 0x63, 0x0d, - 0xa1, 0xe6, 0xd4, 0x61, 0x8c, 0xd8, 0xfc, 0x21, 0x88, 0xe0, 0xfc, 0x97, - 0x9b, 0x41, 0xb7, 0xd9, 0xa0, 0xc8, 0x41, 0xd3, 0xb5, 0x9f, 0x90, 0xd3, - 0x6d, 0x02, 0xbc, 0xb0, 0x62, 0xa9, 0x62, 0x2b, 0x73, 0x69, 0x24, 0x97, - 0x7b, 0xcb, 0x65, 0x66, 0xc9, 0x2e, 0x13, 0x4c, 0x7c, 0x68, 0xb2, 0x66, - 0x44, 0x9d, 0x55, 0x8d, 0x3a, 0xea, 0x9d, 0x42, 0x79, 0x72, 0x6d, 0xed, - 0xad, 0x8d, 0xcf, 0x02, 0xda, 0x22, 0xb9, 0xa0, 0x99, 0xcf, 0xf4, 0xa3, - 0x1c, 0x92, 0xfe, 0x74, 0xc9, 0x3c, 0x60, 0xa4, 0x6b, 0x80, 0xb2, 0x3d, - 0x0e, 0xed, 0x5e, 0x0a, 0xa0, 0x23, 0xb4, 0xd0, 0xac, 0x72, 0xea, 0xe4, - 0xe0, 0x05, 0x4d, 0x1e, 0x59, 0x05, 0x3a, 0x04, 0x4b, 0x9c, 0xc1, 0xc5, - 0x98, 0xf9, 0xec, 0x4f, 0xa1, 0xec, 0x6d, 0x73, 0x69, 0x33, 0xb5, 0x92, - 0x68, 0x6c, 0xcf, 0x82, 0x1e, 0x83, 0xea, 0x5b, 0xd0, 0xe5, 0xcf, 0x1e, - 0x0e, 0x47, 0xe9, 0x3a, 0x9e, 0xb3, 0x5d, 0x00, 0xfe, 0x0d, 0x38, 0xaa, - 0x19, 0xd5, 0xc6, 0x8d, 0x05, 0x1e, 0x1f, 0x46, 0xd7, 0x56, 0x75, 0x9b, - 0x3c, 0x1b, 0x4a, 0x10, 0xef, 0xbd, 0x3b, 0x76, 0x8a, 0x28, 0xd0, 0x9a, - 0xb7, 0x56, 0xe7, 0x4c, 0x5d, 0x48, 0x77, 0xe2, 0xac, 0xf0, 0xb6, 0xb6, - 0x1b, 0xce, 0x51, 0xe5, 0xf7, 0x11, 0x5a, 0xa4, 0xd4, 0xc9, 0xd6, 0xcc, - 0x6f, 0xd1, 0xeb, 0x0b, 0xc5, 0x8f, 0xaf, 0xdc, 0x14, 0xe8, 0x03, 0x4f, - 0x5d, 0xe1, 0x53, 0x47, 0x21, 0x71, 0x0a, 0x55, 0x89, 0x75, 0x44, 0x8c, - 0x30, 0x44, 0x76, 0x1d, 0x36, 0x1a, 0xf4, 0xee, 0x6a, 0xde, 0xd9, 0xd0, - 0x0e, 0xbf, 0x72, 0x4b, 0x30, 0x46, 0x80, 0x78, 0xd3, 0x75, 0x22, 0xff, - 0xbc, 0xe3, 0xaa, 0x40, 0xe2, 0x97, 0x26, 0x47, 0x10, 0xe7, 0xd2, 0xc6, - 0x3f, 0x3f, 0xcf, 0x48, 0x39, 0x1e, 0x5b, 0x5d, 0xb9, 0xe1, 0x4d, 0x36, - 0xa9, 0x88, 0x98, 0xf9, 0x76, 0xa1, 0xc1, 0x20, 0xb7, 0x6c, 0xac, 0xde, - 0xf7, 0x9b, 0x53, 0xda, 0x45, 0x72, 0x30, 0xb4, 0xb5, 0x46, 0x02, 0x2b, - 0xc1, 0xa9, 0xf7, 0x8a, 0x83, 0x47, 0x6a, 0xba, 0x16, 0xd7, 0x10, 0x02, - 0x15, 0x3b, 0x26, 0x6d, 0xe0, 0x21, 0xc7, 0xd6, 0x4c, 0x14, 0x58, 0x36, - 0xab, 0xc6, 0xa3, 0x87, 0x99, 0x5d, 0x90, 0x65, 0x4b, 0xaf, 0x64, 0xe7, - 0xb0, 0xab, 0x3a, 0xd6, 0x32, 0x87, 0x16, 0xa4, 0x44, 0x7f, 0xbd, 0x01, - 0x46, 0xf5, 0x41, 0x0a, 0xe9, 0xed, 0xf5, 0xc4, 0x66, 0xcd, 0xd4, 0xda, - 0x00, 0xf0, 0xd0, 0x64, 0xd7, 0x8f, 0xde, 0xc2, 0x25, 0x8d, 0x8c, 0x57, - 0xe4, 0x6d, 0x19, 0x2a, 0x57, 0x30, 0x45, 0x33, 0x46, 0x94, 0xbe, 0xb7, - 0xea, 0xbe, 0xb3, 0x98, 0xee, 0xa7, 0xa9, 0x1d, 0xa2, 0xdd, 0x8f, 0x8d, - 0x06, 0x40, 0xa6, 0x36, 0xf0, 0x0e, 0xfd, 0x5a, 0x00, 0x87, 0x71, 0x10, - 0x76, 0x17, 0x86, 0x49, 0xd2, 0x07, 0xdf, 0x54, 0x3c, 0x7e, 0xaf, 0x80, - 0x2f, 0x26, 0x5a, 0xed, 0x78, 0x9c, 0xcd, 0x33, 0x41, 0x42, 0x5c, 0xfa, - 0x56, 0x9b, 0x76, 0x2f, 0x8f, 0x59, 0x84, 0x3c, 0x02, 0xf0, 0x99, 0x1b, - 0x76, 0xec, 0x82, 0x44, 0xb9, 0xc7, 0xf9, 0x68, 0xcd, 0xcf, 0x96, 0x87, - 0x16, 0x0b, 0x42, 0x14, 0x99, 0xca, 0x57, 0x0b, 0xfe, 0xda, 0x97, 0x69, - 0x57, 0x44, 0xa1, 0x84, 0xb0, 0x64, 0x19, 0xee, 0x6f, 0xe4, 0xed, 0x85, - 0xf5, 0xe8, 0x51, 0xe1, 0xfa, 0xa5, 0x4c, 0x1c, 0x28, 0x8c, 0x3f, 0x55, - 0xd2, 0xfd, 0xf4, 0xcf, 0x8c, 0x40, 0x8d, 0x8a, 0xa3, 0xec, 0xee, 0xe2, - 0xe6, 0x0d, 0x15, 0x28, 0x82, 0xcd, 0xc7, 0x45, 0xea, 0x84, 0x3c, 0x35, - 0x68, 0x5d, 0x49, 0x38, 0x88, 0x9c, 0xde, 0x6d, 0x3a, 0x4b, 0x65, 0xce, - 0xfd, 0x28, 0x3a, 0xa5, 0xb2, 0x89, 0x5b, 0x0e, 0x41, 0xd9, 0xfb, 0xd1, - 0x42, 0xae, 0xb3, 0x1e, 0x85, 0x3e, 0xf2, 0x8f, 0x71, 0x98, 0xc5, 0x75, - 0x33, 0x89, 0x6f, 0x62, 0xb3, 0xf5, 0xd0, 0x5a, 0x2d, 0xf2, 0x60, 0x6d, - 0x86, 0x32, 0x6b, 0xaa, 0x44, 0xa5, 0xb4, 0xa1, 0x14, 0xcb, 0x89, 0x5c, - 0x49, 0x17, 0x52, 0x0d, 0xaf, 0x2f, 0x2c, 0x7a, 0x96, 0x97, 0x91, 0x84, - 0xe3, 0x79, 0xbe, 0x25, 0x79, 0x37, 0x11, 0xff, 0xbc, 0x55, 0x9a, 0xf4, - 0x2a, 0x09, 0xc5, 0x91, 0x77, 0x0a, 0x39, 0x3f, 0x10, 0xe4, 0x59, 0x1e, - 0xa6, 0xd3, 0x14, 0x88, 0xcd, 0xbf, 0x8b, 0x92, 0xd0, 0x53, 0x4f, 0x94, - 0x1b, 0xb9, 0xa8, 0x63, 0xbd, 0x71, 0x6e, 0xb4, 0x3d, 0xc9, 0x3e, 0x82, - 0xcb, 0x75, 0xb2, 0x69, 0xb5, 0x53, 0x86, 0xc2, 0x35, 0x2b, 0x82, 0xa1, - 0x74, 0xdf, 0x55, 0xb1, 0x3a, 0x04, 0x64, 0x8f, 0x7a, 0x1b, 0x48, 0x38, - 0x74, 0xf2, 0xf0, 0xf6, 0x15, 0x59, 0x11, 0x33, 0x2f, 0x7b, 0xa7, 0x11, - 0xa3, 0x69, 0x75, 0xc2, 0x79, 0x4f, 0x07, 0xde, 0xcc, 0x71, 0x9b, 0x31, - 0x99, 0x76, 0xa0, 0xa0, 0x8c, 0x80, 0x58, 0xb7, 0x5b, 0x85, 0xb6, 0x8c, - 0xef, 0x7c, 0x9c, 0xea, 0x74, 0xb1, 0xe9, 0x63, 0xdf, 0xfc, 0x87, 0x00, - 0xae, 0x0d, 0x99, 0x4e, 0xd2, 0x51, 0x0f, 0xb9, 0x4f, 0xc2, 0xfa, 0xbe, - 0x79, 0x68, 0xc5, 0x91, 0x91, 0x5d, 0xb1, 0x2e, 0xee, 0x84, 0xe5, 0xd1, - 0x98, 0xfb, 0x8e, 0xfe, 0x80, 0xd8, 0x27, 0x18, 0x02, 0x16, 0xeb, 0x61, - 0xbd, 0xac, 0x07, 0x07, 0x0f, 0x6f, 0xa8, 0xe6, 0x1f, 0x5a, 0x89, 0xd3, - 0x43, 0x66, 0x80, 0xe4, 0x8b, 0x38, 0x25, 0x44, 0x43, 0x6c, 0x17, 0x9a, - 0x2a, 0xa2, 0x55, 0x72, 0x90, 0x46, 0x28, 0x4e, 0xdf, 0x8a, 0xdc, 0xa0, - 0xf7, 0x99, 0x19, 0xbc, 0x23, 0xc5, 0x46, 0xea, 0x19, 0x95, 0xa1, 0xf8, - 0x4a, 0x9c, 0x07, 0x8b, 0x8f, 0x5c, 0x51, 0xa9, 0x86, 0x76, 0x57, 0xe8, - 0x81, 0x7d, 0x0a, 0xb8, 0x62, 0x0a, 0xcc, 0x78, 0x64, 0x71, 0xd7, 0x6a, - 0x29, 0xdf, 0xa4, 0x7a, 0xad, 0x4d, 0xc0, 0xd1, 0xa2, 0x65, 0x15, 0x04, - 0x69, 0x6a, 0x96, 0x68, 0x0f, 0x76, 0x99, 0xd3, 0xb5, 0xe2, 0xca, 0xb4, - 0x49, 0x41, 0xe9, 0x1e, 0x4d, 0x1a, 0xe0, 0xa6, 0x5a, 0x12, 0xe7, 0xb4, - 0x5b, 0xdb, 0xf7, 0x8d, 0xe8, 0x7c, 0xca, 0x12, 0xc2, 0xcc, 0xff, 0x27, - 0x8f, 0xe4, 0x57, 0x71, 0x49, 0x7c, 0x59, 0x53, 0x90, 0xcb, 0x05, 0xfb, - 0x61, 0xff, 0x37, 0x71, 0x5b, 0x92, 0xd1, 0xc1, 0xdc, 0x56, 0x51, 0x53, - 0x18, 0x51, 0x26, 0xb9, 0x5e, 0xa1, 0xed, 0x7a, 0xf5, 0xe3, 0x8d, 0x94, - 0xce, 0x6f, 0x6e, 0x79, 0x9e, 0xaa, 0xa3, 0x9a, 0x36, 0xc8, 0x0d, 0x0d, - 0xcf, 0x2f, 0x77, 0x99, 0xfd, 0x01, 0xed, 0xb6, 0x12, 0xee, 0x11, 0xea, - 0xeb, 0x02, 0x63, 0xdd, 0x4d, 0xdb, 0x75, 0x2b, 0x53, 0xc2, 0x24, 0xc7, - 0x5f, 0xd6, 0x9c, 0x17, 0x2d, 0x80, 0x1d, 0x7a, 0x1e, 0x4a, 0x56, 0xd2, - 0xb7, 0x1b, 0x51, 0x52, 0xe5, 0x91, 0x89, 0x52, 0x4b, 0x70, 0xc8, 0xc1, - 0x74, 0x77, 0xc8, 0x24, 0x59, 0x39, 0x2d, 0xd7, 0xb6, 0x55, 0x09, 0xa7, - 0x45, 0x1a, 0x45, 0x53, 0xaf, 0x99, 0x07, 0xc5, 0x4b, 0x37, 0xac, 0x62, - 0x9e, 0xc0, 0x1e, 0x90, 0x59, 0x76, 0x51, 0x4e, 0x93, 0x24, 0x16, 0x11, - 0xfd, 0x06, 0xd5, 0xb6, 0xf0, 0x38, 0xb8, 0x29, 0x8f, 0x8b, 0x9c, 0x42, - 0x2d, 0x10, 0x78, 0xe1, 0x9c, 0x97, 0xd9, 0x36, 0x6b, 0x60, 0x33, 0x0f, - 0xce, 0x91, 0x0d, 0xb9, 0xe5, 0x0b, 0xf4, 0xa8, 0xab, 0x48, 0xd3, 0xf0, - 0xce, 0x43, 0x79, 0xa1, 0x72, 0xb6, 0x55, 0x71, 0x00, 0xd1, 0x65, 0xd5, - 0x29, 0xca, 0xce, 0x14, 0xc2, 0x99, 0x27, 0xae, 0x46, 0xdc, 0x30, 0x22, - 0x35, 0x1c, 0x1e, 0xa8, 0xd9, 0xd4, 0x6a, 0xef, 0xda, 0x68, 0x8c, 0x20, - 0x08, 0x82, 0x90, 0x8f, 0x04, 0x0d, 0x7c, 0x8d, 0x8e, 0xb9, 0x45, 0xbb, - 0x49, 0xe3, 0x68, 0x85, 0xbd, 0xa9, 0x85, 0x9b, 0xf7, 0x5d, 0x51, 0x0e, - 0x2f, 0xeb, 0x59, 0x0f, 0xab, 0x99, 0xc9, 0x9c, 0x3a, 0x4c, 0x28, 0x55, - 0x41, 0x72, 0xae, 0xfa, 0x39, 0x23, 0xad, 0x11, 0xe2, 0xee, 0x92, 0x9a, - 0x4f, 0xc3, 0x8e, 0xda, 0x04, 0x9a, 0x07, 0xac, 0x3d, 0x61, 0xe2, 0x6b, - 0x64, 0xb8, 0xfe, 0x56, 0x6a, 0xe6, 0x32, 0x51, 0x8d, 0xdb, 0x46, 0xfe, - 0x00, 0xac, 0x40, 0x76, 0x99, 0x40, 0x24, 0xd0, 0x15, 0x67, 0x67, 0xd9, - 0xe7, 0x58, 0x24, 0x32, 0x63, 0x60, 0x2e, 0x1c, 0xfb, 0x0c, 0x83, 0xa7, - 0x96, 0xbd, 0x75, 0x5c, 0x83, 0x53, 0xd3, 0x0d, 0xd1, 0x9f, 0xb7, 0x32, - 0x37, 0x2c, 0x33, 0xc8, 0xac, 0xbc, 0x95, 0xbb, 0x60, 0x6e, 0x9e, 0xc4, - 0xd1, 0xdb, 0x5b, 0x52, 0xeb, 0xec, 0xe2, 0x80, 0x7e, 0xa5, 0xc4, 0xd0, - 0x1e, 0xd3, 0x37, 0x95, 0xc0, 0xbc, 0xc5, 0x1b, 0x7c, 0x72, 0x3d, 0xfc, - 0x3c, 0x2a, 0xe3, 0x7d, 0x83, 0xa1, 0x53, 0x05, 0x22, 0x9f, 0xb3, 0x2f, - 0xf7, 0xc4, 0x61, 0x06, 0x94, 0x93, 0xb7, 0x33, 0x15, 0x07, 0x81, 0x10, - 0x6e, 0x39, 0x74, 0xf3, 0x67, 0x30, 0xa1, 0xeb, 0xe6, 0x59, 0xc5, 0xa0, - 0x79, 0xe4, 0x92, 0x55, 0x5f, 0x9d, 0x86, 0x5b, 0xcc, 0xa5, 0x5b, 0xf6, - 0x7e, 0xe7, 0x6f, 0xd2, 0x57, 0x0f, 0xbb, 0x4e, 0xb1, 0x6e, 0xad, 0xd0, - 0x32, 0x1c, 0xc2, 0x25, 0xf2, 0xbe, 0x4d, 0x2c, 0xa5, 0xc6, 0xaf, 0xab, - 0x2a, 0x3e, 0x62, 0x90, 0xb1, 0x36, 0xcf, 0x78, 0x66, 0x22, 0xd2, 0x23, - 0xec, 0x98, 0xee, 0xb7, 0x8d, 0x55, 0x70, 0xc7, 0x45, 0x9b, 0x13, 0xcd, - 0x96, 0xd7, 0x19, 0xf5, 0x0b, 0x4e, 0xc0, 0xa1, 0x90, 0x79, 0xd8, 0xb1, - 0xaf, 0xd9, 0x48, 0xb9, 0x15, 0x2e, 0xb6, 0x56, 0x6f, 0x17, 0x8f, 0x3e, - 0xd3, 0x72, 0x2e, 0x66, 0xd8, 0x6c, 0xa5, 0x72, 0x12, 0x59, 0x62, 0x81, - 0x59, 0x93, 0x91, 0x4b, 0x9b, 0x80, 0x6f, 0x6c, 0xc1, 0x18, 0xa4, 0x82, - 0xf3, 0xbb, 0xbd, 0xa1, 0x89, 0xf7, 0x97, 0x73, 0xbf, 0xb8, 0xe9, 0x27, - 0x9b, 0xa4, 0xf8, 0xdc, 0xf2, 0x5a, 0x3e, 0xeb, 0xff, 0x79, 0xa7, 0xae, - 0x54, 0x82, 0x55, 0x99, 0x16, 0xc4, 0x9d, 0x95, 0x4b, 0x67, 0xa4, 0x7a, - 0x20, 0x20, 0xc8, 0x24, 0x05, 0xde, 0x5a, 0x40, 0xd8, 0x5a, 0xdf, 0x41, - 0x20, 0x48, 0x7a, 0xaf, 0x40, 0x79, 0xcd, 0x30, 0xef, 0x21, 0x70, 0x3b, - 0x83, 0x23, 0x87, 0xd9, 0x8f, 0x2d, 0x6e, 0x35, 0x65, 0x5a, 0x11, 0xe4, - 0x55, 0x23, 0x6d, 0xf0, 0x0c, 0x78, 0x8c, 0x19, 0xde, 0xa0, 0xdd, 0xca, - 0x0d, 0xea, 0x78, 0xa0, 0x83, 0x00, 0xac, 0x25, 0x05, 0xf0, 0x7d, 0x48, - 0xac, 0xce, 0x4c, 0x8e, 0xdf, 0xd0, 0x84, 0x90, 0x7a, 0xbb, 0x5c, 0xfa, - 0xd9, 0x08, 0x71, 0x8a, 0xa0, 0x2a, 0x66, 0x23, 0x84, 0xa7, 0xd9, 0xab, - 0x91, 0xed, 0xc9, 0x2b, 0x7c, 0xa3, 0xb1, 0x2d, 0xc3, 0xe7, 0x6c, 0xda, - 0x8e, 0xc1, 0xd0, 0x15, 0xee, 0xe3, 0xe0, 0x16, 0xc0, 0x93, 0xb7, 0xdd, - 0x7d, 0x62, 0x09, 0x3a, 0x2a, 0xfa, 0x97, 0xe2, 0xe0, 0x25, 0xa3, 0x6f, - 0x90, 0x2a, 0xe2, 0xdc, 0xbe, 0x2b, 0x66, 0xf2, 0xa8, 0x70, 0x9f, 0x51, - 0x6a, 0xd7, 0xc8, 0xdd, 0x98, 0x53, 0x81, 0xd4, 0x33, 0x06, 0x38, 0x23, - 0x6f, 0x0c, 0x23, 0xe3, 0x24, 0x7a, 0xb3, 0x75, 0x1b, 0xe9, 0x3f, 0x55, - 0xd9, 0x09, 0xc6, 0x34, 0xd9, 0x3b, 0xe7, 0xac, 0x94, 0x91, 0x0f, 0xa2, - 0x5e, 0xb6, 0x46, 0xf5, 0x31, 0xc5, 0x21, 0xa6, 0x94, 0x15, 0x33, 0x24, - 0x9c, 0xa5, 0xd4, 0xac, 0xdd, 0xc2, 0x62, 0x75, 0x2d, 0xcb, 0x81, 0x4e, - 0x9d, 0x48, 0xd4, 0xa0, 0xfc, 0xcf, 0x00, 0xe3, 0x8e, 0x41, 0xa5, 0x87, - 0x93, 0x39, 0xfb, 0x3e, 0xed, 0xdb, 0x4d, 0xce, 0x41, 0xb1, 0x45, 0x84, - 0xff, 0x5e, 0x22, 0x43, 0xd2, 0xb6, 0xf4, 0xd9, 0x12, 0xed, 0x3f, 0xe4, - 0x29, 0x29, 0xc3, 0xc6, 0xaf, 0xf5, 0xbd, 0xc3, 0xac, 0xf1, 0xc3, 0xf1, - 0xf3, 0x06, 0xfe, 0x8d, 0x6c, 0x6c, 0x27, 0xa8, 0xe8, 0x3e, 0x50, 0xac, - 0x68, 0xd5, 0x53, 0xb4, 0x47, 0xd7, 0xad, 0xbb, 0x54, 0x16, 0x78, 0x0a, - 0x16, 0x01, 0x0c, 0xce, 0x48, 0x0a, 0x2c, 0xd0, 0xbb, 0xc0, 0x5d, 0x05, - 0x08, 0xb5, 0x47, 0x95, 0x63, 0xdf, 0x1c, 0x00, 0x98, 0x39, 0x1f, 0x96, - 0x2f, 0xe3, 0x5d, 0x4e, 0x85, 0x89, 0xf2, 0xcf, 0xbc, 0x6d, 0x00, 0x27, - 0xd1, 0x9f, 0x6f, 0xc8, 0x90, 0x40, 0x5e, 0x36, 0x61, 0x4c, 0x00, 0x23, - 0x4f, 0x29, 0x65, 0xc3, 0xdb, 0x1c, 0xa6, 0x91, 0x75, 0x28, 0x7e, 0x7f, - 0x90, 0xba, 0xe6, 0x81, 0x38, 0x1d, 0x3b, 0x26, 0x04, 0xf7, 0xac, 0xea, - 0x17, 0x7f, 0x45, 0xd7, 0x94, 0xdb, 0x47, 0x2e, 0x2b, 0x85, 0xe8, 0xc8, - 0x65, 0xd8, 0xfc, 0xa8, 0xfe, 0xab, 0x85, 0x70, 0xca, 0xc2, 0xc0, 0x14, - 0x1b, 0x05, 0x13, 0x9f, 0x10, 0x48, 0xc1, 0x73, 0x9b, 0xdd, 0xc6, 0x9d, - 0xdc, 0xb9, 0x9c, 0x82, 0x6f, 0x71, 0xe3, 0x63, 0x52, 0x04, 0x85, 0x4c, - 0x91, 0x29, 0x53, 0x31, 0x1d, 0xc6, 0xa6, 0x28, 0xd3, 0x74, 0x4d, 0x62, - 0x03, 0xdb, 0x11, 0x8e, 0xa7, 0xf4, 0x7c, 0x6a, 0x9b, 0x9b, 0x84, 0xaf, - 0x8b, 0x2e, 0x76, 0x72, 0x87, 0xd5, 0xc3, 0x34, 0x4c, 0xac, 0xf3, 0x7e, - 0x0a, 0xa2, 0x89, 0x65, 0x0d, 0xd0, 0x53, 0xce, 0xa5, 0x20, 0x85, 0x10, - 0x5f, 0x3f, 0x23, 0x05, 0xe1, 0x84, 0x23, 0x15, 0x6a, 0x86, 0x25, 0xc1, - 0xc6, 0xc1, 0xc1, 0xe4, 0xf3, 0x51, 0xc6, 0x44, 0xa6, 0x50, 0x7c, 0x1a, - 0x53, 0x2a, 0x3c, 0x69, 0x27, 0x49, 0x0e, 0x25, 0x27, 0xe6, 0x1e, 0x80, - 0x40, 0x3d, 0x3f, 0x4c, 0xf5, 0xb8, 0x9b, 0x62, 0x0d, 0x5c, 0x38, 0x4f, - 0xbe, 0xbf, 0x0a, 0x85, 0xaa, 0x4d, 0x53, 0x7a, 0xe8, 0x88, 0xef, 0xb4, - 0x15, 0xaf, 0xb2, 0x62, 0x81, 0x3b, 0x34, 0x1a, 0xfb, 0x29, 0x5d, 0x5f, - 0x4e, 0x6d, 0xcb, 0x76, 0x0a, 0x4d, 0x5a, 0xb0, 0xc1, 0xe5, 0x88, 0x6a, - 0xd8, 0xc6, 0xb1, 0xaa, 0xb3, 0x54, 0x4b, 0xa6, 0x21, 0x51, 0x5d, 0x69, - 0xd4, 0xfa, 0xde, 0x78, 0x19, 0xa4, 0x01, 0x6f, 0xf5, 0xb7, 0xdc, 0x96, - 0x1d, 0x7e, 0xa7, 0x3d, 0x94, 0x6c, 0x4d, 0x27, 0x8d, 0xc5, 0xec, 0x2d, - 0x95, 0x51, 0x33, 0xf5, 0x34, 0x79, 0xae, 0x76, 0xbd, 0x34, 0x25, 0x39, - 0x3d, 0x34, 0xf8, 0x07, 0x25, 0x8a, 0x06, 0x58, 0xd9, 0x2f, 0x25, 0xb0, - 0xc1, 0xe1, 0xc0, 0x85, 0x54, 0x84, 0x71, 0x4d, 0xda, 0xaf, 0xfe, 0x23, - 0x9b, 0x78, 0xb4, 0xa1, 0xb9, 0x94, 0xe8, 0x93, 0x6e, 0xfd, 0xb1, 0xe7, - 0xd7, 0x87, 0xa3, 0x04, 0xae, 0xe8, 0xa5, 0x70, 0xa8, 0xfe, 0xb9, 0x65, - 0x7a, 0xc0, 0xd3, 0xff, 0xd2, 0xe5, 0xb7, 0xda, 0x34, 0xb9, 0x39, 0x08, - 0x3d, 0xa1, 0xb8, 0xb4, 0xe7, 0x58, 0xbf, 0x3d, 0xe2, 0x1c, 0x82, 0x27, - 0x8c, 0xb0, 0xae, 0x64, 0xf7, 0x8c, 0x00, 0x3a, 0xc7, 0xf9, 0x49, 0x19, - 0xd0, 0x40, 0x8e, 0x24, 0x18, 0xab, 0x6c, 0xc2, 0x60, 0xeb, 0x90, 0x21, - 0xcb, 0xc6, 0xf5, 0x49, 0x66, 0x08, 0x55, 0xb8, 0x1d, 0xe3, 0xf8, 0x8c, - 0x89, 0x79, 0xcb, 0xc3, 0xb8, 0x7c, 0x01, 0xf1, 0x4c, 0x3a, 0xcd, 0x16, - 0xbb, 0xb0, 0x46, 0xc8, 0x98, 0xe2, 0x27, 0xe1, 0xf5, 0x8a, 0x09, 0x1a, - 0xdd, 0x5f, 0x2a, 0x50, 0x5b, 0xc9, 0x75, 0xc3, 0xaf, 0xff, 0x7e, 0x26, - 0x0c, 0x5b, 0xf7, 0xb1, 0x14, 0x10, 0x73, 0x9a, 0xd7, 0x01, 0x92, 0xd2, - 0x80, 0xae, 0x2e, 0xb0, 0x60, 0xf1, 0x68, 0x12, 0xd8, 0xb4, 0x45, 0x5d, - 0x59, 0xfe, 0x0d, 0xd0, 0xd3, 0x3f, 0x55, 0x0d, 0x54, 0xf0, 0xd3, 0x96, - 0xb7, 0x02, 0xa4, 0x3a, 0xe2, 0x08, 0xf0, 0x93, 0xb5, 0x1f, 0xba, 0x16, - 0x42, 0x0b, 0xe5, 0x96, 0xe1, 0xf9, 0xb4, 0xc5, 0xae, 0x0f, 0xe8, 0x2c, - 0xdd, 0x3d, 0xcc, 0x9c, 0xab, 0x75, 0x70, 0x76, 0x8f, 0x58, 0x95, 0x3c, - 0xc1, 0xf2, 0xc6, 0x97, 0x45, 0xe6, 0xd1, 0x20, 0x15, 0x3f, 0x65, 0xcc, - 0x8d, 0x7c, 0x1b, 0x5a, 0x9e, 0x3b, 0xc9, 0x98, 0x58, 0xa7, 0xe1, 0x61, - 0xd9, 0xda, 0x31, 0x26, 0x7c, 0xc4, 0xf9, 0xaf, 0x07, 0xc2, 0x5b, 0x8a, - 0xe9, 0x6f, 0x1a, 0xb4, 0x17, 0x36, 0xf7, 0x27, 0x39, 0x23, 0x8c, 0x31, - 0x28, 0x44, 0xbe, 0x3b, 0xfa, 0xc3, 0xb4, 0x0f, 0xd3, 0x98, 0x54, 0x79, - 0x7d, 0x0e, 0xc7, 0xd9, 0x80, 0x98, 0x85, 0xcb, 0x15, 0x49, 0x10, 0x0a, - 0x44, 0xfa, 0x04, 0x75, 0x4b, 0xa1, 0x09, 0xdb, 0x59, 0x68, 0x56, 0x73, - 0xb1, 0x2d, 0x33, 0x05, 0xea, 0x73, 0xbb, 0x42, 0x1a, 0x35, 0xf5, 0x45, - 0x46, 0x52, 0x79, 0xfd, 0xb1, 0xe1, 0xb9, 0x9b, 0x18, 0xcc, 0x3b, 0xe4, - 0x46, 0x54, 0x12, 0xa9, 0x02, 0xc4, 0x99, 0xb5, 0x01, 0xc7, 0xbd, 0x25, - 0x8e, 0x13, 0x15, 0x9c, 0xde, 0x90, 0xab, 0x60, 0xa5, 0x11, 0x31, 0xd5, - 0xc2, 0x89, 0x18, 0xc8, 0x05, 0xb3, 0xf6, 0x0a, 0x8c, 0x36, 0xd3, 0xfe, - 0xc5, 0x81, 0x06, 0xf1, 0xf0, 0x57, 0xf2, 0x34, 0x6b, 0x6c, 0xa2, 0x46, - 0xee, 0x6f, 0x35, 0x8c, 0x93, 0x4c, 0x41, 0x18, 0xc1, 0x8d, 0xf3, 0x60, - 0x66, 0xf9, 0xab, 0x13, 0x01, 0x7f, 0x3d, 0x61, 0xba, 0xfc, 0x8e, 0x7a, - 0x93, 0xe3, 0xe3, 0x86, 0x0b, 0xd5, 0xbe, 0x14, 0x90, 0xb5, 0xdf, 0x66, - 0xeb, 0x76, 0xb9, 0x10, 0xed, 0x1d, 0xa8, 0xd8, 0x5d, 0x42, 0xe9, 0x46, - 0x19, 0xa7, 0xc0, 0xda, 0x4d, 0x30, 0x2c, 0x13, 0xe1, 0xa2, 0x01, 0x6d, - 0x2a, 0xcf, 0x0e, 0x9d, 0x8a, 0x0b, 0x77, 0xbb, 0xef, 0x29, 0x45, 0xbc, - 0x21, 0xea, 0xae, 0x3b, 0xa6, 0x3f, 0xf6, 0xa5, 0x8f, 0xc2, 0x3c, 0x46, - 0x56, 0xbd, 0x06, 0xc0, 0x0b, 0xfb, 0x83, 0x1b, 0xa5, 0x7a, 0x09, 0x63, - 0xe9, 0xdf, 0xee, 0x59, 0x7d, 0xec, 0x48, 0x3c, 0xf1, 0xe0, 0xa5, 0xa5, - 0x5c, 0x10, 0x46, 0x2b, 0xee, 0x69, 0x3f, 0xa3, 0x8f, 0xe1, 0xdb, 0x73, - 0x40, 0x96, 0xdb, 0xcf, 0x9c, 0x2c, 0x5b, 0x2a, 0x8d, 0x41, 0xc6, 0x81, - 0x7e, 0xd6, 0x00, 0x30, 0xcf, 0xe3, 0x2b, 0x9d, 0x1b, 0x3c, 0x02, 0xf1, - 0x89, 0xcf, 0x74, 0x13, 0xe4, 0xfe, 0x7f, 0x38, 0x98, 0xf1, 0x75, 0xe5, - 0xc1, 0x1e, 0x22, 0xd3, 0x8c, 0x52, 0x35, 0x42, 0x61, 0xf2, 0xba, 0xe0, - 0x1c, 0x3e, 0x57, 0x4b, 0xf8, 0x93, 0x0e, 0x16, 0x18, 0x89, 0xbf, 0x9e, - 0xf2, 0x2f, 0x87, 0xac, 0x8b, 0x27, 0xd7, 0x67, 0x27, 0x8f, 0x51, 0xb5, - 0x73, 0xa5, 0x13, 0x5d, 0x3d, 0xc2, 0x9a, 0x8a, 0x27, 0x92, 0x35, 0x5f, - 0x6e, 0xde, 0xf5, 0x9f, 0x77, 0x1e, 0xca, 0x25, 0xb5, 0x33, 0x09, 0xc3, - 0x84, 0x1b, 0x22, 0x13, 0x6c, 0xad, 0xe4, 0xa0, 0xbb, 0x83, 0xf2, 0xac, - 0x6b, 0x89, 0x63, 0x53, 0x96, 0x7a, 0x75, 0x60, 0x8b, 0x99, 0x39, 0x33, - 0x81, 0x54, 0xf7, 0xc3, 0xce, 0x4e, 0xc6, 0xd7, 0x95, 0x9c, 0x37, 0xbf, - 0x50, 0x1f, 0x9b, 0x69, 0x4c, 0x5c, 0x7a, 0x72, 0xb1, 0x17, 0xa9, 0x28, - 0xe0, 0xa3, 0x43, 0x9a, 0x85, 0x4f, 0x51, 0xf0, 0x41, 0x84, 0x54, 0x90, - 0x50, 0xb8, 0x4e, 0xfb, 0x1a, 0x37, 0xa2, 0xb3, 0x04, 0x17, 0x4a, 0xb2, - 0x1c, 0xe4, 0xde, 0x33, 0x11, 0x0d, 0x8b, 0x0d, 0x22, 0xda, 0xed, 0x85, - 0x11, 0xbc, 0x1c, 0xd7, 0xf5, 0x27, 0x1d, 0x5d, 0x22, 0x6c, 0xcf, 0x64, - 0xbe, 0x8f, 0x2c, 0x94, 0x9b, 0x26, 0x32, 0xc5, 0x70, 0xb1, 0xe0, 0xc7, - 0x12, 0xb3, 0x5d, 0x6d, 0x34, 0x9d, 0xe9, 0xd1, 0x70, 0xee, 0xd9, 0xe0, - 0xea, 0x0d, 0x65, 0xd7, 0xc6, 0xb0, 0x2b, 0xf4, 0x8f, 0xad, 0xe1, 0xcd, - 0xb3, 0xc9, 0xc2, 0x68, 0xfe, 0x92, 0xb3, 0x7e, 0x28, 0xcc, 0xc8, 0xea, - 0x6f, 0xfd, 0x04, 0xa4, 0x84, 0xed, 0xac, 0x4d, 0x4b, 0x93, 0x38, 0xe7, - 0x18, 0x4f, 0xd7, 0x19, 0xf6, 0x58, 0x0d, 0x9b, 0x29, 0xf8, 0x8a, 0xb8, - 0x90, 0xe1, 0x1c, 0x73, 0xfe, 0x95, 0xd2, 0x8a, 0x6b, 0xaa, 0x90, 0x5b, - 0xf1, 0x53, 0xac, 0x9f, 0x63, 0x0c, 0xf8, 0x28, 0x92, 0xb0, 0xb4, 0x21, - 0x08, 0xd8, 0x06, 0x11, 0x83, 0x5a, 0xe0, 0x32, 0x09, 0xc5, 0x24, 0x94, - 0x7a, 0x58, 0x6a, 0xe6, 0x43, 0x93, 0xa8, 0x1a, 0x7b, 0x87, 0xe7, 0xbe, - 0xc6, 0xf3, 0xf4, 0x60, 0xf4, 0x4b, 0x4e, 0x99, 0xb9, 0x17, 0x80, 0xd0, - 0xc2, 0x22, 0x18, 0xa1, 0x17, 0xe5, 0x34, 0x5b, 0x9a, 0x46, 0x98, 0x14, - 0x2d, 0x4f, 0xcb, 0xef, 0x0b, 0x6f, 0x6c, 0x50, 0xe7, 0x19, 0xa9, 0x9c, - 0xae, 0xaa, 0x7d, 0x7a, 0x27, 0xea, 0x18, 0x71, 0x61, 0xf7, 0x0e, 0x06, - 0xef, 0xff, 0x8e, 0x0f, 0x52, 0x09, 0x98, 0x64, 0x83, 0xb6, 0xc7, 0xbf, - 0xcb, 0xe0, 0xe3, 0x66, 0x2a, 0x61, 0x89, 0xce, 0x72, 0xfa, 0x2a, 0x07, - 0x98, 0xdd, 0x65, 0x84, 0x1c, 0x3e, 0x76, 0xa7, 0xa5, 0x47, 0xda, 0xca, - 0xdd, 0x86, 0xeb, 0x35, 0x85, 0xd5, 0x31, 0x14, 0xca, 0x7c, 0x36, 0xc3, - 0xa3, 0xc5, 0x52, 0xcd, 0x73, 0x25, 0xa3, 0x71, 0x01, 0xca, 0x6c, 0x5a, - 0xed, 0x65, 0x73, 0xaa, 0x9e, 0xed, 0xfb, 0x02, 0xe0, 0x10, 0xf6, 0xca, - 0xe7, 0xa2, 0x9d, 0xa1, 0x14, 0x3c, 0x8c, 0xdf, 0x16, 0xad, 0xeb, 0x5e, - 0xd1, 0x7b, 0x56, 0xea, 0x55, 0x8c, 0xa6, 0xb1, 0x4f, 0xe9, 0xc2, 0x08, - 0xf4, 0xea, 0xf7, 0xca, 0x3d, 0xac, 0x76, 0xd0, 0xbe, 0xdc, 0x50, 0xd1, - 0x80, 0xc7, 0xcf, 0x8c, 0xec, 0x16, 0xc2, 0xf2, 0x73, 0x68, 0xd5, 0x5a, - 0xb6, 0xba, 0x6a, 0x2a, 0x0a, 0x51, 0x99, 0xd2, 0x1b, 0x66, 0xe0, 0x4a, - 0x63, 0xf2, 0xd5, 0x9b, 0x0b, 0x74, 0xd9, 0x0b, 0xa2, 0x18, 0xef, 0x17, - 0x0f, 0xcf, 0xd3, 0xd0, 0xb0, 0xf4, 0xf9, 0xc4, 0xf6, 0x3c, 0x46, 0xd3, - 0x1a, 0xa7, 0xea, 0x63, 0xc1, 0x5d, 0x12, 0xa2, 0xd6, 0x4d, 0xf1, 0xae, - 0x81, 0x73, 0x34, 0x67, 0x2f, 0x5e, 0x1f, 0x02, 0x02, 0x7a, 0xd1, 0xfb, - 0xe9, 0x37, 0x65, 0x3a, 0x53, 0xbf, 0xba, 0x39, 0x41, 0xc0, 0xb3, 0xbc, - 0x02, 0xf5, 0xc2, 0x15, 0x09, 0x68, 0x10, 0x26, 0x91, 0xe2, 0x4b, 0x2c, - 0x19, 0x42, 0x3b, 0x75, 0x10, 0x6d, 0xe7, 0x28, 0xed, 0xe5, 0x9d, 0x76, - 0xb6, 0xad, 0x8c, 0x73, 0xb3, 0xd7, 0xc6, 0xd8, 0xaa, 0x34, 0xb1, 0xde, - 0x69, 0xea, 0x7c, 0x6e, 0x29, 0x8a, 0xbd, 0x61, 0x74, 0x30, 0xce, 0xff, - 0xd9, 0x90, 0x6d, 0xdc, 0xb6, 0x75, 0x83, 0x03, 0x70, 0x99, 0x80, 0x54, - 0x59, 0x6a, 0xbd, 0x5e, 0x86, 0xc8, 0xd9, 0xf7, 0xdf, 0xaa, 0xe1, 0xf1, - 0x55, 0xa6, 0xda, 0x61, 0x8c, 0x5f, 0xda, 0xb6, 0x12, 0xac, 0xd6, 0x9f, - 0xbd, 0x39, 0x97, 0xe4, 0x84, 0x13, 0x74, 0x36, 0x8d, 0x5c, 0x9c, 0xf6, - 0x1f, 0x5f, 0x7e, 0x4d, 0x75, 0x0f, 0xbf, 0x36, 0x50, 0x34, 0xe0, 0x0e, - 0xe1, 0x70, 0x87, 0xaf, 0x78, 0xce, 0x15, 0x9d, 0x9d, 0xbf, 0x95, 0x7e, - 0xe3, 0xbb, 0x08, 0x22, 0x37, 0x1b, 0xc9, 0xd4, 0x97, 0x5b, 0xbf, 0x92, - 0x5d, 0x4e, 0xd4, 0x8f, 0x43, 0xb7, 0x31, 0xef, 0x26, 0xf5, 0x14, 0xf1, - 0x3d, 0x76, 0x13, 0x94, 0xdf, 0x94, 0xed, 0x92, 0x80, 0xad, 0xa9, 0xf3, - 0xb2, 0x85, 0xa4, 0xc5, 0x5d, 0xd5, 0xbb, 0x3f, 0xab, 0x72, 0x14, 0x73, - 0x3a, 0x13, 0x84, 0x66, 0x1c, 0xb8, 0x16, 0xa0, 0x2e, 0x9f, 0x44, 0x22, - 0x65, 0xa0, 0x9e, 0xfe, 0x54, 0xa7, 0xce, 0xb7, 0xf7, 0x1b, 0xe8, 0x9a, - 0x12, 0x52, 0x43, 0xbe, 0x03, 0x8f, 0x6d, 0x66, 0x59, 0xcd, 0x53, 0x98, - 0xad, 0x72, 0x07, 0x60, 0x8a, 0x45, 0xa3, 0x53, 0xf2, 0x2b, 0x58, 0x96, - 0x5b, 0x2f, 0x0e, 0x0e, 0x36, 0xc5, 0x67, 0x29, 0x32, 0x5b, 0x64, 0x9a, - 0x87, 0xc6, 0xd2, 0xe3, 0xd6, 0x23, 0x0b, 0x40, 0x17, 0x9c, 0x81, 0xab, - 0x9a, 0x92, 0x1c, 0xe0, 0xc0, 0xce, 0x34, 0x62, 0x3d, 0x39, 0x17, 0x62, - 0x6e, 0x6b, 0x7f, 0x04, 0x6f, 0x24, 0x62, 0x62, 0xfa, 0xe6, 0x13, 0x28, - 0x40, 0x7d, 0xc1, 0xed, 0xb4, 0x85, 0x8b, 0xa6, 0xb9, 0x2b, 0x7a, 0xa1, - 0x82, 0xd9, 0xb5, 0x33, 0xa9, 0xdf, 0x98, 0x03, 0x98, 0xe7, 0xa6, 0x27, - 0xee, 0x44, 0x28, 0x82, 0x31, 0x1d, 0xd0, 0x08, 0x3d, 0xe6, 0xa5, 0x4a, - 0xf2, 0xe6, 0x21, 0xe7, 0xbd, 0x5c, 0x54, 0xc0, 0x68, 0x80, 0xc5, 0xbf, - 0xb0, 0x02, 0xdc, 0xfa, 0xe5, 0xcb, 0xf1, 0xd5, 0x6a, 0x52, 0x0e, 0x05, - 0x12, 0x2a, 0xe2, 0xde, 0x2d, 0xb5, 0x8a, 0x16, 0xf8, 0x95, 0x7f, 0xce, - 0x1a, 0x49, 0x43, 0x14, 0xbc, 0x7b, 0xb0, 0x53, 0xff, 0xa8, 0x52, 0x3d, - 0xb4, 0x80, 0x06, 0xc8, 0xc8, 0x62, 0x4c, 0x9f, 0x22, 0xf5, 0x9b, 0xa0, - 0x51, 0xea, 0x85, 0x94, 0x0b, 0x5a, 0x22, 0x96, 0x18, 0xd0, 0xee, 0x9a, - 0x00, 0x14, 0x05, 0xb2, 0xb3, 0x4b, 0xca, 0xe0, 0x38, 0x52, 0xa2, 0x5c, - 0x58, 0x0e, 0x54, 0xdd, 0x47, 0xba, 0x11, 0xcb, 0xec, 0xad, 0xbd, 0x5b, - 0x17, 0xc2, 0xf2, 0x38, 0xe7, 0xaf, 0x80, 0xc4, 0x93, 0xd0, 0x35, 0x2c, - 0xf4, 0x33, 0x02, 0xda, 0x64, 0x30, 0x1e, 0x8d, 0x88, 0x34, 0xff, 0x97, - 0x09, 0xaf, 0x68, 0xc7, 0x26, 0x2a, 0xc0, 0x3e, 0x50, 0x64, 0xe3, 0xe0, - 0x1b, 0x57, 0xd6, 0x0f, 0xab, 0x41, 0x9b, 0xcc, 0xce, 0x2c, 0x63, 0x64, - 0x8b, 0x3a, 0xe6, 0x35, 0x83, 0xd9, 0x99, 0xab, 0xcd, 0x32, 0x02, 0x48, - 0x4b, 0xd0, 0x86, 0x66, 0x92, 0xe4, 0x8c, 0x7d, 0xa6, 0x23, 0xac, 0x83, - 0xf3, 0xf4, 0x0a, 0x4a, 0x49, 0x4b, 0xc4, 0x45, 0xb0, 0xfa, 0xab, 0x7f, - 0xac, 0x64, 0xff, 0x77, 0xb2, 0x7e, 0x52, 0xf2, 0x2b, 0xc0, 0x6f, 0xba, - 0x0e, 0x1d, 0x4b, 0x32, 0xc6, 0x6e, 0x49, 0x6a, 0x03, 0x96, 0xaf, 0xa9, - 0x57, 0x17, 0xa7, 0xea, 0xf5, 0x2c, 0x12, 0xb6, 0xaf, 0xa5, 0x92, 0xa6, - 0x8b, 0xaf, 0x6f, 0x94, 0xa7, 0xdc, 0xda, 0xd7, 0x12, 0x60, 0xb5, 0x99, - 0x29, 0x70, 0x9e, 0x9e, 0xe3, 0xe5, 0x36, 0x03, 0x53, 0x65, 0x6c, 0x3a, - 0xda, 0xdc, 0xe2, 0xff, 0x21, 0x96, 0xdc, 0x71, 0xd7, 0x2f, 0xde, 0xa0, - 0xd0, 0x16, 0x90, 0x21, 0x14, 0x3e, 0xf7, 0x97, 0x22, 0xa7, 0x64, 0xf7, - 0xcf, 0x49, 0x67, 0x34, 0xa9, 0xc2, 0xce, 0x20, 0xde, 0xc0, 0xd1, 0x95, - 0x85, 0x32, 0xa8, 0xeb, 0xf1, 0x39, 0x22, 0xf5, 0xe7, 0xcc, 0x77, 0x97, - 0x43, 0x59, 0x9a, 0xca, 0x41, 0x10, 0x05, 0xcf, 0xdc, 0x4c, 0x3e, 0x57, - 0xec, 0x24, 0x3f, 0xc9, 0x3b, 0x67, 0xbe, 0xa4, 0xf9, 0x97, 0xca, 0xf4, - 0x1c, 0x49, 0x5e, 0x6a, 0x30, 0xf9, 0x12, 0xcb, 0xc3, 0xa2, 0x11, 0xb3, - 0x4a, 0x50, 0xf6, 0xb9, 0xdd, 0xe5, 0xa0, 0xca, 0xac, 0x62, 0x1b, 0x99, - 0xbf, 0xc5, 0x16, 0x06, 0x80, 0xf2, 0x52, 0x4f, 0x0d, 0x20, 0x90, 0x08, - 0x9d, 0xbf, 0xcf, 0x06, 0x3f, 0x3f, 0xc4, 0x72, 0x79, 0x64, 0x88, 0x85, - 0x40, 0x3c, 0xd4, 0x3f, 0xe0, 0xc6, 0xf8, 0x66, 0x8b, 0x37, 0x51, 0xc6, - 0x1e, 0x5c, 0x23, 0x46, 0x00, 0x8d, 0x5f, 0xee, 0xb0, 0x5c, 0xf7, 0x19, - 0x94, 0xfd, 0x6c, 0x4d, 0x86, 0xcb, 0x9d, 0xd8, 0x87, 0x91, 0xf9, 0x0c, - 0x8b, 0xa9, 0x31, 0x29, 0xb5, 0xd0, 0x17, 0x7a, 0xfc, 0x78, 0x7d, 0xcb, - 0xbf, 0x2a, 0x89, 0x1e, 0x64, 0x92, 0xf9, 0x7d, 0xd4, 0x34, 0xee, 0x54, - 0xa6, 0x76, 0x67, 0x72, 0x11, 0x87, 0x7d, 0x57, 0x84, 0xac, 0x75, 0xe6, - 0xf8, 0x18, 0xb6, 0x1b, 0x00, 0x58, 0x4b, 0x40, 0xc1, 0xef, 0xdf, 0x59, - 0xd4, 0x27, 0x6d, 0x24, 0x73, 0xb4, 0x19, 0xfb, 0x7a, 0xef, 0x76, 0x6c, - 0x82, 0xc4, 0xfc, 0x72, 0x89, 0x01, 0xdd, 0x62, 0xfd, 0x9f, 0xa0, 0x07, - 0xb1, 0x17, 0xa4, 0x80, 0xb8, 0xd8, 0x63, 0xbd, 0xf0, 0xdd, 0xf2, 0x97, - 0x3e, 0xd1, 0xd5, 0x71, 0x13, 0x3a, 0x17, 0xaf, 0x3e, 0xe7, 0xb8, 0xc4, - 0x4e, 0xc2, 0x02, 0x70, 0xc1, 0x65, 0x40, 0x02, 0x42, 0x2b, 0xec, 0x68, - 0x63, 0xf1, 0x10, 0x73, 0x28, 0x93, 0x5b, 0x8b, 0x1c, 0x63, 0xa2, 0x1a, - 0x4e, 0x23, 0xd1, 0xec, 0xf2, 0x46, 0x9b, 0x13, 0x5d, 0x07, 0xc9, 0xf7, - 0x93, 0xa6, 0x11, 0xb7, 0x9d, 0x88, 0xf5, 0xb3, 0x9c, 0x4a, 0x55, 0x24, - 0x37, 0x9c, 0x3f, 0x1d, 0x67, 0xa2, 0x83, 0xf2, 0x8d, 0xab, 0xac, 0x6f, - 0x1b, 0x3b, 0x3c, 0x0f, 0x07, 0x48, 0x78, 0x85, 0x91, 0xde, 0xf1, 0xe6, - 0x5d, 0x76, 0x7c, 0x7b, 0xbe, 0x93, 0xf4, 0xe0, 0x5d, 0xfb, 0x27, 0x6c, - 0x86, 0x5f, 0x42, 0x38, 0x23, 0xfa, 0xc4, 0xd8, 0xfc, 0xb6, 0x01, 0xef, - 0x68, 0x88, 0x40, 0x2c, 0xec, 0xc2, 0xcf, 0x12, 0xac, 0xf1, 0x15, 0x97, - 0x30, 0x5a, 0xc3, 0xd8, 0xb9, 0x9a, 0x33, 0x61, 0x8b, 0x8a, 0xd7, 0x75, - 0x1e, 0xb3, 0x8e, 0xb4, 0x72, 0xe1, 0x48, 0x7a, 0xc5, 0x5c, 0xd2, 0xf7, - 0x61, 0x33, 0x70, 0xe1, 0xd6, 0xae, 0xdf, 0x54, 0x8c, 0x0a, 0x07, 0xb8, - 0xf9, 0x49, 0xaf, 0x62, 0x36, 0x36, 0x74, 0x8f, 0x87, 0x15, 0x65, 0x28, - 0x6b, 0x0e, 0x12, 0x29, 0xe2, 0x06, 0xe8, 0xbd, 0x86, 0x24, 0xbd, 0xc5, - 0xc9, 0xef, 0x28, 0xa5, 0x7f, 0x3f, 0x0f, 0xf1, 0x21, 0x24, 0x27, 0x79, - 0x3b, 0x92, 0xd2, 0x68, 0x3b, 0x02, 0xc9, 0xb4, 0x3e, 0xf8, 0x8d, 0x9b, - 0xde, 0x07, 0xbb, 0x08, 0x42, 0x5e, 0x8d, 0xda, 0x59, 0xad, 0x7b, 0x79, - 0x6c, 0xe3, 0x12, 0x23, 0xaf, 0x1e, 0xc8, 0xb0, 0xbf, 0x1e, 0x0c, 0x2b, - 0x27, 0x8d, 0x85, 0x5e, 0x78, 0x96, 0xb5, 0xfc, 0x1e, 0x37, 0x85, 0xb5, - 0x81, 0x43, 0x84, 0x7f, 0x5d, 0xde, 0x0c, 0x72, 0x40, 0x66, 0x2d, 0x6b, - 0xbf, 0x09, 0xcf, 0x28, 0x77, 0x2a, 0xc8, 0xa7, 0x51, 0x9c, 0xe0, 0xd8, - 0x63, 0x83, 0xcf, 0x0f, 0x20, 0xda, 0x2c, 0x96, 0xff, 0x86, 0x0a, 0x05, - 0xa3, 0x50, 0x9c, 0xd6, 0xf7, 0x86, 0x10, 0x71, 0x33, 0x64, 0xc7, 0x9c, - 0xe8, 0xea, 0x75, 0xf7, 0xd9, 0xd2, 0x43, 0xed, 0xc6, 0x7a, 0xee, 0xa5, - 0x10, 0x75, 0x32, 0x88, 0x1a, 0x44, 0x6b, 0x54, 0x74, 0x75, 0x3a, 0x06, - 0x50, 0xa7, 0xd2, 0x66, 0x8c, 0x97, 0x4d, 0x7e, 0x12, 0xa7, 0xdb, 0xef, - 0x61, 0x3b, 0x56, 0xe1, 0x51, 0xf3, 0xa3, 0x9b, 0xf8, 0xc5, 0x69, 0xda, - 0xc0, 0x9c, 0x4d, 0x0a, 0x77, 0xa3, 0x02, 0x11, 0x63, 0xd6, 0xb5, 0x24, - 0x87, 0x09, 0x12, 0x28, 0x90, 0xba, 0x21, 0x34, 0xb0, 0xa9, 0x68, 0xbb, - 0x31, 0xc8, 0x34, 0x9a, 0xf3, 0x26, 0xac, 0x7a, 0x6e, 0x8b, 0x5d, 0x4f, - 0xa7, 0xf8, 0xa9, 0xe5, 0x1c, 0x09, 0xb5, 0xeb, 0x66, 0x82, 0x3c, 0xff, - 0xee, 0x59, 0xa2, 0x31, 0x50, 0x5a, 0xc3, 0x2f, 0x62, 0x13, 0x60, 0xb2, - 0x3b, 0x04, 0xd8, 0xe5, 0x98, 0x76, 0x18, 0xec, 0x1e, 0xaa, 0xc7, 0x62, - 0x4d, 0x0a, 0x7e, 0xfa, 0xe3, 0x21, 0xc6, 0x85, 0x36, 0x48, 0xaf, 0x85, - 0x39, 0x80, 0xa3, 0x6c, 0xe7, 0xff, 0x90, 0x95, 0xc4, 0x8d, 0xd4, 0xdb, - 0xba, 0x54, 0x0d, 0x42, 0x42, 0xf2, 0x69, 0x9b, 0x90, 0x95, 0xec, 0xe2, - 0x53, 0x87, 0x39, 0x8a, 0x78, 0x47, 0x9e, 0x10, 0xe0, 0x14, 0xd5, 0x7c, - 0x15, 0xb2, 0x6f, 0x9d, 0x3c, 0x08, 0x71, 0xc5, 0x38, 0xdc, 0x89, 0xa1, - 0x96, 0x0d, 0xb1, 0x58, 0xb9, 0x5a, 0x79, 0xf3, 0x20, 0xe1, 0xd2, 0x52, - 0xfd, 0x63, 0x00, 0xe9, 0x19, 0x7c, 0x9e, 0xf1, 0xda, 0x12, 0xae, 0x52, - 0x74, 0x56, 0x5f, 0xb0, 0xbe, 0x23, 0x7c, 0x47, 0x6f, 0xd4, 0xc0, 0x60, - 0x6d, 0x1b, 0xeb, 0x66, 0x34, 0x63, 0x01, 0x84, 0x5f, 0x57, 0xfe, 0xb5, - 0x14, 0x72, 0x63, 0x29, 0xab, 0xcb, 0x50, 0x93, 0x89, 0x89, 0x53, 0xa3, - 0xe0, 0xcb, 0x22, 0xaf, 0x12, 0x31, 0xd7, 0x88, 0x62, 0x5f, 0xb5, 0x54, - 0x9a, 0x0f, 0x9c, 0x47, 0xae, 0x37, 0x84, 0xf7, 0x88, 0x84, 0x20, 0x22, - 0x4e, 0x99, 0x6e, 0x63, 0x00, 0x83, 0x13, 0xcc, 0x3f, 0x14, 0xa2, 0xec, - 0x91, 0xa6, 0x2b, 0x3a, 0x34, 0xa8, 0xcc, 0xa8, 0x29, 0xc0, 0x4e, 0x5a, - 0x5a, 0x34, 0xed, 0x56, 0xb4, 0xbb, 0xb3, 0x9c, 0x6c, 0x1a, 0xfe, 0x09, - 0x43, 0x4f, 0x8f, 0x82, 0x09, 0xf6, 0x20, 0x5e, 0x20, 0xbb, 0x33, 0x16, - 0xa4, 0x1e, 0xe1, 0xf8, 0x1d, 0x64, 0xad, 0x1f, 0x0b, 0x0f, 0x0e, 0xb6, - 0x04, 0xae, 0x9c, 0x23, 0x66, 0x52, 0xfe, 0x63, 0x54, 0x6f, 0x83, 0x5d, - 0x47, 0xad, 0x3d, 0x5e, 0xf0, 0x66, 0xc7, 0xd0, 0x48, 0xe6, 0x0f, 0xff, - 0x9a, 0xf2, 0x85, 0xf9, 0x0e, 0xbf, 0x1f, 0x5d, 0x18, 0xd9, 0x34, 0xf1, - 0xbf, 0xa9, 0x84, 0x39, 0x03, 0x7e, 0x7a, 0xf7, 0x6a, 0x83, 0x13, 0x75, - 0xaf, 0x8e, 0xb5, 0x87, 0x52, 0x49, 0x47, 0xd3, 0x28, 0x55, 0xa8, 0xc7, - 0x47, 0x7b, 0xf0, 0x1f, 0x15, 0xb3, 0x1e, 0x5b, 0x41, 0xaa, 0x78, 0xe3, - 0x0d, 0x41, 0x68, 0xab, 0x35, 0x48, 0x48, 0xa4, 0xfc, 0x89, 0x94, 0xf2, - 0xf7, 0x1d, 0x54, 0x1c, 0x4e, 0x71, 0x6a, 0x00, 0x75, 0x5f, 0x96, 0xf5, - 0x6d, 0xd9, 0xa7, 0x75, 0x65, 0x3e, 0x5b, 0xb1, 0x09, 0x38, 0x16, 0x15, - 0xdc, 0xb9, 0xb2, 0xb7, 0x8b, 0x28, 0x83, 0x3d, 0x21, 0x85, 0x2e, 0x32, - 0xd1, 0x5a, 0xcc, 0x6e, 0x16, 0xf6, 0xcc, 0x13, 0xd8, 0xc3, 0x15, 0xa6, - 0x87, 0xf2, 0xa2, 0x13, 0x28, 0x9a, 0x47, 0xde, 0x79, 0x75, 0xff, 0x45, - 0xa6, 0x1a, 0xf6, 0x68, 0x08, 0xa7, 0xe4, 0x59, 0x3d, 0x37, 0xe5, 0x83, - 0x38, 0xbf, 0xa3, 0xf4, 0x36, 0xe3, 0x78, 0x98, 0xa5, 0x18, 0xf0, 0x73, - 0xbc, 0x6a, 0x4e, 0xb9, 0xe8, 0x43, 0x84, 0xfe, 0xf6, 0xb8, 0xc9, 0xe6, - 0x73, 0x1c, 0x21, 0x17, 0x8c, 0xe1, 0x13, 0x5b, 0x96, 0xaf, 0xee, 0xe5, - 0x80, 0xd4, 0x6c, 0x5a, 0x39, 0x75, 0xf5, 0x4d, 0x05, 0x5d, 0x1a, 0x8b, - 0xe4, 0xaf, 0xf3, 0x64, 0x6f, 0x65, 0x42, 0x1e, 0x37, 0xbf, 0x12, 0xff, - 0x3e, 0xad, 0xa7, 0x64, 0x13, 0xe3, 0xc4, 0x0f, 0x4d, 0x48, 0xb0, 0xf6, - 0x92, 0x29, 0x2b, 0xc1, 0xd0, 0xac, 0xac, 0xe6, 0xde, 0x0d, 0xe6, 0x96, - 0x11, 0x1f, 0x80, 0x9f, 0xbd, 0xbe, 0xf2, 0xcc, 0xc5, 0x58, 0xd5, 0x7d, - 0x58, 0x70, 0x44, 0x08, 0x9f, 0xb3, 0x32, 0x02, 0x02, 0xd0, 0x05, 0xa7, - 0xd4, 0xa6, 0x0d, 0x58, 0xb1, 0x0b, 0x4f, 0xaa, 0x23, 0x4f, 0xa6, 0x3f, - 0xd5, 0x12, 0xba, 0xd0, 0x06, 0x0a, 0x47, 0x0f, 0x37, 0x1b, 0xed, 0xa1, - 0xd7, 0x50, 0xd1, 0x75, 0x98, 0xdf, 0x7e, 0xa3, 0xf6, 0xf2, 0x66, 0x7f, - 0xe1, 0x49, 0x92, 0x4c, 0x73, 0xf5, 0x01, 0x8b, 0x19, 0xc0, 0x63, 0x2f, - 0xa6, 0x68, 0x2f, 0x26, 0xd5, 0x88, 0x7f, 0xa4, 0x6c, 0x5a, 0xfe, 0x77, - 0xbf, 0x14, 0x2b, 0x42, 0xc5, 0xfc, 0xcf, 0x6b, 0x41, 0x12, 0xe7, 0xc7, - 0xef, 0xd1, 0xe8, 0x87, 0xc0, 0x1f, 0x39, 0xd1, 0xf8, 0x94, 0xcd, 0x1a, - 0xdc, 0x59, 0x32, 0xba, 0xaa, 0x6d, 0xe5, 0xbe, 0x10, 0xa5, 0xa2, 0x89, - 0x4d, 0xc3, 0xf0, 0x91, 0xec, 0x16, 0xf5, 0xac, 0xbd, 0x06, 0x35, 0xba, - 0x26, 0xaa, 0x67, 0x90, 0x8d, 0x52, 0x52, 0x90, 0xcd, 0xd5, 0x7f, 0xd8, - 0xf6, 0xec, 0xe5, 0xb8, 0xc5, 0x25, 0x2b, 0xe4, 0xc2, 0xaa, 0x9f, 0x19, - 0x6a, 0x4c, 0x8c, 0x03, 0xaa, 0xc2, 0xf3, 0x81, 0x9d, 0x4d, 0x11, 0x22, - 0x59, 0x07, 0x1a, 0xfb, 0xbc, 0x7e, 0xdf, 0xa6, 0xc3, 0xc6, 0x1c, 0xdf, - 0x79, 0x87, 0x47, 0x35, 0x26, 0x7c, 0xb9, 0xe2, 0x6b, 0x00, 0x1b, 0xe7, - 0x68, 0x8d, 0x2f, 0x87, 0xc3, 0x5b, 0x48, 0x63, 0x27, 0xa6, 0x69, 0x1f, - 0x3d, 0x59, 0x5c, 0x8e, 0xa3, 0x44, 0x99, 0x5f, 0x80, 0x60, 0x9e, 0x6f, - 0x20, 0xa7, 0x29, 0xce, 0xb0, 0x39, 0x4a, 0xa4, 0x8b, 0xcd, 0x62, 0x6a, - 0x82, 0xe7, 0xf9, 0xa2, 0xec, 0x8a, 0x8e, 0x42, 0x4f, 0x86, 0xbd, 0xae, - 0xca, 0xe9, 0xe5, 0x90, 0xf7, 0xf6, 0xe0, 0xd9, 0x5b, 0x2f, 0x0a, 0x0d, - 0x41, 0x8f, 0x40, 0x30, 0x64, 0x3a, 0x89, 0x09, 0x52, 0xc1, 0x76, 0x2e, - 0x34, 0x4b, 0x80, 0x73, 0x3d, 0x82, 0x27, 0xde, 0x59, 0xfa, 0xfe, 0xb7, - 0x6d, 0x35, 0xba, 0xc3, 0xd6, 0x76, 0x05, 0xa8, 0xf3, 0xee, 0x85, 0x4a, - 0xd7, 0x3a, 0x0d, 0x02, 0xcf, 0x63, 0x87, 0xcf, 0x0f, 0x29, 0x30, 0x89, - 0x60, 0x87, 0xbb, 0x85, 0x96, 0x89, 0x84, 0xa5, 0x38, 0xfe, 0x61, 0x09, - 0x34, 0x15, 0x42, 0x34, 0x19, 0x28, 0x41, 0x06, 0x2d, 0x38, 0x78, 0xd4, - 0xf4, 0xac, 0xed, 0xfd, 0xeb, 0x75, 0x94, 0x08, 0x04, 0x3d, 0x14, 0x8d, - 0xa0, 0x58, 0xd3, 0xc4, 0x16, 0x76, 0xd8, 0xf3, 0x79, 0x75, 0x27, 0x29, - 0xd8, 0x7f, 0xb2, 0xaf, 0x24, 0xda, 0x9e, 0xf1, 0x67, 0x4d, 0xb7, 0x46, - 0xd2, 0x39, 0x0f, 0xa3, 0x92, 0x54, 0x76, 0xcc, 0x62, 0x3b, 0xce, 0x4b, - 0x47, 0x00, 0x55, 0x65, 0xa1, 0x40, 0xb8, 0xd2, 0x27, 0xd1, 0x6d, 0x0c, - 0x11, 0xd5, 0x36, 0x1a, 0x39, 0x5e, 0x3a, 0xbe, 0xfd, 0x88, 0x6d, 0x6d, - 0x81, 0xf7, 0xa3, 0x80, 0x01, 0x65, 0x3e, 0x39, 0x35, 0xc2, 0x63, 0x91, - 0x04, 0xb3, 0x74, 0xd8, 0x71, 0xfc, 0x6d, 0xb5, 0x96, 0xba, 0xa5, 0x54, - 0xf5, 0x54, 0xa5, 0x53, 0x66, 0xa4, 0xd3, 0x8b, 0x09, 0x3a, 0xa2, 0x7f, - 0x50, 0x3a, 0xf7, 0x80, 0x8e, 0x20, 0xb7, 0xbc, 0xe9, 0x0d, 0xff, 0x9f, - 0xfa, 0xf0, 0x2b, 0x55, 0x07, 0x9d, 0x5b, 0x87, 0x90, 0x60, 0x07, 0x03, - 0xe9, 0xb2, 0x14, 0xbe, 0x85, 0x08, 0x61, 0x74, 0x9d, 0x5c, 0xcf, 0xd7, - 0x8f, 0x5b, 0xfb, 0x5e, 0x2a, 0xef, 0x11, 0xa8, 0xc0, 0x65, 0x1a, 0x27, - 0xd2, 0x86, 0xd0, 0x4e, 0x2d, 0xf7, 0x29, 0xa3, 0x69, 0x23, 0x84, 0xe4, - 0x8b, 0xed, 0x8a, 0x76, 0x01, 0xbd, 0xb8, 0x74, 0xc1, 0x46, 0xbb, 0xf6, - 0x8f, 0x40, 0x52, 0x60, 0x72, 0xce, 0xb0, 0x39, 0x47, 0x27, 0xde, 0x63, - 0xb8, 0x8a, 0x74, 0x2e, 0x5c, 0x43, 0x98, 0x5a, 0xe9, 0x21, 0x3c, 0x08, - 0x18, 0x93, 0xf8, 0xaa, 0xb9, 0x91, 0x7a, 0x47, 0xc8, 0xd8, 0xb9, 0x9a, - 0x16, 0x1c, 0x69, 0x8f, 0xbe, 0x8d, 0x05, 0xfa, 0x70, 0x1a, 0xa9, 0xd7, - 0x1a, 0x8b, 0x05, 0x05, 0xcf, 0x85, 0xd5, 0x10, 0xa6, 0x7b, 0xd6, 0xca, - 0xf9, 0xee, 0x25, 0x56, 0x8f, 0x53, 0x09, 0x72, 0xb7, 0xb3, 0x7d, 0xb4, - 0x78, 0x49, 0x97, 0x7a, 0xe0, 0xc7, 0xff, 0x4c, 0xb1, 0xcf, 0x39, 0xcf, - 0xe3, 0x5b, 0xe9, 0xc4, 0xb9, 0xb5, 0x75, 0x8e, 0xdb, 0x7b, 0x49, 0x11, - 0xa4, 0x5a, 0xb7, 0xc5, 0x75, 0x84, 0x3d, 0x12, 0x8d, 0x15, 0x5b, 0x72, - 0x6c, 0x54, 0xea, 0xfb, 0xff, 0x01, 0x8c, 0xfa, 0xf5, 0x79, 0x0f, 0x0d, - 0x3e, 0xe2, 0x99, 0xeb, 0x15, 0x30, 0xbc, 0x2c, 0xe4, 0x71, 0x6d, 0xc0, - 0x02, 0xf1, 0x08, 0x29, 0x1e, 0x27, 0xf9, 0x74, 0x7e, 0xe1, 0x1f, 0x05, - 0x7b, 0x3d, 0xe2, 0x47, 0xea, 0x3c, 0x30, 0x30, 0xd9, 0x4b, 0x37, 0x1d, - 0x70, 0x0a, 0x36, 0x22, 0x13, 0xf9, 0x72, 0x34, 0x87, 0x12, 0x0d, 0x29, - 0x5f, 0x1d, 0x90, 0x3e, 0x00, 0x04, 0x56, 0x7e, 0xf7, 0x45, 0xfe, 0x47, - 0x75, 0x8b, 0xf3, 0x4d, 0x0e, 0x43, 0x1e, 0x15, 0x0f, 0x9d, 0x11, 0x6f, - 0x67, 0x4e, 0x32, 0x60, 0xd1, 0x0f, 0xa5, 0x83, 0x7f, 0xae, 0x07, 0xfa, - 0x0c, 0x42, 0x59, 0x7d, 0x8a, 0x5d, 0xa7, 0xe7, 0x90, 0x4c, 0x85, 0x24, - 0xe6, 0x06, 0x96, 0xf2, 0xdd, 0x86, 0x3b, 0xec, 0x51, 0xea, 0x95, 0x83, - 0x3b, 0xd8, 0xc8, 0x61, 0x33, 0xbf, 0x82, 0x91, 0xfc, 0xa2, 0x0b, 0x4a, - 0x56, 0x2e, 0xda, 0xff, 0x9b, 0x6d, 0x79, 0x8d, 0x17, 0x7b, 0xe1, 0xe3, - 0x12, 0x6b, 0xc1, 0x5e, 0x01, 0x5c, 0x34, 0xfd, 0x8c, 0x84, 0x2a, 0x2c, - 0x3b, 0x5f, 0xaf, 0x72, 0xb1, 0x96, 0xe6, 0xe7, 0x31, 0xbd, 0x34, 0x2f, - 0xd9, 0x34, 0xbd, 0x9c, 0xb9, 0x7f, 0x3f, 0x6f, 0x80, 0x6d, 0xe0, 0x81, - 0x1e, 0x72, 0xe9, 0xf8, 0xc9, 0x3f, 0xbb, 0x07, 0xf5, 0x50, 0xb7, 0xc3, - 0xd2, 0x42, 0x72, 0xf8, 0xb6, 0xa0, 0xe6, 0x7c, 0x82, 0xc7, 0xf7, 0x2b, - 0xab, 0x7b, 0x80, 0xf3, 0xb4, 0xa5, 0xb1, 0x8c, 0xd7, 0x7c, 0x97, 0x9a, - 0xec, 0x68, 0x3c, 0x27, 0x7f, 0xda, 0x5f, 0xa0, 0x5d, 0xfc, 0xbb, 0xda, - 0x91, 0xd4, 0x74, 0xdd, 0xa6, 0x78, 0xaa, 0x29, 0xe1, 0x3d, 0x52, 0xe5, - 0x80, 0x4b, 0xde, 0xe3, 0xf7, 0x45, 0xe2, 0x82, 0xe5, 0xd5, 0x22, 0x9c, - 0xc5, 0xbc, 0x9b, 0x39, 0x95, 0x4c, 0x7e, 0xc6, 0x3b, 0x51, 0x8d, 0x20, - 0x58, 0xe4, 0xab, 0x37, 0x06, 0x0c, 0x51, 0x1d, 0x18, 0xff, 0xdd, 0xb3, - 0x00, 0xa0, 0xcd, 0x7b, 0xd1, 0xd4, 0xb3, 0x6e, 0x7e, 0xda, 0x34, 0xc1, - 0x41, 0x15, 0x74, 0x67, 0x3f, 0xf8, 0xb2, 0x74, 0x84, 0x8f, 0x4f, 0x2f, - 0x11, 0x3f, 0xfe, 0x16, 0xe3, 0x51, 0x35, 0xa2, 0x66, 0x55, 0x34, 0xab, - 0xd8, 0x67, 0xbf, 0x71, 0x7c, 0x5d, 0x92, 0x3d, 0xa3, 0x78, 0x5c, 0xf2, - 0x69, 0x86, 0x80, 0xea, 0x32, 0xfa, 0x0c, 0xa3, 0x93, 0xae, 0x8a, 0xc5, - 0x54, 0xd6, 0x74, 0x41, 0x07, 0xe1, 0x88, 0x9f, 0x5a, 0x57, 0x16, 0xd1, - 0x86, 0x16, 0x58, 0x62, 0x40, 0x00, 0x47, 0xad, 0xe0, 0xac, 0x71, 0xec, - 0xd0, 0x7d, 0x76, 0x8f, 0x89, 0x38, 0xac, 0x98, 0xa2, 0xd5, 0x17, 0x0c, - 0x2c, 0xb8, 0x5f, 0xd5, 0xb6, 0x69, 0x27, 0x87, 0xb2, 0x8e, 0xdf, 0x1e, - 0x12, 0x24, 0x01, 0xeb, 0x5a, 0x1a, 0x10, 0x3c, 0xb7, 0xf6, 0xdc, 0x8d, - 0xaa, 0x88, 0x0f, 0xc2, 0xf3, 0x3d, 0x18, 0x51, 0xa0, 0x8b, 0x5b, 0x7b, - 0x3e, 0x75, 0x7f, 0x0f, 0xee, 0xd7, 0x5c, 0x1c, 0xe4, 0xef, 0x5e, 0x89, - 0xb1, 0x23, 0xff, 0xf6, 0x33, 0x88, 0x6b, 0x3d, 0x04, 0x0f, 0x07, 0x95, - 0xf4, 0x14, 0x38, 0x0f, 0x3d, 0xfe, 0x48, 0x48, 0x0c, 0x8c, 0xc6, 0xbf, - 0x75, 0xfe, 0xda, 0x23, 0xa5, 0x9e, 0xcf, 0x0c, 0x05, 0x70, 0x38, 0x87, - 0x69, 0x6b, 0xe7, 0x1e, 0x5e, 0x1f, 0xe3, 0xbc, 0xcf, 0xb6, 0xf6, 0x0e, - 0xaa, 0xe5, 0x4a, 0xb1, 0x77, 0xa1, 0x38, 0x9e, 0x71, 0x6b, 0x6b, 0x44, - 0x86, 0x0d, 0xd6, 0xdd, 0x37, 0x57, 0xc1, 0x5c, 0x1d, 0xf1, 0x7a, 0xc6, - 0x51, 0x6e, 0xf4, 0x77, 0x06, 0xde, 0xcd, 0x77, 0x8a, 0x59, 0x54, 0x2c, - 0x56, 0x2d, 0x4b, 0xd6, 0xa2, 0x1b, 0x3e, 0x07, 0xc9, 0x92, 0xe7, 0xad, - 0x0f, 0xb1, 0x06, 0xa9, 0x52, 0xc9, 0xe1, 0xbf, 0x9a, 0x51, 0x0b, 0xa7, - 0xa4, 0xa4, 0xd4, 0xd7, 0xb5, 0x12, 0x14, 0x75, 0x31, 0x6f, 0x1d, 0xaa, - 0x40, 0xe5, 0x4e, 0x55, 0xe8, 0xb5, 0x27, 0x40, 0x70, 0x8e, 0x2e, 0x92, - 0xca, 0x8c, 0x1a, 0xe5, 0x7e, 0x74, 0x10, 0x26, 0x66, 0x0a, 0x2d, 0x7d, - 0x3c, 0xf8, 0x57, 0xe7, 0x45, 0x0a, 0x64, 0x52, 0xda, 0x3d, 0x0d, 0xfc, - 0xe4, 0xaf, 0x66, 0x69, 0x4a, 0x8b, 0x12, 0xc5, 0xe1, 0x96, 0x2b, 0xc3, - 0x34, 0xac, 0x8d, 0x9b, 0x9d, 0xde, 0x42, 0xfe, 0x73, 0x3a, 0x0a, 0x62, - 0xd1, 0xaa, 0xa4, 0x49, 0x79, 0x09, 0xe3, 0x4c, 0x55, 0x9c, 0xe0, 0xcf, - 0x8d, 0xa4, 0x46, 0xe0, 0xc3, 0x8a, 0x8e, 0x99, 0xe2, 0x34, 0x21, 0x03, - 0x54, 0xae, 0xe5, 0x12, 0x4e, 0x0e, 0x15, 0xf9, 0x55, 0xfa, 0xf5, 0x50, - 0x8b, 0xd2, 0x10, 0x5d, 0x96, 0x7e, 0x66, 0x07, 0xea, 0x5d, 0x9e, 0x2a, - 0x99, 0x83, 0xed, 0x77, 0xb4, 0x16, 0x0c, 0xc5, 0x40, 0xad, 0xde, 0xe7, - 0xba, 0xd2, 0x73, 0xe5, 0x21, 0xeb, 0xb0, 0x29, 0x39, 0x76, 0xd5, 0x28, - 0xfc, 0xc0, 0x96, 0x6d, 0x84, 0xc7, 0x72, 0x9c, 0xc3, 0x4c, 0x34, 0xe4, - 0x2b, 0x18, 0x52, 0x07, 0x1e, 0xd6, 0x00, 0x7f, 0x31, 0x3a, 0x38, 0x28, - 0x95, 0xe4, 0xe5, 0xc6, 0x29, 0x87, 0x75, 0xb2, 0xd7, 0xd4, 0x3e, 0x91, - 0x2e, 0x5a, 0x99, 0x49, 0x97, 0x88, 0xd8, 0x8d, 0x6c, 0x62, 0xb8, 0xda, - 0xd5, 0x56, 0x36, 0x02, 0x1a, 0x05, 0xc3, 0x76, 0x43, 0xe4, 0xad, 0xb0, - 0xa0, 0xce, 0xda, 0x3e, 0x14, 0x29, 0xe9, 0x57, 0x95, 0x58, 0xed, 0xca, - 0xc7, 0xef, 0xdc, 0xd0, 0xd5, 0x84, 0x34, 0x4c, 0xfb, 0xae, 0xea, 0x7d, - 0x5d, 0x65, 0xfe, 0x74, 0xbb, 0x27, 0x5b, 0x89, 0x8f, 0x0c, 0x4e, 0x86, - 0xe9, 0x9a, 0x67, 0x5b, 0xc9, 0x33, 0xcc, 0x52, 0x31, 0x20, 0x6e, 0x52, - 0x62, 0x50, 0x72, 0xb1, 0xc1, 0xdd, 0x0b, 0x73, 0xf8, 0x1f, 0xe4, 0xa1, - 0xcf, 0x35, 0x21, 0xe5, 0xcf, 0x23, 0x85, 0x1b, 0x09, 0xc4, 0x03, 0x9a, - 0x6b, 0xaa, 0x7c, 0x3a, 0xab, 0x0d, 0x31, 0x7a, 0x7b, 0xba, 0xfd, 0x54, - 0x10, 0x66, 0xbd, 0x68, 0x77, 0x48, 0x1b, 0xfa, 0xf7, 0x32, 0x27, 0x33, - 0x0e, 0xc2, 0x46, 0xf7, 0x51, 0x64, 0xc7, 0xbc, 0xac, 0xa4, 0x75, 0x6e, - 0x72, 0xac, 0xb0, 0x8a, 0x54, 0xaf, 0x59, 0xed, 0x9a, 0x0a, 0x29, 0x6d, - 0x18, 0x70, 0x86, 0x96, 0xe0, 0x0f, 0xd8, 0x3b, 0x7c, 0x43, 0x94, 0xce, - 0xf4, 0xf5, 0x76, 0x79, 0x4c, 0x11, 0xd2, 0xa0, 0x0d, 0x6e, 0x69, 0x5e, - 0xb0, 0x70, 0x0a, 0x45, 0xda, 0xe5, 0xbb, 0x46, 0x80, 0x79, 0x1d, 0x5f, - 0xfa, 0x22, 0x26, 0xe4, 0x97, 0xde, 0x1b, 0x4e, 0x64, 0xf2, 0x8e, 0xa9, - 0x9c, 0x96, 0x86, 0x35, 0xec, 0x29, 0x3b, 0xf7, 0xb1, 0x0f, 0xa7, 0xfc, - 0x8d, 0x59, 0x4f, 0xa0, 0xf6, 0xb7, 0x54, 0xc0, 0xaf, 0xcc, 0x9a, 0x30, - 0xd8, 0x10, 0x53, 0x3d, 0x5e, 0x43, 0x27, 0x44, 0x68, 0x89, 0x17, 0xaa, - 0xec, 0x3f, 0x59, 0x56, 0x0f, 0x22, 0x8b, 0xbd, 0x64, 0xda, 0xe8, 0x57, - 0x5f, 0xb2, 0xc1, 0xcf, 0x86, 0x6b, 0x35, 0x36, 0x39, 0xa6, 0x2c, 0xc4, - 0x13, 0x47, 0xd7, 0xa5, 0xd8, 0xfe, 0x91, 0x24, 0x0f, 0xd1, 0x70, 0x7e, - 0xb2, 0x7a, 0xab, 0x2e, 0xc1, 0x7b, 0x1d, 0xbb, 0x54, 0xfa, 0x8c, 0x90, - 0xe2, 0xb6, 0xa6, 0x5d, 0x69, 0x13, 0x0e, 0x16, 0xca, 0x84, 0xed, 0x8f, - 0xe2, 0x35, 0x43, 0xec, 0xf3, 0xbe, 0xf7, 0x60, 0xa7, 0x77, 0xf5, 0xef, - 0x65, 0xfa, 0xa5, 0x9c, 0x1e, 0x70, 0x9e, 0xe8, 0x84, 0x8a, 0x40, 0xd4, - 0x0f, 0x28, 0x1d, 0x90, 0x2a, 0xe7, 0x5d, 0x7c, 0xe4, 0x50, 0x4d, 0x30, - 0x21, 0x63, 0x0b, 0x7f, 0x07, 0x89, 0x4a, 0xc3, 0x48, 0xfe, 0xbf, 0x15, - 0x5d, 0xfb, 0xf5, 0x83, 0xd8, 0x3f, 0xd2, 0xa3, 0xb0, 0x69, 0xfd, 0xd7, - 0x0f, 0xd7, 0xe8, 0x86, 0x6a, 0xf4, 0x57, 0x15, 0x2c, 0x4d, 0x2d, 0xf5, - 0xf8, 0xa1, 0xe4, 0x42, 0xa5, 0x2f, 0xf5, 0xb9, 0x96, 0xc0, 0x21, 0x5e, - 0xa3, 0xc7, 0x1f, 0x75, 0xd6, 0xff, 0xf0, 0x9b, 0x7f, 0xd5, 0x8f, 0xef, - 0x76, 0xf9, 0xd3, 0x08, 0xa3, 0x97, 0x1e, 0x10, 0x46, 0x58, 0x53, 0x13, - 0x11, 0x36, 0x32, 0xd3, 0x29, 0xa9, 0x4d, 0x81, 0x59, 0x96, 0xe8, 0x46, - 0xa5, 0x6a, 0x5a, 0x1d, 0xc1, 0x16, 0x48, 0x1d, 0x34, 0xf7, 0xdf, 0x70, - 0xb6, 0x20, 0x70, 0x54, 0xd7, 0x7f, 0x9c, 0x11, 0xd6, 0x42, 0xc3, 0xc6, - 0xd3, 0xe9, 0xfe, 0x0a, 0xb1, 0x6d, 0x3f, 0xb3, 0x55, 0x10, 0x3c, 0x8e, - 0x40, 0x0b, 0x2e, 0x05, 0xa7, 0x18, 0x02, 0x12, 0xae, 0x96, 0x76, 0xee, - 0x0c, 0x72, 0x40, 0x3a, 0x8c, 0xe0, 0x6b, 0xb5, 0x4f, 0x2f, 0xa8, 0x83, - 0xc1, 0xd5, 0xce, 0x5a, 0xd6, 0x04, 0x77, 0x0b, 0x7c, 0x77, 0x3f, 0xc7, - 0xff, 0xb4, 0xfe, 0xb1, 0xd7, 0x2e, 0xad, 0xe2, 0x00, 0x58, 0x82, 0x56, - 0x30, 0xc1, 0x1c, 0x98, 0xea, 0x6e, 0xb3, 0x3b, 0x07, 0xaa, 0xa0, 0xd9, - 0xf6, 0x4e, 0x11, 0xea, 0x0d, 0xe5, 0xfe, 0xd0, 0xa1, 0x18, 0x61, 0x8e, - 0x3b, 0x63, 0x0c, 0x3e, 0x51, 0x83, 0x85, 0x6e, 0x64, 0x70, 0x12, 0x4b, - 0x09, 0x21, 0x66, 0xde, 0x60, 0x6e, 0x7a, 0xf0, 0x80, 0xa6, 0xaf, 0xd3, - 0x5c, 0x2b, 0x7a, 0x88, 0xb9, 0x3c, 0x86, 0xfd, 0x46, 0xa4, 0xcf, 0x10, - 0xa7, 0x71, 0x6c, 0xf6, 0x0a, 0x32, 0x41, 0x09, 0xc5, 0x6c, 0x06, 0xf3, - 0x19, 0x2f, 0xc0, 0x2a, 0xe6, 0x86, 0x28, 0x0b, 0x65, 0x8d, 0x37, 0xb7, - 0xc8, 0x79, 0x57, 0x3b, 0x7f, 0x11, 0x9b, 0x6f, 0x6f, 0x51, 0xee, 0x16, - 0x6e, 0x6e, 0x8b, 0x4d, 0xef, 0x19, 0x08, 0x6f, 0x00, 0x38, 0x61, 0x06, - 0xda, 0x23, 0x8e, 0x36, 0x73, 0x21, 0xe3, 0x58, 0x9a, 0x91, 0xeb, 0x3f, - 0x38, 0x88, 0x06, 0x56, 0xc0, 0xc0, 0x54, 0xf1, 0x89, 0xbb, 0x02, 0x73, - 0xfe, 0xce, 0x32, 0xf4, 0xbd, 0xa7, 0x3f, 0x0f, 0x0e, 0x88, 0x55, 0x37, - 0x7f, 0xf7, 0x92, 0xf5, 0x31, 0xe1, 0x6a, 0xb3, 0x16, 0xec, 0x51, 0x72, - 0xac, 0x79, 0x0f, 0x9f, 0xea, 0x71, 0xa3, 0x92, 0x1a, 0x18, 0x22, 0xb4, - 0x4f, 0x92, 0x42, 0x29, 0xbb, 0x1e, 0x18, 0xfd, 0x4b, 0x39, 0xaf, 0xc1, - 0xbe, 0xf9, 0xa4, 0x28, 0xfe, 0x31, 0x12, 0x4b, 0xd4, 0x10, 0x18, 0x58, - 0x98, 0xe6, 0x8a, 0xe3, 0xf4, 0xfb, 0x2c, 0x24, 0x98, 0x88, 0x2e, 0xff, - 0xde, 0xd8, 0xbb, 0xf9, 0x29, 0xdb, 0x22, 0xe8, 0xf9, 0x4a, 0x4f, 0x51, - 0x79, 0x70, 0x1d, 0x62, 0x33, 0x77, 0x20, 0xeb, 0x06, 0x33, 0xce, 0x7c, - 0xb5, 0xac, 0xd1, 0x8f, 0xfc, 0xc7, 0x4d, 0x34, 0x7c, 0x2f, 0x0e, 0xb9, - 0x0c, 0x03, 0x5e, 0x81, 0x14, 0x4b, 0x16, 0xd6, 0xe9, 0x8c, 0xb8, 0xa9, - 0xb0, 0x2a, 0xe5, 0xc6, 0x90, 0xc9, 0x3e, 0x6c, 0x9e, 0x52, 0x4d, 0x23, - 0xe7, 0xe0, 0xfa, 0x57, 0x7d, 0x05, 0x28, 0xb2, 0xdd, 0xdf, 0xd0, 0x7e, - 0xfc, 0x12, 0xee, 0x4e, 0xe5, 0x7d, 0x37, 0xbd, 0x21, 0x43, 0x44, 0xb8, - 0x69, 0x0c, 0xac, 0x76, 0xae, 0x2d, 0xf9, 0xa9, 0x5b, 0xaa, 0x8c, 0x47, - 0xa6, 0xe2, 0x61, 0x36, 0x14, 0x80, 0x60, 0x79, 0xbd, 0x3c, 0x0e, 0x4a, - 0xde, 0xfe, 0x39, 0x84, 0xde, 0x0c, 0x48, 0xb1, 0xc0, 0xdc, 0x46, 0x6b, - 0x17, 0x24, 0xfd, 0x2e, 0x20, 0xcf, 0x7e, 0xa0, 0x01, 0x33, 0x27, 0xf9, - 0x42, 0xe1, 0x1c, 0xd2, 0x44, 0x62, 0x58, 0xa0, 0x4a, 0xdd, 0xfa, 0x3a, - 0x8b, 0xa2, 0xb9, 0x47, 0x9e, 0x01, 0xd1, 0xe0, 0xff, 0xa5, 0xbc, 0xe1, - 0xb8, 0xf4, 0xc6, 0xfa, 0x9a, 0x09, 0xe8, 0x27, 0x95, 0xad, 0x38, 0x7d, - 0x05, 0xb0, 0x3c, 0x8d, 0xff, 0x4a, 0xd3, 0x17, 0xd1, 0x50, 0x01, 0x98, - 0xdf, 0xd1, 0x2c, 0x68, 0x1b, 0xb9, 0xe5, 0xea, 0x6b, 0x87, 0x36, 0xb0, - 0xcc, 0x0e, 0xa0, 0xb7, 0x3e, 0x33, 0xbe, 0xe1, 0xa2, 0x61, 0x72, 0xdd, - 0xf4, 0x0e, 0x7f, 0xeb, 0xe0, 0x35, 0xb9, 0x45, 0x11, 0x66, 0x68, 0x06, - 0x90, 0x3e, 0x12, 0xb7, 0x1c, 0xb0, 0x52, 0xfd, 0x58, 0x34, 0x18, 0x54, - 0xf6, 0x0e, 0xef, 0x59, 0x48, 0x16, 0xca, 0xae, 0x88, 0x78, 0x85, 0xe6, - 0xe5, 0x98, 0xe9, 0x3e, 0x55, 0x94, 0xe7, 0x00, 0x65, 0x9a, 0x7e, 0xaf, - 0x82, 0xd8, 0xbc, 0x33, 0xf1, 0x7c, 0x69, 0x8b, 0x5c, 0x39, 0x5f, 0xca, - 0x60, 0x13, 0x6d, 0xe7, 0xaf, 0x35, 0x74, 0x2d, 0xcd, 0x09, 0x55, 0xcc, - 0x92, 0x73, 0x54, 0xb6, 0x96, 0x82, 0xb3, 0x2c, 0x70, 0xf5, 0xcd, 0xfb, - 0x6b, 0xc6, 0xc2, 0x4f, 0xa8, 0x7b, 0x16, 0x51, 0xe4, 0xb7, 0xad, 0xab, - 0x52, 0xa5, 0xd7, 0xa0, 0x18, 0xd6, 0x35, 0x16, 0xd0, 0x11, 0x7a, 0x5d, - 0x75, 0xf2, 0x6f, 0x4a, 0xb4, 0x60, 0x33, 0xcb, 0xb2, 0x6b, 0x18, 0x4c, - 0xf4, 0x19, 0x72, 0xa4, 0xc3, 0x6e, 0xf9, 0xc2, 0x81, 0x06, 0x45, 0xb4, - 0x35, 0x34, 0x04, 0xfb, 0x38, 0xb8, 0xbd, 0xbf, 0xe5, 0x0b, 0x65, 0xbd, - 0x49, 0xbf, 0x1f, 0xa5, 0x94, 0xae, 0xa6, 0x7e, 0xf5, 0x42, 0x5e, 0xa1, - 0x57, 0x45, 0x50, 0xc6, 0xba, 0x91, 0xf8, 0xa6, 0x97, 0x44, 0x66, 0x11, - 0x42, 0x75, 0x08, 0xc8, 0x3d, 0x7e, 0x45, 0xab, 0x02, 0xd0, 0x4e, 0x76, - 0x70, 0x78, 0x16, 0xa3, 0x33, 0x06, 0x13, 0x6f, 0xcf, 0xb4, 0x10, 0x30, - 0x71, 0xb9, 0x68, 0x97, 0x60, 0x77, 0xfb, 0xa7, 0x8e, 0x10, 0x16, 0xae, - 0x39, 0x0e, 0x36, 0xf6, 0xeb, 0x30, 0xb3, 0x02, 0xd6, 0x6f, 0x28, 0xdd, - 0x09, 0x5c, 0x76, 0x12, 0x55, 0xaf, 0x32, 0xaa, 0x61, 0xfa, 0x82, 0x42, - 0xaf, 0x24, 0xe1, 0x9c, 0x11, 0x6b, 0x0d, 0xac, 0x5c, 0x1b, 0x6d, 0xa6, - 0xd0, 0x46, 0xf9, 0xad, 0x69, 0x01, 0xca, 0xf0, 0x56, 0xe8, 0x8c, 0x00, - 0xd5, 0x89, 0x34, 0xc0, 0x24, 0xc9, 0x72, 0xd2, 0x01, 0xd1, 0x7d, 0x1d, - 0xf2, 0xde, 0x0b, 0x13, 0x2c, 0x2d, 0xe7, 0xa7, 0x0b, 0xe8, 0x8c, 0xee, - 0x28, 0xc2, 0xb5, 0x2b, 0x65, 0x24, 0xcb, 0x29, 0x75, 0x34, 0x65, 0x37, - 0x0b, 0x87, 0x80, 0x4b, 0x8e, 0xa4, 0xe9, 0xa6, 0x8c, 0x67, 0x1a, 0xe0, - 0x60, 0x2f, 0x1b, 0x12, 0x87, 0x87, 0x14, 0x1d, 0xb9, 0xb6, 0xbd, 0xe4, - 0x9e, 0x8e, 0x8f, 0x1a, 0xc2, 0xad, 0xd4, 0x97, 0x37, 0xbf, 0xcf, 0x0b, - 0xd2, 0x0b, 0x76, 0x16, 0x21, 0x6f, 0x3b, 0x5c, 0xaf, 0x2c, 0xd2, 0x57, - 0x09, 0xbe, 0xd9, 0x4b, 0xe2, 0x0b, 0xcf, 0x2e, 0x44, 0x92, 0xd8, 0xae, - 0x60, 0xc5, 0x30, 0x0b, 0xa6, 0x44, 0xdc, 0xe9, 0x7f, 0xe2, 0xea, 0x55, - 0xea, 0x76, 0xce, 0xb9, 0xab, 0xa2, 0x95, 0xb2, 0xed, 0xc4, 0x1a, 0xf1, - 0xa7, 0xa4, 0x78, 0x4b, 0x71, 0xbf, 0xf1, 0xb7, 0x05, 0x48, 0xa9, 0x3a, - 0x41, 0x7a, 0x44, 0x6a, 0x89, 0x02, 0xbc, 0x51, 0x92, 0x1a, 0x55, 0x1f, - 0x99, 0x5d, 0x97, 0x82, 0x61, 0x4e, 0x2a, 0x79, 0xd3, 0x2b, 0x80, 0x49, - 0xfb, 0xf5, 0xc1, 0x00, 0x31, 0xc5, 0x84, 0x96, 0x22, 0xa4, 0xca, 0xad, - 0xf4, 0x4a, 0xa2, 0x55, 0xc5, 0xf9, 0x38, 0x3e, 0x4e, 0x88, 0x34, 0x4f, - 0xd7, 0xa5, 0x00, 0x31, 0x2d, 0x64, 0xc5, 0xeb, 0xfc, 0x93, 0x92, 0x6d, - 0xa4, 0x07, 0xd2, 0x5d, 0x84, 0x0a, 0xab, 0x03, 0x3c, 0x90, 0x88, 0xbb, - 0xa2, 0xf7, 0x77, 0xb4, 0x35, 0x76, 0xf0, 0x70, 0xa5, 0xfe, 0xa4, 0x8b, - 0x5b, 0x7f, 0xcc, 0xea, 0x79, 0xb3, 0xa9, 0x53, 0xa2, 0x1a, 0x7c, 0x20, - 0x98, 0xde, 0x01, 0x12, 0x7c, 0xeb, 0x75, 0x62, 0x76, 0x95, 0x10, 0xd6, - 0x5e, 0x82, 0x91, 0x42, 0x89, 0x71, 0xac, 0x78, 0x8a, 0x20, 0xb0, 0x04, - 0x20, 0xef, 0x4f, 0xab, 0x95, 0x57, 0xeb, 0x23, 0x60, 0xad, 0xb7, 0x6e, - 0xcb, 0xc5, 0x8a, 0xf0, 0x63, 0xf6, 0x5a, 0xe9, 0x1e, 0xff, 0x4b, 0xdf, - 0x77, 0x20, 0xac, 0xc9, 0x04, 0x68, 0x52, 0x0d, 0x9a, 0xef, 0x54, 0x17, - 0xf2, 0xea, 0x05, 0xce, 0x4e, 0x9b, 0x46, 0x1a, 0x0d, 0x26, 0x5f, 0x72, - 0x91, 0xab, 0xff, 0x53, 0xc7, 0x80, 0x3a, 0x68, 0xd9, 0x35, 0x24, 0xf6, - 0x92, 0x29, 0xcd, 0x45, 0x56, 0x09, 0xf9, 0x28, 0xa0, 0xc3, 0xd3, 0xbb, - 0x1a, 0xbb, 0x3c, 0x8e, 0x61, 0xf2, 0xbb, 0x5b, 0x4d, 0x69, 0xab, 0x80, - 0x62, 0xe8, 0xb4, 0x86, 0xe7, 0xe5, 0x94, 0xab, 0x3b, 0x1e, 0xef, 0x38, - 0xd2, 0x5d, 0x33, 0xea, 0x16, 0xfa, 0xa1, 0x48, 0xff, 0x36, 0xc9, 0x4d, - 0x3e, 0xf8, 0xff, 0xbe, 0xc4, 0xdc, 0x80, 0x0b, 0xe1, 0x1b, 0x51, 0x5f, - 0x9d, 0x90, 0xb4, 0xd9, 0x9e, 0xff, 0x1b, 0xca, 0x0d, 0xa4, 0x1e, 0x9b, - 0x2b, 0x21, 0xe7, 0x9c, 0x0c, 0x74, 0x82, 0xad, 0xd6, 0xfa, 0x3d, 0x1f, - 0xa0, 0x63, 0xaa, 0xea, 0x1a, 0xe6, 0xec, 0x14, 0x34, 0xe4, 0xf4, 0xd3, - 0x7a, 0xf1, 0x4b, 0x16, 0x9d, 0x8d, 0x52, 0x9e, 0x3e, 0x38, 0xfa, 0x1a, - 0xec, 0xb6, 0xa1, 0x98, 0x38, 0x86, 0x1b, 0xc9, 0x10, 0xb1, 0xfa, 0x91, - 0x7c, 0x2c, 0xb6, 0x89, 0xd8, 0x25, 0xe0, 0xe2, 0x95, 0xb7, 0x9c, 0x79, - 0x70, 0xdd, 0x83, 0x96, 0xbd, 0x44, 0xaf, 0x02, 0x4f, 0xb6, 0x65, 0x56, - 0xa9, 0xd0, 0x12, 0x3b, 0x2b, 0xa8, 0x97, 0x5b, 0x01, 0x49, 0xc6, 0x9e, - 0xee, 0xf8, 0x48, 0x15, 0x06, 0x42, 0xb4, 0x57, 0xef, 0x43, 0x07, 0xf8, - 0x2d, 0x1c, 0x66, 0x79, 0xe8, 0xa9, 0x4c, 0x36, 0x04, 0xa7, 0xa5, 0x7b, - 0x9c, 0xb9, 0x00, 0x5b, 0xb8, 0x20, 0x25, 0x30, 0x7e, 0xd1, 0x51, 0x9b, - 0xe6, 0x0c, 0x80, 0x5c, 0x52, 0x11, 0x8e, 0x2f, 0x0c, 0x06, 0x0a, 0x30, - 0xdb, 0x4f, 0x9a, 0x3f, 0x7d, 0x00, 0x7b, 0xa0, 0x25, 0x18, 0xa5, 0xad, - 0x85, 0x2b, 0x44, 0xfa, 0xe3, 0x24, 0x88, 0x67, 0x5f, 0x6e, 0xcf, 0xe2, - 0xad, 0xd5, 0xb3, 0xc7, 0xeb, 0x49, 0x5c, 0x86, 0xd0, 0x9e, 0x12, 0x34, - 0x51, 0x35, 0x42, 0x62, 0x81, 0xfc, 0xc2, 0x71, 0xc0, 0x2f, 0x67, 0x79, - 0x44, 0x53, 0x0c, 0x98, 0x2d, 0x7b, 0xc1, 0xff, 0xf5, 0x73, 0xd4, 0x11, - 0x7c, 0x73, 0x80, 0x26, 0x1f, 0x10, 0x15, 0x71, 0xbb, 0xa5, 0xf6, 0x6e, - 0x9f, 0x7e, 0xb2, 0x6e, 0x07, 0xb6, 0xd7, 0x99, 0x29, 0x0d, 0xdb, 0xb1, - 0x0e, 0xc6, 0x00, 0x09, 0xd1, 0xfb, 0x47, 0xa4, 0x40, 0x9a, 0x0d, 0xb7, - 0x47, 0x84, 0x56, 0xac, 0x19, 0xc1, 0xda, 0x1b, 0x3f, 0x25, 0x70, 0x83, - 0x56, 0xf9, 0x00, 0x8b, 0x1a, 0xef, 0x3f, 0x7d, 0x33, 0x8b, 0x81, 0xac, - 0x27, 0xa9, 0xd0, 0xd0, 0x0f, 0xea, 0x48, 0x49, 0xed, 0x7a, 0x06, 0xf7, - 0x7c, 0xe1, 0x62, 0x58, 0x3a, 0xdc, 0x33, 0xe7, 0x87, 0xf2, 0xf6, 0x55, - 0xa3, 0x35, 0x3e, 0xad, 0xbd, 0x03, 0x91, 0x50, 0xa2, 0xad, 0x6f, 0xae, - 0x24, 0x49, 0xb6, 0xa6, 0x10, 0x08, 0x2f, 0x5f, 0xb8, 0x34, 0xa9, 0x90, - 0xca, 0x56, 0x9c, 0x1c, 0x60, 0xb4, 0xe7, 0x76, 0xac, 0x27, 0x9e, 0x1b, - 0x6e, 0x65, 0x22, 0x34, 0xb5, 0xaa, 0xea, 0x68, 0xe8, 0x01, 0xc2, 0x83, - 0xf3, 0x1b, 0xbc, 0xf6, 0xa4, 0x29, 0x56, 0xc3, 0x16, 0x13, 0x50, 0x23, - 0xff, 0x62, 0x2a, 0x3f, 0x1d, 0x14, 0xbf, 0x1e, 0x91, 0x5f, 0x52, 0xd8, - 0xa1, 0x2a, 0xec, 0x0d, 0x40, 0x2f, 0x7a, 0xba, 0x3a, 0xf6, 0xb4, 0x31, - 0xb9, 0x6e, 0xbc, 0x4a, 0x0b, 0x8e, 0x5a, 0x42, 0x00, 0x0c, 0x5f, 0xce, - 0x17, 0x23, 0x6a, 0x5e, 0x08, 0x2f, 0xbe, 0xbc, 0x27, 0xb2, 0x97, 0x10, - 0xad, 0x35, 0x37, 0xb6, 0xd5, 0xa4, 0x5f, 0x75, 0x44, 0x72, 0x01, 0x20, - 0xd5, 0x8c, 0x59, 0x37, 0x5d, 0x49, 0x7a, 0x3b, 0xc4, 0x41, 0x21, 0x8f, - 0x91, 0xdf, 0x98, 0x8d, 0x2f, 0x78, 0xff, 0x5e, 0x63, 0x9c, 0x52, 0xc1, - 0x99, 0x5b, 0xc5, 0x71, 0xd9, 0x6b, 0xe7, 0x53, 0xc0, 0xc3, 0xfd, 0x9d, - 0xfa, 0x48, 0x91, 0xbb, 0xac, 0x11, 0xfe, 0xa6, 0xcb, 0xb4, 0x12, 0xbf, - 0xa5, 0xb1, 0x93, 0x61, 0x08, 0x18, 0xd7, 0x53, 0x56, 0x64, 0x28, 0x75, - 0x57, 0xe5, 0x02, 0x5e, 0x51, 0x8c, 0xbb, 0xa8, 0x89, 0xbf, 0xc2, 0xdd, - 0x49, 0x88, 0xf9, 0x13, 0x36, 0xd2, 0xc2, 0x8f, 0xd9, 0x7b, 0xf8, 0xb7, - 0x88, 0x1d, 0x6c, 0x11, 0x9e, 0xd0, 0xad, 0x18, 0x7c, 0x21, 0x38, 0x48, - 0xa5, 0xab, 0x4e, 0xc5, 0x49, 0x10, 0xea, 0xc1, 0xce, 0xc7, 0x71, 0x2c, - 0xb6, 0x8b, 0x7e, 0x7f, 0xbc, 0xbe, 0x4d, 0xe4, 0x3a, 0xda, 0x08, 0xf0, - 0x87, 0x06, 0xb9, 0x00, 0x60, 0x99, 0x9c, 0xa5, 0xee, 0x11, 0xdf, 0xd5, - 0x7f, 0xc9, 0x10, 0x8f, 0x06, 0x0c, 0x90, 0xa6, 0x20, 0xec, 0x29, 0xad, - 0x1b, 0x71, 0xdf, 0xa9, 0x15, 0x6b, 0xe3, 0xd1, 0x70, 0x25, 0xfa, 0xdb, - 0xa7, 0x66, 0x72, 0xf7, 0x72, 0x5a, 0xb5, 0x46, 0xc5, 0x8b, 0x94, 0x18, - 0x2b, 0x0f, 0x80, 0x32, 0xa1, 0xc8, 0x70, 0x59, 0xf3, 0x39, 0xd8, 0x13, - 0x22, 0x60, 0x9c, 0xe7, 0x04, 0xc0, 0x33, 0x30, 0x39, 0x13, 0x0c, 0x8f, - 0x36, 0x74, 0xcc, 0x8a, 0x6c, 0xf6, 0x1c, 0xcb, 0x69, 0x42, 0xaa, 0xf2, - 0xe5, 0x08, 0xbf, 0xdf, 0x4d, 0xc1, 0x5b, 0x77, 0x13, 0x6a, 0x97, 0x7c, - 0x1e, 0xd9, 0x9d, 0x99, 0x8f, 0x19, 0x12, 0x2e, 0xd6, 0xf4, 0x6a, 0xd4, - 0x18, 0x3b, 0x13, 0xfe, 0xe7, 0x83, 0x88, 0xae, 0xbd, 0xcc, 0x13, 0x49, - 0xee, 0xb7, 0x9e, 0xbb, 0x59, 0x98, 0x25, 0x32, 0xe5, 0x42, 0x44, 0xd2, - 0x81, 0x27, 0xeb, 0xa7, 0x23, 0x90, 0xbe, 0x20, 0x00, 0x80, 0xc3, 0x23, - 0xdb, 0x2d, 0x26, 0x4a, 0x7b, 0x84, 0x1b, 0xb9, 0xc6, 0x34, 0x35, 0xb4, - 0x32, 0x4b, 0x0e, 0xdd, 0x6e, 0xbc, 0xb4, 0x3d, 0xf2, 0xce, 0xe2, 0xbc, - 0x32, 0x72, 0x1f, 0x4b, 0x1a, 0x66, 0xbe, 0x86, 0x3b, 0xd6, 0x10, 0xca, - 0x9f, 0x0d, 0x8d, 0x48, 0x83, 0x7f, 0xa2, 0x06, 0xc1, 0xec, 0x26, 0x55, - 0x7d, 0x01, 0x5d, 0x74, 0x98, 0xbe, 0x77, 0xfe, 0xa5, 0xe2, 0x58, 0xa7, - 0x7a, 0x09, 0x29, 0x57, 0x7b, 0xf6, 0x38, 0x75, 0x04, 0xe1, 0x68, 0x50, - 0x68, 0x8f, 0x49, 0xee, 0xc6, 0x4c, 0x11, 0x9d, 0xfe, 0x41, 0x3e, 0x6a, - 0x8e, 0xc5, 0x1b, 0x3e, 0x3b, 0xe6, 0x55, 0x73, 0x6b, 0xf0, 0xe4, 0x9c, - 0x8c, 0x22, 0x3f, 0xb2, 0x27, 0x36, 0xb7, 0x1b, 0xe0, 0x0f, 0x21, 0x08, - 0x2c, 0x60, 0xb6, 0x39, 0x9b, 0xa0, 0x18, 0xa3, 0x01, 0xd3, 0x0c, 0xaf, - 0xf7, 0x64, 0x49, 0x6e, 0xa7, 0xbe, 0x21, 0x2e, 0x8b, 0xe1, 0xa7, 0xc9, - 0xf9, 0x26, 0xb5, 0x94, 0x61, 0x8a, 0xa0, 0xf8, 0x3d, 0x63, 0xcc, 0x54, - 0xa7, 0x4c, 0xe2, 0xa1, 0x7b, 0x56, 0x84, 0xd9, 0x59, 0x28, 0xa7, 0xe8, - 0x5a, 0xd6, 0x21, 0x74, 0x05, 0x22, 0x6d, 0x6b, 0xfd, 0x1c, 0xcc, 0x09, - 0x2c, 0xe1, 0xdc, 0xe1, 0x70, 0xe5, 0x26, 0x7e, 0x52, 0x7f, 0xa9, 0x92, - 0x66, 0xaf, 0x73, 0xc6, 0xa1, 0x31, 0x46, 0xaa, 0x9f, 0xf3, 0xe0, 0xd4, - 0x18, 0x0d, 0x4a, 0x5e, 0xe4, 0x8b, 0x82, 0x0e, 0x5c, 0xc3, 0xa2, 0xfb, - 0x18, 0x83, 0x8e, 0x1c, 0xde, 0x41, 0xa5, 0x09, 0x0a, 0x2f, 0xf8, 0xa8, - 0xbd, 0x1c, 0xcd, 0xd0, 0x74, 0xf0, 0x6a, 0x72, 0x89, 0x73, 0xc4, 0x99, - 0x4b, 0x58, 0x24, 0x1d, 0xfc, 0x24, 0x00, 0x9f, 0xab, 0x87, 0x20, 0x98, - 0xd5, 0x4c, 0x82, 0xe7, 0x00, 0xd2, 0x6a, 0x71, 0x34, 0x4c, 0x39, 0x19, - 0x87, 0x42, 0x26, 0xc2, 0x9c, 0x45, 0xf6, 0xce, 0x3b, 0xe5, 0x1b, 0x02, - 0xe5, 0x95, 0x2d, 0xa0, 0xb7, 0x1d, 0x36, 0x80, 0x7a, 0x69, 0xae, 0x47, - 0xdf, 0x1e, 0xd5, 0xc2, 0x56, 0x06, 0x29, 0x98, 0x8a, 0xa5, 0x4b, 0x8f, - 0xe2, 0xae, 0x77, 0xc9, 0x2c, 0x9b, 0xb5, 0x7c, 0xe7, 0x14, 0x6c, 0xc2, - 0x26, 0x35, 0x4a, 0xbb, 0xab, 0xaf, 0x96, 0xbc, 0x4e, 0xc7, 0x45, 0xfb, - 0x14, 0xa3, 0x43, 0x18, 0x3e, 0xe5, 0xd1, 0x80, 0xc9, 0xd3, 0x73, 0x2b, - 0x5a, 0xc3, 0x25, 0xfa, 0x56, 0x2b, 0x1c, 0xcf, 0x68, 0x27, 0x9f, 0xf5, - 0x92, 0xe3, 0xc9, 0xb2, 0x96, 0x15, 0x65, 0x86, 0x87, 0xeb, 0x5e, 0x54, - 0x6a, 0xba, 0xc6, 0xb9, 0x34, 0x4d, 0x7a, 0xff, 0x2a, 0xfb, 0xe2, 0xbb, - 0x89, 0x53, 0xc1, 0x18, 0x9b, 0x32, 0xc5, 0x21, 0x72, 0x2a, 0x72, 0x89, - 0x09, 0x14, 0x70, 0x80, 0xdc, 0xad, 0x8f, 0x1e, 0x20, 0x5c, 0x5b, 0x0f, - 0x8b, 0xea, 0x4f, 0xc3, 0xd1, 0xae, 0xaa, 0x94, 0x41, 0xee, 0xa1, 0x1d, - 0x99, 0xd3, 0xc9, 0x86, 0x03, 0x3e, 0x8d, 0x7e, 0x31, 0xcd, 0x24, 0xf4, - 0xb5, 0x50, 0xb6, 0xaf, 0xec, 0x4a, 0xf2, 0xe8, 0x65, 0xd7, 0x87, 0x63, - 0x75, 0x97, 0x1e, 0x2d, 0xdc, 0xd5, 0xa6, 0x21, 0xa8, 0x2f, 0x34, 0x6e, - 0xae, 0x3d, 0x38, 0x02, 0x02, 0xcc, 0xa9, 0xe1, 0x45, 0x14, 0x41, 0xc6, - 0xbc, 0x2a, 0x98, 0x45, 0xbc, 0xa2, 0x5d, 0x37, 0x8e, 0x62, 0xee, 0x24, - 0xe8, 0x6e, 0xfe, 0xb6, 0xae, 0xb9, 0x9f, 0xf2, 0xca, 0xd8, 0x2e, 0x91, - 0x59, 0xa2, 0x92, 0x81, 0x13, 0x07, 0x9f, 0x34, 0x2f, 0x03, 0x1c, 0x66, - 0x68, 0x98, 0x22, 0x2a, 0xfa, 0xcf, 0xf9, 0xbd, 0xc4, 0x1a, 0x24, 0xd4, - 0x5a, 0xd8, 0x78, 0x71, 0x87, 0x79, 0xdc, 0x53, 0x3c, 0xf1, 0x93, 0x3e, - 0xac, 0xbf, 0xe0, 0x1f, 0x1d, 0xc2, 0xfa, 0xf2, 0x56, 0x68, 0x1e, 0xb6, - 0x6a, 0xe0, 0xa2, 0xa7, 0x8c, 0xaa, 0x70, 0x78, 0x9e, 0xa3, 0xd3, 0xbe, - 0x4b, 0xc2, 0xce, 0x8e, 0xed, 0x41, 0x86, 0x35, 0x6a, 0xd3, 0x7b, 0xdb, - 0xd6, 0x20, 0x1c, 0x7f, 0x65, 0xa5, 0xab, 0xbe, 0x24, 0xb9, 0x13, 0xba, - 0x02, 0x39, 0x8a, 0x5a, 0xf8, 0x9c, 0x1c, 0x54, 0xc5, 0x5d, 0x9d, 0xaf, - 0x9f, 0x1e, 0xb8, 0x73, 0xed, 0xf2, 0xaf, 0x8e, 0xed, 0x23, 0x9a, 0xbb, - 0x74, 0x14, 0x4e, 0xa7, 0x9f, 0x1f, 0xe2, 0x56, 0xd6, 0xcb, 0x30, 0x2b, - 0x99, 0x09, 0x94, 0x55, 0xae, 0x6a, 0x30, 0xfa, 0xd1, 0x43, 0xdc, 0x6d, - 0xa1, 0xd0, 0x6d, 0x18, 0xf1, 0x08, 0xbf, 0xab, 0x7f, 0x33, 0x96, 0x1e, - 0xab, 0x45, 0x36, 0x0e, 0x6c, 0x3f, 0x04, 0x56, 0x8a, 0x38, 0xf8, 0x4b, - 0x4b, 0xd1, 0x6d, 0xf7, 0xfe, 0xbe, 0x63, 0x4c, 0x59, 0x78, 0x67, 0xe7, - 0x58, 0x94, 0xf4, 0x74, 0xdf, 0x3c, 0x26, 0x43, 0x18, 0x7b, 0x12, 0x11, - 0x95, 0x11, 0xff, 0x74, 0x65, 0x7f, 0x19, 0xff, 0x21, 0x2f, 0x9a, 0x22, - 0x3d, 0xcd, 0xa9, 0x09, 0x3a, 0x68, 0x0a, 0xeb, 0x8d, 0x0c, 0x56, 0xd9, - 0xd3, 0xf1, 0x2a, 0x55, 0x12, 0xa3, 0x6e, 0x19, 0x26, 0x11, 0x86, 0x0b, - 0xe2, 0x98, 0x2d, 0xbf, 0xe1, 0xcb, 0x33, 0xe2, 0x16, 0xfd, 0xa1, 0xa1, - 0xc7, 0x2a, 0xe5, 0xae, 0xd1, 0x16, 0x5d, 0x0a, 0x9c, 0xda, 0x4c, 0x9d, - 0x81, 0xd7, 0x0f, 0x1a, 0x8d, 0x1e, 0xa8, 0x19, 0x45, 0xc4, 0xd6, 0xd4, - 0xed, 0x96, 0x0a, 0x6f, 0xea, 0x28, 0x10, 0x9b, 0x61, 0x2f, 0x92, 0xcc, - 0x03, 0x09, 0x31, 0xca, 0x9b, 0x53, 0x26, 0x1d, 0x05, 0x95, 0x56, 0x9d, - 0x43, 0x35, 0xdf, 0x52, 0x2a, 0x68, 0x61, 0xee, 0xa1, 0xc9, 0x39, 0x89, - 0xea, 0x12, 0x31, 0x70, 0x19, 0x71, 0x44, 0xc3, 0x15, 0xab, 0x50, 0xe3, - 0x0f, 0xf8, 0x40, 0xbf, 0x39, 0x05, 0x54, 0x29, 0x2e, 0xca, 0x36, 0x4b, - 0x94, 0x4a, 0xaa, 0x3b, 0xf3, 0x75, 0x8a, 0x31, 0x47, 0x63, 0x6c, 0xc1, - 0xd1, 0x17, 0x1c, 0xb2, 0xd2, 0xd1, 0x61, 0xeb, 0xf3, 0x35, 0xd6, 0xfd, - 0x92, 0x68, 0xf0, 0xb0, 0x8d, 0x15, 0xa9, 0x59, 0x41, 0x89, 0x65, 0x72, - 0xa9, 0xf5, 0x12, 0xff, 0x78, 0x62, 0x1d, 0xa7, 0x8d, 0xeb, 0xeb, 0xa1, - 0x20, 0xfe, 0x04, 0xff, 0xc4, 0xd8, 0xb2, 0xaa, 0xf1, 0x6d, 0xf5, 0x8f, - 0x04, 0x96, 0x4a, 0x21, 0xb9, 0x6a, 0x15, 0x75, 0x55, 0x4a, 0xb7, 0x0e, - 0x81, 0x90, 0xfd, 0xa2, 0x94, 0x11, 0xab, 0xe5, 0xcb, 0x4c, 0x8c, 0xe8, - 0x5d, 0xeb, 0x46, 0xb2, 0x0c, 0x4b, 0xf5, 0xc0, 0xcd, 0x2e, 0xe9, 0xcd, - 0xf4, 0x3e, 0xdc, 0x52, 0xc7, 0xf9, 0x53, 0x7d, 0x67, 0x54, 0x5c, 0xcb, - 0x85, 0x2d, 0x8d, 0x40, 0x06, 0xea, 0x0e, 0xc6, 0x5a, 0xbb, 0x5a, 0x22, - 0xab, 0x05, 0x8d, 0x1b, 0x74, 0x43, 0x2f, 0x35, 0x7b, 0xeb, 0xf9, 0x75, - 0xa6, 0x68, 0x54, 0xe7, 0x8a, 0xd2, 0x03, 0xf9, 0xad, 0x62, 0x10, 0x54, - 0xf2, 0x4b, 0xbc, 0x80, 0x26, 0x5f, 0x9e, 0x40, 0xd1, 0x32, 0x0c, 0x77, - 0x08, 0x2e, 0xc8, 0x37, 0x74, 0xa5, 0xd7, 0xce, 0xfd, 0xad, 0x3d, 0xf5, - 0xa1, 0x26, 0xd4, 0x01, 0xde, 0xd3, 0xb1, 0xd2, 0x5b, 0xd7, 0x63, 0xe0, - 0x02, 0x3a, 0x38, 0x87, 0x65, 0xfa, 0xe5, 0xe5, 0xac, 0x05, 0x73, 0x28, - 0xef, 0x57, 0xed, 0x54, 0x23, 0x42, 0x50, 0xbc, 0xe3, 0x21, 0x82, 0xfd, - 0x4b, 0x8c, 0x08, 0x1e, 0x21, 0x9a, 0xfa, 0x8c, 0xaa, 0xfc, 0xbb, 0x25, - 0x5b, 0x4a, 0xb0, 0xc4, 0xb6, 0xd1, 0xb5, 0xec, 0xfb, 0xf3, 0xe8, 0xc6, - 0x0c, 0x82, 0x98, 0xe8, 0xc5, 0xe4, 0x3e, 0x61, 0x1d, 0xef, 0x3e, 0xd2, - 0xbc, 0x93, 0x67, 0x29, 0x3b, 0x04, 0x10, 0x3b, 0x50, 0x0e, 0x5b, 0xc2, - 0xc2, 0x0d, 0x1d, 0xe0, 0x4e, 0xa7, 0xba, 0x2a, 0xad, 0x80, 0xc1, 0x80, - 0x39, 0xd8, 0xd0, 0xce, 0x06, 0xef, 0x41, 0x44, 0x01, 0xe0, 0xb9, 0xc6, - 0x12, 0xd9, 0x20, 0x54, 0x11, 0x6e, 0xd4, 0xab, 0x29, 0x76, 0xf1, 0x4f, - 0x3f, 0xbe, 0xb8, 0x05, 0x3a, 0x6f, 0x61, 0xe9, 0x0b, 0x03, 0x74, 0xeb, - 0x55, 0xd6, 0x5a, 0xb6, 0xcf, 0x61, 0x04, 0x36, 0x92, 0x5b, 0xe8, 0x91, - 0x16, 0x21, 0x9b, 0x31, 0x30, 0x21, 0x7c, 0x43, 0x10, 0x71, 0xe1, 0xb9, - 0x24, 0x6c, 0xa3, 0x1c, 0x06, 0xfa, 0xa1, 0xb9, 0xd9, 0xfe, 0xa8, 0x19, - 0x99, 0x81, 0x51, 0x00, 0x96, 0xb0, 0x1f, 0x72, 0x8d, 0xb2, 0x77, 0x68, - 0x27, 0x5e, 0x65, 0x15, 0xaf, 0x98, 0xfc, 0x0f, 0xdf, 0xee, 0x23, 0xb2, - 0x05, 0x90, 0x68, 0xbd, 0x3d, 0xbf, 0x56, 0xff, 0x44, 0x5f, 0x59, 0xa5, - 0x04, 0x74, 0x2e, 0x0f, 0x56, 0x5c, 0xe4, 0x65, 0x76, 0x7a, 0x22, 0x28, - 0x19, 0x04, 0x09, 0x48, 0x22, 0xaa, 0xad, 0x9c, 0xd8, 0xf0, 0x1b, 0x60, - 0x03, 0x06, 0x94, 0x99, 0x9a, 0x51, 0xe5, 0x66, 0x13, 0xc0, 0x1c, 0x2d, - 0xb3, 0x9d, 0x53, 0x6c, 0xb2, 0x68, 0xca, 0xc1, 0xcd, 0xda, 0xfa, 0x35, - 0x8c, 0xc1, 0x1b, 0x18, 0x44, 0x28, 0xd3, 0x22, 0xb4, 0x01, 0xd7, 0x4a, - 0x01, 0x27, 0xb1, 0xbe, 0xaf, 0x85, 0x6a, 0xae, 0xf9, 0xe5, 0x46, 0xbc, - 0x63, 0xa7, 0x7f, 0x69, 0x52, 0xf2, 0x8d, 0xa0, 0x11, 0x29, 0x00, 0x9e, - 0x0b, 0x1f, 0x2d, 0x34, 0x8b, 0x48, 0xbd, 0xa0, 0x95, 0xab, 0x52, 0xbb, - 0xd4, 0xac, 0xa7, 0x82, 0xde, 0x5a, 0xd6, 0x5a, 0xb6, 0x95, 0x3e, 0xa3, - 0x3e, 0x43, 0xcd, 0x4f, 0x32, 0x3d, 0xde, 0xb3, 0xa9, 0x98, 0xc1, 0x1d, - 0xf8, 0xef, 0x37, 0xba, 0xe2, 0x7f, 0x30, 0x0d, 0x56, 0xb8, 0x6a, 0xdf, - 0xdc, 0x1e, 0xbe, 0x98, 0xc6, 0x6b, 0xff, 0xd3, 0x56, 0x59, 0xf9, 0xf3, - 0x27, 0x69, 0xe0, 0xf6, 0x52, 0xc2, 0xfa, 0x21, 0x82, 0x88, 0x72, 0x0c, - 0x55, 0x11, 0xec, 0x9e, 0x33, 0x25, 0x5e, 0x6f, 0x10, 0xe3, 0xa1, 0xc2, - 0x1b, 0x65, 0xe4, 0xd1, 0xb7, 0x38, 0xe2, 0x6a, 0x66, 0xe7, 0xfe, 0x11, - 0x0b, 0x58, 0xef, 0xd5, 0xad, 0xd7, 0x66, 0xca, 0xd6, 0xe2, 0x0e, 0x2e, - 0xc0, 0x04, 0x22, 0x3f, 0x66, 0x12, 0x06, 0x20, 0x72, 0xd0, 0xd3, 0x4d, - 0x9c, 0x91, 0xab, 0x5f, 0xce, 0x79, 0xea, 0x3c, 0xfb, 0x48, 0xf1, 0x95, - 0x53, 0xef, 0x04, 0x35, 0x50, 0x00, 0x06, 0xa7, 0xf9, 0xa2, 0x22, 0x16, - 0xbe, 0xea, 0x06, 0x54, 0x58, 0x77, 0xdc, 0x4e, 0x0d, 0x16, 0x8d, 0x6b, - 0xd6, 0xe6, 0x9f, 0xd8, 0x66, 0x93, 0xf4, 0xec, 0xf9, 0x1e, 0xfd, 0x92, - 0xd0, 0x72, 0x62, 0x52, 0xd7, 0xca, 0xa3, 0xc0, 0x7c, 0x5a, 0x6d, 0xa4, - 0xef, 0xec, 0x59, 0x6a, 0x13, 0x28, 0x9c, 0x74, 0xeb, 0xcb, 0x6f, 0x07, - 0x8c, 0x68, 0xfb, 0x6f, 0x6d, 0xf6, 0xd4, 0x64, 0x5b, 0x90, 0xf0, 0x7a, - 0xa3, 0xdf, 0xc0, 0xed, 0xb2, 0x0e, 0x79, 0xe6, 0x00, 0x5c, 0xe6, 0x9a, - 0xf8, 0xde, 0x78, 0x3e, 0xb6, 0xe7, 0x50, 0x2f, 0x0c, 0x9c, 0x02, 0x67, - 0x76, 0xe0, 0x15, 0xd5, 0x37, 0x45, 0x55, 0xb2, 0xc0, 0x0d, 0x9d, 0xce, - 0xc7, 0xb5, 0x1b, 0xfb, 0x8c, 0xf8, 0x62, 0x1e, 0x74, 0xcc, 0xa5, 0xa7, - 0x61, 0x7e, 0x0b, 0x64, 0x0e, 0x1f, 0xc2, 0x88, 0x39, 0xb0, 0x66, 0x27, - 0x9c, 0x69, 0xd1, 0x3e, 0x2f, 0xcb, 0x69, 0xa0, 0x90, 0xc0, 0x38, 0x1a, - 0x9a, 0x9f, 0x0c, 0x07, 0x45, 0x20, 0x1e, 0x8f, 0x42, 0xf7, 0xd2, 0x2d, - 0x41, 0x15, 0x14, 0x7d, 0xbe, 0x65, 0x0c, 0xe7, 0x6d, 0xa4, 0x23, 0x8f, - 0x52, 0x58, 0x88, 0x7e, 0xc5, 0x6f, 0xb5, 0xe9, 0xcf, 0x4f, 0x66, 0x9e, - 0x0c, 0xf8, 0xc0, 0xea, 0x50, 0xcb, 0x60, 0x8e, 0xf2, 0xf7, 0x64, 0xf0, - 0xc2, 0xc1, 0x74, 0xdc, 0xa0, 0xa9, 0x28, 0x76, 0xa2, 0xea, 0x60, 0x1a, - 0x1b, 0x1e, 0xfc, 0xea, 0xde, 0x27, 0x0e, 0x0f, 0xff, 0xae, 0x8d, 0xac, - 0x71, 0xe3, 0xca, 0x9f, 0x03, 0xb6, 0x19, 0x16, 0xe0, 0x43, 0x71, 0x06, - 0x9e, 0x8b, 0xe8, 0x56, 0xf6, 0xcc, 0x74, 0x62, 0x3d, 0x12, 0x3c, 0xea, - 0xd1, 0xf7, 0x5c, 0x3a, 0x56, 0xf1, 0x19, 0x05, 0x69, 0x05, 0xef, 0x5a, - 0x99, 0x06, 0x31, 0x68, 0x9e, 0xd6, 0xed, 0xf2, 0xf0, 0xe2, 0xb7, 0xc5, - 0xc9, 0x1c, 0x3f, 0x82, 0xe2, 0x8d, 0x08, 0x56, 0x0b, 0xcc, 0x30, 0x67, - 0x37, 0x18, 0xaf, 0x69, 0x0b, 0xad, 0xe2, 0x5b, 0xe3, 0x47, 0x8a, 0x6c, - 0x69, 0x2b, 0xd7, 0x5a, 0x49, 0x81, 0x0f, 0x14, 0x4d, 0x99, 0x2f, 0xab, - 0x8e, 0xe0, 0x12, 0xfe, 0xc1, 0x8d, 0x37, 0x8f, 0x16, 0x98, 0x17, 0xe7, - 0x12, 0x0d, 0xe5, 0x37, 0x03, 0x74, 0xdf, 0x17, 0x8f, 0x6d, 0x99, 0x0c, - 0x66, 0xea, 0x9d, 0xb4, 0x44, 0x1f, 0xd6, 0xf6, 0xb2, 0x80, 0x1a, 0x6c, - 0x65, 0x50, 0x5e, 0x46, 0x8e, 0x65, 0xda, 0x32, 0x5d, 0x68, 0x8c, 0xf6, - 0x74, 0x22, 0xe0, 0x41, 0x42, 0xaf, 0x5b, 0x41, 0xb0, 0xa4, 0xb6, 0xa7, - 0xa3, 0x28, 0x1b, 0x81, 0x9d, 0x9f, 0x69, 0x85, 0x07, 0xee, 0xcb, 0xb6, - 0xa1, 0xb4, 0x15, 0xc8, 0x60, 0x01, 0x36, 0x66, 0x0e, 0x2c, 0xee, 0x46, - 0x1e, 0x58, 0xd8, 0xa3, 0x64, 0x8c, 0xe6, 0x43, 0xc7, 0x84, 0xb9, 0xee, - 0x5b, 0x42, 0x38, 0x9a, 0xe9, 0x25, 0x57, 0xf4, 0x4b, 0x41, 0x56, 0xb2, - 0xa4, 0x7d, 0x23, 0xb5, 0x0f, 0xfb, 0xbf, 0x79, 0x70, 0x0d, 0x12, 0x64, - 0x1e, 0x86, 0x73, 0x74, 0xfb, 0x22, 0x4f, 0x2c, 0xf8, 0xa8, 0xf5, 0xc0, - 0xfd, 0x76, 0xab, 0x75, 0xac, 0x91, 0x79, 0xd9, 0x51, 0x42, 0x46, 0x59, - 0x98, 0x13, 0x75, 0x1c, 0xf4, 0x8f, 0x1b, 0xaa, 0x69, 0x8e, 0x7a, 0x0c, - 0xf7, 0xf5, 0xaf, 0x21, 0xc9, 0xde, 0xcd, 0x0e, 0x66, 0xc9, 0xc4, 0x57, - 0x34, 0x41, 0x06, 0xb3, 0xad, 0x29, 0x30, 0xe2, 0x6f, 0xcc, 0x11, 0x9c, - 0x74, 0x1c, 0xc4, 0xa8, 0x98, 0x50, 0xfc, 0x59, 0xaf, 0x74, 0xd3, 0x6e, - 0x08, 0x82, 0x0f, 0x4b, 0xe8, 0xce, 0xda, 0x58, 0x48, 0x65, 0x02, 0x78, - 0x18, 0x59, 0xac, 0x69, 0xf4, 0x0e, 0xfc, 0x92, 0x50, 0x7f, 0x2f, 0x11, - 0xfc, 0x0b, 0x58, 0x68, 0x74, 0xfa, 0xd2, 0xa9, 0x44, 0xc6, 0x25, 0x66, - 0x8d, 0x80, 0xbc, 0xc7, 0xf5, 0x01, 0xcf, 0x03, 0xe4, 0xbc, 0x79, 0x31, - 0x60, 0x30, 0xe8, 0x17, 0xf2, 0x63, 0xf8, 0x55, 0x3f, 0x17, 0xb4, 0x71, - 0x56, 0x62, 0x54, 0x29, 0x8c, 0xf5, 0x4b, 0xf4, 0x54, 0x94, 0x48, 0xd5, - 0x53, 0x2d, 0x4f, 0x27, 0x47, 0xab, 0x17, 0x3f, 0x57, 0x04, 0x6b, 0x79, - 0xbe, 0x75, 0x78, 0xc2, 0x0c, 0xfc, 0xbb, 0x6a, 0xf6, 0x61, 0x5b, 0x59, - 0x0d, 0x40, 0x8d, 0x7f, 0xfe, 0x78, 0xff, 0xfb, 0x32, 0x8e, 0xe8, 0x34, - 0x02, 0x23, 0xa9, 0x74, 0x22, 0x01, 0xbb, 0x03, 0x0b, 0x29, 0x90, 0x2b, - 0xd5, 0xc3, 0x20, 0x65, 0x96, 0xe5, 0xfa, 0xdf, 0x53, 0x0c, 0xb0, 0x53, - 0x4e, 0xe9, 0x8c, 0xf7, 0x1c, 0x82, 0xfd, 0x32, 0x66, 0xbf, 0xfd, 0xf1, - 0x05, 0x5d, 0x3b, 0x0d, 0x4d, 0xfc, 0x56, 0x82, 0xf1, 0xb7, 0x9e, 0x22, - 0x02, 0xf5, 0xdb, 0x1b, 0x93, 0x96, 0x38, 0x69, 0xc5, 0xbd, 0xb9, 0xba, - 0x4b, 0xae, 0x5e, 0x00, 0x0f, 0x40, 0xa0, 0xf0, 0x52, 0x72, 0x61, 0xe9, - 0x4f, 0xdf, 0x5d, 0x9d, 0x9b, 0xdd, 0xc2, 0x7f, 0x8f, 0xb9, 0x1d, 0xe9, - 0x4c, 0xce, 0x70, 0x22, 0x54, 0xbf, 0x6f, 0xa4, 0x74, 0x59, 0x04, 0x3e, - 0xee, 0xe0, 0x31, 0xbb, 0x38, 0xd5, 0x8e, 0x5d, 0x6a, 0xe3, 0xde, 0xfb, - 0xe7, 0x24, 0x74, 0x3b, 0xc2, 0xa3, 0x18, 0xf0, 0x9d, 0xed, 0x8c, 0x18, - 0x83, 0xbf, 0x3e, 0xa3, 0xa2, 0xad, 0x2f, 0xcc, 0x7b, 0x72, 0x43, 0x54, - 0x02, 0x29, 0x2d, 0x59, 0x14, 0x6b, 0x71, 0x6b, 0xac, 0xe2, 0x3c, 0x69, - 0x2b, 0x12, 0x28, 0xcb, 0x3d, 0xd0, 0xe9, 0x41, 0x6d, 0x04, 0xd9, 0x5c, - 0x56, 0x97, 0x8f, 0xe3, 0x67, 0xf3, 0x9d, 0xa4, 0x04, 0xae, 0x25, 0xd2, - 0x65, 0x77, 0xa8, 0xc8, 0xd3, 0x11, 0x4c, 0xd2, 0xdb, 0x7a, 0x99, 0x24, - 0x87, 0xc1, 0xce, 0x54, 0x1b, 0xf2, 0xa4, 0xfc, 0xe6, 0x1e, 0x86, 0x6e, - 0x93, 0xba, 0x6e, 0xb5, 0xf5, 0xa1, 0x4b, 0xab, 0x4e, 0x28, 0xfc, 0x6d, - 0xf5, 0xe4, 0xb7, 0x3a, 0xab, 0xda, 0xb7, 0xf8, 0x49, 0x5d, 0xf6, 0x68, - 0xf7, 0x08, 0x79, 0x4f, 0x89, 0xfb, 0x33, 0x04, 0x04, 0x6e, 0x59, 0xd3, - 0xbc, 0x4a, 0x23, 0x5c, 0xa4, 0x56, 0xdb, 0x34, 0x96, 0x0b, 0x6d, 0x2e, - 0x9e, 0x64, 0xdc, 0x61, 0xd0, 0x40, 0xfb, 0xfd, 0xdf, 0xd6, 0x5c, 0xd6, - 0x19, 0xb6, 0x21, 0xa4, 0x39, 0x67, 0x9f, 0xcf, 0xc1, 0x41, 0x24, 0x9a, - 0xbe, 0x12, 0xf7, 0x7b, 0xa7, 0xa4, 0x3b, 0xb4, 0xae, 0x64, 0x4e, 0xd8, - 0xea, 0x13, 0x49, 0x19, 0x6a, 0xe7, 0x1d, 0x2d, 0x15, 0xbd, 0x9d, 0x59, - 0x24, 0x54, 0x5c, 0xb9, 0x5e, 0x8a, 0x8e, 0x6a, 0xa9, 0xd5, 0x06, 0xba, - 0xaf, 0x44, 0xd5, 0x53, 0x2b, 0x6a, 0x47, 0x0f, 0x40, 0xae, 0x43, 0x79, - 0xa4, 0x35, 0xc0, 0x58, 0xbb, 0x96, 0xc2, 0x3e, 0x41, 0xec, 0x14, 0x47, - 0xcb, 0xbf, 0xdd, 0x7c, 0x8b, 0xbc, 0xd3, 0x17, 0x79, 0x7d, 0xca, 0xb8, - 0x2b, 0xb7, 0x79, 0xe7, 0x81, 0xab, 0x9a, 0xa3, 0xa0, 0x06, 0xb6, 0x8a, - 0x39, 0x05, 0xcc, 0x61, 0xcf, 0xd8, 0xba, 0x15, 0x34, 0xe5, 0xad, 0x7d, - 0x3a, 0x9f, 0x9f, 0x77, 0x26, 0xbe, 0x10, 0xfe, 0x1b, 0xba, 0x24, 0x21, - 0x3f, 0x41, 0x75, 0x34, 0x4e, 0xf9, 0xc4, 0x88, 0x97, 0x2b, 0x88, 0xb5, - 0x16, 0xc2, 0x54, 0x92, 0xe8, 0x91, 0x0f, 0x76, 0x6a, 0xd5, 0x0d, 0xbc, - 0x65, 0x80, 0x13, 0x04, 0xc1, 0x2b, 0x74, 0x57, 0xb6, 0x17, 0xb7, 0xb2, - 0x2c, 0x0b, 0x9f, 0x79, 0x6b, 0x81, 0x14, 0x79, 0xd6, 0x70, 0x4c, 0x7a, - 0x2a, 0x9f, 0x03, 0xba, 0xfc, 0xea, 0xe3, 0x27, 0x5d, 0xb6, 0x05, 0xfd, - 0xb6, 0xc5, 0xa7, 0x97, 0xeb, 0x5a, 0xf3, 0xff, 0x3e, 0x30, 0x39, 0x89, - 0x86, 0x00, 0xa4, 0x55, 0x9b, 0x2d, 0xaf, 0x82, 0x1a, 0xa8, 0xef, 0x72, - 0x14, 0xcb, 0x06, 0x41, 0x8c, 0xd0, 0xc5, 0xcf, 0x2d, 0x72, 0x40, 0x13, - 0xf3, 0xba, 0x4e, 0xc8, 0x87, 0x56, 0xbc, 0x5f, 0x63, 0x26, 0xc8, 0x0f, - 0x91, 0xc5, 0x09, 0x9e, 0x19, 0x60, 0x51, 0xb0, 0xad, 0xf8, 0x32, 0x57, - 0x5b, 0x06, 0xea, 0x24, 0x87, 0xe9, 0x00, 0xc6, 0xac, 0x83, 0x0a, 0xed, - 0xa2, 0x82, 0xfc, 0x48, 0x71, 0x35, 0x95, 0x3e, 0x43, 0x87, 0x19, 0x03, - 0x50, 0x65, 0xe6, 0x5f, 0x85, 0x82, 0x98, 0x09, 0xb7, 0x74, 0xb5, 0xa4, - 0x69, 0x0e, 0xe1, 0x60, 0x4f, 0x9f, 0xe9, 0x95, 0xb6, 0x97, 0x14, 0x95, - 0x71, 0x7b, 0x94, 0x5e, 0xc8, 0x93, 0x65, 0x6c, 0xc3, 0xa2, 0x6d, 0x11, - 0x5d, 0x2f, 0xe2, 0x96, 0xc8, 0xc0, 0x10, 0x97, 0xb2, 0xd0, 0x1f, 0x82, - 0x34, 0xdd, 0x7e, 0x68, 0x29, 0x8d, 0x16, 0xd0, 0xf3, 0x24, 0x06, 0xdd, - 0x3b, 0x2a, 0xf1, 0x3d, 0x72, 0x57, 0x85, 0x40, 0x28, 0x69, 0xc5, 0xf8, - 0xeb, 0x22, 0x52, 0xc9, 0xcd, 0x76, 0xf5, 0x9f, 0xaf, 0x29, 0x71, 0xbf, - 0xa4, 0x11, 0x36, 0xe6, 0x6a, 0x63, 0x3d, 0xf4, 0x7c, 0x9e, 0x6d, 0x7d, - 0x37, 0x7a, 0x4d, 0x4d, 0xd4, 0x52, 0x4c, 0xf8, 0xfd, 0xb6, 0xc1, 0xab, - 0xae, 0x50, 0xfd, 0x4a, 0x24, 0xbd, 0xc7, 0x8c, 0x60, 0x07, 0xdd, 0x9d, - 0xe9, 0x6d, 0x97, 0xf5, 0x62, 0xad, 0x84, 0x61, 0xeb, 0x62, 0x1d, 0x3e, - 0xc6, 0x2c, 0x54, 0x67, 0xea, 0x12, 0x6c, 0x98, 0x87, 0x00, 0xe8, 0x0c, - 0xd0, 0x93, 0xcb, 0xe7, 0x7e, 0x3d, 0x1f, 0x79, 0x73, 0x9b, 0xc9, 0xa2, - 0x7c, 0x9f, 0x0b, 0x64, 0xaa, 0x77, 0xd7, 0x5c, 0x58, 0xc4, 0x92, 0x01, - 0x7f, 0xf9, 0xb3, 0x03, 0xa8, 0xdd, 0x18, 0xd3, 0x4c, 0xc8, 0x45, 0xc5, - 0xbe, 0x42, 0x5c, 0x72, 0x3f, 0xfb, 0x9c, 0x8b, 0x01, 0x28, 0x59, 0xfc, - 0xd4, 0x5b, 0x09, 0x38, 0x50, 0xf7, 0xe3, 0xf7, 0xba, 0x11, 0xc7, 0x38, - 0x3a, 0x22, 0x7e, 0xcb, 0xb3, 0xfd, 0xba, 0x5c, 0x8f, 0xc8, 0x06, 0xdb, - 0x2d, 0xbb, 0x2f, 0xa9, 0xea, 0x53, 0xc4, 0xf2, 0xbe, 0x49, 0x37, 0x2f, - 0x4a, 0x8b, 0x75, 0x97, 0xa2, 0x95, 0x85, 0x1f, 0x1e, 0x43, 0xea, 0x2e, - 0x70, 0x46, 0x6e, 0x4b, 0xfe, 0x2e, 0x65, 0x40, 0x6f, 0x8c, 0xbc, 0x4e, - 0x49, 0x38, 0x58, 0x0b, 0xbc, 0x07, 0xef, 0xea, 0x2b, 0xb2, 0x94, 0x21, - 0x6e, 0x0e, 0xfe, 0xc0, 0x61, 0x28, 0x11, 0xd6, 0x74, 0xba, 0xe0, 0x37, - 0xf8, 0x36, 0x70, 0x03, 0x75, 0x8e, 0x8f, 0x6d, 0x02, 0xda, 0x44, 0x1c, - 0x46, 0x12, 0xb3, 0xcc, 0x12, 0x9b, 0x4f, 0xb3, 0xc9, 0x76, 0x95, 0x72, - 0x83, 0x04, 0x43, 0x3a, 0x8a, 0x44, 0x6d, 0x72, 0xb9, 0xa3, 0xbf, 0xfd, - 0x2f, 0x50, 0xe8, 0xbc, 0x10, 0x03, 0x1d, 0xa8, 0xb0, 0xd9, 0x93, 0x6d, - 0xa7, 0x70, 0x87, 0x69, 0x16, 0xe3, 0x5d, 0x2f, 0x2d, 0x25, 0x7a, 0x0a, - 0x79, 0x35, 0xd0, 0xc2, 0x89, 0x1a, 0xd2, 0xe4, 0x6d, 0x3a, 0xf2, 0xa9, - 0xb7, 0xf9, 0x61, 0x10, 0x38, 0x66, 0xe7, 0x01, 0x95, 0x84, 0x15, 0xb4, - 0xff, 0x50, 0x96, 0x0c, 0xe5, 0xcb, 0x3e, 0x20, 0x61, 0xfc, 0x13, 0x94, - 0x58, 0x07, 0xfc, 0x00, 0x45, 0xdc, 0xb6, 0xff, 0xf1, 0x68, 0x9a, 0xb7, - 0xdc, 0xc8, 0x37, 0x58, 0xf5, 0x64, 0x8b, 0x85, 0x7e, 0x1f, 0xc6, 0x7c, - 0x13, 0x58, 0x5d, 0x3d, 0xc2, 0x18, 0xb2, 0xbe, 0x79, 0x3c, 0xec, 0x5f, - 0x2d, 0xa2, 0x9c, 0xd3, 0xaa, 0x8c, 0x20, 0x51, 0xc8, 0x15, 0x09, 0x31, - 0xbf, 0x35, 0xf0, 0xc8, 0xf3, 0x0d, 0x1c, 0x51, 0x09, 0xd3, 0x67, 0x32, - 0x5c, 0x01, 0xa5, 0x22, 0x2f, 0x5a, 0x29, 0xf5, 0xb9, 0x9b, 0xc5, 0x15, - 0xac, 0x14, 0xf8, 0xfc, 0x1c, 0xf7, 0x4a, 0x25, 0xaa, 0xb0, 0xd1, 0xc6, - 0xee, 0xed, 0x5f, 0x59, 0x84, 0xd1, 0xf8, 0xb3, 0x56, 0x15, 0xbc, 0x64, - 0x9f, 0xac, 0x08, 0xad, 0x99, 0x10, 0xd7, 0xb0, 0xce, 0xc0, 0xf2, 0x82, - 0xed, 0x27, 0xf7, 0x1d, 0xa3, 0xda, 0x5d, 0x4a, 0xb4, 0x38, 0x03, 0xa0, - 0x49, 0xf2, 0xd1, 0x80, 0x26, 0x17, 0xe1, 0x82, 0xab, 0xc3, 0x5b, 0x23, - 0x22, 0xa8, 0x5c, 0x6f, 0x9a, 0x49, 0x10, 0x87, 0x48, 0x08, 0x77, 0xe5, - 0x6d, 0x6a, 0x6c, 0xd9, 0x8a, 0xa0, 0x8f, 0x97, 0x76, 0x5d, 0xed, 0x70, - 0xa6, 0xd1, 0xc9, 0xf5, 0x61, 0xa2, 0x2f, 0x4c, 0x35, 0x26, 0x82, 0x16, - 0x66, 0xe9, 0x1a, 0x31, 0xed, 0x96, 0xda, 0xc4, 0x8a, 0xce, 0xca, 0xca, - 0x44, 0x86, 0xec, 0x2b, 0xb5, 0x45, 0x56, 0xb0, 0x00, 0xfa, 0xb5, 0x1e, - 0x43, 0x2b, 0x75, 0x25, 0x84, 0x86, 0xf0, 0x41, 0xde, 0xb9, 0x17, 0xd9, - 0xf9, 0x7f, 0xc3, 0xba, 0xc4, 0xe8, 0x85, 0x93, 0xa8, 0xf3, 0x7e, 0xdb, - 0x78, 0x4c, 0x9f, 0xc4, 0xff, 0x79, 0x0a, 0xa3, 0x4d, 0xa6, 0xf1, 0x85, - 0x37, 0x7f, 0x4d, 0x03, 0x14, 0xbb, 0x50, 0x56, 0x0b, 0xde, 0xfe, 0x38, - 0x32, 0xb8, 0xe6, 0x79, 0x65, 0x13, 0x9a, 0x09, 0x55, 0x8e, 0xb9, 0xd6, - 0x65, 0xe5, 0x2f, 0xbd, 0x9e, 0x08, 0x1c, 0xbc, 0x38, 0xe0, 0x5a, 0x76, - 0xc8, 0x1f, 0xec, 0x0a, 0x25, 0x0f, 0x28, 0x29, 0xca, 0xc8, 0x85, 0xf9, - 0x76, 0x45, 0x2b, 0xfd, 0xf2, 0x7a, 0xf5, 0x48, 0x70, 0xd2, 0x54, 0xd8, - 0x8d, 0xaf, 0xa0, 0x2b, 0xcb, 0xee, 0x6a, 0xcb, 0x49, 0x79, 0x8a, 0x8c, - 0x6e, 0xf6, 0xf9, 0x03, 0xb6, 0xdd, 0xbd, 0x54, 0x10, 0x7c, 0x44, 0xa1, - 0x9b, 0xdf, 0xc6, 0x10, 0x60, 0xa4, 0xb8, 0xfe, 0xba, 0x37, 0xa8, 0xd2, - 0x00, 0xab, 0x78, 0xda, 0x49, 0xa1, 0xa5, 0x3a, 0x45, 0x0b, 0x91, 0x6a, - 0xfe, 0x3d, 0xa1, 0xea, 0xf1, 0xcc, 0x8f, 0xbe, 0xb2, 0x1d, 0xc2, 0xad, - 0xed, 0x17, 0x33, 0x99, 0xb9, 0x9f, 0x56, 0xac, 0x0d, 0xff, 0x71, 0x8c, - 0x6d, 0x2c, 0xc0, 0x23, 0xff, 0x44, 0x12, 0x0c, 0x7b, 0xc2, 0xcb, 0x5f, - 0x7e, 0x6c, 0x6a, 0xb6, 0xd4, 0xd4, 0x68, 0x6d, 0x20, 0x76, 0xb2, 0xc2, - 0x99, 0x50, 0xe2, 0x7b, 0x4d, 0xd1, 0x54, 0x8d, 0x00, 0x66, 0xac, 0x8b, - 0x07, 0xe0, 0x68, 0x42, 0xed, 0xde, 0x46, 0x16, 0x0a, 0xc4, 0x66, 0x6b, - 0x5b, 0xbc, 0x19, 0x2d, 0x61, 0xbe, 0xd2, 0x42, 0xc9, 0xca, 0x77, 0x45, - 0x34, 0x14, 0x25, 0x78, 0xd0, 0x58, 0x22, 0x81, 0x9d, 0x05, 0xec, 0x3d, - 0x80, 0xc3, 0xff, 0x5c, 0x9e, 0x64, 0x55, 0x29, 0x1b, 0x75, 0xb5, 0xf5, - 0x1c, 0x75, 0x58, 0x89, 0x8d, 0x60, 0xb5, 0x56, 0x6d, 0x08, 0x1a, 0xaa, - 0x65, 0x29, 0xc1, 0xf5, 0x0b, 0x72, 0xb3, 0xe0, 0x00, 0xea, 0x70, 0x31, - 0x6c, 0x40, 0x61, 0x7e, 0xb9, 0x07, 0xd4, 0x1e, 0xcc, 0x2c, 0xa8, 0x23, - 0xbe, 0x28, 0x45, 0xd0, 0x78, 0xb4, 0xe0, 0x7e, 0x44, 0x96, 0x0b, 0x0e, - 0xf1, 0xd7, 0x9f, 0xb6, 0x5a, 0xb2, 0x5f, 0x28, 0x3b, 0xc9, 0x0b, 0x99, - 0x1a, 0x82, 0x25, 0x05, 0x6b, 0xd8, 0x2d, 0x9c, 0x16, 0xd0, 0x1b, 0x62, - 0xff, 0xd6, 0xce, 0x5e, 0x90, 0x5c, 0xf1, 0xa0, 0xe4, 0x00, 0x10, 0x79, - 0xb4, 0x37, 0x67, 0x6c, 0x01, 0xaf, 0xcb, 0x05, 0x15, 0xb2, 0x4d, 0xb3, - 0x3e, 0xe3, 0x54, 0x00, 0xab, 0xbe, 0xe0, 0xd6, 0x0e, 0x1c, 0xb9, 0xba, - 0xee, 0x52, 0xa9, 0x55, 0x04, 0xd8, 0x19, 0x23, 0x52, 0x8f, 0xbd, 0x7c, - 0x9b, 0x10, 0xb9, 0x4f, 0xb6, 0xfe, 0xbc, 0x54, 0xe3, 0xf3, 0x32, 0x97, - 0x3a, 0xd7, 0x2b, 0x55, 0x62, 0x9a, 0x3a, 0x65, 0x97, 0xa7, 0xdd, 0x42, - 0xfe, 0x22, 0x5c, 0xd8, 0x10, 0xfb, 0x01, 0x16, 0x2f, 0xa1, 0x92, 0x20, - 0x62, 0x48, 0xe3, 0x8f, 0xb5, 0x01, 0xbd, 0xb8, 0x79, 0x8f, 0xd0, 0xa9, - 0x88, 0xcd, 0x94, 0x02, 0xe0, 0xc8, 0x0c, 0x66, 0xb9, 0x54, 0x13, 0x74, - 0x90, 0x36, 0xfa, 0x1d, 0xab, 0x16, 0xf6, 0x52, 0x55, 0xb2, 0x2f, 0xc8, - 0x66, 0xaa, 0xa4, 0x83, 0x10, 0x36, 0xb2, 0x4e, 0xf2, 0x53, 0x73, 0xce, - 0xbb, 0x19, 0x3e, 0xbc, 0x6a, 0x01, 0xf0, 0x0f, 0x98, 0x50, 0x2f, 0x92, - 0xd9, 0xe6, 0xf4, 0xb5, 0x0c, 0xb4, 0x97, 0xeb, 0x6d, 0xe6, 0x96, 0x6f, - 0x28, 0x04, 0x07, 0x89, 0x3c, 0xf9, 0x09, 0x01, 0x6d, 0x32, 0x3f, 0x60, - 0x19, 0x05, 0x95, 0xc9, 0xc1, 0x40, 0xb3, 0x07, 0x24, 0x7b, 0x4c, 0x8d, - 0x01, 0x50, 0x8a, 0xb7, 0xd8, 0xd8, 0x71, 0xf5, 0xec, 0x5a, 0x20, 0x37, - 0xfb, 0xa8, 0x0d, 0xc8, 0x18, 0xff, 0x89, 0x65, 0x91, 0x66, 0x54, 0x3a, - 0x7d, 0x22, 0xff, 0x05, 0x6f, 0xe2, 0x47, 0xe4, 0x55, 0x42, 0x06, 0x76, - 0x58, 0xa2, 0x8c, 0x9d, 0x56, 0xc0, 0x9c, 0xd4, 0x11, 0x01, 0x52, 0x7d, - 0x7e, 0x7b, 0x4d, 0x17, 0x55, 0xc2, 0x47, 0x6e, 0xa6, 0x79, 0x5e, 0x3c, - 0xa0, 0xdf, 0xc2, 0xf5, 0xfe, 0xe0, 0xf0, 0xfc, 0xf5, 0xb3, 0x62, 0x3a, - 0xb6, 0x14, 0x0f, 0xc5, 0xbd, 0x5a, 0x1c, 0xd4, 0xe9, 0xc5, 0x03, 0xce, - 0xa2, 0xf5, 0x3a, 0x38, 0xba, 0xe4, 0xbb, 0x0a, 0x81, 0xe4, 0x43, 0x42, - 0xb9, 0xbe, 0xf2, 0x5a, 0x65, 0x20, 0x78, 0xba, 0x4f, 0x78, 0x7b, 0x59, - 0x7e, 0x55, 0x61, 0x03, 0x2c, 0xa0, 0x91, 0x33, 0x12, 0x9f, 0x43, 0x02, - 0x96, 0x8c, 0xae, 0xd2, 0x7e, 0xf1, 0x9d, 0x0b, 0x87, 0x4a, 0xaf, 0x03, - 0xe7, 0x65, 0x43, 0xb1, 0x8e, 0x2b, 0xb0, 0xd8, 0x9b, 0xac, 0x7a, 0x6c, - 0x98, 0x4d, 0x2f, 0xef, 0xcc, 0xc1, 0x18, 0xbc, 0x21, 0x4d, 0x35, 0x5b, - 0xd7, 0xcd, 0x8e, 0x5a, 0x71, 0x77, 0xe8, 0x5f, 0xf3, 0x70, 0x54, 0x3c, - 0x7d, 0x85, 0x8d, 0x80, 0x94, 0xa2, 0x3e, 0x49, 0x7a, 0x47, 0xe4, 0x29, - 0x6e, 0x7d, 0x80, 0xdc, 0x9e, 0xda, 0x88, 0x57, 0x64, 0xeb, 0x66, 0x44, - 0x01, 0x74, 0x0c, 0xf7, 0x90, 0x0e, 0xc6, 0xb6, 0x76, 0x7e, 0x5b, 0x11, - 0xae, 0xfa, 0xf5, 0x44, 0xae, 0x44, 0x8f, 0xdb, 0x0a, 0x52, 0x5f, 0xf2, - 0x7c, 0x51, 0x25, 0x07, 0x12, 0x2b, 0x66, 0x34, 0xab, 0xfb, 0xd2, 0xfc, - 0x16, 0x42, 0xe7, 0xdb, 0x17, 0xf8, 0x37, 0x50, 0x5a, 0x4b, 0x3c, 0xdf, - 0xb6, 0xf7, 0x58, 0x07, 0x1d, 0xa4, 0xf3, 0x67, 0x4e, 0x81, 0x9b, 0x24, - 0x8c, 0x9a, 0xb8, 0xd2, 0x10, 0x99, 0x19, 0x2c, 0x48, 0xa9, 0x57, 0xfb, - 0x16, 0x1a, 0xa5, 0xcc, 0x04, 0xe6, 0xd7, 0xbd, 0xd9, 0x39, 0xcb, 0x1f, - 0x7a, 0xd6, 0xa4, 0x67, 0x62, 0x7f, 0x89, 0x41, 0x8d, 0xf0, 0x81, 0x68, - 0x93, 0xca, 0xfd, 0x16, 0x95, 0xfa, 0x82, 0x38, 0xb4, 0xd9, 0xd8, 0x03, - 0x94, 0x3f, 0xba, 0x40, 0xac, 0x27, 0xa6, 0xe0, 0xbd, 0xef, 0xe1, 0xc1, - 0x80, 0xe7, 0x8c, 0x9d, 0x47, 0x51, 0x10, 0xfa, 0x0c, 0x93, 0xed, 0xf1, - 0x4d, 0xa7, 0xd7, 0x5c, 0x00, 0x46, 0x2e, 0xae, 0x11, 0xcc, 0x82, 0x9e, - 0xec, 0x0e, 0xfe, 0x55, 0x1d, 0xe5, 0xb7, 0x96, 0xd3, 0x33, 0xf2, 0x4e, - 0x14, 0x6d, 0x24, 0x90, 0x60, 0xb0, 0x13, 0x75, 0xca, 0xdd, 0xc1, 0xd4, - 0x2e, 0x97, 0x0f, 0xa3, 0x83, 0x18, 0x5a, 0x46, 0x75, 0x92, 0x45, 0x4c, - 0xb7, 0x84, 0x58, 0x0f, 0x06, 0x78, 0x0c, 0x79, 0x78, 0x70, 0xa0, 0xca, - 0x43, 0x7e, 0x9f, 0xdf, 0x83, 0x5e, 0xd9, 0x7d, 0x14, 0x38, 0xa7, 0x0f, - 0x58, 0x18, 0xb2, 0x26, 0x14, 0x60, 0xb7, 0xc7, 0x34, 0x96, 0x0a, 0x87, - 0x1a, 0x74, 0xc9, 0x24, 0x6b, 0x42, 0x6d, 0x59, 0xc8, 0x0e, 0x7e, 0x89, - 0x8e, 0xd9, 0x19, 0x7f, 0x0e, 0x23, 0x3c, 0xc9, 0x31, 0x29, 0x2f, 0xc3, - 0x7b, 0x2b, 0xc9, 0xc5, 0x25, 0x2e, 0x0f, 0x53, 0x5e, 0xeb, 0xc1, 0x40, - 0xa3, 0xf2, 0xf7, 0xf3, 0xee, 0x57, 0x88, 0x76, 0x8c, 0x39, 0x3a, 0x69, - 0x16, 0x53, 0x2f, 0x32, 0x2f, 0x4c, 0x9d, 0x8d, 0xfe, 0xbc, 0x41, 0xc9, - 0x83, 0x1a, 0x4b, 0x82, 0x8b, 0x76, 0x55, 0x1e, 0xc4, 0x4a, 0xf7, 0xe8, - 0xc6, 0xf3, 0xc3, 0xa3, 0x0f, 0x05, 0x73, 0x10, 0x0a, 0x99, 0x0e, 0x5d, - 0xbb, 0x39, 0xa6, 0x09, 0xc4, 0xc2, 0xed, 0x52, 0x21, 0xec, 0xbe, 0xd8, - 0x06, 0x85, 0x5c, 0x15, 0xc5, 0x18, 0x1b, 0x1d, 0xe3, 0xb6, 0x8e, 0xf8, - 0x90, 0x13, 0x1c, 0xf4, 0x78, 0x50, 0x7a, 0xdc, 0x64, 0x4b, 0xcd, 0x54, - 0x97, 0x5e, 0x06, 0x7a, 0x65, 0x55, 0x91, 0x5e, 0x44, 0xad, 0x90, 0xae, - 0xe0, 0xef, 0x9f, 0x36, 0x05, 0xdb, 0xd2, 0x71, 0xb7, 0x2a, 0x37, 0x0b, - 0xdd, 0x7c, 0x96, 0x1a, 0x60, 0x46, 0x4e, 0x3d, 0xd7, 0x00, 0xbc, 0x95, - 0xf2, 0x37, 0xfe, 0x8e, 0x24, 0xbd, 0x11, 0x8c, 0xfd, 0xeb, 0xce, 0x15, - 0x7a, 0xec, 0xdc, 0xbb, 0x00, 0x47, 0x02, 0xa8, 0x91, 0x69, 0xe4, 0xa4, - 0x46, 0x9d, 0xe6, 0x8f, 0xf9, 0x5b, 0x4f, 0xa5, 0x80, 0x0c, 0x01, 0xf7, - 0xe9, 0xeb, 0x52, 0x67, 0x07, 0x06, 0xf0, 0x4d, 0x26, 0x53, 0xd5, 0x06, - 0xd5, 0x42, 0xdc, 0xb8, 0xd8, 0xf4, 0xb9, 0x1f, 0xb4, 0x7f, 0x6c, 0x44, - 0xeb, 0x01, 0xc1, 0x28, 0x49, 0x17, 0x2c, 0x6f, 0xbe, 0x92, 0xe9, 0x4d, - 0x47, 0x14, 0xd6, 0x35, 0xb0, 0x11, 0x2c, 0x0a, 0x4d, 0xf3, 0x57, 0x73, - 0xc5, 0x81, 0x1b, 0xf2, 0x6e, 0xc5, 0x46, 0xa7, 0x63, 0xb9, 0x1d, 0x5b, - 0xe6, 0xf9, 0x60, 0xdf, 0xf1, 0x76, 0x18, 0x5e, 0xcb, 0x57, 0x36, 0x07, - 0x87, 0x1a, 0x88, 0x22, 0x93, 0xc2, 0x64, 0x2e, 0x57, 0xe5, 0x3e, 0xed, - 0xd6, 0x50, 0x0d, 0x9a, 0x27, 0x5e, 0x80, 0x0d, 0x8c, 0x5e, 0x93, 0xbc, - 0xa5, 0xec, 0x13, 0x73, 0x4b, 0x91, 0x9d, 0x9c, 0xd5, 0x01, 0x62, 0x0e, - 0x83, 0x60, 0xfe, 0x5c, 0xec, 0xe4, 0x82, 0xb0, 0xd3, 0xbc, 0xcf, 0x30, - 0x1d, 0x3f, 0x89, 0xe4, 0x5d, 0x84, 0xac, 0xab, 0x45, 0x31, 0x17, 0xc5, - 0xfe, 0x79, 0x5e, 0xdd, 0x76, 0xd2, 0xe2, 0x5e, 0x27, 0x1e, 0x3e, 0x53, - 0xf6, 0x2d, 0x38, 0x01, 0xb7, 0x6e, 0x31, 0x0b, 0x54, 0xa0, 0x77, 0x70, - 0xba, 0x36, 0x3b, 0x60, 0x72, 0x2e, 0xcc, 0xa6, 0x19, 0x56, 0xc4, 0xa8, - 0x4c, 0xf0, 0xe5, 0x6a, 0x84, 0x07, 0x4f, 0xb8, 0xfd, 0x80, 0x21, 0x1f, - 0x93, 0x28, 0x96, 0xf9, 0xf4, 0xff, 0x80, 0xf0, 0x21, 0xd7, 0x8a, 0x18, - 0x1e, 0xc0, 0x62, 0xe7, 0x09, 0x85, 0x51, 0x6c, 0xb8, 0x6c, 0x70, 0xca, - 0x41, 0x2c, 0x15, 0x8d, 0xee, 0xfa, 0xcd, 0xe7, 0x34, 0xbb, 0xf4, 0x4a, - 0x69, 0x35, 0x8e, 0xe1, 0xe6, 0x7a, 0xbb, 0xc3, 0x84, 0x06, 0xdf, 0xeb, - 0x35, 0x76, 0x13, 0x26, 0xfe, 0xcf, 0x2c, 0xc0, 0xc1, 0x29, 0xa6, 0x75, - 0x02, 0x7f, 0xd8, 0x87, 0x50, 0x64, 0xb0, 0x0d, 0x0a, 0x0d, 0xff, 0x88, - 0x87, 0xa0, 0x56, 0x91, 0xaf, 0x7b, 0x31, 0x4d, 0x1a, 0xf4, 0x2b, 0x49, - 0x6a, 0x83, 0x75, 0xcb, 0x39, 0xbe, 0xce, 0xdc, 0x95, 0xc1, 0x63, 0x77, - 0xaf, 0xa6, 0x25, 0xcf, 0x56, 0xc4, 0x14, 0x3d, 0xb7, 0x35, 0x41, 0x3a, - 0x29, 0xfb, 0x0a, 0x61, 0x20, 0x03, 0x9e, 0xcd, 0x5a, 0x10, 0x03, 0x4d, - 0x2f, 0xde, 0x42, 0x48, 0xb6, 0x95, 0xf0, 0x6f, 0x4f, 0xa7, 0x4e, 0x76, - 0x4f, 0x37, 0x72, 0x26, 0x6d, 0xd1, 0xed, 0xc0, 0xc9, 0x1f, 0xb7, 0xa4, - 0xfc, 0x3d, 0xc6, 0xc2, 0x3b, 0x89, 0x62, 0x7b, 0xef, 0x15, 0xe6, 0xab, - 0xe6, 0x57, 0x84, 0x55, 0x19, 0xdc, 0x3e, 0xd0, 0xa9, 0xe8, 0x63, 0xf6, - 0xaa, 0x4c, 0x21, 0x5d, 0x89, 0xd7, 0xc2, 0xf2, 0x7f, 0xec, 0x76, 0x94, - 0x7c, 0x88, 0x9b, 0x1a, 0xfb, 0xbc, 0xde, 0x5e, 0x0c, 0xc6, 0x02, 0x45, - 0x04, 0xf4, 0x19, 0xb4, 0xbd, 0xda, 0xc0, 0x63, 0x5b, 0x3e, 0x7d, 0x0d, - 0xb7, 0x77, 0x2e, 0xac, 0xf1, 0xe0, 0x1e, 0xdc, 0xf1, 0xb7, 0x4a, 0x26, - 0xfd, 0x9e, 0x1c, 0x61, 0xb8, 0xbf, 0xcf, 0x7e, 0xa2, 0x03, 0x9b, 0x80, - 0xca, 0x68, 0x4a, 0x3a, 0xdc, 0xaa, 0x41, 0xb2, 0x4c, 0xec, 0xd5, 0xa6, - 0x19, 0xa6, 0x91, 0xfc, 0x39, 0x4c, 0x9b, 0x84, 0x03, 0x75, 0x1e, 0xd8, - 0x1e, 0x82, 0x2a, 0xd8, 0x12, 0xf0, 0x3c, 0xe0, 0x28, 0x4e, 0x89, 0xb5, - 0xdb, 0x76, 0x70, 0x9f, 0x3a, 0x6b, 0x4c, 0x24, 0xdc, 0xff, 0xfd, 0x57, - 0xeb, 0xc7, 0x27, 0x88, 0x4c, 0x66, 0x8d, 0x53, 0x83, 0x15, 0x0a, 0xf2, - 0x72, 0xe9, 0x05, 0xd1, 0x27, 0xb5, 0xe9, 0x7a, 0x0a, 0xbe, 0x80, 0xdc, - 0xcc, 0xce, 0xc4, 0xcf, 0x99, 0x4a, 0x40, 0x80, 0xbb, 0x55, 0x77, 0x8d, - 0x03, 0xe2, 0xd4, 0x14, 0xb5, 0x7a, 0x51, 0x22, 0xd2, 0x30, 0xe0, 0x24, - 0x58, 0xdf, 0x54, 0xa9, 0x7d, 0x34, 0x1b, 0x9a, 0xbd, 0x39, 0x41, 0x7c, - 0xa3, 0x19, 0xf4, 0x30, 0x27, 0x60, 0x11, 0xe9, 0x0d, 0x28, 0x0f, 0x81, - 0x26, 0xd3, 0x68, 0x0b, 0x2d, 0x61, 0x91, 0x6f, 0xa3, 0xa4, 0xbe, 0x9b, - 0xf5, 0x81, 0x4f, 0x74, 0xf3, 0x1b, 0x73, 0x45, 0x69, 0x04, 0x3f, 0xed, - 0x89, 0xa6, 0x67, 0x94, 0x91, 0x2c, 0xb3, 0xc6, 0xba, 0xc3, 0x08, 0x5b, - 0xd0, 0xba, 0x2c, 0x9b, 0xee, 0x57, 0xab, 0x0d, 0x0a, 0xe2, 0xf3, 0x8c, - 0xcc, 0x23, 0x45, 0x67, 0x2c, 0xbb, 0x86, 0x87, 0x93, 0x91, 0x57, 0x11, - 0x9d, 0x74, 0x82, 0x16, 0xf6, 0x2c, 0x9f, 0x16, 0x5f, 0x38, 0x2a, 0xa7, - 0x4f, 0xf7, 0xf8, 0x58, 0xac, 0xce, 0x38, 0x2d, 0x6e, 0xcd, 0x6e, 0x3b, - 0xe6, 0xff, 0x81, 0x51, 0x01, 0xcd, 0x6c, 0xcb, 0x1f, 0x1e, 0xd6, 0xec, - 0xe6, 0xfc, 0x0c, 0x99, 0xe8, 0x80, 0x52, 0x91, 0xb4, 0x23, 0x66, 0x71, - 0x06, 0x82, 0xf9, 0x97, 0xad, 0xf8, 0x25, 0xa6, 0xfd, 0xaf, 0x73, 0xef, - 0x68, 0x7c, 0xd0, 0x7f, 0x7f, 0xe0, 0x0b, 0xba, 0xd8, 0xd4, 0x53, 0x5f, - 0xf8, 0xa7, 0xee, 0x78, 0x2f, 0x1a, 0x2e, 0x8d, 0x80, 0x83, 0x4d, 0xd3, - 0xf8, 0xb3, 0x5a, 0x40, 0x13, 0x01, 0xdb, 0xe5, 0xc5, 0x0a, 0x1e, 0x52, - 0x5f, 0x34, 0xdd, 0xb0, 0x29, 0xb1, 0xe6, 0xd3, 0xce, 0x6c, 0x64, 0x3b, - 0x73, 0x14, 0x7f, 0xe9, 0x76, 0xf9, 0x6f, 0x3c, 0x37, 0x86, 0x61, 0xa9, - 0x67, 0x5e, 0xb3, 0x33, 0x33, 0x50, 0x9b, 0xfb, 0xf7, 0x2e, 0x97, 0x38, - 0xfc, 0xf6, 0x34, 0x5b, 0xfb, 0xec, 0x4f, 0x4f, 0x3c, 0x35, 0x9e, 0x38, - 0x8c, 0x11, 0xd0, 0x2c, 0x7c, 0x75, 0xf7, 0xe2, 0xf4, 0x51, 0x47, 0x18, - 0xd5, 0xa4, 0x7a, 0x99, 0x7a, 0x12, 0x8d, 0xb7, 0xcd, 0xff, 0x12, 0xf3, - 0x5e, 0xdb, 0x9d, 0xb8, 0x40, 0x93, 0x05, 0xa3, 0x37, 0x76, 0xd3, 0x0b, - 0x25, 0xe8, 0x40, 0x41, 0x36, 0x1b, 0x32, 0x21, 0xa1, 0x9b, 0xd4, 0xbf, - 0x23, 0x30, 0x5d, 0x18, 0x89, 0x93, 0x23, 0xa4, 0xf3, 0x2e, 0xa4, 0x2c, - 0xde, 0xd6, 0x9a, 0x70, 0x34, 0xe7, 0x88, 0x6f, 0xa4, 0xc1, 0x6b, 0xa0, - 0xd4, 0x6e, 0x85, 0x20, 0x45, 0x78, 0x84, 0xa9, 0xdc, 0x78, 0x78, 0xc4, - 0x3e, 0xea, 0x8a, 0x70, 0x74, 0x01, 0x94, 0x2a, 0x52, 0xea, 0x0a, 0x32, - 0x4c, 0x8f, 0x49, 0x8a, 0x13, 0x9a, 0x5f, 0xe2, 0xb8, 0x9e, 0xfe, 0x04, - 0xf6, 0x9c, 0x37, 0xf2, 0xdd, 0xb4, 0xfd, 0x1a, 0xaf, 0x9a, 0xdd, 0x1f, - 0x38, 0xe3, 0xf8, 0xb9, 0x09, 0x9d, 0xc1, 0x12, 0xfa, 0xad, 0x62, 0x61, - 0x84, 0xa2, 0x19, 0x7b, 0xcc, 0x4a, 0x60, 0xd6, 0x78, 0x19, 0xa9, 0x96, - 0x0e, 0xa6, 0x25, 0x3d, 0x26, 0x53, 0x63, 0xe1, 0x02, 0x5a, 0x7f, 0xd5, - 0xaf, 0x42, 0x0b, 0x1a, 0x73, 0xcf, 0x33, 0xda, 0x3f, 0x65, 0x7f, 0x4f, - 0x98, 0x73, 0xb2, 0x27, 0x77, 0xe5, 0xeb, 0x71, 0x23, 0x18, 0x65, 0xfa, - 0xfc, 0x98, 0x2c, 0x01, 0x82, 0x39, 0xa2, 0xc0, 0x87, 0x9f, 0x39, 0xd5, - 0x2d, 0x81, 0x6e, 0xe7, 0xf8, 0x2c, 0x05, 0xc5, 0x47, 0x1e, 0x58, 0x43, - 0xcc, 0xc4, 0xbf, 0x48, 0x72, 0x5c, 0x02, 0x81, 0xdf, 0x31, 0xd9, 0xa8, - 0x14, 0x8d, 0xf5, 0x3d, 0x50, 0x9c, 0x65, 0xf3, 0xbb, 0xd7, 0x9a, 0xb4, - 0x5a, 0x3f, 0xf1, 0xd5, 0x89, 0x4d, 0x0c, 0x0d, 0x73, 0x6c, 0x75, 0x0c, - 0xcd, 0x6c, 0x43, 0xdc, 0xfb, 0xdb, 0x8b, 0xc3, 0xb1, 0xc4, 0x28, 0x95, - 0xf0, 0x80, 0xa9, 0xb3, 0x76, 0x5f, 0x61, 0x7e, 0x63, 0x4d, 0x12, 0x76, - 0xa0, 0xe9, 0xda, 0xce, 0x2c, 0x63, 0x7d, 0xe6, 0xa5, 0x12, 0xe5, 0xd6, - 0x52, 0x2b, 0xfe, 0x62, 0x25, 0x31, 0xd6, 0x7d, 0xdf, 0x78, 0x0c, 0xfb, - 0x39, 0x3e, 0x00, 0xc9, 0x03, 0xa8, 0x6d, 0x79, 0x19, 0x66, 0x74, 0xae, - 0x15, 0xd4, 0xbc, 0x3a, 0x9c, 0xd4, 0xcb, 0xe3, 0x78, 0xaf, 0xc2, 0x39, - 0x21, 0xe7, 0x39, 0x84, 0x65, 0xa7, 0x82, 0x9d, 0x9d, 0x6e, 0xf2, 0xd6, - 0x4b, 0x06, 0xf8, 0x5f, 0x2f, 0xab, 0x77, 0xdf, 0x34, 0x83, 0x7b, 0x38, - 0xc3, 0x31, 0x61, 0xc3, 0x8c, 0xdb, 0xfe, 0x80, 0xd0, 0xd1, 0xda, 0x33, - 0x78, 0xaf, 0x34, 0xb4, 0x03, 0x1a, 0x85, 0x3f, 0xd5, 0xc6, 0x8c, 0x88, - 0xc8, 0x0a, 0x79, 0xdb, 0x8f, 0x1c, 0x2c, 0x78, 0x59, 0x42, 0xf1, 0xcc, - 0xe8, 0x80, 0xa7, 0x0c, 0x6d, 0xb3, 0x89, 0x60, 0x8c, 0x4b, 0xe0, 0xfb, - 0x1f, 0xf0, 0x5b, 0x44, 0x06, 0xa6, 0xa6, 0xa4, 0x38, 0x18, 0xfb, 0x67, - 0xaa, 0xf3, 0xb5, 0x0b, 0x3d, 0x5a, 0x64, 0x6c, 0x4b, 0x25, 0xc1, 0x3a, - 0x25, 0x4d, 0xa6, 0x6d, 0xb1, 0x4a, 0x09, 0x11, 0x58, 0xf0, 0x86, 0xf3, - 0x62, 0xe8, 0xf5, 0x00, 0xe6, 0xab, 0x7e, 0x06, 0x17, 0xc4, 0x6d, 0x9f, - 0xfe, 0xd6, 0x57, 0x95, 0x91, 0xc5, 0xaf, 0x5b, 0x9d, 0x8e, 0xbf, 0xc9, - 0x16, 0x25, 0xa9, 0xb8, 0x69, 0x5b, 0x0a, 0x11, 0x06, 0xf0, 0xff, 0x4d, - 0x5d, 0xf5, 0xe8, 0x63, 0x11, 0x36, 0xe2, 0x18, 0x89, 0x9f, 0x2f, 0x78, - 0xc1, 0x7d, 0xc0, 0x52, 0x2b, 0xb3, 0x3d, 0xbe, 0x7b, 0xca, 0x11, 0xea, - 0xa7, 0xdc, 0xea, 0xc3, 0xf6, 0x68, 0x91, 0x6e, 0x6c, 0xfc, 0x27, 0x2d, - 0x88, 0xf8, 0xdb, 0x79, 0xd2, 0x8a, 0xb3, 0x21, 0x33, 0x0a, 0xf5, 0xe4, - 0x17, 0x13, 0xb8, 0xf9, 0xf6, 0x1b, 0xb6, 0x6a, 0xfd, 0xf7, 0x24, 0x7a, - 0x01, 0x81, 0xc1, 0x80, 0x2f, 0xb3, 0x63, 0x31, 0xc9, 0xf8, 0x10, 0xc1, - 0x18, 0x2e, 0xfd, 0x97, 0x13, 0x75, 0x67, 0xf0, 0x43, 0xad, 0x74, 0xc9, - 0x0e, 0x9b, 0x69, 0x49, 0xb0, 0x9e, 0x83, 0x33, 0xfe, 0xa2, 0x79, 0x32, - 0x0c, 0x9e, 0x2e, 0x86, 0xd7, 0x6a, 0x2d, 0xb7, 0x4e, 0xfb, 0x98, 0xea, - 0xbe, 0xa6, 0xeb, 0xd0, 0x0d, 0x56, 0xc8, 0xd4, 0x02, 0x67, 0x7b, 0x35, - 0x92, 0x1c, 0xbf, 0xfc, 0x1a, 0xcd, 0xbc, 0x4b, 0xc1, 0x44, 0xf5, 0x51, - 0xde, 0x14, 0xc4, 0xfe, 0xa6, 0x00, 0x71, 0xd4, 0xc2, 0xd9, 0xfa, 0x55, - 0xa4, 0x45, 0x75, 0xdf, 0x1c, 0x6f, 0x4d, 0x5d, 0x9d, 0xa7, 0xc9, 0x04, - 0x0c, 0xf0, 0xbd, 0xa8, 0x0f, 0xae, 0x43, 0xe1, 0x27, 0x86, 0x90, 0xfa, - 0xbb, 0xc7, 0xc7, 0xff, 0xc1, 0x68, 0x1c, 0x32, 0x5e, 0x72, 0x8a, 0xdd, - 0xe1, 0x64, 0x23, 0x3d, 0xcb, 0x73, 0xb4, 0x76, 0xe0, 0x54, 0x45, 0x4d, - 0xa2, 0xd9, 0x96, 0x3e, 0xcd, 0x0a, 0xb0, 0x5a, 0x48, 0x10, 0xbb, 0x43, - 0xd2, 0xef, 0xe4, 0xbd, 0x6d, 0x63, 0x04, 0xd1, 0xaa, 0x4c, 0x12, 0xab, - 0x37, 0xca, 0x46, 0x39, 0x5a, 0xbd, 0x34, 0xbc, 0xe6, 0xb5, 0xa9, 0x14, - 0xe2, 0xa1, 0x82, 0x35, 0x2f, 0x3e, 0xcc, 0x70, 0xe0, 0x6b, 0xa2, 0x98, - 0xd4, 0x7f, 0xe3, 0xc4, 0x5a, 0xdf, 0xad, 0x00, 0xe7, 0x59, 0xde, 0x2c, - 0x2a, 0x6c, 0x3c, 0x30, 0x47, 0xe2, 0x8b, 0x18, 0x61, 0x4e, 0xdb, 0x3b, - 0x1a, 0x89, 0xea, 0x92, 0xa4, 0x5c, 0xdc, 0x07, 0x23, 0x5e, 0x8c, 0x04, - 0x00, 0x18, 0x8a, 0x39, 0xf6, 0x20, 0x15, 0xf2, 0xf4, 0x66, 0x89, 0xd3, - 0x4b, 0x82, 0x20, 0x9d, 0xc5, 0xbd, 0x22, 0xa3, 0x06, 0xfe, 0xee, 0x90, - 0xde, 0xd5, 0xa4, 0x5f, 0xda, 0xcc, 0x09, 0xd8, 0x81, 0xa8, 0x4b, 0x6f, - 0x2b, 0xfe, 0x4e, 0xcc, 0xba, 0x24, 0xe2, 0x25, 0x6e, 0x76, 0x69, 0x20, - 0xcb, 0x2c, 0x42, 0x1b, 0xcd, 0x39, 0x6c, 0x31, 0xcc, 0x9e, 0x65, 0x22, - 0xa1, 0x59, 0x69, 0xb3, 0x52, 0xe1, 0x86, 0xe7, 0xe3, 0xe8, 0x89, 0x55, - 0x28, 0xc7, 0xc2, 0x84, 0x30, 0x4b, 0x08, 0x53, 0x95, 0xdd, 0xc5, 0x4a, - 0x1e, 0x89, 0xf1, 0x33, 0x85, 0x49, 0xd8, 0x65, 0xa9, 0xec, 0xc0, 0x2a, - 0xf6, 0x5a, 0x3b, 0xcd, 0xc8, 0xa2, 0xe0, 0xe0, 0xc0, 0xf9, 0x83, 0xd6, - 0x0b, 0x6c, 0x15, 0x22, 0x87, 0xbe, 0x31, 0xe1, 0x46, 0x86, 0x14, 0xf6, - 0xdf, 0x2a, 0x8e, 0xca, 0x3f, 0x8a, 0x05, 0x93, 0xd8, 0x6f, 0x49, 0x31, - 0x86, 0xdc, 0xb1, 0x46, 0xf3, 0xe0, 0x87, 0x75, 0xf7, 0xbb, 0x15, 0xce, - 0x95, 0x56, 0x4f, 0x1c, 0x33, 0xbb, 0x95, 0x9d, 0x6f, 0x76, 0xa6, 0x61, - 0xe0, 0x4b, 0x55, 0xc0, 0x66, 0xa0, 0x78, 0x2e, 0x9b, 0x6a, 0xe3, 0x91, - 0x71, 0xf3, 0x4b, 0x71, 0x67, 0x37, 0xbf, 0xd8, 0x77, 0x3a, 0xf6, 0x90, - 0x3b, 0x06, 0x57, 0x37, 0x37, 0x32, 0x40, 0xdf, 0xee, 0x08, 0x49, 0xa4, - 0x8a, 0x15, 0xbc, 0x80, 0x6b, 0xaf, 0x4d, 0xd5, 0x1d, 0x22, 0x50, 0x26, - 0x72, 0x9d, 0xa9, 0x1b, 0xa1, 0x54, 0xd0, 0x71, 0x2b, 0xae, 0xdc, 0x80, - 0x65, 0x29, 0x4e, 0x17, 0x24, 0xd2, 0x97, 0x6e, 0x15, 0xfa, 0x81, 0xc1, - 0x17, 0xb7, 0x27, 0x38, 0x92, 0x12, 0xba, 0xd4, 0xa5, 0x81, 0xea, 0x7a, - 0x1d, 0x82, 0xac, 0x6c, 0x3f, 0xb1, 0x69, 0xb2, 0x8f, 0x47, 0x65, 0x90, - 0x97, 0x25, 0xf3, 0xfe, 0xc3, 0x5d, 0x7d, 0xc1, 0x4d, 0xbd, 0x7b, 0x9c, - 0x13, 0xb6, 0x08, 0x39, 0xf0, 0x69, 0xa9, 0x6d, 0x3b, 0x5a, 0x6f, 0x17, - 0xa1, 0xdf, 0xcf, 0xd9, 0x4b, 0x2f, 0x7e, 0x8c, 0x35, 0x28, 0x57, 0xdb, - 0x55, 0xcb, 0x88, 0x01, 0x1f, 0x7e, 0xf5, 0x34, 0xad, 0x90, 0xc4, 0x24, - 0x00, 0x57, 0xb8, 0x81, 0x8b, 0x63, 0x1a, 0xbf, 0x5c, 0xaa, 0xd2, 0x9a, - 0xa6, 0x8d, 0xf4, 0xa3, 0xc6, 0x31, 0xd9, 0xa4, 0x27, 0x7e, 0x02, 0xd7, - 0xe8, 0x3e, 0xd5, 0xa6, 0x9a, 0x18, 0x3b, 0x01, 0x0e, 0x41, 0xb2, 0xd6, - 0xac, 0xe7, 0x31, 0xd5, 0xc3, 0x1f, 0xae, 0x02, 0x0f, 0xce, 0x27, 0x93, - 0xcb, 0xec, 0xd0, 0xd2, 0xa1, 0x82, 0x9e, 0x49, 0x1d, 0xb0, 0x36, 0xf0, - 0x90, 0x17, 0x5c, 0xe9, 0xea, 0x64, 0xd1, 0x51, 0x0f, 0xbc, 0x45, 0xe5, - 0x97, 0x03, 0x75, 0x8a, 0x5c, 0xbc, 0x55, 0xe4, 0xee, 0x59, 0x19, 0x9e, - 0x6f, 0xb7, 0x0a, 0x8a, 0xfe, 0x8f, 0x7b, 0x11, 0xab, 0x49, 0x47, 0x1b, - 0x37, 0x41, 0xa7, 0x0e, 0xaf, 0x97, 0x53, 0x68, 0xb1, 0xdf, 0x20, 0xb2, - 0x17, 0x25, 0x2c, 0x1d, 0x70, 0x3d, 0xc5, 0x96, 0xfd, 0x39, 0x98, 0xad, - 0x2e, 0xcc, 0x93, 0x39, 0xf1, 0xaa, 0x95, 0x0e, 0x48, 0xa3, 0x10, 0xd3, - 0x38, 0xcf, 0x44, 0x4c, 0x14, 0xb6, 0xe4, 0x0c, 0xf4, 0xf1, 0x56, 0xda, - 0x4c, 0xc4, 0xb4, 0xd7, 0xb1, 0x6f, 0x80, 0x53, 0xcf, 0xe6, 0x2a, 0x40, - 0xd6, 0x11, 0xea, 0x9f, 0x58, 0x8e, 0x6d, 0xe2, 0x43, 0xf9, 0x43, 0x50, - 0x5b, 0xbc, 0xda, 0xdf, 0x89, 0xad, 0xb0, 0x17, 0x32, 0xec, 0xd8, 0xb5, - 0x80, 0xb5, 0xe0, 0x9b, 0x79, 0xc6, 0x2a, 0x80, 0x10, 0xe8, 0xd7, 0xbf, - 0x2d, 0x98, 0x5b, 0x12, 0x52, 0x96, 0x88, 0xad, 0xe5, 0xff, 0xe6, 0xb6, - 0xeb, 0xff, 0x7c, 0x02, 0x59, 0x29, 0x93, 0x8d, 0x59, 0xe6, 0xe6, 0x49, - 0x64, 0xb2, 0x48, 0x8e, 0x59, 0x7a, 0xf1, 0xb1, 0xb5, 0x8f, 0x7c, 0xb6, - 0xc3, 0xa2, 0xab, 0xba, 0xc7, 0xd4, 0xe5, 0xde, 0x17, 0x97, 0x8a, 0x3b, - 0x4b, 0x25, 0x6f, 0x62, 0xec, 0x4e, 0xed, 0x4c, 0xfc, 0x50, 0x7e, 0xa8, - 0x7b, 0xef, 0xee, 0x96, 0x63, 0x0c, 0x20, 0xdb, 0x9c, 0x40, 0x9e, 0xf4, - 0xd6, 0x8e, 0x08, 0x12, 0xc9, 0x1a, 0xb0, 0xd2, 0x6b, 0x34, 0x7d, 0xb5, - 0xe6, 0x90, 0xcd, 0x69, 0xe7, 0x92, 0xb6, 0xf6, 0xc3, 0x49, 0x13, 0x37, - 0xcf, 0x9c, 0x8f, 0x77, 0xf1, 0x7b, 0x94, 0xb8, 0xd9, 0x7a, 0x56, 0x1a, - 0x5c, 0x96, 0x65, 0x7f, 0xe3, 0xcd, 0x07, 0x8c, 0xe7, 0x26, 0xbe, 0xdc, - 0xfa, 0xa5, 0x8c, 0x27, 0xd8, 0xf0, 0x36, 0x35, 0x93, 0xb0, 0x04, 0xe6, - 0x82, 0xd3, 0xbd, 0xdc, 0xab, 0xd3, 0x82, 0x72, 0xde, 0xd1, 0xa1, 0x9d, - 0x3b, 0x4b, 0x85, 0x8b, 0x0d, 0xec, 0x27, 0x68, 0x5d, 0x42, 0xfd, 0xc1, - 0x53, 0x88, 0x0a, 0x7b, 0xdd, 0x59, 0xe9, 0xb3, 0x6e, 0x85, 0xcf, 0xe6, - 0x45, 0x5b, 0x14, 0xb1, 0x24, 0x94, 0xc8, 0xb6, 0xd6, 0xd4, 0x4d, 0xf6, - 0x48, 0x21, 0xd9, 0x97, 0x28, 0x37, 0x6d, 0x98, 0x29, 0xd1, 0xdb, 0xac, - 0x1b, 0x4d, 0x30, 0xc1, 0x71, 0xf4, 0xf4, 0xe7, 0x03, 0x18, 0x37, 0xca, - 0xe9, 0x5c, 0x7d, 0xe8, 0xb7, 0xb5, 0xdf, 0xd1, 0x9c, 0xc1, 0xe6, 0x78, - 0xa2, 0x09, 0x7f, 0x0f, 0x28, 0x30, 0xb0, 0x32, 0xa9, 0x4b, 0xec, 0xac, - 0x15, 0xe7, 0x1b, 0x40, 0xbe, 0x23, 0x54, 0x45, 0x87, 0x04, 0xdd, 0x4b, - 0x12, 0xa9, 0x42, 0x48, 0x2e, 0x51, 0xcd, 0xd6, 0xb0, 0x68, 0x2e, 0x8a, - 0xa7, 0x73, 0x08, 0x66, 0xcc, 0xb6, 0x4c, 0xe1, 0xf0, 0xe2, 0xa1, 0x04, - 0xed, 0x60, 0x14, 0x2a, 0xd5, 0xf3, 0xb3, 0x32, 0xb9, 0x5d, 0x37, 0x23, - 0x95, 0x7f, 0x11, 0x14, 0xc9, 0x7f, 0x35, 0x17, 0x50, 0xed, 0x0d, 0x64, - 0x00, 0xdc, 0xf1, 0x60, 0xc2, 0xf3, 0x20, 0x0a, 0x8f, 0x82, 0x1f, 0x7d, - 0xaf, 0x99, 0x39, 0xed, 0x46, 0xa7, 0x2f, 0xfc, 0x5e, 0x6e, 0x10, 0x60, - 0xc4, 0x33, 0xb1, 0xa2, 0xca, 0xbe, 0x85, 0x82, 0x6b, 0x91, 0x13, 0x58, - 0xb3, 0x98, 0x75, 0xb8, 0x6e, 0x89, 0x87, 0xde, 0x3c, 0x80, 0xa7, 0x7a, - 0xcb, 0x43, 0xaa, 0xa3, 0xcc, 0x32, 0xf4, 0xf2, 0x40, 0x86, 0xa9, 0x09, - 0xd0, 0xc2, 0x81, 0x61, 0x80, 0xda, 0x59, 0x3e, 0xcd, 0xb8, 0xbe, 0xc0, - 0x5f, 0x2e, 0xc7, 0x34, 0xcb, 0xa7, 0x7c, 0xe1, 0x95, 0x6c, 0x95, 0x59, - 0x24, 0x09, 0x9d, 0xcf, 0x68, 0xb4, 0xab, 0xcf, 0x26, 0x13, 0xe8, 0x59, - 0xe4, 0xf3, 0xf9, 0x19, 0x64, 0x43, 0xf0, 0xae, 0x2f, 0xe0, 0x5a, 0x35, - 0x8e, 0xd8, 0xd1, 0x72, 0xbc, 0xd7, 0x0f, 0xb2, 0x77, 0xdf, 0xae, 0x47, - 0x1f, 0xc9, 0x2a, 0xf3, 0x3e, 0x24, 0x90, 0xea, 0xb1, 0xe0, 0xb5, 0xc3, - 0x77, 0xea, 0x00, 0x4e, 0xae, 0x32, 0x90, 0x46, 0x24, 0x36, 0xfa, 0x36, - 0x85, 0xbf, 0xf4, 0x84, 0xad, 0xb5, 0x20, 0x20, 0x73, 0xe8, 0xfc, 0xaf, - 0x9e, 0x99, 0x8f, 0xa9, 0x9b, 0x9b, 0x88, 0xad, 0x3a, 0x55, 0x9e, 0xe1, - 0x86, 0xee, 0x0b, 0x4e, 0x96, 0x76, 0x84, 0xff, 0xbe, 0x2d, 0x34, 0x06, - 0x96, 0x22, 0x9a, 0x98, 0x67, 0xf1, 0x6e, 0xd2, 0xa7, 0xde, 0x80, 0x5e, - 0x9d, 0xe4, 0xaa, 0xca, 0x32, 0x31, 0x49, 0xb9, 0xb9, 0xe0, 0x20, 0x3c, - 0x99, 0x24, 0xae, 0xc4, 0x86, 0xe0, 0x89, 0x42, 0x02, 0x88, 0xea, 0x73, - 0x33, 0x5e, 0x7b, 0x01, 0x11, 0x05, 0xd0, 0x4f, 0x35, 0xb4, 0xe2, 0x86, - 0x6d, 0x73, 0x7a, 0x45, 0x76, 0x98, 0x4d, 0xaa, 0x3a, 0xf0, 0xd4, 0x0c, - 0x12, 0x0d, 0xf3, 0x93, 0x91, 0x3e, 0xbf, 0xb0, 0xdd, 0x16, 0xda, 0x5f, - 0x6b, 0x4c, 0x3a, 0x32, 0x97, 0x55, 0x70, 0xee, 0x05, 0x32, 0xe6, 0xda, - 0x96, 0xd3, 0xa1, 0xf3, 0xa5, 0xf9, 0x28, 0x15, 0x29, 0x38, 0xb4, 0xa6, - 0x4d, 0x89, 0x88, 0x49, 0xcc, 0xdd, 0x53, 0x9a, 0x42, 0xc4, 0x0b, 0xc2, - 0xe7, 0xee, 0x8d, 0xd7, 0x64, 0x7e, 0xb8, 0x62, 0x61, 0x84, 0xb2, 0x8a, - 0x39, 0x4c, 0x76, 0x2e, 0x43, 0x70, 0x23, 0xbf, 0x1b, 0xc8, 0xcc, 0x5b, - 0xa5, 0x14, 0xe5, 0x57, 0x4c, 0xbc, 0xa7, 0xa2, 0xa1, 0x0a, 0x47, 0xae, - 0xb0, 0x23, 0x4b, 0xa5, 0xd4, 0x8d, 0x4c, 0xa3, 0x17, 0x8a, 0x89, 0x26, - 0xd6, 0xff, 0x0f, 0x55, 0xc0, 0xd9, 0x6a, 0x9e, 0x68, 0x69, 0xa9, 0x26, - 0xa7, 0x2b, 0x6e, 0x5b, 0xce, 0x30, 0x18, 0x04, 0x74, 0xa2, 0xc9, 0x13, - 0x17, 0x2c, 0x79, 0x1c, 0x16, 0xb0, 0x4d, 0x0d, 0x87, 0xb6, 0x14, 0xfd, - 0xe6, 0x71, 0x2a, 0xff, 0x08, 0x62, 0x3d, 0xed, 0xe1, 0xd6, 0xf3, 0x78, - 0x5e, 0xdc, 0x02, 0xe1, 0x92, 0x2f, 0x82, 0x56, 0x69, 0x79, 0x2e, 0x61, - 0x66, 0x3b, 0x43, 0x1b, 0x48, 0x74, 0x22, 0xc3, 0xb3, 0x54, 0x0a, 0xe3, - 0x40, 0xd6, 0x93, 0x68, 0xb2, 0x94, 0x70, 0xca, 0xc8, 0xa3, 0x4d, 0x19, - 0x45, 0x96, 0xcf, 0x24, 0x01, 0x0f, 0x80, 0x62, 0x63, 0x63, 0x22, 0x57, - 0x59, 0x0a, 0x6c, 0x63, 0x04, 0xfc, 0xa8, 0x90, 0x5a, 0x85, 0x4c, 0x37, - 0x6a, 0x63, 0x24, 0x42, 0x02, 0x48, 0x29, 0x0d, 0xd6, 0x40, 0xc9, 0x7f, - 0xd0, 0xe0, 0xb8, 0x7d, 0xc3, 0x47, 0xba, 0x2c, 0x4f, 0xd1, 0x46, 0x0b, - 0x59, 0xb4, 0x2c, 0xcb, 0x6f, 0xc5, 0x51, 0xf4, 0xf5, 0xeb, 0xf0, 0xb4, - 0x4d, 0xf6, 0x71, 0x28, 0x0f, 0xfa, 0x59, 0xa8, 0xfa, 0xcf, 0x98, 0x0c, - 0x57, 0xe1, 0x22, 0x5a, 0x74, 0xb0, 0xc5, 0xe7, 0x6f, 0xbf, 0x27, 0xe9, - 0x10, 0xed, 0xfa, 0x17, 0x2a, 0x8c, 0x64, 0x85, 0x72, 0x95, 0xab, 0x13, - 0xf9, 0xc0, 0xb6, 0xde, 0x4c, 0x36, 0xda, 0x13, 0x7d, 0xe3, 0xae, 0x1d, - 0x55, 0x14, 0x6a, 0x37, 0x13, 0x8d, 0xbb, 0xcd, 0x6a, 0x62, 0x2b, 0x7f, - 0x6e, 0x33, 0xdc, 0xf6, 0x71, 0x59, 0x65, 0xbd, 0x62, 0xba, 0xbb, 0xe7, - 0x89, 0x8b, 0x49, 0x0e, 0xa9, 0x81, 0x17, 0x4d, 0xaa, 0x5b, 0xf8, 0xd8, - 0xa8, 0xf7, 0x98, 0x98, 0xe6, 0xe4, 0xf0, 0xcd, 0xe6, 0x76, 0x5f, 0x88, - 0x1b, 0x63, 0xd6, 0x83, 0xee, 0xf4, 0x34, 0xa0, 0xc0, 0x41, 0x38, 0x07, - 0x74, 0x1c, 0x72, 0xdb, 0x88, 0x17, 0x42, 0xde, 0x67, 0xce, 0x96, 0xf0, - 0x6c, 0xee, 0x89, 0x99, 0x8f, 0x36, 0xbb, 0x54, 0xaf, 0x58, 0x41, 0xc8, - 0x6d, 0x9a, 0x18, 0xdf, 0x12, 0x7c, 0xee, 0x51, 0x6f, 0x74, 0x0c, 0x4e, - 0xdd, 0x2d, 0xd5, 0xac, 0xf5, 0x17, 0x77, 0x71, 0xf4, 0xb5, 0xad, 0x71, - 0x33, 0x72, 0x9f, 0xa7, 0x7a, 0x4e, 0xb5, 0x19, 0x9d, 0xd2, 0xd4, 0x01, - 0x4f, 0x92, 0xe1, 0x24, 0x37, 0xe2, 0x2f, 0xd7, 0xb8, 0x1b, 0xb4, 0x1b, - 0x78, 0xf5, 0xa4, 0xb0, 0x4f, 0xab, 0x42, 0x53, 0x90, 0x5e, 0x11, 0xc1, - 0x8c, 0x97, 0xc7, 0x11, 0x29, 0x3f, 0x1b, 0x1d, 0x07, 0xc6, 0x3d, 0x80, - 0x2f, 0x14, 0x8a, 0xe3, 0x62, 0xcf, 0x62, 0xcf, 0xee, 0x19, 0xd2, 0x75, - 0x77, 0xe0, 0x31, 0x1b, 0xd1, 0x53, 0x41, 0x89, 0xbb, 0xcd, 0x35, 0xc5, - 0x2e, 0x13, 0x89, 0x98, 0xd7, 0x6f, 0x6f, 0xf6, 0x67, 0xf8, 0x77, 0xe3, - 0x8a, 0x78, 0x1d, 0x79, 0x78, 0x36, 0xc4, 0x6b, 0xab, 0xe3, 0x16, 0xe9, - 0x7e, 0x96, 0x81, 0xee, 0x30, 0x48, 0x16, 0xf6, 0xfe, 0x2d, 0xb6, 0x9a, - 0x9e, 0x05, 0x0e, 0x4e, 0xe2, 0x7d, 0x93, 0xc1, 0xd9, 0x83, 0xad, 0xc5, - 0x88, 0xf2, 0xc6, 0xe0, 0x6d, 0xc1, 0xa0, 0x0c, 0x9e, 0x42, 0xa7, 0x9d, - 0x6b, 0x14, 0x13, 0x46, 0x5e, 0x5e, 0x18, 0xd6, 0xa9, 0xb9, 0x1c, 0x14, - 0x2d, 0xfd, 0x5d, 0x0a, 0xcf, 0xd3, 0x5d, 0x34, 0x4c, 0x20, 0x31, 0x2e, - 0x1c, 0x66, 0x30, 0x3f, 0xa3, 0x5c, 0xfb, 0xd7, 0xe7, 0x58, 0x32, 0x52, - 0x18, 0x53, 0x72, 0x2c, 0xd0, 0xc1, 0x02, 0x66, 0x3a, 0x75, 0xaa, 0x4b, - 0x76, 0x29, 0xc9, 0xe7, 0x04, 0x48, 0xd5, 0x99, 0xb9, 0x8c, 0x4f, 0x38, - 0xa5, 0x1b, 0x35, 0x3c, 0xda, 0x26, 0x09, 0xec, 0x9e, 0x2f, 0x27, 0xea, - 0x9b, 0x92, 0xf5, 0x6b, 0xe8, 0x74, 0x07, 0x75, 0x61, 0xf3, 0x4b, 0xcd, - 0xe4, 0x18, 0xc3, 0xbf, 0x11, 0x56, 0xb8, 0x0c, 0x1c, 0xb7, 0xe5, 0xb5, - 0x00, 0x5e, 0x53, 0xe1, 0xe6, 0xae, 0x3c, 0x67, 0xe7, 0xb9, 0xd9, 0x1d, - 0xc5, 0x5c, 0xe2, 0x5d, 0x1c, 0x88, 0xd1, 0xaa, 0xfa, 0xaf, 0x29, 0x54, - 0x7c, 0x23, 0xbc, 0x7c, 0xa9, 0x56, 0x18, 0x92, 0x8a, 0x6b, 0x4f, 0x5a, - 0xfe, 0x9a, 0x1f, 0x3a, 0x79, 0xcc, 0x1c, 0xfe, 0x7c, 0xa6, 0xa4, 0x8b, - 0x85, 0xd3, 0xc0, 0xdd, 0xb2, 0x11, 0x99, 0x9c, 0x37, 0x9a, 0xab, 0x77, - 0xca, 0x64, 0xd8, 0x39, 0x18, 0xdd, 0x5e, 0x4f, 0xe5, 0xa2, 0xa2, 0x67, - 0xa0, 0x0a, 0xff, 0x02, 0xca, 0x6b, 0xa8, 0x8b, 0x90, 0x29, 0x5a, 0x22, - 0x80, 0x5a, 0xbe, 0x1b, 0x61, 0xee, 0x1c, 0xaa, 0x3b, 0xa9, 0xd4, 0x1f, - 0x45, 0x68, 0xb7, 0x3e, 0xc2, 0xda, 0x1f, 0xcb, 0x66, 0x3c, 0xe3, 0x5e, - 0x42, 0x4d, 0x3f, 0x71, 0x8b, 0xb7, 0x27, 0x06, 0xe9, 0xc3, 0xaa, 0x5e, - 0x4e, 0xa5, 0x54, 0x56, 0x43, 0x15, 0xe0, 0x60, 0xe5, 0x80, 0x55, 0x69, - 0x49, 0x75, 0x31, 0x6c, 0xe2, 0x95, 0xd1, 0xc4, 0x32, 0xba, 0xa3, 0xc8, - 0x10, 0x55, 0xde, 0xd2, 0xff, 0xbe, 0x29, 0x39, 0xa4, 0x02, 0xe3, 0xa5, - 0x38, 0xb9, 0xc2, 0x20, 0x37, 0x09, 0x03, 0x30, 0xe6, 0x1c, 0x67, 0xf1, - 0x9d, 0x61, 0x8b, 0x25, 0x02, 0x2d, 0xa1, 0xc8, 0xa9, 0x6b, 0xe8, 0x5c, - 0x1e, 0x5c, 0x49, 0x3d, 0x4b, 0x59, 0x79, 0xc8, 0x18, 0x59, 0xac, 0x0c, - 0x67, 0x34, 0xf0, 0x43, 0x62, 0x6a, 0xce, 0xcb, 0x5d, 0xe3, 0x80, 0x7f, - 0x22, 0x7f, 0xba, 0x7a, 0x83, 0x8e, 0x70, 0x92, 0x13, 0x3a, 0x0d, 0xcc, - 0xc8, 0xef, 0x58, 0xa5, 0xd4, 0x80, 0x16, 0x2a, 0x71, 0x54, 0x88, 0xe3, - 0x69, 0x62, 0xaf, 0xc2, 0x30, 0x25, 0x4e, 0x9d, 0xc6, 0x44, 0x7a, 0xf1, - 0x50, 0x66, 0xdf, 0x05, 0x4b, 0xda, 0x41, 0xef, 0xc4, 0x2e, 0xbd, 0x92, - 0x3e, 0x00, 0x90, 0x81, 0x54, 0xc8, 0xd5, 0xcf, 0xa0, 0x23, 0xb4, 0x0b, - 0x91, 0x10, 0x6b, 0x55, 0xfb, 0x4c, 0xe2, 0xc6, 0x70, 0x99, 0xb3, 0xfd, - 0x5f, 0x32, 0x02, 0xb5, 0x80, 0x83, 0x53, 0x66, 0x08, 0xbb, 0x47, 0x6e, - 0x63, 0xfe, 0x62, 0x43, 0x85, 0x28, 0xd0, 0x12, 0x9a, 0x7c, 0xf4, 0x90, - 0x93, 0x40, 0xce, 0x39, 0x93, 0xb8, 0x51, 0x94, 0x67, 0xb7, 0x17, 0x10, - 0x95, 0x5c, 0x0f, 0xc0, 0x0d, 0xbc, 0x58, 0xfe, 0x20, 0xbc, 0xa3, 0xa4, - 0xf1, 0x6c, 0x4f, 0xa5, 0x4c, 0xbe, 0x06, 0xa6, 0xd5, 0x3e, 0x0b, 0x4f, - 0x60, 0x9a, 0xd6, 0xd2, 0x1d, 0x22, 0xc8, 0x2a, 0x8e, 0xc8, 0xee, 0x82, - 0xd7, 0x93, 0xe7, 0x45, 0xed, 0xbe, 0xcb, 0xba, 0x53, 0x1a, 0x1f, 0xfe, - 0x9b, 0xac, 0x28, 0xd6, 0x12, 0x09, 0x95, 0xd0, 0x68, 0x31, 0x8c, 0xf7, - 0x73, 0x59, 0xfa, 0xe6, 0xf6, 0x1a, 0xef, 0xa7, 0xd4, 0x65, 0x16, 0xca, - 0x52, 0xce, 0x46, 0x00, 0xa4, 0xde, 0x34, 0x5e, 0x05, 0x42, 0x0e, 0xb6, - 0x05, 0xaf, 0x9e, 0x3a, 0x06, 0x90, 0x15, 0xc1, 0xe2, 0x20, 0xdc, 0x62, - 0x5a, 0xca, 0xd1, 0x81, 0xc0, 0xd2, 0x5c, 0x93, 0x59, 0xab, 0xf9, 0x18, - 0x04, 0x86, 0x6e, 0x69, 0xce, 0x75, 0x20, 0xe1, 0x67, 0x71, 0xa4, 0x24, - 0x45, 0x15, 0x5c, 0xfd, 0xb2, 0x37, 0x69, 0x4b, 0x44, 0xcf, 0x29, 0xcb, - 0x37, 0xee, 0x08, 0x45, 0x5c, 0x97, 0xb6, 0x03, 0x61, 0x07, 0x9b, 0x39, - 0x11, 0xe1, 0xd1, 0xb5, 0xd0, 0xe2, 0xe3, 0x5c, 0x92, 0x4f, 0x86, 0xdb, - 0x67, 0xaf, 0xe4, 0x97, 0x47, 0xd4, 0xcb, 0x5c, 0x5e, 0x29, 0xad, 0x05, - 0xc1, 0x31, 0x3b, 0x07, 0xc9, 0x9c, 0x8a, 0x15, 0xad, 0x23, 0x87, 0x8b, - 0x1d, 0xc4, 0xdc, 0xf1, 0x8c, 0x63, 0x9a, 0xbc, 0xc9, 0x24, 0x28, 0xb7, - 0xfe, 0xab, 0xfe, 0x52, 0x71, 0x7c, 0xa4, 0x89, 0x52, 0x29, 0x93, 0x0c, - 0x07, 0x3b, 0x24, 0x4c, 0x3b, 0xa1, 0x40, 0x96, 0xb6, 0x52, 0x3a, 0x3c, - 0x6c, 0x8d, 0xc8, 0x8f, 0x43, 0x12, 0xd6, 0x2f, 0x86, 0xc9, 0x11, 0xc3, - 0x2d, 0x56, 0xb8, 0x7f, 0x0e, 0x23, 0x4e, 0x07, 0xf7, 0xdc, 0x81, 0xe9, - 0x02, 0xfd, 0x5f, 0x1d, 0xb2, 0x88, 0x78, 0xc1, 0x55, 0x58, 0x47, 0xb6, - 0x3d, 0x64, 0x3d, 0x33, 0x1a, 0x91, 0xec, 0xac, 0x4a, 0x22, 0x48, 0xf0, - 0x58, 0xc8, 0x67, 0x91, 0x06, 0x92, 0xe4, 0x17, 0x00, 0x5f, 0xdc, 0x87, - 0x9a, 0x17, 0xa4, 0x5e, 0xf8, 0xf2, 0x74, 0x53, 0xfa, 0x71, 0x6c, 0xfc, - 0x9f, 0xab, 0x88, 0x4c, 0x84, 0xbb, 0x8e, 0x18, 0x54, 0x34, 0x29, 0xcd, - 0xfe, 0x9c, 0x3c, 0x98, 0x33, 0x2c, 0x43, 0x2e, 0x1a, 0xde, 0xb5, 0x7c, - 0x84, 0xdc, 0xf9, 0x34, 0x91, 0x58, 0xc0, 0x33, 0xe1, 0x21, 0xa1, 0xd7, - 0x50, 0x0d, 0xa2, 0x96, 0x5e, 0x2a, 0xb4, 0x32, 0x25, 0x69, 0x51, 0xd8, - 0x3d, 0x77, 0x5e, 0xb4, 0x98, 0x8c, 0x7c, 0x32, 0x9b, 0xa1, 0xae, 0x89, - 0x77, 0xd2, 0x73, 0xc1, 0xe4, 0x95, 0x2b, 0x17, 0x6e, 0xf2, 0x41, 0xb8, - 0x86, 0xcd, 0xa4, 0x7e, 0xed, 0x1e, 0x98, 0x55, 0x10, 0x3b, 0xd7, 0x93, - 0xb9, 0x51, 0x4a, 0x45, 0x12, 0x8b, 0x94, 0x10, 0x24, 0x28, 0x8f, 0x6c, - 0xe5, 0xf2, 0x2e, 0xff, 0xbe, 0x56, 0xf2, 0x24, 0x96, 0x04, 0xe6, 0x2f, - 0x07, 0x9d, 0x02, 0xdb, 0xf1, 0xc6, 0x33, 0x0f, 0x59, 0xf5, 0x31, 0x81, - 0x60, 0x63, 0xbb, 0x24, 0xf9, 0x49, 0x49, 0x93, 0x65, 0x96, 0xed, 0x1c, - 0x37, 0x93, 0x63, 0xc4, 0x1a, 0x01, 0x40, 0x47, 0x90, 0x31, 0xa5, 0xdf, - 0x9d, 0xf0, 0xad, 0xdf, 0xda, 0x83, 0x7c, 0x2e, 0x75, 0x5a, 0x96, 0x68, - 0xbe, 0x4c, 0x36, 0xa3, 0xe9, 0x66, 0xdd, 0xda, 0x22, 0x43, 0x78, 0x7e, - 0x0c, 0x54, 0xd7, 0x99, 0xfb, 0xce, 0xef, 0x8b, 0x3a, 0xab, 0x1e, 0x4b, - 0x7d, 0x0b, 0x18, 0xba, 0x2f, 0x19, 0xe3, 0x16, 0xa8, 0xff, 0x46, 0x6e, - 0x40, 0x62, 0xc4, 0x87, 0x73, 0x1c, 0xfd, 0x45, 0x5e, 0xca, 0x35, 0x04, - 0x8c, 0x0b, 0xd0, 0x30, 0x3e, 0x6b, 0x17, 0x68, 0xf7, 0x74, 0x10, 0x0d, - 0x94, 0xa9, 0x4f, 0x54, 0xa2, 0x5e, 0xf4, 0xda, 0x19, 0x68, 0x61, 0xac, - 0xde, 0x92, 0x4c, 0xbe, 0xb8, 0xe9, 0xaa, 0xef, 0x5d, 0x5a, 0xb5, 0x63, - 0xef, 0x84, 0x97, 0xe7, 0xa3, 0xda, 0x81, 0xd1, 0xcc, 0x53, 0xb7, 0xc8, - 0x81, 0x4f, 0xda, 0x83, 0x3a, 0x50, 0x0b, 0x4e, 0x34, 0x02, 0xdb, 0x26, - 0x64, 0xe3, 0x58, 0x6b, 0xa8, 0x72, 0xd1, 0x5a, 0x19, 0xe8, 0xe0, 0x2a, - 0xd1, 0x45, 0x58, 0x42, 0x8a, 0x63, 0xb1, 0x4e, 0x6e, 0x1d, 0x4e, 0xaa, - 0x51, 0x84, 0xcc, 0x2b, 0x5c, 0x69, 0x58, 0x65, 0x01, 0xfd, 0xe5, 0x00, - 0x2e, 0xf7, 0x09, 0x5d, 0xd9, 0xd2, 0x50, 0x43, 0x3d, 0xe9, 0x71, 0x79, - 0x26, 0x86, 0xd3, 0xef, 0x5a, 0x72, 0x75, 0x5b, 0xb8, 0x10, 0xce, 0x5f, - 0xb9, 0x32, 0xbd, 0x38, 0xe1, 0xbe, 0x48, 0xf7, 0x9d, 0xaf, 0x1b, 0xa2, - 0x75, 0x0d, 0xed, 0x02, 0xb5, 0x1f, 0x24, 0x2a, 0x1f, 0x07, 0xa6, 0x9d, - 0x7f, 0x3c, 0xae, 0xd4, 0x6c, 0xc3, 0x6f, 0xbb, 0x34, 0x7f, 0xfc, 0x38, - 0x75, 0xbf, 0x96, 0xc3, 0x41, 0x06, 0x21, 0x1e, 0xc9, 0x2c, 0x79, 0x85, - 0xcd, 0xa9, 0xd4, 0x18, 0x6c, 0x72, 0xcd, 0xf4, 0x80, 0xee, 0xa4, 0xde, - 0x85, 0x85, 0x4b, 0xf6, 0xfa, 0x19, 0x42, 0x15, 0xef, 0xab, 0x37, 0xb0, - 0x4a, 0x40, 0xd7, 0xea, 0x9a, 0x03, 0xf3, 0xd0, 0x3b, 0xec, 0x16, 0x78, - 0xae, 0x7c, 0x80, 0x80, 0x29, 0xce, 0x13, 0xec, 0x58, 0x0d, 0xdc, 0xed, - 0xb0, 0x8b, 0x57, 0xf1, 0x32, 0x6f, 0xb6, 0xe7, 0xb1, 0xf6, 0xe4, 0xdd, - 0xee, 0xd2, 0xdd, 0x83, 0x2e, 0xc1, 0x3f, 0x64, 0x7f, 0x15, 0xb6, 0x90, - 0x01, 0x34, 0x50, 0xca, 0xbd, 0x3e, 0x3d, 0x22, 0x0c, 0x05, 0x9e, 0x70, - 0x7a, 0x33, 0x5b, 0xa5, 0xb6, 0xab, 0x34, 0xe6, 0xc5, 0xbf, 0x76, 0x3e, - 0x41, 0xa1, 0xde, 0x5f, 0x62, 0xe4, 0x19, 0x31, 0x40, 0x7d, 0x27, 0x48, - 0x46, 0x28, 0x19, 0xb3, 0xab, 0x16, 0x3b, 0x5a, 0xbd, 0xdc, 0x3e, 0xd4, - 0x65, 0xa4, 0xa5, 0xbb, 0x1b, 0xae, 0xe2, 0x11, 0x1b, 0xb4, 0x90, 0xcf, - 0xc6, 0x0f, 0xc6, 0x30, 0x6e, 0xe4, 0xba, 0xb6, 0x34, 0xfe, 0x37, 0xe4, - 0x32, 0xa3, 0x65, 0x39, 0x94, 0x10, 0xfd, 0xf4, 0xb6, 0x0d, 0x9a, 0x64, - 0x56, 0xce, 0x97, 0xec, 0xcf, 0x09, 0x1d, 0xeb, 0xb3, 0x69, 0xa4, 0xb9, - 0xdf, 0x35, 0x10, 0x64, 0xce, 0x7a, 0x4e, 0x13, 0x39, 0x0c, 0x51, 0xa5, - 0x25, 0xd1, 0x8a, 0xd9, 0x2b, 0x42, 0xaf, 0x8b, 0x03, 0xea, 0xf6, 0xfd, - 0xcf, 0x7d, 0x37, 0x2d, 0x85, 0x3a, 0xfb, 0x4e, 0x16, 0x63, 0xae, 0xd9, - 0x6e, 0x61, 0x15, 0xe6, 0x0d, 0x02, 0x1d, 0x08, 0x8d, 0xb3, 0x98, 0x3f, - 0x37, 0x18, 0xe5, 0x6f, 0x0e, 0xef, 0x4c, 0x5b, 0x1e, 0xc5, 0xb9, 0xba, - 0x78, 0xde, 0xb8, 0xbc, 0x6e, 0x04, 0x1b, 0x81, 0x2c, 0xaa, 0x61, 0x57, - 0x51, 0xc6, 0x6d, 0x90, 0x90, 0xa2, 0x11, 0xe0, 0xa3, 0xbf, 0x1a, 0x3f, - 0x88, 0x3c, 0x84, 0xbf, 0x7c, 0x08, 0xda, 0x71, 0x87, 0xf5, 0x37, 0xf6, - 0x84, 0x39, 0x47, 0xa0, 0x39, 0x8d, 0x1e, 0xdd, 0x64, 0xcd, 0x03, 0xe2, - 0xf2, 0x1a, 0xad, 0x98, 0xec, 0x0d, 0x04, 0x02, 0xaf, 0xeb, 0x41, 0x52, - 0xfc, 0x57, 0x48, 0xfb, 0xeb, 0xcd, 0x15, 0xa5, 0xe5, 0x8c, 0xff, 0x13, - 0x54, 0x44, 0x12, 0x96, 0xe4, 0x15, 0x97, 0x48, 0xc2, 0xba, 0x43, 0x2d, - 0x55, 0xa3, 0xe4, 0x54, 0xdb, 0xbe, 0xac, 0x93, 0xa2, 0xcf, 0x74, 0x5a, - 0x50, 0x5b, 0xf6, 0xe1, 0x37, 0xcb, 0xb0, 0x0c, 0xe0, 0x66, 0x25, 0x1f, - 0xd2, 0x60, 0x2e, 0xcc, 0x6f, 0xf3, 0xe6, 0x50, 0x7b, 0x61, 0xab, 0x13, - 0x4f, 0xbc, 0x58, 0x9d, 0x63, 0x34, 0x0c, 0x46, 0xaf, 0x24, 0xe9, 0xf4, - 0x25, 0x78, 0xb5, 0x46, 0x8a, 0x2c, 0x15, 0x72, 0x5f, 0x92, 0x4e, 0x13, - 0xb0, 0x06, 0x4f, 0x8a, 0xef, 0xd8, 0x84, 0x34, 0x4e, 0x96, 0xe8, 0xda, - 0xe6, 0x35, 0xdf, 0x7a, 0xdd, 0x3d, 0xb6, 0x7c, 0xbd, 0xe9, 0x46, 0xf5, - 0x86, 0xf6, 0xef, 0x28, 0x56, 0x2c, 0x2e, 0x2d, 0x78, 0xaf, 0x83, 0x56, - 0x5c, 0x74, 0x01, 0x45, 0xc7, 0x15, 0x5b, 0x17, 0xac, 0x5e, 0x63, 0x49, - 0x68, 0xef, 0x77, 0xba, 0x18, 0x88, 0xa7, 0x7b, 0xc3, 0x7a, 0x1e, 0x0f, - 0x43, 0xf7, 0x63, 0x0d, 0x70, 0xb1, 0x08, 0x62, 0xe3, 0x9f, 0x0f, 0x6b, - 0xf5, 0x95, 0xf6, 0x26, 0x62, 0x90, 0x86, 0xdc, 0xa8, 0xf7, 0xf8, 0xf0, - 0x59, 0xb7, 0x3b, 0x74, 0xae, 0xe2, 0x7c, 0x97, 0xbc, 0x51, 0xa6, 0x12, - 0xe5, 0x44, 0xc8, 0x91, 0x06, 0x84, 0x02, 0x2a, 0xc6, 0xe0, 0x0b, 0x97, - 0xad, 0x4b, 0x51, 0xfd, 0xd9, 0x72, 0xab, 0x72, 0xec, 0x83, 0x1f, 0x4c, - 0xff, 0x1e, 0x2f, 0xa4, 0x3c, 0xe2, 0x07, 0xcc, 0xf6, 0x8d, 0x12, 0xb5, - 0xb1, 0x4d, 0xad, 0x46, 0xe6, 0xa2, 0xd9, 0xe9, 0x62, 0x9d, 0x6b, 0x41, - 0x1b, 0xef, 0xf4, 0xd0, 0x69, 0x7f, 0x41, 0xaa, 0x25, 0x0f, 0x09, 0x75, - 0x04, 0x06, 0x1f, 0x76, 0xb6, 0x41, 0x62, 0xb4, 0x4d, 0x10, 0x2a, 0x15, - 0x97, 0x52, 0x4a, 0x38, 0xdf, 0x76, 0x0e, 0x2c, 0x5d, 0x32, 0x64, 0x76, - 0x09, 0x08, 0x94, 0x72, 0xf1, 0xc9, 0x3c, 0x36, 0xac, 0xff, 0xd6, 0x5d, - 0xea, 0x29, 0x37, 0x10, 0x85, 0x3e, 0x5b, 0x3f, 0x9f, 0x88, 0x4a, 0x38, - 0x1a, 0x15, 0xfc, 0x4c, 0x92, 0x75, 0x6c, 0x68, 0x2e, 0x3e, 0x18, 0x8e, - 0xca, 0xdc, 0xaf, 0xc4, 0x8a, 0x6f, 0x05, 0x1f, 0xb8, 0x43, 0xe4, 0xb2, - 0x7d, 0x3d, 0x75, 0xd5, 0x33, 0xc6, 0x83, 0x48, 0x0e, 0x16, 0xcb, 0x46, - 0xd5, 0x6b, 0xc6, 0x4a, 0x87, 0x44, 0x9b, 0xbf, 0x6c, 0x5b, 0xca, 0x0e, - 0xc5, 0xcd, 0xd6, 0x3c, 0xbf, 0xc5, 0x5e, 0x54, 0xb2, 0x5b, 0xcd, 0x75, - 0xef, 0x01, 0xe2, 0xe0, 0xef, 0xb0, 0x3a, 0xe0, 0x1e, 0xbe, 0xb2, 0x96, - 0x68, 0x95, 0x97, 0x3b, 0xc3, 0xb5, 0x13, 0xa9, 0x01, 0xc1, 0xa1, 0x28, - 0xe3, 0x84, 0xf1, 0x5a, 0x85, 0x83, 0x10, 0x06, 0x90, 0x9d, 0xd9, 0x73, - 0xbb, 0xb8, 0x90, 0xbc, 0x89, 0xdd, 0xf5, 0x1c, 0x5d, 0xee, 0x68, 0x4c, - 0xea, 0xfe, 0xd1, 0x20, 0x50, 0x1b, 0x7f, 0xb6, 0x45, 0xe2, 0xae, 0x98, - 0x27, 0x7b, 0x1d, 0x80, 0xfd, 0x25, 0xe5, 0x21, 0x53, 0x35, 0xee, 0x91, - 0x1e, 0x2c, 0x5e, 0x05, 0xc6, 0x0e, 0xda, 0x12, 0xa2, 0x18, 0x67, 0xa4, - 0x2b, 0x74, 0x63, 0x81, 0xf1, 0x8b, 0x5c, 0xc0, 0x87, 0xcc, 0x3d, 0x0f, - 0x62, 0x94, 0xaa, 0x64, 0xc3, 0x80, 0x2b, 0x6b, 0x39, 0x1c, 0x09, 0xc6, - 0x73, 0x5e, 0xd1, 0x67, 0x00, 0x1a, 0xb8, 0x5a, 0x6c, 0xc0, 0xbe, 0x19, - 0x31, 0x5c, 0xdf, 0x4a, 0xad, 0x05, 0x26, 0xc5, 0x10, 0xe8, 0xcc, 0x34, - 0x1c, 0x6a, 0xbb, 0x65, 0x74, 0x97, 0x5d, 0x4f, 0x90, 0xaa, 0x3c, 0x90, - 0x98, 0x63, 0x76, 0xa9, 0xfe, 0x07, 0x53, 0xf3, 0xa7, 0xa2, 0xa7, 0xc5, - 0x05, 0x82, 0x1c, 0x14, 0x3d, 0xf9, 0x56, 0x64, 0x35, 0xdc, 0xc6, 0x38, - 0x8a, 0x8c, 0x1e, 0x09, 0x41, 0x61, 0xb6, 0xa1, 0x9d, 0x2a, 0xbd, 0xa3, - 0xdc, 0xf3, 0xbc, 0xd3, 0x1c, 0x04, 0x1e, 0x05, 0xe6, 0x18, 0x47, 0x62, - 0xe6, 0x85, 0x4e, 0xe7, 0x11, 0xe4, 0x2f, 0xff, 0x59, 0x47, 0x57, 0xa0, - 0x7b, 0x66, 0xfd, 0xa6, 0x7b, 0xd5, 0xc4, 0x8c, 0xe6, 0x77, 0xd2, 0xf6, - 0x04, 0xfc, 0xd9, 0x40, 0x65, 0xc2, 0xbd, 0x5d, 0x84, 0x35, 0x4a, 0x2d, - 0xa5, 0xd1, 0x0c, 0x74, 0x1c, 0xfa, 0x36, 0xf3, 0x2c, 0xed, 0x5b, 0x50, - 0x22, 0x0c, 0x70, 0x90, 0xd8, 0x42, 0x67, 0x2b, 0xf7, 0x74, 0xdc, 0xcd, - 0xb2, 0xb8, 0x69, 0x67, 0xd3, 0xb8, 0xc5, 0x21, 0xbb, 0xab, 0x19, 0x5b, - 0x40, 0x3c, 0x68, 0x30, 0xf5, 0x26, 0xdd, 0xc7, 0xbc, 0x68, 0x39, 0x2c, - 0x21, 0xae, 0x9d, 0x05, 0x46, 0x38, 0xa4, 0xd7, 0x0d, 0x9f, 0xd6, 0xf9, - 0xff, 0x52, 0xd7, 0xa4, 0x22, 0x8b, 0xa1, 0xae, 0x49, 0x3b, 0xac, 0x11, - 0xf3, 0x88, 0xbe, 0x8f, 0xe5, 0x57, 0x9a, 0x02, 0xb3, 0xe1, 0x49, 0x6e, - 0x64, 0xab, 0x01, 0x5a, 0x0f, 0x31, 0xa0, 0x3e, 0x56, 0xab, 0xfb, 0x23, - 0x39, 0xdf, 0x1d, 0xb5, 0xfc, 0xde, 0xe0, 0x82, 0x7e, 0x41, 0x0b, 0x4f, - 0xcc, 0xff, 0x70, 0x5f, 0xbc, 0x69, 0x49, 0x57, 0x67, 0x49, 0x4b, 0x3e, - 0x73, 0x85, 0x76, 0x69, 0x46, 0x22, 0x93, 0xbf, 0x81, 0xe1, 0x5e, 0x7b, - 0xf6, 0x65, 0x61, 0xa0, 0xb3, 0x51, 0x78, 0xfa, 0xaa, 0x1a, 0xde, 0x5d, - 0x25, 0xa5, 0x8a, 0x43, 0x2e, 0x5e, 0x17, 0xd2, 0x4b, 0xb4, 0xb3, 0xde, - 0x62, 0xb2, 0x0d, 0x3a, 0x3e, 0xf1, 0x39, 0x54, 0xdf, 0xdf, 0x8b, 0xd7, - 0x95, 0x3f, 0x76, 0x88, 0x07, 0x8e, 0x98, 0x19, 0x13, 0x15, 0xec, 0xf4, - 0x15, 0xa9, 0x6a, 0xe3, 0xe8, 0x60, 0xb6, 0x7b, 0x57, 0xd0, 0xf7, 0x46, - 0xe5, 0x9b, 0xf7, 0xe0, 0x28, 0x89, 0x8c, 0x3b, 0x38, 0x1e, 0x33, 0xaa, - 0x89, 0xd2, 0xc6, 0x64, 0x65, 0xaa, 0x22, 0x93, 0xc0, 0xdf, 0x06, 0x4b, - 0x62, 0x17, 0x1b, 0x48, 0x17, 0x68, 0x87, 0xb3, 0xfe, 0x47, 0xe6, 0x53, - 0x38, 0xfd, 0xa7, 0x1e, 0x87, 0xb9, 0x70, 0x81, 0xb9, 0x19, 0x40, 0xf4, - 0x32, 0xd8, 0x2f, 0x4c, 0x11, 0xc6, 0x65, 0x84, 0xa4, 0xa3, 0x57, 0x17, - 0x98, 0x55, 0xe6, 0x21, 0x81, 0x40, 0x01, 0x62, 0xae, 0xe8, 0x49, 0x32, - 0x3e, 0x7d, 0x5f, 0x89, 0xf5, 0xe9, 0xe5, 0x84, 0x81, 0x22, 0x40, 0x6a, - 0xb4, 0xc4, 0x49, 0xb1, 0x9c, 0xae, 0xd9, 0x64, 0xc6, 0xb9, 0x2d, 0x66, - 0x41, 0x95, 0xcc, 0xa9, 0x1b, 0x83, 0x42, 0x19, 0x73, 0xf4, 0x18, 0x06, - 0x79, 0x08, 0x9a, 0xfa, 0x42, 0xaa, 0xf8, 0x4c, 0xd7, 0xb2, 0xb4, 0xd0, - 0x1d, 0x29, 0x51, 0xbe, 0x23, 0x12, 0xdb, 0x67, 0x1c, 0xe4, 0xc8, 0x51, - 0x49, 0x9d, 0x82, 0x59, 0x60, 0x2a, 0x7c, 0x9a, 0xf5, 0xc6, 0x7a, 0xe8, - 0xb8, 0xf5, 0x98, 0x5e, 0x35, 0xc6, 0xac, 0xaf, 0xee, 0x41, 0x46, 0xb1, - 0x31, 0x86, 0x31, 0x10, 0x63, 0xff, 0x68, 0x95, 0x05, 0xa9, 0x5c, 0xfd, - 0xfe, 0x05, 0x13, 0x53, 0x0c, 0xdb, 0xad, 0x13, 0x0b, 0xdd, 0xf5, 0xdd, - 0x33, 0x33, 0x58, 0x03, 0x36, 0x68, 0x7b, 0x99, 0x04, 0xbd, 0xd4, 0x75, - 0xf5, 0x56, 0x1e, 0x03, 0x99, 0xa1, 0x74, 0xb3, 0x1a, 0x3f, 0x0a, 0x74, - 0xbb, 0x13, 0xf5, 0x5b, 0x49, 0x2a, 0xf1, 0x5a, 0x41, 0xa6, 0xdc, 0x75, - 0x43, 0xbb, 0x60, 0x7f, 0xaa, 0x99, 0x77, 0x2a, 0x67, 0x4c, 0x12, 0x2b, - 0x66, 0xec, 0xcf, 0xea, 0x70, 0x88, 0x71, 0xb5, 0x50, 0x81, 0x2d, 0xed, - 0xc5, 0x43, 0xdf, 0x06, 0x8d, 0xa9, 0xd4, 0x21, 0xd8, 0x67, 0x13, 0x34, - 0x12, 0xb5, 0xfb, 0xab, 0x2f, 0x07, 0xec, 0xa9, 0x57, 0xde, 0xff, 0x06, - 0x5d, 0x4e, 0x0e, 0x3f, 0xc6, 0x93, 0x0c, 0x8c, 0x2a, 0x30, 0xc3, 0x5c, - 0xb8, 0xc7, 0x11, 0x84, 0x11, 0xba, 0x69, 0xbe, 0x99, 0xaf, 0xfa, 0xd3, - 0xcc, 0xd3, 0x65, 0x32, 0x33, 0xd2, 0xa4, 0xcc, 0x47, 0x32, 0xe6, 0x78, - 0x86, 0xb7, 0x71, 0x9a, 0x4b, 0xe5, 0x10, 0xd3, 0xda, 0xa8, 0x72, 0xfe, - 0x1f, 0xe6, 0x6e, 0xe4, 0xee, 0x8f, 0xd8, 0x29, 0xf6, 0x39, 0x2b, 0x7c, - 0x15, 0xca, 0x76, 0x15, 0xf1, 0x62, 0x9d, 0x07, 0x02, 0x75, 0x13, 0x2e, - 0xd2, 0x0b, 0x10, 0x49, 0xb1, 0x7b, 0x23, 0x0d, 0xd3, 0x78, 0xb6, 0x37, - 0x59, 0xfc, 0xd6, 0x29, 0x53, 0xaa, 0x17, 0xbc, 0xed, 0x2c, 0xe2, 0xec, - 0x18, 0x6f, 0xbc, 0xd7, 0xeb, 0x66, 0x16, 0x2f, 0x4f, 0xe4, 0xc6, 0xad, - 0xa4, 0x4f, 0x02, 0x3b, 0x53, 0xfc, 0x24, 0x2a, 0x4c, 0x8d, 0x3e, 0x9a, - 0xe4, 0x32, 0xbd, 0x60, 0x5e, 0x00, 0x7e, 0x61, 0x6e, 0xb4, 0x12, 0x1a, - 0x73, 0x55, 0x84, 0xf2, 0x92, 0x2d, 0x1a, 0x13, 0xa7, 0xa1, 0x76, 0x65, - 0x3a, 0x3a, 0xcd, 0xdb, 0x52, 0xa7, 0x77, 0x34, 0x0f, 0xf0, 0xb8, 0xe8, - 0x59, 0xd3, 0x38, 0xd0, 0x65, 0x2a, 0xe1, 0x32, 0x34, 0xd0, 0x14, 0xd8, - 0x74, 0x72, 0xe3, 0x29, 0x70, 0x48, 0x47, 0x8f, 0xb4, 0x6c, 0x08, 0xf9, - 0x7e, 0x94, 0x20, 0x51, 0xf7, 0xe4, 0xa3, 0x80, 0xa5, 0xa9, 0xdb, 0x93, - 0x9e, 0xaf, 0x98, 0xb2, 0xbd, 0xa2, 0x49, 0x52, 0x7e, 0xc7, 0x24, 0x56, - 0x5a, 0x38, 0xf6, 0x3b, 0x7c, 0x2e, 0xbb, 0x0a, 0xfc, 0x24, 0xff, 0x65, - 0x56, 0xb1, 0x21, 0xbf, 0xf5, 0x47, 0x14, 0x79, 0x57, 0x5e, 0xc4, 0x98, - 0xc0, 0x3c, 0xa7, 0xe8, 0xa6, 0x9d, 0xcf, 0x73, 0x31, 0x50, 0x9c, 0x89, - 0x0e, 0x79, 0x34, 0xd2, 0xbd, 0x13, 0xb5, 0x4c, 0x7e, 0xea, 0x73, 0x58, - 0x9a, 0x3b, 0x8f, 0x45, 0x4a, 0x5f, 0xa4, 0xec, 0x0e, 0x4b, 0xd4, 0x7c, - 0x52, 0x57, 0x5d, 0xba, 0x5c, 0x41, 0x0c, 0xa4, 0x06, 0x5b, 0xb3, 0x4f, - 0xdf, 0x49, 0x1a, 0x26, 0x94, 0xcc, 0xad, 0x79, 0x32, 0xd5, 0x4a, 0xc1, - 0x02, 0xe9, 0xc2, 0x16, 0xe2, 0xef, 0x36, 0xa4, 0x06, 0x5e, 0x3c, 0x3a, - 0xe3, 0x89, 0x90, 0x57, 0x91, 0x0b, 0x3d, 0xc3, 0xc6, 0xb7, 0x75, 0x9b, - 0xc0, 0x4f, 0xc4, 0x1a, 0xe0, 0xdf, 0x98, 0x62, 0x84, 0xd6, 0xa4, 0x62, - 0xdc, 0xfb, 0x15, 0xf0, 0x11, 0x6f, 0xec, 0x64, 0x90, 0x0e, 0x82, 0x20, - 0xfd, 0x87, 0x13, 0x0f, 0x3d, 0xf3, 0xa9, 0x50, 0x33, 0x6a, 0x71, 0x88, - 0xb9, 0x52, 0x0a, 0xd2, 0x9c, 0xf0, 0x22, 0xf5, 0x5b, 0x86, 0xcc, 0x6b, - 0xf3, 0xa9, 0x96, 0x4a, 0xaf, 0x7d, 0x4a, 0x36, 0x50, 0x72, 0xa3, 0x0c, - 0x9b, 0x2d, 0x5d, 0x7c, 0x55, 0xc9, 0xad, 0x6f, 0xc5, 0xaa, 0x1e, 0x95, - 0x74, 0x88, 0x78, 0xf7, 0x0e, 0x1f, 0x45, 0xc1, 0x3c, 0x7d, 0x56, 0xbe, - 0x5d, 0x3a, 0x95, 0x45, 0xaf, 0xd6, 0x52, 0x1c, 0x44, 0xbf, 0x0d, 0x26, - 0x26, 0x13, 0x79, 0x82, 0x43, 0x57, 0x2c, 0xbf, 0x26, 0x64, 0x42, 0x9b, - 0x3e, 0xf5, 0xfa, 0x38, 0xcb, 0x43, 0x98, 0x23, 0x7f, 0xfb, 0x76, 0xa5, - 0x75, 0x31, 0x02, 0x09, 0xcb, 0x95, 0xbd, 0xcc, 0x81, 0xac, 0x3b, 0xd0, - 0xb6, 0xa9, 0x4b, 0x00, 0xa4, 0x28, 0xf2, 0x4b, 0x69, 0xf5, 0x9d, 0xd6, - 0xac, 0xf4, 0x92, 0x0b, 0x13, 0x24, 0xfa, 0x68, 0x75, 0xb1, 0x2c, 0xa2, - 0xc6, 0x40, 0x9b, 0x74, 0xfd, 0x90, 0xd4, 0xfc, 0x4e, 0xd0, 0x70, 0x13, - 0x0d, 0xdc, 0xcc, 0xf5, 0x2c, 0x96, 0x1f, 0xe3, 0xc8, 0x9a, 0xc2, 0x5c, - 0x06, 0xff, 0x18, 0x8b, 0x28, 0x2e, 0xc7, 0xdb, 0xb1, 0x0d, 0xc8, 0x90, - 0x33, 0x11, 0x82, 0xb1, 0xe3, 0x0e, 0x6e, 0x1e, 0xda, 0xa9, 0x1b, 0xee, - 0x4c, 0x0a, 0x06, 0x0d, 0x3a, 0x82, 0x40, 0x37, 0x24, 0xd2, 0x87, 0x9f, - 0x3d, 0xa0, 0xe3, 0x2d, 0xd5, 0xa2, 0x57, 0xd5, 0x6e, 0x21, 0x96, 0x24, - 0x06, 0xc2, 0xfe, 0xfe, 0x2e, 0x6a, 0x35, 0x84, 0x7d, 0xbd, 0xad, 0x9b, - 0x2e, 0x99, 0x16, 0x37, 0x76, 0x36, 0xf6, 0x84, 0xb0, 0x56, 0xce, 0xda, - 0x7b, 0x77, 0xe8, 0xa8, 0x5a, 0x7a, 0xb4, 0xd6, 0xf7, 0x98, 0x98, 0x92, - 0x90, 0xce, 0xa4, 0x59, 0x6c, 0x79, 0x4d, 0xf3, 0xab, 0x04, 0xdb, 0x49, - 0x93, 0xf3, 0x20, 0x1d, 0xe0, 0x44, 0x3d, 0x2a, 0x8f, 0x2d, 0xcb, 0x4b, - 0x7f, 0xe7, 0x6e, 0x70, 0xf8, 0x9d, 0xa2, 0x9d, 0x41, 0x5f, 0x98, 0x9e, - 0x6c, 0x2d, 0x10, 0x88, 0x05, 0x5d, 0x75, 0x19, 0xaa, 0xb6, 0x19, 0x9a, - 0xaa, 0x55, 0x42, 0x9f, 0xf3, 0x58, 0xc2, 0xd4, 0xd7, 0xeb, 0xc3, 0xa3, - 0x27, 0x20, 0xc8, 0xec, 0x72, 0x52, 0x43, 0x4d, 0xe1, 0x07, 0xdd, 0x95, - 0xe4, 0x2a, 0xa8, 0x3c, 0x8d, 0x1c, 0x9c, 0x4a, 0xee, 0x06, 0x54, 0x9d, - 0x9a, 0x6a, 0x38, 0x91, 0x3e, 0x51, 0x1a, 0x2a, 0xc6, 0x2d, 0xbd, 0xb0, - 0x9c, 0xb4, 0x11, 0xd6, 0x8d, 0x1a, 0x73, 0x49, 0xb1, 0xa9, 0xfa, 0xa4, - 0x62, 0x6d, 0x06, 0x04, 0xe6, 0x40, 0x7f, 0xe9, 0xe4, 0xc6, 0x17, 0x9e, - 0x03, 0x01, 0x03, 0xe7, 0x79, 0x67, 0xe9, 0x62, 0xa4, 0xc6, 0x0c, 0x92, - 0x03, 0x2b, 0x7f, 0x1a, 0x6d, 0x72, 0x12, 0x8f, 0xc2, 0x05, 0x03, 0x29, - 0xfb, 0xdf, 0x70, 0x42, 0xbb, 0xcb, 0xf4, 0xb2, 0x1a, 0xac, 0x9e, 0xdb, - 0xa0, 0xf3, 0x12, 0x20, 0xb2, 0x45, 0x4a, 0x63, 0x55, 0x7b, 0xbd, 0x67, - 0x8c, 0x40, 0x9c, 0xbe, 0x34, 0x2b, 0x5c, 0xcf, 0x74, 0x29, 0xcc, 0xf4, - 0x57, 0x6f, 0x32, 0x3a, 0x65, 0xf5, 0x32, 0xab, 0x4f, 0xc6, 0x5e, 0x3b, - 0xb4, 0x8a, 0xaf, 0xdc, 0xfa, 0x7b, 0xf9, 0xdd, 0xaa, 0xb2, 0x6a, 0x20, - 0x03, 0x4c, 0x2c, 0x90, 0xb0, 0xbf, 0x90, 0x1d, 0xbd, 0x08, 0x08, 0x64, - 0x0a, 0x37, 0xf5, 0xa4, 0x95, 0xfa, 0xfa, 0x96, 0xc5, 0x12, 0xcd, 0x48, - 0x93, 0x21, 0x14, 0xbe, 0x00, 0x63, 0xe6, 0xcf, 0x5c, 0xcb, 0x83, 0x2e, - 0xf1, 0x6c, 0x04, 0x33, 0x97, 0xc9, 0xcb, 0xeb, 0xf1, 0xf7, 0x04, 0x9b, - 0x16, 0x46, 0xb6, 0x81, 0x6f, 0xdf, 0x0e, 0x8b, 0x56, 0x72, 0x27, 0xc2, - 0xe8, 0x71, 0x44, 0x6b, 0x0a, 0x43, 0xc0, 0x37, 0x46, 0x67, 0x58, 0xf5, - 0x68, 0x5c, 0xb3, 0x98, 0x9c, 0x59, 0xc1, 0xc7, 0xfb, 0xcf, 0x94, 0xd2, - 0x4e, 0xf4, 0xa1, 0x8e, 0x03, 0xac, 0x61, 0xb7, 0x6c, 0xda, 0xab, 0x08, - 0x00, 0xc7, 0x58, 0x4a, 0x39, 0x9c, 0x46, 0xe5, 0x1e, 0x93, 0xdb, 0xa2, - 0x5d, 0xc7, 0xe3, 0x41, 0x03, 0xbd, 0x22, 0x61, 0x7e, 0x43, 0xd0, 0xc6, - 0x66, 0x8c, 0x05, 0xf5, 0x63, 0x0a, 0xd4, 0x31, 0x88, 0x96, 0x7e, 0x2b, - 0x58, 0xd9, 0xcb, 0xc6, 0x62, 0x1c, 0x7f, 0xfd, 0x7d, 0x77, 0x80, 0x19, - 0xd5, 0xbb, 0x16, 0x91, 0x25, 0x49, 0x38, 0xb8, 0xf1, 0x82, 0x7a, 0x05, - 0xfd, 0x4e, 0x7d, 0x3f, 0x03, 0x51, 0x1c, 0x47, 0x25, 0xc6, 0x0d, 0xa7, - 0xd8, 0xc2, 0xc6, 0xf1, 0x1f, 0x55, 0x8a, 0xe2, 0xdb, 0xdf, 0xcb, 0xd4, - 0x8d, 0x1f, 0x80, 0x77, 0x82, 0xcf, 0xb4, 0x9c, 0x08, 0x6c, 0x5a, 0x17, - 0x17, 0xdd, 0x90, 0xc8, 0x80, 0xbd, 0xee, 0xf8, 0xad, 0xa2, 0x95, 0x3d, - 0x70, 0x06, 0x81, 0xe9, 0xb0, 0x3e, 0x35, 0x86, 0x21, 0x3d, 0xaf, 0x8c, - 0x20, 0xc9, 0x10, 0x0f, 0x0f, 0x85, 0x74, 0xf0, 0xaf, 0xdb, 0xb8, 0xe9, - 0x4e, 0xc4, 0xf4, 0x14, 0xf8, 0xd1, 0xa7, 0xb1, 0xf6, 0xfc, 0x2e, 0x94, - 0x2d, 0x71, 0xb9, 0x0d, 0x0c, 0x55, 0x95, 0x86, 0xca, 0x22, 0x62, 0xfe, - 0x65, 0xdd, 0x39, 0x07, 0x97, 0xb0, 0x3a, 0xfc, 0x39, 0xc5, 0x83, 0x2f, - 0xb3, 0xe8, 0x3a, 0xef, 0x1d, 0x4f, 0x78, 0x81, 0x2f, 0xc0, 0x53, 0x3e, - 0xdb, 0x37, 0x87, 0x0a, 0xc1, 0x0d, 0xb6, 0x9e, 0x25, 0xa3, 0x44, 0x46, - 0xd2, 0xe2, 0xf4, 0xd3, 0xe0, 0x21, 0x4a, 0x10, 0xfc, 0xea, 0x13, 0xe9, - 0xb5, 0x77, 0x62, 0x24, 0x1e, 0x81, 0x51, 0xa8, 0x58, 0x5c, 0x78, 0xd8, - 0xd0, 0x18, 0x5d, 0xf0, 0x80, 0x9f, 0x62, 0xa7, 0x73, 0x30, 0xc2, 0x78, - 0x61, 0x43, 0x23, 0x24, 0xc7, 0x56, 0xd9, 0x4c, 0x39, 0xca, 0xa0, 0x40, - 0x67, 0xcd, 0x34, 0xb9, 0x38, 0x71, 0x51, 0x1e, 0x60, 0xc2, 0x1b, 0x9a, - 0xc2, 0x20, 0x45, 0xbf, 0xb0, 0x5e, 0x76, 0x4a, 0x68, 0x71, 0x22, 0x29, - 0x88, 0xe9, 0x0f, 0xea, 0x6a, 0x95, 0x44, 0x2d, 0x67, 0x90, 0x97, 0x22, - 0xae, 0xf0, 0x69, 0x67, 0x06, 0xdb, 0xf6, 0xe8, 0x12, 0x04, 0x31, 0x9c, - 0x98, 0xba, 0xac, 0x33, 0xa7, 0x91, 0x47, 0xe4, 0x55, 0xcb, 0x1b, 0x1a, - 0xe5, 0x81, 0x34, 0xeb, 0x0f, 0x99, 0x33, 0x12, 0x71, 0x65, 0x98, 0x3f, - 0xec, 0xeb, 0xe8, 0x00, 0xf1, 0x48, 0x70, 0xe3, 0x62, 0xf0, 0xb8, 0xad, - 0x68, 0x7d, 0x51, 0x76, 0x4b, 0x11, 0x16, 0x56, 0x3d, 0xc8, 0xda, 0xc2, - 0x4f, 0x51, 0xf2, 0x54, 0xdb, 0x4c, 0xf3, 0xc0, 0x8a, 0x9e, 0x57, 0xd1, - 0xa7, 0xb2, 0xdc, 0x81, 0x63, 0x70, 0x14, 0xea, 0x5f, 0xb0, 0x6e, 0x6d, - 0x54, 0xd3, 0x7b, 0x3d, 0xbd, 0x12, 0x57, 0xa9, 0xba, 0x67, 0xc8, 0xc5, - 0xc5, 0x4b, 0x51, 0x18, 0x30, 0x5e, 0x6f, 0xb7, 0xe5, 0xf9, 0x74, 0x09, - 0x14, 0x30, 0x99, 0xb0, 0xc3, 0x42, 0x84, 0x97, 0x79, 0x28, 0x73, 0x97, - 0x6a, 0xee, 0xf5, 0xbc, 0x2b, 0x29, 0xf0, 0xb5, 0xa5, 0x08, 0xd2, 0x94, - 0xde, 0xaf, 0xc3, 0xf1, 0x98, 0x37, 0x12, 0x1f, 0x79, 0xb5, 0x94, 0xc9, - 0x9a, 0xa7, 0x73, 0x71, 0x70, 0x8a, 0xc2, 0x68, 0x52, 0xdc, 0x63, 0x41, - 0x86, 0x26, 0x70, 0x68, 0x51, 0x61, 0xbf, 0x7b, 0x5f, 0xd5, 0x4d, 0x43, - 0x1a, 0xfe, 0x7c, 0x53, 0x54, 0xa0, 0xa5, 0x64, 0xbf, 0xa5, 0x77, 0x4a, - 0x55, 0x7e, 0x72, 0x79, 0xc7, 0x93, 0xb2, 0x1d, 0xea, 0x1d, 0x38, 0x45, - 0x52, 0x5c, 0x47, 0x6c, 0xf0, 0x31, 0x26, 0xdb, 0x47, 0xb0, 0x83, 0xd6, - 0x88, 0x9d, 0xfd, 0x89, 0x76, 0xfc, 0x05, 0xe0, 0xea, 0x4b, 0xe8, 0x21, - 0x95, 0xd7, 0x09, 0x0b, 0x28, 0xbb, 0xce, 0xdd, 0xc3, 0x53, 0x3c, 0x36, - 0x29, 0x6c, 0xf9, 0xb0, 0x2d, 0x52, 0xd0, 0xbd, 0xb7, 0x5b, 0x2e, 0x24, - 0x55, 0xdd, 0x3e, 0x0f, 0xe3, 0xe8, 0x82, 0x80, 0x44, 0xdd, 0x8c, 0xda, - 0x72, 0x5a, 0xc6, 0x80, 0x94, 0xcc, 0xe3, 0x7d, 0xaf, 0x69, 0x98, 0x22, - 0x79, 0xe2, 0x80, 0x1e, 0x62, 0x24, 0x72, 0x58, 0xe6, 0xab, 0xe1, 0xb4, - 0x5a, 0x23, 0x02, 0xc7, 0x28, 0xd4, 0x1c, 0x7b, 0x44, 0x4a, 0x65, 0x19, - 0x10, 0xc9, 0xd9, 0x15, 0x0d, 0x65, 0x73, 0xa3, 0x91, 0x70, 0x24, 0x32, - 0x0d, 0xf8, 0xde, 0x52, 0xc0, 0x99, 0x04, 0xa3, 0xad, 0x0d, 0x55, 0x09, - 0x95, 0x32, 0x79, 0x7b, 0x98, 0x84, 0xa1, 0x1e, 0x74, 0x3a, 0x49, 0x6c, - 0xad, 0xde, 0xe8, 0xfd, 0x93, 0x26, 0xc2, 0xa7, 0xa2, 0xea, 0xd9, 0x25, - 0xdb, 0x74, 0xf7, 0xe9, 0xd4, 0x28, 0x62, 0x84, 0xb1, 0x02, 0xa6, 0x2b, - 0xf7, 0xcf, 0xfa, 0x83, 0x5b, 0x8c, 0xa8, 0xce, 0x9c, 0xfb, 0xf6, 0x6e, - 0xaa, 0x9e, 0x7b, 0x8b, 0x49, 0x51, 0xc2, 0x0a, 0x69, 0x03, 0x88, 0x1d, - 0x52, 0x8e, 0x7c, 0x42, 0x41, 0x6f, 0x9b, 0xec, 0xa6, 0xf7, 0x93, 0xe8, - 0x9b, 0xff, 0x22, 0xc2, 0x76, 0x76, 0xa8, 0x59, 0xdd, 0xf8, 0xac, 0x23, - 0xb9, 0x98, 0x60, 0x78, 0x77, 0x93, 0x7c, 0x73, 0xd4, 0x8d, 0x35, 0x19, - 0x2b, 0xb6, 0xef, 0x01, 0x97, 0x66, 0x4f, 0xcc, 0xb6, 0x3f, 0x7e, 0xbf, - 0x29, 0x58, 0xa8, 0xd9, 0xb2, 0x47, 0x5e, 0xc0, 0xe0, 0x22, 0xac, 0x9a, - 0xed, 0x54, 0x44, 0x08, 0xf7, 0xd9, 0x21, 0xf0, 0x5d, 0x3a, 0xec, 0x83, - 0x91, 0xfd, 0x61, 0x17, 0x76, 0x3f, 0xba, 0x01, 0x3d, 0x5e, 0x04, 0x9e, - 0xac, 0xbc, 0x91, 0xeb, 0x8e, 0x47, 0x03, 0x0b, 0x9a, 0x5a, 0x28, 0xb1, - 0x04, 0x4b, 0x9c, 0x7e, 0x2e, 0x42, 0x38, 0x56, 0x9a, 0x3a, 0xb5, 0x42, - 0x06, 0x30, 0x76, 0x63, 0xe8, 0x74, 0x1f, 0x4b, 0x64, 0xb7, 0x76, 0x7a, - 0x2f, 0x56, 0xdf, 0xfd, 0xb5, 0x7b, 0x0f, 0x9e, 0x01, 0x1d, 0xab, 0x91, - 0xfa, 0x74, 0x24, 0x5c, 0x31, 0xb3, 0x13, 0x0e, 0x82, 0xe4, 0x5d, 0x6f, - 0xcf, 0xec, 0x80, 0x1c, 0xd6, 0x1a, 0xbd, 0xb5, 0x95, 0x81, 0x1e, 0xe8, - 0xda, 0xde, 0x1e, 0xf1, 0x6f, 0xf6, 0x29, 0x19, 0x9a, 0x52, 0x7f, 0x0e, - 0x6a, 0x6a, 0x6a, 0x6e, 0xeb, 0x9c, 0x21, 0x9f, 0xd7, 0x98, 0xa9, 0x42, - 0x55, 0x90, 0x22, 0xbe, 0x86, 0xd1, 0x1b, 0x63, 0x8a, 0x61, 0x0b, 0x28, - 0x20, 0x0d, 0x8d, 0x61, 0xe0, 0xac, 0xd6, 0x62, 0x2a, 0x1f, 0x4b, 0x6f, - 0x27, 0xeb, 0xf5, 0xf7, 0x1e, 0x75, 0x3e, 0x0f, 0xf5, 0xb6, 0x4d, 0xc9, - 0x5f, 0xb3, 0x10, 0x6c, 0x8f, 0x08, 0x07, 0x92, 0xe5, 0x8f, 0x73, 0xe2, - 0x04, 0x76, 0xc3, 0x9b, 0xa2, 0xd4, 0x75, 0x2a, 0xa4, 0x28, 0x83, 0x79, - 0x37, 0x1f, 0x5c, 0xb4, 0xe7, 0xd6, 0xd6, 0x05, 0x07, 0x6a, 0x3d, 0x76, - 0x25, 0xe3, 0x66, 0xbe, 0xdb, 0xf9, 0x92, 0xf3, 0xeb, 0xa5, 0xe5, 0xef, - 0xcd, 0x57, 0x84, 0x50, 0xdd, 0xa0, 0x7a, 0x15, 0x7e, 0x07, 0xd3, 0x5c, - 0x8d, 0xee, 0x79, 0x14, 0xc0, 0x92, 0x5e, 0x7b, 0xa7, 0x6b, 0xa8, 0x0d, - 0x81, 0x88, 0xfd, 0x43, 0x54, 0xf3, 0xf8, 0x45, 0x2d, 0xad, 0x95, 0xa2, - 0x71, 0x52, 0x82, 0xc8, 0x24, 0x95, 0x8e, 0xa9, 0x72, 0x9b, 0xaa, 0xf2, - 0xd9, 0x8b, 0xd7, 0x10, 0x3c, 0x41, 0x03, 0x08, 0x92, 0xc6, 0x7d, 0x6f, - 0xbd, 0xb0, 0x8b, 0x27, 0x62, 0x30, 0x84, 0xb7, 0x3d, 0x45, 0x50, 0xb6, - 0x7d, 0x0b, 0x9b, 0x2d, 0xc7, 0xca, 0x8a, 0xc6, 0x0a, 0x00, 0x38, 0x78, - 0xd9, 0x36, 0x61, 0xf0, 0xc8, 0x80, 0x8d, 0x37, 0x89, 0x2f, 0xb9, 0xda, - 0x71, 0xff, 0x72, 0x08, 0x81, 0x2b, 0x73, 0xee, 0xc5, 0xb4, 0xfb, 0xa3, - 0x4c, 0x2a, 0xae, 0x43, 0xca, 0x53, 0xc9, 0xd5, 0xed, 0x15, 0x29, 0xfc, - 0xab, 0x18, 0x49, 0x0f, 0xd4, 0xec, 0x47, 0x83, 0xa9, 0x88, 0x80, 0xfb, - 0x49, 0x79, 0x5b, 0x7d, 0xa5, 0x5c, 0x9b, 0xac, 0x23, 0xbf, 0x77, 0x8f, - 0x4b, 0xfa, 0xe2, 0x1c, 0xe3, 0x63, 0x5b, 0xa6, 0xbe, 0x7e, 0x32, 0x49, - 0xf1, 0x69, 0x4b, 0xac, 0x46, 0xcb, 0x7f, 0xde, 0x78, 0x72, 0x2a, 0x11, - 0x6a, 0xaf, 0xbc, 0xd5, 0x14, 0x87, 0x29, 0x7e, 0x4a, 0xf6, 0x54, 0x7a, - 0xa5, 0x1b, 0x85, 0x6f, 0xdc, 0x2c, 0xb7, 0x05, 0x4c, 0x44, 0x54, 0x23, - 0x5e, 0x32, 0xaa, 0x88, 0x99, 0xb8, 0x63, 0x0b, 0x6d, 0x03, 0xda, 0x41, - 0x8e, 0xec, 0x02, 0xdb, 0x80, 0x06, 0x1e, 0xc3, 0xdf, 0xbe, 0xac, 0xe6, - 0x3f, 0x9f, 0xbd, 0x9a, 0x94, 0xc8, 0x55, 0x57, 0x9e, 0xd9, 0x35, 0xc7, - 0xa1, 0x9b, 0x46, 0xd3, 0xe3, 0xac, 0x38, 0x10, 0x93, 0x17, 0x58, 0xb5, - 0x65, 0x78, 0x07, 0x9e, 0xaf, 0x21, 0xaf, 0x00, 0xa3, 0x85, 0xbf, 0x28, - 0x97, 0x63, 0x25, 0x91, 0x12, 0xec, 0x1d, 0xa4, 0x35, 0xf1, 0x9d, 0xea, - 0x5d, 0x34, 0x75, 0xa2, 0xd7, 0xae, 0x02, 0xe7, 0xbe, 0xcf, 0x27, 0x53, - 0x39, 0x04, 0x51, 0xfb, 0x2f, 0xb1, 0x18, 0x3b, 0x40, 0x07, 0xe3, 0x62, - 0x1a, 0xfe, 0x45, 0xc5, 0xe4, 0x53, 0xc8, 0x60, 0x2d, 0x7d, 0xc8, 0xa5, - 0x38, 0xc4, 0x05, 0xa7, 0x73, 0x94, 0x20, 0xb4, 0x64, 0xca, 0x86, 0x7d, - 0xc5, 0xf4, 0xfe, 0x49, 0x11, 0x49, 0x14, 0x71, 0x5a, 0x00, 0xa0, 0x00, - 0xdd, 0xc6, 0xd6, 0xe9, 0x2e, 0xc0, 0x31, 0xf1, 0x43, 0xf2, 0x64, 0x90, - 0xd9, 0x6d, 0x2e, 0x66, 0x70, 0xcd, 0x8a, 0x6a, 0x50, 0xaa, 0x43, 0xbd, - 0x4f, 0x2c, 0x61, 0xac, 0xbe, 0xf3, 0x54, 0xd9, 0x31, 0xe2, 0x73, 0xf8, - 0x71, 0x21, 0xa3, 0xb1, 0xde, 0xf6, 0xa8, 0x0a, 0x47, 0xdc, 0x9d, 0x03, - 0x82, 0x5f, 0xe7, 0xe2, 0xe7, 0x77, 0x33, 0x79, 0x2e, 0x73, 0xad, 0xad, - 0x7a, 0x25, 0x69, 0xeb, 0xf3, 0x09, 0x56, 0x16, 0xbf, 0x49, 0x66, 0xb7, - 0xd7, 0xb1, 0x28, 0xf3, 0xfc, 0xbc, 0xb8, 0xef, 0xa9, 0x92, 0xe9, 0x5c, - 0xc7, 0xc3, 0xfc, 0xd8, 0x4a, 0x3a, 0x50, 0xec, 0x7e, 0xcb, 0xc6, 0x1c, - 0x43, 0x01, 0x43, 0xd7, 0x1b, 0x86, 0xab, 0xdd, 0xdd, 0x3c, 0x79, 0x3a, - 0xe1, 0x82, 0xb0, 0x75, 0xf6, 0xe3, 0xb2, 0xed, 0xb6, 0x07, 0x53, 0x24, - 0xcc, 0xe8, 0x6f, 0x40, 0x70, 0xc8, 0x09, 0x80, 0x85, 0xf8, 0x7a, 0x0c, - 0xec, 0x72, 0x53, 0x6d, 0x86, 0x1e, 0x03, 0x1d, 0x7f, 0x15, 0x26, 0xa8, - 0xff, 0x08, 0x09, 0xe1, 0x88, 0x7e, 0x6f, 0xa8, 0xc2, 0x07, 0xb9, 0x11, - 0x76, 0x0a, 0x2e, 0xe1, 0xc4, 0x38, 0xe5, 0x5f, 0xd1, 0x59, 0x70, 0x22, - 0xfd, 0xb5, 0x4f, 0xc9, 0xb8, 0x1e, 0xb1, 0x20, 0xf0, 0x5a, 0xd3, 0x99, - 0x28, 0x83, 0xa0, 0x1c, 0x93, 0x61, 0xde, 0xe4, 0xd6, 0xeb, 0x40, 0x17, - 0x66, 0x50, 0x12, 0xb1, 0xc1, 0xd5, 0xb7, 0xf8, 0xa5, 0x9c, 0x12, 0xc9, - 0x51, 0x17, 0xaf, 0x0a, 0xdf, 0x83, 0x5d, 0xd3, 0xca, 0xea, 0xb0, 0x25, - 0x99, 0xef, 0xa7, 0xf0, 0x66, 0x7c, 0xcf, 0x6b, 0x31, 0x90, 0x18, 0x8f, - 0x16, 0x9b, 0x75, 0x9c, 0x17, 0x7b, 0x72, 0x37, 0xb4, 0xc6, 0xe8, 0xa1, - 0xf4, 0xeb, 0x33, 0x99, 0x46, 0xf6, 0xad, 0xea, 0xed, 0x34, 0xeb, 0x0f, - 0xc4, 0xad, 0xdc, 0x64, 0x79, 0xcf, 0xe6, 0x24, 0xae, 0xb7, 0x1f, 0x39, - 0xca, 0x4b, 0xe2, 0x00, 0xf7, 0x9f, 0x1b, 0x76, 0x71, 0xd0, 0x7f, 0xa9, - 0x6a, 0xbd, 0xa7, 0xaf, 0xb4, 0x55, 0x7f, 0x2e, 0x70, 0xf5, 0xf2, 0x87, - 0xad, 0xd0, 0x62, 0x0d, 0x84, 0xd5, 0x4f, 0x8f, 0xb4, 0xfd, 0x0a, 0x70, - 0x67, 0x77, 0xa0, 0x64, 0x18, 0x4d, 0xc3, 0x84, 0x48, 0x99, 0xaa, 0x1f, - 0x34, 0xb1, 0x72, 0xb6, 0x48, 0xc2, 0x8e, 0xc8, 0xb6, 0x36, 0x38, 0xdf, - 0x60, 0x4c, 0x85, 0xd0, 0xfd, 0x4c, 0xdb, 0xed, 0x9a, 0xcf, 0x31, 0x66, - 0xfd, 0x5a, 0x62, 0x06, 0x19, 0x7d, 0xde, 0xc9, 0x37, 0x6e, 0xf4, 0x89, - 0x10, 0x27, 0x63, 0xe1, 0x2b, 0x9e, 0x33, 0x26, 0xb4, 0xd4, 0xfc, 0xf2, - 0xb7, 0x78, 0x17, 0x91, 0xa2, 0x74, 0x72, 0xe0, 0x67, 0x0d, 0xac, 0xc4, - 0x9d, 0x4b, 0x59, 0xc2, 0xc1, 0x9f, 0x81, 0xe4, 0x85, 0x66, 0xbb, 0x5d, - 0x83, 0xa0, 0x0c, 0xa3, 0x70, 0xd6, 0x2f, 0xc2, 0x28, 0x9d, 0x95, 0x0c, - 0x76, 0x35, 0xa0, 0xcb, 0x56, 0xfe, 0x3e, 0x1f, 0x8e, 0xa2, 0xd7, 0xa7, - 0xdb, 0xf1, 0x70, 0x1b, 0xd1, 0x1d, 0x8c, 0x42, 0x7a, 0xfa, 0x87, 0xf7, - 0x2a, 0x3a, 0xa7, 0x0a, 0x34, 0x14, 0x6f, 0xc1, 0xd2, 0xd4, 0x40, 0x1e, - 0x89, 0xbc, 0x2a, 0x76, 0x2b, 0x69, 0x8c, 0xd2, 0x02, 0xb4, 0xd0, 0x7f, - 0x44, 0x47, 0xd6, 0x1f, 0x08, 0x1f, 0x94, 0x06, 0x76, 0x43, 0xe3, 0x47, - 0x96, 0x78, 0x9e, 0xbd, 0x6b, 0x1d, 0x6e, 0x88, 0x83, 0xc8, 0x01, 0xb3, - 0x92, 0x7b, 0x95, 0x6c, 0x5e, 0x80, 0x74, 0x84, 0xe3, 0x85, 0xd7, 0x74, - 0x47, 0x6b, 0xd0, 0xf3, 0xe9, 0x5a, 0xd0, 0x7e, 0xaa, 0x3d, 0x6a, 0x5b, - 0xcc, 0x03, 0xfe, 0x9d, 0x1b, 0xfc, 0xc2, 0x2e, 0x7e, 0xe2, 0x2f, 0x9e, - 0xba, 0x8b, 0xdb, 0xe7, 0x5d, 0xc2, 0x40, 0xa6, 0xf3, 0xbb, 0x0b, 0xac, - 0xf7, 0x2b, 0xe6, 0x9b, 0x18, 0x97, 0x17, 0x8f, 0xbc, 0xf4, 0x6f, 0x75, - 0x8a, 0xed, 0x47, 0x64, 0x38, 0x47, 0xb0, 0x13, 0xaf, 0x70, 0x8d, 0xc6, - 0x2d, 0xba, 0x8d, 0x16, 0xa1, 0xf2, 0x0f, 0x17, 0x3a, 0x5f, 0xfa, 0x66, - 0x6d, 0x5d, 0xb8, 0x64, 0xb7, 0x80, 0x15, 0x42, 0x7d, 0x16, 0x6c, 0x22, - 0xe3, 0x25, 0xa5, 0x25, 0x0a, 0xcf, 0x25, 0x73, 0xad, 0x39, 0xc6, 0xe1, - 0x34, 0x3d, 0x2e, 0x51, 0x11, 0x2f, 0x33, 0x15, 0x11, 0xf1, 0xeb, 0xce, - 0xfb, 0x58, 0x6a, 0xe3, 0xc1, 0x09, 0x93, 0xab, 0x37, 0xa7, 0xeb, 0x3b, - 0xeb, 0x46, 0x8a, 0xbf, 0x53, 0xe4, 0x45, 0x23, 0x76, 0x58, 0xd1, 0x10, - 0xe0, 0xd2, 0x3b, 0xe0, 0x1d, 0x71, 0x61, 0x01, 0x67, 0x11, 0x7d, 0xab, - 0x43, 0x6a, 0x3f, 0xf6, 0xcf, 0x5f, 0x12, 0x0c, 0x2b, 0x70, 0x50, 0x03, - 0x9f, 0xcc, 0x76, 0xee, 0x8c, 0xfe, 0xea, 0xac, 0x5d, 0xce, 0xff, 0x28, - 0xab, 0xbf, 0x6f, 0xaf, 0x97, 0x92, 0xad, 0x3e, 0x4a, 0x0f, 0x24, 0x92, - 0xbe, 0x53, 0xfa, 0x26, 0xbf, 0x0b, 0x62, 0xb7, 0x5e, 0x68, 0x62, 0xe2, - 0x79, 0x33, 0x01, 0x89, 0xca, 0xbd, 0xdc, 0x18, 0xe0, 0xd7, 0x14, 0xa0, - 0xf5, 0x2b, 0x79, 0xee, 0x0a, 0x44, 0xe5, 0x89, 0xd7, 0xff, 0xae, 0xfa, - 0x30, 0xa2, 0xd8, 0x67, 0x0f, 0xcb, 0x28, 0xc9, 0x13, 0x97, 0xf5, 0xc6, - 0xc0, 0x9e, 0x10, 0xa6, 0x3c, 0x8e, 0x09, 0x93, 0x38, 0xa7, 0x2b, 0xfe, - 0xdf, 0xac, 0xc6, 0xbb, 0xc2, 0x63, 0x29, 0x77, 0x8d, 0x2c, 0xb0, 0x03, - 0x14, 0x22, 0x9e, 0xb2, 0xd6, 0x2c, 0xd6, 0x03, 0xb7, 0x67, 0x77, 0x13, - 0x14, 0x36, 0x6d, 0xc3, 0x09, 0x37, 0xa5, 0xcf, 0xb1, 0x28, 0x06, 0x01, - 0x27, 0x3a, 0xff, 0xb0, 0x27, 0xbb, 0x9d, 0x8d, 0xa9, 0xdf, 0xa0, 0x78, - 0x63, 0x39, 0xa6, 0x8f, 0x9e, 0x34, 0xc0, 0x1f, 0x5a, 0xf7, 0x53, 0x18, - 0x94, 0x8b, 0x07, 0x7a, 0x55, 0xc5, 0x80, 0x69, 0xf4, 0x2a, 0x1c, 0x5a, - 0xb2, 0x5e, 0x2d, 0xa3, 0x69, 0x7b, 0x21, 0xa4, 0xe3, 0x79, 0xcd, 0x1e, - 0x71, 0x2e, 0xf5, 0xec, 0x0d, 0x03, 0x54, 0x8d, 0xde, 0x4b, 0x2c, 0x89, - 0xf8, 0x26, 0x90, 0x26, 0xc5, 0x16, 0x82, 0xd4, 0xb9, 0x71, 0x64, 0x26, - 0x35, 0x33, 0x5f, 0x81, 0xf7, 0xa6, 0xd3, 0xa7, 0xb6, 0x27, 0xa4, 0x1b, - 0xae, 0xf8, 0xa0, 0xd5, 0x33, 0xa9, 0x4a, 0x49, 0x82, 0x1d, 0x24, 0xd3, - 0x22, 0xdd, 0xac, 0x96, 0x5e, 0x15, 0x67, 0x77, 0xc1, 0x04, 0x8d, 0xd0, - 0xb6, 0xa0, 0x92, 0xea, 0xd5, 0xea, 0x0f, 0xc4, 0x8c, 0x7f, 0xf0, 0x4d, - 0x38, 0x15, 0x35, 0x6c, 0xfd, 0xeb, 0xfc, 0x16, 0x13, 0x2e, 0x73, 0x36, - 0xd6, 0x5b, 0x5e, 0x20, 0xe8, 0xfa, 0x80, 0xd1, 0x76, 0xb1, 0xc6, 0xa2, - 0xa5, 0x13, 0xcd, 0x6a, 0x65, 0x91, 0x8f, 0xd2, 0x66, 0x35, 0xd4, 0x42, - 0x28, 0xb7, 0xbd, 0xcd, 0x3d, 0x7e, 0x79, 0xf1, 0xc2, 0x91, 0xec, 0xdf, - 0x1f, 0x76, 0x4d, 0xbd, 0xb5, 0x55, 0x7b, 0xb6, 0xdc, 0x54, 0x9f, 0x5b, - 0x24, 0x0b, 0xe5, 0x86, 0xc8, 0x79, 0x9e, 0xdd, 0x09, 0x79, 0x30, 0x6c, - 0x01, 0x9e, 0xb7, 0x2b, 0x81, 0x0a, 0x8d, 0xe9, 0x40, 0xbb, 0x57, 0x17, - 0x2a, 0x89, 0xe5, 0x65, 0x11, 0x64, 0xb7, 0xfc, 0x10, 0x59, 0x4f, 0x52, - 0x06, 0xb1, 0x35, 0xc7, 0xf0, 0x0f, 0x65, 0xf6, 0xff, 0x88, 0xc1, 0x88, - 0x70, 0x61, 0x8b, 0x4e, 0xa6, 0xba, 0x1e, 0x7a, 0x21, 0x95, 0x3e, 0x88, - 0x6e, 0x37, 0x14, 0x67, 0x95, 0x76, 0xcd, 0x43, 0xd4, 0xd3, 0xa2, 0xd8, - 0x0e, 0x4b, 0x3d, 0x0c, 0x92, 0x59, 0x17, 0xdb, 0x03, 0x6c, 0xee, 0xf4, - 0xa1, 0xdd, 0xda, 0xb1, 0xbc, 0xc8, 0xd5, 0xb8, 0xe5, 0x8f, 0x5b, 0x2e, - 0x88, 0xc3, 0x36, 0x53, 0x9e, 0xe7, 0x15, 0x8c, 0x47, 0x22, 0x6e, 0x64, - 0x9e, 0x5b, 0x2e, 0x05, 0x9d, 0x31, 0x68, 0x02, 0x41, 0xde, 0xc9, 0x08, - 0x51, 0xc7, 0xf9, 0x59, 0x6b, 0xf0, 0x84, 0x3e, 0xd1, 0x52, 0x77, 0xf6, - 0xd2, 0x77, 0xaf, 0xa8, 0x2d, 0x59, 0x1c, 0x82, 0x3d, 0x51, 0xce, 0xbe, - 0xd9, 0xba, 0xb3, 0x57, 0x07, 0x91, 0x1b, 0x9c, 0x4d, 0xfd, 0x99, 0x51, - 0xae, 0xb5, 0x0b, 0x5f, 0x26, 0x68, 0xfd, 0x00, 0x3f, 0x1d, 0x1c, 0xb3, - 0x11, 0x77, 0x31, 0x48, 0x6a, 0x7d, 0x70, 0x51, 0xef, 0x31, 0xac, 0x34, - 0x50, 0x62, 0x4c, 0xf7, 0x4e, 0xaf, 0xb7, 0xa1, 0x31, 0x5b, 0x3c, 0x9a, - 0x89, 0x5c, 0xa0, 0x77, 0xbb, 0xc1, 0xc8, 0x72, 0x24, 0x68, 0xd2, 0xb5, - 0x1e, 0x96, 0xbc, 0x8b, 0x82, 0x13, 0x82, 0x4b, 0xf2, 0x5b, 0xba, 0x40, - 0x12, 0x0d, 0x45, 0x9c, 0xbc, 0x14, 0xf0, 0x01, 0xfd, 0x89, 0xf6, 0x04, - 0xdd, 0x89, 0xc6, 0x0d, 0x11, 0x38, 0xdc, 0xda, 0xd5, 0xcd, 0xa4, 0x75, - 0x3c, 0xd6, 0x64, 0x75, 0x89, 0x69, 0xb6, 0x02, 0xc7, 0x7f, 0x8f, 0x83, - 0x6d, 0xdb, 0xd8, 0xa6, 0x81, 0xfe, 0xbf, 0x00, 0xa4, 0xbd, 0xad, 0x83, - 0x90, 0x73, 0x33, 0x22, 0x45, 0x19, 0x32, 0x82, 0x7c, 0x6a, 0xdd, 0x37, - 0x23, 0x5a, 0x74, 0xd6, 0xac, 0xca, 0xd2, 0x47, 0xe0, 0x55, 0x8c, 0xd9, - 0x36, 0x74, 0x13, 0x97, 0x6c, 0x4c, 0xb2, 0x5d, 0xd2, 0x61, 0xae, 0x99, - 0xd8, 0x00, 0xd6, 0x43, 0x64, 0x20, 0xba, 0xab, 0x6b, 0xf1, 0x98, 0xb3, - 0x2c, 0xaf, 0x8f, 0x26, 0xe2, 0x46, 0x34, 0x26, 0x70, 0xd9, 0x45, 0x48, - 0x25, 0x1a, 0x62, 0x89, 0xec, 0x7b, 0x8b, 0x96, 0x16, 0xad, 0x15, 0xc2, - 0x92, 0x6f, 0x5e, 0x30, 0x78, 0x32, 0x9c, 0x67, 0x79, 0xeb, 0x7e, 0x53, - 0x31, 0x91, 0xf6, 0x62, 0x41, 0x13, 0x3c, 0x68, 0x12, 0xb5, 0xe8, 0xfa, - 0xb8, 0xdb, 0x0a, 0x51, 0xd5, 0x9a, 0xe8, 0x19, 0x02, 0x8e, 0x05, 0x9c, - 0x58, 0x1c, 0x06, 0x93, 0x66, 0x86, 0xa8, 0xd9, 0x80, 0xc1, 0x88, 0x37, - 0x48, 0xcc, 0x79, 0xfb, 0xbb, 0x6f, 0xa5, 0x65, 0x26, 0x76, 0x27, 0xdc, - 0xa5, 0xca, 0x0c, 0x6d, 0x2b, 0x7b, 0xc6, 0x23, 0xaf, 0x7f, 0xcc, 0x7a, - 0x49, 0xb6, 0xaf, 0x3a, 0x73, 0x3d, 0x0f, 0x9d, 0x96, 0x8b, 0xc1, 0x55, - 0x48, 0x13, 0x3b, 0x4d, 0x9b, 0x4b, 0x91, 0x99, 0x7f, 0x1c, 0xe7, 0xe2, - 0x83, 0x02, 0x22, 0x45, 0x3c, 0xbf, 0xc3, 0x27, 0x99, 0x59, 0x95, 0x76, - 0x2a, 0x19, 0x8f, 0x98, 0xb7, 0xc3, 0x40, 0x78, 0x27, 0xb6, 0x24, 0xcf, - 0x40, 0x34, 0xb0, 0x2e, 0x5e, 0xf0, 0xf4, 0xd2, 0xe9, 0xbc, 0xd4, 0x68, - 0x76, 0x6c, 0xa2, 0xeb, 0xf9, 0xd1, 0x5b, 0xf9, 0x52, 0x4e, 0xc3, 0x10, - 0xb8, 0xf8, 0x2b, 0x61, 0x44, 0x33, 0xcc, 0xa8, 0xee, 0x9f, 0x46, 0xe5, - 0x5c, 0xd4, 0x99, 0x3a, 0x6b, 0x30, 0xb8, 0x8a, 0xf1, 0x7b, 0x9c, 0x17, - 0x7e, 0x0b, 0x77, 0x33, 0xf6, 0xd5, 0xc5, 0x51, 0x75, 0x94, 0xad, 0xdb, - 0x77, 0x4b, 0x8d, 0xdb, 0x17, 0x11, 0xf3, 0xcf, 0xef, 0x8b, 0xaf, 0x12, - 0xb3, 0x32, 0x11, 0x4f, 0x7a, 0xcd, 0x5e, 0xff, 0xe2, 0x8e, 0x8a, 0x38, - 0x4d, 0xa9, 0xac, 0x19, 0xd8, 0xcf, 0x6e, 0x27, 0x93, 0xd8, 0x4d, 0x95, - 0x8c, 0xae, 0xd5, 0x43, 0x2b, 0xfa, 0xf8, 0xef, 0xad, 0xfa, 0x8e, 0x28, - 0xd1, 0x50, 0xd2, 0xf1, 0x4f, 0x4e, 0x73, 0xe5, 0xbd, 0x23, 0xd2, 0x7e, - 0x2b, 0xdb, 0xf3, 0x64, 0x16, 0xb2, 0x25, 0x56, 0x92, 0x92, 0x14, 0x64, - 0x5c, 0xb6, 0x83, 0x15, 0xc3, 0xc7, 0x4b, 0x21, 0x56, 0xa8, 0xb9, 0x9d, - 0x24, 0x7a, 0x03, 0x55, 0x0f, 0x53, 0xd6, 0xa8, 0x12, 0x73, 0x44, 0x76, - 0x4b, 0xc2, 0x0f, 0x7a, 0xfe, 0xfb, 0xcb, 0x5d, 0x23, 0xc0, 0x45, 0xad, - 0xa0, 0xab, 0x1b, 0xeb, 0x06, 0x31, 0x11, 0x9e, 0x5c, 0xcf, 0x0b, 0xd3, - 0x56, 0xe9, 0xb3, 0x9d, 0x9a, 0x85, 0x7e, 0x6b, 0xab, 0xb3, 0xec, 0xe5, - 0x18, 0xb8, 0x63, 0x3d, 0xf1, 0xe3, 0xc2, 0xc9, 0x60, 0xa4, 0x1e, 0x6a, - 0xea, 0x4c, 0xd4, 0xa1, 0xe5, 0x80, 0xbd, 0x11, 0xab, 0x13, 0x71, 0xc7, - 0x53, 0xee, 0x77, 0x61, 0xae, 0xca, 0x01, 0x9d, 0x50, 0x32, 0x51, 0xd8, - 0xcf, 0x35, 0x81, 0xdf, 0x6a, 0x42, 0x5d, 0x3f, 0xc7, 0x3f, 0x58, 0x5e, - 0x77, 0x98, 0xf3, 0xf6, 0x83, 0x59, 0x34, 0x46, 0x28, 0xdc, 0xe1, 0xde, - 0x7b, 0xf7, 0xd3, 0x2f, 0x69, 0x24, 0x67, 0x0b, 0x41, 0x29, 0x6b, 0x99, - 0xaa, 0x64, 0x59, 0x22, 0x30, 0x8b, 0x68, 0x6e, 0x37, 0xd5, 0x1c, 0x4b, - 0xd2, 0xd7, 0x85, 0x41, 0x81, 0x32, 0x20, 0xa1, 0x3d, 0x91, 0xd7, 0x25, - 0xdd, 0x1d, 0xd2, 0x89, 0xbe, 0x39, 0x68, 0xc0, 0x96, 0x70, 0x13, 0xba, - 0x70, 0xa1, 0x74, 0x6d, 0x4e, 0x45, 0x48, 0x85, 0xcc, 0x0d, 0xeb, 0x28, - 0x8b, 0xcb, 0xff, 0xb0, 0x6c, 0xac, 0x98, 0xd8, 0x11, 0x7e, 0xec, 0xf3, - 0xaa, 0x18, 0x12, 0x58, 0x52, 0x1a, 0xe3, 0x37, 0xe8, 0x3b, 0x16, 0xf8, - 0x40, 0xc0, 0xe4, 0x2b, 0x2d, 0x81, 0xfc, 0x16, 0xf8, 0x7c, 0xb9, 0x46, - 0xb7, 0x72, 0x13, 0x31, 0x00, 0xec, 0x90, 0x14, 0xa8, 0x10, 0xe6, 0xf5, - 0xb2, 0xda, 0x34, 0xcd, 0xfe, 0x0a, 0xc4, 0xe6, 0x51, 0x78, 0x85, 0xd5, - 0x8c, 0xf3, 0xe8, 0x53, 0x5d, 0x0e, 0x0c, 0xa9, 0x04, 0x48, 0xf4, 0x4b, - 0x7b, 0xcb, 0x14, 0x8e, 0xdc, 0x1d, 0x32, 0x40, 0xc8, 0x9b, 0xd3, 0x9b, - 0xb3, 0xc9, 0x00, 0x8f, 0xa9, 0xb3, 0xa3, 0x2b, 0x22, 0x27, 0x35, 0x41, - 0x80, 0x54, 0x8d, 0xea, 0xf3, 0x34, 0x8e, 0xbb, 0x68, 0x70, 0xba, 0x20, - 0x4e, 0x98, 0x72, 0xa3, 0x53, 0x8a, 0x14, 0x2a, 0x95, 0x0e, 0x2d, 0xa0, - 0x94, 0x9a, 0xf3, 0x60, 0xac, 0xcb, 0xc1, 0x4e, 0xa8, 0xa5, 0xba, 0x22, - 0x2c, 0xb0, 0x95, 0x58, 0x77, 0x4c, 0x6b, 0x44, 0xd6, 0xbf, 0x6f, 0x64, - 0x2a, 0xd2, 0xa9, 0x3b, 0x7a, 0xc3, 0x14, 0x5c, 0xc5, 0x0e, 0x16, 0xce, - 0x0c, 0x10, 0xbb, 0x57, 0x3b, 0xa0, 0x61, 0x72, 0x7c, 0xa2, 0xe5, 0x7c, - 0x57, 0xf2, 0x38, 0xee, 0x72, 0x71, 0x44, 0x3f, 0x3a, 0xd5, 0x49, 0xa4, - 0x1c, 0xf1, 0xc6, 0x10, 0x3d, 0xa7, 0x7b, 0x89, 0x1f, 0xf2, 0xe5, 0xf5, - 0x2d, 0xa1, 0x51, 0xfa, 0xc8, 0x4f, 0x81, 0x67, 0xb4, 0x77, 0xd5, 0x27, - 0x74, 0xca, 0x8e, 0xb3, 0x8a, 0x85, 0xe2, 0x0a, 0x72, 0x33, 0xd0, 0xbc, - 0xf7, 0x34, 0xba, 0x8c, 0x54, 0x5f, 0x11, 0xea, 0x55, 0x9a, 0x50, 0x05, - 0x9b, 0xcb, 0x8c, 0x1e, 0x76, 0x67, 0x97, 0x36, 0xb2, 0x05, 0xb4, 0x7e, - 0xd0, 0x50, 0x10, 0x45, 0xf3, 0xf2, 0xba, 0x10, 0xe9, 0xdb, 0xd2, 0x66, - 0xfd, 0x6b, 0x0a, 0xc4, 0x46, 0xdf, 0xe7, 0xc9, 0xa8, 0x1b, 0xfe, 0x6d, - 0xab, 0x09, 0x41, 0x05, 0xcf, 0x24, 0x3b, 0xe8, 0x1a, 0x8e, 0x6b, 0xc7, - 0xb9, 0xa7, 0xbe, 0x97, 0xab, 0x83, 0xed, 0x4c, 0x1c, 0x05, 0x0d, 0x6d, - 0x53, 0xe7, 0x51, 0xf2, 0xb7, 0x42, 0x0d, 0x9d, 0x13, 0xcb, 0xf3, 0x3e, - 0xfb, 0x42, 0x3e, 0x60, 0x6b, 0xfd, 0xe7, 0x6b, 0x81, 0xf7, 0xa7, 0x38, - 0xae, 0xdd, 0x82, 0xe7, 0x3e, 0x0e, 0x33, 0x77, 0xc1, 0xc9, 0x9c, 0x46, - 0x0e, 0xc3, 0x66, 0xcb, 0x68, 0x09, 0x2e, 0x9e, 0x4e, 0x91, 0xd5, 0x0b, - 0xba, 0x90, 0x40, 0xa6, 0xf4, 0x20, 0x8c, 0x07, 0x30, 0x16, 0x72, 0x8c, - 0xea, 0x3a, 0x7f, 0x5d, 0xa2, 0xbc, 0xdd, 0xb6, 0x24, 0x20, 0x9f, 0x97, - 0x45, 0x1d, 0x85, 0x30, 0xb2, 0x83, 0x6c, 0xc3, 0x75, 0xa6, 0x3d, 0x47, - 0x8e, 0x55, 0x59, 0x96, 0x53, 0x0f, 0xea, 0x57, 0x1a, 0xa3, 0x77, 0x7f, - 0x9d, 0xcb, 0x63, 0x1c, 0x51, 0x64, 0xcf, 0x52, 0x8a, 0xee, 0x3e, 0xcd, - 0x6c, 0x62, 0xb2, 0xed, 0x2a, 0x0a, 0xde, 0xef, 0x39, 0x81, 0x92, 0x78, - 0x7f, 0x45, 0xdb, 0x97, 0x28, 0xdc, 0x9d, 0x10, 0x6c, 0xb0, 0xce, 0x86, - 0x25, 0x0b, 0x01, 0x58, 0xac, 0xc7, 0x13, 0x31, 0xfd, 0x3a, 0x6a, 0xab, - 0x4d, 0x16, 0xa1, 0x0e, 0xa5, 0x12, 0x32, 0xce, 0xe8, 0x16, 0x30, 0x3f, - 0x1d, 0xf7, 0xcf, 0x75, 0x30, 0x84, 0x36, 0xce, 0x44, 0xdb, 0x11, 0x41, - 0x31, 0xa0, 0x1d, 0xa1, 0xb3, 0x48, 0xc9, 0x4e, 0x86, 0x75, 0xa1, 0x18, - 0x1e, 0x14, 0xa2, 0x7b, 0xaf, 0xe1, 0x86, 0x83, 0xe5, 0x39, 0x63, 0xd6, - 0xda, 0x3c, 0x5c, 0x30, 0xb5, 0x01, 0x22, 0x6f, 0xc0, 0xb0, 0x91, 0x8a, - 0x11, 0x96, 0x83, 0x03, 0xf3, 0x07, 0x78, 0xa6, 0x8f, 0x66, 0x11, 0x7a, - 0x4b, 0x1f, 0x49, 0xca, 0x12, 0x1f, 0x69, 0x1c, 0x17, 0xf9, 0x84, 0x76, - 0xb2, 0x75, 0x72, 0x28, 0x57, 0x97, 0xfa, 0x0b, 0xc7, 0x43, 0x2c, 0x8b, - 0x71, 0x17, 0xf6, 0x00, 0x1b, 0xe3, 0xa3, 0x09, 0x15, 0x43, 0x4b, 0x22, - 0x56, 0xe2, 0x8e, 0x8d, 0xf2, 0x9c, 0x5b, 0x07, 0x4a, 0xd6, 0x30, 0xf4, - 0x89, 0xe6, 0x59, 0x06, 0xdd, 0x69, 0x06, 0x09, 0xe4, 0x90, 0x9f, 0xfa, - 0x27, 0xe6, 0xc2, 0x20, 0x71, 0x91, 0xfa, 0xab, 0x2e, 0x93, 0x24, 0xd2, - 0xf2, 0x22, 0x58, 0x42, 0x14, 0xa5, 0x65, 0x48, 0xde, 0x6b, 0xf1, 0x94, - 0x44, 0xb3, 0x33, 0xf8, 0x68, 0x14, 0x7d, 0xed, 0x0a, 0xc3, 0x6e, 0xf6, - 0xc2, 0xa1, 0xe9, 0x6b, 0x07, 0xb8, 0xb4, 0xb0, 0xe8, 0x02, 0x41, 0xa2, - 0x65, 0x74, 0x27, 0x1b, 0xad, 0x92, 0x41, 0xf1, 0x59, 0x66, 0xdc, 0xd1, - 0x6f, 0x7d, 0xe9, 0xa8, 0x29, 0x7d, 0x04, 0x61, 0x70, 0x64, 0xce, 0x12, - 0x53, 0x92, 0xab, 0xd7, 0xe1, 0x78, 0x1d, 0x3b, 0xd2, 0xa7, 0x53, 0xa4, - 0x1d, 0x51, 0xee, 0x8a, 0x98, 0x2d, 0x47, 0x7b, 0x0d, 0x7c, 0x34, 0x1e, - 0x46, 0x95, 0xaf, 0x60, 0x60, 0x28, 0x27, 0x02, 0xb7, 0x7b, 0x6c, 0x55, - 0xeb, 0x47, 0x37, 0xff, 0xad, 0xba, 0x08, 0xea, 0xb8, 0xbc, 0x9f, 0xde, - 0xa8, 0x56, 0x32, 0xeb, 0x4d, 0x2c, 0x05, 0x53, 0x40, 0x5f, 0xaf, 0x90, - 0x17, 0x66, 0xf6, 0x2a, 0x22, 0x99, 0xc1, 0x70, 0x1f, 0x9d, 0xce, 0x7c, - 0x73, 0x1d, 0x3f, 0x9f, 0x0f, 0xd5, 0x94, 0x6c, 0x0a, 0x5a, 0x12, 0x9a, - 0x7c, 0x54, 0x10, 0x10, 0x03, 0xc5, 0xd3, 0xc0, 0xd0, 0xb8, 0x60, 0xa6, - 0xb9, 0x8b, 0xef, 0x12, 0x78, 0x62, 0xa1, 0x4d, 0x52, 0x53, 0xf0, 0x03, - 0x1b, 0x85, 0xbd, 0x2b, 0x46, 0x27, 0x0e, 0x2e, 0x68, 0xe3, 0x88, 0x45, - 0xee, 0xf1, 0x07, 0x82, 0xff, 0x6e, 0x21, 0x7e, 0xd6, 0x27, 0x70, 0x44, - 0x8e, 0xab, 0xd4, 0xb6, 0x56, 0x18, 0x8c, 0x05, 0xfa, 0xc6, 0xee, 0xf7, - 0xf2, 0x3b, 0x92, 0x0e, 0x6f, 0x88, 0x3f, 0x3b, 0x64, 0x51, 0x71, 0xfa, - 0xc1, 0x7b, 0xe4, 0xcc, 0xd3, 0x71, 0x5c, 0x25, 0x39, 0x0b, 0x66, 0xe6, - 0x9f, 0x51, 0x8c, 0x8a, 0x56, 0x26, 0x11, 0xec, 0x7e, 0x3e, 0x4c, 0xa1, - 0x94, 0xae, 0x2d, 0x5c, 0x4b, 0x06, 0x19, 0xe6, 0x13, 0x18, 0x42, 0xe5, - 0x25, 0x19, 0x3c, 0x2d, 0x17, 0x91, 0xed, 0xe7, 0xc0, 0xbe, 0xdd, 0x58, - 0xa7, 0xf6, 0xba, 0x39, 0xa0, 0x55, 0x2d, 0xe6, 0x77, 0x0b, 0x83, 0x87, - 0x17, 0xa2, 0x31, 0x94, 0xe9, 0x93, 0xd9, 0x1c, 0xa4, 0x8e, 0x21, 0x3d, - 0x8e, 0x25, 0xb8, 0xff, 0xc7, 0xef, 0x8d, 0xb0, 0x7c, 0xd1, 0xe4, 0x45, - 0xd7, 0x26, 0xd4, 0x37, 0xcc, 0x14, 0x95, 0x69, 0x87, 0x25, 0x47, 0x68, - 0x5f, 0x40, 0xfc, 0xf3, 0x35, 0x9f, 0x74, 0x20, 0xe5, 0xec, 0xf9, 0x15, - 0x95, 0x12, 0xa4, 0xbd, 0x46, 0x42, 0x00, 0x73, 0x03, 0x55, 0x4d, 0x9a, - 0x70, 0x71, 0xcd, 0x8f, 0x58, 0xd1, 0x74, 0x2a, 0x11, 0xea, 0x46, 0xe9, - 0x7c, 0xa1, 0x69, 0x96, 0xc5, 0x28, 0x7d, 0x9a, 0x8e, 0x54, 0x66, 0x7a, - 0xc8, 0xa5, 0xcf, 0xf4, 0x75, 0x9b, 0x0b, 0x54, 0xf2, 0x0e, 0x37, 0x30, - 0x3f, 0x3a, 0x6e, 0xff, 0x6f, 0xb3, 0x0c, 0x14, 0x90, 0xca, 0x66, 0x38, - 0x13, 0x5f, 0x7d, 0x6f, 0xa9, 0x98, 0x73, 0xd8, 0x51, 0x37, 0xd5, 0xfe, - 0xcd, 0xc7, 0x1a, 0xe7, 0xad, 0x2f, 0x56, 0x70, 0x76, 0xb4, 0xfa, 0xc9, - 0x36, 0xdc, 0x97, 0x43, 0x72, 0x48, 0xf4, 0xfc, 0xff, 0xe4, 0x8a, 0xff, - 0x6a, 0x55, 0xbb, 0x82, 0x19, 0x56, 0x19, 0x28, 0xcf, 0x32, 0x0c, 0xdc, - 0x0a, 0x68, 0x5c, 0xc1, 0xcb, 0xba, 0xaa, 0xd1, 0x68, 0xe4, 0x7c, 0xaf, - 0x9f, 0xc2, 0x17, 0xbc, 0x00, 0x83, 0xc1, 0x98, 0x76, 0x75, 0xcc, 0x6d, - 0x23, 0xef, 0x9b, 0x78, 0xe9, 0x57, 0x79, 0xac, 0x80, 0xd9, 0x3d, 0x39, - 0x30, 0xee, 0x13, 0xb1, 0x81, 0xc3, 0x07, 0x99, 0xb0, 0xd8, 0x26, 0x97, - 0x37, 0x07, 0x3b, 0x1f, 0x70, 0x5c, 0x78, 0x87, 0xf7, 0xcb, 0x96, 0x14, - 0x07, 0xd0, 0x00, 0x2a, 0x5d, 0xe6, 0x18, 0x5d, 0xad, 0xb9, 0x43, 0x2b, - 0xe5, 0xb1, 0x89, 0xc5, 0xe2, 0xfa, 0x07, 0xad, 0x48, 0xd8, 0xf3, 0xab, - 0x7c, 0x26, 0xb5, 0xf9, 0x8f, 0xa4, 0x57, 0x25, 0x09, 0xfb, 0x0c, 0x0a, - 0x79, 0x2e, 0x6d, 0xd0, 0x1e, 0x0c, 0x42, 0x97, 0xdf, 0xf7, 0x59, 0xb8, - 0xf6, 0x8d, 0xec, 0x5a, 0x89, 0xc5, 0xe8, 0x11, 0x93, 0x64, 0x42, 0xae, - 0x91, 0x9e, 0x30, 0x34, 0xc0, 0xbf, 0x50, 0x62, 0xdd, 0x92, 0xd8, 0x2c, - 0x95, 0x6d, 0x93, 0x99, 0xec, 0x73, 0x4c, 0x47, 0xe1, 0x86, 0x51, 0x10, - 0xca, 0x46, 0x7a, 0xe2, 0x55, 0xee, 0x0f, 0xe2, 0x57, 0xe3, 0x70, 0x11, - 0x40, 0xab, 0x11, 0x63, 0xea, 0xcf, 0x27, 0x9f, 0x34, 0xfe, 0xf7, 0x67, - 0x9c, 0xc2, 0xe3, 0x82, 0x8b, 0xf5, 0x36, 0xee, 0xc2, 0x34, 0x5b, 0x72, - 0xa2, 0x8e, 0x6e, 0xfe, 0x7a, 0x32, 0x4c, 0x65, 0x86, 0xe7, 0xc7, 0x99, - 0x10, 0xd5, 0xbc, 0x3d, 0x5b, 0x43, 0x86, 0xd6, 0xbb, 0x42, 0xbc, 0x75, - 0xaf, 0xe0, 0xe1, 0x71, 0x6f, 0xf7, 0xcf, 0x27, 0x2d, 0x8a, 0x84, 0x6d, - 0xff, 0xda, 0xb4, 0xc1, 0xc6, 0x10, 0xc2, 0xe9, 0x31, 0x97, 0x31, 0x04, - 0xd2, 0x15, 0x31, 0x91, 0xa1, 0x6d, 0x4a, 0x26, 0x31, 0x06, 0xae, 0x11, - 0x29, 0x58, 0xc9, 0x01, 0x76, 0x22, 0x92, 0xa4, 0xf9, 0xec, 0x5d, 0xe2, - 0xfc, 0xa5, 0x8f, 0xe3, 0x97, 0x0f, 0xbe, 0x08, 0x20, 0xf9, 0x97, 0xf8, - 0xdb, 0x29, 0x8d, 0x71, 0x05, 0xae, 0xcd, 0x23, 0x7e, 0xca, 0x27, 0xf9, - 0x0b, 0x2b, 0x73, 0x48, 0xd5, 0x69, 0x93, 0x62, 0x87, 0x68, 0x6a, 0xaf, - 0x13, 0xe1, 0x44, 0x04, 0xbc, 0xb0, 0xa1, 0xd2, 0x36, 0xda, 0x89, 0xe1, - 0x5c, 0xc4, 0x20, 0xfb, 0x4e, 0xd5, 0x33, 0xbb, 0xf2, 0xd6, 0xed, 0xe8, - 0xea, 0x2a, 0x59, 0x4e, 0x18, 0xc6, 0xde, 0xe4, 0xad, 0x47, 0xd9, 0xe8, - 0xf8, 0xbc, 0xfd, 0xdd, 0xdd, 0xaf, 0x91, 0x82, 0xfa, 0xe1, 0x96, 0x50, - 0x71, 0x6e, 0xc4, 0xe4, 0xf0, 0x30, 0x40, 0x69, 0xa7, 0xc7, 0x69, 0xae, - 0xa7, 0x4d, 0x46, 0x4e, 0x4b, 0x5b, 0x87, 0x9e, 0x5e, 0xd5, 0x02, 0x94, - 0x2e, 0x68, 0x5d, 0x21, 0xd5, 0x88, 0x7f, 0xe0, 0xc4, 0x2e, 0xd5, 0xcc, - 0xb4, 0x1c, 0xb7, 0x2d, 0xca, 0xb8, 0x19, 0x79, 0x87, 0x47, 0x4d, 0x0c, - 0xf5, 0xbe, 0xd4, 0x11, 0x64, 0x56, 0xe5, 0xd5, 0x67, 0xd9, 0x7b, 0x3c, - 0xbb, 0x3c, 0x2d, 0x4f, 0xa4, 0x81, 0x92, 0xe7, 0x63, 0xd4, 0x80, 0xe1, - 0x19, 0x6d, 0xdb, 0xa8, 0xd1, 0xcd, 0xe3, 0xe7, 0xb2, 0x6c, 0x7c, 0xf4, - 0x9a, 0x08, 0xe2, 0x86, 0x75, 0xcf, 0x89, 0xb7, 0x12, 0xc3, 0x32, 0xa5, - 0x48, 0x75, 0xdf, 0x7c, 0x80, 0x8e, 0xcb, 0x0a, 0xa6, 0xbe, 0x7d, 0x18, - 0x2a, 0xf4, 0x56, 0xab, 0x84, 0xc2, 0xa3, 0x0e, 0x92, 0x9b, 0xfa, 0x82, - 0x97, 0xfc, 0x1c, 0xd0, 0xfb, 0x32, 0xda, 0x19, 0x61, 0x35, 0xaa, 0x2e, - 0x19, 0x36, 0x71, 0x6f, 0xeb, 0xc5, 0x8e, 0x66, 0xe0, 0xa3, 0x48, 0xac, - 0x9f, 0x81, 0x4c, 0x73, 0x60, 0x52, 0x8b, 0x14, 0x07, 0xd3, 0x25, 0xe5, - 0x31, 0x71, 0x97, 0xbd, 0x0c, 0xc5, 0x91, 0x13, 0x0c, 0xad, 0xe0, 0x7e, - 0xa5, 0x19, 0x87, 0xcc, 0x40, 0x31, 0x0c, 0x7f, 0xba, 0x60, 0xfd, 0x8f, - 0x7c, 0xb1, 0x9f, 0x1d, 0x82, 0xe5, 0xbe, 0x79, 0x24, 0x87, 0x85, 0xbf, - 0x96, 0x1b, 0xd4, 0xbd, 0x9e, 0x46, 0x7f, 0x52, 0x79, 0xc0, 0x50, 0x22, - 0x36, 0xf6, 0x44, 0x1b, 0x92, 0xaa, 0x18, 0x1e, 0x4b, 0x11, 0x2d, 0xa4, - 0x02, 0x02, 0x66, 0x71, 0x53, 0xdb, 0x61, 0x79, 0xdd, 0x25, 0x51, 0x4f, - 0x32, 0xd9, 0x59, 0x44, 0x28, 0xbd, 0xdc, 0x2e, 0x57, 0x6a, 0x70, 0x91, - 0xde, 0x6e, 0x19, 0x64, 0xc2, 0x33, 0x30, 0x4c, 0x0d, 0x69, 0x03, 0x9b, - 0x83, 0x35, 0x47, 0x7a, 0x43, 0xbb, 0x2f, 0x3b, 0x71, 0x3a, 0x70, 0x8f, - 0x19, 0xd9, 0xdb, 0x57, 0x66, 0x8f, 0x59, 0x66, 0x05, 0xad, 0xfe, 0xcb, - 0xe6, 0x13, 0x0d, 0x63, 0xeb, 0xd4, 0xac, 0x5a, 0xd1, 0x08, 0xab, 0x0b, - 0x2a, 0x98, 0x95, 0xe9, 0x21, 0x3c, 0x88, 0x11, 0xd9, 0xbc, 0xc4, 0xcb, - 0x4f, 0x7a, 0x4e, 0x69, 0x04, 0xef, 0x90, 0x71, 0xfa, 0xd1, 0xb4, 0x36, - 0x1c, 0xf2, 0xb6, 0x36, 0x2a, 0x0a, 0xbd, 0xb9, 0x43, 0x54, 0x0b, 0x28, - 0xc7, 0x13, 0x35, 0x65, 0x71, 0x45, 0xf2, 0xe1, 0xd7, 0x83, 0x8d, 0xd7, - 0x5b, 0xa7, 0x6f, 0xdb, 0x98, 0x31, 0x91, 0x5e, 0xcc, 0x0c, 0x47, 0xa3, - 0xdd, 0xbc, 0x62, 0x52, 0x21, 0xc7, 0x3d, 0x82, 0x65, 0xcc, 0xb6, 0xbe, - 0x11, 0x40, 0x51, 0xb1, 0x8d, 0x47, 0xfd, 0x6e, 0xc7, 0x1d, 0x45, 0x48, - 0x52, 0x44, 0x13, 0xb9, 0x9a, 0xd0, 0x52, 0x7b, 0x9c, 0xeb, 0xab, 0xab, - 0xfe, 0xc6, 0x2a, 0xbb, 0x4b, 0x75, 0x68, 0x91, 0xfa, 0x2d, 0x67, 0x09, - 0xa5, 0xe7, 0x60, 0x29, 0x1b, 0x76, 0x01, 0x47, 0x8e, 0xfb, 0xed, 0xcb, - 0x4d, 0x8b, 0xed, 0xd6, 0xaf, 0xf5, 0x7e, 0xfd, 0xf8, 0x90, 0xf3, 0xd1, - 0x15, 0xc0, 0x3d, 0x30, 0x54, 0x52, 0x65, 0x21, 0x1e, 0x64, 0x91, 0x4d, - 0x25, 0x88, 0x10, 0x5a, 0x31, 0x76, 0x78, 0x9c, 0x5d, 0xdb, 0x5b, 0x24, - 0x76, 0x4b, 0xd0, 0x30, 0x1f, 0x49, 0x1c, 0x79, 0x5f, 0xb3, 0xbb, 0xd6, - 0x11, 0x64, 0xbc, 0xeb, 0x78, 0x32, 0xff, 0x82, 0xfd, 0x19, 0xe1, 0xdc, - 0x52, 0xf8, 0xca, 0x36, 0xe3, 0xc4, 0x51, 0x0e, 0x0f, 0x9c, 0x9b, 0xbb, - 0xd1, 0x85, 0xe5, 0xfa, 0xda, 0x5b, 0xfb, 0x92, 0xd5, 0x6a, 0xa1, 0x5a, - 0xbf, 0x93, 0xe5, 0xa0, 0xd6, 0x1c, 0xf1, 0xab, 0xdd, 0x11, 0xab, 0x04, - 0xed, 0xb3, 0xa9, 0x97, 0xdd, 0x72, 0x07, 0x36, 0xc7, 0x21, 0x9c, 0x0d, - 0x6e, 0x46, 0x81, 0x84, 0x9e, 0xc2, 0x10, 0x7b, 0xf5, 0x61, 0x4d, 0x43, - 0x02, 0x3f, 0x67, 0x90, 0x9f, 0x85, 0x05, 0x6e, 0xb8, 0xf6, 0x70, 0xd6, - 0x8c, 0xbc, 0x76, 0x3e, 0x93, 0x9e, 0x46, 0x08, 0x5a, 0x43, 0x33, 0x70, - 0x6f, 0xaa, 0xdb, 0xef, 0xd0, 0xdb, 0xa8, 0xdd, 0xf9, 0x1a, 0x66, 0xd6, - 0x89, 0x6a, 0x1d, 0xbc, 0x63, 0xff, 0x27, 0x6a, 0xbc, 0x7c, 0x75, 0x45, - 0xe0, 0xf4, 0x83, 0x88, 0xe2, 0xa3, 0x9e, 0xa4, 0x9a, 0x1a, 0x1e, 0x6e, - 0x99, 0x4c, 0xdf, 0x33, 0x97, 0x64, 0xa8, 0xb6, 0xdd, 0x85, 0xff, 0x9b, - 0x3e, 0x92, 0xbd, 0xb3, 0x43, 0x8e, 0x47, 0x7c, 0x19, 0xd7, 0xf7, 0xe6, - 0xa4, 0xb3, 0x41, 0xa8, 0x4c, 0x12, 0x4e, 0xfd, 0x7b, 0xe1, 0x77, 0xa2, - 0x4b, 0x6b, 0x85, 0x88, 0x57, 0x2f, 0xa4, 0x24, 0x3a, 0x7d, 0x54, 0xb2, - 0x76, 0xfa, 0x8e, 0x6e, 0xf4, 0x04, 0xf3, 0xc2, 0x54, 0x71, 0x47, 0x9a, - 0x88, 0xd0, 0xd1, 0x37, 0x1e, 0xa3, 0x4f, 0xf0, 0x25, 0x1e, 0x10, 0xa9, - 0xae, 0xa6, 0x06, 0x3d, 0xfe, 0x61, 0xf7, 0x7c, 0x99, 0xe4, 0xcd, 0x26, - 0x8e, 0x0f, 0xf8, 0x04, 0x21, 0x68, 0x13, 0x7b, 0x43, 0x6d, 0x58, 0x02, - 0x98, 0x4b, 0x06, 0x34, 0x39, 0x92, 0xbc, 0x80, 0xb0, 0xb0, 0xa7, 0x60, - 0x2d, 0x8d, 0x60, 0xa6, 0xeb, 0x58, 0x55, 0x00, 0xc7, 0x7a, 0x21, 0xa1, - 0x53, 0xd0, 0x32, 0xfb, 0xec, 0xb6, 0x29, 0xc5, 0xa5, 0xaa, 0xbb, 0xac, - 0xbc, 0x67, 0x26, 0x2a, 0x7a, 0x1a, 0xc4, 0x09, 0x33, 0xd1, 0xb3, 0xcb, - 0x54, 0xf4, 0x87, 0x60, 0x64, 0xa8, 0x24, 0x08, 0x6f, 0x44, 0x00, 0xff, - 0x04, 0x46, 0x66, 0x93, 0xe8, 0x27, 0x4a, 0x43, 0xf5, 0xc6, 0xbc, 0xc2, - 0x76, 0x0e, 0x31, 0x8f, 0x25, 0x81, 0xc4, 0xd3, 0x70, 0x9c, 0xec, 0x0b, - 0xc8, 0xde, 0x28, 0x94, 0x53, 0x95, 0xda, 0x32, 0x31, 0xb0, 0xbd, 0x04, - 0xc7, 0xd3, 0xc7, 0x22, 0xdb, 0x4c, 0x90, 0x01, 0x9e, 0x14, 0x64, 0x50, - 0xaa, 0xdd, 0x04, 0x12, 0x0d, 0x55, 0xa0, 0x48, 0x94, 0x1e, 0x79, 0xbb, - 0x28, 0x77, 0xf4, 0x66, 0xbd, 0x0b, 0x7c, 0x86, 0xc8, 0x29, 0x99, 0x61, - 0xa0, 0xc5, 0xcc, 0x83, 0x04, 0x6b, 0x43, 0x88, 0x4f, 0xeb, 0x5b, 0x23, - 0xb1, 0x66, 0x54, 0x85, 0xc9, 0x28, 0x88, 0xad, 0x81, 0xba, 0x7a, 0xfd, - 0x7b, 0x38, 0x81, 0x7c, 0x2c, 0xae, 0x47, 0x8a, 0x2d, 0x7a, 0x43, 0xaf, - 0x17, 0xae, 0xf5, 0x9b, 0x79, 0x64, 0x66, 0x65, 0xeb, 0x17, 0x46, 0x94, - 0xb8, 0x64, 0x4d, 0x8f, 0x48, 0x32, 0x4a, 0xed, 0xa9, 0x7c, 0x80, 0xeb, - 0x63, 0x2e, 0xb3, 0x7a, 0xc3, 0x53, 0x24, 0x20, 0xa5, 0x58, 0x2a, 0x6c, - 0x16, 0x2e, 0x2b, 0x40, 0x96, 0x5d, 0x5d, 0xe3, 0x2a, 0x24, 0x5a, 0xb7, - 0x47, 0x6e, 0x90, 0x0d, 0x66, 0xd1, 0xaa, 0xb3, 0xf0, 0xa4, 0xab, 0x07, - 0x26, 0xfb, 0x32, 0xa4, 0xbf, 0xcc, 0xca, 0x5a, 0x94, 0xb5, 0xdd, 0x01, - 0x10, 0x22, 0x13, 0x11, 0xed, 0x30, 0xd4, 0x48, 0x78, 0x03, 0x15, 0xf7, - 0x46, 0x88, 0xee, 0x4e, 0x10, 0x2f, 0x2b, 0xb9, 0xbb, 0x5c, 0xdf, 0x1b, - 0x15, 0xb7, 0x91, 0xcd, 0x04, 0x87, 0x96, 0x6a, 0x7d, 0x68, 0xc5, 0xea, - 0x5d, 0x92, 0x50, 0xc1, 0x73, 0x16, 0x44, 0xd7, 0xc9, 0xa6, 0xc2, 0x22, - 0xf3, 0xe2, 0xb5, 0x85, 0x80, 0x89, 0x49, 0x01, 0xf9, 0xa7, 0x4b, 0x68, - 0xe6, 0x00, 0xb5, 0x9c, 0x12, 0x6c, 0x3a, 0xcc, 0x8e, 0x63, 0x30, 0xde, - 0xda, 0xc9, 0x9c, 0x87, 0x9e, 0x64, 0x32, 0x63, 0x61, 0xa6, 0x88, 0x6f, - 0x4d, 0x8c, 0xe1, 0x49, 0xf7, 0x89, 0xe0, 0xdf, 0x36, 0x8d, 0x3e, 0x2e, - 0x3e, 0x0b, 0x2f, 0x08, 0xa4, 0xe0, 0xa5, 0x0f, 0xf9, 0x0a, 0xb8, 0xb9, - 0xfc, 0xc4, 0x9c, 0xe4, 0xb0, 0x90, 0xb1, 0x17, 0x5c, 0x58, 0xdb, 0x69, - 0x4c, 0xbf, 0x9b, 0x3f, 0xde, 0x41, 0x14, 0x25, 0xe9, 0x6a, 0x5f, 0xe9, - 0xb9, 0xf7, 0x12, 0x18, 0x9c, 0xf8, 0xb0, 0x83, 0x74, 0x8e, 0xcf, 0x2a, - 0x19, 0x1f, 0x8f, 0xfc, 0x6f, 0x2c, 0xa0, 0xe4, 0x96, 0x60, 0xe8, 0x3f, - 0x60, 0x7e, 0x17, 0x61, 0x0b, 0x0e, 0x18, 0x38, 0x2d, 0xce, 0x1d, 0x70, - 0x54, 0xbc, 0x65, 0x11, 0x7b, 0xd9, 0x58, 0x26, 0x6f, 0x12, 0xd6, 0x21, - 0xf1, 0x7f, 0x79, 0x39, 0x49, 0x24, 0x0d, 0x0b, 0x91, 0xd9, 0x56, 0x47, - 0xcd, 0xfd, 0xd4, 0xad, 0x37, 0xae, 0x5e, 0xa1, 0x31, 0x3a, 0xa0, 0xf8, - 0x13, 0x2e, 0xd3, 0x88, 0xd8, 0x62, 0xee, 0x98, 0x70, 0xc5, 0xaa, 0xca, - 0x05, 0x74, 0x56, 0x91, 0xc5, 0x87, 0xf2, 0x36, 0xea, 0x1b, 0x64, 0x7a, - 0xc7, 0x9d, 0x29, 0x6c, 0xd7, 0xbb, 0x3c, 0xb9, 0xf1, 0x30, 0x93, 0xa1, - 0xac, 0x51, 0x27, 0xa1, 0x2a, 0x5c, 0xca, 0x19, 0xd5, 0xc5, 0x21, 0xd3, - 0xd5, 0x10, 0x43, 0x3b, 0x75, 0x3f, 0x8a, 0x96, 0x13, 0x5c, 0x9e, 0x51, - 0x00, 0x27, 0xa2, 0x2b, 0x4d, 0x87, 0xcc, 0x65, 0x2b, 0xe0, 0x4d, 0x64, - 0x73, 0x3e, 0x0b, 0x85, 0xe1, 0x02, 0xd3, 0x4d, 0xa8, 0xc4, 0xf2, 0x29, - 0x81, 0xf0, 0x8b, 0xa8, 0x5a, 0x02, 0xbb, 0x29, 0xbf, 0x33, 0xa4, 0x1c, - 0x31, 0x3a, 0xc2, 0xa2, 0x55, 0x4a, 0x4f, 0x39, 0x90, 0x6a, 0x28, 0xba, - 0xfe, 0x96, 0x6b, 0x2d, 0x82, 0x90, 0xe5, 0x1e, 0xf5, 0x7f, 0x84, 0x32, - 0x3b, 0x44, 0x68, 0xde, 0xcf, 0xff, 0x66, 0x3f, 0x4a, 0x3f, 0x74, 0xa1, - 0x3a, 0x0f, 0x94, 0x57, 0x32, 0xf2, 0x8c, 0x8a, 0x8a, 0x39, 0xf0, 0xfc, - 0x85, 0x4f, 0x0c, 0xc9, 0x00, 0x00, 0x39, 0x7f, 0xe0, 0x2c, 0xb3, 0x7d, - 0xc2, 0xb9, 0x7f, 0xe5, 0xd4, 0x9e, 0x37, 0x3f, 0x4e, 0xff, 0x51, 0xc1, - 0x1d, 0x3d, 0xb3, 0xbf, 0xd1, 0x9e, 0x5a, 0xc4, 0x89, 0xdb, 0x94, 0x93, - 0xb0, 0x86, 0x83, 0x6d, 0x5e, 0xaf, 0x75, 0x29, 0x91, 0x41, 0x4f, 0x90, - 0x24, 0x2c, 0x2f, 0xe9, 0x47, 0x58, 0xba, 0x14, 0x9f, 0xb9, 0x91, 0x7d, - 0xc9, 0xf8, 0x85, 0xf1, 0xfa, 0x5a, 0x39, 0x5f, 0x46, 0xfc, 0xe6, 0x88, - 0xd9, 0xc9, 0x82, 0x78, 0x5f, 0x6e, 0x73, 0x0f, 0x3b, 0x33, 0x73, 0x9a, - 0xd4, 0xd6, 0xc1, 0xbc, 0x5e, 0xf2, 0x77, 0xae, 0x0b, 0x01, 0xe9, 0x7e, - 0xb5, 0x93, 0x07, 0x53, 0xce, 0x18, 0xb9, 0x40, 0x53, 0xcd, 0xa3, 0x9f, - 0x41, 0x10, 0x0d, 0x64, 0x5d, 0x20, 0xfc, 0x64, 0xe5, 0x52, 0xfd, 0xf2, - 0x50, 0xff, 0x31, 0x0e, 0x22, 0x67, 0x66, 0x9f, 0x4b, 0xac, 0x33, 0x2b, - 0x8b, 0xa9, 0xe2, 0xc2, 0x81, 0x96, 0xfb, 0xc5, 0xa8, 0xd4, 0xec, 0xd8, - 0xe4, 0x64, 0x18, 0xcc, 0xd1, 0x11, 0xac, 0x5d, 0x24, 0x70, 0xa5, 0xb9, - 0xe5, 0x74, 0xf6, 0x31, 0x59, 0x81, 0x89, 0x0b, 0x25, 0x03, 0x5c, 0x2a, - 0x8c, 0xfe, 0xd4, 0xaf, 0xbd, 0x42, 0x57, 0xb5, 0x18, 0x04, 0xfb, 0x88, - 0x9d, 0x34, 0x18, 0x77, 0x8b, 0x4a, 0xaf, 0xd4, 0x96, 0x2e, 0xe6, 0x1e, - 0x9d, 0xac, 0xd9, 0xc8, 0x3c, 0x2b, 0x9e, 0x17, 0xac, 0x13, 0x24, 0xe2, - 0xa8, 0x9e, 0x4a, 0x4d, 0xb7, 0x01, 0x92, 0x0e, 0xcf, 0x23, 0xd9, 0xb3, - 0x64, 0x30, 0x35, 0xd1, 0x21, 0x27, 0x8a, 0x7b, 0xf4, 0x92, 0x22, 0xe3, - 0x51, 0x95, 0x06, 0xda, 0x7b, 0x3c, 0xe3, 0x6f, 0x7f, 0x44, 0xca, 0x4b, - 0xf1, 0x42, 0x78, 0xc3, 0x73, 0xbc, 0xe8, 0x8b, 0x22, 0x14, 0x80, 0x84, - 0x71, 0x9d, 0x1a, 0x93, 0x53, 0x8a, 0x22, 0x5e, 0x9d, 0xc2, 0x9a, 0x3a, - 0x2a, 0x51, 0x15, 0x0c, 0x77, 0x1b, 0x02, 0x55, 0xf5, 0x12, 0x10, 0x6a, - 0x3f, 0x8c, 0xa4, 0x11, 0x0d, 0x31, 0xc1, 0xa0, 0x48, 0xeb, 0x3c, 0xf8, - 0x77, 0x39, 0x79, 0xb6, 0x0f, 0x37, 0xeb, 0x51, 0x7b, 0xe1, 0xbf, 0x1c, - 0x55, 0x97, 0x39, 0xa3, 0x8d, 0xb6, 0x1f, 0xca, 0x9d, 0x26, 0x5b, 0x61, - 0x4a, 0x88, 0x0c, 0xbf, 0x8d, 0x62, 0xf0, 0x25, 0x40, 0xef, 0xb8, 0xd7, - 0xf7, 0xb0, 0x90, 0xfd, 0x8b, 0x42, 0x0c, 0x79, 0x1e, 0x5e, 0x39, 0x15, - 0x9c, 0x4e, 0xa2, 0xda, 0x4a, 0xd3, 0xd6, 0x61, 0x23, 0xd4, 0xef, 0x1f, - 0x16, 0xcc, 0x48, 0x2c, 0x19, 0x6d, 0x81, 0xb8, 0xb5, 0xbb, 0x7f, 0x90, - 0x60, 0xa5, 0xf1, 0xea, 0x2d, 0xaf, 0xff, 0xa2, 0x11, 0xe8, 0xba, 0x2a, - 0xe2, 0x92, 0x10, 0x7a, 0x0c, 0xa4, 0xed, 0x72, 0xd5, 0x98, 0xdb, 0x31, - 0xc3, 0xcf, 0x8b, 0xde, 0x89, 0x98, 0x2f, 0x61, 0x15, 0x2f, 0x22, 0x79, - 0x59, 0xf8, 0x26, 0x5c, 0x54, 0x4e, 0xbe, 0xdb, 0x44, 0x3e, 0xe3, 0x87, - 0xbb, 0x61, 0xc8, 0x78, 0x16, 0x58, 0xe0, 0x48, 0x32, 0xe3, 0x7a, 0x50, - 0x69, 0xf8, 0x11, 0x7c, 0x28, 0xc1, 0xf1, 0x45, 0x34, 0x85, 0xf9, 0xee, - 0xb8, 0x06, 0x26, 0xe0, 0x99, 0xb8, 0xbf, 0x40, 0x8f, 0x7c, 0xe7, 0x63, - 0xb0, 0x82, 0xeb, 0xf2, 0xc2, 0x0e, 0xcf, 0x9c, 0x3b, 0x83, 0x77, 0xf5, - 0x43, 0x6b, 0x91, 0x92, 0xef, 0xca, 0x00, 0x47, 0x84, 0x7a, 0x09, 0x05, - 0xa4, 0x61, 0x08, 0xdf, 0x7e, 0xc2, 0x85, 0xc3, 0xb0, 0x3e, 0x3c, 0x40, - 0x89, 0x10, 0xc5, 0x95, 0x88, 0xe8, 0x97, 0x91, 0x1e, 0x1f, 0x5f, 0x7d, - 0x93, 0x27, 0xd7, 0x99, 0x93, 0xfd, 0x6b, 0x41, 0xf6, 0x08, 0x6c, 0xd3, - 0x6d, 0xd4, 0xe8, 0x29, 0xba, 0x18, 0x8e, 0x45, 0x9c, 0x52, 0x7c, 0xaf, - 0x7e, 0x5f, 0xb0, 0xab, 0xbd, 0xc2, 0x90, 0xe3, 0xca, 0x6d, 0x55, 0xbf, - 0x18, 0x26, 0x51, 0x04, 0x0f, 0xe5, 0x02, 0x47, 0x73, 0x06, 0x45, 0x76, - 0x73, 0xc0, 0x5f, 0xde, 0x5e, 0x52, 0x37, 0xaa, 0x19, 0xd7, 0x6f, 0x0f, - 0x19, 0x3c, 0xd1, 0xd0, 0x9a, 0x49, 0xe2, 0x9b, 0xcd, 0xba, 0x56, 0x5d, - 0x59, 0x93, 0x89, 0xab, 0xa2, 0x0a, 0x9d, 0xb0, 0x0a, 0x40, 0x39, 0x0f, - 0xee, 0x76, 0x95, 0x3a, 0xc4, 0x07, 0x8e, 0x7f, 0x26, 0x7b, 0x34, 0xf8, - 0x93, 0xa4, 0x67, 0x70, 0x4d, 0xdd, 0xbe, 0xdd, 0x64, 0x93, 0x2f, 0xa6, - 0x26, 0x63, 0x71, 0x86, 0xfc, 0x49, 0xb6, 0xab, 0xf3, 0x9c, 0x70, 0x84, - 0xc2, 0x33, 0x39, 0x11, 0xfe, 0x0a, 0x76, 0xba, 0xdb, 0x3d, 0x45, 0x0d, - 0x6a, 0x83, 0x77, 0xba, 0x23, 0x58, 0x96, 0x0c, 0xbb, 0xa4, 0x83, 0x40, - 0x6c, 0x0d, 0xb9, 0x79, 0x65, 0x9e, 0xcb, 0x5f, 0x13, 0xd7, 0x81, 0xac, - 0xb8, 0x4c, 0x1b, 0xd3, 0xfb, 0x5f, 0x76, 0x4c, 0xee, 0x35, 0x71, 0xa9, - 0x18, 0x7c, 0x73, 0x31, 0x01, 0xcf, 0x32, 0x10, 0x78, 0x06, 0xa4, 0x86, - 0xae, 0x2d, 0x10, 0x8c, 0x8e, 0x58, 0xe0, 0x5f, 0x23, 0x53, 0x10, 0x80, - 0x63, 0x85, 0x4f, 0x00, 0xf3, 0x9e, 0x59, 0x9f, 0xca, 0x62, 0x2b, 0xf8, - 0x3b, 0x82, 0xf0, 0xeb, 0x2e, 0xbe, 0x32, 0x85, 0x39, 0x88, 0x43, 0x86, - 0xb9, 0xe8, 0x95, 0xb8, 0xe6, 0x8f, 0x5e, 0xb8, 0x23, 0xf2, 0x0a, 0xf9, - 0x2a, 0xe4, 0x9b, 0x63, 0x69, 0x57, 0x37, 0x34, 0x84, 0xa2, 0xbf, 0x26, - 0xdb, 0xc6, 0x7e, 0xae, 0x45, 0x4e, 0x79, 0x63, 0xa9, 0x25, 0x02, 0x9c, - 0x70, 0x35, 0x45, 0xb4, 0x28, 0x05, 0x6f, 0x1d, 0xef, 0x14, 0xdc, 0x70, - 0x0e, 0xeb, 0x5c, 0x35, 0x2e, 0x96, 0x57, 0x40, 0xa4, 0xaf, 0xb3, 0x1e, - 0x3e, 0x9c, 0x0b, 0xee, 0x85, 0xcb, 0xa0, 0xd2, 0x02, 0xef, 0xce, 0xcf, - 0xd8, 0x33, 0x49, 0x03, 0x06, 0x9f, 0x1e, 0x2c, 0xaa, 0x69, 0xb9, 0x07, - 0xfe, 0xf5, 0xb2, 0xdb, 0xe7, 0xec, 0xea, 0x6e, 0x16, 0x36, 0xaa, 0xb6, - 0x37, 0xb9, 0x79, 0xac, 0x7d, 0x5c, 0x6d, 0x71, 0x7e, 0x1a, 0xd6, 0x11, - 0x52, 0xac, 0xda, 0x19, 0x0c, 0x3c, 0x04, 0x1f, 0x96, 0x7c, 0x94, 0x3c, - 0x11, 0x9a, 0x94, 0x38, 0x3f, 0x49, 0xc7, 0x14, 0x54, 0x76, 0xb7, 0x63, - 0xb0, 0x2c, 0xc7, 0xe3, 0x88, 0x60, 0xad, 0x81, 0xf8, 0x25, 0x27, 0x06, - 0x42, 0xff, 0x87, 0x96, 0x0f, 0x98, 0xc2, 0xc1, 0xad, 0xf1, 0xdc, 0x82, - 0x99, 0xa1, 0x34, 0x21, 0x00, 0xf0, 0x12, 0x1c, 0x07, 0xa0, 0x26, 0x25, - 0x18, 0x5f, 0x62, 0x4e, 0x70, 0x9f, 0x79, 0x33, 0x3c, 0x2d, 0x11, 0x59, - 0x71, 0x34, 0x1b, 0x6f, 0x14, 0x1f, 0xf4, 0x79, 0xe8, 0x39, 0xe6, 0x79, - 0xb3, 0x14, 0x64, 0xcd, 0x2d, 0x78, 0x3a, 0x02, 0xa6, 0x22, 0x5d, 0x5b, - 0x6a, 0x37, 0x10, 0x7d, 0x43, 0x28, 0xc7, 0x09, 0x8b, 0x9e, 0xb2, 0x84, - 0xd6, 0xc1, 0x58, 0xda, 0xea, 0x25, 0x40, 0x64, 0xf5, 0x8b, 0xa9, 0xc2, - 0xd3, 0x2d, 0x71, 0x0a, 0x40, 0x7b, 0x17, 0xcf, 0xa9, 0x37, 0x5e, 0xa2, - 0xca, 0x83, 0xbf, 0x01, 0x9f, 0xdb, 0x32, 0xf3, 0x35, 0xb9, 0xdf, 0xfc, - 0x4f, 0xaa, 0xfe, 0xcc, 0x5d, 0xf9, 0x4c, 0x39, 0xd1, 0x18, 0xf8, 0x1f, - 0x82, 0x53, 0x93, 0x6f, 0x2a, 0xcf, 0xd5, 0x01, 0xd4, 0x65, 0x7f, 0x82, - 0x2b, 0x1f, 0x7f, 0x78, 0x82, 0x62, 0x26, 0xad, 0x90, 0x2d, 0x35, 0x9c, - 0x7d, 0x0f, 0x96, 0x7c, 0x4c, 0xf5, 0xaa, 0x82, 0xd8, 0x0b, 0x1d, 0x53, - 0x72, 0x3b, 0x7b, 0x01, 0x3b, 0xaa, 0x55, 0xbe, 0x09, 0xf6, 0xf5, 0x7d, - 0xa2, 0x13, 0x14, 0x46, 0xdf, 0x68, 0xcc, 0xf5, 0x71, 0xad, 0x83, 0xbb, - 0x08, 0x1c, 0x62, 0x05, 0xff, 0xcd, 0x75, 0xfc, 0x9b, 0x34, 0x1c, 0x81, - 0xca, 0xe9, 0xcb, 0x29, 0xe1, 0x0f, 0x61, 0x2e, 0x16, 0x7a, 0xc8, 0xa6, - 0x86, 0xe8, 0xd0, 0x2b, 0x5b, 0xa6, 0x06, 0x99, 0x11, 0x31, 0xd6, 0xed, - 0x81, 0xad, 0x95, 0x76, 0x2d, 0x4c, 0x91, 0x26, 0x4d, 0x84, 0xbe, 0x05, - 0x81, 0xb3, 0xa1, 0x7a, 0x25, 0xa9, 0xd9, 0x79, 0x4e, 0x2c, 0xd5, 0xe6, - 0x9b, 0xd3, 0x45, 0x8c, 0xc5, 0xd6, 0x15, 0xe4, 0xbc, 0xce, 0x42, 0xcd, - 0xe1, 0xa6, 0xbd, 0x9c, 0xfe, 0x2f, 0xa8, 0xc4, 0x84, 0xce, 0xc0, 0xd6, - 0x54, 0x2d, 0xca, 0xd4, 0x68, 0x8d, 0x47, 0x81, 0x55, 0x04, 0x54, 0x69, - 0x29, 0x60, 0x07, 0x21, 0x46, 0x78, 0xe8, 0xe2, 0xfb, 0x9b, 0x10, 0xf2, - 0x74, 0x0b, 0xfb, 0xd9, 0x2e, 0x18, 0x27, 0xe4, 0x37, 0x7a, 0x93, 0x95, - 0x48, 0xa7, 0x5b, 0x90, 0xa4, 0x6a, 0x99, 0x28, 0x63, 0xaf, 0x85, 0x7b, - 0x58, 0x71, 0x14, 0xf7, 0x6d, 0xe4, 0x3e, 0xae, 0x17, 0x52, 0xa5, 0xd2, - 0x0e, 0x44, 0x36, 0x4a, 0x23, 0x01, 0xac, 0xbc, 0x8b, 0x84, 0x54, 0xae, - 0x66, 0x20, 0x9b, 0xa6, 0x97, 0x11, 0x28, 0x06, 0x72, 0x6c, 0x58, 0x07, - 0x29, 0xfa, 0xd7, 0x21, 0x94, 0xed, 0x86, 0x4a, 0xd4, 0x58, 0x1d, 0x05, - 0x1e, 0xbf, 0xc4, 0x78, 0x65, 0x1a, 0x2c, 0xdb, 0xe0, 0x2b, 0xa3, 0x87, - 0xc3, 0xc9, 0x09, 0x7d, 0xd6, 0x39, 0x27, 0x17, 0x86, 0x32, 0x5b, 0x27, - 0xee, 0x00, 0x56, 0xfd, 0x2c, 0x02, 0x7d, 0x42, 0x13, 0xe0, 0xc9, 0x4c, - 0x81, 0x5b, 0x90, 0x38, 0xac, 0x70, 0xb6, 0x6a, 0x97, 0x47, 0xc5, 0x6f, - 0xc7, 0x83, 0xde, 0xff, 0x57, 0x56, 0xe3, 0xc7, 0xa9, 0x32, 0x73, 0x41, - 0x68, 0x72, 0x10, 0xe8, 0x60, 0x3f, 0x24, 0x92, 0xe0, 0xea, 0x69, 0xc3, - 0x7a, 0x80, 0x3c, 0x6f, 0xe1, 0x49, 0x05, 0x93, 0xf8, 0x59, 0x50, 0xff, - 0xc1, 0x57, 0xf2, 0x8c, 0x71, 0x3f, 0xcf, 0x2b, 0x96, 0x7d, 0x5e, 0xc0, - 0x34, 0x24, 0x58, 0x78, 0x4b, 0x4f, 0x53, 0xde, 0xa9, 0x87, 0xbf, 0xa8, - 0x43, 0x10, 0x21, 0x4a, 0x01, 0x8f, 0x85, 0xf6, 0x3d, 0xad, 0xba, 0x6c, - 0x51, 0xe6, 0x25, 0x40, 0xcc, 0xaa, 0x99, 0x71, 0xf7, 0x74, 0x29, 0xe4, - 0xa6, 0xbe, 0xee, 0xef, 0xc6, 0xec, 0x12, 0x88, 0xe4, 0x6f, 0xff, 0x58, - 0xf9, 0x65, 0xa8, 0xf4, 0x8c, 0x4c, 0x2d, 0x43, 0xe8, 0x29, 0x9c, 0x41, - 0x3c, 0xaf, 0x3f, 0x38, 0xa2, 0xa5, 0x30, 0x77, 0x6c, 0xf6, 0x09, 0x81, - 0xbb, 0x0a, 0x0e, 0xdc, 0x7f, 0x21, 0x79, 0x99, 0x28, 0xde, 0x45, 0xac, - 0x76, 0x0f, 0x27, 0x7f, 0x6d, 0x56, 0x35, 0x88, 0x5c, 0xfe, 0x64, 0xbb, - 0x2d, 0xc2, 0x12, 0x66, 0xf4, 0xec, 0xa2, 0xd3, 0x9b, 0xfb, 0x53, 0xf4, - 0xaa, 0x5c, 0x56, 0x8b, 0xea, 0xe3, 0xfe, 0xe9, 0x80, 0x53, 0xc7, 0xa1, - 0x24, 0xf5, 0x4b, 0xbb, 0x04, 0x95, 0xb8, 0xa7, 0xf7, 0x79, 0x38, 0x40, - 0x2f, 0xde, 0x7e, 0xe3, 0x2b, 0xf4, 0xff, 0x03, 0x82, 0x91, 0x10, 0x35, - 0xb6, 0xd4, 0x36, 0x97, 0x9c, 0x47, 0x07, 0x5b, 0xc4, 0x85, 0xad, 0x3b, - 0x34, 0xff, 0x3e, 0xa5, 0x76, 0x86, 0x2d, 0x3f, 0x6c, 0x4d, 0xd8, 0xfb, - 0x04, 0xd7, 0x26, 0x1b, 0xcb, 0xe9, 0x62, 0xd9, 0x62, 0xbf, 0x28, 0xf9, - 0x16, 0xd4, 0x41, 0xa7, 0x06, 0x46, 0xd0, 0x03, 0x56, 0x2b, 0x00, 0x76, - 0x7d, 0xbb, 0x5e, 0x32, 0xe8, 0x37, 0x12, 0x95, 0x3e, 0x20, 0xd5, 0xcc, - 0x87, 0xc8, 0x3d, 0xaa, 0xb4, 0xd2, 0xe1, 0x51, 0x22, 0xc6, 0x1a, 0xb1, - 0x8b, 0x6d, 0xdf, 0x07, 0x72, 0xf7, 0x02, 0x6a, 0x01, 0x6b, 0x74, 0x45, - 0x20, 0x20, 0x12, 0x7c, 0x40, 0x42, 0xf6, 0xb5, 0x98, 0x2b, 0xab, 0x87, - 0x4b, 0xf8, 0x12, 0x9e, 0xa7, 0x59, 0xb2, 0x9e, 0x6a, 0x88, 0x79, 0xe3, - 0x7f, 0xcc, 0x42, 0x22, 0x64, 0x25, 0x8a, 0x98, 0x36, 0x0a, 0x4a, 0x4c, - 0x23, 0x74, 0x7d, 0xb9, 0xad, 0xaf, 0x3c, 0x80, 0xe4, 0x45, 0xa8, 0x10, - 0x29, 0x03, 0xd7, 0x16, 0xd7, 0xd6, 0x1a, 0x01, 0x2b, 0xd9, 0xed, 0x8a, - 0x9b, 0x36, 0x10, 0xa5, 0x28, 0xfd, 0xf6, 0xa0, 0xdf, 0x30, 0xae, 0x6a, - 0x0f, 0xb2, 0x93, 0x1d, 0x34, 0x7c, 0xad, 0x20, 0x1f, 0xc8, 0x17, 0x4e, - 0x40, 0x56, 0xb0, 0x52, 0xba, 0xd7, 0x8e, 0xaf, 0x5b, 0xab, 0x11, 0xbb, - 0x52, 0xb8, 0xed, 0x9a, 0xea, 0x3d, 0x1c, 0x3f, 0x9c, 0x2f, 0xef, 0x1d, - 0xea, 0x86, 0xa3, 0x96, 0x3a, 0x03, 0x28, 0x2a, 0x73, 0x8e, 0xaa, 0x09, - 0x2d, 0xa8, 0x95, 0xb0, 0x6b, 0xed, 0x38, 0x17, 0xdd, 0x11, 0x60, 0x32, - 0xbf, 0xae, 0x69, 0x3d, 0x05, 0x83, 0xef, 0xfc, 0x1b, 0xf5, 0x09, 0xac, - 0xbb, 0x5f, 0x91, 0x2b, 0x63, 0x62, 0x76, 0xa3, 0xa4, 0x0b, 0x40, 0x65, - 0xe0, 0xd5, 0xa7, 0x2f, 0x2b, 0x1f, 0x3a, 0x80, 0x1d, 0xcc, 0x7d, 0xcd, - 0xbd, 0x53, 0xd8, 0x72, 0xe6, 0x69, 0xa2, 0x58, 0xb3, 0x8a, 0xff, 0x75, - 0x2a, 0x80, 0x36, 0x1d, 0x18, 0x91, 0xb5, 0x83, 0xc3, 0x50, 0xd3, 0x76, - 0x59, 0xcb, 0x15, 0x0a, 0x7e, 0xc2, 0x52, 0xf5, 0xeb, 0xda, 0x98, 0xb3, - 0x33, 0x0a, 0x05, 0xee, 0xd7, 0x7c, 0x2a, 0xfe, 0xc6, 0xa6, 0x07, 0xc7, - 0x71, 0x10, 0x91, 0xee, 0xd4, 0x43, 0x00, 0xd3, 0x86, 0x68, 0xef, 0x40, - 0x14, 0x66, 0xc3, 0x3c, 0x9d, 0x50, 0x8f, 0x6a, 0x5a, 0x9b, 0xbe, 0xf2, - 0x92, 0x60, 0x0c, 0x11, 0xcc, 0x69, 0x08, 0x40, 0xe2, 0x97, 0xca, 0x55, - 0xaa, 0x77, 0xe1, 0xed, 0xc6, 0xb6, 0x7e, 0x30, 0x47, 0x2c, 0xd3, 0x60, - 0xf9, 0x26, 0xb0, 0xe5, 0x37, 0x96, 0x6d, 0xac, 0xc9, 0x53, 0xf6, 0x38, - 0xff, 0x39, 0x37, 0x85, 0xb0, 0xb5, 0x79, 0x7f, 0xf5, 0x91, 0x26, 0x57, - 0x00, 0x0f, 0x4f, 0xb1, 0xa0, 0xb0, 0x0f, 0xfa, 0xde, 0x3f, 0x02, 0x10, - 0xc4, 0xd3, 0xd6, 0x79, 0x7a, 0x9f, 0xc9, 0x3a, 0x7f, 0x89, 0x0b, 0x9f, - 0xe7, 0xa2, 0xb5, 0xe1, 0x26, 0x3b, 0xfe, 0x43, 0x4b, 0x77, 0xf3, 0x36, - 0xaa, 0x1d, 0x53, 0x3c, 0xd6, 0xd2, 0x0a, 0x69, 0x44, 0xd7, 0xf8, 0x52, - 0xb4, 0xef, 0xe2, 0x43, 0xe3, 0xf7, 0x9d, 0xa8, 0xd5, 0x60, 0x64, 0x2a, - 0x1b, 0x62, 0x24, 0xd7, 0x88, 0x23, 0x82, 0xe2, 0x71, 0x5d, 0x69, 0xea, - 0x50, 0x56, 0x29, 0x42, 0x2e, 0x52, 0x95, 0xe4, 0x05, 0x69, 0xea, 0xb9, - 0xad, 0xa6, 0x3b, 0x84, 0x6c, 0xba, 0x32, 0xc4, 0x0c, 0x55, 0x09, 0xfe, - 0x15, 0x71, 0x5b, 0x4a, 0x18, 0xc9, 0x1d, 0xf7, 0x33, 0x17, 0xf7, 0xa3, - 0x25, 0xcf, 0x69, 0xe0, 0x73, 0x8a, 0x9a, 0x53, 0x48, 0xae, 0x1a, 0x51, - 0x72, 0xbd, 0xae, 0x38, 0x73, 0xe1, 0xef, 0x82, 0x5b, 0x87, 0x10, 0x10, - 0x8f, 0x70, 0x0e, 0x64, 0x30, 0xc2, 0x1f, 0xef, 0x4d, 0x94, 0x52, 0xd5, - 0x6d, 0x33, 0xe5, 0xc7, 0x7e, 0xe1, 0x97, 0xc8, 0xb9, 0x9a, 0x15, 0x43, - 0x60, 0x39, 0xda, 0xd1, 0xd9, 0xa4, 0xf1, 0xfe, 0x13, 0xdd, 0x4e, 0x79, - 0x39, 0x83, 0xf7, 0x4d, 0x8e, 0x22, 0xd9, 0x74, 0xef, 0x4a, 0xc8, 0x24, - 0x6b, 0x3e, 0xcf, 0x89, 0x73, 0x61, 0x46, 0xbc, 0xf6, 0x70, 0xf2, 0xc8, - 0xb4, 0x3d, 0x1a, 0x19, 0x5d, 0x6e, 0x93, 0xc5, 0xf2, 0x58, 0xb7, 0xb8, - 0x54, 0xa8, 0xe1, 0x1a, 0x0a, 0x82, 0x79, 0x45, 0x4f, 0x0c, 0xdd, 0x01, - 0xd0, 0x24, 0xf1, 0x76, 0x16, 0x5e, 0xc5, 0xec, 0xec, 0xaa, 0x13, 0x32, - 0xb9, 0x89, 0xb3, 0x58, 0x1f, 0x16, 0x99, 0x9b, 0xfe, 0x0b, 0x92, 0x36, - 0xca, 0x92, 0x4d, 0x5d, 0x75, 0xf5, 0x68, 0xaa, 0xf3, 0xbd, 0xf4, 0x67, - 0x5d, 0xd1, 0x11, 0xa7, 0x53, 0xbf, 0x83, 0x56, 0xf9, 0x95, 0x0a, 0x6e, - 0x51, 0xf4, 0x9d, 0x23, 0x42, 0x72, 0xff, 0x75, 0xb4, 0xa5, 0x1e, 0xc8, - 0x2d, 0x7e, 0x7b, 0xbe, 0x3b, 0x5d, 0x57, 0xc1, 0xe6, 0x34, 0x7e, 0x72, - 0x39, 0xd8, 0xbc, 0x0b, 0x9f, 0x40, 0x50, 0x6b, 0x08, 0x26, 0x82, 0x4e, - 0xbc, 0x17, 0x17, 0xd3, 0x6e, 0xbb, 0x42, 0x09, 0x84, 0x62, 0xae, 0x8b, - 0x6c, 0xf1, 0x4b, 0xba, 0x7c, 0x07, 0x7c, 0x16, 0x37, 0x74, 0x5b, 0x00, - 0xe3, 0xe8, 0x3f, 0x46, 0x1e, 0xa2, 0xd9, 0x2f, 0xa1, 0x79, 0xfe, 0xc6, - 0x56, 0xf1, 0x75, 0x39, 0xe0, 0xe8, 0x87, 0x22, 0x15, 0x31, 0x87, 0xc4, - 0x27, 0x5d, 0xb9, 0xf4, 0xdb, 0xd3, 0xb6, 0xb0, 0xc1, 0x05, 0x68, 0x5f, - 0xef, 0x6b, 0x27, 0xff, 0x09, 0xc7, 0x17, 0xb4, 0x14, 0xe3, 0x6a, 0x0d, - 0x6e, 0x36, 0x02, 0x3c, 0xa4, 0x2a, 0xaf, 0xce, 0x56, 0x68, 0x81, 0x3a, - 0xe9, 0x20, 0xbc, 0xea, 0x0f, 0xd6, 0x35, 0x12, 0x32, 0x2e, 0x11, 0xee, - 0x45, 0x45, 0x7a, 0x56, 0xe8, 0xe1, 0x8b, 0x80, 0x0f, 0x8d, 0x8c, 0x78, - 0x09, 0xc3, 0xb5, 0x9c, 0x4b, 0x8c, 0x39, 0x23, 0xd7, 0x4c, 0xf9, 0x65, - 0x0e, 0x7a, 0x44, 0xc8, 0xc8, 0x37, 0x68, 0x6d, 0x02, 0x72, 0xff, 0x7a, - 0xd6, 0x58, 0x26, 0x7c, 0x07, 0x75, 0xfb, 0x19, 0xb5, 0x9b, 0xfc, 0x53, - 0xf5, 0x84, 0x64, 0x40, 0x40, 0x96, 0xa4, 0x74, 0x1b, 0xbd, 0x11, 0x5b, - 0x32, 0x69, 0x06, 0x5c, 0x06, 0xe5, 0xe4, 0x7f, 0x71, 0x73, 0x07, 0x98, - 0x8b, 0x08, 0x9a, 0x7b, 0x63, 0xb5, 0x4c, 0xd0, 0x5f, 0x23, 0x82, 0x81, - 0x8a, 0xf5, 0x8e, 0x97, 0x7c, 0x7c, 0x59, 0xee, 0x53, 0xba, 0x4d, 0x2c, - 0x14, 0xfe, 0x29, 0x04, 0x56, 0xfd, 0xfd, 0xea, 0xf0, 0x4c, 0x70, 0x3d, - 0x6a, 0x70, 0x3c, 0xa7, 0x4e, 0x8f, 0x79, 0x84, 0x69, 0x73, 0xea, 0x93, - 0x41, 0x53, 0x1a, 0xcc, 0xfa, 0x52, 0xbb, 0xd2, 0xad, 0x0b, 0x07, 0x20, - 0x79, 0x92, 0xac, 0xfd, 0x90, 0xef, 0x1f, 0x7c, 0x0e, 0xb1, 0x1a, 0x05, - 0x96, 0x1f, 0xc1, 0xa5, 0x2d, 0x67, 0x29, 0xd0, 0x75, 0xdd, 0xc6, 0xd5, - 0xc9, 0xa4, 0x10, 0x43, 0x3c, 0xa2, 0xaa, 0xc1, 0xe2, 0x78, 0x4a, 0xb3, - 0xed, 0x6d, 0x09, 0x2a, 0xa6, 0x26, 0x8f, 0xc2, 0x7c, 0xca, 0x66, 0x48, - 0x63, 0x9c, 0x29, 0xb8, 0x9e, 0xee, 0xb1, 0x0c, 0x86, 0x8c, 0xba, 0xe8, - 0xfe, 0x9a, 0x23, 0x50, 0x3e, 0xec, 0xaa, 0x78, 0x98, 0x0b, 0xc7, 0x6e, - 0x53, 0xd2, 0x1b, 0x55, 0xd6, 0x6d, 0xc9, 0x41, 0x09, 0xe5, 0x1e, 0x28, - 0xc7, 0x2b, 0x50, 0x9f, 0x81, 0x2e, 0x2b, 0xf4, 0xff, 0xb0, 0xbd, 0x3a, - 0xbf, 0x06, 0x89, 0x2d, 0xbb, 0x5e, 0x9c, 0x8c, 0xf0, 0xab, 0xcb, 0x14, - 0x8b, 0x01, 0xc2, 0x4c, 0x90, 0x05, 0xf1, 0x5b, 0xdf, 0x34, 0xbe, 0xb8, - 0x6c, 0xee, 0x94, 0x20, 0x69, 0x72, 0xcb, 0x51, 0xea, 0x60, 0x15, 0x1d, - 0x59, 0x52, 0xe5, 0x4b, 0x1c, 0xeb, 0xe7, 0x2a, 0x4b, 0xab, 0x45, 0x23, - 0x26, 0x58, 0x71, 0x7e, 0x2c, 0x8d, 0x0c, 0xe1, 0x41, 0x73, 0x41, 0x55, - 0xda, 0xf9, 0x96, 0x03, 0xca, 0x6d, 0x99, 0x21, 0x74, 0x65, 0xd9, 0xe9, - 0x91, 0xb6, 0x60, 0x4e, 0xc9, 0x53, 0x76, 0x36, 0x6b, 0xf4, 0x4c, 0x8b, - 0xe5, 0x7b, 0xd1, 0x74, 0x51, 0xfd, 0x81, 0x56, 0xec, 0x0d, 0xdb, 0x75, - 0x3d, 0xa5, 0x81, 0x8a, 0xd6, 0x50, 0x98, 0xd1, 0x4c, 0x28, 0x0d, 0x5f, - 0x69, 0xfb, 0x24, 0x4e, 0xda, 0xc0, 0x5a, 0x2b, 0x9b, 0x5b, 0x8e, 0xbc, - 0xa1, 0x81, 0x12, 0x82, 0xc6, 0x91, 0x09, 0xb5, 0x21, 0xc8, 0x3f, 0x92, - 0xc6, 0xfa, 0xfd, 0x05, 0x9f, 0xac, 0xf2, 0x98, 0x11, 0xe9, 0x80, 0x4d, - 0x6b, 0xf6, 0xa9, 0x51, 0x0c, 0xa8, 0xed, 0xd1, 0xa0, 0xb4, 0x84, 0xbe, - 0x2e, 0x4b, 0x74, 0x56, 0x66, 0xd8, 0xc2, 0xf6, 0x94, 0x6b, 0xce, 0x1d, - 0x6e, 0xe2, 0x96, 0x46, 0x3c, 0xe7, 0x9b, 0xe4, 0x25, 0xfe, 0x6b, 0xbf, - 0xe7, 0x78, 0xde, 0x65, 0xa9, 0x47, 0x06, 0x0b, 0xf3, 0x5f, 0x4e, 0x49, - 0xcd, 0xe5, 0x79, 0x6e, 0x03, 0xd8, 0x05, 0xfd, 0x83, 0x53, 0xe3, 0x30, - 0x6f, 0xca, 0xe0, 0xe3, 0xd1, 0xe4, 0xf1, 0x7b, 0x55, 0x46, 0x83, 0x02, - 0x86, 0x44, 0x35, 0xbb, 0x0b, 0xe3, 0xb8, 0xe0, 0x53, 0xe2, 0xe4, 0xd5, - 0x19, 0x0b, 0x31, 0x6b, 0xfb, 0x89, 0xa0, 0xbc, 0x78, 0x22, 0x17, 0x5e, - 0x36, 0xdb, 0xb6, 0x77, 0x57, 0xda, 0x6c, 0x07, 0xb1, 0x79, 0x45, 0x8e, - 0xe9, 0x7c, 0xd9, 0x9c, 0xac, 0x7a, 0x14, 0x0e, 0xb3, 0xaf, 0xdc, 0xd9, - 0xd2, 0x27, 0x9a, 0xd7, 0x5f, 0x3b, 0x63, 0x69, 0x22, 0xfd, 0x3f, 0xbb, - 0xbb, 0xe2, 0x66, 0x75, 0x2f, 0x6b, 0x43, 0x95, 0x10, 0xa7, 0xa1, 0x16, - 0xd2, 0x98, 0xd6, 0x52, 0x98, 0xe4, 0x23, 0x03, 0x32, 0xb2, 0xd1, 0xd2, - 0xaf, 0xd1, 0x2f, 0x24, 0xa1, 0xcf, 0xc8, 0xb3, 0xf2, 0x47, 0x25, 0xa7, - 0xf4, 0x67, 0xc5, 0x6f, 0x1a, 0x4a, 0xcd, 0x44, 0xd7, 0x58, 0x58, 0x12, - 0x2c, 0xb4, 0x78, 0x28, 0x5c, 0x8b, 0xc5, 0x04, 0xed, 0xb1, 0x1a, 0x99, - 0x72, 0xff, 0x83, 0xeb, 0x82, 0x7c, 0x97, 0x0e, 0x0c, 0x73, 0x4c, 0xbe, - 0x6f, 0xfb, 0x11, 0x14, 0x00, 0x27, 0x85, 0xbe, 0x77, 0x73, 0x63, 0x45, - 0xe6, 0xca, 0x82, 0xe2, 0x2d, 0xb4, 0x11, 0x88, 0x3d, 0xad, 0x4b, 0xd8, - 0x82, 0x2e, 0xfe, 0x2c, 0x67, 0x6a, 0x60, 0x49, 0x60, 0x46, 0xc5, 0xf5, - 0xa5, 0xee, 0x32, 0xf4, 0xfd, 0x66, 0xb7, 0xd0, 0x0e, 0x8d, 0xe6, 0x74, - 0x96, 0x1b, 0xa1, 0x7c, 0xf8, 0x9b, 0x4c, 0x16, 0x78, 0xa7, 0xf2, 0xd6, - 0x9a, 0x03, 0x57, 0x79, 0x78, 0x53, 0x52, 0xee, 0x37, 0x31, 0x9e, 0x88, - 0x73, 0xec, 0xae, 0x7a, 0x2f, 0xfc, 0x02, 0x92, 0x1b, 0x9c, 0xb1, 0xaf, - 0x91, 0xe3, 0x88, 0x83, 0xb8, 0x87, 0xbe, 0x57, 0xc2, 0x1e, 0xe1, 0x0f, - 0xf6, 0x04, 0x95, 0xe1, 0x98, 0x5c, 0x9a, 0x74, 0x5c, 0xaa, 0xf0, 0x7f, - 0x75, 0xd4, 0x0b, 0xaa, 0xee, 0x3c, 0xd1, 0xfd, 0xd4, 0x0a, 0x71, 0x27, - 0x03, 0xef, 0x21, 0x67, 0x9e, 0xa7, 0xce, 0xc5, 0xe3, 0x3c, 0x98, 0x94, - 0xf8, 0x42, 0x88, 0xc9, 0x6f, 0xc3, 0xbf, 0xae, 0x30, 0x7f, 0x21, 0xe3, - 0x35, 0x6b, 0x6f, 0x90, 0xff, 0xf5, 0x52, 0xe0, 0x5e, 0xb4, 0x6e, 0x21, - 0xca, 0xc4, 0x16, 0xad, 0x05, 0xfe, 0x23, 0x35, 0x14, 0x9d, 0xe5, 0x3b, - 0x38, 0x39, 0xde, 0xf9, 0x9a, 0xc0, 0xf6, 0xde, 0x81, 0xf5, 0x4c, 0x0c, - 0x8b, 0xbe, 0x1b, 0x86, 0x38, 0xff, 0xca, 0xa0, 0xdb, 0x23, 0x57, 0x83, - 0x18, 0x7b, 0xb7, 0xea, 0x63, 0x1d, 0x4a, 0xd2, 0xcc, 0xad, 0x1c, 0x68, - 0x6a, 0x36, 0x43, 0xa0, 0xcb, 0x02, 0x1c, 0x15, 0xcf, 0x77, 0xeb, 0x2a, - 0xb1, 0x35, 0xea, 0xee, 0xdd, 0x97, 0x6e, 0x43, 0x05, 0xae, 0xc3, 0xac, - 0x08, 0xc8, 0x3f, 0x2a, 0x29, 0xb8, 0x0a, 0x29, 0xa8, 0x40, 0xf4, 0x9d, - 0xda, 0xaa, 0xf1, 0xbf, 0x86, 0x8b, 0xa8, 0x53, 0xab, 0x25, 0xf4, 0x97, - 0x7b, 0x83, 0xea, 0xfb, 0x08, 0xe8, 0x9e, 0xfc, 0xb8, 0xf0, 0xd3, 0x31, - 0x99, 0x20, 0x9d, 0xb2, 0x5e, 0xc4, 0x41, 0x5e, 0xba, 0x68, 0x62, 0x3c, - 0xae, 0x9c, 0x88, 0xd6, 0x1d, 0xc7, 0xe3, 0x89, 0x84, 0xd1, 0x8c, 0x8b, - 0x99, 0x9d, 0xaf, 0xac, 0x4e, 0xbc, 0xe4, 0xba, 0x8a, 0x72, 0xbe, 0x62, - 0x50, 0xf1, 0xc1, 0xc8, 0x33, 0x9c, 0x17, 0xc5, 0x70, 0x96, 0x59, 0xb6, - 0x07, 0xb2, 0x4c, 0x9e, 0xf9, 0xa4, 0x89, 0x2f, 0x71, 0x5d, 0x31, 0x68, - 0x29, 0xde, 0xe1, 0xa2, 0xa7, 0xdb, 0x4b, 0xcd, 0xc3, 0xd8, 0xcc, 0x2b, - 0x45, 0xfc, 0x09, 0x1d, 0x69, 0x8b, 0xf7, 0x30, 0x8e, 0x66, 0xe1, 0x3f, - 0x10, 0xb6, 0x4d, 0x3b, 0x50, 0xb9, 0x9f, 0xdb, 0x50, 0x90, 0x47, 0xb0, - 0xc9, 0x89, 0x10, 0x58, 0x04, 0x83, 0xe8, 0x78, 0x14, 0x2b, 0xf8, 0xd0, - 0xa7, 0x50, 0xa8, 0x6e, 0x8b, 0xa8, 0xd7, 0x79, 0x06, 0x1e, 0x7a, 0xd8, - 0x1c, 0x74, 0xef, 0x15, 0xee, 0x4e, 0xc3, 0x17, 0xed, 0x8f, 0x46, 0x14, - 0x6e, 0xd4, 0x4e, 0x95, 0x2a, 0xb1, 0x38, 0xf5, 0x48, 0xcb, 0x4d, 0x5b, - 0xed, 0xc6, 0x55, 0xad, 0x9a, 0x46, 0xf9, 0xd0, 0xe7, 0x03, 0x97, 0x44, - 0x37, 0xac, 0x08, 0xe4, 0x18, 0xbf, 0xa2, 0x1b, 0x6e, 0xad, 0xef, 0x30, - 0xd5, 0x9e, 0x12, 0x53, 0x79, 0xbd, 0x6c, 0x92, 0x71, 0x6b, 0x0f, 0xf0, - 0x1e, 0x9c, 0x23, 0x11, 0x21, 0x15, 0x69, 0x01, 0x91, 0xfd, 0x39, 0xe6, - 0x75, 0xd8, 0x05, 0xd5, 0xf4, 0x50, 0x66, 0xf6, 0x8a, 0xec, 0xc7, 0x12, - 0xbb, 0x3f, 0x3d, 0x66, 0xe2, 0xdf, 0x18, 0xee, 0x4f, 0x62, 0xf9, 0x33, - 0x5e, 0x75, 0xf6, 0x4e, 0xb9, 0x19, 0xa1, 0x8b, 0x4a, 0xd7, 0x70, 0x8e, - 0x6c, 0xce, 0x74, 0x4a, 0xea, 0x39, 0xcf, 0xc3, 0x38, 0x1c, 0x3b, 0xc7, - 0x0d, 0xb2, 0x80, 0xeb, 0x9d, 0x9b, 0x10, 0x41, 0xc1, 0x6f, 0x1d, 0x76, - 0x3e, 0xcd, 0x92, 0xe3, 0xdb, 0x51, 0x44, 0x14, 0x06, 0x88, 0xf8, 0xfa, - 0x74, 0x3e, 0xe8, 0x62, 0xc1, 0x30, 0x3f, 0x08, 0x1b, 0x07, 0xfa, 0xf2, - 0x5d, 0xfe, 0x31, 0xfb, 0x5a, 0xcd, 0xc9, 0x82, 0xfb, 0x98, 0x31, 0xe5, - 0x9c, 0x96, 0x1d, 0xbe, 0xd5, 0x1f, 0x03, 0x55, 0xe3, 0xe8, 0x73, 0xcd, - 0x19, 0xa9, 0xed, 0x50, 0x8b, 0xde, 0xf1, 0xef, 0x8d, 0x23, 0xff, 0xe5, - 0xdf, 0x90, 0x91, 0x8e, 0xcb, 0x68, 0x72, 0xb3, 0xe0, 0x60, 0x27, 0x8f, - 0xed, 0xf8, 0x1a, 0x43, 0xe7, 0x20, 0xa1, 0x22, 0xc6, 0xc8, 0x6e, 0xa2, - 0xce, 0x06, 0x45, 0xd7, 0x36, 0x29, 0x89, 0x54, 0x5d, 0xb0, 0x18, 0xbe, - 0xcc, 0xae, 0x7a, 0x70, 0x03, 0x64, 0xcb, 0x68, 0xc1, 0x29, 0xd0, 0xf5, - 0x2e, 0x45, 0x3c, 0x43, 0xd6, 0x14, 0xfa, 0xcd, 0x54, 0x9c, 0xf3, 0x0d, - 0x81, 0x10, 0xb1, 0x96, 0x21, 0xd4, 0xcf, 0xca, 0xb5, 0xba, 0x69, 0x9d, - 0x54, 0xf8, 0x05, 0x9d, 0x94, 0x9d, 0xc5, 0xd2, 0xa5, 0x96, 0xdd, 0xc9, - 0x66, 0x8f, 0xdf, 0xc6, 0xb9, 0x25, 0x43, 0x45, 0x04, 0xf0, 0x33, 0x85, - 0x72, 0x4d, 0xc6, 0x0c, 0x8b, 0x8e, 0x59, 0xb8, 0x96, 0xd7, 0x4c, 0x01, - 0xdb, 0xe1, 0xd4, 0x70, 0xde, 0x95, 0xc2, 0x65, 0x77, 0x9e, 0xb3, 0x31, - 0x4f, 0xa1, 0x23, 0xa7, 0x28, 0xe7, 0x15, 0x40, 0x4c, 0x83, 0x6b, 0x6c, - 0x47, 0x5c, 0x73, 0xd8, 0x6b, 0x83, 0x6b, 0xf9, 0x9e, 0xcf, 0x00, 0x82, - 0x5d, 0x8c, 0x85, 0x47, 0x22, 0x0c, 0xea, 0xa9, 0x9b, 0xee, 0xe3, 0x5c, - 0x13, 0x5a, 0xde, 0x84, 0xaf, 0xb8, 0xa0, 0xf5, 0xda, 0x37, 0x7e, 0xc7, - 0xc1, 0xbf, 0x44, 0x1c, 0x4b, 0xfb, 0x05, 0x2b, 0xa0, 0xa7, 0x0d, 0x6e, - 0x92, 0x25, 0xa6, 0x55, 0x98, 0xde, 0xe0, 0x75, 0x77, 0xdf, 0xe6, 0x12, - 0x4c, 0xf6, 0xf5, 0x69, 0xe3, 0x27, 0x6b, 0xfd, 0x56, 0xbc, 0xed, 0xd3, - 0x59, 0x43, 0x4e, 0x21, 0xd6, 0xeb, 0x64, 0xe4, 0x5a, 0x42, 0xa0, 0x03, - 0x60, 0x7a, 0x12, 0x40, 0x55, 0x42, 0xb3, 0x9f, 0x34, 0xcf, 0x96, 0x2d, - 0x64, 0xb0, 0xde, 0x7e, 0x8f, 0xa1, 0x6b, 0x4f, 0x97, 0x2b, 0xc1, 0x88, - 0x3a, 0x7f, 0x19, 0x24, 0xa7, 0x97, 0x0f, 0x8d, 0x61, 0xa0, 0x99, 0x9a, - 0x86, 0x04, 0xf5, 0x72, 0x38, 0x48, 0xd6, 0x55, 0x0d, 0x88, 0x81, 0x3c, - 0x28, 0xef, 0x71, 0xf7, 0x3a, 0x26, 0x33, 0x14, 0xcf, 0x82, 0x81, 0x09, - 0x2f, 0xb8, 0x03, 0xea, 0x27, 0xe2, 0x09, 0xa3, 0xf2, 0xe3, 0xed, 0x7d, - 0xfa, 0xb4, 0x3e, 0xe4, 0xec, 0x29, 0xaf, 0xb3, 0x50, 0xae, 0xec, 0x39, - 0x89, 0xa7, 0x08, 0xa5, 0x67, 0x4c, 0xd9, 0x70, 0x44, 0x92, 0x3e, 0x6f, - 0x57, 0xff, 0x51, 0xfe, 0x96, 0x21, 0x12, 0xd6, 0x02, 0xc8, 0xb3, 0x1d, - 0xd4, 0xab, 0x08, 0x54, 0x00, 0x31, 0xc3, 0xa1, 0x2b, 0x51, 0x6d, 0x5f, - 0xc3, 0x74, 0xdc, 0xd8, 0x61, 0x3d, 0xac, 0xa6, 0x5c, 0x23, 0x91, 0x0b, - 0x56, 0xfe, 0x92, 0xb8, 0x94, 0x58, 0xb8, 0x66, 0x5e, 0xc4, 0xc9, 0x4e, - 0x7d, 0x7d, 0x65, 0xcc, 0xc7, 0xfe, 0x1c, 0xcb, 0xca, 0xfb, 0xe1, 0x10, - 0x58, 0x89, 0x94, 0xc1, 0x72, 0x85, 0x22, 0x2f, 0x2b, 0xdd, 0x59, 0x49, - 0x3c, 0x54, 0x1e, 0x5b, 0x88, 0x8b, 0x3e, 0x92, 0xee, 0x5c, 0x8f, 0xaf, - 0xe4, 0x01, 0x22, 0x84, 0x9b, 0x4e, 0xfe, 0x49, 0x71, 0xa7, 0xf5, 0x5c, - 0xab, 0x63, 0x75, 0x0e, 0xc4, 0x8c, 0xda, 0x35, 0x61, 0x2a, 0xde, 0xe5, - 0xa6, 0xe0, 0xde, 0xd8, 0x25, 0xae, 0xa1, 0x94, 0x33, 0x17, 0x22, 0x1e, - 0x45, 0xa4, 0x61, 0x3c, 0xa4, 0x0f, 0xcb, 0x66, 0x9a, 0x5d, 0x85, 0xae, - 0x94, 0xc4, 0xca, 0xd7, 0x44, 0xa1, 0xaa, 0x47, 0xbf, 0x48, 0x7a, 0x04, - 0x7e, 0x80, 0x81, 0xef, 0x69, 0x79, 0x81, 0x8f, 0x2c, 0x0d, 0x5b, 0xb7, - 0x84, 0x41, 0x4b, 0x87, 0x19, 0xe5, 0xac, 0x37, 0x76, 0xa8, 0x72, 0x72, - 0x73, 0x22, 0xb7, 0x28, 0xc0, 0x60, 0xba, 0x02, 0xba, 0xf0, 0xce, 0x76, - 0xe6, 0xc6, 0x75, 0x2f, 0x46, 0x96, 0x27, 0x86, 0xbc, 0xa3, 0x0c, 0x0b, - 0x22, 0x53, 0x37, 0x31, 0x50, 0xb1, 0x05, 0x81, 0x71, 0x2a, 0xdb, 0x00, - 0xc9, 0x92, 0x51, 0xc9, 0xf4, 0x54, 0x90, 0xea, 0x96, 0x8a, 0x1f, 0xcf, - 0xe3, 0xbb, 0x6d, 0x22, 0x28, 0xaf, 0x8e, 0x48, 0x21, 0x6a, 0x90, 0x21, - 0xc6, 0xff, 0x97, 0x24, 0x1b, 0x84, 0x40, 0x52, 0x49, 0xf1, 0x46, 0x05, - 0xc4, 0xbb, 0x7e, 0x2e, 0x8c, 0xd7, 0x44, 0xe5, 0xeb, 0x82, 0x4d, 0x88, - 0x97, 0x31, 0x89, 0x7d, 0xbc, 0x6c, 0x0d, 0xc1, 0x11, 0x8f, 0xfd, 0x87, - 0xb5, 0x60, 0x15, 0x71, 0xd2, 0xa2, 0xec, 0xec, 0x6a, 0xc1, 0xcc, 0x55, - 0x70, 0xfc, 0xb8, 0x65, 0xdb, 0x5d, 0xa2, 0x4c, 0xe5, 0x8e, 0xec, 0x98, - 0xf1, 0xa7, 0xff, 0xf8, 0x9b, 0xb1, 0xfe, 0xa3, 0xd1, 0xc3, 0x97, 0xab, - 0xbc, 0x58, 0x09, 0xd5, 0x33, 0x23, 0x98, 0xdf, 0x7b, 0xb5, 0xd5, 0xc3, - 0x5d, 0x7e, 0x0c, 0x7e, 0xaa, 0x71, 0xe5, 0x0b, 0x40, 0x0b, 0x81, 0x37, - 0xf0, 0xee, 0x54, 0x3e, 0x42, 0xbe, 0x55, 0x83, 0x5f, 0x63, 0x7d, 0xab, - 0x76, 0x76, 0x17, 0xe7, 0x3f, 0x45, 0x70, 0x86, 0xf4, 0xc6, 0xde, 0x26, - 0xff, 0x3a, 0xdc, 0x0d, 0x92, 0x21, 0xc4, 0x8f, 0xe0, 0x28, 0xf9, 0xac, - 0x5a, 0x50, 0xee, 0x1b, 0x8a, 0x19, 0x45, 0xfb, 0x67, 0x4c, 0x58, 0x04, - 0xc4, 0x4a, 0x1e, 0xde, 0x4a, 0x9d, 0x82, 0xc5, 0xa1, 0xc8, 0x78, 0x91, - 0x91, 0x0c, 0xd9, 0x37, 0xd9, 0x5e, 0x72, 0xda, 0xd4, 0xd3, 0x0f, 0xce, - 0xb2, 0x1f, 0x28, 0x98, 0x9c, 0xac, 0x5f, 0xb6, 0xd9, 0x8a, 0x40, 0x7d, - 0xe2, 0x29, 0x13, 0xf4, 0xaf, 0xbe, 0x25, 0xa1, 0x29, 0xbb, 0x7a, 0x1c, - 0x6b, 0xa5, 0xa7, 0x69, 0x43, 0xdf, 0x9f, 0x38, 0xe1, 0x3c, 0x25, 0x4d, - 0x97, 0xf5, 0xd3, 0x32, 0x4e, 0x43, 0xcc, 0x63, 0xdf, 0xbc, 0x6d, 0x28, - 0xa6, 0xfe, 0x3a, 0x5a, 0x79, 0xa1, 0xa0, 0xe7, 0x7a, 0x6b, 0xf6, 0x44, - 0x05, 0x82, 0x77, 0xf5, 0x07, 0x3a, 0x96, 0x45, 0xbc, 0x5d, 0x2b, 0x9e, - 0xa2, 0x7c, 0x0f, 0x27, 0x06, 0x8b, 0xdb, 0xc0, 0x69, 0xb5, 0x45, 0xa9, - 0xea, 0x3a, 0xb6, 0x64, 0x2c, 0x7b, 0xc5, 0x31, 0x18, 0x75, 0x4b, 0xe4, - 0x2c, 0xc1, 0x56, 0x70, 0xff, 0xfc, 0xf0, 0xc3, 0x73, 0x7f, 0x21, 0x34, - 0x6c, 0x9f, 0x30, 0x9f, 0xfc, 0x28, 0x25, 0x2e, 0x3c, 0x79, 0xdd, 0x1c, - 0x4e, 0x92, 0xcf, 0x43, 0x1d, 0xe0, 0x86, 0x92, 0xf2, 0xdb, 0x0e, 0x2e, - 0x0b, 0x18, 0xc7, 0x4b, 0x79, 0x48, 0x72, 0x4a, 0xea, 0x71, 0x05, 0x0e, - 0x12, 0x93, 0xfa, 0x25, 0xd4, 0x1d, 0xa1, 0x12, 0x5d, 0x4d, 0xf0, 0x4b, - 0xe9, 0xec, 0xb9, 0x3e, 0x6b, 0x9f, 0x22, 0xb9, 0x51, 0xba, 0x8f, 0xe3, - 0xb2, 0xbf, 0xba, 0x0b, 0x20, 0xfb, 0x13, 0x9f, 0xe5, 0x9b, 0x13, 0xfc, - 0x48, 0x06, 0x50, 0x53, 0xef, 0x56, 0xca, 0x10, 0x83, 0x44, 0x27, 0x22, - 0x3f, 0x33, 0xc1, 0x90, 0x2a, 0xa0, 0xd5, 0xcf, 0xdd, 0x1c, 0xc9, 0xf7, - 0x96, 0x90, 0x71, 0x41, 0xf4, 0xe4, 0x6e, 0x1b, 0xff, 0x40, 0x27, 0x66, - 0x3b, 0x8d, 0x5c, 0x5f, 0xca, 0xb8, 0xbf, 0x2d, 0xf3, 0x9f, 0xb0, 0xee, - 0x79, 0xdc, 0x87, 0x18, 0xa7, 0xd1, 0x8e, 0xca, 0xdf, 0xc5, 0x58, 0x0a, - 0x5b, 0xc7, 0x23, 0x74, 0xba, 0xeb, 0xdd, 0x51, 0xcc, 0x07, 0xdf, 0x8a, - 0xbb, 0x6c, 0xdd, 0xbe, 0x75, 0x3d, 0x7b, 0xcc, 0x07, 0x46, 0x58, 0x62, - 0x2a, 0x33, 0x62, 0x53, 0xbb, 0x40, 0x94, 0x92, 0x37, 0x1a, 0xdf, 0x35, - 0x81, 0x13, 0xb0, 0x0c, 0xd7, 0xa9, 0xd8, 0xa7, 0xb9, 0x36, 0x7a, 0xd3, - 0x62, 0x41, 0x94, 0x10, 0x69, 0x0e, 0x4f, 0x5f, 0x62, 0x0d, 0x9b, 0xa2, - 0xcb, 0x05, 0x5d, 0x78, 0x29, 0x5c, 0x39, 0xc4, 0xea, 0xc6, 0x32, 0xbb, - 0x17, 0x78, 0x85, 0x24, 0x4f, 0x73, 0x9d, 0x05, 0x45, 0x05, 0xaf, 0xbb, - 0x63, 0x01, 0x04, 0xb4, 0x6a, 0xb2, 0x94, 0x34, 0xea, 0xe2, 0xdc, 0x8b, - 0x12, 0x3c, 0x00, 0x45, 0x85, 0x40, 0x1a, 0x80, 0xd0, 0xd1, 0x0d, 0x41, - 0x6a, 0xdc, 0x4d, 0xd5, 0x39, 0xe6, 0xec, 0x29, 0x3e, 0xee, 0xbd, 0xb5, - 0x3c, 0xc9, 0x9e, 0x54, 0xff, 0x1a, 0xf6, 0x0f, 0x1a, 0x53, 0xa6, 0x8f, - 0x3f, 0xe6, 0x6e, 0x80, 0xc7, 0xec, 0xc8, 0x32, 0x02, 0x62, 0x09, 0x4e, - 0xd6, 0x8f, 0xdd, 0xe1, 0x6f, 0x1c, 0x4a, 0xc6, 0x3f, 0x52, 0x05, 0x13, - 0xbc, 0xb8, 0x5d, 0xe6, 0x99, 0x3a, 0x2c, 0x20, 0xaf, 0xc6, 0xa5, 0x9f, - 0xfc, 0xa3, 0xf3, 0xcb, 0x7f, 0x6c, 0xbb, 0xbe, 0x23, 0x02, 0x01, 0xda, - 0xd0, 0x32, 0x86, 0xbf, 0xf5, 0x4e, 0xda, 0x9b, 0x0f, 0xed, 0x09, 0x56, - 0x8a, 0x8f, 0xcc, 0x64, 0x06, 0x7b, 0x6a, 0xac, 0xfe, 0x8c, 0x2b, 0xb0, - 0xff, 0xfe, 0x42, 0x17, 0xbf, 0x18, 0xe5, 0x40, 0x89, 0xe3, 0x5d, 0x30, - 0x71, 0xf1, 0x93, 0x7d, 0x01, 0xdd, 0x39, 0x7b, 0x18, 0x1c, 0x62, 0x0f, - 0x1f, 0xbf, 0xc2, 0x1c, 0x13, 0x8b, 0xec, 0xfc, 0x55, 0xa1, 0x1a, 0xa3, - 0x8b, 0xcc, 0x5a, 0x78, 0xf0, 0x71, 0x64, 0xc9, 0xcd, 0xdc, 0x87, 0x7d, - 0xb3, 0x03, 0x43, 0x1d, 0x22, 0xae, 0x60, 0x08, 0x41, 0x20, 0x85, 0x93, - 0x70, 0xf9, 0x1a, 0x1a, 0x1f, 0x7b, 0x97, 0xf9, 0x60, 0x6e, 0xc4, 0xc1, - 0x13, 0xe6, 0x79, 0xc1, 0x42, 0x25, 0x5f, 0x9a, 0xdf, 0x58, 0x46, 0xd5, - 0xcf, 0xa7, 0x16, 0x98, 0xf3, 0xa4, 0xe5, 0x55, 0x72, 0x24, 0xc1, 0xec, - 0x62, 0x3d, 0x2f, 0xfd, 0xc0, 0x5c, 0xfc, 0x15, 0xf9, 0x21, 0xbf, 0x98, - 0x0a, 0xbf, 0x2e, 0x6e, 0xc5, 0x1f, 0xd6, 0x54, 0x10, 0xb4, 0x9d, 0x4f, - 0xec, 0x42, 0xc1, 0xab, 0x37, 0xf4, 0x9f, 0x22, 0x33, 0x67, 0xcf, 0x7c, - 0x7a, 0x9b, 0x7d, 0x96, 0x8d, 0x76, 0x9d, 0x00, 0xca, 0x3f, 0x5f, 0xfa, - 0x08, 0xff, 0xaa, 0xc7, 0xad, 0xd0, 0xd7, 0xea, 0x59, 0xf5, 0x58, 0x7f, - 0xf3, 0xf3, 0x31, 0x8a, 0x54, 0xac, 0x00, 0xec, 0x54, 0x34, 0x78, 0x46, - 0xbc, 0x05, 0x33, 0x0f, 0x56, 0x1a, 0x0b, 0x22, 0x07, 0x77, 0x4e, 0xb1, - 0x90, 0x67, 0x91, 0x77, 0x3c, 0x2b, 0xb1, 0xbd, 0x81, 0x0f, 0x69, 0x8e, - 0x6f, 0x7b, 0x60, 0x9e, 0x89, 0x43, 0xe3, 0x31, 0xdb, 0x03, 0xad, 0x84, - 0x0c, 0x52, 0x19, 0xe2, 0xb1, 0xef, 0xaa, 0xda, 0x4f, 0x1e, 0xe4, 0xbf, - 0xcc, 0x67, 0x39, 0x3b, 0xaf, 0x9e, 0x5d, 0x02, 0x41, 0xda, 0x71, 0xd3, - 0x4f, 0x03, 0x24, 0x38, 0xc7, 0x4b, 0x23, 0xb0, 0xc6, 0xc4, 0xb0, 0xec, - 0xa7, 0x90, 0x95, 0xc1, 0x10, 0x15, 0x61, 0x82, 0xef, 0x53, 0xd0, 0x97, - 0x90, 0x2a, 0x15, 0xb6, 0xc7, 0x59, 0xe5, 0xb7, 0x4b, 0x93, 0xbe, 0xbc, - 0x17, 0x6c, 0xeb, 0x34, 0xc2, 0x92, 0x7d, 0x4d, 0x88, 0xd6, 0x9a, 0x20, - 0x66, 0x8b, 0x85, 0xac, 0xef, 0xbb, 0xd6, 0x7b, 0x3e, 0xad, 0x0d, 0x7d, - 0x04, 0xba, 0x37, 0xda, 0x68, 0x89, 0x7a, 0xfd, 0xb7, 0x1b, 0x1e, 0x15, - 0xdf, 0x75, 0x3e, 0xec, 0xd5, 0xc9, 0x93, 0x6b, 0xcc, 0x38, 0xf4, 0xef, - 0x85, 0x68, 0xd7, 0x37, 0x98, 0x56, 0x28, 0xe8, 0xec, 0x02, 0x4a, 0x03, - 0x9c, 0x5c, 0xc7, 0xbf, 0x18, 0x47, 0xc0, 0x8e, 0x86, 0xc5, 0xe8, 0xc0, - 0x3e, 0x2c, 0xe8, 0xa9, 0xee, 0xe0, 0x1f, 0xf0, 0x4f, 0x69, 0xd5, 0xdd, - 0x19, 0x8a, 0xcd, 0xcf, 0xb9, 0x07, 0x22, 0xfe, 0xe6, 0x16, 0xd3, 0xf5, - 0xb5, 0x43, 0x37, 0x0c, 0x80, 0x46, 0x71, 0xff, 0xeb, 0x87, 0x23, 0x19, - 0xde, 0xc3, 0xd6, 0x2e, 0x46, 0x42, 0x54, 0xa8, 0x96, 0xd2, 0x8f, 0xf5, - 0xd9, 0xee, 0x2b, 0x7b, 0x1c, 0xee, 0x01, 0x2c, 0x52, 0x7c, 0x6c, 0x9f, - 0x81, 0x1d, 0x66, 0xe1, 0xd1, 0xbd, 0x16, 0x43, 0xbc, 0x85, 0xc9, 0x3b, - 0x3a, 0x06, 0xe8, 0xef, 0x2f, 0xac, 0xec, 0xb1, 0xe8, 0x95, 0x96, 0xa1, - 0xb9, 0xc8, 0x7c, 0x98, 0x54, 0x71, 0x47, 0x41, 0x47, 0x5c, 0x03, 0xc6, - 0x88, 0xbe, 0x87, 0x00, 0x4e, 0x2d, 0x70, 0x66, 0x08, 0x6c, 0x36, 0x7c, - 0x7a, 0x12, 0x93, 0xa2, 0xc9, 0x38, 0x38, 0xaf, 0x3b, 0x96, 0x46, 0x27, - 0xc6, 0x7e, 0x4f, 0x99, 0xde, 0xba, 0x8b, 0xd7, 0x5d, 0x0e, 0x9b, 0xa5, - 0x7f, 0xd5, 0x1e, 0x57, 0x7a, 0x58, 0xa5, 0x67, 0xf3, 0x9d, 0xc6, 0x72, - 0x75, 0x1e, 0x02, 0x79, 0xa0, 0xc8, 0x6f, 0x2c, 0x34, 0xf6, 0x8b, 0x08, - 0x85, 0x5f, 0x9a, 0xff, 0x6c, 0x2b, 0x26, 0x97, 0xe3, 0x54, 0xaf, 0x67, - 0xed, 0x64, 0x72, 0x81, 0xa2, 0xfd, 0x56, 0xdf, 0xb0, 0x5e, 0xc6, 0x9d, - 0xe9, 0x55, 0xe2, 0xa8, 0xda, 0x3a, 0xe9, 0xcf, 0x66, 0x00, 0x11, 0xae, - 0x25, 0x14, 0x79, 0xdf, 0xca, 0xb4, 0x82, 0xc0, 0x44, 0x48, 0x8b, 0x0f, - 0x0f, 0xa4, 0xe8, 0xb5, 0x72, 0xf6, 0x51, 0x42, 0x4b, 0x33, 0x4d, 0x7d, - 0xed, 0x8f, 0x72, 0x8c, 0xbe, 0x0b, 0x7e, 0x4c, 0x99, 0x0d, 0x13, 0x7c, - 0xbe, 0x36, 0x9b, 0x72, 0x7e, 0x0a, 0x80, 0x93, 0xb7, 0x76, 0x82, 0x93, - 0x3e, 0x0b, 0x8a, 0x34, 0x29, 0x4c, 0xac, 0x54, 0x60, 0xa3, 0xc0, 0x35, - 0x19, 0x81, 0x6a, 0x23, 0xd2, 0x35, 0xf6, 0x6c, 0xa6, 0xf1, 0x25, 0x49, - 0xbc, 0x0f, 0xb7, 0x15, 0x2a, 0x8f, 0x22, 0xd1, 0x4c, 0x7d, 0x38, 0xa7, - 0xc3, 0x58, 0x71, 0x4a, 0x11, 0x99, 0x91, 0xc5, 0x26, 0x3e, 0xff, 0x2d, - 0x38, 0x37, 0x3b, 0x03, 0xcb, 0x35, 0xb6, 0xad, 0x7b, 0xfb, 0x85, 0x0e, - 0xe1, 0x01, 0x54, 0x44, 0xda, 0xa9, 0x9a, 0x16, 0xf9, 0xda, 0x0a, 0x2b, - 0x3f, 0x7a, 0x0c, 0x71, 0x73, 0x54, 0x53, 0xa7, 0xa3, 0xf4, 0xb1, 0x17, - 0xc8, 0x92, 0xb1, 0x70, 0xb7, 0xa6, 0xd2, 0x65, 0x54, 0xe5, 0x84, 0x01, - 0x0f, 0x4c, 0x01, 0x66, 0x68, 0xa0, 0x57, 0xc1, 0xaa, 0xad, 0x39, 0xb0, - 0x7f, 0x60, 0xfc, 0x66, 0xe2, 0xc6, 0x6e, 0x52, 0xb4, 0x66, 0x7b, 0x9d, - 0x3b, 0x5d, 0x91, 0x6a, 0x2f, 0xbe, 0xf0, 0xe5, 0x37, 0x99, 0x8e, 0x26, - 0x28, 0x02, 0x93, 0xe7, 0xff, 0x51, 0x2c, 0xe2, 0x3c, 0x85, 0x4d, 0x57, - 0xa0, 0x2f, 0x57, 0xcc, 0xa8, 0x36, 0x7b, 0x53, 0x3c, 0x2e, 0xfb, 0xb9, - 0x0d, 0x54, 0xbb, 0x0d, 0xb6, 0x4b, 0x12, 0x73, 0x7c, 0x64, 0x97, 0xac, - 0x90, 0xcd, 0xb0, 0x7a, 0x3c, 0xa1, 0x42, 0xdf, 0x72, 0x6f, 0x46, 0x53, - 0x7f, 0x58, 0x1d, 0xd8, 0x8f, 0x3d, 0xbd, 0xc1, 0x6c, 0xeb, 0x38, 0x26, - 0x6f, 0x5a, 0x55, 0xaa, 0xb0, 0xb7, 0x9f, 0xbc, 0x08, 0x35, 0x29, 0xe4, - 0x06, 0xeb, 0x90, 0x35, 0x9c, 0x88, 0x60, 0x8d, 0x6a, 0xc5, 0x5d, 0x77, - 0x3a, 0x28, 0x0c, 0x51, 0xe5, 0xe2, 0x23, 0xa8, 0xe6, 0x68, 0x99, 0x96, - 0x60, 0x31, 0xfc, 0x7e, 0x41, 0xc9, 0xca, 0x67, 0x46, 0xeb, 0xdf, 0xc8, - 0x08, 0x3c, 0xd2, 0xc4, 0xe7, 0x20, 0x4c, 0x56, 0xa9, 0xc2, 0xc3, 0x77, - 0xbb, 0x92, 0x4b, 0xb6, 0xc4, 0xda, 0x4a, 0x6e, 0x1c, 0x34, 0x9b, 0x70, - 0xf5, 0x4a, 0x07, 0xf0, 0xb7, 0x90, 0x1e, 0x9a, 0xa4, 0xfc, 0xaa, 0xff, - 0xd4, 0xe1, 0x59, 0xa0, 0x34, 0x64, 0x74, 0x12, 0x10, 0x68, 0xb2, 0x09, - 0x47, 0x3d, 0x73, 0x7c, 0xc2, 0x84, 0xea, 0x7b, 0xf4, 0x22, 0xc5, 0xc2, - 0x85, 0x1a, 0xcd, 0x60, 0x6d, 0xbb, 0x27, 0xcd, 0x95, 0x1f, 0x85, 0xb4, - 0xb9, 0x63, 0x97, 0xff, 0x97, 0x32, 0x58, 0x9d, 0x8d, 0xb8, 0x86, 0x05, - 0x29, 0x21, 0x06, 0x7e, 0x6d, 0x73, 0x3a, 0x9f, 0xfc, 0x2d, 0x2b, 0xd7, - 0xe3, 0x46, 0x8b, 0xc8, 0x58, 0x2d, 0xab, 0x21, 0x9f, 0x6d, 0x7f, 0xdc, - 0x93, 0x9c, 0xa1, 0xa7, 0xad, 0xf2, 0x31, 0xc6, 0xa9, 0x3c, 0xdf, 0x2a, - 0x3c, 0x15, 0x65, 0xb1, 0xc2, 0x43, 0x9b, 0x1d, 0x4d, 0xef, 0x77, 0x8c, - 0xac, 0x3a, 0xa9, 0x5e, 0x54, 0x61, 0xb7, 0x29, 0x4f, 0xb7, 0xee, 0x8f, - 0x97, 0xf7, 0xe6, 0xc8, 0x95, 0xf5, 0x25, 0xe9, 0x85, 0xd3, 0x8c, 0xc3, - 0x09, 0x22, 0x46, 0xd4, 0x43, 0x6d, 0x08, 0x41, 0x94, 0x11, 0x9b, 0xf2, - 0x75, 0x22, 0x75, 0x9c, 0x46, 0x6b, 0x24, 0x1e, 0xe3, 0xa2, 0x6d, 0x4d, - 0xdb, 0xe5, 0x93, 0x8c, 0xff, 0x47, 0x9b, 0xa8, 0xe9, 0xa0, 0x61, 0xe6, - 0x6e, 0xed, 0x66, 0xb4, 0x5a, 0x2e, 0x1a, 0xd2, 0x2f, 0x97, 0x85, 0x48, - 0xce, 0x4d, 0xb0, 0x1d, 0x70, 0xe0, 0xab, 0xf2, 0xbe, 0x1a, 0x39, 0xd1, - 0xc4, 0x8c, 0xb6, 0xcf, 0xaf, 0x13, 0xb9, 0x29, 0x21, 0xf7, 0xd9, 0x7c, - 0x53, 0x6b, 0xa0, 0xfe, 0x71, 0x51, 0x12, 0xc5, 0x30, 0xa0, 0xe8, 0xb2, - 0x10, 0xfe, 0x0b, 0x0f, 0x68, 0xa3, 0xb8, 0x57, 0x26, 0xdd, 0xff, 0x73, - 0x41, 0x1f, 0xfa, 0xd8, 0x3c, 0x4c, 0x53, 0x29, 0x0c, 0x83, 0x10, 0xb3, - 0xfe, 0xa3, 0x27, 0x6f, 0xef, 0x59, 0x01, 0xce, 0x9d, 0x85, 0xbb, 0x14, - 0xd6, 0xbe, 0x32, 0x8d, 0x42, 0xde, 0xa9, 0xa5, 0x7d, 0x5e, 0xd3, 0xaf, - 0x5c, 0x37, 0x98, 0x45, 0xb1, 0xec, 0xd4, 0xa7, 0x49, 0xa6, 0xde, 0x0c, - 0xc0, 0x7e, 0x02, 0x8b, 0xe5, 0x66, 0x29, 0x85, 0xfb, 0x62, 0xba, 0x84, - 0x6e, 0x4f, 0x86, 0x2e, 0xd4, 0x08, 0xff, 0xb3, 0xfb, 0xfc, 0xca, 0xba, - 0x72, 0x35, 0xec, 0x46, 0x2a, 0xd6, 0x8b, 0x21, 0xb8, 0x9c, 0x3e, 0x63, - 0x49, 0x69, 0x2a, 0x61, 0xf6, 0x5e, 0xb6, 0xd9, 0xc8, 0xe4, 0x18, 0x52, - 0x8a, 0x49, 0xb9, 0x30, 0xd4, 0x6c, 0xcd, 0x8d, 0xa0, 0x3b, 0x5c, 0x10, - 0x3b, 0xd1, 0x4f, 0x36, 0x85, 0x31, 0x35, 0x3b, 0xed, 0xea, 0xd0, 0xfb, - 0xb5, 0x2e, 0x01, 0xd4, 0x76, 0x36, 0x3a, 0x99, 0x6c, 0x13, 0xb9, 0x6b, - 0xd5, 0xc3, 0x18, 0x65, 0x11, 0x6a, 0x7a, 0x78, 0xde, 0x6d, 0x81, 0x3b, - 0xa7, 0x04, 0xb1, 0xde, 0x4d, 0xf9, 0x3c, 0xaa, 0xd5, 0x03, 0x5f, 0xbf, - 0xf2, 0x72, 0x6f, 0x7c, 0x73, 0x38, 0x11, 0xb2, 0xcb, 0xb9, 0x14, 0xec, - 0x7f, 0x8a, 0xf6, 0x52, 0x55, 0xe6, 0x14, 0x39, 0xb1, 0x66, 0xf8, 0xba, - 0xba, 0xb5, 0x16, 0x9e, 0x4c, 0x82, 0xd2, 0x97, 0xc5, 0x5c, 0x9c, 0x04, - 0x1e, 0xa6, 0xaa, 0xed, 0xea, 0x91, 0xf7, 0xb0, 0xb2, 0x52, 0xbf, 0xc6, - 0x58, 0xce, 0xbe, 0x6f, 0x7c, 0xcb, 0xb1, 0xf8, 0x24, 0x3e, 0x79, 0xce, - 0x9b, 0x64, 0xb7, 0xb3, 0xd7, 0xce, 0x77, 0x3d, 0x4d, 0xb3, 0x37, 0xaf, - 0xc6, 0x52, 0x36, 0x7d, 0x86, 0xe5, 0x70, 0x45, 0x33, 0xb5, 0x30, 0x28, - 0xf4, 0xb2, 0xad, 0xce, 0x39, 0xe6, 0x58, 0x0f, 0x76, 0xea, 0x72, 0xe8, - 0xe3, 0xf9, 0xe6, 0x41, 0xdf, 0x47, 0x60, 0x03, 0x7c, 0xd6, 0x56, 0x93, - 0x18, 0x6d, 0x60, 0x64, 0x48, 0x8a, 0x7a, 0x5e, 0x2f, 0xc4, 0xf9, 0x1b, - 0x12, 0x55, 0x9e, 0xd4, 0x3f, 0xd9, 0xde, 0x6a, 0x26, 0x93, 0xf4, 0x17, - 0xd2, 0xd0, 0x3f, 0x36, 0x29, 0x6a, 0xdb, 0x64, 0xb8, 0x3b, 0xbd, 0xd1, - 0x38, 0xe2, 0x6b, 0x04, 0x8a, 0x65, 0xef, 0x3a, 0x46, 0xba, 0xab, 0xee, - 0xe8, 0x97, 0x76, 0x40, 0x6f, 0x5f, 0x69, 0xdf, 0x3a, 0x0e, 0x03, 0xf1, - 0x34, 0xec, 0x03, 0xa2, 0x23, 0x61, 0xed, 0x01, 0xf6, 0xe4, 0xa2, 0xb0, - 0xe5, 0xcd, 0x2e, 0x82, 0x1b, 0x32, 0x44, 0x45, 0x64, 0x43, 0x2d, 0x2a, - 0x16, 0x27, 0x2e, 0x7a, 0xa9, 0x19, 0x89, 0xe9, 0x0a, 0x57, 0x4d, 0x53, - 0x08, 0x09, 0x13, 0xb2, 0xe1, 0xb2, 0xa4, 0xd9, 0x67, 0xce, 0x48, 0xb2, - 0x1d, 0x9c, 0x04, 0x40, 0xff, 0x3b, 0x04, 0x27, 0xa7, 0x32, 0xd9, 0x29, - 0xfa, 0xeb, 0x28, 0xad, 0x7b, 0xa8, 0x51, 0x2b, 0xdf, 0xda, 0x80, 0x56, - 0x24, 0x33, 0x1d, 0x8d, 0x94, 0xa4, 0x35, 0x79, 0x69, 0x62, 0xbd, 0xb8, - 0x75, 0x81, 0x48, 0x90, 0x7b, 0x9c, 0x82, 0x34, 0xf6, 0x81, 0x78, 0x2d, - 0xbe, 0x05, 0x08, 0x22, 0x55, 0x95, 0xe8, 0x72, 0x75, 0xc3, 0x86, 0xae, - 0x07, 0x3b, 0xe7, 0x54, 0x00, 0x62, 0x02, 0x39, 0xb3, 0xeb, 0x59, 0x77, - 0x8b, 0x29, 0x4e, 0x35, 0xe9, 0x3b, 0xce, 0xf8, 0x66, 0x02, 0x19, 0xc4, - 0x0e, 0xd4, 0x9c, 0x2c, 0xde, 0xef, 0x53, 0x3a, 0xb2, 0x6a, 0x24, 0xd3, - 0xb3, 0x9c, 0x45, 0xad, 0x3c, 0x4b, 0xc1, 0x0f, 0xbd, 0xa9, 0x49, 0x70, - 0xa6, 0x16, 0xa2, 0x6a, 0xc8, 0xe2, 0xaf, 0xca, 0x67, 0xc0, 0x84, 0xba, - 0xa3, 0xd9, 0x20, 0xf4, 0x9f, 0x87, 0xc6, 0x30, 0xc9, 0xa7, 0x0c, 0xeb, - 0x17, 0xe3, 0x3b, 0xd0, 0x77, 0x11, 0x44, 0x79, 0xeb, 0xed, 0xe3, 0x42, - 0x47, 0x00, 0x4f, 0x0b, 0xfd, 0xd7, 0x7c, 0x48, 0x0b, 0x14, 0xc3, 0x12, - 0xff, 0xfb, 0xd0, 0x06, 0x02, 0x4e, 0x68, 0xcb, 0x58, 0xa7, 0x6b, 0x6e, - 0xfa, 0x12, 0xb7, 0x06, 0x6f, 0x2b, 0x83, 0x94, 0xbe, 0xce, 0x9e, 0x48, - 0x8f, 0x8d, 0xbb, 0x1f, 0x08, 0x00, 0xd1, 0x4e, 0x0e, 0xaa, 0x57, 0x02, - 0xc1, 0x4f, 0x41, 0xa5, 0x92, 0x5d, 0xb0, 0xfd, 0x7b, 0x49, 0xb2, 0x9f, - 0x95, 0xc8, 0x92, 0x75, 0x6d, 0x31, 0xca, 0x32, 0xe8, 0x2a, 0x18, 0x26, - 0x0c, 0xe5, 0x68, 0xf6, 0x0b, 0x0a, 0x88, 0xb9, 0x01, 0xd9, 0x9b, 0x4e, - 0x58, 0xf8, 0x5b, 0x47, 0x06, 0x60, 0x5d, 0x5a, 0x99, 0x2f, 0x6b, 0xcc, - 0x9f, 0xbe, 0x75, 0x92, 0xfe, 0xb5, 0x8f, 0xb2, 0x00, 0x67, 0x0d, 0xf2, - 0xd1, 0x08, 0x39, 0xb0, 0xd3, 0xdd, 0x6b, 0x61, 0xff, 0x8a, 0x28, 0x20, - 0x2b, 0x70, 0x1d, 0x85, 0xe3, 0x10, 0x96, 0x7a, 0x83, 0x90, 0x15, 0x28, - 0x3e, 0xdb, 0x05, 0x94, 0xd7, 0x53, 0x5c, 0x59, 0x31, 0x7d, 0x5b, 0x89, - 0xa2, 0x18, 0x73, 0x6f, 0x41, 0x3b, 0x9e, 0x92, 0x87, 0x8a, 0xbf, 0x8a, - 0xea, 0x4d, 0x48, 0x75, 0x09, 0x5b, 0xa0, 0x27, 0x9c, 0x52, 0xcb, 0xe5, - 0xb6, 0xda, 0x69, 0xe8, 0x08, 0xe9, 0x3d, 0x28, 0x05, 0xc3, 0xe4, 0xfa, - 0xf0, 0x2f, 0x35, 0x63, 0xb5, 0x78, 0xa0, 0xfa, 0x3a, 0xa1, 0xaa, 0xfe, - 0x76, 0x5a, 0xd5, 0x41, 0x2b, 0xbf, 0xd6, 0x87, 0x01, 0xd8, 0x1a, 0x6d, - 0x7e, 0x11, 0x39, 0x3d, 0xe5, 0x9c, 0x17, 0xa7, 0x70, 0x6c, 0x8b, 0xe5, - 0x45, 0x90, 0x4a, 0xf2, 0xb1, 0x8a, 0x51, 0x8b, 0x4a, 0x57, 0xc0, 0x9d, - 0x5b, 0x81, 0x4d, 0xf4, 0xd7, 0x2a, 0xa8, 0x82, 0x0c, 0x87, 0x39, 0xa7, - 0x87, 0x9f, 0xd5, 0x74, 0xd1, 0x9b, 0x47, 0xed, 0xe4, 0x79, 0x97, 0x66, - 0xf5, 0x4b, 0x9d, 0x5f, 0x4b, 0x26, 0x25, 0xdf, 0x5c, 0xd1, 0x45, 0xe0, - 0x87, 0x4d, 0x56, 0x16, 0x41, 0x8d, 0x17, 0x8a, 0x0b, 0x40, 0xa7, 0x1c, - 0x84, 0xa4, 0xc1, 0x5c, 0xcd, 0x4d, 0x3a, 0x16, 0x24, 0x08, 0x6a, 0xec, - 0x48, 0x7c, 0xbc, 0xef, 0x3a, 0xab, 0x45, 0xf0, 0x4c, 0xff, 0x95, 0xc4, - 0x41, 0xbc, 0x4f, 0xee, 0xbd, 0x83, 0x20, 0x0d, 0xb0, 0xc5, 0x21, 0xf4, - 0xf7, 0x68, 0x56, 0x4d, 0xb0, 0xf5, 0x18, 0x5d, 0x8d, 0xac, 0xa5, 0x6c, - 0xcc, 0x00, 0xca, 0x06, 0x1e, 0x62, 0xc0, 0xd2, 0x5f, 0x57, 0x05, 0xf6, - 0xab, 0xe1, 0x11, 0xef, 0x1d, 0x5c, 0xe9, 0x90, 0xb6, 0xc4, 0xe2, 0x59, - 0xec, 0x8a, 0x21, 0x28, 0x33, 0x0d, 0xea, 0x84, 0x6c, 0xc0, 0x97, 0x8e, - 0x2d, 0xb7, 0x7b, 0x22, 0xa4, 0x77, 0xc7, 0xab, 0xa8, 0xda, 0xcd, 0x98, - 0xf4, 0xc0, 0x68, 0x3d, 0x7b, 0xa9, 0x5f, 0x86, 0x36, 0xe2, 0x14, 0x39, - 0xa8, 0x8d, 0xb0, 0x9a, 0x48, 0x7e, 0xde, 0x83, 0x44, 0x76, 0x71, 0x43, - 0xcf, 0x77, 0x4d, 0xf5, 0x57, 0xd7, 0xac, 0xae, 0xc9, 0xc7, 0x50, 0xeb, - 0xaf, 0xcf, 0x74, 0x99, 0x59, 0x65, 0x6b, 0x1f, 0x34, 0x35, 0x9e, 0x21, - 0xb0, 0x30, 0xb0, 0x25, 0xe9, 0x5c, 0x83, 0x2b, 0x42, 0x85, 0xac, 0x41, - 0x80, 0xbb, 0x1c, 0xc5, 0x7e, 0x3a, 0xd4, 0x6c, 0x38, 0x2e, 0xdd, 0x0a, - 0x9a, 0xf7, 0xe9, 0x91, 0x73, 0xf5, 0x42, 0x2b, 0xee, 0x04, 0x8f, 0x89, - 0xfe, 0x72, 0x53, 0x11, 0xa4, 0x83, 0x21, 0xd2, 0xc8, 0x83, 0x49, 0xdd, - 0x74, 0xc9, 0x59, 0x3e, 0xac, 0x17, 0x2f, 0x6e, 0x9d, 0x3a, 0x8e, 0xc2, - 0xa5, 0x35, 0xe4, 0x58, 0xb7, 0x06, 0x5a, 0xcd, 0xf6, 0x1c, 0x81, 0x8d, - 0xc7, 0x8d, 0x11, 0xd2, 0x0d, 0xe4, 0xcd, 0x21, 0x70, 0x39, 0x9d, 0x80, - 0xea, 0x75, 0xa3, 0x7f, 0x74, 0x15, 0xc6, 0xea, 0x51, 0x37, 0x04, 0x4b, - 0xc4, 0x46, 0xcd, 0x62, 0xeb, 0x84, 0x72, 0x5a, 0x9b, 0xf4, 0x3b, 0xad, - 0xd9, 0x34, 0x40, 0xbc, 0xb5, 0xc0, 0x1d, 0x27, 0x4d, 0xa3, 0xe9, 0x16, - 0x65, 0x3e, 0x76, 0x49, 0x77, 0xec, 0xe5, 0x3b, 0x48, 0xef, 0xea, 0x36, - 0x58, 0xac, 0xed, 0xa1, 0x1f, 0x96, 0x82, 0x40, 0xf8, 0x27, 0xc0, 0xfc, - 0xe1, 0xde, 0x2e, 0x1a, 0xca, 0x39, 0xd8, 0xda, 0x09, 0x92, 0xd6, 0x8d, - 0xc1, 0x7b, 0xa9, 0xaa, 0xfc, 0xe7, 0xad, 0xe8, 0xa7, 0x4f, 0xbc, 0x82, - 0x0b, 0x82, 0x60, 0xf5, 0x72, 0x21, 0x44, 0xab, 0x25, 0x19, 0x94, 0x79, - 0x8d, 0x48, 0x6c, 0x7c, 0x4e, 0x10, 0x5f, 0x14, 0x88, 0xb8, 0x9f, 0xd0, - 0xa5, 0xab, 0x0d, 0x0b, 0xba, 0xcf, 0xd2, 0x07, 0x54, 0xd3, 0x9b, 0xcb, - 0x8f, 0x90, 0x6d, 0x7d, 0xd1, 0x8a, 0xf9, 0xab, 0xed, 0x43, 0x7c, 0x21, - 0x21, 0x46, 0x70, 0x80, 0x66, 0xdb, 0x96, 0x0c, 0xfd, 0x8b, 0x6f, 0xee, - 0xcd, 0x96, 0x01, 0x91, 0x62, 0x35, 0xdc, 0x46, 0x2b, 0x7c, 0x7c, 0x85, - 0xa1, 0x8f, 0xaf, 0x20, 0x70, 0x89, 0xd9, 0xee, 0x11, 0x29, 0x0f, 0xfa, - 0x4f, 0xb3, 0xdc, 0xab, 0xbc, 0x0d, 0x06, 0x95, 0xcf, 0x50, 0xd9, 0x77, - 0xd3, 0xb0, 0x0f, 0xba, 0xe0, 0x1e, 0xd1, 0xc7, 0x1f, 0x32, 0xc7, 0x7e, - 0xb1, 0x43, 0x69, 0x20, 0xd2, 0xd5, 0xd9, 0xc4, 0x76, 0xf4, 0x68, 0x2d, - 0xdb, 0x69, 0xbb, 0x9a, 0x6e, 0x87, 0xe3, 0x63, 0x53, 0xfb, 0xb0, 0x60, - 0x75, 0x84, 0x23, 0xf1, 0x48, 0xd8, 0x41, 0x81, 0x33, 0xdb, 0x23, 0x7e, - 0xed, 0xa4, 0xe8, 0xf4, 0xe5, 0x05, 0x5c, 0x20, 0x99, 0xba, 0x37, 0xe7, - 0x85, 0xb9, 0xce, 0x5e, 0x21, 0xdc, 0xa2, 0xe1, 0x80, 0xf9, 0x95, 0x86, - 0xe8, 0x88, 0xd0, 0xee, 0xb3, 0xfd, 0x50, 0x33, 0xc8, 0xb7, 0x0c, 0xe3, - 0x9a, 0x94, 0x1f, 0xef, 0x0a, 0xe1, 0xfc, 0x63, 0xe7, 0x2b, 0x60, 0x99, - 0xa6, 0x23, 0x4b, 0xf7, 0x50, 0x9a, 0x25, 0xf6, 0xbe, 0x72, 0x4f, 0xeb, - 0xc5, 0x44, 0x90, 0x91, 0x68, 0xf8, 0xa0, 0x3f, 0x91, 0xba, 0x83, 0x2c, - 0x18, 0xdd, 0xd9, 0xc8, 0xff, 0x40, 0x05, 0xf2, 0xa6, 0xa8, 0x9e, 0x75, - 0xb2, 0xc2, 0x2d, 0x39, 0x33, 0x64, 0x75, 0xd2, 0x9b, 0x22, 0x90, 0xec, - 0x98, 0xdc, 0xbd, 0x86, 0x9c, 0x2b, 0x00, 0xde, 0xcd, 0x88, 0xc7, 0x49, - 0x33, 0x9a, 0x09, 0xb0, 0x17, 0x09, 0x04, 0xbc, 0x3b, 0x77, 0xee, 0xfe, - 0x59, 0x7b, 0xba, 0xe7, 0x43, 0x7d, 0xb6, 0x62, 0x6b, 0xef, 0xd7, 0x82, - 0x54, 0x1e, 0xbc, 0x87, 0x98, 0x55, 0x31, 0x0b, 0xcb, 0x85, 0x9b, 0x21, - 0x68, 0xf5, 0x79, 0x0e, 0xd6, 0x2f, 0xa7, 0xa0, 0xee, 0x8b, 0x44, 0xcd, - 0xcf, 0x76, 0xe3, 0x0a, 0x62, 0x8a, 0xff, 0xbf, 0xe1, 0x1a, 0xc8, 0xd3, - 0x30, 0x9a, 0x1d, 0x5b, 0x7d, 0x6a, 0x75, 0x79, 0x5a, 0x60, 0x32, 0x62, - 0x1f, 0xae, 0xc5, 0x1d, 0xc0, 0x96, 0xfb, 0xb9, 0x35, 0x69, 0xec, 0x3e, - 0xc9, 0xef, 0x06, 0x47, 0x37, 0x00, 0xa8, 0x52, 0x46, 0xd5, 0xde, 0x83, - 0xd0, 0x1a, 0x52, 0x16, 0xb3, 0x61, 0xff, 0x5f, 0x43, 0x3e, 0xd4, 0xd9, - 0x8b, 0x8a, 0x87, 0x1f, 0xbe, 0x4f, 0x17, 0xc4, 0x2e, 0xf6, 0x5d, 0xe7, - 0xcf, 0xcb, 0x2a, 0x4a, 0xb4, 0x98, 0x92, 0xa1, 0x1d, 0xdb, 0xc3, 0x3b, - 0x8b, 0x96, 0xfe, 0xad, 0xbd, 0xd7, 0xac, 0x2a, 0x28, 0xa1, 0x04, 0xad, - 0x40, 0x46, 0x96, 0xfe, 0x05, 0x7a, 0xf0, 0x9b, 0x0b, 0x50, 0x09, 0xff, - 0xbf, 0xc2, 0x9c, 0xbc, 0x4b, 0xb3, 0xda, 0xf8, 0x62, 0xb6, 0x68, 0x56, - 0xd6, 0x8d, 0x16, 0x5a, 0xaa, 0x44, 0x3e, 0x33, 0x17, 0xb6, 0xbc, 0xc4, - 0xb3, 0x4f, 0xdf, 0xb6, 0x47, 0xfc, 0x9c, 0x50, 0x35, 0x23, 0xa1, 0xcb, - 0x5a, 0xfb, 0xf0, 0x59, 0x26, 0xc1, 0x16, 0x99, 0xe0, 0x29, 0x0a, 0xff, - 0x5d, 0xa4, 0x46, 0x31, 0x39, 0x68, 0xff, 0x4f, 0x5d, 0xbe, 0xc5, 0xbc, - 0xed, 0xc9, 0x50, 0x95, 0x41, 0x3c, 0x4f, 0x41, 0xd3, 0x57, 0xa3, 0x28, - 0xb8, 0xec, 0x20, 0xc3, 0x63, 0xb5, 0x54, 0xbc, 0x8e, 0x91, 0xfd, 0xa8, - 0x14, 0xcc, 0xc1, 0x90, 0x53, 0xb9, 0x54, 0x4d, 0x5f, 0x69, 0xd7, 0xb3, - 0x44, 0x7f, 0x60, 0xb9, 0x46, 0xd5, 0x66, 0x9f, 0x08, 0xdc, 0x50, 0x2d, - 0x9b, 0x49, 0xb5, 0x6d, 0x59, 0x8b, 0x2f, 0x58, 0x69, 0x8f, 0xfa, 0xaa, - 0x1a, 0xd2, 0x6b, 0x9f, 0x3b, 0x85, 0x25, 0x03, 0xcc, 0xf4, 0xee, 0x14, - 0x80, 0x34, 0xf7, 0x51, 0xef, 0x1a, 0x71, 0x9c, 0x88, 0xc9, 0xfc, 0x5f, - 0xa0, 0x29, 0xa2, 0x31, 0x64, 0xdd, 0x5a, 0xff, 0x56, 0xc2, 0x1d, 0xcc, - 0xa1, 0x23, 0x1e, 0x41, 0xbc, 0x0b, 0xee, 0x0e, 0xea, 0xc4, 0x1d, 0x0a, - 0xbe, 0x4e, 0x5f, 0xe4, 0xf7, 0xe3, 0x9a, 0xdf, 0xc0, 0xd4, 0x6d, 0xe3, - 0xc0, 0x51, 0xe6, 0x7d, 0x13, 0xe1, 0x5a, 0x11, 0x67, 0x5d, 0xa1, 0x5e, - 0xde, 0xee, 0x43, 0xf5, 0xa5, 0x73, 0xf8, 0xd0, 0x84, 0x8b, 0x9b, 0xde, - 0xbb, 0x66, 0x0f, 0x69, 0x42, 0xfd, 0xab, 0x87, 0x49, 0xc0, 0x0e, 0xa7, - 0x55, 0x6b, 0x54, 0x90, 0x1a, 0xa6, 0x09, 0x5b, 0x14, 0x3d, 0x02, 0xe4, - 0x34, 0xf7, 0x8b, 0x47, 0x51, 0xc4, 0xa1, 0x7b, 0xb1, 0xa4, 0xaf, 0x26, - 0x91, 0xed, 0x13, 0x8f, 0x9b, 0x9f, 0xf6, 0xd9, 0xe3, 0x55, 0xf2, 0x3b, - 0x22, 0xb0, 0x65, 0xa6, 0x16, 0x2c, 0xad, 0x4c, 0xb4, 0x54, 0x35, 0xed, - 0x94, 0x64, 0x90, 0x4a, 0xf0, 0x48, 0xa3, 0x4a, 0x12, 0x74, 0xb3, 0x40, - 0xff, 0xac, 0x46, 0x17, 0x64, 0xb5, 0x6b, 0x5d, 0x63, 0x1a, 0xe7, 0xdf, - 0xcc, 0x91, 0xcd, 0x01, 0x49, 0xa4, 0xb5, 0xb8, 0x8b, 0xec, 0x63, 0xba, - 0xae, 0xc5, 0x58, 0x56, 0x07, 0xc8, 0x4c, 0x61, 0x82, 0x2e, 0xa3, 0x08, - 0xa4, 0x6f, 0x7d, 0xcd, 0x56, 0x53, 0x5f, 0xb1, 0xd7, 0x1f, 0x37, 0x72, - 0x51, 0xc8, 0x42, 0xb9, 0x15, 0x55, 0x8f, 0xef, 0x4f, 0x8a, 0xfe, 0xa3, - 0x63, 0x70, 0xb7, 0x8e, 0x20, 0x65, 0x23, 0x21, 0xf1, 0xe3, 0xc7, 0x76, - 0x09, 0xed, 0x71, 0x0a, 0x34, 0xd3, 0x5b, 0x71, 0xc2, 0x5a, 0x53, 0xea, - 0x28, 0xa1, 0x70, 0xce, 0x96, 0x18, 0xe7, 0xa5, 0xe9, 0x53, 0x8d, 0x89, - 0x98, 0x20, 0xeb, 0xe7, 0x91, 0xb0, 0xe1, 0x82, 0x3d, 0xde, 0x5e, 0x78, - 0x38, 0xfc, 0x44, 0x06, 0x59, 0x13, 0x4d, 0x2e, 0x08, 0xf2, 0xd4, 0x75, - 0xc9, 0x76, 0xa5, 0x37, 0x8b, 0xc8, 0x2b, 0x9f, 0x00, 0x73, 0xc2, 0xd0, - 0xfb, 0x88, 0x50, 0x1d, 0xf2, 0x5e, 0x85, 0x46, 0x05, 0xf7, 0x56, 0x46, - 0xa5, 0x0b, 0xd3, 0x58, 0xdf, 0x52, 0xe7, 0x27, 0xc4, 0x53, 0xf0, 0xcd, - 0x7b, 0x26, 0x5d, 0x1b, 0x16, 0x07, 0xa7, 0xb1, 0x34, 0xdb, 0xeb, 0x47, - 0x35, 0x4f, 0x6e, 0xf1, 0x05, 0x98, 0x75, 0x64, 0x4d, 0x5d, 0x7e, 0x95, - 0x7a, 0x54, 0x96, 0x7b, 0x83, 0x73, 0x22, 0xcb, 0xa4, 0xfb, 0x6a, 0xdf, - 0x18, 0x7e, 0x6a, 0xe4, 0x52, 0xef, 0x70, 0x9b, 0xda, 0xf9, 0xa2, 0x8c, - 0x05, 0x3d, 0xc5, 0xd3, 0x5a, 0x5f, 0x61, 0xdd, 0x8c, 0xf1, 0x6a, 0x7f, - 0xa7, 0xad, 0x0a, 0x1f, 0xb3, 0x81, 0xdc, 0x78, 0xb6, 0x21, 0x12, 0x39, - 0xfa, 0x66, 0xe2, 0xe4, 0x8a, 0x57, 0x65, 0x5d, 0x55, 0x37, 0x1d, 0x35, - 0xca, 0x0e, 0x1a, 0x21, 0x88, 0x32, 0x10, 0x3b, 0x3e, 0x6b, 0x23, 0x43, - 0xd9, 0xaa, 0x77, 0xc0, 0x57, 0x5e, 0x23, 0x2f, 0x26, 0x93, 0x2a, 0xf1, - 0x79, 0x9c, 0xcb, 0x9e, 0xa8, 0xe1, 0x1b, 0xf2, 0xd6, 0x7d, 0x2b, 0x29, - 0xe6, 0x1a, 0x0a, 0x07, 0x75, 0xb6, 0x32, 0x41, 0xb5, 0xb5, 0xb6, 0xae, - 0xd4, 0x5d, 0x0c, 0xf8, 0x24, 0x19, 0x34, 0x7b, 0x77, 0xc5, 0x87, 0xf2, - 0xba, 0x91, 0x0a, 0xa9, 0x37, 0x01, 0x2c, 0x91, 0xac, 0x9c, 0x0a, 0xf6, - 0xed, 0xd8, 0xc3, 0x3d, 0xc4, 0x09, 0x6a, 0xb0, 0x02, 0x6d, 0x52, 0x0f, - 0x76, 0x08, 0x3c, 0xa4, 0x74, 0x81, 0xec, 0x99, 0x3d, 0xde, 0xe0, 0x9c, - 0xd0, 0xc1, 0x1e, 0x24, 0xa3, 0xec, 0x97, 0x18, 0x6f, 0xea, 0x80, 0x82, - 0x0c, 0xf1, 0xe3, 0x23, 0x72, 0xdb, 0xd3, 0xf2, 0x8a, 0x9f, 0x04, 0x87, - 0xb3, 0xe1, 0x02, 0x5c, 0x24, 0x2f, 0x06, 0x5d, 0x05, 0x02, 0x47, 0x70, - 0x72, 0xa4, 0x83, 0xcd, 0xf4, 0xa9, 0xbb, 0x5a, 0x98, 0xb0, 0xab, 0x26, - 0x27, 0x58, 0x31, 0x09, 0x0b, 0x3b, 0x1d, 0x3c, 0x01, 0x34, 0xc2, 0xd2, - 0x42, 0x10, 0xa8, 0x59, 0xca, 0x30, 0x30, 0x9d, 0x34, 0x8c, 0x9f, 0x71, - 0x56, 0xdf, 0x77, 0x65, 0x18, 0xac, 0x05, 0x88, 0xbf, 0x1c, 0x5f, 0xb5, - 0xe5, 0x0e, 0x49, 0x04, 0xe2, 0x09, 0x32, 0x1f, 0xfb, 0x38, 0xcc, 0x5a, - 0xda, 0x43, 0xc3, 0x47, 0x1f, 0xd7, 0x5f, 0x42, 0x54, 0xb6, 0x60, 0x4d, - 0x2e, 0xe9, 0x13, 0xd1, 0x21, 0xd1, 0xd1, 0x9e, 0x92, 0x8f, 0x46, 0x05, - 0x6d, 0x36, 0xb8, 0x94, 0x96, 0x92, 0x87, 0xcf, 0xc1, 0xc6, 0x27, 0x8d, - 0x76, 0xb0, 0x42, 0x8d, 0x74, 0xf4, 0x2f, 0x99, 0x5e, 0xf2, 0x23, 0x7e, - 0x61, 0x35, 0x67, 0x83, 0x79, 0x32, 0xe3, 0x52, 0x07, 0xb4, 0x51, 0x13, - 0xb1, 0xad, 0x65, 0xc1, 0x6a, 0x7e, 0xf5, 0x5f, 0x45, 0x5d, 0xdc, 0x95, - 0xfb, 0x76, 0xd8, 0x5f, 0xa3, 0x58, 0xe9, 0x18, 0x50, 0xf6, 0x68, 0x39, - 0xb9, 0x49, 0xb0, 0x99, 0x9d, 0x1c, 0x6c, 0x77, 0x2c, 0x55, 0x70, 0xd5, - 0xf5, 0x95, 0x4e, 0x7f, 0xf9, 0x02, 0x7d, 0x1a, 0xb4, 0x45, 0xf6, 0x3f, - 0x73, 0xa5, 0x91, 0x24, 0x58, 0xf7, 0xfb, 0x6b, 0x04, 0x85, 0xa8, 0x76, - 0x4d, 0xee, 0xb5, 0xce, 0xe2, 0x7d, 0x67, 0x55, 0x1b, 0xbd, 0x94, 0xe9, - 0xf7, 0xe7, 0x5d, 0xe8, 0xb6, 0x3b, 0xb0, 0x2d, 0x03, 0xf4, 0x25, 0x68, - 0xe6, 0x0a, 0x97, 0x0a, 0x05, 0xcd, 0xac, 0x51, 0x5f, 0x99, 0x2e, 0x8f, - 0x9b, 0xc1, 0xc0, 0xcd, 0x52, 0x9a, 0x88, 0x52, 0xdf, 0xcb, 0x69, 0x8f, - 0x3c, 0x5b, 0x88, 0x52, 0xf5, 0x44, 0xa2, 0x92, 0xd3, 0xd4, 0xc2, 0xea, - 0xfb, 0x4d, 0xf4, 0x4a, 0x4a, 0xc9, 0xc9, 0x4f, 0x96, 0x7d, 0x37, 0x4f, - 0xbc, 0xc8, 0xb2, 0x7f, 0x64, 0xf0, 0x09, 0x93, 0xdc, 0xfa, 0x10, 0xc9, - 0x33, 0x1e, 0x67, 0x04, 0x11, 0xf0, 0xf4, 0x35, 0x35, 0xe7, 0xf5, 0x7b, - 0x47, 0x81, 0x9e, 0xe9, 0xad, 0xa4, 0xe4, 0xf3, 0x12, 0x09, 0x18, 0x54, - 0x2f, 0xf3, 0x91, 0x81, 0xd2, 0x35, 0x5d, 0x21, 0x9f, 0xf0, 0xc6, 0x0c, - 0x6d, 0xda, 0x8c, 0x73, 0x18, 0x29, 0xdc, 0x70, 0x7f, 0x13, 0x4b, 0x4e, - 0xc1, 0x6f, 0x51, 0xaf, 0x7b, 0xcd, 0x63, 0x29, 0xac, 0xc7, 0x5a, 0x83, - 0x88, 0xee, 0x77, 0x0d, 0x25, 0xbb, 0x05, 0xa6, 0x04, 0xe3, 0xfd, 0x6b, - 0x30, 0x01, 0xdd, 0x2e, 0xdd, 0x0c, 0xe8, 0xba, 0xb6, 0x19, 0x43, 0x2b, - 0x0b, 0x37, 0x5e, 0x98, 0xff, 0xc0, 0xcf, 0x8a, 0xe5, 0xea, 0xb8, 0x33, - 0x52, 0xae, 0x6a, 0x22, 0xa8, 0x0c, 0x2c, 0x8f, 0xcc, 0x03, 0x06, 0x4a, - 0x30, 0x7f, 0x10, 0xd3, 0xe8, 0x71, 0x79, 0xc4, 0xb8, 0xcf, 0xd9, 0xb9, - 0xa4, 0x34, 0x3a, 0xf3, 0xf7, 0xcf, 0x53, 0xa3, 0x9d, 0x17, 0xb9, 0xd1, - 0xdd, 0xa2, 0xe3, 0x76, 0xa5, 0x8a, 0x79, 0xf6, 0xca, 0xf2, 0x07, 0x29, - 0x5e, 0x8d, 0x27, 0x69, 0xc5, 0xce, 0x96, 0x20, 0xc0, 0x03, 0x39, 0xd0, - 0x6f, 0xa0, 0x3c, 0xb6, 0x4d, 0xc9, 0x2c, 0x79, 0xd2, 0x8e, 0xa0, 0xf7, - 0x37, 0x94, 0xbd, 0x44, 0x00, 0xd9, 0xad, 0x33, 0x73, 0x51, 0x38, 0xbe, - 0x2c, 0x6b, 0x58, 0xbf, 0x40, 0x1d, 0xd7, 0x79, 0xff, 0x88, 0x52, 0xe7, - 0xe9, 0x47, 0xfa, 0x65, 0xc3, 0xf0, 0xa0, 0x56, 0xd2, 0xf1, 0xce, 0xcf, - 0x8a, 0xab, 0x10, 0xfa, 0x28, 0xe8, 0xb3, 0xe1, 0xab, 0x68, 0x2c, 0xef, - 0xf3, 0xad, 0xd1, 0xbc, 0x2d, 0x19, 0xe2, 0x08, 0xbe, 0x21, 0xc5, 0xae, - 0x69, 0x65, 0x3f, 0x87, 0x6e, 0xa4, 0xc5, 0xb3, 0x8f, 0x76, 0xd1, 0x07, - 0x8d, 0xcf, 0xe2, 0x99, 0xa0, 0x8b, 0xce, 0x23, 0x2a, 0x81, 0x8c, 0x8e, - 0xdd, 0x12, 0x6c, 0x06, 0xae, 0x8e, 0x7e, 0x31, 0xe2, 0x97, 0xb5, 0xe5, - 0x05, 0x85, 0xc3, 0x2c, 0x56, 0x3d, 0xe9, 0x12, 0xc2, 0x41, 0xb2, 0x48, - 0x9d, 0x7f, 0x0c, 0xc2, 0xdc, 0x18, 0x94, 0xb4, 0x68, 0x8d, 0xc3, 0x4d, - 0x60, 0x8c, 0x9e, 0xb2, 0x1f, 0xea, 0xe8, 0x40, 0x8e, 0x9b, 0x3c, 0xb2, - 0xe2, 0x36, 0xbd, 0x3d, 0xe8, 0xbc, 0x2e, 0x9e, 0x91, 0xd2, 0x67, 0x43, - 0xe3, 0x27, 0x52, 0xe7, 0xb1, 0x05, 0xa7, 0x7d, 0x6e, 0xa4, 0x57, 0x90, - 0x6b, 0x72, 0x26, 0xb2, 0x92, 0x99, 0x79, 0x72, 0xe6, 0x85, 0xbf, 0xbe, - 0xea, 0x02, 0x2c, 0x44, 0x49, 0x7b, 0xe9, 0xb2, 0x34, 0xd9, 0x08, 0x3c, - 0x4f, 0xfd, 0x44, 0x9b, 0x79, 0xd8, 0x9f, 0x57, 0x0c, 0x55, 0xb5, 0x50, - 0x6b, 0x1f, 0xec, 0x2c, 0x48, 0xe1, 0x41, 0x30, 0x71, 0xca, 0x6e, 0x8f, - 0xf8, 0x82, 0xcf, 0xb3, 0xc2, 0x0d, 0x33, 0x2f, 0x53, 0xb7, 0x1e, 0xb5, - 0x5e, 0xf5, 0x31, 0x19, 0xd3, 0xe8, 0x25, 0x39, 0x23, 0xfd, 0x18, 0xdc, - 0x7a, 0xd8, 0xaf, 0xd3, 0xb1, 0x76, 0xf9, 0x21, 0xb3, 0xb5, 0xdc, 0xd5, - 0xfc, 0x00, 0x6b, 0x84, 0xcb, 0xb6, 0x7f, 0xb4, 0x4e, 0x9d, 0x53, 0xbf, - 0x8f, 0x1b, 0x54, 0x10, 0xd5, 0xec, 0x67, 0x50, 0xa3, 0x2d, 0x41, 0x16, - 0xdd, 0xb0, 0x8d, 0xab, 0x13, 0x9d, 0x9d, 0x56, 0xda, 0x8b, 0xca, 0x56, - 0x24, 0x53, 0x85, 0x43, 0xe6, 0xac, 0xf6, 0x61, 0xe5, 0xf6, 0x8c, 0xc1, - 0xf6, 0x5f, 0x63, 0xf9, 0xb9, 0xa6, 0x72, 0x7f, 0x94, 0x6c, 0xee, 0x69, - 0xe1, 0xc5, 0x61, 0x47, 0xce, 0x91, 0x93, 0xae, 0xf2, 0xb5, 0x07, 0xd7, - 0xb1, 0x9b, 0x53, 0x0a, 0x23, 0x7d, 0x3a, 0xfe, 0x29, 0x5f, 0x09, 0x2c, - 0xdd, 0x83, 0xc7, 0x90, 0x75, 0x10, 0x91, 0x4b, 0xaf, 0x9e, 0x05, 0xf9, - 0xd6, 0x73, 0x6e, 0xcc, 0x6a, 0xc5, 0x6e, 0x4b, 0x14, 0x76, 0xaf, 0xd5, - 0xcb, 0xdd, 0x08, 0x64, 0xa2, 0x7c, 0xe3, 0xd6, 0x02, 0x5c, 0x71, 0x29, - 0xfe, 0xeb, 0xb0, 0x19, 0xd2, 0x78, 0xd9, 0x83, 0xc3, 0xa3, 0x6a, 0xd7, - 0x67, 0xb8, 0x72, 0x44, 0x1a, 0x1f, 0x14, 0x81, 0x90, 0x8e, 0xbd, 0x17, - 0x3e, 0x4e, 0x40, 0x71, 0x35, 0x2c, 0x19, 0x78, 0x22, 0xdc, 0xb6, 0xa2, - 0x47, 0xfb, 0x2e, 0xce, 0xb9, 0x7f, 0xc2, 0x21, 0x38, 0x7d, 0xfe, 0xf7, - 0x76, 0xc4, 0xa8, 0xfa, 0x45, 0x20, 0x2e, 0x85, 0x1e, 0x5c, 0xdd, 0xcb, - 0xb0, 0x31, 0x50, 0x34, 0x7d, 0x7f, 0xff, 0xd5, 0x44, 0x9e, 0x11, 0x35, - 0x4a, 0xba, 0x05, 0x35, 0xaa, 0x09, 0x3f, 0x64, 0xcb, 0xd4, 0x7f, 0xaf, - 0x92, 0x6b, 0xc7, 0x5a, 0x27, 0x2b, 0x24, 0x09, 0x0a, 0xad, 0x5e, 0xf7, - 0xb7, 0xf6, 0x82, 0x9b, 0xa6, 0x2d, 0xf5, 0x2a, 0x5f, 0xc3, 0x98, 0x05, - 0x27, 0x92, 0xd6, 0xf0, 0xba, 0xc1, 0xc4, 0x62, 0x69, 0x69, 0x88, 0x6d, - 0x84, 0x53, 0x9b, 0x6f, 0x95, 0x7d, 0x81, 0xac, 0x3c, 0xcf, 0x65, 0xac, - 0x18, 0x7e, 0x0d, 0x5d, 0x6f, 0xf8, 0x1b, 0xf2, 0x4d, 0xce, 0x1d, 0x01, - 0xae, 0x3f, 0x03, 0x8e, 0x7a, 0x37, 0x1b, 0x76, 0xd6, 0x3a, 0xdf, 0x25, - 0x33, 0x50, 0xef, 0x96, 0xaf, 0xfc, 0xd1, 0xa1, 0x9a, 0x29, 0xb1, 0xd6, - 0xdf, 0x0d, 0x00, 0xaa, 0xb6, 0x39, 0xd3, 0xab, 0x0f, 0x27, 0x01, 0xd8, - 0x05, 0x14, 0x56, 0x55, 0x75, 0x56, 0x48, 0xb6, 0x87, 0x50, 0xac, 0x24, - 0x3c, 0x3c, 0x0f, 0x85, 0x18, 0xfe, 0x98, 0xf4, 0x7d, 0x7c, 0x47, 0x02, - 0xa8, 0xca, 0xc6, 0xa0, 0x01, 0x57, 0xe4, 0xf3, 0x2e, 0xe8, 0x0f, 0x87, - 0xef, 0x32, 0x15, 0xe9, 0x44, 0x4f, 0x82, 0x07, 0x0e, 0xb0, 0x17, 0xed, - 0x03, 0x5b, 0xfd, 0x6e, 0x48, 0x54, 0x36, 0xe4, 0xf2, 0x4e, 0x39, 0xd1, - 0x9d, 0xb3, 0xb5, 0x7c, 0x41, 0xda, 0x87, 0x1f, 0x76, 0x5d, 0xc8, 0x80, - 0x8e, 0x0c, 0x60, 0xed, 0x24, 0xf8, 0xdd, 0xa7, 0x1b, 0x81, 0xa5, 0x4f, - 0x48, 0x6d, 0x57, 0xac, 0xee, 0xb1, 0x84, 0x91, 0x74, 0xb4, 0x71, 0x95, - 0xd3, 0x17, 0xa7, 0x10, 0xd5, 0x71, 0x2c, 0x10, 0x7a, 0x94, 0x4f, 0x72, - 0xeb, 0x4a, 0x25, 0xe7, 0xd6, 0x1c, 0x91, 0x16, 0x89, 0xef, 0x03, 0xea, - 0xcf, 0x85, 0xc2, 0x23, 0xf0, 0x57, 0x39, 0xa7, 0xcb, 0x60, 0x5c, 0x89, - 0xad, 0x1a, 0x5c, 0x3c, 0xbb, 0x8e, 0xaf, 0xa5, 0xf5, 0x1e, 0x97, 0xed, - 0xd4, 0xc7, 0x7a, 0x72, 0xb3, 0x97, 0x1a, 0x46, 0xbf, 0xa0, 0xe8, 0x20, - 0x85, 0x6b, 0x80, 0xe7, 0xaf, 0xe0, 0xc8, 0x58, 0x36, 0x53, 0x7e, 0xc3, - 0x05, 0xc7, 0x88, 0x17, 0x8d, 0xdf, 0xa0, 0xa5, 0x22, 0x9a, 0x95, 0x59, - 0x9a, 0x2e, 0xd7, 0x10, 0x17, 0xec, 0xe4, 0x55, 0x43, 0x91, 0x18, 0xff, - 0x0b, 0xa1, 0x56, 0xec, 0xf9, 0x80, 0xe9, 0xf3, 0x8d, 0x0b, 0x06, 0x21, - 0xf5, 0xf4, 0x3e, 0x0f, 0x9a, 0x45, 0xb7, 0xc6, 0xe3, 0x2c, 0x52, 0xfb, - 0x0d, 0x1e, 0xd4, 0xb3, 0xed, 0x72, 0xf0, 0x63, 0x68, 0x7b, 0x20, 0x12, - 0xf9, 0x19, 0x97, 0xb4, 0x00, 0xfa, 0x09, 0xb0, 0x92, 0x3b, 0x84, 0xf8, - 0xa0, 0xaf, 0xe0, 0x5c, 0x9a, 0x16, 0x00, 0x2d, 0xf8, 0xc9, 0x6a, 0xbd, - 0xe0, 0x16, 0xf6, 0xbc, 0xcc, 0x23, 0x98, 0xa5, 0xab, 0xfb, 0x52, 0x91, - 0x24, 0xe6, 0xf4, 0x1d, 0xa3, 0xd8, 0xd5, 0x34, 0x60, 0xac, 0xe9, 0x66, - 0xc0, 0xee, 0xf9, 0xfb, 0xad, 0x01, 0xeb, 0xda, 0x08, 0xdf, 0x19, 0x79, - 0xdc, 0x4f, 0xc0, 0x0e, 0xaa, 0x56, 0x06, 0x3c, 0x41, 0xf1, 0x8f, 0x52, - 0xdf, 0x15, 0x6a, 0xba, 0x63, 0x94, 0x12, 0x99, 0x91, 0x2d, 0x9b, 0x7e, - 0x99, 0xc1, 0xdd, 0x7e, 0xc7, 0x0b, 0x6c, 0x74, 0xa5, 0x98, 0xdd, 0x14, - 0x83, 0xfc, 0xf2, 0x41, 0xdd, 0x3f, 0xf0, 0xdb, 0xe4, 0xb7, 0x27, 0x36, - 0x5a, 0x2c, 0xd7, 0x9c, 0x58, 0x84, 0x43, 0x56, 0xb0, 0x1b, 0x30, 0xe2, - 0xfd, 0x7d, 0xa5, 0x37, 0x92, 0xfe, 0x79, 0xd4, 0x04, 0xc7, 0xec, 0x22, - 0x46, 0x85, 0x4a, 0x9f, 0xfe, 0x68, 0x65, 0x38, 0x93, 0x3a, 0x86, 0x5c, - 0x87, 0x5f, 0x60, 0xf6, 0xbe, 0x1a, 0xb4, 0x63, 0x5d, 0x7b, 0xd5, 0x07, - 0xca, 0x06, 0xfc, 0x3c, 0xb8, 0x28, 0xd7, 0x60, 0xee, 0x4d, 0xca, 0xba, - 0x6b, 0x78, 0x71, 0xec, 0xc4, 0xb0, 0x52, 0x0d, 0xec, 0x67, 0x98, 0x28, - 0x80, 0x55, 0xc9, 0x2d, 0x53, 0xb3, 0x9c, 0xb8, 0x72, 0x2c, 0x85, 0x7e, - 0xd4, 0xa8, 0x83, 0xd2, 0xa6, 0xc3, 0x8c, 0xee, 0x1a, 0xd5, 0x4a, 0xa5, - 0xd7, 0x56, 0x35, 0x01, 0xfe, 0xa5, 0xbb, 0xd9, 0x83, 0x3a, 0x47, 0xbb, - 0x5a, 0x7c, 0x54, 0xa0, 0xde, 0x60, 0x34, 0xb2, 0xa5, 0x22, 0x0d, 0xeb, - 0x76, 0xeb, 0xf1, 0xfe, 0x81, 0xea, 0x1f, 0x44, 0x82, 0xd6, 0x2b, 0xe5, - 0x89, 0x7d, 0x8c, 0x4a, 0xcc, 0xac, 0x69, 0xfd, 0x91, 0x2b, 0x9f, 0x2d, - 0x10, 0x58, 0x7a, 0x0e, 0x12, 0x54, 0xb8, 0x4f, 0x81, 0x1e, 0xe9, 0xe3, - 0x44, 0x4a, 0x83, 0xd4, 0x89, 0x5f, 0x1e, 0xb7, 0x16, 0xd1, 0xa5, 0x17, - 0x52, 0x9c, 0x1d, 0xe9, 0x1d, 0x91, 0x4c, 0xf9, 0x4a, 0xe3, 0x8c, 0x57, - 0xf5, 0x38, 0x79, 0x8e, 0x45, 0x74, 0xfb, 0xe5, 0x99, 0x17, 0xc8, 0x36, - 0x7a, 0x65, 0xce, 0x8c, 0x00, 0x16, 0x97, 0x20, 0xbf, 0x3a, 0x79, 0x1b, - 0xb9, 0x0a, 0x51, 0xde, 0x71, 0x13, 0x47, 0x01, 0xfa, 0x55, 0x74, 0x05, - 0xc0, 0x23, 0x0a, 0xa4, 0x92, 0x5d, 0xe7, 0x47, 0x66, 0x29, 0xcf, 0xfc, - 0x82, 0x68, 0x0f, 0xc4, 0x96, 0x2a, 0x89, 0x81, 0x58, 0xb2, 0x92, 0x10, - 0xc4, 0x4b, 0x76, 0x16, 0x24, 0x2c, 0xe7, 0x3d, 0x27, 0x9d, 0x68, 0xce, - 0x27, 0xf8, 0x1c, 0xfc, 0x13, 0x31, 0x3e, 0x15, 0x35, 0x9a, 0x95, 0x08, - 0xcd, 0x4c, 0x0a, 0x3b, 0xe7, 0x02, 0x6b, 0x68, 0x5f, 0xc6, 0x76, 0x54, - 0x75, 0xcf, 0x21, 0xd7, 0x45, 0x31, 0x7e, 0xbb, 0x36, 0x5a, 0xf1, 0x06, - 0x0c, 0x5f, 0xf7, 0x9a, 0xf9, 0x80, 0x01, 0x3f, 0x2d, 0x83, 0xa2, 0x82, - 0x67, 0x09, 0x2e, 0x71, 0x99, 0xc3, 0x0b, 0xd1, 0xb3, 0x50, 0x5b, 0xe7, - 0xef, 0x19, 0x63, 0xfc, 0x2f, 0x66, 0xc6, 0x99, 0x71, 0x1a, 0x2e, 0x6e, - 0x98, 0xb7, 0x02, 0xca, 0x91, 0x37, 0x00, 0x9d, 0x1b, 0x8b, 0x31, 0xfa, - 0xa5, 0x72, 0x95, 0x53, 0x09, 0x31, 0x02, 0x0d, 0xc3, 0x43, 0xb1, 0x26, - 0x97, 0xaf, 0x8f, 0x8c, 0x25, 0xfd, 0x2e, 0x4c, 0xa1, 0xc9, 0x9c, 0x8b, - 0x9c, 0x61, 0x58, 0x1b, 0x60, 0xf8, 0xa7, 0x05, 0x07, 0xdc, 0x1b, 0xe6, - 0x6f, 0xce, 0x0b, 0x4c, 0xe3, 0x57, 0x47, 0x18, 0x30, 0x1a, 0x85, 0x8d, - 0x7d, 0x52, 0xe0, 0x61, 0xc0, 0x43, 0xdd, 0x21, 0xa5, 0x7b, 0x8a, 0x23, - 0xd3, 0x18, 0x31, 0xa3, 0xdd, 0xb4, 0xab, 0xaf, 0x5a, 0x62, 0x45, 0x98, - 0x9e, 0x1e, 0x89, 0x14, 0xfd, 0x7b, 0x4a, 0x2e, 0x32, 0x92, 0x3b, 0xf7, - 0x76, 0x60, 0xb2, 0xbf, 0x96, 0x7b, 0x9f, 0x24, 0x4e, 0xbb, 0x6b, 0x54, - 0x9d, 0xca, 0x15, 0x1b, 0xb8, 0xeb, 0x8f, 0xcb, 0x90, 0x83, 0x40, 0xb7, - 0x24, 0xb4, 0xdf, 0x38, 0x41, 0x34, 0xd7, 0x1b, 0x23, 0xc5, 0xcb, 0x39, - 0xc9, 0x6e, 0x25, 0xc1, 0xa6, 0xce, 0x98, 0xc1, 0xf5, 0x24, 0x4e, 0xa5, - 0x27, 0x27, 0x1a, 0x34, 0x29, 0x40, 0x7f, 0xc7, 0x54, 0xd1, 0xac, 0xd5, - 0xc6, 0x71, 0xab, 0x2c, 0x17, 0x9c, 0x63, 0x28, 0x84, 0xfc, 0xec, 0xb4, - 0xad, 0x44, 0xe3, 0xb5, 0x15, 0x1d, 0x6a, 0xd8, 0x06, 0x11, 0x00, 0x3a, - 0xc5, 0xc9, 0xc1, 0x17, 0xe9, 0x10, 0x6f, 0x76, 0xed, 0xc6, 0x73, 0x7b, - 0x5b, 0x82, 0x9c, 0xbe, 0xa1, 0xd0, 0x0d, 0x2a, 0x26, 0x5d, 0x4e, 0xa1, - 0x61, 0xf2, 0x2d, 0x9a, 0x3d, 0x65, 0x59, 0x9e, 0x25, 0x7b, 0x79, 0x19, - 0x1d, 0x63, 0xde, 0x6d, 0x8f, 0x6a, 0xf1, 0xd9, 0xac, 0x15, 0xa6, 0x4c, - 0x1c, 0x11, 0xcb, 0x5f, 0x72, 0x3d, 0x4f, 0x13, 0x63, 0x21, 0x5d, 0xcd, - 0x1e, 0x33, 0xca, 0xb1, 0x87, 0x82, 0xae, 0x4c, 0x4b, 0x35, 0xc3, 0x34, - 0x40, 0x2d, 0x3b, 0xf0, 0x16, 0x0c, 0x50, 0x25, 0x02, 0x94, 0x83, 0xac, - 0x2d, 0xb6, 0x27, 0x8a, 0xb7, 0xd8, 0xdf, 0x5d, 0x4a, 0x4c, 0x51, 0x11, - 0xd6, 0xf0, 0xca, 0xc7, 0x06, 0xc9, 0xd7, 0xb0, 0x04, 0xba, 0xe3, 0xce, - 0xe3, 0x0c, 0x67, 0x6d, 0xd2, 0x3f, 0xe2, 0x3b, 0xf1, 0x48, 0x31, 0xf2, - 0xf8, 0x2f, 0x9d, 0x40, 0x6c, 0x13, 0x3d, 0x26, 0xd4, 0x60, 0x4f, 0x06, - 0xaf, 0xe4, 0xf7, 0x21, 0xe9, 0xb3, 0x6e, 0xbf, 0xbd, 0xc8, 0x83, 0x18, - 0x0c, 0x13, 0xda, 0xfe, 0x2c, 0x92, 0x9b, 0x8c, 0x7e, 0xc8, 0xd0, 0xd3, - 0x20, 0x99, 0x5a, 0xce, 0xd8, 0xcf, 0x47, 0x32, 0x82, 0x5b, 0x06, 0xb4, - 0x45, 0xd3, 0x16, 0x93, 0x3e, 0xf6, 0x94, 0x64, 0x1c, 0xf4, 0x41, 0xaf, - 0x27, 0xc4, 0x0e, 0x03, 0xb7, 0x44, 0x59, 0xf7, 0x5b, 0xd6, 0xda, 0x55, - 0x34, 0xe1, 0x4a, 0xbf, 0x46, 0x8a, 0x5e, 0xeb, 0xb4, 0xaa, 0x2a, 0xc0, - 0xc3, 0x77, 0x27, 0xea, 0x79, 0xc6, 0x03, 0xfe, 0xd4, 0x18, 0x8c, 0x65, - 0x6e, 0x3c, 0x7e, 0x14, 0x86, 0xe3, 0x9e, 0xfc, 0x76, 0x24, 0x68, 0x17, - 0x66, 0xeb, 0x99, 0x71, 0x87, 0x84, 0x89, 0xf7, 0x38, 0x32, 0xfb, 0x44, - 0xad, 0x74, 0xf5, 0xe3, 0x08, 0x82, 0x31, 0x97, 0xd2, 0x53, 0xd8, 0x09, - 0x36, 0x26, 0x8d, 0x49, 0x4d, 0x1d, 0xa8, 0x6c, 0x7e, 0xe8, 0xae, 0xe3, - 0x66, 0xdf, 0xef, 0x75, 0x65, 0xd9, 0x08, 0xab, 0x2d, 0xa7, 0xfd, 0xe8, - 0x49, 0xf0, 0x01, 0x2e, 0x3d, 0x5a, 0x6a, 0x48, 0x4f, 0xa5, 0xd3, 0x24, - 0x8f, 0xa0, 0xeb, 0xd4, 0xbd, 0x52, 0xfb, 0x03, 0x4d, 0x97, 0x76, 0xba, - 0x08, 0xf2, 0xda, 0xf8, 0xa9, 0xc8, 0x89, 0x3c, 0xe3, 0xf2, 0xdd, 0x44, - 0xe7, 0xdc, 0xf4, 0xd0, 0xa0, 0x10, 0x20, 0x31, 0x15, 0x7a, 0x82, 0x29, - 0x6e, 0xb5, 0xa3, 0x2b, 0x31, 0x94, 0x2f, 0x91, 0x6c, 0x59, 0x34, 0xe6, - 0x2c, 0x31, 0x5d, 0x69, 0x4b, 0x02, 0x49, 0xed, 0xb9, 0x80, 0x83, 0xf4, - 0xa7, 0x18, 0x27, 0xcd, 0x99, 0x42, 0x59, 0xa3, 0x66, 0x81, 0xec, 0x34, - 0x1e, 0xdd, 0x58, 0xc2, 0xa1, 0xd1, 0x70, 0x07, 0x73, 0x88, 0x71, 0x58, - 0xb3, 0x8a, 0x97, 0x71, 0xa9, 0x62, 0xce, 0xc5, 0xb9, 0x1b, 0xa2, 0x3b, - 0xce, 0x59, 0xc1, 0xfa, 0x94, 0x72, 0xb1, 0xe0, 0xe9, 0xb7, 0xb7, 0x1d, - 0x24, 0x13, 0x62, 0x3b, 0x3e, 0x26, 0xae, 0x4d, 0x08, 0x21, 0x09, 0x4d, - 0xe0, 0x8c, 0x1d, 0xb8, 0x81, 0x71, 0xb9, 0xa9, 0x29, 0x09, 0x27, 0x52, - 0x9a, 0x16, 0x30, 0x6d, 0x98, 0xad, 0xa0, 0x18, 0xb8, 0x2c, 0xdd, 0x39, - 0xd1, 0x2a, 0x6a, 0xb4, 0xee, 0x60, 0xf9, 0x15, 0x32, 0x43, 0xb4, 0xeb, - 0x03, 0x68, 0x71, 0x5b, 0x69, 0x77, 0xb1, 0xe6, 0xaa, 0xc4, 0xd5, 0xe8, - 0x13, 0x8a, 0x8b, 0x0e, 0xe3, 0xea, 0x42, 0xcf, 0x4e, 0x14, 0x68, 0xd5, - 0x76, 0xa6, 0x74, 0xf1, 0x98, 0x8e, 0x71, 0x0f, 0x9c, 0x54, 0x60, 0x30, - 0x8c, 0x20, 0xa5, 0x92, 0xfb, 0x16, 0x1f, 0x37, 0xbd, 0xc5, 0xa7, 0x4b, - 0xec, 0x64, 0x7b, 0xb2, 0x2c, 0x42, 0xbd, 0xf2, 0xee, 0x64, 0x41, 0x59, - 0x2d, 0x1e, 0xd0, 0x4e, 0xb8, 0xd5, 0x17, 0x0f, 0xcf, 0xed, 0xe4, 0xe2, - 0x82, 0xed, 0x7a, 0xf5, 0xb1, 0x8b, 0xf8, 0x85, 0xd0, 0x5c, 0x32, 0x5d, - 0xdd, 0x83, 0x27, 0xe4, 0x49, 0xc6, 0x40, 0x77, 0x10, 0xfe, 0x96, 0xe9, - 0x88, 0x80, 0xaa, 0x5d, 0xd1, 0xd6, 0x03, 0x13, 0x30, 0x72, 0xe4, 0x0f, - 0x33, 0x30, 0x67, 0xdf, 0xa9, 0x29, 0x82, 0x54, 0xc7, 0x24, 0xa2, 0x1b, - 0x41, 0xe1, 0x35, 0xa6, 0x1c, 0x81, 0xef, 0x03, 0xe3, 0xac, 0xa7, 0x95, - 0xde, 0x15, 0x8b, 0x20, 0x8b, 0xb4, 0xc6, 0x5d, 0xbd, 0x24, 0x03, 0x99, - 0xc3, 0x25, 0x2b, 0xd5, 0x77, 0x27, 0xaa, 0x25, 0x18, 0xcc, 0x1f, 0x7d, - 0x0f, 0xd8, 0xea, 0x1b, 0xa0, 0x86, 0xd4, 0x70, 0xc3, 0x76, 0x5d, 0xd0, - 0xeb, 0xd0, 0xc6, 0x61, 0xef, 0x60, 0xdc, 0x02, 0x50, 0xae, 0x3f, 0xae, - 0x7e, 0x73, 0x88, 0xb5, 0x2f, 0x93, 0x0b, 0x7b, 0xce, 0xb5, 0x0b, 0x4e, - 0xd4, 0xf5, 0xcc, 0x7e, 0xca, 0x9d, 0x92, 0xbd, 0xb4, 0x97, 0x51, 0x8e, - 0x42, 0xa7, 0xc6, 0xec, 0x65, 0x85, 0xc3, 0xdb, 0x12, 0x6a, 0x24, 0x67, - 0x1f, 0x0a, 0x20, 0x32, 0xf9, 0x16, 0xb5, 0x19, 0xb5, 0x5e, 0x3c, 0x97, - 0xea, 0x30, 0xaf, 0x18, 0xfe, 0x03, 0x00, 0x8c, 0x43, 0x01, 0x62, 0x58, - 0x78, 0xb3, 0x2c, 0xfd, 0x8e, 0xd6, 0xf0, 0xda, 0xd7, 0xbf, 0x40, 0x3f, - 0x1e, 0x6a, 0xbb, 0x96, 0x4c, 0x5f, 0x70, 0xa6, 0xa4, 0x61, 0xda, 0xa6, - 0x91, 0xec, 0xf4, 0xa3, 0x90, 0x53, 0x40, 0xa3, 0x34, 0xba, 0x93, 0x4e, - 0x44, 0xfa, 0x78, 0x5a, 0xec, 0xc8, 0xf4, 0x9e, 0xb0, 0x9a, 0xa9, 0x9d, - 0x31, 0xb8, 0x35, 0x07, 0x18, 0x11, 0x93, 0x0c, 0xda, 0x37, 0xfd, 0x5f, - 0x93, 0x77, 0x10, 0x41, 0x0f, 0x7e, 0x09, 0x8a, 0xeb, 0x70, 0x49, 0xc9, - 0xfb, 0x32, 0x53, 0xf6, 0xc8, 0xcb, 0xc4, 0x11, 0x67, 0xf7, 0x71, 0x28, - 0xe2, 0x96, 0xc5, 0x38, 0x25, 0x5e, 0x65, 0x05, 0xd9, 0x09, 0x0b, 0x4f, - 0xe9, 0x9a, 0xb8, 0xf2, 0x64, 0xd9, 0xe9, 0xdd, 0x44, 0xe9, 0x95, 0xdc, - 0xc8, 0xf5, 0x7d, 0xac, 0x5e, 0x54, 0xcd, 0xce, 0xe1, 0xb5, 0xcf, 0x94, - 0xea, 0xa3, 0xa8, 0xa9, 0x77, 0xf9, 0x38, 0xd9, 0x81, 0x13, 0x5b, 0x77, - 0xc5, 0xac, 0x10, 0xdb, 0xda, 0x4a, 0x03, 0x6c, 0xae, 0xe5, 0x8b, 0x82, - 0x24, 0x02, 0x8a, 0x9d, 0x21, 0x1b, 0xcf, 0x21, 0xc2, 0x43, 0x14, 0xea, - 0xe8, 0x36, 0x73, 0x85, 0x41, 0x80, 0xad, 0x25, 0xd4, 0x5c, 0xf1, 0x49, - 0xea, 0x31, 0x83, 0xc3, 0xf9, 0x26, 0xe3, 0x8a, 0xfa, 0x6c, 0x0a, 0x00, - 0x06, 0x15, 0x10, 0x70, 0x33, 0x43, 0x17, 0x09, 0xc6, 0xec, 0x5f, 0xcd, - 0xc4, 0xb5, 0x43, 0x16, 0x80, 0xf8, 0x69, 0x95, 0xfb, 0xed, 0xa4, 0x40, - 0x7b, 0x14, 0xf5, 0x9f, 0x4a, 0xbb, 0xfd, 0x28, 0x4c, 0xaf, 0x62, 0x5e, - 0xda, 0x46, 0xe8, 0x48, 0x00, 0xbf, 0x1f, 0x24, 0xf2, 0x82, 0xec, 0x9f, - 0x11, 0x6b, 0xbc, 0xad, 0x25, 0x57, 0x3c, 0x89, 0x58, 0x2d, 0x72, 0x75, - 0x2a, 0xdd, 0x2a, 0xa1, 0x18, 0x38, 0xf8, 0x4a, 0x49, 0x83, 0x94, 0x80, - 0x84, 0x54, 0x58, 0x5e, 0x75, 0xb7, 0x4e, 0x2d, 0xcf, 0xee, 0x06, 0xce, - 0xb8, 0x2c, 0x54, 0xa4, 0x1b, 0x00, 0x89, 0xe2, 0x5b, 0x60, 0x6c, 0x6e, - 0xb1, 0x5a, 0x3e, 0x94, 0x7e, 0x5b, 0x05, 0x92, 0x55, 0x14, 0xa4, 0x89, - 0xce, 0xfe, 0xb7, 0x83, 0x3e, 0xbd, 0x7c, 0xe5, 0x15, 0x65, 0x32, 0x36, - 0x69, 0xf9, 0xbd, 0x82, 0x66, 0x14, 0x43, 0x5f, 0xda, 0x2c, 0x94, 0x4c, - 0xfc, 0xf2, 0xf1, 0x2a, 0x5b, 0xe3, 0xd7, 0x07, 0x2f, 0xf8, 0x32, 0x7a, - 0xeb, 0xa5, 0x1e, 0x4f, 0xbf, 0xa1, 0x4f, 0xa5, 0x88, 0xcd, 0x5f, 0x70, - 0x26, 0x6c, 0x45, 0x95, 0xfb, 0x3d, 0x25, 0xd0, 0x45, 0x32, 0x88, 0xdb, - 0x31, 0x18, 0xa3, 0xac, 0xa0, 0x14, 0x50, 0x70, 0x86, 0xa9, 0xf0, 0x18, - 0x90, 0xce, 0xcb, 0xa4, 0x56, 0xd6, 0xe3, 0xd8, 0xe9, 0x00, 0xb7, 0xf8, - 0x02, 0x37, 0xb8, 0xf2, 0x56, 0x38, 0xdc, 0x29, 0xa2, 0x6a, 0xf2, 0x8a, - 0x85, 0x63, 0xa0, 0xe6, 0x74, 0xc5, 0x9b, 0x06, 0x3d, 0x6f, 0x89, 0x15, - 0x78, 0x68, 0x28, 0xe6, 0x2b, 0x8a, 0x95, 0xac, 0xfa, 0xc0, 0x98, 0xca, - 0xe8, 0xa0, 0x36, 0x8f, 0x24, 0xc1, 0xbd, 0x29, 0xfb, 0x88, 0xd2, 0xd5, - 0x90, 0x1a, 0xcb, 0xd1, 0x83, 0xd0, 0xfb, 0xe0, 0x6b, 0x38, 0xc4, 0x91, - 0xb3, 0x2e, 0xd9, 0x35, 0x77, 0x8c, 0xdb, 0x49, 0x21, 0x4f, 0xde, 0x21, - 0x57, 0x75, 0xa2, 0x9e, 0x61, 0x68, 0x9b, 0xb0, 0x3a, 0x5e, 0xf3, 0x98, - 0x56, 0x5a, 0x7e, 0x95, 0x8c, 0x55, 0xc5, 0x1c, 0xf7, 0xb3, 0x24, 0x30, - 0x7b, 0x9e, 0x54, 0xec, 0x6c, 0x90, 0xaa, 0x9e, 0x9f, 0x6e, 0x0b, 0x65, - 0x70, 0x9e, 0x25, 0x3c, 0xa4, 0xe7, 0xff, 0x7a, 0x06, 0x44, 0x96, 0xc3, - 0x82, 0x06, 0x7e, 0x86, 0x67, 0x94, 0x68, 0x9c, 0xfa, 0x70, 0x35, 0x82, - 0xc9, 0xb3, 0x98, 0x65, 0x34, 0xb0, 0xbb, 0xa2, 0x34, 0x70, 0xc7, 0x79, - 0xf5, 0x4b, 0x8f, 0xc7, 0x6b, 0x97, 0xee, 0xa6, 0xec, 0xc5, 0x89, 0x86, - 0xac, 0xeb, 0xa7, 0x66, 0x3a, 0x4d, 0x08, 0xfe, 0x64, 0x19, 0xee, 0x06, - 0x4d, 0x7c, 0xb2, 0xa8, 0x1a, 0x88, 0x0d, 0x4c, 0x1d, 0x46, 0xf7, 0x16, - 0xc4, 0xc5, 0x6d, 0xc5, 0xcc, 0x8a, 0xbf, 0x1d, 0xf2, 0x88, 0x0e, 0x3c, - 0x2c, 0x0c, 0x81, 0x51, 0x72, 0xc0, 0x41, 0x51, 0xb1, 0xd2, 0x74, 0x68, - 0x38, 0x93, 0xa0, 0x3f, 0x1e, 0xcc, 0x0e, 0x6b, 0x31, 0x94, 0xc9, 0x92, - 0xc4, 0x7b, 0xf5, 0x33, 0xf2, 0xfc, 0x46, 0x5b, 0x2f, 0x74, 0x0a, 0x30, - 0xc2, 0x47, 0x3b, 0xca, 0x06, 0x67, 0xae, 0x2c, 0x57, 0xdf, 0xda, 0x5b, - 0xf1, 0xd5, 0xb8, 0xf9, 0xe4, 0x6e, 0xaf, 0xcf, 0x3a, 0xe7, 0x89, 0x40, - 0xbb, 0x42, 0xad, 0xd6, 0x7c, 0x0d, 0x43, 0xd7, 0x86, 0xc5, 0x41, 0x2f, - 0x0b, 0xe7, 0x1b, 0x37, 0x94, 0xc1, 0x3e, 0x49, 0xd1, 0xc0, 0x90, 0x1e, - 0x3b, 0x83, 0x99, 0x3e, 0xdc, 0xc3, 0xd4, 0x65, 0xb9, 0x0f, 0xdc, 0x5e, - 0xae, 0x3e, 0xec, 0x48, 0x6e, 0xac, 0xa1, 0x9a, 0x16, 0xd2, 0x11, 0xe5, - 0xe9, 0xf1, 0x42, 0x50, 0xde, 0x81, 0x42, 0xe2, 0x49, 0x82, 0x53, 0x21, - 0x7b, 0x1b, 0x74, 0x50, 0x56, 0x54, 0xff, 0x76, 0x6b, 0x81, 0x41, 0xa6, - 0x93, 0x92, 0x3d, 0x72, 0xe0, 0xd1, 0xc6, 0xee, 0x97, 0xab, 0x46, 0x83, - 0xa4, 0x9a, 0xcc, 0x73, 0xa1, 0x2d, 0x9f, 0x55, 0x1d, 0x38, 0x5a, 0x8c, - 0xac, 0xb1, 0xb8, 0x6f, 0xe6, 0xec, 0x10, 0xe8, 0x2b, 0x19, 0x65, 0x96, - 0x8b, 0x3b, 0xff, 0x67, 0x41, 0x9b, 0x36, 0xd8, 0x9d, 0x12, 0x76, 0xfd, - 0x11, 0xc7, 0x12, 0x4d, 0x3c, 0xb0, 0x2c, 0x92, 0x96, 0xca, 0xaf, 0xa2, - 0xa8, 0xb2, 0x67, 0xc4, 0x6c, 0x70, 0xc8, 0x47, 0xd7, 0x60, 0x35, 0x15, - 0x96, 0x6d, 0xbc, 0x60, 0x24, 0x94, 0x21, 0x4f, 0x1a, 0x66, 0x1f, 0x25, - 0xaf, 0xc7, 0xe1, 0x10, 0x73, 0xf5, 0x73, 0xd1, 0x0e, 0x13, 0xcc, 0x76, - 0x3d, 0xf3, 0x66, 0x38, 0xca, 0x54, 0x33, 0x6d, 0xf5, 0x65, 0x1e, 0xcb, - 0xc2, 0xa9, 0x9a, 0x6c, 0x6e, 0x2b, 0x59, 0x82, 0x39, 0x94, 0x3a, 0xac, - 0x91, 0x34, 0x49, 0x1e, 0x7a, 0x05, 0x46, 0x77, 0x3b, 0x41, 0x2e, 0xa9, - 0x31, 0x2d, 0x52, 0xda, 0xbe, 0x6b, 0x09, 0xe2, 0xaa, 0x9a, 0xf5, 0x3a, - 0x61, 0xa8, 0xd2, 0xee, 0x1c, 0x35, 0x73, 0xe8, 0xf0, 0xd0, 0xc5, 0xda, - 0x0e, 0xe9, 0x4c, 0xfc, 0x6e, 0x13, 0xa0, 0x21, 0x9a, 0xcc, 0xf3, 0x4a, - 0xc4, 0x83, 0x89, 0x9c, 0x19, 0x5c, 0x90, 0xe7, 0xcd, 0x39, 0x13, 0x94, - 0x37, 0x11, 0x55, 0x5b, 0x96, 0xbb, 0xa0, 0xa7, 0xdf, 0x0b, 0xc6, 0x28, - 0x96, 0x01, 0x0e, 0xf2, 0x22, 0x2b, 0x18, 0xb6, 0x62, 0xb2, 0x67, 0x0a, - 0x73, 0x19, 0xd5, 0x36, 0x5a, 0x16, 0xb7, 0x3f, 0x55, 0xbc, 0x3b, 0xf5, - 0x09, 0x63, 0x77, 0xa3, 0x66, 0xf1, 0xf5, 0x47, 0x74, 0x8b, 0xff, 0x27, - 0x18, 0x6d, 0x24, 0x68, 0xdd, 0x38, 0x5f, 0x04, 0xe9, 0x9d, 0xd0, 0xf1, - 0x8a, 0xb0, 0x4f, 0xf6, 0xdf, 0x8f, 0x8c, 0x16, 0x72, 0x24, 0xfb, 0x3b, - 0x1f, 0x41, 0x78, 0x33, 0xa4, 0x31, 0xed, 0x7e, 0xc8, 0x26, 0xec, 0x01, - 0x14, 0x30, 0xe0, 0xa9, 0x70, 0x29, 0xfb, 0xee, 0x47, 0xa3, 0x84, 0x28, - 0x36, 0x1a, 0xee, 0x29, 0x2b, 0x9a, 0x9f, 0xe3, 0x43, 0x66, 0xd0, 0x60, - 0x4c, 0xfa, 0x43, 0xc2, 0x1a, 0xf9, 0xd8, 0xd3, 0x99, 0x97, 0x6e, 0xee, - 0xef, 0x5f, 0xd7, 0xe4, 0xed, 0xd3, 0xf0, 0x43, 0xf9, 0x86, 0x7e, 0x53, - 0x4d, 0x6f, 0x4d, 0x09, 0x08, 0xf3, 0x2c, 0xeb, 0xee, 0x8b, 0xa6, 0x94, - 0xf9, 0x0f, 0xa0, 0x84, 0x00, 0x89, 0xb5, 0x6a, 0xbe, 0xf3, 0xfc, 0x1b, - 0x46, 0x6c, 0x62, 0xb6, 0x44, 0xae, 0x73, 0x26, 0x08, 0x6c, 0x11, 0x69, - 0x2e, 0x70, 0xdb, 0x18, 0xe6, 0x2d, 0x1e, 0x94, 0x84, 0x92, 0x0d, 0xe0, - 0x8f, 0xa2, 0x72, 0xb6, 0xb7, 0x99, 0x55, 0xef, 0x55, 0x00, 0xc6, 0xc3, - 0x2e, 0xc6, 0x23, 0xc6, 0x65, 0xba, 0x29, 0xed, 0x4f, 0x40, 0x4a, 0x9d, - 0xac, 0x65, 0x06, 0xb1, 0x43, 0xc2, 0x8e, 0x42, 0x25, 0xd5, 0xc8, 0x02, - 0x38, 0x0d, 0x6e, 0xe9, 0xd8, 0xe4, 0xc4, 0xdd, 0xf6, 0xb4, 0x56, 0xd4, - 0x93, 0x9e, 0xe0, 0x92, 0xa1, 0x7a, 0xac, 0xd7, 0x58, 0x85, 0x65, 0x8e, - 0x45, 0xde, 0xc3, 0x9e, 0x0f, 0x2b, 0x32, 0x8c, 0x8b, 0x98, 0x92, 0x69, - 0xf0, 0x0f, 0x7b, 0x5f, 0x78, 0x7a, 0x37, 0x63, 0xc0, 0x3d, 0x13, 0x9d, - 0xa2, 0xe7, 0xa9, 0x49, 0x59, 0x22, 0x18, 0x93, 0xbe, 0x2b, 0xa8, 0xe8, - 0x00, 0x2a, 0xef, 0x97, 0xd5, 0x01, 0xe9, 0x74, 0x33, 0x5a, 0x9b, 0x4d, - 0x7b, 0x47, 0x16, 0x99, 0x35, 0x7d, 0x2d, 0x42, 0x65, 0xef, 0x96, 0x67, - 0x85, 0x78, 0x72, 0x13, 0xcc, 0xdc, 0x71, 0xcc, 0x47, 0xbf, 0xed, 0xec, - 0xe9, 0x9c, 0x58, 0x85, 0x78, 0x0d, 0x3d, 0x87, 0x72, 0x98, 0x34, 0xdb, - 0xd5, 0x44, 0x69, 0xae, 0x63, 0x7d, 0xd2, 0x64, 0x68, 0x14, 0x4c, 0x4d, - 0x00, 0x0d, 0x88, 0xcb, 0x20, 0xaa, 0xb0, 0x4f, 0xc1, 0xd9, 0xe1, 0x21, - 0x92, 0x82, 0x18, 0x25, 0x3f, 0xdc, 0xe8, 0x7c, 0x8d, 0x1d, 0xae, 0x10, - 0x4d, 0x51, 0x39, 0x9b, 0x28, 0x71, 0xd9, 0x80, 0x91, 0x83, 0x3c, 0xe8, - 0x62, 0x45, 0x8b, 0x3a, 0xe3, 0x26, 0x18, 0xf1, 0xe1, 0xef, 0x97, 0x32, - 0x1a, 0x6b, 0x64, 0x54, 0x70, 0x65, 0x2a, 0xb8, 0x4c, 0xab, 0x7b, 0x43, - 0x4d, 0xeb, 0x57, 0x54, 0x09, 0x96, 0xae, 0x1f, 0x65, 0x4e, 0xb8, 0x0f, - 0x00, 0x65, 0x60, 0x3e, 0xaf, 0xe6, 0x43, 0x83, 0xef, 0x7c, 0x36, 0xe9, - 0x87, 0x65, 0x86, 0xb4, 0x69, 0x3d, 0xb9, 0xe6, 0xc2, 0x8a, 0xea, 0xb0, - 0x12, 0xe1, 0xb1, 0x10, 0x30, 0x7f, 0x99, 0xc3, 0x21, 0x13, 0x13, 0xe2, - 0xdd, 0xaa, 0xe2, 0x73, 0xf7, 0xc8, 0x83, 0x05, 0xa2, 0x1e, 0x34, 0x21, - 0x71, 0xe5, 0x90, 0x41, 0xa1, 0xdd, 0x1a, 0xdf, 0x7f, 0xd9, 0x83, 0x3a, - 0x56, 0x3a, 0x88, 0xd1, 0xfd, 0x7f, 0xbb, 0xb6, 0xe1, 0xd5, 0x65, 0xe4, - 0x61, 0x98, 0x5b, 0x4a, 0x93, 0x80, 0x3b, 0x50, 0xe3, 0x3a, 0x60, 0xc5, - 0x7d, 0x83, 0x79, 0xb6, 0xf6, 0x52, 0xb2, 0xa5, 0x99, 0xbe, 0x23, 0xca, - 0x62, 0xc6, 0x18, 0xef, 0xab, 0xbd, 0x10, 0x44, 0xe2, 0xb5, 0x47, 0xbe, - 0x60, 0x5f, 0x8e, 0xde, 0xa0, 0x5a, 0x01, 0x33, 0x3f, 0x04, 0x61, 0x35, - 0xf2, 0x5f, 0xd4, 0xc5, 0x50, 0x6e, 0x9f, 0x84, 0x79, 0x86, 0x7e, 0x35, - 0x19, 0xc5, 0xd0, 0xe1, 0xb3, 0x49, 0x73, 0x20, 0x34, 0x41, 0xf2, 0xba, - 0xea, 0x9c, 0xa8, 0xaf, 0x72, 0x1b, 0xf8, 0x33, 0x37, 0x8a, 0x1d, 0x76, - 0x6f, 0x00, 0x82, 0xaa, 0xc2, 0x95, 0x4b, 0xa5, 0xbd, 0x4f, 0x41, 0xf6, - 0x33, 0x32, 0x55, 0x56, 0xf2, 0x2f, 0xf7, 0x91, 0x73, 0x5f, 0x61, 0xff, - 0xb4, 0x89, 0xbe, 0x8f, 0xa6, 0xf2, 0x93, 0xdd, 0x0a, 0x95, 0x54, 0x65, - 0xd2, 0xfd, 0x37, 0x8c, 0x1f, 0x4c, 0x96, 0x66, 0xd7, 0x81, 0x90, 0xc8, - 0xff, 0xe8, 0x25, 0xed, 0x43, 0x80, 0x50, 0x03, 0xd2, 0xe9, 0x9e, 0x71, - 0xb8, 0x63, 0xe1, 0xf6, 0x7d, 0x95, 0xc2, 0xe2, 0xce, 0x7c, 0x74, 0xb1, - 0xd6, 0xf7, 0x90, 0x93, 0xe6, 0x28, 0x71, 0x87, 0xa9, 0xd6, 0x4a, 0x37, - 0x10, 0x64, 0x22, 0x84, 0xce, 0xcc, 0xc3, 0x56, 0xad, 0xac, 0xbe, 0x0b, - 0x5c, 0x3a, 0xa6, 0xd8, 0x2b, 0x1e, 0xfc, 0xc2, 0xa1, 0x5b, 0x23, 0x3d, - 0x87, 0xab, 0x59, 0x58, 0x33, 0x16, 0xa6, 0xa2, 0x00, 0x16, 0x87, 0x52, - 0x1a, 0x59, 0x6b, 0xe9, 0x8b, 0x12, 0x9d, 0x50, 0x77, 0x0a, 0xfb, 0x5e, - 0x73, 0x89, 0x55, 0xb4, 0x4e, 0x32, 0x90, 0x53, 0x67, 0xbc, 0xc3, 0xd9, - 0x1c, 0xd7, 0xe4, 0x12, 0xd3, 0x5a, 0xfb, 0x52, 0x22, 0xd5, 0xd1, 0x65, - 0x4c, 0xfd, 0x3c, 0xf2, 0x37, 0xa2, 0x5a, 0x42, 0xc0, 0xad, 0xe4, 0x1c, - 0x87, 0x71, 0xd5, 0x67, 0xe0, 0x14, 0x63, 0xf4, 0x8e, 0x9f, 0x28, 0xcc, - 0xd5, 0x78, 0xc8, 0x76, 0xb1, 0x51, 0x6c, 0x4e, 0xe7, 0x1e, 0xbd, 0x0b, - 0x2e, 0x06, 0x48, 0x36, 0xe1, 0xb5, 0x34, 0xd3, 0x56, 0xe4, 0x63, 0x7a, - 0x29, 0x74, 0xc3, 0x97, 0xcf, 0x13, 0x5b, 0x8a, 0x10, 0x63, 0x6f, 0x74, - 0x2b, 0x27, 0x92, 0x2a, 0xf0, 0xec, 0x1f, 0xfc, 0xeb, 0x8b, 0x6b, 0x48, - 0x2e, 0x64, 0x15, 0x49, 0x30, 0x1b, 0x5c, 0x77, 0x81, 0x6f, 0xec, 0xec, - 0xc7, 0x2e, 0xf1, 0x95, 0x9e, 0xf1, 0xe3, 0x16, 0xa2, 0xc3, 0x7f, 0x59, - 0xc6, 0xa8, 0x6a, 0x0c, 0x2f, 0xcc, 0xd2, 0xd3, 0x29, 0x3f, 0xa2, 0x43, - 0x88, 0x36, 0x10, 0x2f, 0x71, 0x2b, 0x57, 0x26, 0x9b, 0x7b, 0x38, 0x75, - 0x63, 0xe2, 0x08, 0x51, 0xe4, 0xb8, 0x2e, 0xf3, 0x57, 0x94, 0x3f, 0x39, - 0x3c, 0x7f, 0x93, 0x3a, 0x72, 0x68, 0xc0, 0x20, 0xb8, 0x1f, 0x24, 0x8b, - 0x4e, 0xfd, 0x3d, 0xc1, 0x74, 0xc8, 0x35, 0x98, 0xe2, 0x67, 0x86, 0x8e, - 0xce, 0xbf, 0x8b, 0x18, 0x8a, 0xe8, 0x48, 0xf9, 0xec, 0x10, 0x6f, 0x20, - 0x8d, 0x18, 0x69, 0xdb, 0x0f, 0xb7, 0x1e, 0xa4, 0xf3, 0xa9, 0x7d, 0xaa, - 0x87, 0x7d, 0xea, 0xb2, 0x51, 0x1b, 0xa1, 0xdf, 0xd0, 0xd4, 0x4f, 0xc0, - 0x9d, 0x88, 0x7a, 0xb8, 0x7d, 0x7b, 0xcb, 0xcc, 0x55, 0x50, 0x89, 0x01, - 0x88, 0x0a, 0x8c, 0x6b, 0xd1, 0x84, 0xf7, 0x2d, 0x32, 0x31, 0x77, 0xd9, - 0x2b, 0x2e, 0x2c, 0xfd, 0xff, 0x45, 0xbd, 0x2a, 0x73, 0xe5, 0x4b, 0x37, - 0x44, 0xc9, 0xdc, 0xa4, 0xd5, 0xc3, 0x73, 0x18, 0x35, 0x24, 0x8a, 0xe9, - 0x90, 0x5f, 0xfb, 0x6d, 0x0c, 0x6f, 0xbd, 0x48, 0x05, 0x90, 0x2d, 0x03, - 0x3f, 0x8f, 0x64, 0x6b, 0x8d, 0xa5, 0x9a, 0xc7, 0xfd, 0xd7, 0x34, 0x74, - 0x5b, 0x51, 0x61, 0x13, 0x1d, 0x32, 0xc1, 0x00, 0x50, 0xd7, 0x69, 0x2b, - 0x76, 0xe1, 0x5c, 0xac, 0x77, 0x89, 0xa9, 0x2c, 0xe4, 0x24, 0x43, 0xd1, - 0x14, 0xf5, 0xb9, 0x44, 0x82, 0x65, 0x03, 0x49, 0xd0, 0xf4, 0x96, 0x99, - 0xcf, 0x80, 0x24, 0xa9, 0xb5, 0xcf, 0xa4, 0x7c, 0x50, 0xb3, 0x79, 0xe0, - 0x96, 0x46, 0x74, 0xf1, 0x23, 0xd6, 0x70, 0x63, 0x00, 0xbf, 0x20, 0xc6, - 0x6a, 0xd4, 0x2e, 0x2a, 0x18, 0x50, 0x50, 0x56, 0x4c, 0x0c, 0x79, 0xb3, - 0xb8, 0x5d, 0x23, 0xde, 0x3c, 0xd3, 0xc0, 0x5c, 0xe7, 0xd4, 0x0c, 0x6a, - 0x03, 0x14, 0xc2, 0xb7, 0x2d, 0x9e, 0x6e, 0xba, 0x26, 0x77, 0xe7, 0x88, - 0x3a, 0xd6, 0x65, 0x63, 0xff, 0x5f, 0x39, 0x0a, 0x38, 0x98, 0xd7, 0x09, - 0x26, 0xcf, 0xe8, 0x71, 0x78, 0xba, 0x7f, 0x49, 0xd6, 0x27, 0x34, 0xd7, - 0x5b, 0xca, 0xfa, 0x5c, 0x8d, 0x62, 0x82, 0x0c, 0x92, 0xac, 0xb4, 0x7a, - 0x6b, 0x6d, 0x2d, 0x15, 0xf8, 0xf8, 0x57, 0x91, 0xd0, 0xf1, 0x4d, 0x6c, - 0x6d, 0x59, 0xf6, 0xfa, 0x16, 0x70, 0xe7, 0x0b, 0xa2, 0x4c, 0x6b, 0x30, - 0x82, 0x25, 0x3d, 0x9a, 0x2f, 0xcf, 0xd1, 0x91, 0x02, 0x4a, 0x8a, 0x94, - 0xeb, 0x98, 0xf4, 0x97, 0xaa, 0xa0, 0xa0, 0x38, 0x2a, 0x1d, 0xc9, 0x38, - 0x5f, 0xa3, 0x1d, 0x09, 0x49, 0x02, 0x85, 0x5b, 0x70, 0x35, 0x3c, 0x21, - 0xa0, 0x3e, 0x75, 0x4c, 0xf3, 0x24, 0x36, 0xa8, 0x82, 0x8e, 0xf1, 0x49, - 0x5f, 0xe0, 0x46, 0x89, 0xf7, 0x4d, 0x52, 0x4e, 0x5d, 0xd4, 0xd7, 0x95, - 0x64, 0xd5, 0x83, 0xd0, 0x55, 0xff, 0x97, 0xc9, 0x33, 0x4e, 0xcc, 0x91, - 0x8f, 0x1a, 0x95, 0x9a, 0x60, 0x65, 0x9c, 0x9a, 0x42, 0x4d, 0x00, 0x28, - 0x09, 0xb6, 0xeb, 0xbf, 0x13, 0x73, 0x8e, 0xdd, 0x70, 0x96, 0x39, 0x02, - 0xa2, 0x31, 0x39, 0x2b, 0x4a, 0x4a, 0xe4, 0x2e, 0x66, 0x07, 0xb3, 0x18, - 0x02, 0x4c, 0xa8, 0x59, 0xe2, 0x21, 0x61, 0x4b, 0x29, 0x33, 0x90, 0xa8, - 0x0d, 0x26, 0xb8, 0xf1, 0x5e, 0xd7, 0x7f, 0xb6, 0x0a, 0x32, 0xa5, 0x34, - 0xa1, 0xb0, 0xf6, 0xe7, 0xe8, 0x1f, 0xfe, 0x39, 0xc4, 0x6c, 0xec, 0x57, - 0x28, 0xf7, 0x69, 0x04, 0xa5, 0x6a, 0x3f, 0xfd, 0x96, 0x46, 0x4c, 0x30, - 0x02, 0x2b, 0x38, 0x43, 0xa2, 0x7f, 0xda, 0xcd, 0x88, 0x43, 0x60, 0xa3, - 0xba, 0x99, 0xa0, 0x6a, 0xc4, 0x71, 0x5a, 0x25, 0x84, 0x83, 0xb7, 0xa2, - 0x28, 0x74, 0x1c, 0x0c, 0xd5, 0x07, 0x37, 0xdf, 0xd5, 0x90, 0x8f, 0x48, - 0x5b, 0x93, 0x87, 0x2f, 0x49, 0xab, 0x2c, 0xb4, 0x0c, 0x9a, 0x84, 0x1d, - 0x65, 0x2d, 0x17, 0x5e, 0x51, 0xb4, 0xa9, 0xda, 0x10, 0x7f, 0x8f, 0x35, - 0x22, 0x1f, 0x8f, 0x7f, 0xe3, 0x1b, 0xf5, 0x1b, 0xeb, 0x31, 0xf6, 0x1b, - 0xc8, 0xd4, 0x7d, 0x23, 0xad, 0x05, 0xf2, 0x4d, 0xdd, 0xe7, 0xcd, 0xfa, - 0x1b, 0x28, 0xbf, 0xc7, 0xed, 0x75, 0xf9, 0x76, 0xae, 0xb2, 0xbb, 0x8b, - 0x92, 0x54, 0x8c, 0x8c, 0x92, 0xb5, 0xd9, 0x50, 0x03, 0x5d, 0x58, 0x0e, - 0x6c, 0xb7, 0x88, 0x4e, 0x40, 0x2c, 0x33, 0x06, 0xc7, 0xcb, 0xe6, 0x7c, - 0xc7, 0x41, 0xfc, 0x31, 0xe3, 0x10, 0x5b, 0xcf, 0x50, 0x5b, 0x6d, 0x23, - 0xa2, 0x5a, 0xcd, 0x18, 0x81, 0x1e, 0x94, 0x28, 0x69, 0x0e, 0x0a, 0x4f, - 0xea, 0x82, 0xed, 0x1c, 0xda, 0x1c, 0x7f, 0xec, 0x90, 0xc6, 0xae, 0xfc, - 0x0f, 0x58, 0x26, 0x66, 0x79, 0xdf, 0xe3, 0x8e, 0xb2, 0x9a, 0xfd, 0x18, - 0x5e, 0x3e, 0x6e, 0xcc, 0x6a, 0x30, 0xe1, 0x34, 0x3b, 0x38, 0xf3, 0x91, - 0x84, 0xfd, 0x0f, 0xfd, 0x47, 0x97, 0x43, 0x1a, 0x11, 0x71, 0x3c, 0x46, - 0x34, 0xd9, 0x8e, 0x84, 0x47, 0xef, 0x15, 0xf4, 0xbd, 0xa2, 0xf8, 0x33, - 0x7f, 0xbf, 0xbc, 0x5a, 0x42, 0xe5, 0xc0, 0xcd, 0x30, 0x70, 0x4d, 0xe6, - 0xe5, 0x79, 0x0f, 0xcd, 0x77, 0x93, 0xbe, 0x67, 0x5b, 0x4d, 0x75, 0x32, - 0xb8, 0xfd, 0x8c, 0x90, 0x44, 0x59, 0x48, 0x58, 0x46, 0x0e, 0xf3, 0x91, - 0x2e, 0x27, 0xc8, 0x22, 0xcb, 0x3a, 0x09, 0x1c, 0xa4, 0x14, 0x68, 0x14, - 0x20, 0x48, 0x4b, 0xd9, 0xc7, 0x81, 0x74, 0x0d, 0xaf, 0x10, 0x11, 0x61, - 0x1a, 0x5f, 0xde, 0x42, 0x3e, 0x78, 0x0c, 0xd6, 0x84, 0x7b, 0x30, 0xd3, - 0x76, 0xdb, 0xd3, 0xc0, 0xc3, 0xe8, 0x93, 0x86, 0xa2, 0x05, 0x77, 0x4d, - 0xc9, 0x82, 0x55, 0xc1, 0x4a, 0xf4, 0x8b, 0xe6, 0xea, 0xfb, 0xb6, 0xe5, - 0x37, 0x30, 0x12, 0x93, 0x5a, 0x4a, 0x08, 0x55, 0x4f, 0xa2, 0x39, 0xcf, - 0xa4, 0xe6, 0xd7, 0x62, 0x63, 0x6c, 0x3e, 0x87, 0xad, 0x3b, 0x68, 0xe6, - 0x66, 0x6a, 0x3e, 0x16, 0x4b, 0xc5, 0x3a, 0xea, 0x29, 0x36, 0xbb, 0x83, - 0x01, 0x15, 0xd7, 0xb6, 0x5b, 0xe3, 0xd4, 0x53, 0x93, 0xe9, 0x48, 0xe5, - 0xba, 0x63, 0xe6, 0xee, 0xef, 0xab, 0xdc, 0x98, 0x0e, 0x27, 0xba, 0xfb, - 0x8a, 0xd3, 0x4e, 0x16, 0xf2, 0x5f, 0x01, 0xaa, 0x21, 0xb7, 0x26, 0x79, - 0xf0, 0x25, 0xc7, 0x84, 0x78, 0x91, 0x17, 0x7c, 0xb2, 0xa0, 0x47, 0x27, - 0x30, 0x34, 0x1b, 0x05, 0x21, 0x5a, 0x73, 0xc0, 0xdd, 0x4a, 0x6e, 0x5f, - 0x19, 0xcf, 0xdf, 0x6b, 0x59, 0xba, 0x1d, 0x13, 0xdc, 0xe8, 0x95, 0x85, - 0xb4, 0x7a, 0x8e, 0x2c, 0x73, 0x11, 0x32, 0x9b, 0x7f, 0xb8, 0xf0, 0x1c, - 0xd1, 0xf1, 0x22, 0x49, 0xef, 0x12, 0xc1, 0x1e, 0x5a, 0x57, 0x7a, 0x21, - 0x13, 0x19, 0xc8, 0xe7, 0x6e, 0x96, 0x73, 0xb8, 0x3a, 0xcf, 0x3b, 0x54, - 0x91, 0x08, 0xa3, 0x64, 0x1f, 0x5d, 0xb9, 0xdf, 0x8d, 0x2c, 0x6e, 0xda, - 0xdb, 0x51, 0xe0, 0x4a, 0xd2, 0xd3, 0x8c, 0xe0, 0xad, 0x05, 0xda, 0xce, - 0xbd, 0xa7, 0x3a, 0xfa, 0x8c, 0x8e, 0xd1, 0x44, 0x0c, 0xe9, 0x0b, 0x46, - 0xb0, 0x2e, 0xce, 0x4e, 0x6d, 0x02, 0x82, 0x0b, 0xfb, 0xd8, 0x87, 0x0e, - 0xbf, 0xf1, 0x0e, 0x2b, 0xdb, 0xad, 0x50, 0xde, 0xb7, 0x63, 0x65, 0x5b, - 0x5b, 0xf1, 0xb5, 0x63, 0xf3, 0x74, 0x6f, 0x77, 0x23, 0xbd, 0x1f, 0x9b, - 0x5f, 0xe7, 0xb2, 0xa0, 0xef, 0x3e, 0xd8, 0x38, 0xf4, 0xd8, 0x9e, 0xa0, - 0x1b, 0x82, 0x59, 0xc0, 0x9c, 0xf1, 0x92, 0xca, 0x6d, 0x6b, 0x46, 0x9a, - 0x25, 0x86, 0x56, 0xd6, 0x76, 0x46, 0x29, 0xdd, 0x7e, 0xb0, 0xff, 0x6c, - 0xbe, 0x46, 0x27, 0xa4, 0xdd, 0xb0, 0xc9, 0xab, 0xc9, 0xf6, 0xc3, 0x2a, - 0x3a, 0x58, 0x54, 0x84, 0xde, 0xed, 0xfa, 0xa5, 0x2a, 0xc3, 0x07, 0x9f, - 0x0b, 0xd7, 0xc1, 0x91, 0xc2, 0x18, 0x06, 0xf5, 0x95, 0xf8, 0xcd, 0xd5, - 0x1e, 0xbb, 0x73, 0xd0, 0x7a, 0x3a, 0x99, 0x1f, 0x50, 0x21, 0x18, 0x8a, - 0x16, 0x6f, 0x47, 0xc4, 0x7f, 0x07, 0x9c, 0x00, 0x58, 0x9f, 0xc9, 0xee, - 0x8b, 0xb9, 0xeb, 0x35, 0x45, 0x61, 0xed, 0xf6, 0x45, 0x7e, 0xaf, 0x08, - 0x17, 0xe9, 0x78, 0x0a, 0x4f, 0x63, 0x74, 0x9e, 0x9d, 0x2a, 0x3d, 0x51, - 0xf4, 0x90, 0xd3, 0x33, 0x06, 0xe8, 0x53, 0xc4, 0x28, 0xd2, 0x70, 0x52, - 0xfd, 0x28, 0xed, 0x98, 0xed, 0x12, 0x72, 0xdb, 0xe4, 0xb6, 0x2e, 0xa7, - 0x41, 0x9d, 0x50, 0x71, 0xb9, 0xdc, 0xe3, 0x7b, 0x07, 0xcb, 0x47, 0x92, - 0xf9, 0x44, 0x2f, 0x55, 0x70, 0xb6, 0x0d, 0x06, 0x58, 0x2b, 0x59, 0xac, - 0x59, 0xcc, 0x94, 0x40, 0x47, 0xc5, 0xae, 0x19, 0xbe, 0x6f, 0x7c, 0x71, - 0x35, 0xba, 0x01, 0xed, 0x51, 0x05, 0xd7, 0xe6, 0x97, 0xa0, 0x6b, 0xa9, - 0xc7, 0xb9, 0x82, 0x68, 0x13, 0xb4, 0xc4, 0x84, 0x14, 0xa6, 0xff, 0xed, - 0xff, 0xf6, 0xcd, 0x6c, 0x5a, 0x30, 0x7b, 0x50, 0xea, 0x38, 0xcb, 0xd8, - 0x4d, 0xcb, 0x20, 0xf2, 0xe1, 0x5f, 0xc2, 0x44, 0xe8, 0x80, 0x75, 0x70, - 0xa0, 0x3f, 0x2c, 0xff, 0xa3, 0x13, 0x3d, 0xa5, 0x52, 0xbe, 0x94, 0x17, - 0x31, 0xff, 0x93, 0x5e, 0x87, 0xe3, 0x43, 0xa8, 0xeb, 0x97, 0x32, 0x23, - 0x7f, 0xb7, 0x18, 0x8b, 0xeb, 0xe2, 0xa0, 0x46, 0x22, 0xb0, 0x1d, 0x41, - 0x87, 0xcc, 0xd4, 0x43, 0x82, 0xc2, 0xbe, 0x46, 0xb0, 0x5d, 0xb6, 0x88, - 0xc2, 0x0c, 0xb5, 0x7f, 0xe6, 0x3b, 0x56, 0x59, 0x9e, 0xab, 0x79, 0xcc, - 0x1d, 0xee, 0x5a, 0xc4, 0xf2, 0x2c, 0x99, 0x62, 0x3b, 0xc2, 0xb8, 0x9f, - 0x9b, 0x1c, 0x25, 0x81, 0x14, 0x92, 0x8a, 0x9f, 0x53, 0xf4, 0x34, 0xb8, - 0x20, 0x5a, 0x99, 0xdd, 0x9f, 0x34, 0x49, 0x04, 0x93, 0x13, 0xa3, 0xfe, - 0x11, 0x2e, 0xe4, 0xf7, 0x8a, 0xfa, 0x8a, 0x2f, 0x32, 0xa6, 0xa3, 0x31, - 0x28, 0xc4, 0xd7, 0xce, 0xc6, 0x17, 0x99, 0x7e, 0x22, 0x80, 0x6a, 0xff, - 0x9d, 0x9a, 0xb2, 0x39, 0xff, 0xb7, 0xbc, 0xa1, 0x18, 0x6d, 0x33, 0xae, - 0xa4, 0x3e, 0xcd, 0x3e, 0xcd, 0xc2, 0x89, 0x76, 0xe2, 0xf8, 0x57, 0x1e, - 0xdd, 0x6d, 0x19, 0xcd, 0x6e, 0x65, 0x1a, 0xf1, 0xfd, 0xda, 0x63, 0xad, - 0xc1, 0x1b, 0x75, 0x02, 0x80, 0xbe, 0x40, 0xcf, 0x62, 0x00, 0x2f, 0xe0, - 0x02, 0x52, 0x4b, 0x5c, 0x65, 0x7f, 0x55, 0xb2, 0x11, 0x34, 0xce, 0xcc, - 0xda, 0xa5, 0x06, 0xe8, 0x7b, 0x2f, 0xce, 0xb9, 0x49, 0xa3, 0xae, 0xae, - 0xdc, 0xfa, 0xcf, 0x4d, 0xf1, 0x6e, 0x7a, 0x0c, 0x75, 0x8d, 0xea, 0x70, - 0x27, 0xf9, 0x20, 0xae, 0x6c, 0x70, 0xc6, 0xdd, 0xd6, 0x72, 0xeb, 0xf2, - 0x6f, 0xa7, 0xaa, 0x72, 0x97, 0xcd, 0xa0, 0xf1, 0x80, 0x57, 0x2a, 0x3b, - 0xc9, 0x13, 0x2a, 0xeb, 0x74, 0x26, 0x5d, 0xa6, 0x36, 0xec, 0x79, 0xf2, - 0xc6, 0xa7, 0xf5, 0x41, 0xf7, 0xb1, 0x6c, 0x57, 0x18, 0x5a, 0x4a, 0x10, - 0x17, 0x0f, 0xdf, 0xfd, 0xf0, 0xdb, 0xfc, 0xb5, 0x8b, 0x77, 0x2d, 0xcb, - 0x45, 0x40, 0xd2, 0xbb, 0xc2, 0x55, 0xcb, 0x7c, 0x47, 0xd1, 0xce, 0x6c, - 0xd4, 0x77, 0x5c, 0x9d, 0xdb, 0x08, 0x38, 0x80, 0x8e, 0x5d, 0x4a, 0x4d, - 0x0a, 0xee, 0xf4, 0x98, 0xc2, 0x06, 0x21, 0x55, 0xeb, 0x8c, 0x1a, 0x81, - 0x58, 0xc3, 0xcb, 0x09, 0x04, 0x10, 0xbb, 0x44, 0xdd, 0x9f, 0x1b, 0xca, - 0x93, 0x2d, 0x94, 0xe7, 0x0a, 0x3a, 0x99, 0xa1, 0x52, 0x17, 0x79, 0xe9, - 0x09, 0x16, 0xd3, 0x65, 0xde, 0xab, 0x2e, 0x1f, 0x68, 0xca, 0xe1, 0x64, - 0xa2, 0xa5, 0xe5, 0x13, 0x55, 0x37, 0x01, 0x3e, 0x0a, 0x46, 0x22, 0x8b, - 0xcf, 0x57, 0xe1, 0xda, 0x3a, 0x09, 0x68, 0xd1, 0x87, 0xf7, 0xd6, 0xe6, - 0x85, 0x4e, 0x8c, 0xcf, 0xbc, 0x0b, 0xaa, 0xc5, 0xa7, 0x4f, 0x47, 0x8b, - 0xbe, 0x08, 0xb6, 0xd6, 0xc7, 0xc2, 0x1c, 0xd8, 0x59, 0x13, 0xf6, 0xa4, - 0xbd, 0x61, 0x8c, 0x8d, 0x0a, 0xef, 0xd6, 0x97, 0x99, 0xcc, 0xce, 0x8d, - 0xb1, 0x29, 0x4d, 0x67, 0x66, 0x8c, 0x60, 0x38, 0xa1, 0x5d, 0x3c, 0x74, - 0xf1, 0x5e, 0x7b, 0x78, 0x88, 0x76, 0x4d, 0x86, 0x49, 0xb9, 0x8a, 0x6e, - 0x01, 0xcb, 0x61, 0xec, 0xaf, 0xfb, 0x1d, 0x59, 0xd4, 0xc3, 0x93, 0x7f, - 0x55, 0xc3, 0x50, 0xa2, 0x6c, 0x0a, 0x27, 0x16, 0xed, 0x22, 0xbc, 0x95, - 0x5d, 0x01, 0xdb, 0xed, 0xd7, 0xf0, 0xf7, 0xc0, 0xd0, 0x9e, 0x71, 0x25, - 0x31, 0x49, 0xf8, 0x64, 0x16, 0x39, 0xbe, 0xa5, 0xc2, 0x89, 0x9b, 0x2a, - 0xf0, 0xc9, 0xce, 0xba, 0xf5, 0xad, 0x4a, 0x87, 0x45, 0x9b, 0xdc, 0xba, - 0x5e, 0xf0, 0x0b, 0x0f, 0xa8, 0x2e, 0xeb, 0xfe, 0x94, 0xca, 0x7c, 0x74, - 0x4b, 0x8a, 0x19, 0xf8, 0xea, 0xea, 0xa4, 0x69, 0xd4, 0xc1, 0xa9, 0xe2, - 0xea, 0xd1, 0x18, 0x59, 0xf5, 0x59, 0xfe, 0x64, 0x06, 0xb6, 0xd3, 0x75, - 0xd7, 0x58, 0xf3, 0x36, 0xcf, 0x65, 0x1b, 0x39, 0x48, 0xfb, 0xf7, 0x80, - 0x7d, 0xf6, 0x2f, 0x0b, 0x4d, 0xd4, 0x71, 0xb7, 0x91, 0xda, 0x85, 0xb8, - 0x58, 0x58, 0x63, 0xa1, 0x9a, 0x88, 0x10, 0xab, 0x79, 0x35, 0xbc, 0xfe, - 0xe4, 0x39, 0xff, 0xad, 0x44, 0x0b, 0x05, 0x4e, 0xe1, 0x25, 0x86, 0x34, - 0x12, 0xa7, 0xcf, 0x2e, 0x59, 0xf9, 0x6b, 0xb8, 0x77, 0x5b, 0x38, 0x61, - 0xb6, 0x0f, 0xde, 0x88, 0x3a, 0xa1, 0x13, 0x34, 0x95, 0x2e, 0xe5, 0x00, - 0xc7, 0x92, 0xd1, 0x5e, 0x54, 0x8a, 0xc0, 0x24, 0x11, 0x00, 0xbf, 0x11, - 0x36, 0x9f, 0x41, 0x5e, 0xb7, 0xe7, 0xb2, 0x4e, 0xdd, 0x6d, 0x36, 0x05, - 0x8c, 0xa0, 0x41, 0xe2, 0x27, 0x77, 0xdf, 0xf2, 0x65, 0x86, 0x36, 0xcf, - 0x35, 0xa0, 0x64, 0x0a, 0xe2, 0x19, 0x85, 0xae, 0xed, 0x86, 0xcd, 0x12, - 0xbc, 0xf8, 0x9c, 0xc2, 0x1e, 0x57, 0x17, 0x1f, 0x48, 0x17, 0xd2, 0x3a, - 0x09, 0x0b, 0x28, 0xa5, 0x4a, 0x25, 0x00, 0xc8, 0x8d, 0x53, 0xbc, 0xa5, - 0x55, 0x97, 0xd8, 0x5b, 0x99, 0xea, 0x90, 0xec, 0xe7, 0x31, 0x3f, 0x18, - 0x7c, 0xc5, 0x02, 0x75, 0xa1, 0xf8, 0xa3, 0x65, 0xf2, 0xdc, 0x5a, 0xce, - 0x4c, 0xee, 0x5a, 0x55, 0xff, 0x27, 0xb0, 0x8f, 0xde, 0x2e, 0xeb, 0x8d, - 0xd5, 0xf5, 0x50, 0x53, 0x16, 0x1b, 0xdc, 0xe9, 0xf1, 0x24, 0xe5, 0xba, - 0xf1, 0x12, 0xb0, 0xd7, 0x08, 0x0e, 0xca, 0x91, 0xfc, 0xf8, 0x36, 0x88, - 0x86, 0x86, 0xc9, 0x0b, 0x2c, 0x52, 0xb6, 0x7f, 0x72, 0x9a, 0x12, 0x28, - 0x65, 0xbc, 0x3e, 0xb8, 0xcf, 0xde, 0x63, 0x05, 0xbc, 0xa2, 0x75, 0x94, - 0x55, 0x4c, 0xab, 0x78, 0x81, 0xa2, 0xfc, 0xe3, 0xa7, 0x1a, 0xcf, 0x5d, - 0xee, 0xd5, 0xbb, 0x4c, 0xaa, 0x8c, 0xb2, 0x66, 0x9d, 0xbd, 0x59, 0xb3, - 0x45, 0x6d, 0xe9, 0xca, 0xe5, 0x33, 0x41, 0xc5, 0x8e, 0xaf, 0xc7, 0x44, - 0xf0, 0xc6, 0x88, 0x0a, 0x72, 0x10, 0xd4, 0x6d, 0xfb, 0x47, 0xeb, 0xd7, - 0xdc, 0xf8, 0xf1, 0x28, 0x75, 0x3a, 0xaf, 0xb3, 0x69, 0xc8, 0xcc, 0xbf, - 0xd9, 0x05, 0x29, 0x03, 0xbf, 0x05, 0x88, 0x7f, 0x90, 0xa8, 0xd3, 0xf3, - 0xc8, 0xf7, 0x4f, 0x4e, 0x7e, 0xa0, 0x9b, 0x55, 0x42, 0x4c, 0x72, 0x19, - 0x9b, 0x96, 0x8b, 0x60, 0x05, 0x1f, 0xf9, 0x40, 0x5c, 0x87, 0xb9, 0x71, - 0xe0, 0x9c, 0xef, 0x5a, 0xef, 0x5f, 0x44, 0xff, 0x5b, 0x24, 0xd0, 0xb1, - 0xb9, 0x62, 0x9e, 0x38, 0xe1, 0x03, 0x55, 0x36, 0xb7, 0x15, 0x37, 0x6b, - 0x29, 0x89, 0xba, 0x60, 0x90, 0x9c, 0xad, 0x6f, 0xbd, 0x35, 0xb3, 0x1a, - 0xc9, 0x07, 0x75, 0xfc, 0x87, 0x03, 0x04, 0xfd, 0x8a, 0x3a, 0x07, 0x80, - 0x6a, 0x0e, 0x49, 0x22, 0x4f, 0x9e, 0x59, 0x7c, 0x1a, 0x6f, 0x19, 0xf4, - 0x65, 0x8c, 0xef, 0x5e, 0xe1, 0x8c, 0x75, 0x6c, 0x5e, 0x26, 0xbf, 0x64, - 0xf1, 0x12, 0x91, 0x42, 0xbe, 0x08, 0x27, 0xc2, 0x76, 0xef, 0x3a, 0xcd, - 0xf7, 0xe5, 0xa2, 0xab, 0xc1, 0x7d, 0xfc, 0x3d, 0x72, 0xa6, 0x6c, 0x73, - 0x8a, 0x9a, 0xee, 0xc4, 0xc0, 0x50, 0x4b, 0x67, 0x87, 0xd1, 0x4a, 0x1e, - 0x6f, 0xb2, 0xd1, 0xe7, 0xca, 0x95, 0xd6, 0xc8, 0xc6, 0x29, 0x46, 0xb2, - 0xbc, 0x82, 0x0f, 0x0b, 0x25, 0x6f, 0x4a, 0xa3, 0x88, 0x80, 0xd5, 0x2d, - 0x4a, 0x05, 0xe3, 0xe6, 0x8a, 0x61, 0x41, 0xe9, 0x12, 0x73, 0xc2, 0x4b, - 0x28, 0x5b, 0xd5, 0xca, 0xec, 0x6e, 0xfb, 0xde, 0xbc, 0xc2, 0x68, 0x91, - 0x0c, 0x74, 0x16, 0xd0, 0x46, 0xa4, 0x6b, 0x18, 0x73, 0xa5, 0x58, 0xb1, - 0x25, 0x2c, 0xdc, 0xd7, 0x9d, 0x6c, 0x5d, 0x40, 0x06, 0xa4, 0xb3, 0x42, - 0x85, 0xdc, 0xca, 0x14, 0xff, 0x54, 0x22, 0x79, 0xc2, 0x74, 0xa4, 0x34, - 0xef, 0x66, 0x93, 0x10, 0x19, 0x91, 0x92, 0x4a, 0x03, 0x2e, 0x06, 0x92, - 0x3e, 0x63, 0xb6, 0xff, 0xec, 0xdb, 0x8f, 0x3d, 0x58, 0xcd, 0x4c, 0xc8, - 0x3f, 0xcf, 0xa9, 0x1e, 0xbe, 0x11, 0xa1, 0x57, 0x11, 0xb6, 0xaf, 0xf6, - 0xab, 0x67, 0xf5, 0xde, 0xc8, 0xcb, 0xf1, 0x9b, 0xd7, 0x0c, 0x5e, 0xbe, - 0x4e, 0xaa, 0xbe, 0x12, 0xe3, 0xbf, 0xc2, 0xa8, 0x34, 0x45, 0x17, 0x55, - 0xc7, 0x53, 0xfc, 0x6e, 0xfa, 0x3d, 0x4d, 0x03, 0x0e, 0x10, 0x23, 0xa0, - 0x47, 0x7e, 0xb4, 0xce, 0x6f, 0xef, 0xd5, 0x60, 0x69, 0x86, 0x18, 0x2e, - 0xa0, 0x59, 0x03, 0xa3, 0xd1, 0x6d, 0x6c, 0x18, 0xa7, 0x88, 0x52, 0x0a, - 0x43, 0x6a, 0x57, 0xe6, 0x6b, 0xd2, 0x92, 0x2c, 0x86, 0x54, 0x69, 0x8b, - 0xc8, 0xfc, 0xbe, 0xca, 0xd7, 0x25, 0x54, 0x7d, 0xd1, 0x92, 0xb0, 0xe3, - 0x4c, 0x1a, 0x16, 0x62, 0xd3, 0x58, 0x26, 0xdf, 0x1c, 0x30, 0x36, 0x01, - 0xdb, 0x91, 0xe4, 0xb2, 0x73, 0xc4, 0xd9, 0x7f, 0xd2, 0x63, 0x3a, 0xb9, - 0x81, 0x9a, 0x52, 0xaf, 0x6f, 0xcd, 0x4a, 0x78, 0x9f, 0x41, 0x92, 0x44, - 0x0e, 0x04, 0x56, 0x22, 0xf1, 0x2f, 0x40, 0x50, 0x58, 0xce, 0x2e, 0x70, - 0xbe, 0x7d, 0x85, 0xd4, 0xc7, 0x72, 0xc8, 0xc2, 0xc3, 0xb6, 0xf8, 0x57, - 0xff, 0xd6, 0x89, 0x19, 0x2b, 0xe6, 0x0e, 0x7d, 0xa3, 0x8d, 0x77, 0x5d, - 0x3f, 0xea, 0x9d, 0x0d, 0x7d, 0xc4, 0x8d, 0x0c, 0x85, 0xc3, 0x28, 0x10, - 0xba, 0xa3, 0x02, 0xb8, 0xb4, 0x9d, 0x02, 0x8e, 0xac, 0x53, 0xe4, 0x5b, - 0xc3, 0xb1, 0x54, 0xf6, 0xf2, 0xd4, 0x4b, 0xed, 0x42, 0xe3, 0x4e, 0x88, - 0x6b, 0x10, 0x0a, 0x89, 0xa4, 0x1e, 0x3e, 0xfa, 0xa7, 0xe8, 0x9e, 0x84, - 0x51, 0x30, 0xab, 0xff, 0xd1, 0x02, 0x48, 0x6c, 0xb3, 0x3e, 0xc7, 0x50, - 0x98, 0xa6, 0x4d, 0xa9, 0xb9, 0x0c, 0x7c, 0x00, 0xf2, 0xff, 0x0d, 0x20, - 0xda, 0x32, 0x47, 0x6c, 0xb3, 0x31, 0x49, 0xa9, 0xe8, 0x6a, 0x83, 0xff, - 0xa6, 0x96, 0x8f, 0xd1, 0x10, 0x05, 0xb7, 0x08, 0xbf, 0x1c, 0xf5, 0xcc, - 0xff, 0x05, 0x52, 0xa5, 0x6e, 0x73, 0x86, 0x72, 0x8f, 0x4f, 0x4a, 0x61, - 0xbe, 0x7d, 0x07, 0x11, 0xa2, 0xfb, 0x9d, 0xde, 0x3f, 0x23, 0x44, 0xfd, - 0xcf, 0x49, 0x0b, 0x17, 0x81, 0xa5, 0x67, 0x18, 0x8e, 0x92, 0x03, 0x12, - 0xc1, 0x57, 0x36, 0x24, 0xa7, 0x8e, 0xfb, 0xb7, 0x7e, 0xad, 0xf2, 0x5d, - 0x51, 0x35, 0x84, 0x77, 0xc3, 0xf6, 0xd8, 0x8a, 0x29, 0xf9, 0x33, 0x65, - 0x33, 0x5e, 0xb2, 0x27, 0x55, 0x85, 0xa6, 0xcc, 0x1f, 0x87, 0x78, 0xc8, - 0x97, 0x66, 0xd3, 0xbf, 0xab, 0x07, 0x89, 0x4b, 0x8d, 0xe2, 0x92, 0xe5, - 0xfe, 0x8a, 0x34, 0xb1, 0x86, 0x98, 0x31, 0x72, 0x55, 0xc6, 0xaf, 0xb5, - 0x28, 0x7a, 0xb4, 0xb0, 0x64, 0x75, 0xa6, 0x3d, 0xca, 0xac, 0xca, 0x9a, - 0xf9, 0xe9, 0x5a, 0x35, 0x41, 0x34, 0x48, 0x2e, 0x09, 0x00, 0x47, 0xe5, - 0xb7, 0x53, 0x69, 0xe4, 0x11, 0x02, 0x67, 0x16, 0xcb, 0x10, 0x35, 0x15, - 0x5e, 0xae, 0x81, 0xbb, 0xa2, 0xbe, 0x1b, 0x5c, 0xa4, 0x46, 0xbc, 0x4f, - 0xb5, 0x71, 0xdf, 0x1e, 0x66, 0x83, 0xd3, 0xd9, 0x09, 0x33, 0xd8, 0xfc, - 0xc7, 0x90, 0x9a, 0x52, 0x04, 0xc6, 0xa3, 0x7e, 0x3c, 0xeb, 0xb5, 0x45, - 0x1d, 0xf6, 0x7c, 0x75, 0xbc, 0xe6, 0x93, 0x18, 0x1a, 0x30, 0xdd, 0x80, - 0x36, 0xd7, 0x2c, 0xe5, 0xa7, 0x88, 0x60, 0x6d, 0x42, 0x34, 0x9e, 0x72, - 0x1e, 0x78, 0xed, 0xc8, 0xaa, 0x27, 0x0f, 0x86, 0xae, 0x15, 0xdd, 0xb7, - 0xac, 0xc6, 0x8d, 0xa9, 0xa7, 0x8f, 0x09, 0x2b, 0x66, 0xc1, 0x97, 0xe6, - 0x16, 0x65, 0x4a, 0x45, 0x6d, 0x44, 0xcf, 0x9c, 0x8f, 0x7f, 0x13, 0x2f, - 0xa5, 0x04, 0xc5, 0x08, 0x3c, 0x3e, 0xdd, 0xfb, 0x6d, 0xca, 0xb9, 0x48, - 0x65, 0xd8, 0x7d, 0x24, 0xe3, 0x9f, 0xb4, 0x39, 0x6f, 0x2a, 0xb1, 0x93, - 0x80, 0xfa, 0x7f, 0xc3, 0x11, 0x45, 0x61, 0xba, 0x50, 0x96, 0xee, 0xb9, - 0xe1, 0x5a, 0xee, 0x31, 0x8f, 0x99, 0xc4, 0xae, 0x90, 0x87, 0xa7, 0xf0, - 0xed, 0x1e, 0xc9, 0x9b, 0xe9, 0x54, 0x30, 0x07, 0x36, 0x1d, 0x23, 0xe1, - 0xbf, 0x1b, 0x63, 0x30, 0x4b, 0x20, 0xdd, 0xde, 0x20, 0x1b, 0xe2, 0x2b, - 0xca, 0xcf, 0xfa, 0x37, 0xe3, 0x3f, 0x33, 0x02, 0x30, 0xce, 0xca, 0x05, - 0x1f, 0xe6, 0xce, 0x06, 0xe7, 0x48, 0x59, 0xfb, 0x24, 0x39, 0xef, 0xd3, - 0xbe, 0x74, 0xcf, 0x54, 0x89, 0x30, 0xb5, 0xef, 0xb0, 0x28, 0x61, 0xdb, - 0x6a, 0x22, 0x0f, 0x04, 0xba, 0xbc, 0x4f, 0xc2, 0x44, 0xae, 0x11, 0xa9, - 0xba, 0x67, 0x9f, 0xfc, 0x90, 0x50, 0xa9, 0x3e, 0x04, 0x40, 0x1a, 0x25, - 0x8b, 0xdd, 0xc6, 0xb5, 0x81, 0x46, 0xc0, 0x91, 0xa0, 0x8b, 0xfc, 0xe9, - 0x6a, 0x22, 0xe8, 0x4e, 0xe9, 0x87, 0x81, 0xcf, 0x8a, 0x50, 0x0a, 0x2f, - 0x03, 0x35, 0x20, 0x6f, 0xf6, 0x49, 0xcb, 0x7b, 0x28, 0x58, 0x3d, 0x4b, - 0x05, 0x2c, 0x6c, 0x0f, 0x72, 0xc4, 0x52, 0xc4, 0x9b, 0xe1, 0x1b, 0x04, - 0xe2, 0x38, 0x08, 0x38, 0xd6, 0x5a, 0xfa, 0x4d, 0x4b, 0xe2, 0xf7, 0x41, - 0xba, 0x23, 0x19, 0x31, 0x5c, 0x64, 0x55, 0x98, 0x6c, 0x04, 0x17, 0x2e, - 0x55, 0x98, 0x3d, 0x7d, 0xb1, 0x0b, 0x04, 0x25, 0xc1, 0x93, 0x97, 0x42, - 0x75, 0x99, 0xa8, 0x87, 0x79, 0x7f, 0xe2, 0x09, 0xf0, 0xdd, 0x0e, 0x3e, - 0x19, 0x90, 0xce, 0x83, 0x42, 0x78, 0x23, 0x87, 0x0c, 0x88, 0x4c, 0x94, - 0x92, 0xce, 0xdf, 0xdb, 0xca, 0x95, 0x61, 0x95, 0x96, 0x7a, 0xff, 0xdf, - 0x7e, 0xd2, 0x2f, 0x13, 0xa4, 0xc9, 0x4b, 0x1c, 0x07, 0x20, 0xe2, 0xbd, - 0xde, 0x07, 0xe6, 0x00, 0xdb, 0x9f, 0x25, 0x4d, 0x02, 0x45, 0xa9, 0x1a, - 0x7c, 0xc5, 0xb4, 0x79, 0xe2, 0x89, 0xd5, 0x4a, 0x80, 0x2d, 0x66, 0xcc, - 0x0b, 0xa8, 0xab, 0x54, 0x52, 0x4b, 0xbd, 0xb4, 0x77, 0x92, 0x55, 0xa2, - 0x8a, 0xbd, 0x92, 0xce, 0x3d, 0x73, 0x5f, 0x93, 0x5f, 0x46, 0xbb, 0x58, - 0xa8, 0xc0, 0x0d, 0x56, 0xcc, 0xe4, 0xed, 0x77, 0x8d, 0x19, 0xb5, 0x25, - 0x99, 0xa5, 0x6f, 0xbb, 0x44, 0x4f, 0xd8, 0xb7, 0xc4, 0xdc, 0xa6, 0xeb, - 0x37, 0x84, 0x98, 0xee, 0x3e, 0x6b, 0x29, 0x1a, 0x79, 0x38, 0xbf, 0x1e, - 0xf1, 0x79, 0xd9, 0x7f, 0xd6, 0xb2, 0xe9, 0xaf, 0xbf, 0x74, 0xb0, 0x52, - 0x20, 0x17, 0x5f, 0x31, 0x35, 0x7c, 0x5e, 0xa9, 0x1d, 0xb2, 0xbf, 0x93, - 0xe7, 0x92, 0xb0, 0xb1, 0x2b, 0xad, 0xf0, 0x3f, 0x6f, 0x53, 0x92, 0xa2, - 0x83, 0x3e, 0xb9, 0xc0, 0x6b, 0xa8, 0x2a, 0xc8, 0xbc, 0xe6, 0x2d, 0x2f, - 0xcf, 0x4b, 0xfa, 0x5f, 0x58, 0x1a, 0x1d, 0x4a, 0x6c, 0x40, 0x16, 0xde, - 0xba, 0x05, 0x8e, 0xed, 0xc5, 0x11, 0x28, 0x2b, 0x9a, 0x3f, 0x65, 0x34, - 0x27, 0xa0, 0x16, 0x6c, 0x17, 0xf0, 0x2e, 0x9e, 0xcd, 0xa6, 0x8e, 0xb1, - 0xb8, 0xe0, 0x86, 0xe8, 0xcd, 0x20, 0xb7, 0xad, 0xe6, 0x04, 0x58, 0x2a, - 0x57, 0x5f, 0x89, 0x94, 0x89, 0xf7, 0x05, 0x1c, 0xa8, 0xd1, 0x80, 0x70, - 0xc8, 0x85, 0xa1, 0x69, 0x18, 0x02, 0xd2, 0x80, 0xfb, 0x23, 0x4b, 0x90, - 0xbc, 0x37, 0xba, 0x1f, 0xa4, 0x68, 0x2e, 0xb5, 0x13, 0xa8, 0x85, 0x79, - 0x4a, 0xc7, 0x3c, 0xa9, 0xd8, 0x5a, 0x19, 0xe3, 0xc4, 0x14, 0xf9, 0x20, - 0x29, 0xbb, 0xb7, 0x67, 0x39, 0x75, 0xf9, 0x91, 0xdd, 0x8a, 0xcf, 0xe1, - 0x47, 0x96, 0x49, 0xb1, 0x84, 0xab, 0x52, 0x6b, 0x17, 0xc7, 0xf0, 0x60, - 0xc9, 0xeb, 0x5e, 0xdc, 0x99, 0x74, 0xa7, 0xb5, 0xdb, 0x0a, 0x38, 0xf5, - 0x46, 0x96, 0xef, 0x48, 0x66, 0xeb, 0xa7, 0x7b, 0xe4, 0x46, 0x39, 0x02, - 0xba, 0x3f, 0x9a, 0x8b, 0xb0, 0x51, 0x2f, 0xb3, 0x98, 0x9d, 0x1c, 0xfd, - 0xc4, 0x88, 0x61, 0xc4, 0x51, 0x6e, 0xb7, 0xa6, 0x5d, 0x40, 0x57, 0x79, - 0x67, 0x85, 0xbd, 0x7f, 0xb5, 0x37, 0xea, 0x8e, 0x2e, 0x91, 0xc4, 0xd3, - 0xf5, 0x0e, 0xce, 0x96, 0x3f, 0xca, 0x83, 0x7b, 0xb9, 0x61, 0x0a, 0x6e, - 0xb6, 0x91, 0x92, 0x16, 0xe3, 0xd8, 0xb2, 0x40, 0x06, 0x20, 0xa8, 0x4d, - 0x96, 0x19, 0xf2, 0x72, 0x55, 0x57, 0x77, 0xac, 0xb6, 0x4c, 0x6d, 0xef, - 0xb9, 0xb9, 0x4c, 0xc5, 0x96, 0xe4, 0x05, 0xba, 0x20, 0x72, 0xb5, 0xca, - 0x3c, 0x71, 0x61, 0x6d, 0xf1, 0xd9, 0x39, 0x92, 0xaf, 0x18, 0xda, 0x86, - 0xa1, 0x3d, 0xf2, 0x71, 0xa4, 0x97, 0x78, 0x3c, 0x6f, 0x7a, 0xc9, 0xef, - 0x68, 0x29, 0x6d, 0xd2, 0x92, 0x59, 0x2c, 0x82, 0xb3, 0x71, 0xb6, 0x7d, - 0xb8, 0x0a, 0xa9, 0x99, 0x3c, 0x28, 0xd1, 0x16, 0x6d, 0x35, 0xee, 0xca, - 0xd1, 0xca, 0x21, 0xfc, 0xab, 0x1c, 0x3f, 0x51, 0xa0, 0xda, 0xdd, 0xca, - 0x39, 0x29, 0x78, 0x2b, 0x80, 0xb0, 0xbb, 0x00, 0x2d, 0x50, 0xbf, 0x8c, - 0xe8, 0x9a, 0xcf, 0x77, 0x60, 0xb2, 0x9f, 0x03, 0x1b, 0x0c, 0x8c, 0x3d, - 0x57, 0xd4, 0xa7, 0x29, 0xe5, 0xdc, 0x33, 0xcd, 0xd8, 0x98, 0xba, 0x8f, - 0x67, 0x62, 0xe5, 0x11, 0xf0, 0x6f, 0x42, 0x69, 0x0e, 0x6a, 0xf5, 0x71, - 0x6d, 0xb5, 0x99, 0xbf, 0xde, 0x64, 0xf2, 0xa8, 0xac, 0x7c, 0xf4, 0x1b, - 0x11, 0x36, 0x97, 0xa7, 0x92, 0xb4, 0x69, 0x20, 0xfb, 0xa7, 0x9e, 0x47, - 0xbf, 0xf0, 0x61, 0x1d, 0xcd, 0xec, 0xfe, 0xbb, 0x51, 0xbe, 0x03, 0xfa, - 0x93, 0xb5, 0xae, 0x36, 0x30, 0xa9, 0x1e, 0x65, 0xa3, 0x1d, 0xc4, 0x38, - 0x1b, 0xb8, 0x2c, 0xec, 0x8b, 0x20, 0x2b, 0xda, 0xc8, 0x97, 0x5e, 0x96, - 0x68, 0xe8, 0x22, 0xf6, 0x7f, 0xe6, 0x7f, 0x09, 0xd8, 0x0c, 0x7e, 0x73, - 0x10, 0xdd, 0x5b, 0x17, 0xd2, 0x9c, 0xcd, 0x1f, 0x7e, 0xc1, 0x9d, 0x6f, - 0xec, 0x05, 0x58, 0xd7, 0xc7, 0xca, 0xfd, 0x72, 0x5a, 0xca, 0x75, 0xd4, - 0x16, 0xfb, 0xc7, 0x89, 0x66, 0x75, 0xb6, 0x23, 0xb0, 0xef, 0x6b, 0x91, - 0x4e, 0xda, 0x56, 0x58, 0x37, 0x6f, 0x92, 0xbc, 0x19, 0x20, 0x0b, 0x57, - 0xdf, 0xd4, 0xfc, 0xa3, 0x9b, 0x37, 0xa1, 0x90, 0x55, 0x26, 0xdb, 0xbc, - 0x0d, 0x1c, 0x99, 0xa5, 0x3f, 0xa8, 0x24, 0x7d, 0xd1, 0x86, 0xdf, 0x39, - 0xdf, 0x98, 0x50, 0x11, 0x1a, 0x95, 0x18, 0xc3, 0xcc, 0x4f, 0x29, 0x01, - 0x5c, 0xe9, 0x50, 0x2b, 0x2d, 0x25, 0xa3, 0xe0, 0x73, 0xbc, 0xe6, 0x43, - 0x33, 0x87, 0x1e, 0x63, 0x39, 0x13, 0xe8, 0x27, 0xc5, 0xc8, 0x95, 0x9c, - 0xfe, 0x03, 0x0a, 0xe8, 0x32, 0xf1, 0x04, 0xe6, 0x3e, 0x19, 0x8a, 0x68, - 0x47, 0x23, 0xe7, 0x17, 0x22, 0x5b, 0xc9, 0x35, 0xa4, 0xec, 0xff, 0x1a, - 0x9b, 0xab, 0x83, 0x67, 0xbd, 0xa9, 0xf6, 0x5b, 0x45, 0xb5, 0xbd, 0x83, - 0x4c, 0x3b, 0xde, 0x7e, 0x2e, 0x93, 0x21, 0x6e, 0x17, 0xfd, 0xc4, 0x1e, - 0xc2, 0x42, 0xf7, 0xe5, 0x0f, 0x3b, 0xa3, 0xf5, 0x53, 0x8b, 0x94, 0x3c, - 0xcc, 0x34, 0xdb, 0x45, 0x1b, 0xfc, 0xae, 0x4d, 0x45, 0x20, 0x9e, 0x78, - 0x4a, 0x40, 0x51, 0x17, 0xcf, 0xb4, 0x90, 0x71, 0xd0, 0xeb, 0xf8, 0x4b, - 0x7a, 0xf9, 0x7b, 0xa7, 0xb9, 0x17, 0x81, 0xf8, 0x36, 0x05, 0x4d, 0x67, - 0xf9, 0xd3, 0xb5, 0x8d, 0x98, 0xb0, 0x0a, 0xb4, 0x07, 0xad, 0x72, 0x71, - 0x9f, 0x64, 0xad, 0x02, 0x3e, 0x55, 0xf7, 0x60, 0x86, 0x37, 0x79, 0x82, - 0x5a, 0xbc, 0x45, 0x7a, 0x92, 0x53, 0x88, 0xb5, 0x88, 0xc9, 0x28, 0xff, - 0x47, 0x46, 0xaa, 0x65, 0xb3, 0x43, 0x80, 0x6d, 0xa2, 0xe4, 0x97, 0x96, - 0x95, 0xae, 0x8a, 0x3c, 0xeb, 0x1e, 0x6e, 0xac, 0xa7, 0x63, 0x8d, 0x55, - 0x42, 0x11, 0x8f, 0xe5, 0xa4, 0x65, 0x7a, 0x22, 0x6c, 0xff, 0x52, 0x3e, - 0x78, 0x1c, 0x7a, 0x63, 0x18, 0x5e, 0x7b, 0x34, 0xed, 0x23, 0x80, 0x91, - 0xc1, 0xe3, 0x21, 0xb0, 0x68, 0xdd, 0xf6, 0xe7, 0xc4, 0x90, 0x5a, 0xdf, - 0xa9, 0xc4, 0xfd, 0x58, 0xab, 0x73, 0x03, 0xee, 0x44, 0x1a, 0x34, 0xfd, - 0xf6, 0x0e, 0xae, 0x9d, 0xe3, 0x46, 0x56, 0x85, 0xc9, 0xaa, 0x4f, 0x01, - 0x97, 0x95, 0x1c, 0xef, 0x11, 0x9a, 0x22, 0x28, 0x52, 0x39, 0xf4, 0xee, - 0x88, 0x83, 0x9e, 0x05, 0x39, 0x17, 0x93, 0xd5, 0xe9, 0x70, 0x8e, 0x07, - 0x9e, 0x9c, 0xbb, 0xe7, 0x2a, 0x0f, 0x15, 0xc5, 0x65, 0x61, 0x27, 0x74, - 0x5f, 0x60, 0xbb, 0x42, 0x0e, 0xc4, 0x14, 0x80, 0xae, 0xc6, 0x56, 0xcc, - 0xe1, 0x65, 0x93, 0x26, 0x58, 0xe3, 0xad, 0x12, 0x99, 0x53, 0x44, 0xec, - 0x3c, 0x05, 0xc4, 0x3d, 0xae, 0x13, 0xb7, 0x9b, 0x1a, 0x78, 0xac, 0xcc, - 0x3e, 0x46, 0xf6, 0x74, 0xa9, 0x28, 0xe8, 0x22, 0x51, 0x88, 0x4b, 0x4e, - 0x39, 0xd5, 0x41, 0xdc, 0x6a, 0xfe, 0x7f, 0x52, 0x9b, 0x16, 0x49, 0xd0, - 0x7d, 0x17, 0x0d, 0x75, 0xbb, 0x8d, 0x3b, 0x19, 0xd7, 0x5a, 0x27, 0xa0, - 0x54, 0xb5, 0x86, 0x02, 0x1f, 0x3b, 0xa7, 0xd9, 0xaf, 0x26, 0x3a, 0x67, - 0x1b, 0xd5, 0x49, 0x3f, 0x28, 0x91, 0xe3, 0x0a, 0xe6, 0xf4, 0xd7, 0xff, - 0x10, 0x20, 0x0e, 0x30, 0x12, 0xbf, 0x7b, 0xe8, 0x0b, 0x0d, 0x37, 0x0c, - 0xb4, 0x17, 0x4f, 0x0c, 0x41, 0x4e, 0xbb, 0x81, 0xf6, 0x38, 0xf4, 0x0a, - 0x62, 0x00, 0xa6, 0x86, 0xbd, 0xb3, 0x42, 0xbd, 0x76, 0x78, 0x9a, 0x2c, - 0xbb, 0xb8, 0x50, 0x4d, 0x3d, 0x7e, 0xc4, 0xce, 0x61, 0x08, 0x68, 0xe1, - 0x5d, 0x65, 0x6b, 0x09, 0x15, 0x13, 0xa0, 0xf0, 0xba, 0x4a, 0x44, 0x86, - 0x8b, 0x47, 0x53, 0x0d, 0x8c, 0xba, 0x75, 0x47, 0xa7, 0xee, 0x9e, 0x35, - 0xcc, 0x89, 0xa5, 0x0e, 0xc8, 0x98, 0xf3, 0xd7, 0x66, 0xac, 0x25, 0x0f, - 0x01, 0xfe, 0xb4, 0x70, 0x02, 0x42, 0xb6, 0xef, 0x16, 0x53, 0x45, 0x69, - 0x7a, 0x36, 0xbb, 0x48, 0xaf, 0xf1, 0xb8, 0x58, 0xf0, 0xc0, 0x6e, 0x0a, - 0x00, 0x97, 0xeb, 0xe3, 0xfa, 0x6b, 0x31, 0xad, 0x32, 0x6d, 0x45, 0xd4, - 0x15, 0xda, 0x35, 0x7e, 0xad, 0x04, 0x66, 0xd2, 0xd1, 0x6c, 0x70, 0x90, - 0x4a, 0xd3, 0x23, 0x4c, 0xc7, 0x4b, 0x0a, 0xd2, 0xa4, 0xee, 0x46, 0x02, - 0xb9, 0xad, 0x87, 0xa9, 0x41, 0x85, 0x94, 0x74, 0xaa, 0x1e, 0x1c, 0xef, - 0x82, 0x1f, 0x16, 0xe7, 0x0c, 0xbd, 0x4e, 0x0e, 0x10, 0x13, 0x97, 0x51, - 0xfb, 0xed, 0xb0, 0x27, 0x2e, 0x5d, 0x56, 0xbc, 0x17, 0xd4, 0xc8, 0x59, - 0x16, 0x84, 0xba, 0xce, 0x7a, 0xbc, 0x9b, 0x4c, 0xa9, 0xb9, 0x2e, 0x57, - 0xeb, 0xe8, 0xea, 0x58, 0xc2, 0x53, 0x3a, 0xa0, 0x4d, 0x29, 0x73, 0x76, - 0x88, 0x01, 0x01, 0x2a, 0x3a, 0xef, 0xb2, 0xbc, 0xe1, 0xda, 0x46, 0x44, - 0xd9, 0x3c, 0xbd, 0x51, 0x9e, 0xf4, 0x5a, 0xa9, 0x62, 0x03, 0x02, 0x17, - 0x0d, 0xbb, 0x81, 0x10, 0xb6, 0x66, 0xf6, 0xc3, 0x1d, 0x3a, 0x11, 0xfb, - 0xf0, 0x5c, 0xe4, 0x97, 0x4c, 0x11, 0x71, 0xee, 0xf6, 0xfc, 0x62, 0x57, - 0xb7, 0x12, 0x15, 0x15, 0xf8, 0x32, 0xc0, 0x8b, 0xc7, 0x8c, 0x73, 0x1c, - 0x7b, 0x31, 0xd6, 0x18, 0xdd, 0x8d, 0x5d, 0x9c, 0xd9, 0x47, 0xcf, 0x4f, - 0xb6, 0x3e, 0xf9, 0xbb, 0x34, 0xfd, 0x29, 0xc3, 0x50, 0x17, 0x98, 0xd9, - 0x9b, 0x83, 0x73, 0x29, 0x45, 0x0a, 0x70, 0x44, 0x3e, 0xce, 0xae, 0xb4, - 0x7b, 0xd6, 0xfb, 0xd7, 0x65, 0x78, 0x8b, 0x97, 0x7a, 0x58, 0x59, 0x77, - 0x14, 0x8e, 0x4b, 0x31, 0xa6, 0x33, 0x8e, 0xb3, 0x61, 0x95, 0x67, 0x7e, - 0x68, 0xfb, 0x94, 0x82, 0xcd, 0x74, 0x82, 0xef, 0x80, 0x38, 0xdd, 0x15, - 0x8b, 0x87, 0x11, 0x6f, 0xd1, 0x10, 0xa3, 0x6f, 0x8b, 0x45, 0xc6, 0xae, - 0x45, 0x81, 0xf7, 0xf1, 0xde, 0xb6, 0xa7, 0xc2, 0xa4, 0x12, 0xd3, 0x70, - 0xd1, 0x23, 0x88, 0x5c, 0x0b, 0x2d, 0xb3, 0x34, 0x8e, 0x71, 0xbd, 0x2a, - 0xff, 0x5c, 0x3a, 0x62, 0x84, 0xbc, 0x3f, 0x48, 0xe0, 0xc4, 0x9e, 0xb8, - 0x31, 0xe3, 0x14, 0x63, 0x12, 0xcf, 0x30, 0xf3, 0xe6, 0x34, 0x95, 0x38, - 0xea, 0xe3, 0x18, 0x00, 0xc0, 0xf3, 0x4b, 0xd8, 0x72, 0x08, 0xce, 0xfc, - 0x9b, 0x10, 0xb9, 0x7a, 0x08, 0x55, 0x36, 0xda, 0xdd, 0xba, 0x65, 0x3a, - 0x82, 0x94, 0xb4, 0x57, 0xf6, 0x52, 0x58, 0x72, 0x9d, 0x4b, 0x02, 0xcc, - 0x6d, 0x21, 0xd5, 0x69, 0xb6, 0xea, 0x1e, 0xeb, 0xcb, 0x90, 0x73, 0x08, - 0xfa, 0x20, 0xed, 0x43, 0xb9, 0x56, 0x18, 0x4d, 0x20, 0xcd, 0x5d, 0x45, - 0x2e, 0xf2, 0x8f, 0xe4, 0x6c, 0xc8, 0x25, 0xf1, 0x2d, 0x2a, 0xe9, 0x5c, - 0x29, 0xe2, 0xe5, 0x1b, 0x6d, 0xb9, 0x2a, 0xda, 0x7d, 0x62, 0x5f, 0xd7, - 0x79, 0x51, 0xb8, 0x8a, 0x38, 0xc9, 0x0d, 0xea, 0xb9, 0x71, 0xf3, 0xca, - 0xe5, 0x7d, 0x81, 0x1e, 0x50, 0x70, 0xc9, 0x0c, 0x08, 0xe7, 0x61, 0xfa, - 0x3d, 0xe3, 0xdf, 0x6d, 0xa7, 0x3b, 0xd8, 0x6a, 0xcb, 0x72, 0x0f, 0xa4, - 0x41, 0xcc, 0x4b, 0xb3, 0x1b, 0x5d, 0x9d, 0x51, 0xa2, 0x71, 0xdb, 0x0f, - 0x0d, 0x01, 0x79, 0x72, 0x07, 0x87, 0xf6, 0xfc, 0x4c, 0x9d, 0x56, 0x78, - 0x67, 0x92, 0x39, 0x8c, 0x57, 0xd1, 0xb2, 0x55, 0x3b, 0xd8, 0x2f, 0x7c, - 0xc2, 0x24, 0x64, 0x4e, 0x94, 0xc7, 0xc1, 0x2f, 0x78, 0x05, 0xe0, 0xc3, - 0xbf, 0x2a, 0x22, 0x96, 0xc8, 0xe7, 0x1c, 0x9b, 0xd2, 0xe4, 0x44, 0xa2, - 0x2c, 0xe5, 0xf6, 0xa1, 0x8a, 0x9b, 0x6b, 0x33, 0x20, 0x9a, 0xcb, 0x6f, - 0x6a, 0xe5, 0xc1, 0xa9, 0x38, 0x62, 0x68, 0x28, 0xf9, 0x94, 0xb3, 0xab, - 0x5c, 0x89, 0x9d, 0x59, 0xa1, 0x99, 0xa6, 0x0e, 0xfa, 0xe7, 0x5d, 0x15, - 0x29, 0x3b, 0x2c, 0xff, 0x07, 0xff, 0x25, 0x8b, 0x76, 0x7e, 0xac, 0xb8, - 0x3b, 0x9a, 0x2e, 0x57, 0xd9, 0x2f, 0x3a, 0x6a, 0xd2, 0x66, 0xa7, 0x90, - 0xc7, 0x89, 0x12, 0x96, 0x9e, 0x3c, 0x76, 0x9b, 0x8b, 0x58, 0xb6, 0xbe, - 0xf1, 0xc4, 0x38, 0xfd, 0x05, 0x63, 0xbb, 0xd4, 0x52, 0x80, 0xb9, 0xb9, - 0xbb, 0xbd, 0xb1, 0xa1, 0x72, 0x25, 0x20, 0xaa, 0x5a, 0x98, 0xb5, 0x5f, - 0x11, 0x55, 0xda, 0xcb, 0x2f, 0xb5, 0xfd, 0x40, 0xe0, 0xd0, 0xab, 0xa9, - 0x56, 0xaf, 0x11, 0x00, 0x6b, 0x9a, 0xf1, 0x8a, 0xba, 0xe8, 0x84, 0xac, - 0x54, 0x78, 0x40, 0x36, 0xc1, 0xc8, 0x59, 0x19, 0x42, 0x4f, 0xae, 0x58, - 0xbe, 0x7b, 0x56, 0x7e, 0xdf, 0x9f, 0xf9, 0xa9, 0x82, 0xbc, 0x65, 0x29, - 0xfe, 0xe2, 0x59, 0x5f, 0x86, 0x9f, 0x15, 0xc3, 0xea, 0x98, 0x26, 0x52, - 0xcf, 0x0b, 0xa7, 0x5c, 0x82, 0xca, 0x66, 0xa6, 0x02, 0x52, 0x0b, 0xc4, - 0x49, 0x22, 0x46, 0xaa, 0x00, 0xe4, 0xeb, 0xa6, 0x02, 0xd2, 0xb6, 0x87, - 0x9b, 0xd3, 0xae, 0x0e, 0x41, 0xf6, 0x3e, 0x9d, 0xef, 0xf5, 0xf4, 0x6f, - 0xe1, 0x1b, 0xe1, 0x63, 0xfc, 0x98, 0xe5, 0xf6, 0x25, 0x7a, 0x83, 0x06, - 0x50, 0x23, 0x64, 0xf4, 0xf0, 0x15, 0x51, 0x68, 0x0f, 0x28, 0x04, 0x42, - 0x4b, 0x2d, 0xe9, 0xe4, 0x4d, 0x39, 0xe1, 0x5d, 0x8f, 0xe6, 0xa3, 0xe1, - 0xa1, 0x14, 0xaf, 0xae, 0xc5, 0xac, 0xc8, 0x89, 0x8b, 0xf0, 0xf9, 0x4c, - 0xdc, 0x25, 0x70, 0x57, 0xc2, 0x59, 0x3b, 0xe1, 0xb2, 0x30, 0xfc, 0x58, - 0x5b, 0x6d, 0x47, 0xef, 0x82, 0x68, 0x52, 0xb8, 0x8a, 0x37, 0xe3, 0x88, - 0x6b, 0xcb, 0x7a, 0x22, 0x51, 0x14, 0xf5, 0x46, 0x73, 0x48, 0x46, 0x90, - 0xce, 0xf6, 0xc0, 0xba, 0x46, 0x42, 0x92, 0xe4, 0x6b, 0x7c, 0x3f, 0xfb, - 0xe4, 0x0d, 0xdb, 0xe8, 0xc5, 0x90, 0x66, 0x10, 0xfa, 0x01, 0xb7, 0xe4, - 0x64, 0x6c, 0xf3, 0x5c, 0x5c, 0x99, 0xb3, 0x0a, 0xc5, 0xb0, 0x8c, 0x38, - 0x61, 0x6f, 0xc7, 0xd6, 0x6e, 0x6a, 0x1b, 0xe1, 0x5a, 0x31, 0x64, 0xd9, - 0x36, 0x3a, 0xa4, 0xe9, 0x2d, 0x1e, 0x06, 0xbd, 0x87, 0x24, 0xbf, 0xd5, - 0x5c, 0x00, 0x2a, 0x03, 0x12, 0xaa, 0xa8, 0x59, 0x73, 0x19, 0x45, 0x70, - 0x3a, 0xad, 0x79, 0xa4, 0x4a, 0x86, 0xb6, 0xd2, 0x12, 0x3b, 0x1e, 0x3e, - 0x40, 0xda, 0x21, 0xe0, 0x9a, 0x60, 0xa5, 0xce, 0xd6, 0xf0, 0x4f, 0x9e, - 0xfc, 0xc2, 0xb8, 0xa8, 0x42, 0x8d, 0x5a, 0xc0, 0xe8, 0x94, 0x4a, 0xa8, - 0xbf, 0x6d, 0xb2, 0x26, 0x06, 0x56, 0x87, 0x9e, 0xd8, 0xc0, 0x19, 0xc8, - 0x7a, 0x74, 0x90, 0x10, 0x2f, 0x9a, 0x98, 0xa9, 0x06, 0xa3, 0x15, 0x20, - 0xce, 0x32, 0xd5, 0x71, 0x7a, 0x7d, 0x57, 0x56, 0x17, 0x66, 0xe6, 0x27, - 0xed, 0x61, 0xa7, 0x2e, 0x61, 0xcc, 0xde, 0x3c, 0x65, 0x07, 0xa7, 0x78, - 0x84, 0x9b, 0x26, 0x4e, 0x26, 0xea, 0xc8, 0xad, 0x19, 0x69, 0xae, 0x9f, - 0xa2, 0xb7, 0x5f, 0x30, 0x55, 0x31, 0x77, 0x14, 0x5b, 0x5d, 0x9c, 0x17, - 0xdd, 0x59, 0x01, 0xfd, 0xd0, 0xec, 0x9e, 0xb5, 0xed, 0xb6, 0x0a, 0xec, - 0x9c, 0xf3, 0xb7, 0xb3, 0x9b, 0x97, 0x11, 0x99, 0x16, 0x1e, 0x74, 0xa8, - 0xac, 0x97, 0x79, 0x33, 0xef, 0xdf, 0xe6, 0x0c, 0x70, 0x7a, 0x25, 0x1d, - 0xdf, 0xe7, 0x3f, 0x3e, 0x31, 0x5e, 0xad, 0xc0, 0x41, 0x77, 0x73, 0xf8, - 0xb5, 0xa3, 0x26, 0xc5, 0xf8, 0xb9, 0xab, 0xa2, 0x1f, 0x84, 0xfd, 0x95, - 0x7c, 0x57, 0xf0, 0x99, 0x62, 0x17, 0x50, 0x54, 0xe6, 0x22, 0xe1, 0xf9, - 0x76, 0x84, 0xc3, 0xea, 0xfd, 0x0c, 0x9c, 0x55, 0x0c, 0x39, 0x53, 0x4a, - 0xb2, 0x7f, 0x2c, 0x7d, 0x0c, 0xe2, 0x23, 0x60, 0xfc, 0x05, 0x25, 0xf6, - 0x87, 0xc8, 0xf2, 0x31, 0x05, 0x3b, 0xa8, 0x23, 0x6f, 0xc4, 0x81, 0x03, - 0x81, 0xee, 0x33, 0xf0, 0x3c, 0xdf, 0xf9, 0x3f, 0xce, 0xf5, 0xde, 0x77, - 0x6a, 0x8a, 0x27, 0xc6, 0x01, 0xed, 0x13, 0x9e, 0xdd, 0x73, 0x93, 0xd8, - 0xfa, 0x0a, 0xd5, 0xb7, 0xc7, 0x60, 0xe2, 0x2b, 0xa0, 0x3f, 0xc2, 0x01, - 0xd4, 0xa6, 0xe6, 0xa9, 0xc8, 0x25, 0x09, 0x67, 0x56, 0x06, 0x63, 0x85, - 0x98, 0xde, 0x16, 0xf8, 0x28, 0x41, 0x7d, 0x2c, 0x4d, 0x20, 0x22, 0x1d, - 0x34, 0x4a, 0x7e, 0xde, 0x75, 0xdd, 0xaa, 0xa4, 0xa0, 0x4f, 0xb6, 0x09, - 0x57, 0x98, 0xa4, 0x00, 0xf1, 0xc0, 0x2d, 0xc8, 0x8d, 0x8f, 0x90, 0x76, - 0x50, 0x4f, 0xd5, 0x98, 0xbd, 0xd2, 0xfa, 0xcc, 0x0a, 0x4b, 0x6c, 0xd7, - 0x3b, 0xab, 0x27, 0xfd, 0x41, 0xff, 0x8d, 0xf4, 0xf3, 0x5a, 0x9a, 0xaf, - 0x62, 0x4e, 0x4a, 0x9f, 0x74, 0x86, 0xfa, 0x0a, 0x64, 0xce, 0x96, 0x1f, - 0xe5, 0x24, 0x74, 0xba, 0x95, 0xdd, 0x57, 0x80, 0xed, 0x16, 0x95, 0x68, - 0xe4, 0xa3, 0xe1, 0x63, 0xe7, 0x0e, 0xa5, 0x92, 0x96, 0xcf, 0x00, 0x44, - 0x3b, 0x63, 0x19, 0x97, 0xd6, 0x81, 0xf1, 0xa4, 0x32, 0x1c, 0x99, 0x19, - 0xc1, 0xda, 0xcf, 0x2f, 0xfa, 0x4a, 0x76, 0x5c, 0x7f, 0x37, 0x74, 0x1d, - 0x36, 0x07, 0x3e, 0xc4, 0xb0, 0xba, 0x1d, 0x4e, 0xfe, 0x9c, 0x49, 0x11, - 0x8c, 0x63, 0xe6, 0x31, 0xdd, 0x27, 0x86, 0x78, 0x21, 0xd1, 0xf8, 0x98, - 0xc7, 0x4d, 0x54, 0xf0, 0x57, 0xfa, 0x03, 0xb2, 0x60, 0xe0, 0x3b, 0x98, - 0x07, 0x06, 0x76, 0x1f, 0x9e, 0x50, 0xaf, 0x49, 0xdd, 0x11, 0x87, 0x12, - 0xca, 0x90, 0x44, 0xe9, 0x97, 0x29, 0x47, 0x60, 0x9d, 0xa8, 0xc2, 0xc8, - 0xc5, 0x5d, 0x0d, 0xab, 0x8e, 0x94, 0x51, 0xc1, 0x6f, 0x93, 0x4c, 0x58, - 0x42, 0x55, 0xa2, 0x98, 0x4d, 0x30, 0x46, 0x45, 0x02, 0x64, 0x0e, 0x1a, - 0xdc, 0x61, 0x75, 0x02, 0x52, 0x8e, 0xbe, 0xd3, 0xc7, 0x47, 0xc2, 0xb9, - 0x39, 0x5b, 0x82, 0x8d, 0xb8, 0xe1, 0xac, 0x41, 0x79, 0x0d, 0x1b, 0xa6, - 0x0b, 0x9f, 0xb7, 0x3c, 0x16, 0x12, 0xda, 0x50, 0x78, 0x50, 0x92, 0x41, - 0x99, 0x91, 0x0c, 0xc3, 0x95, 0x18, 0x74, 0xeb, 0x09, 0xda, 0x03, 0xee, - 0x72, 0xa5, 0xda, 0x4f, 0xf9, 0x35, 0x55, 0xbd, 0x49, 0xb5, 0x94, 0xc9, - 0x45, 0x66, 0x26, 0x7a, 0x5d, 0x6d, 0x26, 0x7c, 0x8e, 0x82, 0xed, 0x45, - 0x88, 0xaa, 0xa7, 0x7d, 0x88, 0x8b, 0x7d, 0x6b, 0x74, 0x89, 0x79, 0xa2, - 0xf1, 0x84, 0xc2, 0x37, 0x10, 0x39, 0x2a, 0x4a, 0xcc, 0x32, 0x6c, 0x9c, - 0x1e, 0x44, 0x0b, 0x2a, 0x63, 0x4b, 0xf3, 0x4b, 0xaa, 0x0e, 0x7b, 0x5c, - 0x8d, 0x45, 0x0f, 0xe2, 0x10, 0xdc, 0xd0, 0xf7, 0x63, 0x5d, 0xd2, 0xdc, - 0x4a, 0x7a, 0x1e, 0x7d, 0xd8, 0xb3, 0x50, 0xde, 0xc1, 0xa2, 0xdf, 0x03, - 0xa1, 0x4e, 0x92, 0xc3, 0x2b, 0x7d, 0x65, 0x89, 0x5b, 0x05, 0x71, 0x80, - 0xbe, 0x51, 0xe0, 0x4b, 0xd5, 0x79, 0x33, 0x8c, 0x58, 0xd2, 0x23, 0xb8, - 0x45, 0xbe, 0x23, 0xd4, 0x2d, 0xfa, 0xaa, 0x23, 0xd8, 0x4d, 0x2a, 0xd0, - 0xe6, 0xe2, 0x28, 0xc7, 0x01, 0xf7, 0x64, 0x7f, 0x9f, 0xd8, 0x71, 0x40, - 0x7c, 0xaa, 0x53, 0x77, 0x58, 0xd1, 0x36, 0xa7, 0x40, 0x64, 0x43, 0x79, - 0x70, 0x86, 0x1a, 0xe5, 0x4e, 0x02, 0x04, 0x5c, 0xef, 0x3d, 0x20, 0xde, - 0x45, 0x97, 0x98, 0x0b, 0xa8, 0xb8, 0x8d, 0xc3, 0xf2, 0x10, 0x5f, 0x38, - 0xe8, 0x8c, 0x81, 0x8a, 0x23, 0x6b, 0x8f, 0x9f, 0xfa, 0x48, 0x93, 0x33, - 0x0c, 0xc1, 0xf8, 0x76, 0xee, 0x38, 0xef, 0x4d, 0x3b, 0xc1, 0x2a, 0x87, - 0x4f, 0xbc, 0xe1, 0x1d, 0x5c, 0x53, 0x23, 0x84, 0xe0, 0x5d, 0x37, 0x96, - 0x4e, 0x29, 0x45, 0xb4, 0x2e, 0xa9, 0x2b, 0xc4, 0xe8, 0x8b, 0xd5, 0x3a, - 0x15, 0xbe, 0x6d, 0x1d, 0xc9, 0x50, 0xe6, 0x44, 0x64, 0x81, 0x06, 0x39, - 0x11, 0xde, 0x6b, 0xa1, 0xd4, 0x71, 0x8c, 0x90, 0x2d, 0xf9, 0x3f, 0x7d, - 0x45, 0x04, 0xbc, 0x89, 0xa5, 0x97, 0x4a, 0x91, 0xc5, 0x84, 0x68, 0x92, - 0x67, 0xaa, 0x0f, 0x63, 0xc5, 0x8e, 0xff, 0x14, 0xdb, 0x22, 0xea, 0x54, - 0xab, 0xe4, 0x31, 0x05, 0xbd, 0xf6, 0x5c, 0x58, 0x1d, 0x82, 0xb0, 0x93, - 0xdb, 0x30, 0xac, 0xdf, 0x17, 0x54, 0xe2, 0xd5, 0x81, 0x4d, 0x0c, 0x48, - 0xe0, 0x8b, 0x56, 0xa7, 0x6f, 0x89, 0x54, 0x56, 0xb2, 0xff, 0x4e, 0x75, - 0x9f, 0x8c, 0xef, 0x85, 0xaa, 0xfe, 0x24, 0xe6, 0xc8, 0x5c, 0xe1, 0x27, - 0x40, 0x8c, 0x6a, 0x4d, 0x0f, 0xe4, 0xca, 0x2b, 0x0b, 0x33, 0xce, 0xb0, - 0x44, 0x66, 0xad, 0x7f, 0x9e, 0xe0, 0x86, 0x8a, 0x54, 0x64, 0xba, 0x33, - 0x17, 0xdb, 0xfe, 0x80, 0x91, 0xa3, 0x91, 0x19, 0x5b, 0x09, 0xf5, 0x94, - 0x0f, 0xf2, 0x89, 0xe6, 0x52, 0x79, 0xbe, 0xd8, 0xdb, 0xde, 0xa6, 0xe6, - 0x06, 0xa4, 0x34, 0x1c, 0xd6, 0xde, 0x7c, 0xe8, 0x2f, 0xca, 0xab, 0x58, - 0x1c, 0x5f, 0x6b, 0x87, 0xd3, 0x36, 0x17, 0x89, 0x8f, 0xbe, 0x66, 0xf5, - 0x4f, 0xc5, 0x8a, 0x57, 0xbc, 0x8e, 0xbb, 0x3a, 0x81, 0xaf, 0x37, 0x4b, - 0xb4, 0x79, 0x6e, 0x04, 0xa4, 0x9a, 0x00, 0x36, 0xc3, 0xc1, 0x38, 0xb9, - 0x90, 0x6b, 0x18, 0xee, 0x66, 0x37, 0xd5, 0xe9, 0x50, 0xe6, 0xc1, 0xcf, - 0xc2, 0x16, 0xb3, 0x71, 0xf6, 0xcf, 0x43, 0x3d, 0xf1, 0x4c, 0x33, 0x97, - 0xd2, 0x77, 0x82, 0xdc, 0xd7, 0xd6, 0x91, 0x23, 0x4a, 0x6e, 0xcb, 0x9b, - 0x25, 0x52, 0x83, 0x38, 0xd7, 0x2c, 0x7f, 0x57, 0xc5, 0xfe, 0xce, 0x66, - 0x85, 0x8e, 0x97, 0x9d, 0x88, 0x77, 0x8b, 0xa3, 0x57, 0x07, 0xca, 0xbc, - 0x38, 0xc0, 0x69, 0xb0, 0x1f, 0x9e, 0x9a, 0x18, 0x12, 0xe6, 0x88, 0x50, - 0xd8, 0x7e, 0xbf, 0xaf, 0x80, 0xe4, 0x13, 0x1d, 0x12, 0x78, 0x6e, 0xe6, - 0x92, 0xdf, 0xa0, 0x8d, 0x9b, 0xce, 0xde, 0x3d, 0xd4, 0x29, 0xd2, 0xfd, - 0x03, 0x63, 0xfb, 0x9a, 0x23, 0xf5, 0xd9, 0x9a, 0xfb, 0x28, 0x3d, 0x98, - 0x9f, 0x0b, 0x40, 0x5d, 0xa6, 0x6a, 0x7c, 0x1e, 0x75, 0x9e, 0xd9, 0x69, - 0xc2, 0xfe, 0x26, 0x2d, 0xea, 0x98, 0xb5, 0x31, 0xd6, 0x2f, 0xba, 0xd6, - 0x89, 0x09, 0x57, 0x27, 0xe7, 0xf4, 0xe6, 0x01, 0x9b, 0x8e, 0x5e, 0x51, - 0x0d, 0xe2, 0x6b, 0xed, 0x20, 0x73, 0x99, 0xc4, 0x39, 0xcf, 0xa2, 0x5d, - 0xda, 0xcb, 0x69, 0x6a, 0x64, 0x56, 0x13, 0xc4, 0xb3, 0xf7, 0x03, 0x9b, - 0x58, 0x52, 0xef, 0x0a, 0x20, 0x6f, 0x24, 0xc5, 0xdc, 0xe8, 0x98, 0x23, - 0x81, 0xe7, 0x31, 0xca, 0x67, 0x76, 0x16, 0x7c, 0x38, 0x62, 0x8a, 0xcd, - 0x98, 0x79, 0x98, 0xb2, 0x67, 0xba, 0xd8, 0x44, 0x1b, 0xfd, 0xb8, 0x52, - 0xd7, 0xfe, 0xf5, 0x59, 0x2e, 0x77, 0xb3, 0xeb, 0x94, 0xc7, 0x27, 0x6a, - 0x3f, 0x0a, 0x9a, 0x2d, 0x9d, 0x3b, 0x39, 0xdf, 0xea, 0xc5, 0x11, 0x9a, - 0xa0, 0xe8, 0x7e, 0x9e, 0xaa, 0xe7, 0xc7, 0x8f, 0x29, 0xac, 0xfb, 0xc3, - 0x6e, 0xce, 0x72, 0x84, 0x27, 0xc8, 0x21, 0x71, 0x35, 0x30, 0xcd, 0x90, - 0x09, 0x01, 0x73, 0x76, 0x55, 0x92, 0x4c, 0xa2, 0x05, 0x6b, 0xc2, 0x7e, - 0xaa, 0x09, 0xa1, 0x25, 0x17, 0xa5, 0xc2, 0xbf, 0x1a, 0x34, 0x1c, 0x10, - 0x56, 0x1d, 0x6a, 0x34, 0x41, 0x49, 0x98, 0x8b, 0x85, 0x75, 0x9c, 0xdd, - 0x37, 0x2f, 0xfa, 0x89, 0xff, 0x47, 0x9f, 0x58, 0x0a, 0x3e, 0x0d, 0xdc, - 0x83, 0x41, 0xb7, 0x4c, 0xa3, 0x01, 0x99, 0x6e, 0xd5, 0xe0, 0x72, 0xe2, - 0x7d, 0x2b, 0x60, 0x04, 0xc5, 0x62, 0xbe, 0x00, 0x1b, 0xfb, 0x0a, 0x28, - 0x13, 0x08, 0x9d, 0xbf, 0xba, 0x30, 0x12, 0x42, 0x64, 0x2f, 0x25, 0xd8, - 0x41, 0x16, 0x49, 0xc6, 0x7d, 0x21, 0x25, 0xd1, 0x7d, 0xdc, 0x39, 0xb1, - 0x84, 0x3e, 0x46, 0x31, 0xc0, 0xf9, 0x0e, 0x8f, 0xbc, 0xb2, 0xd0, 0xdc, - 0x79, 0xc1, 0x3b, 0xba, 0x42, 0xd1, 0xd1, 0xcd, 0x18, 0x35, 0xcb, 0x2c, - 0xd8, 0x56, 0x73, 0x99, 0x6c, 0x46, 0xb0, 0xcc, 0xee, 0x6b, 0xba, 0x2f, - 0xfb, 0x35, 0x09, 0xbf, 0x51, 0xb1, 0x19, 0xa8, 0x05, 0x4a, 0xa2, 0x5c, - 0x52, 0xf1, 0x2f, 0x20, 0x1f, 0x6e, 0xb3, 0x32, 0x91, 0x7b, 0xfb, 0xd9, - 0xa3, 0xc2, 0xd0, 0x02, 0x8c, 0x57, 0x0e, 0x60, 0xc4, 0x6a, 0x88, 0xde, - 0x6c, 0x99, 0x11, 0x26, 0x32, 0x2f, 0xb3, 0xf9, 0x54, 0xc0, 0x21, 0xa6, - 0x98, 0xad, 0xde, 0xcc, 0xb6, 0x74, 0x58, 0xb0, 0x20, 0xd8, 0xab, 0x05, - 0x4f, 0x8f, 0xcf, 0xb5, 0xad, 0x01, 0x36, 0xf9, 0x94, 0x2b, 0x71, 0x78, - 0x62, 0x72, 0xf1, 0xe5, 0x63, 0x89, 0xa4, 0x05, 0xb6, 0xd8, 0xd5, 0x03, - 0x9c, 0x00, 0x08, 0xb4, 0x59, 0xd0, 0x96, 0x7e, 0xbd, 0xd3, 0xa2, 0xe8, - 0x54, 0x83, 0xdd, 0x79, 0x62, 0x31, 0x4a, 0x5a, 0x81, 0xcf, 0x36, 0x81, - 0xeb, 0x55, 0x72, 0x70, 0xe1, 0x26, 0x76, 0xba, 0xed, 0xaa, 0x12, 0x79, - 0xe2, 0xfa, 0x11, 0x81, 0x35, 0x0d, 0x25, 0x79, 0x46, 0x53, 0x33, 0x14, - 0xdd, 0x35, 0x1d, 0xe6, 0x3c, 0xfc, 0xce, 0x7c, 0x01, 0xfa, 0x00, 0xbd, - 0xfa, 0x1b, 0x1e, 0xb8, 0x45, 0x4e, 0xf6, 0x2a, 0x3c, 0x48, 0x6b, 0xe6, - 0x1c, 0xea, 0x0c, 0x9b, 0xe1, 0x44, 0x69, 0x22, 0xae, 0x84, 0xf3, 0x05, - 0xfe, 0x3b, 0x55, 0xe1, 0x71, 0xeb, 0xa5, 0x36, 0x8a, 0x7d, 0x7c, 0xe1, - 0x45, 0x5c, 0xb3, 0x90, 0x2b, 0x2f, 0x85, 0xc7, 0xb3, 0x20, 0xdf, 0x7c, - 0x47, 0x3b, 0xf0, 0x6e, 0xc4, 0x43, 0x2e, 0x24, 0x9f, 0x1c, 0xd0, 0xf8, - 0xbb, 0xf5, 0x86, 0xc3, 0xd1, 0x74, 0x6d, 0x5f, 0x1b, 0xf1, 0xd7, 0xca, - 0x4b, 0xce, 0xca, 0x69, 0x4d, 0x69, 0x46, 0x0e, 0x3a, 0xf7, 0xcd, 0xe2, - 0xfe, 0x83, 0xe6, 0x7f, 0x2b, 0x81, 0xc0, 0x87, 0x3d, 0xbe, 0xe0, 0x7f, - 0xcc, 0x46, 0xd1, 0xef, 0x99, 0xea, 0x98, 0x0a, 0xa5, 0x03, 0xde, 0x8b, - 0x61, 0xec, 0x6a, 0x0d, 0x15, 0x17, 0x05, 0x49, 0x91, 0x3b, 0x0f, 0xbd, - 0xf7, 0x3a, 0x10, 0x5f, 0xba, 0x2e, 0xb9, 0x3a, 0xa4, 0xdf, 0xbb, 0x89, - 0x2b, 0x93, 0xca, 0x83, 0x5b, 0xb3, 0xb9, 0xf3, 0x5c, 0x02, 0x6a, 0xa7, - 0x32, 0x93, 0x85, 0xfe, 0xbc, 0xd3, 0xe6, 0xb6, 0x5a, 0x6a, 0x00, 0xe0, - 0xb9, 0x0f, 0x6d, 0x4f, 0x0b, 0xaa, 0xf0, 0x06, 0x7c, 0x2f, 0xe1, 0x82, - 0x84, 0x96, 0xe0, 0x87, 0x67, 0x94, 0x40, 0x20, 0xd6, 0x63, 0x37, 0x38, - 0x99, 0x41, 0x99, 0xdd, 0x27, 0x5e, 0x19, 0x55, 0xa1, 0x16, 0xd0, 0xed, - 0x6e, 0x40, 0xae, 0x79, 0x63, 0x93, 0xaa, 0xfc, 0x08, 0x57, 0x80, 0xb3, - 0x57, 0x50, 0xa1, 0xf4, 0xe4, 0x3a, 0x34, 0x34, 0x35, 0x9e, 0x1c, 0xff, - 0x37, 0x8f, 0x9b, 0x69, 0x97, 0xf2, 0x52, 0x2d, 0x37, 0xbc, 0x8a, 0x00, - 0x43, 0x1e, 0x53, 0xc6, 0x81, 0xac, 0x73, 0xea, 0x21, 0xb6, 0x0e, 0x77, - 0x03, 0x2e, 0x05, 0xc0, 0xf0, 0x28, 0xce, 0x2b, 0x34, 0xf1, 0x0a, 0xcc, - 0xbb, 0x69, 0xcb, 0x4b, 0x56, 0x12, 0x6b, 0x3d, 0x5a, 0x22, 0x3d, 0xa5, - 0xe1, 0x1e, 0xd0, 0x09, 0xb0, 0x12, 0xf0, 0x57, 0x98, 0x2b, 0x52, 0x2d, - 0xd2, 0xcb, 0xf2, 0xc4, 0x42, 0x98, 0x28, 0x18, 0x96, 0x56, 0xac, 0x04, - 0xd0, 0x57, 0x11, 0xeb, 0xb8, 0x1b, 0x70, 0x45, 0xcb, 0xa5, 0x3b, 0x0e, - 0xd8, 0x8e, 0x99, 0x73, 0x04, 0x64, 0xbb, 0x60, 0x3c, 0x45, 0x82, 0x93, - 0x1c, 0x36, 0x4a, 0xb0, 0x4b, 0x8a, 0x32, 0xff, 0x56, 0x4a, 0x8e, 0x14, - 0xa5, 0x13, 0x6d, 0x06, 0x16, 0x3e, 0x88, 0x4b, 0xc9, 0x72, 0xeb, 0xaf, - 0xb7, 0x71, 0xf2, 0x07, 0x40, 0xc0, 0x52, 0x52, 0x38, 0x8e, 0x52, 0x96, - 0x89, 0xd6, 0x50, 0xc9, 0x8a, 0xbe, 0x2b, 0x82, 0x90, 0xfa, 0x0e, 0x7d, - 0xa1, 0xb9, 0x28, 0x18, 0xb2, 0xb4, 0x5e, 0x46, 0xd6, 0xb1, 0xa0, 0xbf, - 0x04, 0xb3, 0x4c, 0x8d, 0x77, 0x31, 0x36, 0xc5, 0x78, 0x5c, 0x49, 0x5d, - 0x4a, 0xee, 0x78, 0x60, 0xd2, 0x9e, 0x2f, 0xcb, 0xf2, 0x3d, 0xe1, 0x72, - 0x89, 0x35, 0x85, 0x03, 0x7f, 0xcc, 0x61, 0x75, 0xd2, 0x2a, 0x7e, 0x6a, - 0x91, 0xec, 0x7a, 0x13, 0xce, 0x12, 0xfd, 0x73, 0x2d, 0x9e, 0x9f, 0x58, - 0x91, 0xa6, 0x0d, 0x5c, 0xb4, 0x89, 0xf3, 0x00, 0x5c, 0x54, 0x4b, 0xf8, - 0xe1, 0x7a, 0x8f, 0x38, 0x57, 0xcb, 0x69, 0x28, 0xde, 0x04, 0xce, 0x56, - 0x23, 0x4d, 0x8b, 0xdc, 0x6a, 0x46, 0x2b, 0x0a, 0xe5, 0xae, 0x3a, 0x36, - 0xf2, 0x68, 0x3f, 0xc0, 0x76, 0x95, 0xc3, 0x39, 0x4a, 0x87, 0x6e, 0x8d, - 0xdb, 0x78, 0x68, 0xa4, 0x47, 0xcc, 0xa5, 0x91, 0xeb, 0x2e, 0x09, 0xfa, - 0x33, 0x6b, 0x1e, 0xf8, 0xc9, 0x82, 0xfb, 0x50, 0xfc, 0x61, 0x72, 0x41, - 0xd3, 0x88, 0x2c, 0x52, 0x61, 0xa4, 0x21, 0xb6, 0x43, 0x77, 0x99, 0x65, - 0x16, 0x90, 0xbb, 0x83, 0xd2, 0x57, 0x05, 0xde, 0xf2, 0x23, 0xcd, 0xf9, - 0xea, 0x05, 0xdb, 0x11, 0xb2, 0x97, 0x7f, 0x69, 0x1c, 0x33, 0xee, 0xa4, - 0xc8, 0x0a, 0x74, 0x69, 0x90, 0x8d, 0x00, 0x2a, 0x98, 0xfe, 0xe6, 0x7f, - 0x0a, 0x0f, 0xd6, 0x65, 0xd8, 0x3d, 0xa1, 0xa9, 0x20, 0xbd, 0x08, 0xbd, - 0x10, 0xf2, 0x28, 0xea, 0x16, 0xa5, 0xc3, 0xb1, 0xf0, 0x57, 0xd3, 0x16, - 0x25, 0x85, 0xfa, 0xb1, 0x87, 0xfd, 0xe1, 0x7f, 0xb3, 0xf6, 0x9a, 0xb1, - 0x41, 0xed, 0x17, 0x22, 0x3a, 0xb0, 0x0e, 0x3c, 0x34, 0xa9, 0x4f, 0xb8, - 0xbf, 0x60, 0x8f, 0x4a, 0xa0, 0xb6, 0x6a, 0xec, 0x29, 0xa8, 0xf0, 0xd9, - 0xba, 0x8c, 0xf9, 0xca, 0x34, 0xd7, 0x2c, 0xcc, 0x7e, 0x59, 0xf1, 0xab, - 0x1a, 0x0e, 0xe7, 0xd8, 0x1c, 0x1e, 0xa3, 0x81, 0x19, 0xa1, 0xfc, 0x84, - 0xe3, 0xa5, 0x53, 0x8b, 0xcf, 0xa5, 0x3d, 0x1a, 0x7d, 0x0b, 0x25, 0x64, - 0x53, 0x59, 0xfb, 0x2c, 0xcb, 0x60, 0x7d, 0xd9, 0xe1, 0x08, 0x1c, 0x1c, - 0x0f, 0x3c, 0x64, 0xb8, 0x3b, 0x1d, 0xd3, 0x09, 0xc3, 0x07, 0x8b, 0x02, - 0xd6, 0x3a, 0x92, 0x84, 0x95, 0x7b, 0xac, 0x78, 0x7f, 0xc6, 0xf8, 0xbe, - 0xdc, 0xb2, 0xd1, 0x7c, 0x17, 0xc2, 0xd0, 0x50, 0x34, 0xf1, 0x16, 0xfe, - 0x45, 0xf6, 0x76, 0xde, 0xa2, 0x77, 0xe0, 0x71, 0x82, 0x7d, 0xc3, 0xae, - 0xea, 0x7d, 0x44, 0x98, 0x56, 0x77, 0x11, 0xa4, 0x6c, 0x15, 0x75, 0x1f, - 0x59, 0xef, 0x9c, 0x7b, 0x94, 0xb2, 0x80, 0xba, 0xd2, 0x5d, 0xc7, 0x66, - 0x30, 0xf0, 0xe0, 0x08, 0x2c, 0x42, 0x5c, 0x6d, 0xa8, 0x85, 0xc6, 0xd0, - 0x68, 0x0a, 0x85, 0xda, 0x2b, 0x33, 0x0e, 0x0f, 0x3b, 0x7e, 0x2d, 0xec, - 0x73, 0x77, 0xc5, 0x8f, 0x73, 0xbf, 0xf0, 0xdd, 0xc6, 0xca, 0xb4, 0xa9, - 0x05, 0xf0, 0x11, 0x01, 0x0c, 0xa1, 0x96, 0x8b, 0x20, 0x10, 0x59, 0x09, - 0xd1, 0x05, 0xb6, 0x16, 0x9b, 0xfa, 0x53, 0xa5, 0x26, 0x54, 0x29, 0x37, - 0x28, 0x05, 0x93, 0xa8, 0x30, 0x77, 0xf2, 0x66, 0xfa, 0x4b, 0x2f, 0xd0, - 0xff, 0x2f, 0x4f, 0x98, 0x2c, 0xb1, 0x29, 0x37, 0x01, 0xea, 0xae, 0x57, - 0xcf, 0xaf, 0x2c, 0x93, 0xa8, 0xd5, 0x6a, 0xa4, 0x0c, 0xca, 0xe4, 0x80, - 0x39, 0x73, 0x36, 0xc7, 0xca, 0x5d, 0xcc, 0xa5, 0xa5, 0xfc, 0xc9, 0xcc, - 0xf9, 0x4b, 0x02, 0x78, 0x2c, 0x71, 0x88, 0x81, 0xb9, 0x60, 0xf6, 0xe3, - 0xb4, 0x5b, 0x05, 0xcc, 0x22, 0x82, 0x76, 0x3b, 0xd7, 0xa5, 0x71, 0x8c, - 0xbb, 0x94, 0x75, 0x29, 0xd6, 0x79, 0xf0, 0x9d, 0x4d, 0x09, 0xd2, 0xc8, - 0x0d, 0xac, 0x96, 0xb4, 0xfb, 0x8d, 0x6d, 0x84, 0x08, 0xe6, 0x79, 0x4e, - 0x4c, 0x6b, 0xbc, 0xc2, 0x77, 0x4a, 0xa8, 0xb9, 0x64, 0x35, 0x79, 0x8d, - 0x20, 0xda, 0x74, 0xb1, 0x2b, 0x1f, 0xdf, 0x52, 0xbc, 0x32, 0x20, 0x60, - 0xbb, 0xd9, 0x97, 0xbe, 0x38, 0x6f, 0x86, 0x2f, 0x8d, 0xa0, 0x00, 0xa2, - 0x3c, 0x95, 0xe9, 0xee, 0x56, 0xe7, 0x4c, 0x33, 0xac, 0x93, 0x8f, 0xd8, - 0x83, 0xf7, 0xf8, 0x7a, 0xe9, 0x9c, 0xac, 0x20, 0xc3, 0x93, 0xf6, 0x22, - 0xca, 0x56, 0xcf, 0x7e, 0x95, 0xa4, 0xc2, 0x33, 0x54, 0x37, 0x5d, 0xaa, - 0xf1, 0x5a, 0xbe, 0x36, 0x0e, 0x52, 0x69, 0x42, 0x40, 0x3f, 0x57, 0x6f, - 0x50, 0xbb, 0x51, 0xae, 0x67, 0xc1, 0x36, 0xd9, 0x5b, 0x5d, 0x72, 0x06, - 0x99, 0xb4, 0xe6, 0xc8, 0xc2, 0xa5, 0x1c, 0x17, 0x43, 0xbe, 0x8f, 0xc3, - 0xbf, 0xb9, 0x4e, 0x1f, 0x86, 0x08, 0x0f, 0xf8, 0xef, 0x9d, 0x4b, 0x2d, - 0x7d, 0xea, 0xb7, 0x9b, 0xb7, 0x91, 0x83, 0x82, 0x06, 0x1b, 0x1f, 0x29, - 0x92, 0xd2, 0x42, 0x7f, 0xdd, 0xdf, 0xb6, 0x71, 0x88, 0x27, 0x73, 0x76, - 0xe2, 0x18, 0x9b, 0xc1, 0x5e, 0x2d, 0x25, 0x3a, 0x0b, 0x6e, 0xde, 0x71, - 0xe2, 0xea, 0xff, 0x7e, 0xb4, 0x8f, 0x28, 0x64, 0xa1, 0xdc, 0x19, 0x5f, - 0x17, 0xd2, 0xcf, 0x36, 0x5f, 0x3a, 0x16, 0x66, 0x69, 0x76, 0x51, 0x1f, - 0x61, 0xb6, 0xaa, 0xb5, 0x74, 0x60, 0xa4, 0xb5, 0xbe, 0x59, 0x2b, 0x66, - 0x29, 0x0f, 0xa7, 0x55, 0x23, 0xc0, 0x75, 0xfd, 0x56, 0x6f, 0xb7, 0xc6, - 0x9a, 0x7d, 0xb7, 0x84, 0xd3, 0xdc, 0x12, 0xd5, 0xfa, 0x0a, 0x5e, 0xa1, - 0x4a, 0x01, 0xe3, 0xd8, 0xc7, 0x7a, 0x37, 0x99, 0xe0, 0x9f, 0x3f, 0x32, - 0x15, 0xed, 0x81, 0x69, 0x3b, 0xbe, 0x96, 0xef, 0x5e, 0xeb, 0xe9, 0x9c, - 0x41, 0x83, 0x53, 0x9a, 0x73, 0xc2, 0x27, 0xf0, 0x46, 0x85, 0x2f, 0x6c, - 0xbc, 0x76, 0x8e, 0x38, 0x16, 0x20, 0xfb, 0x67, 0x34, 0xea, 0x6b, 0xb8, - 0x71, 0xe2, 0x0b, 0xbf, 0xff, 0x38, 0xf7, 0x5b, 0x3f, 0x9c, 0x57, 0x65, - 0x4e, 0xe2, 0xa3, 0x11, 0x07, 0x52, 0x40, 0x20, 0x8a, 0x22, 0x88, 0x92, - 0xff, 0xec, 0xb3, 0xc2, 0x7a, 0x51, 0x95, 0xc0, 0xad, 0x89, 0xc6, 0x11, - 0xe4, 0xae, 0x8e, 0x15, 0x7c, 0x7d, 0xd5, 0x90, 0x4e, 0x47, 0xcd, 0x2b, - 0x3f, 0x25, 0x92, 0xbb, 0x37, 0x10, 0x2a, 0xfd, 0x16, 0x44, 0xb7, 0x0a, - 0x8d, 0xc5, 0xf1, 0x3f, 0xb7, 0x1f, 0x2c, 0x19, 0xe2, 0x6a, 0xb6, 0x07, - 0x3b, 0x79, 0x1f, 0x4a, 0x6c, 0x9a, 0xcc, 0xb1, 0xd6, 0xd1, 0xaf, 0xf4, - 0x07, 0x29, 0x96, 0xa1, 0x4d, 0xe7, 0xf5, 0xdb, 0xaf, 0x65, 0x06, 0x49, - 0xd9, 0x6b, 0x41, 0x24, 0xb6, 0xad, 0xe6, 0x07, 0x55, 0xa8, 0x3d, 0x7f, - 0xad, 0x74, 0x6f, 0x11, 0xb5, 0x8a, 0xbf, 0xb5, 0x25, 0xa6, 0xd5, 0xf5, - 0xdd, 0xba, 0xda, 0x16, 0x98, 0xe5, 0x9e, 0x51, 0x26, 0x70, 0x03, 0x99, - 0xc6, 0x3d, 0x9c, 0xf5, 0x96, 0x0a, 0x37, 0xb8, 0xcd, 0xc2, 0x10, 0xeb, - 0x96, 0x37, 0x5d, 0x1e, 0x09, 0x2c, 0x50, 0x78, 0xd9, 0x8c, 0x30, 0xb6, - 0x87, 0x73, 0xb5, 0x02, 0x16, 0xfe, 0x47, 0xc6, 0x2f, 0x7a, 0xd7, 0x39, - 0xee, 0xcc, 0xea, 0x65, 0x09, 0x46, 0x5e, 0x23, 0xe3, 0x44, 0x00, 0x1c, - 0x95, 0x04, 0xf2, 0x82, 0x49, 0xab, 0x17, 0xac, 0xa4, 0x63, 0xae, 0xcc, - 0x65, 0xc6, 0x63, 0xd4, 0xf9, 0x06, 0x6f, 0xba, 0x7b, 0x2b, 0x30, 0x95, - 0xb1, 0x2c, 0x81, 0x9c, 0x33, 0xf9, 0xa1, 0x9f, 0xb1, 0x0e, 0xb0, 0xe4, - 0x11, 0xc6, 0x78, 0x75, 0x1e, 0xa2, 0x7a, 0xf9, 0xd9, 0x8a, 0x2d, 0x9d, - 0xf9, 0x72, 0x6e, 0xdc, 0xc4, 0xc9, 0x0d, 0x30, 0xe2, 0x38, 0x1e, 0xf6, - 0x54, 0xef, 0x33, 0xf1, 0x90, 0x82, 0x09, 0x93, 0xb8, 0x21, 0x7f, 0x96, - 0x15, 0x90, 0xc7, 0xed, 0x21, 0x53, 0xe4, 0xe7, 0x1a, 0xc4, 0xe9, 0x4b, - 0x52, 0x7a, 0x5f, 0x5b, 0x1a, 0xfd, 0x00, 0xae, 0x2d, 0x5a, 0xe1, 0x1a, - 0x43, 0x2b, 0xc8, 0xa2, 0xe2, 0x4b, 0x1e, 0xba, 0x66, 0x30, 0xf2, 0x5c, - 0x83, 0x3d, 0x75, 0xd5, 0x2f, 0x10, 0x22, 0x17, 0xc9, 0x8d, 0xf9, 0x24, - 0x8b, 0xce, 0x91, 0x08, 0x49, 0xda, 0x60, 0xa8, 0xf0, 0x04, 0x53, 0xd6, - 0x7b, 0x36, 0x89, 0x22, 0xb0, 0x22, 0x23, 0x57, 0xf4, 0xa5, 0x72, 0xa8, - 0x87, 0xe8, 0x20, 0xc7, 0x82, 0x6d, 0xe1, 0x53, 0x53, 0xcc, 0x77, 0xe1, - 0x65, 0x09, 0x73, 0x7c, 0x41, 0xb1, 0xeb, 0xb6, 0x8c, 0x6e, 0x5d, 0x96, - 0xfc, 0x3d, 0x53, 0xa6, 0x78, 0xd0, 0xc8, 0x50, 0xd0, 0xbb, 0x01, 0x20, - 0xbf, 0x59, 0x31, 0xe7, 0xac, 0x96, 0x56, 0x95, 0x29, 0x18, 0xc5, 0x80, - 0x64, 0x55, 0x65, 0x50, 0x2e, 0xbb, 0x2d, 0x0d, 0xcd, 0x8d, 0x4f, 0xfd, - 0xeb, 0x3d, 0x5a, 0x44, 0xea, 0x44, 0xc5, 0x6f, 0xad, 0x47, 0xa9, 0xf3, - 0x9c, 0x46, 0xb4, 0x42, 0x95, 0x86, 0xc3, 0x64, 0x11, 0x61, 0x44, 0xe9, - 0xeb, 0xa7, 0x97, 0x5b, 0xc7, 0x51, 0x98, 0xc3, 0x9a, 0x45, 0x3a, 0x82, - 0xda, 0xb0, 0x92, 0x47, 0x6c, 0x79, 0xfc, 0x20, 0x65, 0x2a, 0xb3, 0x52, - 0xcb, 0xbe, 0x0e, 0x29, 0xf0, 0xba, 0xda, 0x20, 0xef, 0x92, 0xf7, 0xe0, - 0xd5, 0xc3, 0x57, 0x05, 0xf6, 0x30, 0xdd, 0x13, 0x7b, 0x26, 0x41, 0x2d, - 0x07, 0xfe, 0xd4, 0x41, 0x99, 0xdc, 0x00, 0xea, 0xb2, 0x7d, 0x08, 0xe0, - 0x44, 0x82, 0xf8, 0x06, 0x40, 0xd6, 0x49, 0xc0, 0x42, 0xef, 0x98, 0x7f, - 0xab, 0x1a, 0xd5, 0x13, 0x44, 0xbc, 0x2b, 0x68, 0x98, 0xa3, 0xda, 0x04, - 0x15, 0x02, 0x31, 0xb6, 0x2c, 0xbf, 0x4e, 0x46, 0x96, 0x21, 0x5b, 0x3b, - 0x4d, 0x49, 0x2d, 0x12, 0x81, 0x8b, 0xc7, 0x68, 0x9b, 0x2a, 0xd3, 0xee, - 0x0c, 0x84, 0x33, 0x4c, 0x4d, 0xa9, 0xdb, 0x7a, 0x3f, 0x89, 0x5a, 0x54, - 0xdd, 0xcf, 0x39, 0xc1, 0x35, 0x63, 0x3c, 0x7b, 0x9b, 0x88, 0x04, 0x1f, - 0x0b, 0x3e, 0xf7, 0x1c, 0x6c, 0xfb, 0xa5, 0x7e, 0xd2, 0x0e, 0xe2, 0x6a, - 0x1a, 0x3c, 0x57, 0x67, 0x4c, 0x26, 0xa4, 0x96, 0x4c, 0x6c, 0x4e, 0x9d, - 0xb7, 0xfc, 0x68, 0xaf, 0xbd, 0xb0, 0xbd, 0x62, 0x56, 0xdc, 0x35, 0x53, - 0xc0, 0x80, 0xc3, 0x5f, 0x3d, 0xeb, 0x58, 0xe6, 0xa6, 0x82, 0x17, 0xd8, - 0x06, 0x21, 0x35, 0x7e, 0xdf, 0x1f, 0xc6, 0x66, 0x88, 0x10, 0xdd, 0x6c, - 0xa1, 0x90, 0xa6, 0xc4, 0x06, 0xb9, 0x1d, 0x3d, 0x37, 0x3b, 0x28, 0x2a, - 0x75, 0xbe, 0xa3, 0x49, 0xa0, 0xee, 0xef, 0xfa, 0x9f, 0x8a, 0xe0, 0x82, - 0x7e, 0x62, 0x02, 0xc7, 0x35, 0x4d, 0x5d, 0x81, 0xec, 0x89, 0xed, 0xe9, - 0xad, 0xab, 0x71, 0x80, 0xfa, 0x9b, 0x0f, 0x1f, 0x9d, 0xb2, 0x75, 0x6b, - 0x6f, 0x5e, 0x00, 0x79, 0x12, 0xfc, 0xee, 0xe0, 0xb8, 0x01, 0xe2, 0xb4, - 0x99, 0x17, 0x04, 0xe9, 0x99, 0x26, 0xcd, 0xb6, 0x88, 0xaa, 0x22, 0x53, - 0x35, 0x1a, 0x75, 0xdc, 0x4a, 0x79, 0xe1, 0x11, 0xe4, 0x81, 0xda, 0x54, - 0x31, 0xa9, 0x21, 0x46, 0x7f, 0x2f, 0xc8, 0x0e, 0xc9, 0x9e, 0xba, 0xa6, - 0xe5, 0x2e, 0x2c, 0xb9, 0xa6, 0x8d, 0xf4, 0x28, 0x51, 0x0d, 0x92, 0xe5, - 0x89, 0x18, 0xde, 0x16, 0xfe, 0x2a, 0x83, 0xb3, 0x46, 0xea, 0x15, 0xca, - 0xd1, 0xcf, 0x03, 0x83, 0xe1, 0xb5, 0xd1, 0x08, 0x61, 0xd9, 0x88, 0x1f, - 0x6d, 0x7e, 0xe4, 0xd4, 0xa5, 0xa5, 0xa3, 0xe4, 0xc9, 0xd1, 0xb3, 0x96, - 0x11, 0x66, 0xa3, 0xdd, 0xb3, 0xb0, 0x1c, 0x1a, 0x9a, 0x73, 0x54, 0xd2, - 0x8c, 0xa0, 0xd5, 0x40, 0xac, 0xe3, 0x9d, 0x3e, 0x95, 0x43, 0xbd, 0x7a, - 0x62, 0x4b, 0xa9, 0xda, 0x94, 0xd7, 0xba, 0x30, 0x40, 0x20, 0x37, 0x19, - 0xb5, 0x78, 0x4a, 0x44, 0x12, 0x87, 0x05, 0x90, 0xd2, 0xeb, 0x33, 0x87, - 0xd6, 0x13, 0x18, 0x3d, 0xe1, 0x84, 0xdf, 0xc0, 0x16, 0x00, 0xf8, 0x86, - 0x81, 0x51, 0xc3, 0x0e, 0xda, 0xd1, 0xf3, 0xef, 0x8c, 0x09, 0xcb, 0x52, - 0xcc, 0xbf, 0x41, 0xa6, 0x74, 0xb3, 0xfd, 0xef, 0x85, 0xb1, 0x51, 0x8d, - 0x7d, 0x28, 0x52, 0x60, 0xd8, 0xce, 0x61, 0x7c, 0x04, 0xeb, 0x06, 0x11, - 0x35, 0x38, 0x44, 0x3e, 0x83, 0x80, 0xf1, 0x3e, 0x35, 0x88, 0x16, 0x60, - 0x45, 0x52, 0xb0, 0x5f, 0x95, 0xef, 0xbe, 0x1c, 0xe0, 0x78, 0x69, 0x09, - 0x33, 0x61, 0xca, 0x28, 0x84, 0xc3, 0x8e, 0x44, 0xbf, 0x64, 0x05, 0x4f, - 0xf0, 0x3e, 0xd5, 0x2d, 0xca, 0xb6, 0xf8, 0x15, 0x8a, 0xcb, 0x7f, 0x42, - 0x43, 0x87, 0xd3, 0x66, 0x47, 0x24, 0xbd, 0x96, 0x46, 0xa0, 0x9a, 0x5f, - 0x6f, 0xf3, 0x3b, 0x65, 0x22, 0x19, 0xb1, 0xd1, 0x66, 0x96, 0xfd, 0x4c, - 0x57, 0xbb, 0x79, 0x7a, 0xaa, 0x4d, 0xac, 0xb0, 0x1c, 0x79, 0xe7, 0x2b, - 0x0f, 0x00, 0x22, 0x31, 0x6e, 0xbd, 0xe2, 0x05, 0xa4, 0x53, 0x25, 0x9f, - 0x64, 0xc6, 0x60, 0xbf, 0xd9, 0xcc, 0x28, 0xd4, 0xdf, 0x17, 0x52, 0x5d, - 0x67, 0x19, 0x2b, 0x67, 0x6e, 0xa1, 0xb4, 0x58, 0xfa, 0xac, 0x0a, 0x5f, - 0xd6, 0xbb, 0xa6, 0xb3, 0x12, 0x59, 0xeb, 0x4c, 0x4a, 0x64, 0x5c, 0xb2, - 0xda, 0xfc, 0x3c, 0x0b, 0x2e, 0x1f, 0x54, 0xc7, 0xd7, 0x3f, 0xc1, 0x30, - 0x79, 0x8c, 0x87, 0x9c, 0x0e, 0x9f, 0x05, 0x01, 0xce, 0x30, 0x97, 0x99, - 0xa7, 0xf0, 0xa3, 0xba, 0xb3, 0x9e, 0xba, 0x3b, 0xb7, 0xd0, 0x15, 0xb5, - 0x63, 0x4d, 0xdd, 0x51, 0x44, 0x79, 0xe7, 0x02, 0x2b, 0x2d, 0x65, 0xed, - 0x11, 0x9d, 0xa9, 0xf0, 0x27, 0xd8, 0x6e, 0x1f, 0xfb, 0xc3, 0x5b, 0x77, - 0x1d, 0xec, 0xf0, 0xe0, 0xa9, 0x03, 0x95, 0xc4, 0xc2, 0xd9, 0x2b, 0xfc, - 0xc0, 0x74, 0x32, 0x39, 0xc2, 0xf9, 0x73, 0x07, 0xa9, 0xd5, 0xff, 0xf2, - 0xfe, 0x72, 0x8b, 0x0c, 0xca, 0x8b, 0x24, 0x41, 0xac, 0xf7, 0x7b, 0x24, - 0xbc, 0x00, 0x40, 0x3e, 0x40, 0xc7, 0x51, 0xde, 0xbb, 0x50, 0xa4, 0xdb, - 0x50, 0x0e, 0x3d, 0x28, 0x45, 0x15, 0xff, 0x4f, 0x4a, 0x47, 0x46, 0xaa, - 0xd8, 0x95, 0xa0, 0x50, 0x76, 0x1b, 0x60, 0xc3, 0xd3, 0xf1, 0xd4, 0xbf, - 0x95, 0x42, 0x81, 0xad, 0xa5, 0xb7, 0x8a, 0xb2, 0xf2, 0x61, 0x21, 0xa7, - 0x42, 0x00, 0xba, 0xee, 0x15, 0x92, 0x8c, 0x6b, 0x58, 0xff, 0xbe, 0x3d, - 0x28, 0x5e, 0xcf, 0x99, 0xa0, 0xc5, 0x1c, 0x65, 0x6c, 0xc7, 0xdd, 0xd1, - 0xaf, 0xd9, 0x2e, 0x9e, 0xd7, 0x36, 0x22, 0x80, 0xaa, 0x44, 0x6e, 0x3b, - 0x35, 0xab, 0x92, 0x3e, 0x02, 0x8a, 0x14, 0xb1, 0x4e, 0xbe, 0xb6, 0x01, - 0x8b, 0xa3, 0x70, 0xf1, 0x71, 0xaf, 0x2c, 0x2e, 0xda, 0x0a, 0xbb, 0x83, - 0x01, 0xbe, 0xd3, 0x54, 0xe8, 0xfa, 0x65, 0x27, 0xfb, 0xca, 0x9c, 0xfd, - 0x8d, 0x45, 0x35, 0xd2, 0xc8, 0x9a, 0x1e, 0x6d, 0xef, 0x4b, 0xe4, 0x60, - 0xd2, 0x0a, 0x12, 0x21, 0x49, 0x60, 0x9d, 0xab, 0xcd, 0xbe, 0x63, 0x70, - 0x2a, 0xae, 0x86, 0x95, 0xc2, 0x49, 0x8f, 0x48, 0x9f, 0xc8, 0xf0, 0x10, - 0x26, 0x21, 0x78, 0x8f, 0x04, 0x96, 0x25, 0x6c, 0x7f, 0x6e, 0xc5, 0xa1, - 0xae, 0x61, 0x99, 0x36, 0x1d, 0x25, 0xa0, 0xe3, 0xed, 0xd4, 0x02, 0xb5, - 0x2b, 0x39, 0x4e, 0xd0, 0x64, 0xa7, 0x46, 0x94, 0x85, 0xd4, 0x3d, 0x63, - 0x6c, 0xf4, 0x31, 0x5b, 0x94, 0x75, 0x0e, 0x46, 0xa7, 0xf3, 0x40, 0x7e, - 0xea, 0xc3, 0xf3, 0x44, 0x65, 0xf4, 0x83, 0xee, 0x07, 0x54, 0x4a, 0x31, - 0x58, 0x61, 0x35, 0x92, 0xc9, 0xde, 0xb9, 0x14, 0x0a, 0xba, 0x2b, 0x7f, - 0xd4, 0xf2, 0xf7, 0x17, 0xf6, 0x80, 0x45, 0xcd, 0x40, 0x63, 0x32, 0xc9, - 0x7e, 0x1a, 0x7f, 0x29, 0x27, 0x57, 0x35, 0x17, 0x2e, 0xa5, 0xd2, 0x79, - 0xb9, 0xe1, 0x9c, 0xe4, 0x30, 0xff, 0xfd, 0x49, 0x7f, 0x7b, 0xb1, 0xec, - 0x03, 0x91, 0x32, 0x5c, 0x21, 0xfc, 0xfe, 0xd4, 0xc0, 0xc7, 0x59, 0x17, - 0x52, 0xb4, 0x8c, 0x8e, 0xfb, 0x18, 0x36, 0x6e, 0xcb, 0x88, 0xa7, 0x8a, - 0x3b, 0x8c, 0x69, 0xde, 0xdc, 0x56, 0x40, 0x7b, 0x47, 0x83, 0xf7, 0xa6, - 0xb7, 0x60, 0x7f, 0x1c, 0x50, 0x88, 0x9d, 0x16, 0xbb, 0x18, 0xc2, 0x00, - 0xdf, 0xd0, 0x91, 0xea, 0x4b, 0x94, 0xf0, 0xe3, 0x7f, 0x34, 0x20, 0xa8, - 0x66, 0xc8, 0x2b, 0xe5, 0xa9, 0xc3, 0xde, 0xe9, 0xf1, 0x45, 0xcb, 0xba, - 0x12, 0x73, 0xf3, 0xa3, 0xd7, 0x27, 0xf5, 0x0b, 0x30, 0xe6, 0x71, 0xc1, - 0xf0, 0x2b, 0xf8, 0xc7, 0x42, 0x9c, 0xd3, 0x79, 0x96, 0x18, 0xdb, 0x89, - 0x71, 0xc3, 0xa9, 0x44, 0x51, 0xdd, 0x5e, 0xc5, 0x55, 0x56, 0x1a, 0xeb, - 0x8b, 0x5b, 0xbd, 0x46, 0x20, 0x62, 0x7c, 0xd0, 0xfb, 0xb3, 0x6c, 0xdb, - 0x50, 0xa4, 0x81, 0xd8, 0xc6, 0x14, 0x41, 0x8c, 0x87, 0x3f, 0xec, 0x6d, - 0x30, 0x31, 0x98, 0x51, 0xde, 0x36, 0xcc, 0x26, 0xc7, 0xe6, 0x06, 0xfb, - 0xb5, 0x63, 0xbc, 0x5c, 0x71, 0x3b, 0x87, 0x28, 0x43, 0x22, 0xb6, 0xad, - 0xa1, 0x93, 0x67, 0x3c, 0xfe, 0x1c, 0x19, 0x37, 0x2b, 0x69, 0x1f, 0xbc, - 0xe3, 0x6c, 0x72, 0xa2, 0xc4, 0x67, 0x17, 0x85, 0x5b, 0xc4, 0xf5, 0x06, - 0x69, 0xaa, 0x32, 0xc4, 0x1f, 0x39, 0x48, 0x3f, 0x2a, 0x22, 0x8b, 0x1c, - 0x09, 0x20, 0xd4, 0xc8, 0x1e, 0x34, 0x24, 0x40, 0x7c, 0x65, 0x71, 0x22, - 0x79, 0x8e, 0x30, 0x0e, 0x35, 0xe1, 0x86, 0x76, 0xe2, 0x6a, 0xef, 0x54, - 0xa9, 0xfa, 0x65, 0x83, 0x34, 0xbc, 0x21, 0x02, 0x0c, 0x86, 0x8b, 0x09, - 0x37, 0xfd, 0x2f, 0xde, 0xf2, 0xd4, 0x97, 0xea, 0xca, 0xe0, 0xf9, 0x1f, - 0x74, 0x6f, 0xff, 0x21, 0xa4, 0xe7, 0x7c, 0x9f, 0x69, 0x13, 0x58, 0xf5, - 0x25, 0xbb, 0x6b, 0x97, 0x2f, 0x06, 0x35, 0x9e, 0x54, 0xaf, 0xf3, 0x26, - 0xe1, 0x34, 0x1b, 0x29, 0x83, 0x51, 0x3e, 0x6c, 0x55, 0x25, 0xed, 0x0e, - 0xe3, 0x07, 0x01, 0xe0, 0xdd, 0x0d, 0x47, 0x04, 0x64, 0xea, 0x12, 0xfe, - 0xe2, 0xd8, 0x50, 0x50, 0xba, 0x35, 0x1d, 0xe4, 0x66, 0xb6, 0x65, 0x4f, - 0xef, 0x97, 0x47, 0xc2, 0x23, 0x58, 0xc7, 0xc9, 0x59, 0x0f, 0xcf, 0x49, - 0x2f, 0x91, 0x06, 0x01, 0x9a, 0xf1, 0x56, 0xfe, 0x9e, 0x85, 0x36, 0xb1, - 0x7d, 0x02, 0xf6, 0x2f, 0x44, 0x36, 0xe0, 0xe6, 0x56, 0xd8, 0x30, 0xd2, - 0xae, 0xf6, 0x92, 0xc8, 0x07, 0xf2, 0x3f, 0x93, 0xc6, 0x2a, 0xd3, 0xea, - 0x74, 0xe2, 0x93, 0x6e, 0x9e, 0x56, 0xef, 0x06, 0x6e, 0x4e, 0xd8, 0x0c, - 0xc4, 0x74, 0x32, 0xb1, 0x79, 0xd3, 0x83, 0x53, 0x39, 0x6a, 0xd1, 0x4e, - 0x6f, 0x28, 0x68, 0x9c, 0xb6, 0xb5, 0x8e, 0x30, 0xde, 0x2c, 0x00, 0x42, - 0x3c, 0xd4, 0x28, 0x3e, 0x1f, 0xa8, 0xd1, 0x96, 0xde, 0x30, 0x39, 0x72, - 0x1a, 0xc5, 0x45, 0x37, 0xf1, 0xa3, 0x68, 0xc0, 0x08, 0xc9, 0x0f, 0x67, - 0x21, 0x80, 0x70, 0xaf, 0x13, 0x40, 0x01, 0x86, 0xaf, 0xd8, 0x89, 0x3b, - 0x5e, 0x43, 0x48, 0x6a, 0x00, 0xcc, 0xc5, 0xc2, 0xef, 0x93, 0x1b, 0x29, - 0x23, 0xd1, 0xc3, 0x2a, 0x98, 0x22, 0xa8, 0x95, 0xd6, 0xb0, 0xa0, 0xe8, - 0x79, 0x42, 0x89, 0x71, 0x69, 0x2a, 0xb7, 0x32, 0xd1, 0x56, 0x88, 0x0b, - 0xd6, 0x63, 0x7d, 0xfc, 0x1b, 0x60, 0xd4, 0x64, 0x1b, 0xa0, 0xfb, 0x10, - 0xd2, 0xcf, 0x6c, 0xd9, 0x2b, 0xbe, 0xa7, 0xb1, 0x8b, 0x20, 0x8a, 0x5e, - 0x22, 0xa7, 0xdb, 0x0f, 0x6f, 0xda, 0x0b, 0xc5, 0x94, 0xc3, 0x27, 0xe6, - 0x84, 0x75, 0x6b, 0xe9, 0x1f, 0x17, 0xe2, 0xcb, 0x5a, 0x0a, 0x0a, 0xaa, - 0x1a, 0xef, 0xe2, 0x45, 0x20, 0x96, 0x34, 0x9f, 0x9e, 0xc0, 0xde, 0xa5, - 0xc8, 0x5f, 0x5f, 0x4a, 0x8c, 0x1b, 0xb7, 0x08, 0x46, 0xce, 0xd9, 0xe2, - 0xfd, 0x5e, 0xf2, 0x5f, 0xa5, 0xfd, 0xe0, 0xb5, 0x34, 0x0d, 0x7c, 0x68, - 0x6e, 0xb6, 0x8f, 0xf5, 0xec, 0xae, 0xa6, 0xd2, 0x16, 0x71, 0x48, 0x94, - 0xb2, 0xfa, 0x8b, 0x80, 0x5b, 0x32, 0xb1, 0x95, 0x71, 0xfd, 0xab, 0x6b, - 0xb9, 0x00, 0x36, 0x42, 0x0a, 0x1a, 0x70, 0x7a, 0x09, 0xe0, 0xfc, 0x2e, - 0x51, 0x08, 0x69, 0xcc, 0xaa, 0x64, 0x55, 0x70, 0x00, 0x7b, 0xd9, 0xa6, - 0xb7, 0x87, 0x67, 0x34, 0x87, 0xc2, 0x2c, 0x88, 0xa5, 0xc5, 0xfc, 0xc2, - 0x69, 0xcd, 0x72, 0xc5, 0xd2, 0x86, 0x79, 0xc4, 0xd5, 0x14, 0x68, 0x2d, - 0x2f, 0xf4, 0x6b, 0x36, 0x1b, 0x11, 0x2d, 0x31, 0xa4, 0xe1, 0xb9, 0xb4, - 0xe2, 0x1a, 0x85, 0x99, 0x52, 0x48, 0xad, 0x39, 0x6e, 0x24, 0xe9, 0xfb, - 0xd0, 0x8b, 0x5f, 0xda, 0x83, 0x41, 0xb9, 0x4d, 0x8f, 0x46, 0x48, 0x0f, - 0xb3, 0xe1, 0xd8, 0xbd, 0x6c, 0x0f, 0x95, 0x41, 0xb2, 0x01, 0x04, 0x2c, - 0xa8, 0xfa, 0x77, 0x48, 0xee, 0x37, 0x2c, 0xf4, 0x10, 0x57, 0x2e, 0x0f, - 0xff, 0x56, 0xb2, 0x2a, 0x0a, 0x44, 0xf5, 0x6a, 0x58, 0x02, 0x07, 0xed, - 0xf0, 0x4b, 0xd3, 0x3e, 0xbd, 0xd8, 0xee, 0xaa, 0x72, 0x81, 0x7f, 0xa3, - 0xd4, 0x18, 0x56, 0x9c, 0xfb, 0x65, 0xeb, 0x65, 0x41, 0xb1, 0x18, 0x00, - 0xad, 0x5f, 0x70, 0xc1, 0xe9, 0xc5, 0x9d, 0x45, 0x7c, 0x6f, 0x4d, 0x14, - 0x48, 0xd9, 0xdf, 0x02, 0x63, 0x6d, 0xd7, 0x55, 0x6f, 0xf1, 0xbd, 0x85, - 0xdd, 0x1b, 0xb3, 0xd4, 0x1b, 0x73, 0xf2, 0x75, 0x7d, 0x2a, 0xa6, 0x7d, - 0x9d, 0xf6, 0xaf, 0xc3, 0xd6, 0xf0, 0x8f, 0xd3, 0x7c, 0x25, 0xd9, 0xc0, - 0x03, 0x29, 0x9a, 0x6a, 0x95, 0x0f, 0x49, 0x7c, 0xe2, 0x84, 0xff, 0x51, - 0x86, 0xa1, 0xab, 0xcf, 0xcd, 0x75, 0x9c, 0x3d, 0x5b, 0x2d, 0x4c, 0x30, - 0xee, 0x3a, 0xca, 0xa8, 0x21, 0x66, 0xaf, 0xaf, 0xd2, 0x83, 0xd9, 0x14, - 0x8d, 0xf4, 0x33, 0x95, 0xca, 0x02, 0xc0, 0x6b, 0x4a, 0x06, 0x9e, 0xf8, - 0x76, 0xba, 0xc4, 0x53, 0x13, 0x08, 0x5d, 0xcb, 0x29, 0xd0, 0x19, 0xa9, - 0x16, 0xd8, 0xda, 0x5a, 0x07, 0x20, 0xf5, 0x8f, 0xe5, 0x41, 0x43, 0xdf, - 0x55, 0x52, 0xc5, 0xe5, 0xd0, 0x44, 0x0d, 0x90, 0x5b, 0x4e, 0xd7, 0x37, - 0xf1, 0x80, 0x5d, 0x45, 0x8d, 0xe1, 0xe0, 0xe8, 0x82, 0x7f, 0xd4, 0x03, - 0xe8, 0xfd, 0xab, 0x95, 0x3e, 0x29, 0xbf, 0xc3, 0xbe, 0x34, 0x05, 0xb8, - 0xd1, 0x3a, 0x72, 0xc8, 0xb8, 0x35, 0xa4, 0x74, 0x50, 0x71, 0xa8, 0x71, - 0xfa, 0x80, 0x10, 0x12, 0x13, 0xb7, 0x90, 0x02, 0x62, 0x15, 0x40, 0x88, - 0x9b, 0x3c, 0x8d, 0xed, 0x8d, 0x47, 0x2e, 0xc0, 0x0a, 0x4c, 0xe9, 0x69, - 0x10, 0x29, 0xe7, 0xf0, 0xa6, 0x1c, 0x0c, 0x71, 0xb8, 0x82, 0x55, 0xcc, - 0xee, 0x50, 0xd3, 0x50, 0x14, 0x97, 0x53, 0x76, 0xcb, 0x7d, 0x5a, 0x85, - 0x3c, 0xc5, 0x50, 0x71, 0x07, 0xaa, 0xb9, 0x7c, 0x46, 0x56, 0x08, 0xff, - 0x98, 0x96, 0x0b, 0xb3, 0x6d, 0x2d, 0xf5, 0xb4, 0x7d, 0xa1, 0xd9, 0x5c, - 0x63, 0x5b, 0x24, 0x8c, 0xcd, 0x14, 0x33, 0xf4, 0x1e, 0x10, 0xd2, 0x10, - 0x78, 0x6c, 0x12, 0x92, 0xf9, 0xd9, 0x83, 0xda, 0x2b, 0x98, 0x0e, 0x2c, - 0xb8, 0x4a, 0x71, 0xc1, 0xdb, 0x84, 0x33, 0xc0, 0xeb, 0x3d, 0x2f, 0xff, - 0x08, 0xf7, 0xb1, 0xca, 0x9f, 0xe9, 0x1f, 0x36, 0x9f, 0x2c, 0xab, 0xb3, - 0x35, 0x7b, 0x60, 0xa1, 0xc7, 0x46, 0x1c, 0x7d, 0xec, 0xb9, 0xc3, 0xfc, - 0xf3, 0x76, 0xdc, 0xac, 0x4b, 0x5b, 0x61, 0x7e, 0x1a, 0x70, 0x83, 0xd9, - 0x14, 0x59, 0x95, 0x05, 0x44, 0xe9, 0xa3, 0xcc, 0x95, 0xae, 0x1c, 0x9c, - 0xca, 0x44, 0x70, 0x50, 0x29, 0x10, 0x68, 0xfe, 0x59, 0x05, 0xc7, 0x69, - 0xd4, 0x25, 0xc8, 0xff, 0x0e, 0x58, 0x2c, 0x2e, 0xbe, 0xd5, 0xbb, 0x65, - 0x58, 0x18, 0x31, 0x2e, 0x2b, 0x11, 0x10, 0x41, 0x82, 0x7e, 0x9c, 0x9d, - 0xd2, 0x6c, 0xe8, 0x79, 0x72, 0xf3, 0x0e, 0xda, 0x15, 0x20, 0xbe, 0xea, - 0x2b, 0xdb, 0xa1, 0xa8, 0xd8, 0x5c, 0x05, 0x1d, 0xb0, 0x7a, 0xa0, 0xf0, - 0x25, 0xc6, 0x25, 0xee, 0x18, 0x5c, 0x17, 0x18, 0xf6, 0xb1, 0x8d, 0xc3, - 0x38, 0x52, 0xd7, 0xb7, 0x62, 0x8c, 0x3e, 0x5f, 0x2c, 0x75, 0x1d, 0xc4, - 0xb3, 0x10, 0x5f, 0x9a, 0x46, 0x4d, 0xfc, 0x91, 0x40, 0xcb, 0x93, 0x74, - 0xaf, 0xdd, 0x74, 0xd1, 0xf7, 0xb5, 0xdf, 0x58, 0x46, 0x07, 0x3c, 0x36, - 0x70, 0x49, 0x0d, 0xab, 0xdc, 0xb5, 0x4e, 0x73, 0xc3, 0x82, 0xbb, 0x7d, - 0x96, 0x16, 0xcc, 0x3b, 0x31, 0xb3, 0x27, 0x08, 0x2a, 0x32, 0xdb, 0x6a, - 0x54, 0xc4, 0xb4, 0x3c, 0xe6, 0x88, 0xdc, 0xd3, 0x82, 0xad, 0x40, 0xf0, - 0xc6, 0xf4, 0x60, 0xb8, 0xf7, 0xa8, 0xab, 0x63, 0x4c, 0x55, 0x51, 0xf1, - 0x61, 0x06, 0xb0, 0xfd, 0x60, 0x6a, 0x30, 0xf5, 0xde, 0x47, 0x1b, 0x4c, - 0x0e, 0xe2, 0xe2, 0x13, 0xee, 0xb1, 0x99, 0x23, 0x3b, 0xbd, 0x8f, 0x5d, - 0x77, 0x5e, 0xec, 0x12, 0xb2, 0x09, 0x15, 0x50, 0x0f, 0x60, 0xb6, 0x32, - 0xe5, 0x8e, 0xca, 0x23, 0xb9, 0x23, 0x57, 0x13, 0xf6, 0x32, 0xfb, 0xe2, - 0xaf, 0xaa, 0x44, 0x43, 0xf9, 0x20, 0x9e, 0x96, 0x1f, 0x80, 0xc0, 0x2b, - 0x30, 0xe5, 0x3e, 0x5b, 0xcb, 0xf3, 0x81, 0xe5, 0x2d, 0xb4, 0x6b, 0x98, - 0x85, 0x21, 0xa4, 0xe4, 0x62, 0x33, 0x4f, 0xc1, 0xfd, 0x34, 0xff, 0x7f, - 0x08, 0x48, 0xbc, 0x25, 0x46, 0xea, 0xd3, 0x9f, 0xee, 0x41, 0x7d, 0x2a, - 0x1d, 0x06, 0x05, 0x28, 0x69, 0x04, 0x7c, 0x6b, 0x47, 0x5f, 0x58, 0x17, - 0x37, 0xc5, 0xe0, 0x2c, 0xa0, 0x6a, 0x7e, 0x5f, 0xe4, 0x6e, 0x77, 0x39, - 0x54, 0x37, 0xb7, 0xdc, 0x78, 0xa6, 0xd1, 0xc5, 0x8a, 0xf2, 0xaa, 0x01, - 0x1d, 0x00, 0xb9, 0xba, 0x7d, 0xca, 0xf3, 0x20, 0x72, 0xe3, 0x23, 0xef, - 0xbd, 0xf1, 0xd0, 0x3a, 0x20, 0x24, 0xdb, 0x93, 0x45, 0x8f, 0xb6, 0x11, - 0x9a, 0x41, 0x84, 0x97, 0x21, 0x9d, 0xd9, 0xfc, 0x7f, 0xfd, 0xc5, 0xf4, - 0xaf, 0xb1, 0xf6, 0xba, 0xd3, 0x73, 0x35, 0xec, 0x38, 0xff, 0x8e, 0xe8, - 0x48, 0xab, 0xf8, 0x3f, 0x37, 0x93, 0xe2, 0x3a, 0x93, 0x2b, 0x0f, 0xaf, - 0x72, 0xf6, 0xf9, 0x7b, 0xaf, 0xd2, 0xa7, 0xc7, 0x63, 0xfe, 0x5f, 0xe6, - 0x17, 0x0a, 0x30, 0xf3, 0xef, 0x67, 0x0d, 0xa4, 0xe7, 0x55, 0x15, 0x31, - 0xab, 0x28, 0x3c, 0x1c, 0x24, 0xb9, 0x85, 0x1f, 0xf0, 0x4d, 0x6e, 0x10, - 0xc6, 0x75, 0xd6, 0x10, 0x29, 0x2d, 0xa9, 0x3d, 0x67, 0x0d, 0x50, 0x0d, - 0xc0, 0x75, 0xcc, 0xf3, 0x48, 0xf7, 0xd4, 0xca, 0x8c, 0x82, 0xd5, 0x49, - 0xfb, 0x9a, 0x34, 0xd9, 0x5b, 0xc3, 0xe2, 0xd8, 0x52, 0xfa, 0xae, 0x21, - 0x57, 0xef, 0xe6, 0x79, 0xe0, 0xe2, 0x6b, 0x52, 0xd0, 0x4a, 0x0c, 0x7d, - 0x9e, 0x95, 0x62, 0x28, 0xb8, 0xac, 0xa7, 0xb9, 0xfc, 0x3f, 0x1b, 0x8d, - 0x61, 0x65, 0xa0, 0x60, 0x03, 0x96, 0xcd, 0x80, 0x23, 0xa1, 0x1f, 0x5f, - 0x09, 0x6c, 0x11, 0x42, 0x7c, 0xb3, 0xd4, 0x5c, 0x40, 0xa6, 0xd0, 0x75, - 0xfa, 0xe5, 0x4f, 0x0f, 0xec, 0xa0, 0x6c, 0xfb, 0xe3, 0x31, 0xbd, 0x78, - 0x22, 0xe8, 0xbd, 0xaf, 0xfc, 0x79, 0xd4, 0xd5, 0x8f, 0xf1, 0x4a, 0x0e, - 0x7a, 0x2c, 0x96, 0x7e, 0x6d, 0x2a, 0x9f, 0x05, 0x13, 0x0f, 0xf4, 0x75, - 0x15, 0x86, 0x42, 0x5e, 0xe9, 0x2b, 0x17, 0x92, 0xc7, 0xc6, 0x38, 0x37, - 0x6c, 0x42, 0x8a, 0x4a, 0x01, 0x7b, 0xfc, 0xd9, 0x97, 0x7d, 0xe7, 0x57, - 0x44, 0xb7, 0x53, 0xc5, 0xd6, 0xd5, 0x1e, 0xe7, 0x40, 0x0e, 0x02, 0x8a, - 0x7f, 0xf1, 0xd5, 0x8c, 0x86, 0x7e, 0xd1, 0x78, 0x34, 0x2c, 0x68, 0x8d, - 0xfb, 0xa7, 0x61, 0x41, 0x15, 0x39, 0x7f, 0x5c, 0x1f, 0x6d, 0x93, 0x2d, - 0xe1, 0xcc, 0x38, 0xe1, 0x75, 0xef, 0x66, 0xd9, 0xa1, 0x4b, 0xea, 0xcf, - 0x9e, 0x81, 0xe4, 0xc4, 0xee, 0xac, 0x1c, 0x50, 0x6f, 0xa1, 0xae, 0xfc, - 0xdf, 0xf7, 0xc2, 0x42, 0xa0, 0xb3, 0xf2, 0x50, 0x5d, 0xcc, 0x96, 0xfd, - 0xad, 0xfa, 0xad, 0x6b, 0x14, 0xf2, 0xc8, 0xeb, 0x77, 0xf5, 0x02, 0xab, - 0x8c, 0xa3, 0x5e, 0x9a, 0x19, 0x12, 0xba, 0xbc, 0xc0, 0x49, 0x3d, 0x3e, - 0x9f, 0x3a, 0x27, 0xcf, 0x90, 0x27, 0xb7, 0x2d, 0xcb, 0x4c, 0xf1, 0xaa, - 0xc6, 0x13, 0xcb, 0x5c, 0x96, 0x27, 0x2e, 0xc6, 0x12, 0x7e, 0x8b, 0x1d, - 0x8b, 0x1b, 0x51, 0xbf, 0x1f, 0x9d, 0x9f, 0xa4, 0x03, 0x02, 0x62, 0xc5, - 0xc8, 0x56, 0xdc, 0x03, 0x10, 0xcc, 0x1d, 0x35, 0xb8, 0x84, 0x3b, 0xdf, - 0x03, 0x64, 0xc3, 0x8c, 0x24, 0xce, 0x57, 0xb7, 0xba, 0x52, 0x9b, 0x8a, - 0x82, 0xc5, 0xa8, 0x23, 0x68, 0x42, 0xd7, 0xd0, 0x6d, 0xb6, 0x34, 0x45, - 0xe4, 0x3a, 0x49, 0xe8, 0x39, 0x7f, 0x74, 0xf8, 0xa9, 0xfd, 0xc9, 0xea, - 0xa3, 0x9a, 0x78, 0x99, 0xba, 0xc4, 0xa0, 0x17, 0xd1, 0x04, 0x9a, 0x94, - 0xa4, 0xbf, 0x90, 0x07, 0xc1, 0xc1, 0x11, 0x3d, 0xb3, 0x4e, 0x92, 0xa9, - 0x80, 0x36, 0x87, 0xe1, 0x4d, 0x99, 0xaf, 0x50, 0x54, 0x2f, 0x1a, 0xfb, - 0x1f, 0xf0, 0xb0, 0x87, 0x64, 0x7e, 0xca, 0x26, 0xff, 0xd2, 0xd3, 0x8b, - 0xbe, 0x06, 0x9e, 0x89, 0xe7, 0xef, 0x82, 0xd3, 0x0a, 0x48, 0x99, 0xb0, - 0x96, 0x1c, 0x7c, 0x3f, 0xc5, 0x90, 0xc6, 0x0b, 0x94, 0x5c, 0xd4, 0xb1, - 0x6b, 0x81, 0x72, 0x14, 0xc9, 0x57, 0x35, 0x76, 0x22, 0x4f, 0xd8, 0xa0, - 0xf7, 0x6f, 0x4e, 0x1d, 0xfe, 0x44, 0x85, 0x06, 0x3d, 0xc3, 0xed, 0xc7, - 0xb6, 0x41, 0x52, 0x4b, 0x6c, 0xe4, 0x3e, 0x02, 0x6e, 0x93, 0x5e, 0x65, - 0xf3, 0x5e, 0x78, 0xed, 0x5f, 0xae, 0x05, 0x9e, 0x1f, 0x32, 0x07, 0xfa, - 0x4d, 0x8b, 0x90, 0xc5, 0xad, 0x7f, 0x23, 0x60, 0x3e, 0x6e, 0x0c, 0x9b, - 0x42, 0xa7, 0x42, 0x1c, 0x85, 0xba, 0x50, 0xde, 0x4d, 0x69, 0x71, 0xdb, - 0x20, 0x60, 0xd4, 0x64, 0xf7, 0x43, 0x4b, 0xd3, 0x42, 0xf3, 0x7d, 0x91, - 0xda, 0x6e, 0xd0, 0xe6, 0xee, 0xa0, 0xdb, 0x47, 0x27, 0x4d, 0x32, 0x64, - 0x5e, 0x08, 0xd8, 0xaa, 0xe4, 0x1f, 0x80, 0x1c, 0x05, 0x2f, 0x19, 0x90, - 0xcb, 0x8d, 0xc5, 0x1f, 0xb9, 0xc3, 0x12, 0x24, 0xe4, 0x7c, 0x3a, 0x50, - 0x18, 0x5b, 0xff, 0x50, 0x01, 0xf9, 0x54, 0x1c, 0x85, 0x26, 0xf8, 0xbd, - 0xb8, 0x37, 0xb3, 0x25, 0x3b, 0x0e, 0x95, 0xcd, 0x42, 0x1b, 0x3d, 0x3b, - 0x5a, 0x99, 0x98, 0xf9, 0xbe, 0xe8, 0xea, 0x8f, 0xbd, 0xe3, 0x94, 0x68, - 0x80, 0x16, 0x94, 0x60, 0x83, 0x94, 0x6e, 0x22, 0x5d, 0x71, 0x93, 0xcc, - 0x87, 0xc8, 0xd1, 0x18, 0x4c, 0x11, 0xd6, 0xf5, 0xb4, 0x56, 0x69, 0xce, - 0x99, 0xcf, 0xdc, 0x54, 0xf9, 0x3a, 0xf4, 0x83, 0xb5, 0xae, 0x05, 0x6c, - 0xda, 0x85, 0xd1, 0xea, 0xed, 0x9e, 0xb3, 0xc5, 0xa6, 0x22, 0x87, 0x59, - 0x49, 0xeb, 0x9a, 0x54, 0xff, 0x5c, 0xce, 0x3d, 0x2e, 0xde, 0x68, 0xae, - 0x02, 0xec, 0xf2, 0x50, 0x9d, 0x50, 0x4a, 0x2e, 0x60, 0x1a, 0x55, 0x8a, - 0xbe, 0x69, 0x73, 0x99, 0xed, 0x9a, 0x96, 0xbb, 0x8e, 0x1a, 0xfc, 0x74, - 0x69, 0xb3, 0x21, 0xfe, 0x84, 0x45, 0x2a, 0x66, 0xd1, 0x63, 0x0c, 0x21, - 0x2a, 0x08, 0x81, 0x17, 0xb2, 0x4c, 0xd4, 0xd0, 0x73, 0x5f, 0x1e, 0x54, - 0xfd, 0x8d, 0x90, 0x23, 0xd7, 0x99, 0x31, 0x95, 0x35, 0x88, 0x78, 0x12, - 0xdd, 0x51, 0xc1, 0xa9, 0x82, 0x08, 0x69, 0xfb, 0xc6, 0xaa, 0xd0, 0xe8, - 0x78, 0x82, 0x7b, 0xea, 0xac, 0x36, 0x41, 0x14, 0x0f, 0x53, 0xa1, 0xae, - 0x14, 0xc9, 0xce, 0x96, 0xc7, 0xdf, 0xa8, 0x27, 0x48, 0x6c, 0x74, 0x4b, - 0x7a, 0xec, 0xfc, 0xc5, 0xc2, 0xcf, 0x92, 0x1a, 0xff, 0x73, 0x59, 0x69, - 0xe1, 0x6a, 0x1b, 0x28, 0x02, 0x31, 0x54, 0x54, 0x1f, 0xe1, 0x85, 0x7c, - 0xe4, 0xd1, 0xe1, 0x3f, 0xfd, 0x3c, 0xe3, 0x47, 0x88, 0x48, 0xa1, 0xe9, - 0x10, 0xe1, 0x54, 0xa7, 0x03, 0x8c, 0x40, 0x63, 0x6d, 0x7c, 0x07, 0x9c, - 0x37, 0xa4, 0x81, 0x93, 0xe1, 0x14, 0x82, 0x29, 0x35, 0xe7, 0x09, 0x03, - 0x2b, 0x35, 0x36, 0xd1, 0x90, 0x4b, 0x67, 0xd0, 0x57, 0xc2, 0x3e, 0x7b, - 0xec, 0xc3, 0xfa, 0x12, 0x08, 0x82, 0x29, 0xe0, 0x91, 0xed, 0xf1, 0xbe, - 0x61, 0x8e, 0x81, 0xea, 0x95, 0x28, 0xa1, 0x84, 0xc3, 0x7c, 0x65, 0x0e, - 0x3a, 0x93, 0x87, 0xcf, 0x74, 0xe5, 0x0a, 0x9a, 0xe3, 0xb4, 0x80, 0x5c, - 0x81, 0x04, 0x7c, 0xca, 0xc0, 0xca, 0x17, 0x17, 0x19, 0x1f, 0x34, 0xc1, - 0xbc, 0xae, 0xcd, 0xe0, 0x70, 0x08, 0xbc, 0xe7, 0xab, 0xef, 0xd0, 0xfa, - 0x0a, 0xc8, 0xc9, 0xe3, 0x20, 0x4c, 0x7f, 0xf3, 0xad, 0x61, 0xa0, 0x14, - 0x36, 0x02, 0xad, 0x2b, 0x95, 0x67, 0x70, 0x18, 0xe2, 0xc9, 0xe6, 0xdb, - 0x60, 0xb7, 0x3a, 0xec, 0x4c, 0xc0, 0xd6, 0xe1, 0x12, 0xcf, 0xcc, 0xb4, - 0xa0, 0xc8, 0xfe, 0x07, 0x50, 0x61, 0x65, 0xf7, 0xbb, 0xf9, 0x13, 0x2d, - 0x24, 0x3c, 0x44, 0x3e, 0x51, 0xe5, 0xb7, 0x9e, 0x7c, 0x72, 0xe6, 0x45, - 0x4a, 0xca, 0x35, 0xdb, 0x28, 0xf3, 0xbd, 0x0d, 0x0a, 0xc5, 0xa8, 0xb1, - 0xb1, 0xb5, 0x9c, 0x69, 0x83, 0xe7, 0x89, 0xfa, 0xe0, 0x4c, 0xb2, 0xdc, - 0xce, 0x63, 0xcc, 0xe6, 0x5b, 0x34, 0xab, 0x16, 0x27, 0x7a, 0x2e, 0x40, - 0x02, 0xfa, 0xe8, 0x96, 0x2f, 0xf6, 0x34, 0x50, 0x4e, 0xc1, 0x57, 0x07, - 0x94, 0xd5, 0x2b, 0xc9, 0x2a, 0x09, 0x34, 0xa3, 0x41, 0xb1, 0x8c, 0x3c, - 0x26, 0xff, 0x5e, 0xfb, 0x2d, 0xc5, 0x86, 0x11, 0x65, 0xb9, 0x33, 0x94, - 0x52, 0xde, 0x54, 0x51, 0xb5, 0x6e, 0x95, 0x8e, 0xd2, 0xae, 0x9f, 0x38, - 0xbf, 0xb8, 0x0c, 0x60, 0x77, 0xc0, 0xf7, 0xb8, 0xaf, 0x2b, 0x88, 0xab, - 0xea, 0x6d, 0x0b, 0x96, 0x57, 0x08, 0x21, 0x70, 0xdb, 0xd7, 0xbb, 0xc6, - 0x06, 0xe5, 0x90, 0x4c, 0x75, 0x02, 0xb8, 0x22, 0x7e, 0xcc, 0xcb, 0x8d, - 0x8d, 0x0e, 0xef, 0xc7, 0x84, 0x6b, 0x29, 0xd4, 0x0a, 0x3a, 0xff, 0xd4, - 0xda, 0x24, 0xa2, 0x03, 0x2f, 0x7e, 0x9d, 0xe6, 0xe7, 0xc6, 0x51, 0xb0, - 0x79, 0x80, 0x8f, 0xb1, 0xa2, 0x77, 0x92, 0xf3, 0x9f, 0x4f, 0x23, 0x51, - 0x86, 0x6a, 0xfa, 0xb7, 0xd4, 0x3e, 0xfa, 0x07, 0x93, 0x60, 0x07, 0xce, - 0xe2, 0xaf, 0x1e, 0xc0, 0x98, 0x4c, 0x40, 0x71, 0x14, 0x59, 0x70, 0x9e, - 0xcf, 0xf6, 0x55, 0x59, 0x6b, 0x69, 0xe6, 0x62, 0x61, 0x38, 0xb6, 0x0b, - 0x5a, 0x5e, 0x48, 0x66, 0xe3, 0x91, 0x7e, 0x02, 0xa4, 0xa8, 0x34, 0x08, - 0x8a, 0x86, 0xf8, 0x6f, 0xf8, 0x26, 0x46, 0x2d, 0x4b, 0x61, 0x53, 0xf6, - 0x01, 0xc9, 0xc0, 0x66, 0x6c, 0x6b, 0xc4, 0x4e, 0x0c, 0x3d, 0xfe, 0x44, - 0xe4, 0xb5, 0x93, 0x7f, 0x6f, 0xda, 0x2f, 0x06, 0xa5, 0x58, 0x1f, 0x72, - 0xdc, 0x42, 0x4c, 0xb3, 0x41, 0x17, 0x3f, 0xc1, 0xf0, 0x93, 0x50, 0xb1, - 0xa5, 0x24, 0x0c, 0xf7, 0xb1, 0xd0, 0xcd, 0xb2, 0x50, 0x52, 0xf4, 0xe5, - 0xb7, 0xb9, 0x9f, 0x72, 0x1e, 0xc5, 0x7e, 0x8b, 0x71, 0xf5, 0xf1, 0x64, - 0x54, 0x29, 0x0c, 0xf1, 0x60, 0x14, 0xb3, 0x6d, 0xa5, 0x0b, 0x09, 0x18, - 0x31, 0x23, 0xd2, 0x25, 0x46, 0xf8, 0x10, 0xbb, 0x26, 0xcf, 0x3c, 0x09, - 0x61, 0xea, 0xff, 0xb4, 0xe3, 0x96, 0xdb, 0x35, 0x6f, 0x52, 0xf0, 0x15, - 0xec, 0x31, 0xfd, 0x7e, 0xdd, 0xf5, 0x6b, 0x9d, 0x8f, 0x2d, 0x1b, 0x38, - 0xc6, 0xe0, 0x49, 0x14, 0xcb, 0x7f, 0xd8, 0xa7, 0x48, 0x5e, 0x63, 0xc7, - 0x5a, 0x06, 0xde, 0xcf, 0x61, 0x56, 0x7e, 0x46, 0x08, 0x02, 0x9d, 0x61, - 0x25, 0xb8, 0x0a, 0x02, 0x6b, 0x6c, 0x71, 0x4a, 0xcc, 0xb5, 0x77, 0x20, - 0x9a, 0x0e, 0x7e, 0x00, 0x44, 0x68, 0x8e, 0x8f, 0x7e, 0x56, 0xa4, 0x5a, - 0xb9, 0x6f, 0x74, 0x85, 0x2a, 0xbb, 0x58, 0x9d, 0x78, 0xbe, 0x72, 0x59, - 0xe7, 0xc2, 0x03, 0x3e, 0xfd, 0x9e, 0x16, 0xef, 0x4e, 0x0a, 0xd4, 0x8b, - 0x13, 0x46, 0xed, 0xc8, 0x37, 0x87, 0x43, 0x0a, 0x72, 0xa2, 0x27, 0x33, - 0x45, 0x42, 0x50, 0xc2, 0x9b, 0xc0, 0xc1, 0x3d, 0x5b, 0xbe, 0x8b, 0x3c, - 0x78, 0xce, 0x8e, 0xf6, 0x5f, 0x61, 0x99, 0x96, 0xd3, 0x65, 0xf1, 0x0f, - 0xa0, 0xc7, 0x37, 0xb2, 0x60, 0x3b, 0x1f, 0x3e, 0x93, 0x17, 0x08, 0xd3, - 0xcf, 0xcd, 0xef, 0x7b, 0xd1, 0x04, 0xb9, 0x0d, 0x95, 0x13, 0x18, 0x65, - 0x3c, 0x05, 0xe8, 0xbb, 0xa7, 0x6f, 0x94, 0xe1, 0xbc, 0xb6, 0x8e, 0x58, - 0x19, 0x57, 0xa1, 0x04, 0x1f, 0xf2, 0x46, 0xa6, 0x5e, 0xb9, 0x95, 0x58, - 0x91, 0xc2, 0xbe, 0x04, 0x77, 0x70, 0x83, 0xb5, 0x30, 0x7e, 0x4c, 0xb6, - 0xfc, 0x65, 0x33, 0x49, 0xa7, 0x97, 0xb0, 0x4b, 0x2e, 0xb5, 0x44, 0x16, - 0x6a, 0x97, 0xf7, 0xc6, 0xe8, 0xaa, 0xbc, 0x0f, 0x2f, 0x3c, 0x21, 0x61, - 0xf2, 0x7d, 0x5b, 0xee, 0xbe, 0x50, 0x44, 0x72, 0x5f, 0x76, 0xb1, 0x43, - 0xd3, 0x62, 0x9e, 0x8e, 0xcc, 0x4b, 0xef, 0x16, 0x6c, 0xf1, 0x74, 0xf7, - 0x3e, 0x41, 0x01, 0x23, 0xad, 0x73, 0x0f, 0x85, 0xd9, 0x86, 0x46, 0x42, - 0x05, 0xb3, 0x69, 0x73, 0xe0, 0xaf, 0x81, 0x4c, 0x96, 0xa6, 0x9a, 0x27, - 0x49, 0xe3, 0xe0, 0xfa, 0xe3, 0x04, 0x4e, 0x3d, 0x21, 0xf2, 0xf5, 0xa8, - 0xd0, 0xe3, 0x62, 0xeb, 0xa1, 0xa6, 0x36, 0x55, 0xb4, 0x3d, 0xc0, 0xdc, - 0xe6, 0xf4, 0xb9, 0x9b, 0xf3, 0x88, 0x61, 0xba, 0xac, 0x1d, 0x76, 0xaa, - 0x05, 0x90, 0x68, 0xe4, 0x63, 0xf5, 0xef, 0xe7, 0xd1, 0x84, 0x07, 0x55, - 0x95, 0xea, 0x65, 0xc4, 0x52, 0xf7, 0x5f, 0x1a, 0x1f, 0x03, 0x8f, 0x53, - 0xbc, 0x92, 0xc8, 0x83, 0xa3, 0xfe, 0x29, 0x9e, 0x53, 0x31, 0x81, 0x58, - 0x83, 0xd9, 0x3e, 0xac, 0x7b, 0xc0, 0x0d, 0xb5, 0x79, 0xc9, 0x7c, 0x8a, - 0x87, 0x3e, 0xbd, 0xf2, 0xb8, 0xef, 0xd5, 0x77, 0x19, 0xe1, 0x06, 0xb8, - 0x06, 0xa8, 0xb1, 0x90, 0x0b, 0x9f, 0x77, 0x59, 0x16, 0x9b, 0xda, 0xef, - 0x42, 0x66, 0xca, 0xad, 0x80, 0x07, 0xb8, 0xed, 0xbb, 0xf8, 0x64, 0x0d, - 0xa2, 0x0f, 0x0b, 0x47, 0x1c, 0xbf, 0x0b, 0x12, 0x45, 0xa5, 0xd2, 0x6f, - 0xba, 0xdc, 0x23, 0x36, 0x38, 0x93, 0xdf, 0x4d, 0xd9, 0xc4, 0x4d, 0x13, - 0x60, 0x28, 0x67, 0xed, 0x49, 0x12, 0x1e, 0x33, 0xea, 0xb8, 0x4a, 0x9c, - 0x2f, 0x0a, 0x14, 0x90, 0x74, 0xac, 0x0f, 0x6d, 0x3d, 0xe9, 0xa2, 0x8c, - 0x3c, 0x97, 0xb1, 0x12, 0x74, 0xff, 0x48, 0x14, 0x15, 0x83, 0xcf, 0x88, - 0xdc, 0xc0, 0xab, 0x01, 0x20, 0x6f, 0xae, 0xd3, 0x47, 0x60, 0x01, 0xd0, - 0x35, 0x65, 0xef, 0xda, 0xd9, 0x09, 0x35, 0x26, 0xaf, 0x36, 0xe3, 0x70, - 0x07, 0xf2, 0x7c, 0x3b, 0x26, 0xf0, 0x74, 0xd9, 0x59, 0x15, 0x5b, 0xfe, - 0xd8, 0x97, 0x65, 0x71, 0x75, 0x70, 0x63, 0xe9, 0x90, 0x8f, 0xb7, 0x46, - 0xf2, 0xbc, 0x2a, 0x0f, 0x68, 0x94, 0x37, 0x71, 0xdd, 0x23, 0xf8, 0x68, - 0x21, 0x56, 0xe7, 0x22, 0xe7, 0xf2, 0xe2, 0x60, 0x71, 0x44, 0x7a, 0x0d, - 0x4a, 0x7a, 0xdc, 0x3b, 0xc7, 0x09, 0xeb, 0x01, 0x6b, 0x36, 0x18, 0xed, - 0x1c, 0x0c, 0x7b, 0x4f, 0xe4, 0x9c, 0x9a, 0xfd, 0x14, 0xe0, 0xe3, 0xd2, - 0x15, 0x49, 0xe5, 0x39, 0xd2, 0xa9, 0xad, 0x72, 0x64, 0x3f, 0x54, 0x72, - 0x88, 0x65, 0x2b, 0x6d, 0xe7, 0xf8, 0xe8, 0xfc, 0x9e, 0xb2, 0xa3, 0xba, - 0x63, 0x07, 0xaa, 0x44, 0x58, 0x02, 0xab, 0x6a, 0x6b, 0x10, 0x9b, 0x09, - 0xc7, 0x49, 0x4e, 0x64, 0xd8, 0x5b, 0x5d, 0xeb, 0xd8, 0x79, 0xc5, 0x83, - 0x24, 0xbd, 0xec, 0xcd, 0x30, 0xe9, 0xe8, 0xfa, 0x5a, 0x67, 0x08, 0x94, - 0x78, 0x1d, 0x77, 0x65, 0xc7, 0x09, 0xc1, 0x4f, 0x50, 0xd3, 0x74, 0x9a, - 0x3a, 0x16, 0x2f, 0x03, 0x2a, 0x50, 0xf4, 0x8a, 0x61, 0x5b, 0x01, 0xc9, - 0x82, 0x3e, 0x17, 0x30, 0xa0, 0x77, 0xa0, 0x58, 0xb1, 0x85, 0x0b, 0x53, - 0xb3, 0x9f, 0xa1, 0x36, 0x42, 0x4b, 0xdb, 0x3f, 0xaa, 0x3c, 0xbb, 0x60, - 0xf0, 0xa6, 0x7b, 0xf6, 0xcd, 0x61, 0x01, 0xbd, 0x7f, 0x0d, 0x0c, 0x0c, - 0xd6, 0x91, 0xee, 0xf5, 0x64, 0x8d, 0xfd, 0x3a, 0xbb, 0xd2, 0xfe, 0xd8, - 0xe0, 0xe1, 0xb0, 0xae, 0x4e, 0x3a, 0x20, 0x9b, 0xa5, 0x3a, 0xcc, 0xd3, - 0xe6, 0x34, 0xe1, 0x3b, 0x4b, 0x1b, 0x05, 0xfe, 0xfd, 0x22, 0x0d, 0x61, - 0x75, 0xc7, 0x82, 0x9e, 0xa8, 0xb4, 0x26, 0x72, 0x7f, 0xe0, 0x54, 0x4f, - 0x52, 0xe8, 0x32, 0xdf, 0x45, 0x52, 0x0c, 0x4e, 0xc5, 0x59, 0x9c, 0x2f, - 0x4c, 0x51, 0xa7, 0x88, 0x2e, 0x8a, 0x27, 0xa9, 0xed, 0x9a, 0x7a, 0xea, - 0x21, 0x19, 0x57, 0x42, 0xe5, 0xd8, 0x41, 0x24, 0xf0, 0x42, 0xcd, 0x0a, - 0xdd, 0xe0, 0x56, 0x0b, 0xa3, 0xb1, 0xc6, 0xdf, 0xd9, 0x18, 0x82, 0xb7, - 0x6f, 0xef, 0x7e, 0x7b, 0xeb, 0xf3, 0xb1, 0xed, 0xb2, 0x8c, 0xb1, 0x1c, - 0xc8, 0x4c, 0x1c, 0xb0, 0xf9, 0x78, 0x94, 0x25, 0x0c, 0x72, 0x76, 0xe0, - 0x6d, 0x79, 0x2d, 0x5b, 0x2d, 0x72, 0x8e, 0xb0, 0xe9, 0xb7, 0x14, 0x07, - 0xcb, 0x56, 0x57, 0x9a, 0xbe, 0x3d, 0x77, 0xdf, 0xfe, 0x25, 0x77, 0xdd, - 0x23, 0x25, 0xd7, 0xfd, 0xb9, 0xd0, 0xc6, 0x5f, 0x12, 0xe0, 0xf1, 0x73, - 0x78, 0x2a, 0x70, 0x94, 0x39, 0x1c, 0x92, 0x8c, 0x6e, 0x7a, 0x0a, 0x5e, - 0x70, 0xf1, 0xd4, 0x20, 0xbd, 0xd4, 0x76, 0x8d, 0x72, 0xe3, 0xb2, 0xa4, - 0x8c, 0xbe, 0xa3, 0x15, 0x7c, 0x42, 0x7b, 0x9a, 0x87, 0xb3, 0x30, 0x14, - 0x6c, 0xd2, 0xce, 0x27, 0xa6, 0x3f, 0x6b, 0x36, 0x36, 0x7c, 0x36, 0x13, - 0x21, 0x56, 0x30, 0x18, 0xf1, 0x26, 0x6a, 0x0c, 0xe5, 0x78, 0xef, 0x78, - 0xad, 0x64, 0x34, 0xca, 0x8c, 0xb7, 0x3e, 0x57, 0x44, 0x45, 0x55, 0x5a, - 0x63, 0xfa, 0x48, 0x88, 0x70, 0xee, 0x48, 0x82, 0x2e, 0xe1, 0xf5, 0xf9, - 0x9d, 0x46, 0xe5, 0x52, 0x51, 0x10, 0x4f, 0x6e, 0x45, 0xae, 0x79, 0xb1, - 0x53, 0xa1, 0x45, 0x47, 0x49, 0xdc, 0x85, 0xfe, 0x3d, 0xc5, 0xae, 0x36, - 0x0b, 0x02, 0x74, 0x2f, 0xda, 0x24, 0xe9, 0x43, 0xad, 0x47, 0x6f, 0x93, - 0x8b, 0x72, 0x4a, 0xc0, 0x69, 0x4d, 0xea, 0x90, 0x9b, 0x9c, 0xe1, 0x40, - 0x30, 0x06, 0x6c, 0xd1, 0x79, 0xb1, 0xce, 0x18, 0x91, 0xdf, 0x4c, 0xae, - 0x28, 0xd3, 0x81, 0xa2, 0x33, 0xe1, 0xe4, 0xc3, 0x7f, 0x1d, 0x73, 0xc9, - 0xa3, 0x67, 0x32, 0xdf, 0xc7, 0x19, 0xcd, 0x87, 0xaf, 0xfd, 0xf1, 0xee, - 0x94, 0x68, 0x64, 0x9d, 0x17, 0xfd, 0x4a, 0xe6, 0x86, 0x4d, 0x78, 0x69, - 0xc1, 0x8b, 0x34, 0xf1, 0xa4, 0x41, 0x29, 0x99, 0x95, 0x4e, 0xc0, 0x0b, - 0x90, 0x32, 0x8d, 0xe1, 0xfc, 0x0b, 0xbd, 0x08, 0x92, 0xfb, 0x0a, 0xef, - 0x44, 0x3c, 0x65, 0xc3, 0x92, 0xc7, 0x59, 0xa1, 0x2b, 0x53, 0xc6, 0x08, - 0x8b, 0x80, 0xd3, 0x9a, 0x7d, 0x27, 0x8a, 0xe5, 0xd6, 0xad, 0x1a, 0xb6, - 0xdf, 0xad, 0xf7, 0x0f, 0xfa, 0x17, 0xba, 0x21, 0x16, 0x0d, 0x87, 0xec, - 0x0d, 0xbe, 0x1f, 0xbc, 0xaa, 0x5b, 0x13, 0x58, 0xb8, 0x0a, 0x76, 0x5f, - 0xb0, 0xf7, 0x1c, 0x7c, 0x84, 0x2e, 0xa9, 0xb7, 0xf3, 0xc3, 0x11, 0x1d, - 0x9a, 0xac, 0x9b, 0x95, 0x54, 0x36, 0x97, 0xdd, 0xa0, 0x9f, 0x5c, 0xc4, - 0x5d, 0xfc, 0x91, 0x49, 0x41, 0xfe, 0xa4, 0xca, 0x69, 0xbf, 0x4c, 0xc1, - 0xcf, 0x02, 0x3d, 0x39, 0x9e, 0x73, 0x0e, 0xf4, 0xdc, 0x81, 0x64, 0x8e, - 0x91, 0x05, 0xd5, 0x4f, 0xd2, 0x34, 0x5d, 0x15, 0x1e, 0x05, 0x3a, 0x0d, - 0xdb, 0xba, 0xd1, 0xe4, 0x8d, 0x60, 0x84, 0x33, 0x79, 0x31, 0x97, 0x1d, - 0x0c, 0x76, 0x9a, 0xc1, 0xb8, 0x2d, 0x3f, 0xc4, 0x84, 0xf3, 0x53, 0x91, - 0xd0, 0xee, 0x6b, 0x37, 0xb4, 0xf9, 0x1f, 0x90, 0xfb, 0x94, 0x31, 0x80, - 0xe9, 0xf9, 0x97, 0x1f, 0xbf, 0x10, 0xe6, 0x24, 0x8d, 0xb5, 0xee, 0x8c, - 0xae, 0xe1, 0xf5, 0xb3, 0x07, 0x4e, 0x28, 0x5b, 0xc5, 0x95, 0x4f, 0xf8, - 0x06, 0x90, 0xc9, 0xf5, 0x25, 0xf2, 0x71, 0x02, 0x2e, 0xe7, 0xf8, 0x61, - 0x50, 0xe9, 0x16, 0xe9, 0xd8, 0xec, 0x22, 0x47, 0xab, 0xa0, 0xad, 0x11, - 0xf7, 0x95, 0x83, 0x48, 0xf9, 0xb9, 0xc9, 0x6f, 0x7f, 0x73, 0x24, 0x00, - 0x71, 0x6b, 0xbd, 0x90, 0x70, 0x78, 0x03, 0xb2, 0x89, 0x45, 0xd4, 0x29, - 0x59, 0xbe, 0x6a, 0x47, 0xb5, 0x68, 0x8f, 0xda, 0x1d, 0xc8, 0x58, 0x5b, - 0x3e, 0x02, 0x8e, 0xb6, 0x13, 0xe9, 0x2e, 0xdb, 0x35, 0x44, 0xeb, 0xb6, - 0x19, 0x59, 0xbd, 0xf3, 0x35, 0x7b, 0x16, 0xfc, 0x49, 0xc1, 0x3a, 0x3b, - 0xf4, 0x86, 0xad, 0x1d, 0xd2, 0xd0, 0xeb, 0x55, 0xad, 0x6e, 0xa5, 0x99, - 0x3a, 0x11, 0xd9, 0xaa, 0x56, 0xa2, 0xa0, 0x82, 0x46, 0x14, 0x8b, 0xf3, - 0x6f, 0xc8, 0x6d, 0x58, 0xb6, 0x8a, 0x4c, 0x6f, 0x91, 0xf1, 0xac, 0xe3, - 0x8b, 0x0b, 0x48, 0x38, 0x64, 0x53, 0x1d, 0x59, 0x30, 0x66, 0x27, 0xef, - 0x37, 0x7e, 0xcf, 0xdb, 0x8c, 0xb8, 0xb9, 0xde, 0x08, 0x98, 0x66, 0x66, - 0xf0, 0xe0, 0x43, 0x63, 0x4e, 0x8a, 0xfc, 0x16, 0xbf, 0x38, 0x46, 0x44, - 0x87, 0x41, 0x60, 0xe6, 0x11, 0xa9, 0x59, 0x93, 0x22, 0x99, 0x2a, 0x66, - 0x3e, 0x42, 0xfe, 0x19, 0xb4, 0x89, 0xb1, 0xa7, 0x90, 0x6a, 0xb0, 0x41, - 0x5a, 0x97, 0xe3, 0x2e, 0xa2, 0x87, 0x56, 0xcc, 0xde, 0x06, 0x76, 0xd7, - 0x6b, 0x04, 0xa2, 0xbc, 0xb1, 0x76, 0x74, 0xae, 0x84, 0x92, 0x6f, 0x7a, - 0xb3, 0xc7, 0x72, 0x6e, 0x31, 0xc5, 0x0b, 0x32, 0x68, 0xe0, 0x8e, 0xaf, - 0x20, 0x4f, 0xa6, 0x85, 0xfb, 0x2b, 0x2a, 0xb1, 0x37, 0x07, 0x58, 0x23, - 0x2b, 0x1d, 0xfe, 0x8c, 0x1e, 0xd6, 0xef, 0x6a, 0x67, 0x81, 0x2c, 0xf6, - 0xca, 0x73, 0x68, 0xfd, 0x77, 0x93, 0x61, 0x28, 0x9b, 0x78, 0x26, 0x47, - 0xb2, 0x96, 0x8f, 0xa5, 0x7a, 0x88, 0xfc, 0x50, 0x70, 0x30, 0x82, 0x2b, - 0x77, 0xa2, 0x81, 0xeb, 0x25, 0x3d, 0xa2, 0x24, 0x6f, 0x28, 0x21, 0xf0, - 0x47, 0xce, 0xeb, 0x7c, 0xa9, 0x3e, 0xb3, 0xfe, 0x0d, 0xa3, 0xc7, 0xd6, - 0x36, 0xd6, 0x73, 0x6f, 0x93, 0x91, 0x77, 0x43, 0x0b, 0xea, 0xee, 0x43, - 0x71, 0x83, 0x27, 0x1c, 0x0d, 0x9f, 0xcb, 0xc3, 0x10, 0x53, 0x8c, 0xcd, - 0x45, 0x05, 0x14, 0x41, 0xab, 0x78, 0x6f, 0xf8, 0x92, 0xb2, 0x8e, 0x59, - 0x43, 0x80, 0xa9, 0xfe, 0xc8, 0x3c, 0x4a, 0x6d, 0x4c, 0x72, 0x08, 0xe9, - 0x28, 0x0e, 0xd2, 0x70, 0x79, 0x47, 0xc6, 0x06, 0xb8, 0xd0, 0x02, 0x56, - 0x32, 0xc1, 0xec, 0x25, 0xb5, 0xc2, 0x39, 0x9c, 0x3b, 0xcb, 0x75, 0x0c, - 0xb9, 0xed, 0x3f, 0x70, 0xcf, 0x97, 0x86, 0x5d, 0xa7, 0x69, 0xff, 0x3c, - 0x27, 0x0c, 0x1e, 0x1d, 0x6e, 0x36, 0x69, 0x84, 0x0d, 0x30, 0xff, 0x6a, - 0x2b, 0x91, 0xd4, 0x46, 0x97, 0x23, 0x32, 0x8d, 0x8a, 0x7f, 0x7e, 0x2d, - 0x0c, 0xf2, 0xf7, 0xf2, 0x13, 0xbb, 0xae, 0x99, 0x50, 0x38, 0xd7, 0x7e, - 0xb6, 0x15, 0xa5, 0x69, 0x0d, 0x44, 0x3a, 0x69, 0xc7, 0xa7, 0x32, 0xac, - 0x8c, 0x3c, 0xc8, 0x1a, 0x40, 0x2f, 0x43, 0x34, 0x1a, 0x2c, 0x06, 0x8f, - 0x42, 0xc0, 0x19, 0x62, 0x07, 0x8a, 0x78, 0xca, 0x98, 0x63, 0xa3, 0xd3, - 0xc7, 0xa4, 0x07, 0x40, 0xd3, 0x28, 0x33, 0x45, 0x6d, 0x51, 0x5b, 0xca, - 0x34, 0x6a, 0xde, 0x3c, 0x88, 0xbc, 0xe5, 0x44, 0x7b, 0xd3, 0x60, 0x93, - 0xbf, 0xee, 0x0d, 0x71, 0x67, 0x99, 0xd9, 0x72, 0xb4, 0x44, 0xd0, 0x5b, - 0xe4, 0x69, 0xa9, 0x5d, 0xf9, 0xb7, 0x8b, 0x5f, 0xb0, 0x71, 0x3f, 0xd6, - 0xbc, 0xb2, 0xee, 0xc6, 0x0c, 0x3c, 0x93, 0xb5, 0x95, 0x20, 0x15, 0x08, - 0x8e, 0x32, 0x6a, 0x88, 0x11, 0x27, 0x46, 0x58, 0xf8, 0xc4, 0xc9, 0x94, - 0x2c, 0xf8, 0x4c, 0xce, 0x5f, 0x95, 0x5d, 0xb5, 0x59, 0xaa, 0x58, 0x7a, - 0xf1, 0x37, 0xaa, 0xb1, 0x45, 0x60, 0x6b, 0xc9, 0xdb, 0xb6, 0xe5, 0xa0, - 0x6d, 0x76, 0x81, 0xb8, 0xb0, 0x1d, 0xf3, 0x8e, 0xcd, 0x4e, 0xc2, 0xeb, - 0xbe, 0xd3, 0xf4, 0xb1, 0x82, 0xad, 0x54, 0xdb, 0x3c, 0x4f, 0xeb, 0x4b, - 0x84, 0xe3, 0x6e, 0x49, 0xd2, 0xf2, 0x57, 0x39, 0xe8, 0x5b, 0xe1, 0x95, - 0x42, 0x90, 0xfe, 0xae, 0x68, 0xef, 0x59, 0x05, 0x2e, 0xd4, 0x15, 0x2a, - 0x03, 0x37, 0xf7, 0xb2, 0xb0, 0xc3, 0x7f, 0x7d, 0x18, 0x77, 0xe1, 0xbf, - 0xb3, 0xc7, 0xc5, 0x21, 0x46, 0x48, 0x36, 0x46, 0x7b, 0x30, 0x05, 0x46, - 0xc2, 0x38, 0x9d, 0x61, 0x3e, 0x73, 0x8c, 0x55, 0xf4, 0xa4, 0xac, 0xf0, - 0x23, 0x9c, 0x27, 0xc1, 0xc6, 0xbc, 0x68, 0x75, 0x31, 0x24, 0x0a, 0x24, - 0x4e, 0xcc, 0x22, 0x85, 0x78, 0x44, 0xce, 0xb3, 0x9d, 0x47, 0xf5, 0x58, - 0x81, 0xbf, 0x46, 0x1e, 0x54, 0x05, 0x6b, 0x99, 0xe0, 0x7b, 0x3a, 0x53, - 0x63, 0x8d, 0x6c, 0x6e, 0xfa, 0x4f, 0x7b, 0x47, 0x46, 0x64, 0xb0, 0x79, - 0x39, 0x39, 0x56, 0x7c, 0x74, 0x66, 0x46, 0x54, 0x34, 0x2f, 0xfd, 0x7e, - 0x5b, 0x0e, 0x30, 0x4b, 0x55, 0x99, 0x97, 0x16, 0x70, 0x76, 0x4c, 0x34, - 0xb4, 0x62, 0xb4, 0x61, 0x89, 0xd0, 0xbe, 0x15, 0xe2, 0xc2, 0x6f, 0x64, - 0xa5, 0x76, 0xae, 0x23, 0x53, 0x77, 0xe4, 0xf1, 0xb3, 0x98, 0xe4, 0x23, - 0xb1, 0x42, 0x85, 0xf1, 0xf7, 0xcd, 0x67, 0xc7, 0x9c, 0x56, 0x65, 0xea, - 0x1c, 0x94, 0xe9, 0x7b, 0x67, 0xee, 0x64, 0x8a, 0x88, 0x47, 0x8d, 0xdf, - 0x88, 0xe7, 0xc6, 0xb5, 0x90, 0x41, 0x45, 0x5b, 0x0c, 0xae, 0x2f, 0x90, - 0x32, 0x83, 0x06, 0x1b, 0x49, 0xa5, 0x3a, 0xf0, 0xb7, 0xd1, 0x99, 0x47, - 0x4d, 0xe4, 0xae, 0xed, 0x1d, 0x08, 0x0c, 0xa0, 0xef, 0xa0, 0x35, 0xdd, - 0x2a, 0x04, 0x9a, 0xcc, 0x30, 0x40, 0x26, 0xa3, 0x16, 0x83, 0xe2, 0x77, - 0x8a, 0x0f, 0xa3, 0x64, 0xd1, 0x80, 0xd7, 0x83, 0x0d, 0xfa, 0xb0, 0x7d, - 0x0a, 0xc5, 0x66, 0xab, 0xce, 0x5e, 0x34, 0xcf, 0x02, 0xa5, 0xc5, 0x57, - 0x9b, 0x33, 0xfe, 0x46, 0xc4, 0x78, 0x8e, 0xe9, 0x90, 0xd8, 0xfa, 0xdc, - 0xe0, 0xfa, 0xf6, 0x07, 0xe3, 0x09, 0x9d, 0x40, 0xa7, 0xb9, 0x4b, 0xf5, - 0x64, 0xe8, 0x46, 0x43, 0x7d, 0xb6, 0x1c, 0x95, 0x7d, 0xff, 0xb8, 0x12, - 0x49, 0x78, 0xfc, 0xad, 0x75, 0x02, 0x7c, 0xcd, 0x2c, 0xbd, 0xeb, 0x1c, - 0x5b, 0x53, 0x28, 0x6b, 0x78, 0xcc, 0x93, 0xfd, 0xbc, 0xf7, 0x78, 0x2e, - 0x82, 0x98, 0x36, 0x14, 0xd7, 0x99, 0x78, 0x8f, 0xe1, 0x95, 0x27, 0x11, - 0x75, 0x88, 0x7e, 0xde, 0x77, 0x4d, 0x5d, 0x6b, 0x18, 0x5c, 0xb3, 0x43, - 0x2f, 0x09, 0x76, 0xe0, 0x6e, 0x4c, 0x08, 0x75, 0xcd, 0xb0, 0xd6, 0x5d, - 0x21, 0x53, 0x91, 0x93, 0x59, 0xc1, 0x4c, 0xdd, 0xd7, 0x38, 0xf5, 0x27, - 0xdd, 0x97, 0x4d, 0xd8, 0x42, 0x91, 0x13, 0x67, 0xeb, 0x5d, 0x35, 0x52, - 0x10, 0x53, 0x7d, 0x19, 0xd8, 0x5e, 0xbb, 0x77, 0x4f, 0xbc, 0x42, 0xc1, - 0xb8, 0x2f, 0x48, 0xaf, 0x33, 0x15, 0xa0, 0xbd, 0x75, 0x5a, 0x22, 0x14, - 0x56, 0x15, 0x02, 0x04, 0x9d, 0x2d, 0xbd, 0xb0, 0x9a, 0x52, 0x81, 0x04, - 0x10, 0xff, 0x43, 0x49, 0x98, 0x77, 0x27, 0xdf, 0x65, 0x4d, 0xc0, 0x47, - 0x0c, 0x8a, 0x6c, 0x30, 0x99, 0x28, 0x29, 0x87, 0xd3, 0x77, 0x3e, 0x0d, - 0x37, 0xe7, 0x9f, 0x09, 0xd3, 0xe1, 0x24, 0xc4, 0x53, 0x12, 0x46, 0x41, - 0x0f, 0x50, 0x2b, 0xb8, 0xbc, 0x3f, 0x15, 0x12, 0xa6, 0xe4, 0x2d, 0x61, - 0x08, 0x2c, 0x6f, 0x66, 0x3e, 0x86, 0x1f, 0x27, 0x0c, 0x81, 0xc9, 0x4b, - 0x01, 0x87, 0xe8, 0x0d, 0xc4, 0x3a, 0x49, 0x46, 0x77, 0x8b, 0x2a, 0xd9, - 0x5f, 0x95, 0x82, 0xff, 0xd4, 0x4c, 0xec, 0xcb, 0xb3, 0xe2, 0x0d, 0x11, - 0xf9, 0x54, 0x1f, 0x1f, 0x44, 0x86, 0xa2, 0x96, 0x75, 0x22, 0x47, 0xd5, - 0x07, 0xfd, 0xd1, 0x75, 0xf3, 0xed, 0x6e, 0x77, 0x72, 0x9e, 0xdd, 0x53, - 0x7b, 0xaa, 0x18, 0x62, 0x7c, 0xa5, 0x51, 0x2d, 0x2c, 0x59, 0x96, 0x86, - 0xf2, 0x6e, 0xaa, 0x72, 0x9b, 0x5a, 0xc9, 0xf3, 0x3b, 0xe6, 0x19, 0xa1, - 0xc1, 0xde, 0x25, 0x9d, 0x1c, 0xe9, 0x85, 0x12, 0xf5, 0x7d, 0x1a, 0xeb, - 0x1c, 0x9d, 0x9b, 0xbb, 0xe5, 0x5f, 0x3d, 0x05, 0x02, 0xc2, 0xf3, 0x50, - 0xe5, 0x35, 0xb8, 0x18, 0x62, 0x1f, 0xfa, 0x88, 0x33, 0x64, 0x61, 0x90, - 0xdf, 0x75, 0x5d, 0x4a, 0x3f, 0xfa, 0x37, 0x4d, 0x25, 0x4c, 0xd9, 0x87, - 0xdc, 0x67, 0xe7, 0x6f, 0x8d, 0xf2, 0x25, 0xda, 0xbe, 0xcf, 0x1c, 0x6b, - 0x68, 0xc2, 0x23, 0xd8, 0x6b, 0xf2, 0x93, 0xc9, 0x62, 0x6e, 0xca, 0x94, - 0xce, 0x58, 0x5b, 0xb8, 0x84, 0xe3, 0x4b, 0xf6, 0xca, 0x1d, 0xea, 0xc6, - 0xd5, 0x7c, 0xc8, 0x38, 0xa8, 0x30, 0xe0, 0x75, 0xf4, 0xb2, 0xc4, 0xc2, - 0x53, 0x87, 0x5d, 0xcd, 0xa1, 0xd7, 0xd7, 0x3e, 0x18, 0xdf, 0x56, 0x71, - 0xe2, 0x47, 0x27, 0xaf, 0x1b, 0xe1, 0x4b, 0xe6, 0xc9, 0x6a, 0x9b, 0x1a, - 0xbd, 0x86, 0x87, 0xbb, 0x18, 0x75, 0x6a, 0x9d, 0x59, 0xcb, 0x9a, 0x84, - 0x3b, 0xbb, 0x88, 0x1b, 0xa0, 0x74, 0x51, 0xdf, 0x6d, 0xb6, 0x6e, 0x6c, - 0x7a, 0x93, 0xde, 0xf2, 0x0a, 0xc8, 0x2e, 0xa5, 0x26, 0x1d, 0xf0, 0x9d, - 0x1a, 0x94, 0xe1, 0xa7, 0xea, 0x2c, 0x68, 0x6d, 0x39, 0x68, 0xaf, 0xc3, - 0x62, 0xfd, 0x35, 0x3b, 0x05, 0xe9, 0xf7, 0x85, 0x55, 0xae, 0x28, 0x6b, - 0x67, 0x90, 0x3b, 0xf3, 0xe1, 0x4e, 0x52, 0x08, 0xcd, 0x34, 0x5b, 0x4f, - 0x9b, 0x22, 0x98, 0xd3, 0xad, 0xe8, 0xa1, 0xf9, 0xe1, 0x7d, 0x02, 0xdd, - 0xd1, 0xac, 0x76, 0x45, 0xe4, 0x80, 0x8c, 0x3f, 0x5a, 0x41, 0xcd, 0x7f, - 0x50, 0xba, 0xdc, 0x8d, 0x46, 0xa8, 0xe6, 0xc8, 0x04, 0xca, 0x71, 0x11, - 0xc5, 0x92, 0x44, 0x34, 0x7f, 0xee, 0x37, 0xda, 0x14, 0x37, 0x9f, 0x42, - 0xae, 0x0e, 0x51, 0x88, 0x6b, 0xdb, 0x5f, 0xd0, 0xd0, 0xde, 0x95, 0xa8, - 0xdb, 0x8c, 0x26, 0xa7, 0xa9, 0x71, 0x14, 0x21, 0xf2, 0xb1, 0xc6, 0x44, - 0x6c, 0x23, 0xb9, 0x32, 0xae, 0x0d, 0x4d, 0x43, 0x71, 0x5d, 0x63, 0x5c, - 0x20, 0xd2, 0xd6, 0xf1, 0x8f, 0x11, 0xd5, 0x41, 0xc2, 0xb9, 0x44, 0x83, - 0xcc, 0xfc, 0x0f, 0x5b, 0xd8, 0xc0, 0x00, 0x1e, 0x4a, 0xfd, 0xe5, 0x7c, - 0x5b, 0x43, 0x9c, 0x91, 0x07, 0x8a, 0x60, 0xc6, 0x02, 0x75, 0x75, 0x0a, - 0x50, 0x96, 0x97, 0xb7, 0x11, 0x82, 0x9d, 0x6a, 0x30, 0x9e, 0x3b, 0x50, - 0xf7, 0xf0, 0xd6, 0x32, 0x8e, 0x82, 0xd7, 0x3a, 0xc0, 0x85, 0xd2, 0xf4, - 0x32, 0xf1, 0x23, 0x45, 0x5e, 0xb9, 0x84, 0x38, 0x0d, 0x32, 0xe3, 0x23, - 0x22, 0xb1, 0xb7, 0xc2, 0xf6, 0x6d, 0xe4, 0x38, 0x33, 0x04, 0xe9, 0x77, - 0xa4, 0x5c, 0xac, 0xac, 0x1d, 0x46, 0x88, 0xb0, 0xc0, 0x39, 0xd6, 0xd7, - 0x91, 0x5b, 0xbf, 0xc6, 0x98, 0x60, 0x14, 0xfd, 0xad, 0x67, 0xf4, 0xe7, - 0xc5, 0x5e, 0x75, 0xb8, 0x97, 0x72, 0x84, 0x98, 0x03, 0x3a, 0xe2, 0x68, - 0xcb, 0x7c, 0xb5, 0x0e, 0xc8, 0x77, 0x50, 0x90, 0xc1, 0xa0, 0xa6, 0x78, - 0x79, 0xcd, 0x55, 0x99, 0x0d, 0x41, 0x69, 0x84, 0x52, 0x7d, 0xf4, 0x7e, - 0x20, 0xda, 0x8d, 0xf2, 0x9e, 0x05, 0xcd, 0xeb, 0x78, 0x45, 0xd6, 0x1b, - 0xfa, 0x0f, 0x11, 0x5d, 0xcf, 0x5b, 0x30, 0xf6, 0x60, 0x99, 0x7c, 0xff, - 0xf0, 0x60, 0x82, 0xd8, 0x5c, 0xd0, 0x5b, 0x41, 0xc6, 0xce, 0xf9, 0xd9, - 0x01, 0x68, 0xd2, 0x4e, 0xbd, 0xef, 0xeb, 0x74, 0x1a, 0x02, 0x82, 0xf5, - 0xb5, 0x7c, 0xf6, 0xae, 0x62, 0xc7, 0xf5, 0xfc, 0xa9, 0x0e, 0x19, 0x31, - 0x1f, 0x89, 0x44, 0x55, 0x30, 0xfc, 0xd5, 0xde, 0x55, 0x50, 0xdc, 0x22, - 0xed, 0x9e, 0x6e, 0xae, 0x41, 0x0e, 0xd0, 0x08, 0x3a, 0x9b, 0x2b, 0x02, - 0x11, 0x31, 0xea, 0x9f, 0xec, 0x16, 0x21, 0x2c, 0x03, 0x81, 0x3d, 0x58, - 0x66, 0x4f, 0x9b, 0x15, 0x69, 0xf9, 0xac, 0x06, 0x11, 0x48, 0x47, 0x46, - 0x58, 0x3e, 0x83, 0xb0, 0x9c, 0x28, 0x58, 0x9d, 0xca, 0xef, 0x8d, 0x3d, - 0x6f, 0x00, 0x1b, 0xd9, 0xde, 0x9a, 0xcc, 0xc8, 0xf1, 0x4f, 0x6a, 0xd7, - 0x86, 0xf5, 0x19, 0xad, 0xbb, 0xaf, 0x49, 0x04, 0xb1, 0x8d, 0x4c, 0x1a, - 0xe9, 0xae, 0x69, 0x22, 0x7f, 0x6c, 0x29, 0xa1, 0x91, 0x0c, 0x2b, 0x35, - 0x82, 0x7f, 0x3b, 0x5d, 0x79, 0x22, 0xa5, 0x7e, 0x02, 0x2a, 0xce, 0x11, - 0xe0, 0x2f, 0xed, 0x57, 0x31, 0x2f, 0x5d, 0xb6, 0x5e, 0xdc, 0x88, 0x8e, - 0x20, 0xc7, 0xb2, 0x1b, 0x2a, 0xf6, 0x1a, 0x9d, 0x7b, 0x2f, 0x33, 0xc3, - 0x32, 0xff, 0xf8, 0x83, 0x4c, 0x98, 0x1b, 0xd6, 0xab, 0x06, 0xbd, 0xf4, - 0x22, 0xe4, 0xc9, 0x4d, 0xbe, 0x45, 0xe0, 0x6d, 0x07, 0xbd, 0xdd, 0xd4, - 0x05, 0x39, 0x1d, 0xc8, 0x30, 0x32, 0xf3, 0x0b, 0xfb, 0xbf, 0x04, 0xb3, - 0x41, 0xfb, 0x61, 0xcb, 0xfa, 0x00, 0x12, 0xf2, 0xc9, 0xc6, 0x1f, 0xdc, - 0x61, 0x24, 0x4b, 0x0c, 0xd1, 0x5e, 0xa6, 0x7a, 0xfc, 0x72, 0x71, 0x28, - 0x39, 0xa5, 0xa4, 0xf5, 0xc9, 0x22, 0x28, 0xd0, 0x57, 0x41, 0x08, 0xdf, - 0xb3, 0x2b, 0x6c, 0x5f, 0xdf, 0x4d, 0xe2, 0xd1, 0x42, 0xb8, 0x98, 0x72, - 0xd2, 0xdc, 0xef, 0x7f, 0x64, 0x8a, 0x2b, 0x38, 0xa6, 0x48, 0xd0, 0x4c, - 0xb0, 0x1c, 0x6a, 0x7a, 0x72, 0xd1, 0xc7, 0x73, 0x5a, 0x81, 0x79, 0x91, - 0x4f, 0x13, 0xb0, 0xe3, 0xee, 0x84, 0xda, 0x42, 0xf0, 0xc7, 0x13, 0x31, - 0x6b, 0xce, 0xd9, 0xa4, 0x73, 0x35, 0x95, 0x66, 0xfe, 0xb6, 0x2d, 0xc0, - 0x01, 0x4d, 0xe9, 0x2e, 0x3f, 0x2a, 0x14, 0x92, 0x69, 0xa8, 0xd0, 0x60, - 0x9a, 0x0b, 0xb8, 0xbd, 0x98, 0x37, 0x2a, 0x24, 0x62, 0x44, 0x5b, 0xf1, - 0x37, 0x1c, 0xaa, 0xf2, 0x28, 0xfc, 0x52, 0xc3, 0x69, 0x0e, 0x7b, 0x2f, - 0x55, 0x04, 0xcb, 0xd0, 0xf6, 0xe3, 0xae, 0x7c, 0xe4, 0x78, 0x22, 0xa7, - 0x80, 0xc1, 0x5b, 0x9e, 0x44, 0xba, 0x2a, 0x63, 0xed, 0xa2, 0x3e, 0xc6, - 0x7c, 0x28, 0x2c, 0xd3, 0x08, 0x82, 0x53, 0x36, 0x97, 0x72, 0xa6, 0x26, - 0x24, 0xb2, 0xf3, 0x15, 0x34, 0x2c, 0xfc, 0x73, 0xb8, 0x78, 0x7e, 0xfb, - 0xd5, 0x9b, 0x7c, 0xb1, 0x24, 0x84, 0x8b, 0x25, 0x6d, 0x03, 0x4b, 0x3a, - 0x20, 0x94, 0x6d, 0x80, 0x63, 0x79, 0x98, 0xd3, 0xe0, 0x94, 0x80, 0x3b, - 0xfa, 0x7b, 0x92, 0x50, 0x53, 0x52, 0xe7, 0x45, 0xeb, 0x38, 0x09, 0xcb, - 0xbc, 0x05, 0xd0, 0x3f, 0x43, 0x1d, 0x8f, 0x72, 0x16, 0x2b, 0xa7, 0xa5, - 0x9d, 0x94, 0x15, 0x1d, 0xaf, 0x5b, 0x60, 0x66, 0x79, 0x5c, 0xab, 0x58, - 0x90, 0x6e, 0x63, 0x87, 0xc8, 0x1c, 0xd6, 0x92, 0x15, 0x72, 0xe7, 0x99, - 0x1e, 0xe2, 0x6c, 0x5f, 0x86, 0x8a, 0x5a, 0x94, 0x87, 0x5d, 0xb2, 0x33, - 0x34, 0x57, 0x38, 0xbe, 0xe8, 0x42, 0x6b, 0x61, 0x45, 0x0a, 0x1b, 0x88, - 0x97, 0x7a, 0x8f, 0x1a, 0xe2, 0xb2, 0x7b, 0x32, 0xfd, 0x55, 0x03, 0x34, - 0x39, 0xe8, 0x68, 0xcf, 0xdc, 0xd5, 0x08, 0x50, 0x07, 0x6f, 0xc4, 0x5c, - 0x31, 0x24, 0x8b, 0xa2, 0x5f, 0xff, 0x54, 0xba, 0xb3, 0x06, 0x75, 0xd4, - 0x83, 0xb0, 0x15, 0x31, 0x4a, 0xe0, 0x7b, 0x99, 0xb2, 0x6e, 0x5e, 0x04, - 0xf3, 0xc3, 0xe0, 0x2a, 0x2a, 0xae, 0x77, 0xa3, 0xc0, 0xa2, 0xff, 0xfc, - 0x2a, 0x2c, 0xca, 0x44, 0xdb, 0xe4, 0x8b, 0xf1, 0x79, 0x5d, 0x70, 0x34, - 0x2c, 0x7a, 0xef, 0xce, 0xc2, 0x2a, 0x7b, 0xeb, 0xdf, 0xd4, 0xb5, 0x47, - 0x0e, 0x23, 0x7c, 0x76, 0xf4, 0xe0, 0x65, 0x9f, 0x24, 0xb9, 0xd8, 0xde, - 0x96, 0x29, 0xd5, 0x10, 0x59, 0x4e, 0x27, 0x2b, 0x35, 0x46, 0x79, 0x51, - 0x3a, 0x1b, 0x4b, 0xde, 0x87, 0xcb, 0x61, 0x31, 0xe3, 0x8a, 0xc3, 0x88, - 0x2e, 0x70, 0x8d, 0x23, 0x7a, 0xc2, 0xc9, 0xb8, 0x2d, 0x08, 0xa0, 0x84, - 0x7a, 0x17, 0xef, 0x9b, 0x7c, 0xfe, 0xfb, 0x0c, 0x31, 0x36, 0x38, 0x68, - 0x9c, 0x85, 0x93, 0x4f, 0xfa, 0xa5, 0x5a, 0x7d, 0xa6, 0x39, 0xf2, 0xa0, - 0x0f, 0x7f, 0xe8, 0x99, 0xda, 0x03, 0xbf, 0xcd, 0x1c, 0xe9, 0x7b, 0x10, - 0xf2, 0x3c, 0xe2, 0x54, 0xb6, 0x10, 0x24, 0x20, 0xb3, 0x9b, 0xbe, 0xc6, - 0x08, 0x6e, 0xfb, 0xfe, 0x91, 0xb0, 0x94, 0xea, 0xb4, 0x65, 0xf5, 0x00, - 0x77, 0x3a, 0xc7, 0x12, 0xf6, 0x97, 0xc3, 0xad, 0x1e, 0x67, 0xd1, 0x63, - 0xab, 0x41, 0x1d, 0x62, 0x0f, 0x04, 0xb9, 0x6b, 0x36, 0xeb, 0x18, 0x63, - 0x47, 0x73, 0x56, 0x68, 0x50, 0x72, 0x76, 0xe6, 0x8c, 0xcf, 0x53, 0x8b, - 0x02, 0x0d, 0xd6, 0x53, 0x29, 0xab, 0x2c, 0x80, 0x1b, 0x27, 0x52, 0x5d, - 0x21, 0x67, 0x49, 0xde, 0xcb, 0xb2, 0x1b, 0x83, 0xde, 0xee, 0xa4, 0x99, - 0x90, 0xd6, 0xfd, 0x9b, 0x8b, 0xf1, 0x95, 0x7a, 0x57, 0x99, 0x76, 0xf2, - 0x6f, 0x01, 0xa4, 0xa9, 0x8d, 0xc1, 0xbb, 0x2a, 0xa4, 0x11, 0x3d, 0x5b, - 0xef, 0x7c, 0xdc, 0x6a, 0x0f, 0xdb, 0x4d, 0x32, 0x0d, 0xd5, 0x9b, 0xf6, - 0x0e, 0xf2, 0xa2, 0xcb, 0x7f, 0x01, 0x8c, 0x72, 0x86, 0xdc, 0xbc, 0x45, - 0x59, 0x03, 0x33, 0xc6, 0x71, 0x29, 0xc8, 0x40, 0x4e, 0xc1, 0x8d, 0x8f, - 0x77, 0xef, 0x4d, 0x4d, 0x81, 0xa5, 0x55, 0x2a, 0x18, 0xea, 0x89, 0x11, - 0x97, 0x17, 0x4e, 0xce, 0xec, 0xb8, 0x4b, 0x44, 0x2b, 0xde, 0x52, 0x54, - 0x51, 0xe6, 0x4c, 0x53, 0x40, 0xfe, 0xf8, 0x14, 0xb5, 0xb1, 0xd8, 0xb1, - 0x6c, 0x65, 0x20, 0xc2, 0x2d, 0x3a, 0xf6, 0x11, 0xa9, 0xb1, 0x22, 0x14, - 0x91, 0x03, 0x30, 0x5f, 0xef, 0xcf, 0xe7, 0x49, 0x2f, 0xcd, 0x55, 0xf6, - 0x95, 0x1d, 0xba, 0xd3, 0xdd, 0xc2, 0xd8, 0x96, 0x7d, 0x53, 0xc6, 0x9b, - 0xb3, 0x88, 0x5e, 0xd4, 0x62, 0xa8, 0x45, 0x41, 0xac, 0x41, 0x09, 0x71, - 0xb8, 0xb0, 0xd1, 0x69, 0xeb, 0xec, 0xbf, 0xa8, 0x1a, 0x10, 0x1d, 0x51, - 0x21, 0xed, 0x5f, 0x3e, 0x4c, 0xb1, 0x5f, 0x22, 0xa7, 0x79, 0x97, 0x73, - 0xfe, 0x67, 0xbe, 0x59, 0xe8, 0xbb, 0x73, 0x80, 0xc8, 0x47, 0xc3, 0x1d, - 0xc8, 0x4a, 0xc1, 0xbf, 0xde, 0x1d, 0xd6, 0x1e, 0x78, 0x23, 0xc0, 0x33, - 0x7f, 0xd7, 0xd8, 0x18, 0x54, 0xfb, 0x14, 0x4e, 0xfc, 0x11, 0x4e, 0xf4, - 0x24, 0x2c, 0xfe, 0xd3, 0x46, 0xfb, 0xc0, 0x92, 0x67, 0x81, 0xa8, 0x8b, - 0xfc, 0x31, 0x49, 0xef, 0x04, 0x34, 0x92, 0xd8, 0xa3, 0x06, 0xd7, 0xcb, - 0x67, 0x2f, 0x44, 0x7e, 0x0d, 0xff, 0x93, 0x8f, 0x54, 0xad, 0x03, 0xe8, - 0x6d, 0xb5, 0xec, 0x5d, 0x88, 0xf3, 0xcf, 0x22, 0xb8, 0x36, 0x51, 0xd5, - 0x55, 0x84, 0x49, 0x97, 0x97, 0x17, 0xb0, 0x43, 0x25, 0x16, 0x27, 0x35, - 0xe6, 0xae, 0x67, 0x70, 0x3c, 0x66, 0x83, 0x8d, 0x6d, 0x34, 0x23, 0xe5, - 0xb4, 0x23, 0x5c, 0x14, 0xb3, 0xf4, 0x1e, 0xbd, 0xe7, 0xdb, 0x76, 0x2b, - 0x86, 0x23, 0x16, 0xe2, 0x05, 0xcb, 0x31, 0x46, 0xb8, 0x1d, 0x56, 0xf6, - 0x32, 0x09, 0xb5, 0x63, 0x7c, 0xb0, 0x18, 0xe2, 0xd9, 0xc7, 0xd0, 0x2a, - 0xf8, 0x9c, 0x66, 0xa9, 0xaa, 0xcd, 0xd9, 0x08, 0xcb, 0x60, 0xd0, 0x08, - 0xfc, 0x90, 0xe2, 0x5a, 0x44, 0x9e, 0x91, 0xca, 0xe0, 0xfc, 0xdd, 0x87, - 0x74, 0xda, 0x0c, 0xdf, 0xe8, 0x62, 0x3f, 0x74, 0x8d, 0xb3, 0xce, 0x5d, - 0xd6, 0x27, 0x30, 0x98, 0xae, 0x65, 0x73, 0x92, 0x13, 0x5f, 0x19, 0xdd, - 0x29, 0x5f, 0x4e, 0x69, 0x6a, 0x71, 0x36, 0x08, 0xb8, 0xc3, 0x43, 0xd5, - 0xd8, 0xe4, 0x26, 0x86, 0x62, 0xf8, 0x2b, 0x0f, 0x92, 0x8c, 0xeb, 0x26, - 0x47, 0x00, 0xd2, 0x44, 0xc8, 0x52, 0xcf, 0x74, 0x20, 0xfd, 0xc1, 0x02, - 0x26, 0xd9, 0x16, 0xf3, 0x04, 0xbb, 0xae, 0x1f, 0x29, 0x14, 0x26, 0x65, - 0x46, 0x03, 0x61, 0x2e, 0xa0, 0xde, 0x3c, 0x98, 0xd6, 0xd0, 0x27, 0x0a, - 0x8a, 0x24, 0x01, 0xc8, 0xb3, 0x86, 0xfe, 0x0e, 0xb8, 0xf5, 0x73, 0x44, - 0x14, 0x79, 0xdb, 0x4f, 0x5c, 0x8a, 0xda, 0x64, 0x64, 0x19, 0xf6, 0xd3, - 0xfc, 0xa0, 0x7b, 0xf7, 0x92, 0x72, 0xd6, 0xa1, 0xca, 0x39, 0xcf, 0xa3, - 0xe9, 0xbd, 0x7a, 0x52, 0x6d, 0x64, 0xf0, 0x39, 0x0d, 0xc1, 0x8b, 0xdc, - 0xb5, 0x19, 0x3a, 0x4b, 0xdf, 0x7b, 0x8f, 0x9a, 0xbc, 0x6c, 0x68, 0x6a, - 0xd8, 0x29, 0x97, 0x67, 0xb7, 0x29, 0x9d, 0x1f, 0x47, 0x4a, 0x99, 0xe0, - 0x4a, 0x49, 0x1e, 0xc7, 0xdf, 0x47, 0x19, 0xc0, 0x66, 0xdf, 0x96, 0x3a, - 0x5a, 0x81, 0xbf, 0x39, 0x26, 0x91, 0x9c, 0x9a, 0x6d, 0xed, 0x91, 0xf5, - 0x6c, 0xcc, 0x0c, 0xe0, 0x7e, 0x7f, 0x0e, 0x2c, 0x89, 0xba, 0x6e, 0xf9, - 0xff, 0x79, 0x6e, 0x9e, 0x6b, 0xcc, 0x26, 0x6b, 0xee, 0x4f, 0x48, 0x15, - 0x78, 0x42, 0x49, 0xea, 0x11, 0x63, 0xd5, 0x76, 0xce, 0x0f, 0x8a, 0x85, - 0xe4, 0xf3, 0x7e, 0x1c, 0xcb, 0xdd, 0xba, 0xd4, 0xd5, 0x92, 0x52, 0xa9, - 0x38, 0x34, 0xb5, 0x4f, 0x67, 0x93, 0x8e, 0x42, 0xcc, 0xd7, 0x47, 0xda, - 0x4c, 0x85, 0x32, 0x11, 0xbb, 0xf1, 0x8d, 0x4c, 0x94, 0x7b, 0x71, 0x4a, - 0x68, 0x77, 0xe8, 0x1a, 0xf7, 0x1d, 0x0a, 0x26, 0x6d, 0x53, 0x06, 0xa3, - 0x45, 0x67, 0x82, 0xad, 0x24, 0xae, 0x48, 0x64, 0xe8, 0x79, 0xcd, 0x9c, - 0x48, 0x63, 0x82, 0x51, 0xbf, 0x3a, 0xfc, 0xfb, 0x67, 0x57, 0x8f, 0xa0, - 0x1e, 0xed, 0x97, 0x3e, 0xae, 0x30, 0x74, 0x1c, 0x0c, 0x1b, 0x3b, 0x8c, - 0xf9, 0xd1, 0x7b, 0x8d, 0x97, 0xfc, 0x55, 0xbf, 0x0c, 0xe9, 0x11, 0x9a, - 0x0a, 0xb1, 0xff, 0x01, 0xe1, 0xcc, 0x28, 0x08, 0x27, 0x96, 0x95, 0x3c, - 0xcc, 0x3c, 0x37, 0x37, 0x8a, 0x07, 0x3a, 0x1d, 0xf1, 0x05, 0x5e, 0x66, - 0x01, 0xec, 0xe3, 0x30, 0x86, 0x56, 0xc0, 0x91, 0x24, 0x89, 0xb7, 0x5a, - 0x9a, 0x60, 0x3f, 0x89, 0x6e, 0x3a, 0xaf, 0xf2, 0x17, 0x4b, 0x79, 0xdf, - 0x65, 0xd7, 0x02, 0x60, 0x3a, 0xd8, 0x39, 0x7a, 0x51, 0x24, 0x06, 0x2e, - 0xee, 0x8d, 0x65, 0x2f, 0x96, 0xfd, 0xee, 0x50, 0x11, 0x14, 0x9e, 0x12, - 0x9a, 0x6b, 0xf5, 0x20, 0xd4, 0x8f, 0xb9, 0x48, 0x8f, 0x83, 0x02, 0xef, - 0x47, 0xbb, 0x9c, 0x47, 0x87, 0x29, 0x27, 0xb3, 0x7a, 0xbe, 0x04, 0x73, - 0xbd, 0xe5, 0xcc, 0x3b, 0x1e, 0x52, 0x98, 0xa2, 0xd5, 0x0a, 0xbe, 0x1e, - 0x7e, 0x98, 0x48, 0x52, 0xf7, 0x5f, 0x02, 0x29, 0x6d, 0x2f, 0x20, 0x4a, - 0x73, 0x54, 0x10, 0xd9, 0xc2, 0x13, 0x8e, 0x79, 0xcd, 0x7c, 0x30, 0x9c, - 0x34, 0xb5, 0x38, 0x6e, 0x26, 0x18, 0xeb, 0xf7, 0xaf, 0xb4, 0x13, 0x25, - 0x0e, 0x6c, 0xc4, 0x53, 0x91, 0x12, 0x89, 0x64, 0xec, 0x51, 0x75, 0xc1, - 0xc6, 0x05, 0x74, 0x8d, 0x99, 0x3e, 0x3d, 0xe7, 0x97, 0xbc, 0x27, 0x09, - 0x42, 0xde, 0xd3, 0xf2, 0xe4, 0x59, 0xe5, 0xfa, 0x38, 0x76, 0x7a, 0xd7, - 0x64, 0x22, 0x22, 0x77, 0x5d, 0xbe, 0x45, 0x63, 0x80, 0x3a, 0xb2, 0x92, - 0x30, 0xb6, 0x8e, 0x38, 0x54, 0x7d, 0xc2, 0x37, 0x48, 0x7f, 0x07, 0xbf, - 0xcf, 0x50, 0x5e, 0x0c, 0xf0, 0xb3, 0x53, 0x47, 0x45, 0x8e, 0x64, 0x72, - 0x70, 0x16, 0xd9, 0xef, 0x67, 0xea, 0x81, 0x3e, 0xe1, 0x15, 0xe0, 0xcd, - 0x5e, 0x7c, 0x8e, 0x74, 0xc2, 0x17, 0xc8, 0xb1, 0x21, 0x6b, 0x3a, 0x27, - 0xc4, 0xd6, 0xb7, 0x37, 0x99, 0xf7, 0x5e, 0x30, 0xeb, 0xb0, 0xd4, 0x80, - 0x9b, 0x0c, 0x6b, 0xe8, 0xf0, 0xe3, 0x7d, 0x97, 0x34, 0x6c, 0x1b, 0xe1, - 0x03, 0x51, 0xdf, 0x1d, 0x1c, 0x58, 0xb8, 0x26, 0x5f, 0x7d, 0x0f, 0xba, - 0x4c, 0xf6, 0xe1, 0x54, 0xd5, 0x1e, 0x08, 0x9e, 0x90, 0x77, 0x81, 0x47, - 0xe2, 0x9e, 0xff, 0xce, 0x47, 0x61, 0x3b, 0x3b, 0x31, 0xf9, 0xa0, 0x86, - 0x5c, 0x9f, 0xb3, 0x14, 0x92, 0xac, 0xa4, 0xf9, 0x72, 0x02, 0x80, 0x01, - 0x39, 0x50, 0x49, 0x2a, 0x35, 0x86, 0x60, 0x85, 0x55, 0xd2, 0xc4, 0xc9, - 0x99, 0x6a, 0x42, 0x61, 0x06, 0x7c, 0xa4, 0xba, 0x8b, 0x5d, 0x3e, 0x3e, - 0x2e, 0xb2, 0x68, 0xe1, 0x60, 0x96, 0xe5, 0x41, 0x19, 0x26, 0x5f, 0xc7, - 0x9f, 0xa5, 0xe0, 0x50, 0x9e, 0x76, 0x1e, 0xe1, 0x56, 0xb7, 0xa0, 0x3c, - 0x4a, 0xcc, 0x2b, 0x20, 0x87, 0x2a, 0x93, 0x01, 0xb3, 0x59, 0x58, 0x6d, - 0xbb, 0x4b, 0x69, 0xb1, 0xcb, 0x91, 0x2d, 0xec, 0xea, 0x40, 0xba, 0x5b, - 0x39, 0xd7, 0x15, 0x41, 0xd2, 0x62, 0xcd, 0xb2, 0x6d, 0xe8, 0x52, 0xa5, - 0x7c, 0xe8, 0x99, 0xe6, 0xbf, 0x0a, 0xd1, 0x0b, 0x75, 0x63, 0xb9, 0x6b, - 0x7e, 0x5a, 0x74, 0x01, 0x46, 0x7d, 0x19, 0xe1, 0x4e, 0x0b, 0xf3, 0x52, - 0xb8, 0x7d, 0x1a, 0x1e, 0x47, 0x75, 0x01, 0xce, 0xb9, 0xa1, 0x15, 0x00, - 0xad, 0x6d, 0x54, 0x6d, 0xa3, 0x92, 0xea, 0x21, 0xad, 0x0a, 0x7f, 0x15, - 0xea, 0x79, 0x1d, 0xdd, 0xfc, 0xdd, 0x3a, 0x33, 0x1a, 0xe4, 0x16, 0x2f, - 0x2f, 0x64, 0xdf, 0xbc, 0x4c, 0x04, 0x5b, 0x7b, 0x6a, 0x83, 0x1e, 0x19, - 0x9f, 0x7a, 0x1b, 0xde, 0xb5, 0x4f, 0xc0, 0x74, 0x83, 0x09, 0x00, 0x03, - 0x83, 0x24, 0x6e, 0xf4, 0x6e, 0x2e, 0xb2, 0x69, 0x38, 0xda, 0x3c, 0xb7, - 0x31, 0x50, 0x72, 0x00, 0xce, 0x4b, 0x44, 0xd5, 0xf3, 0xcf, 0x15, 0x43, - 0x39, 0x88, 0x16, 0xd4, 0xac, 0x59, 0x1f, 0xfa, 0x42, 0x65, 0x3a, 0x1f, - 0xbf, 0x9a, 0x80, 0xb7, 0x10, 0xe7, 0xdb, 0xa2, 0x8e, 0x51, 0xed, 0xbc, - 0xfa, 0xc8, 0xd7, 0xb2, 0xe8, 0xc2, 0xe2, 0x56, 0x9a, 0xe9, 0x15, 0x6b, - 0x29, 0x11, 0x8c, 0xf5, 0x8b, 0x8b, 0x73, 0x71, 0xe6, 0x56, 0x32, 0xa1, - 0xeb, 0xa1, 0x51, 0x05, 0x8f, 0xc3, 0x77, 0x4b, 0x3c, 0x5a, 0xf9, 0x20, - 0xbb, 0xf0, 0xd5, 0x4f, 0x52, 0xfe, 0x06, 0xc3, 0x35, 0x37, 0x1e, 0x9b, - 0x4e, 0x07, 0xf8, 0x37, 0x7e, 0xad, 0x25, 0xbc, 0x8a, 0xe6, 0x29, 0x93, - 0x3e, 0xd1, 0x23, 0xd2, 0xc7, 0xce, 0x69, 0xac, 0x24, 0x43, 0x6e, 0x3d, - 0xc5, 0x4d, 0xea, 0xe0, 0xb0, 0xde, 0x9e, 0x1f, 0x34, 0xd5, 0xa7, 0x35, - 0xc7, 0xd4, 0x2b, 0xf2, 0x1b, 0x38, 0xb7, 0x33, 0x69, 0x63, 0xec, 0x09, - 0x1a, 0x11, 0xb2, 0xdd, 0x7b, 0x6a, 0x5f, 0x17, 0x1a, 0x84, 0x55, 0xb5, - 0x06, 0x61, 0x7c, 0x13, 0xb2, 0xdd, 0xcf, 0x01, 0xd0, 0x8f, 0x4d, 0xf1, - 0x87, 0xd8, 0x6f, 0x17, 0x7c, 0x8d, 0xac, 0x29, 0xeb, 0x88, 0x7c, 0x69, - 0x27, 0xcc, 0xa9, 0x2e, 0x25, 0x1c, 0x81, 0xbb, 0xcd, 0x2c, 0x22, 0x55, - 0x16, 0xce, 0x1d, 0xa7, 0x6a, 0x72, 0x59, 0xca, 0xb6, 0xf2, 0x13, 0x29, - 0x1f, 0xc7, 0xc9, 0x11, 0x77, 0xd8, 0x3b, 0x16, 0x7f, 0x25, 0xdf, 0x96, - 0x22, 0xae, 0x19, 0xd7, 0xbf, 0xd8, 0x37, 0xa6, 0x7f, 0x43, 0x67, 0x00, - 0x8c, 0xbf, 0xe7, 0xa0, 0x7d, 0x63, 0x1a, 0xe5, 0xb0, 0xf8, 0x1a, 0x8d, - 0x3d, 0x44, 0xcf, 0xd6, 0xb8, 0x70, 0x74, 0xba, 0x07, 0xe6, 0x7d, 0x0d, - 0xb5, 0x55, 0x11, 0x23, 0xfb, 0x7c, 0x6e, 0x51, 0xbd, 0x82, 0xef, 0xc4, - 0xb8, 0x63, 0x95, 0xee, 0x53, 0x17, 0xe4, 0x64, 0x2b, 0x69, 0x9c, 0x29, - 0xf9, 0x8d, 0xb4, 0x5e, 0x68, 0x69, 0x11, 0xe6, 0xcb, 0x6a, 0xe5, 0x46, - 0xd4, 0x64, 0xf9, 0xd9, 0x78, 0x2a, 0xbe, 0xf2, 0x87, 0xab, 0x6f, 0x69, - 0xba, 0xd7, 0x5f, 0x7f, 0x68, 0x5f, 0xc5, 0x4f, 0x27, 0xa5, 0xec, 0x49, - 0x56, 0x58, 0x5e, 0xfd, 0xab, 0xa6, 0x63, 0x54, 0xb1, 0x69, 0x3b, 0xbe, - 0xf2, 0x07, 0x2b, 0x7c, 0xc5, 0xe5, 0xbe, 0x07, 0x00, 0x38, 0x52, 0x4e, - 0xbe, 0x33, 0xf4, 0x11, 0x6d, 0x96, 0x23, 0x8e, 0xc7, 0xe7, 0x5a, 0x74, - 0x2c, 0xae, 0x27, 0x11, 0xd6, 0xd5, 0x38, 0xd7, 0xde, 0x9d, 0xe4, 0x41, - 0x0e, 0x57, 0xbc, 0xbf, 0xef, 0xf4, 0x97, 0x13, 0x86, 0xd5, 0xdb, 0x1d, - 0x11, 0xb0, 0xc9, 0x7d, 0xf7, 0x68, 0x56, 0xd3, 0x08, 0x8b, 0x46, 0x28, - 0x78, 0x0c, 0xd3, 0xda, 0xda, 0x94, 0x86, 0x48, 0x81, 0x17, 0x31, 0x38, - 0xb2, 0xfb, 0x87, 0x31, 0x02, 0x01, 0x6c, 0x1b, 0xc2, 0x88, 0x1a, 0xc0, - 0xdf, 0x42, 0x37, 0x94, 0x56, 0x84, 0xa7, 0xef, 0x22, 0x37, 0x58, 0xa0, - 0xca, 0xc7, 0x3b, 0x5a, 0x8c, 0x23, 0xc0, 0x8e, 0xb5, 0x7c, 0x25, 0x18, - 0xab, 0xae, 0x2b, 0xdc, 0x6c, 0xaa, 0x58, 0x10, 0x1f, 0xde, 0xef, 0x26, - 0x58, 0x3b, 0x40, 0xcd, 0x58, 0x14, 0x97, 0xcb, 0xb1, 0x59, 0x08, 0xb8, - 0xa8, 0xad, 0x86, 0x50, 0x66, 0x27, 0x3e, 0x12, 0x1e, 0x99, 0xad, 0x3f, - 0x8d, 0x2e, 0xbf, 0xf2, 0x6d, 0xf9, 0xc5, 0x2d, 0xfb, 0xaf, 0xe5, 0x36, - 0x77, 0x98, 0xff, 0x61, 0x07, 0x65, 0xcd, 0x00, 0x5a, 0x9c, 0x30, 0x5e, - 0x17, 0x79, 0xdc, 0x3f, 0xfc, 0x1c, 0x81, 0x31, 0x04, 0x95, 0xdc, 0x76, - 0xd6, 0xff, 0x51, 0x8b, 0xbc, 0xec, 0xe6, 0x0a, 0xb2, 0x20, 0x55, 0xa2, - 0x9e, 0x8e, 0xc2, 0x84, 0x92, 0xd3, 0xdc, 0xe2, 0x11, 0x7e, 0x20, 0x76, - 0xfa, 0xc2, 0x56, 0x80, 0x91, 0x4c, 0xec, 0x72, 0xf7, 0x1a, 0x61, 0x04, - 0xc5, 0x20, 0xaa, 0xdb, 0xfb, 0x29, 0x5d, 0x4e, 0x3a, 0xf1, 0xf6, 0x77, - 0xfc, 0x43, 0xf0, 0xb6, 0x08, 0x8c, 0xd5, 0xbc, 0x93, 0xe8, 0x49, 0x68, - 0x3f, 0x77, 0x6e, 0xcd, 0x8e, 0x97, 0xe7, 0xff, 0x61, 0x00, 0x46, 0x40, - 0x4e, 0xad, 0x12, 0x79, 0x12, 0x53, 0x4a, 0x56, 0x1c, 0x90, 0x5c, 0x4d, - 0x68, 0xeb, 0x1c, 0x81, 0x9d, 0xde, 0x4d, 0xc8, 0x95, 0x60, 0x31, 0x17, - 0xa5, 0xf5, 0xc0, 0xb0, 0x17, 0xcb, 0x4f, 0xf5, 0x8e, 0x76, 0x4e, 0x47, - 0xbc, 0x06, 0x51, 0x97, 0xea, 0x35, 0x91, 0xe1, 0x7b, 0x43, 0x02, 0x8d, - 0x89, 0x94, 0xc6, 0x25, 0xee, 0x2c, 0x49, 0x57, 0x9a, 0xb2, 0x3b, 0x97, - 0xcf, 0xb6, 0xac, 0x81, 0x0b, 0x0b, 0x2c, 0x7d, 0x80, 0xf2, 0xab, 0xe0, - 0xe5, 0x8d, 0xa2, 0xbf, 0x6b, 0x34, 0x8a, 0x66, 0x86, 0xb7, 0x94, 0x22, - 0x58, 0x8a, 0x41, 0x7a, 0xc7, 0x95, 0x15, 0x53, 0xe1, 0x1d, 0xac, 0x3a, - 0x17, 0xdf, 0x3f, 0xcb, 0x42, 0xbf, 0x84, 0x8f, 0x2c, 0xe5, 0xca, 0xb4, - 0x37, 0x9f, 0xb9, 0x7f, 0x5b, 0x4f, 0x7f, 0x69, 0x79, 0x6d, 0xd9, 0xfb, - 0xc3, 0xd3, 0xdc, 0x46, 0x04, 0xda, 0x8e, 0xf8, 0xaf, 0x33, 0x32, 0x0c, - 0x0a, 0xa6, 0xe0, 0x7c, 0x24, 0x76, 0x02, 0x97, 0xad, 0x02, 0x2c, 0x14, - 0x05, 0xf5, 0x6a, 0x48, 0x05, 0x15, 0x1d, 0xbd, 0xfe, 0x0c, 0xb0, 0xdc, - 0x10, 0x48, 0xa7, 0xb4, 0xa2, 0xd5, 0xeb, 0x25, 0x6e, 0x02, 0xc8, 0x63, - 0xe3, 0x28, 0xf5, 0x9e, 0x88, 0x18, 0x9a, 0x66, 0xb4, 0x13, 0x30, 0x2c, - 0x53, 0x5d, 0x37, 0xc8, 0x9f, 0x49, 0xf8, 0xc2, 0xcb, 0x93, 0x2c, 0xd9, - 0xc0, 0x03, 0xb2, 0x8c, 0xbc, 0xc3, 0xfd, 0x37, 0xef, 0xa5, 0x58, 0x4b, - 0x76, 0xcd, 0x08, 0x99, 0xec, 0xed, 0x6b, 0xf6, 0x1b, 0x2e, 0xae, 0xff, - 0x8e, 0xff, 0x7c, 0x71, 0x76, 0xbc, 0x30, 0xcb, 0xc5, 0x10, 0x75, 0x07, - 0xb2, 0x2f, 0x18, 0xf1, 0x8a, 0x4a, 0x8f, 0x28, 0x58, 0x6a, 0xd4, 0xdc, - 0x14, 0x1c, 0x80, 0xdc, 0x8b, 0xa5, 0x6a, 0x1e, 0xdb, 0xe1, 0x16, 0x2e, - 0x30, 0x4f, 0x62, 0xe8, 0xa1, 0xf1, 0x04, 0x92, 0xf8, 0x58, 0x64, 0xfe, - 0x13, 0xac, 0xe6, 0x7d, 0xe8, 0xe1, 0x78, 0xba, 0x53, 0xd0, 0x50, 0xc9, - 0x15, 0xa9, 0xb6, 0x33, 0x48, 0xe5, 0x9e, 0xde, 0x3f, 0x0b, 0x8c, 0x3e, - 0x08, 0xf6, 0x4e, 0xc7, 0x9d, 0xd3, 0x45, 0x39, 0x77, 0x7c, 0x3b, 0xe2, - 0x28, 0x88, 0x38, 0x8e, 0xe1, 0xc8, 0x8d, 0xb4, 0x93, 0x84, 0xfb, 0x1b, - 0x14, 0xc9, 0xf1, 0xa0, 0xc9, 0x24, 0xc8, 0xd5, 0x1a, 0x45, 0xae, 0x67, - 0xc9, 0x64, 0xa8, 0x06, 0x28, 0xb4, 0x61, 0x9d, 0x17, 0x58, 0x0b, 0x43, - 0x09, 0x93, 0x96, 0xb4, 0x37, 0x95, 0xf1, 0x5d, 0x24, 0x02, 0xd6, 0xda, - 0xf6, 0x21, 0xea, 0xa8, 0x8b, 0x9e, 0x8d, 0xa9, 0xc2, 0x93, 0x67, 0x43, - 0x61, 0x1f, 0x95, 0xaa, 0x1f, 0x00, 0xf8, 0x68, 0x7a, 0xe9, 0x7f, 0xe8, - 0x88, 0x87, 0x94, 0xb4, 0x8a, 0x3c, 0x3f, 0x92, 0xbb, 0x4c, 0xd4, 0x76, - 0xee, 0x47, 0xc8, 0x6d, 0x21, 0xe3, 0x77, 0x89, 0x18, 0x21, 0xdb, 0x24, - 0xfa, 0x41, 0x20, 0x6d, 0x60, 0x62, 0x63, 0xe8, 0x2c, 0xb0, 0x86, 0x33, - 0x22, 0x72, 0x2c, 0xa8, 0x8b, 0x66, 0xf3, 0x2f, 0xe2, 0x16, 0x5b, 0x3b, - 0xb8, 0x64, 0xe6, 0x0b, 0xf7, 0x31, 0x5f, 0xdb, 0xd2, 0x13, 0x44, 0xe7, - 0x28, 0xb2, 0x50, 0xe2, 0x48, 0x6b, 0xf7, 0x7d, 0x4a, 0x68, 0x88, 0x74, - 0x8d, 0x5a, 0x05, 0x21, 0xbe, 0x3e, 0xc7, 0x68, 0x5b, 0xa6, 0x73, 0xff, - 0xda, 0x02, 0x01, 0x47, 0x1f, 0x34, 0x1c, 0x61, 0x97, 0x8c, 0x22, 0xe7, - 0x16, 0x52, 0x63, 0x6c, 0xaf, 0x49, 0xf5, 0x58, 0xbe, 0x8c, 0x77, 0xaa, - 0xcc, 0xb2, 0x5f, 0x79, 0xb8, 0x0d, 0x42, 0xdc, 0x50, 0x52, 0xe0, 0x62, - 0xdc, 0xe3, 0xa4, 0x53, 0x11, 0x60, 0x0f, 0x0d, 0xdc, 0x85, 0x04, 0xf1, - 0xd3, 0x49, 0xfb, 0x95, 0x43, 0xd3, 0x3a, 0xcc, 0xf0, 0x82, 0x12, 0xb6, - 0x2e, 0x11, 0x1e, 0x6e, 0x21, 0xec, 0x95, 0xb9, 0x12, 0x26, 0x7f, 0xa4, - 0xd2, 0x6a, 0xae, 0x49, 0xaf, 0x3c, 0x3a, 0xa9, 0x3a, 0xdb, 0xdd, 0x86, - 0x21, 0x6c, 0x89, 0x12, 0xa6, 0x6b, 0x83, 0x45, 0xb7, 0xa4, 0x27, 0x84, - 0xf6, 0xb1, 0x7a, 0x68, 0x7d, 0x15, 0x6e, 0x94, 0xb8, 0xc0, 0x75, 0x92, - 0xf6, 0x48, 0x6b, 0x66, 0x59, 0x7b, 0x1c, 0xc4, 0x1b, 0xc4, 0x0a, 0xf2, - 0x33, 0x3c, 0x97, 0x40, 0x4f, 0xa7, 0x25, 0xd3, 0x74, 0x37, 0x10, 0x22, - 0x67, 0x73, 0x6f, 0x86, 0x29, 0x7c, 0x14, 0xb3, 0x50, 0x1e, 0x6d, 0x4e, - 0xae, 0xfd, 0x36, 0x8b, 0x77, 0xf1, 0xbe, 0xb4, 0xd8, 0xc3, 0x21, 0x1e, - 0x77, 0xcf, 0xd8, 0xbb, 0x94, 0xbe, 0xb2, 0xdf, 0xb2, 0xf1, 0x09, 0x05, - 0x7a, 0x52, 0x92, 0x33, 0xcd, 0x60, 0x4c, 0xab, 0x42, 0xbd, 0x82, 0x1c, - 0x5e, 0x92, 0xa8, 0x8b, 0x76, 0x65, 0x59, 0x7f, 0x93, 0x1a, 0xc1, 0x5c, - 0xf1, 0x80, 0xc3, 0xb7, 0x02, 0x98, 0x85, 0xf9, 0xed, 0x7c, 0x5d, 0x59, - 0xcd, 0x91, 0x28, 0x02, 0x01, 0xca, 0x85, 0x80, 0x65, 0xab, 0x26, 0xcb, - 0xb3, 0xf2, 0x23, 0x53, 0x58, 0xca, 0xf8, 0xcd, 0x88, 0x05, 0xa5, 0x0f, - 0x6c, 0x5d, 0x7f, 0x1a, 0xb9, 0x04, 0xea, 0xc6, 0xac, 0xf4, 0x2d, 0x22, - 0xc8, 0x2b, 0xf5, 0x10, 0x8d, 0x4e, 0x9e, 0x6a, 0xb2, 0xd8, 0x67, 0x4a, - 0xaf, 0xae, 0x42, 0x9d, 0xe8, 0x6c, 0x8e, 0x24, 0xa6, 0xfe, 0x13, 0xb9, - 0xc6, 0x1a, 0x55, 0x37, 0x00, 0xf0, 0xd9, 0x6e, 0xbb, 0x97, 0xb7, 0x5f, - 0xa0, 0xf5, 0x95, 0x2b, 0x51, 0xaf, 0x80, 0xb5, 0xd5, 0xfa, 0x90, 0x79, - 0x26, 0x03, 0x33, 0xae, 0xf2, 0x52, 0xa5, 0xc0, 0xc2, 0xd8, 0xc3, 0x4e, - 0x64, 0xfc, 0x2c, 0xaf, 0x9c, 0xf9, 0x18, 0x33, 0x80, 0xaa, 0xaf, 0x6e, - 0x18, 0x53, 0xb2, 0x3c, 0x57, 0xa9, 0xd4, 0xa0, 0x3d, 0x86, 0x68, 0x1c, - 0xf0, 0x25, 0x91, 0x56, 0x60, 0x28, 0x69, 0x72, 0xc0, 0x38, 0x3c, 0xa2, - 0x35, 0x7a, 0xe4, 0x58, 0xaa, 0xfd, 0xe0, 0xf0, 0xa6, 0xfa, 0xa1, 0x7c, - 0xba, 0x24, 0x79, 0x5b, 0xe3, 0x3e, 0x7d, 0x3d, 0x07, 0x20, 0xb0, 0x3a, - 0x0b, 0xdd, 0x68, 0x32, 0xc5, 0x53, 0x87, 0x63, 0x94, 0x82, 0xd4, 0x3c, - 0x76, 0xc5, 0x72, 0x61, 0x69, 0x43, 0xe2, 0x1f, 0xf1, 0x5f, 0x11, 0xc8, - 0x13, 0x32, 0x65, 0xd3, 0xda, 0xe7, 0xab, 0x24, 0x5f, 0x17, 0xc4, 0x15, - 0xc8, 0x62, 0xb8, 0xa1, 0x37, 0xc2, 0xf2, 0x8f, 0x3b, 0xde, 0x47, 0xbf, - 0x51, 0xba, 0x85, 0x08, 0xfb, 0x9a, 0x5a, 0xff, 0x70, 0x98, 0xb0, 0xa0, - 0x03, 0xc1, 0x66, 0xe3, 0xc5, 0x45, 0xda, 0x81, 0xc4, 0x51, 0x8f, 0xa6, - 0x59, 0xd7, 0x80, 0x87, 0x5c, 0xdf, 0xb1, 0x06, 0x99, 0x54, 0xab, 0x32, - 0xb0, 0x89, 0xd9, 0x9b, 0x6e, 0x52, 0xa0, 0x06, 0x01, 0x3a, 0x69, 0x13, - 0x22, 0xea, 0xd8, 0x1c, 0x84, 0xa6, 0xfd, 0x79, 0x81, 0xc7, 0xbb, 0xca, - 0x52, 0xf6, 0xbd, 0x8b, 0xf1, 0x31, 0xf4, 0x45, 0x5d, 0xbb, 0xba, 0xb3, - 0x10, 0x72, 0x7b, 0xda, 0x76, 0x56, 0xab, 0x93, 0xe0, 0x0a, 0xe8, 0x76, - 0xf8, 0x27, 0x6b, 0xc4, 0xb3, 0x14, 0x45, 0xf1, 0xf1, 0x88, 0x9f, 0xac, - 0x6b, 0xc1, 0x92, 0xb7, 0x94, 0xc8, 0xed, 0xb4, 0x1b, 0xdb, 0x91, 0xbc, - 0xf3, 0x0b, 0x41, 0xff, 0x1e, 0xee, 0x06, 0xad, 0x34, 0x77, 0x33, 0xc1, - 0xbc, 0x58, 0xa7, 0x31, 0x03, 0x27, 0x89, 0x6c, 0xc5, 0x07, 0xcd, 0x3b, - 0x8d, 0x75, 0xce, 0x28, 0x71, 0x02, 0xb5, 0xa9, 0x72, 0xd8, 0xb7, 0xeb, - 0x92, 0x91, 0xbc, 0x58, 0xa0, 0xf6, 0x5b, 0x4a, 0x54, 0x77, 0x53, 0x58, - 0x2d, 0x7c, 0xa7, 0x29, 0x03, 0x0b, 0xdb, 0xc3, 0xd8, 0x16, 0xce, 0x37, - 0x22, 0xee, 0x27, 0x2f, 0x1c, 0xcc, 0x67, 0x44, 0x00, 0x0b, 0x51, 0x35, - 0x8e, 0x65, 0x48, 0xad, 0xcc, 0x47, 0x44, 0x2e, 0x8c, 0x03, 0x4f, 0x3d, - 0xc9, 0xa5, 0x54, 0x06, 0x14, 0xe5, 0x7c, 0x31, 0x42, 0x63, 0x57, 0xee, - 0xf5, 0x6b, 0x6c, 0xa2, 0xf4, 0xfd, 0x4d, 0x4f, 0xf0, 0x1e, 0xf7, 0x2c, - 0x52, 0x31, 0x88, 0xba, 0x83, 0x80, 0xa5, 0xd1, 0x12, 0x50, 0x89, 0x07, - 0xbe, 0xe6, 0x2b, 0xc6, 0xbe, 0xec, 0x26, 0xb0, 0x76, 0xc7, 0xcf, 0x6a, - 0xd7, 0x14, 0x77, 0xcc, 0x70, 0xa2, 0xd0, 0xd2, 0x76, 0x91, 0x59, 0x51, - 0x51, 0x8a, 0xd6, 0x24, 0x7b, 0x2c, 0xfa, 0xcb, 0x3d, 0xae, 0xe7, 0x0b, - 0xf6, 0x5c, 0xaa, 0xce, 0x43, 0x3a, 0xdb, 0x38, 0x65, 0x83, 0xd6, 0xc3, - 0x29, 0x88, 0x7c, 0x05, 0x20, 0x64, 0xc2, 0x61, 0x97, 0xd1, 0xae, 0x7d, - 0x2d, 0x74, 0x38, 0x16, 0xa6, 0x40, 0x9e, 0x28, 0xab, 0xef, 0x9e, 0xc5, - 0xf6, 0x66, 0xee, 0xde, 0x24, 0xae, 0x87, 0xf2, 0x75, 0xe0, 0xf0, 0x8b, - 0xd7, 0x2e, 0xe8, 0x31, 0xe2, 0xca, 0x98, 0x8c, 0x54, 0x34, 0xdc, 0x86, - 0x9d, 0xd3, 0xbe, 0xbe, 0xbb, 0xc5, 0x87, 0xb7, 0x85, 0x7f, 0xa0, 0x79, - 0xad, 0xa1, 0xc5, 0xbe, 0xf1, 0x9a, 0x74, 0xb5, 0x53, 0x28, 0x8b, 0x90, - 0xb8, 0x41, 0xcc, 0x95, 0x7d, 0x57, 0xec, 0xd3, 0xfc, 0x9f, 0xaa, 0xbf, - 0x28, 0x86, 0x52, 0x89, 0x36, 0xa5, 0x68, 0xce, 0xe9, 0x13, 0xc4, 0x9d, - 0xa3, 0x52, 0xe2, 0xf6, 0xa7, 0x5a, 0xe4, 0x2e, 0x65, 0x55, 0x12, 0x29, - 0xb7, 0x89, 0x80, 0x6e, 0x49, 0xb5, 0x0c, 0x1a, 0x21, 0x20, 0xf0, 0xac, - 0x60, 0x94, 0xe6, 0x95, 0xaf, 0xd2, 0xe2, 0xb9, 0x5f, 0x43, 0x08, 0x30, - 0xe5, 0xe1, 0x99, 0x37, 0x59, 0x73, 0x2b, 0x7d, 0x93, 0x53, 0x1c, 0xad, - 0xb0, 0xef, 0x78, 0x4e, 0xe7, 0x74, 0xe1, 0xa5, 0x39, 0x48, 0x41, 0x65, - 0x00, 0xa4, 0x94, 0x99, 0x46, 0x91, 0xf9, 0xc5, 0xeb, 0xe4, 0x6c, 0xa7, - 0xed, 0x02, 0x89, 0xa5, 0x6d, 0xa8, 0x46, 0x8a, 0xab, 0xae, 0xdf, 0xc7, - 0xfd, 0xf4, 0x75, 0x06, 0xe9, 0x70, 0xf1, 0x72, 0xd7, 0x9b, 0x51, 0x74, - 0xcc, 0xc5, 0xf5, 0x24, 0x31, 0x09, 0xe1, 0x8d, 0x77, 0x97, 0x54, 0x77, - 0xca, 0x79, 0x14, 0xb3, 0x89, 0x46, 0xed, 0xe8, 0x0b, 0xb2, 0xf5, 0xc4, - 0x7a, 0x76, 0xd9, 0x9a, 0x3a, 0x96, 0x6f, 0x29, 0x7e, 0x44, 0xdf, 0x0f, - 0x74, 0x69, 0x55, 0x6c, 0x75, 0x15, 0x6b, 0x21, 0xe1, 0xae, 0xe5, 0x20, - 0x55, 0xab, 0xb5, 0xa2, 0x57, 0xdc, 0x8f, 0xa1, 0xc9, 0x15, 0x47, 0x91, - 0x51, 0xff, 0xad, 0xc8, 0x5d, 0x6e, 0x67, 0x92, 0x95, 0x6e, 0xcd, 0x67, - 0x86, 0xe2, 0x8f, 0xa0, 0x84, 0x0e, 0x51, 0x5d, 0xd9, 0x16, 0x46, 0xf6, - 0x57, 0x85, 0x11, 0xd1, 0xbc, 0xd2, 0x5f, 0xa2, 0xc9, 0x01, 0x56, 0x37, - 0xd5, 0x16, 0x77, 0x79, 0x58, 0xca, 0xcf, 0x24, 0x64, 0x5a, 0xc2, 0x54, - 0x1f, 0xd4, 0xcf, 0x1b, 0x17, 0x4f, 0xd2, 0xc6, 0xab, 0xb1, 0xf6, 0x96, - 0x54, 0x37, 0x7d, 0x78, 0x8f, 0xab, 0x2e, 0x33, 0x81, 0x8d, 0x9a, 0xb0, - 0xc0, 0x5e, 0x3c, 0x91, 0x7a, 0x47, 0xfc, 0xc1, 0x7f, 0x3b, 0xe3, 0x23, - 0x43, 0xd4, 0xa0, 0x52, 0xff, 0x6f, 0x77, 0x0f, 0x42, 0x44, 0x06, 0x4c, - 0x92, 0xed, 0x94, 0x86, 0x68, 0xdb, 0x03, 0x16, 0x16, 0xf5, 0xc5, 0x94, - 0xad, 0xe2, 0x87, 0xf5, 0x87, 0x6b, 0x95, 0xbc, 0xea, 0x38, 0xb8, 0x89, - 0x9b, 0xd9, 0xcc, 0x61, 0xe0, 0x57, 0x6d, 0x1b, 0x33, 0x2c, 0x9a, 0x9a, - 0x98, 0xcc, 0x8e, 0xad, 0x85, 0x72, 0xcd, 0xde, 0x94, 0x77, 0x76, 0x6d, - 0x84, 0x6f, 0x49, 0xea, 0x95, 0xe8, 0xb8, 0xfc, 0xb8, 0xdd, 0x96, 0x5b, - 0x8f, 0x77, 0xc9, 0xc4, 0x91, 0x53, 0x59, 0x84, 0x4a, 0x1d, 0x72, 0xa3, - 0x4b, 0x51, 0xb5, 0xd5, 0x09, 0xc6, 0x01, 0xf2, 0x85, 0x2d, 0x43, 0xb5, - 0xb1, 0xe8, 0x55, 0x9f, 0x59, 0x80, 0x5b, 0xd3, 0xf4, 0x84, 0x0c, 0x81, - 0xbf, 0xcf, 0xa3, 0x72, 0xbb, 0xe2, 0x03, 0x99, 0x1e, 0x70, 0x83, 0x4f, - 0xe7, 0x58, 0xa8, 0xb5, 0x28, 0x58, 0xaa, 0x97, 0x9f, 0x54, 0xb3, 0x51, - 0x94, 0x4c, 0x35, 0x71, 0xb6, 0xf0, 0x62, 0xfe, 0x53, 0xee, 0xc3, 0xf2, - 0x6b, 0x28, 0xf4, 0x52, 0x24, 0x1e, 0xb0, 0xe5, 0x3e, 0x86, 0xcd, 0x69, - 0x30, 0xda, 0x87, 0x07, 0x72, 0xc4, 0x0e, 0x18, 0xb4, 0x59, 0xd4, 0xb4, - 0x0d, 0xc5, 0x62, 0x18, 0xaa, 0x4b, 0xcf, 0x7e, 0xca, 0x1f, 0x6d, 0xb9, - 0xe5, 0xaf, 0x7c, 0x05, 0x09, 0x24, 0xdd, 0xba, 0x18, 0x29, 0x57, 0x89, - 0x85, 0xaa, 0xe9, 0x03, 0x82, 0xfa, 0xf7, 0x0f, 0x38, 0x6d, 0x0c, 0xda, - 0xf2, 0x31, 0x2e, 0x43, 0xa9, 0x92, 0xae, 0x11, 0x06, 0xb2, 0x67, 0xf6, - 0x2f, 0x73, 0x16, 0xed, 0x97, 0xcb, 0x11, 0xba, 0x6a, 0x83, 0xde, 0x3d, - 0xab, 0xd3, 0x20, 0x0f, 0x7f, 0xd8, 0x01, 0x33, 0x45, 0x8b, 0xf0, 0x70, - 0x77, 0x30, 0xe5, 0x98, 0x7d, 0x29, 0xc0, 0xce, 0xf8, 0x49, 0x61, 0x97, - 0x6e, 0x12, 0xa0, 0x85, 0x09, 0x1b, 0x43, 0x19, 0xd7, 0x79, 0xf8, 0x94, - 0x06, 0xe0, 0xc6, 0xd4, 0x46, 0xd1, 0x6f, 0x5d, 0xcf, 0xb5, 0x53, 0xf6, - 0x56, 0x6c, 0x8c, 0xbb, 0x95, 0x4e, 0xbb, 0x41, 0x01, 0x58, 0xf4, 0x9b, - 0x79, 0x9a, 0xba, 0xaf, 0x11, 0xa7, 0x57, 0xcd, 0xcb, 0x0f, 0x62, 0x72, - 0xc9, 0xb3, 0xc1, 0x9f, 0xda, 0xed, 0x29, 0x0a, 0xaf, 0x6c, 0xcb, 0x43, - 0x2c, 0x95, 0x0d, 0x54, 0x3a, 0xeb, 0x01, 0x80, 0x99, 0xf7, 0x7d, 0xcb, - 0x24, 0x77, 0x49, 0xbb, 0xac, 0xd1, 0xba, 0xeb, 0x07, 0xfd, 0xf4, 0x7f, - 0x26, 0xf5, 0xca, 0x14, 0xec, 0x3c, 0xee, 0x4d, 0xe0, 0x01, 0x5c, 0xb9, - 0x27, 0x45, 0x09, 0x4c, 0x2f, 0x25, 0x7d, 0x1c, 0x3c, 0x51, 0x50, 0xb6, - 0xb1, 0x90, 0x7d, 0xa6, 0x06, 0x30, 0xeb, 0x49, 0x6e, 0xb2, 0x2a, 0x27, - 0x8d, 0x80, 0x30, 0xf3, 0xdb, 0xde, 0x68, 0x1a, 0xf2, 0xa3, 0x04, 0x03, - 0xc4, 0xdd, 0x68, 0x25, 0x8d, 0x9a, 0x3d, 0x31, 0xb1, 0x50, 0x67, 0x8d, - 0xb7, 0xb7, 0x0c, 0x10, 0xcf, 0x8b, 0x78, 0x46, 0xea, 0x57, 0x4b, 0x96, - 0xcf, 0x43, 0xbb, 0x83, 0xfc, 0x45, 0x04, 0x87, 0x30, 0xd3, 0x8e, 0x92, - 0xd6, 0x5a, 0x0d, 0x7b, 0xb4, 0x78, 0xed, 0x5e, 0x67, 0x85, 0x2a, 0xca, - 0xa9, 0x89, 0xfd, 0x55, 0x03, 0x5b, 0x87, 0x7d, 0x5c, 0x15, 0x41, 0x2f, - 0x35, 0xb0, 0x36, 0xb4, 0x1c, 0xb9, 0x31, 0xcb, 0xfe, 0x18, 0x5a, 0x62, - 0xae, 0x28, 0xed, 0x8e, 0xed, 0xdd, 0x12, 0xde, 0x89, 0x83, 0xcb, 0x43, - 0x27, 0x4e, 0xd6, 0xea, 0xcc, 0xb4, 0x6a, 0x85, 0x59, 0xa3, 0xb0, 0x58, - 0xc2, 0xd8, 0x50, 0x2e, 0xc1, 0xb1, 0x1c, 0xc3, 0x18, 0x0e, 0x02, 0x5e, - 0x36, 0xd6, 0xa7, 0x0e, 0xd9, 0xe9, 0x8d, 0x3e, 0x6a, 0x9e, 0x7e, 0xec, - 0xf9, 0x7c, 0x14, 0x8c, 0xe6, 0xb3, 0x7b, 0x65, 0x89, 0xae, 0x32, 0x6b, - 0x68, 0x75, 0x93, 0xbc, 0xab, 0x1f, 0xb9, 0x46, 0x70, 0x96, 0x6c, 0xbe, - 0x0b, 0x18, 0xfb, 0x7e, 0x52, 0x4a, 0x39, 0xcd, 0x18, 0x85, 0x01, 0x2a, - 0xa6, 0x6a, 0x68, 0x92, 0x09, 0xf9, 0xa9, 0xef, 0x45, 0x3c, 0x5f, 0xf0, - 0xa0, 0xe0, 0x68, 0x84, 0xe7, 0xca, 0x26, 0x55, 0x53, 0xea, 0xea, 0x87, - 0x3d, 0xe0, 0xb1, 0xba, 0x91, 0xa3, 0x86, 0x43, 0xe9, 0x33, 0x56, 0xe5, - 0xec, 0x33, 0xc9, 0x6e, 0x8f, 0xfe, 0x8d, 0xd8, 0xd9, 0x5b, 0xf9, 0x18, - 0xe5, 0x06, 0x4c, 0x9b, 0xe7, 0xd3, 0x04, 0xb5, 0xa5, 0x65, 0x50, 0x76, - 0x9f, 0x50, 0xf3, 0xb7, 0xd2, 0xca, 0xaa, 0xda, 0xcf, 0x57, 0xf7, 0xea, - 0x96, 0x3c, 0x68, 0xa2, 0xbd, 0xa1, 0x3c, 0x7d, 0xc9, 0xd7, 0x2b, 0x81, - 0xe8, 0x3e, 0x4e, 0x60, 0xfc, 0x35, 0xbf, 0x4f, 0xbe, 0xf8, 0x26, 0xfb, - 0x0c, 0x6e, 0x63, 0x24, 0xad, 0x1b, 0x6d, 0x4e, 0x2b, 0x5e, 0xf4, 0xeb, - 0xe4, 0xef, 0x03, 0x74, 0x43, 0xac, 0x66, 0x26, 0x9e, 0xf2, 0x3b, 0x04, - 0x45, 0x32, 0x8b, 0x4e, 0x5f, 0xab, 0xf9, 0x84, 0x32, 0x7c, 0xc7, 0xa9, - 0xc7, 0x10, 0xda, 0x4f, 0x6d, 0xae, 0xcf, 0x04, 0xdd, 0xdb, 0x86, 0x06, - 0xc4, 0x1b, 0x3e, 0x73, 0x7c, 0xd0, 0xd4, 0x70, 0xf9, 0x76, 0xce, 0xfa, - 0xdc, 0x80, 0x14, 0xb9, 0x68, 0x26, 0x79, 0x93, 0x92, 0x9c, 0x24, 0x14, - 0x22, 0x6f, 0xd6, 0x06, 0x45, 0x4e, 0x35, 0x07, 0x4b, 0x3c, 0x96, 0xc6, - 0x73, 0x65, 0x99, 0x57, 0xf8, 0x28, 0xba, 0x44, 0x25, 0xde, 0x74, 0xe4, - 0x75, 0xd2, 0x71, 0x5d, 0x3c, 0xc1, 0xee, 0x46, 0xde, 0x2f, 0xf1, 0x1f, - 0x08, 0xc1, 0xb3, 0xa0, 0xaa, 0xd0, 0xbd, 0xa0, 0x45, 0x5e, 0xbe, 0xe4, - 0xfa, 0xfc, 0x10, 0xaa, 0x46, 0xdb, 0x8a, 0x82, 0x0a, 0x97, 0xd5, 0x44, - 0xf6, 0x41, 0xcf, 0x2c, 0x93, 0x43, 0x6f, 0xff, 0x51, 0xa4, 0xb4, 0x11, - 0xb2, 0x3e, 0xac, 0x32, 0xbf, 0xe2, 0x7f, 0xc5, 0x2d, 0x22, 0x43, 0x02, - 0xe6, 0x8b, 0x36, 0x8b, 0x8a, 0xe3, 0x14, 0x3f, 0x52, 0x27, 0xcc, 0xfe, - 0xc7, 0x09, 0x6b, 0x6e, 0x36, 0x7f, 0x9b, 0x11, 0x7a, 0xee, 0x5d, 0xec, - 0x8d, 0x23, 0xf6, 0x83, 0x6c, 0x4e, 0x84, 0xcc, 0xc8, 0xe4, 0xdc, 0x35, - 0x12, 0xe4, 0xd8, 0xc0, 0x19, 0x3e, 0xd7, 0x6a, 0x03, 0x55, 0x9e, 0x71, - 0xad, 0x12, 0x27, 0x7d, 0x31, 0x5c, 0xee, 0xe1, 0xb6, 0x3f, 0x58, 0x4f, - 0x1e, 0x40, 0xed, 0xff, 0x61, 0xe3, 0xd2, 0x84, 0xe0, 0xea, 0xf9, 0xa2, - 0x12, 0xf9, 0x33, 0x1a, 0xd6, 0x1f, 0xa6, 0x1b, 0x02, 0x6f, 0x21, 0x6c, - 0xc7, 0xf7, 0x44, 0xce, 0xe1, 0x51, 0xd3, 0x33, 0x45, 0xaf, 0x21, 0x2f, - 0x7b, 0x38, 0x37, 0xe2, 0x6f, 0x65, 0xa7, 0xe8, 0xc0, 0xa3, 0x85, 0x88, - 0xac, 0x74, 0x43, 0x26, 0xb5, 0xd0, 0xc5, 0x03, 0xcd, 0xda, 0x70, 0x23, - 0xcb, 0x4e, 0xe0, 0x81, 0xab, 0x95, 0xa4, 0x27, 0x73, 0x1d, 0xf2, 0x1b, - 0xb8, 0xdb, 0xf4, 0xd1, 0x80, 0x82, 0xd0, 0x19, 0xa8, 0x7e, 0x09, 0xaa, - 0x54, 0x9f, 0xd2, 0x35, 0xbc, 0x34, 0x2e, 0x0d, 0xf5, 0x69, 0x2c, 0x5d, - 0xf4, 0x17, 0x9c, 0xae, 0x9f, 0x1f, 0x62, 0x07, 0xef, 0x7b, 0xfa, 0xc2, - 0x64, 0x4d, 0xac, 0x60, 0x35, 0x17, 0x7b, 0x67, 0x7a, 0xe7, 0x54, 0xa4, - 0xd8, 0xa8, 0xe5, 0x1d, 0x12, 0xd6, 0x38, 0x6c, 0x0d, 0x44, 0x56, 0x4a, - 0x9a, 0xfe, 0xa5, 0x90, 0x41, 0xea, 0x03, 0x3f, 0xa6, 0x17, 0x44, 0x51, - 0xe2, 0x70, 0x1f, 0x97, 0x83, 0xa1, 0x6f, 0x42, 0x25, 0xd3, 0x28, 0xc9, - 0xcb, 0x6f, 0xa4, 0x9a, 0x89, 0x86, 0xcd, 0x22, 0x40, 0x4c, 0x06, 0xda, - 0xed, 0x16, 0x06, 0x9f, 0x11, 0x43, 0xdb, 0x85, 0x5d, 0x38, 0x00, 0x74, - 0x00, 0x00, 0xea, 0xac, 0xe9, 0xaa, 0xfa, 0x86, 0x1a, 0xd8, 0x50, 0x5e, - 0x67, 0xd7, 0x8d, 0xf9, 0xcd, 0xfc, 0x18, 0xb4, 0x76, 0x6e, 0xe4, 0x1e, - 0xe2, 0xe6, 0x7a, 0x71, 0x2b, 0xa9, 0xdc, 0x30, 0x58, 0x82, 0x14, 0xf7, - 0xf4, 0x9c, 0x4e, 0x0a, 0x36, 0xd8, 0x55, 0x29, 0x0f, 0xad, 0x81, 0x17, - 0xdc, 0x8f, 0xf0, 0x15, 0x1c, 0x60, 0x13, 0x33, 0xbe, 0x75, 0x8c, 0x7c, - 0xf4, 0x55, 0xf5, 0xba, 0x3a, 0xd0, 0x88, 0x5a, 0xbd, 0x0c, 0xc2, 0x05, - 0xb5, 0x94, 0x48, 0x91, 0x07, 0xe3, 0x45, 0xa3, 0x63, 0x6b, 0x7c, 0xfc, - 0xbd, 0x44, 0x4c, 0x11, 0x3a, 0x97, 0xc8, 0x13, 0x53, 0xf6, 0xf0, 0xa2, - 0xec, 0x37, 0xe0, 0x40, 0x64, 0x88, 0x5e, 0x96, 0x99, 0x5f, 0x80, 0xe2, - 0xd1, 0x84, 0xf0, 0x6e, 0x66, 0x4e, 0xc7, 0x4b, 0x11, 0x58, 0x05, 0x26, - 0x82, 0x0f, 0x67, 0x3b, 0x21, 0xc1, 0xcd, 0x51, 0x57, 0x17, 0x44, 0x07, - 0x70, 0xdf, 0x87, 0x62, 0x65, 0x92, 0x3d, 0xc9, 0x5e, 0xf3, 0xc5, 0x72, - 0xbb, 0x3e, 0x4d, 0x09, 0x5c, 0xd4, 0xc2, 0x36, 0xa7, 0xe6, 0x7b, 0x0e, - 0x95, 0x6f, 0xff, 0x8f, 0x5a, 0x5a, 0x86, 0xc8, 0x53, 0x79, 0xbe, 0x11, - 0xf5, 0x0c, 0x26, 0x0f, 0xec, 0xc1, 0x81, 0x37, 0xc3, 0x13, 0x4d, 0x0f, - 0x63, 0xc1, 0xd6, 0x68, 0x3c, 0xf0, 0x42, 0x85, 0x2e, 0x18, 0x9a, 0x0d, - 0x44, 0xfb, 0x1a, 0x52, 0xac, 0x2b, 0xaa, 0xfc, 0xd1, 0x71, 0x7c, 0x0a, - 0x2e, 0xbb, 0xa0, 0x0d, 0xe6, 0xad, 0xed, 0x5b, 0xa3, 0x87, 0xed, 0x9e, - 0xe8, 0x20, 0x25, 0x8a, 0xe2, 0xf6, 0xf3, 0x64, 0x4a, 0x5e, 0x51, 0x79, - 0xef, 0x9c, 0x5d, 0x6e, 0x63, 0x6e, 0xcc, 0x56, 0x75, 0xad, 0xbb, 0xbd, - 0xce, 0x75, 0xb5, 0x2b, 0x53, 0x3c, 0x26, 0x15, 0xca, 0x19, 0xfe, 0xae, - 0x8b, 0x99, 0x62, 0x08, 0x3c, 0x90, 0xbf, 0x32, 0xe0, 0x99, 0x97, 0x8a, - 0xa1, 0x65, 0x1c, 0x22, 0x4f, 0xa5, 0x62, 0xa1, 0xb8, 0xf5, 0x12, 0x31, - 0xc8, 0x29, 0xa0, 0xde, 0x61, 0x50, 0x0d, 0xf7, 0x3b, 0xcd, 0x3f, 0x70, - 0x82, 0xe6, 0x5a, 0x70, 0x2c, 0x0e, 0x9f, 0x4d, 0x28, 0x78, 0xa9, 0x59, - 0xff, 0xc1, 0x84, 0xb4, 0x02, 0x98, 0x07, 0xd7, 0xa3, 0xa8, 0x01, 0x25, - 0xb5, 0x95, 0x62, 0xc5, 0xf6, 0x35, 0x97, 0x3b, 0x59, 0xd5, 0x70, 0x75, - 0x8a, 0x3e, 0x52, 0xe5, 0x9c, 0x9b, 0x1b, 0x70, 0x63, 0x60, 0x94, 0xb9, - 0x5e, 0xf8, 0x77, 0x89, 0xb5, 0x00, 0x66, 0x91, 0x69, 0xd5, 0x69, 0x81, - 0xa2, 0x3e, 0xf1, 0xa5, 0x8c, 0x36, 0xeb, 0x3e, 0x88, 0xb1, 0x73, 0x7d, - 0xa3, 0x28, 0xe8, 0x4b, 0xa9, 0xac, 0xb2, 0x97, 0x44, 0x25, 0xf3, 0x24, - 0xf3, 0x62, 0x0c, 0xcf, 0xe2, 0x1c, 0xca, 0x74, 0x60, 0xf8, 0x80, 0x62, - 0x27, 0x5d, 0xe7, 0x12, 0x5d, 0x75, 0x32, 0xa0, 0x11, 0xf1, 0xb2, 0xfd, - 0xb4, 0xb3, 0x87, 0x22, 0xd9, 0x86, 0x38, 0x3c, 0x42, 0xbc, 0xca, 0x18, - 0xcc, 0x09, 0x3e, 0x5c, 0x92, 0x2a, 0x81, 0x3d, 0xeb, 0x85, 0xbb, 0xd6, - 0xb9, 0x74, 0x18, 0x1f, 0xb2, 0x28, 0xde, 0x32, 0xe8, 0x3f, 0xa1, 0x14, - 0x1a, 0x95, 0xaa, 0x78, 0xa8, 0x34, 0xc1, 0x89, 0x43, 0xea, 0xf8, 0x9c, - 0x1a, 0x56, 0x40, 0x56, 0x78, 0xd9, 0xa2, 0x82, 0x9e, 0xbf, 0xc8, 0x72, - 0x5f, 0xc8, 0x45, 0x52, 0xef, 0xcd, 0xfc, 0x40, 0xd2, 0x23, 0x3c, 0x36, - 0x6f, 0x1a, 0x19, 0x1b, 0x58, 0x6c, 0x80, 0x09, 0xa4, 0x67, 0x84, 0x39, - 0xf9, 0x4c, 0x30, 0x08, 0x32, 0x6f, 0x27, 0x6f, 0xbf, 0x5c, 0xd5, 0x44, - 0xc4, 0x79, 0xbf, 0xa1, 0x35, 0x61, 0xd0, 0x24, 0x07, 0x4e, 0xd3, 0x09, - 0x29, 0xe1, 0x45, 0xc6, 0xf0, 0xa9, 0x3a, 0xe5, 0xf6, 0x61, 0x2c, 0x3f, - 0xe5, 0xf6, 0x02, 0xb6, 0xe9, 0xec, 0x76, 0x01, 0xce, 0x58, 0x5a, 0xae, - 0xbd, 0xd6, 0x67, 0x28, 0xf9, 0x54, 0x05, 0xaa, 0x8d, 0x1e, 0xbd, 0x3d, - 0x67, 0xdf, 0x10, 0x0e, 0xab, 0xb3, 0x3a, 0x04, 0x3e, 0xca, 0x99, 0xd6, - 0xbd, 0x56, 0x0f, 0x7b, 0xb4, 0xfa, 0x40, 0xfb, 0xfb, 0xe5, 0xe5, 0xe9, - 0x10, 0x8d, 0x88, 0x41, 0xfc, 0x85, 0x01, 0x93, 0x47, 0xdc, 0x8a, 0xdc, - 0xad, 0xcb, 0x2a, 0x25, 0xb9, 0x31, 0xd9, 0x61, 0xff, 0x2a, 0x08, 0xf1, - 0x2f, 0xcc, 0xc9, 0x39, 0x58, 0x4e, 0xc6, 0xf6, 0xf4, 0x63, 0xd4, 0x30, - 0x74, 0xb2, 0xc3, 0x4c, 0x03, 0x22, 0x46, 0x7b, 0x3f, 0x06, 0x08, 0x19, - 0x1a, 0x7f, 0xa1, 0xb0, 0x92, 0x29, 0xdd, 0x8d, 0x09, 0x27, 0xc4, 0x4f, - 0x02, 0x55, 0x2e, 0x26, 0x67, 0x15, 0x23, 0xd6, 0xaf, 0x89, 0xf2, 0xc0, - 0x39, 0xbf, 0xf3, 0xb5, 0x23, 0xa8, 0x79, 0xd8, 0x9a, 0x31, 0x9d, 0x72, - 0x13, 0xaf, 0xee, 0x11, 0xa9, 0x71, 0xa3, 0xe5, 0x2b, 0x47, 0x2a, 0x62, - 0x3d, 0xa4, 0xae, 0x24, 0x0b, 0xc8, 0x42, 0x14, 0x4e, 0xc2, 0xd2, 0x94, - 0x99, 0x2c, 0x3c, 0x05, 0x8d, 0x20, 0x45, 0x76, 0xea, 0x85, 0xa1, 0x52, - 0xbb, 0xfb, 0x59, 0x48, 0x4e, 0x5d, 0xf5, 0x40, 0x66, 0xa9, 0xfd, 0x89, - 0xb1, 0x34, 0xf7, 0x66, 0x44, 0x41, 0x1e, 0xca, 0x02, 0xc5, 0x7e, 0x0e, - 0x11, 0xbb, 0xad, 0x61, 0x0e, 0x59, 0x05, 0x29, 0xcf, 0x65, 0x8d, 0xa6, - 0x82, 0x49, 0x8c, 0x5b, 0x1a, 0x85, 0xe8, 0xe2, 0x13, 0x59, 0x10, 0x2d, - 0x9b, 0x18, 0xa2, 0xf7, 0x7d, 0xa6, 0x9b, 0xb8, 0x88, 0xdc, 0x03, 0xb9, - 0xa5, 0x5c, 0xdc, 0x84, 0x0d, 0x74, 0xf5, 0xcd, 0xd2, 0x6d, 0x39, 0x2f, - 0x90, 0x4f, 0x79, 0x97, 0x49, 0x92, 0x0f, 0x6a, 0x06, 0x86, 0x79, 0x80, - 0xaa, 0xab, 0x98, 0x85, 0xfe, 0xe8, 0x9e, 0xd6, 0xb1, 0x44, 0x2b, 0xd8, - 0xc1, 0x8e, 0x57, 0x0d, 0xf0, 0x17, 0xda, 0x95, 0x07, 0x18, 0xc5, 0x08, - 0xa2, 0xf5, 0x6b, 0xb8, 0x17, 0x26, 0xf4, 0x15, 0xde, 0xba, 0xd1, 0x1b, - 0x47, 0xa2, 0xe1, 0x21, 0x3b, 0x71, 0x68, 0xad, 0x3a, 0x33, 0x7a, 0x75, - 0x1e, 0xf5, 0xee, 0x7a, 0xf7, 0xdb, 0x76, 0xa0, 0xf7, 0x12, 0x49, 0x2e, - 0x63, 0x83, 0xdf, 0xb3, 0x21, 0xe7, 0xdb, 0x9c, 0xa0, 0x61, 0xdf, 0x9b, - 0xf8, 0x06, 0x93, 0x78, 0xdd, 0x64, 0x36, 0x2b, 0x6e, 0x7a, 0x2d, 0xb6, - 0x82, 0xe6, 0x1f, 0x14, 0x5f, 0xf9, 0x2f, 0xd9, 0xd1, 0x13, 0x80, 0x81, - 0x60, 0x03, 0xac, 0x21, 0x63, 0xbd, 0xfd, 0x65, 0xcf, 0x02, 0x31, 0xe0, - 0x0b, 0x38, 0x45, 0xce, 0x78, 0x2e, 0x95, 0xc5, 0xbf, 0xda, 0x67, 0xa0, - 0xac, 0x8f, 0xd2, 0xfb, 0xe1, 0x66, 0x86, 0xb8, 0x8a, 0x6f, 0xab, 0xc3, - 0x1b, 0x16, 0x44, 0xb1, 0xac, 0x5f, 0x4b, 0x54, 0xa6, 0xe2, 0x29, 0x5c, - 0x0c, 0xbf, 0xf5, 0x21, 0x88, 0x7a, 0x74, 0xf5, 0x46, 0x78, 0x60, 0x73, - 0x68, 0xef, 0xaf, 0x44, 0x5d, 0x48, 0x67, 0xca, 0xa7, 0x7e, 0x0d, 0x91, - 0x12, 0xac, 0x71, 0xa1, 0x48, 0x58, 0x78, 0x56, 0x6a, 0x80, 0xd5, 0x9c, - 0xe2, 0xd3, 0x9a, 0xd4, 0xe7, 0x48, 0x0e, 0x6c, 0x2c, 0x26, 0xae, 0xe9, - 0x16, 0xf6, 0x17, 0xbe, 0xfe, 0xf6, 0xa4, 0x44, 0xb2, 0x10, 0x00, 0xb4, - 0x8c, 0xe4, 0xd8, 0x98, 0x2b, 0x56, 0x66, 0xaf, 0x5b, 0xb8, 0x5c, 0xb5, - 0x07, 0x0a, 0x37, 0xcc, 0x04, 0x8c, 0x25, 0x39, 0x7b, 0x4e, 0x16, 0x2f, - 0x77, 0x05, 0xf2, 0xb9, 0xa2, 0xf5, 0x74, 0x56, 0x30, 0x95, 0x2c, 0x67, - 0xf8, 0xea, 0xc6, 0xf2, 0xca, 0x83, 0xbe, 0xa0, 0xc0, 0xa0, 0xf0, 0xea, - 0x2e, 0x40, 0xae, 0xbf, 0x5a, 0x69, 0x21, 0x39, 0x9d, 0xe1, 0x50, 0x3d, - 0x62, 0x9e, 0x3f, 0x57, 0x73, 0x63, 0xd8, 0xd9, 0x54, 0xa6, 0x90, 0xec, - 0x82, 0xd5, 0xe5, 0xb5, 0x54, 0x77, 0x92, 0xa3, 0x76, 0x7a, 0xfd, 0x66, - 0xaf, 0x8d, 0x1a, 0xe8, 0xef, 0x78, 0xc1, 0xc2, 0xbf, 0x4e, 0xc7, 0x91, - 0xd3, 0x88, 0xff, 0xa2, 0x59, 0xc8, 0xbd, 0x40, 0x6a, 0x93, 0x87, 0x59, - 0x53, 0x99, 0x25, 0xfd, 0x1e, 0x62, 0x3f, 0x47, 0xc8, 0x66, 0x6b, 0xff, - 0x76, 0x84, 0xf8, 0xfd, 0x5b, 0x6e, 0x66, 0xbd, 0xf8, 0xb2, 0x60, 0x26, - 0x4a, 0x92, 0xf7, 0x75, 0xba, 0xa9, 0x95, 0x64, 0x73, 0xf3, 0x50, 0x12, - 0x31, 0x74, 0x94, 0x36, 0x37, 0xfb, 0x6e, 0xbd, 0xf3, 0x0a, 0x16, 0xb3, - 0x6d, 0x56, 0x82, 0xc9, 0x7f, 0x00, 0xcd, 0x19, 0x0f, 0xc0, 0x0f, 0xaf, - 0xe3, 0x93, 0x0c, 0xad, 0x70, 0xfa, 0x37, 0x34, 0x83, 0xbd, 0x49, 0x9a, - 0xa0, 0x0b, 0x89, 0xdd, 0x63, 0xdd, 0x3a, 0xbf, 0x69, 0x2b, 0x8d, 0x8c, - 0x4c, 0x0a, 0xdd, 0xdb, 0x60, 0xd2, 0xb4, 0x74, 0x12, 0x92, 0xf8, 0x46, - 0xe2, 0xb0, 0x5e, 0x3c, 0xfb, 0x69, 0x79, 0xf5, 0x14, 0x4e, 0x08, 0xf7, - 0x8a, 0x63, 0x11, 0x49, 0xb4, 0xb0, 0xa2, 0xd7, 0xdf, 0xe7, 0x99, 0x7e, - 0xe2, 0x94, 0xd4, 0x61, 0x39, 0x6b, 0x0f, 0x1a, 0x14, 0xe4, 0xc1, 0xb5, - 0xdb, 0x76, 0xa1, 0x8a, 0xbb, 0xd2, 0x43, 0x1b, 0x42, 0x3a, 0x66, 0x84, - 0xe0, 0x63, 0x28, 0x1d, 0xd9, 0x39, 0x32, 0x2c, 0x7f, 0xc6, 0x08, 0x63, - 0x58, 0x19, 0x44, 0x6e, 0x67, 0x76, 0x31, 0x76, 0x6d, 0xdc, 0x0f, 0x71, - 0xad, 0x1f, 0xa7, 0x3d, 0x95, 0x4b, 0xdd, 0x32, 0xb0, 0x56, 0x70, 0x57, - 0x5f, 0xa3, 0xa0, 0x4a, 0x30, 0xb3, 0xba, 0x37, 0x0d, 0x6b, 0x26, 0x1e, - 0xc2, 0xcd, 0xc3, 0x8e, 0x0d, 0x36, 0x53, 0x2a, 0x22, 0x57, 0x1c, 0xfa, - 0x21, 0x7b, 0x07, 0x17, 0xd1, 0xf8, 0xc3, 0xd4, 0xec, 0x5a, 0xc2, 0x04, - 0x66, 0x15, 0x26, 0x3f, 0x4f, 0x42, 0x4c, 0xce, 0x12, 0x7e, 0x9d, 0x03, - 0x47, 0xb9, 0x36, 0x95, 0x58, 0x40, 0x95, 0x19, 0xb8, 0xf5, 0xbf, 0xe5, - 0xb7, 0x63, 0xac, 0x89, 0x8a, 0xfc, 0x5b, 0x6f, 0xb9, 0xb8, 0x52, 0xa6, - 0x5c, 0x85, 0xc4, 0x7f, 0x65, 0xc3, 0xfd, 0x1c, 0x4d, 0xbd, 0x65, 0x7f, - 0x26, 0x45, 0xd1, 0x1b, 0xe7, 0xdf, 0x02, 0x89, 0xb7, 0xf9, 0x08, 0xbb, - 0x62, 0x5e, 0xb0, 0xcc, 0x8f, 0x4c, 0x3b, 0xf7, 0x57, 0xbc, 0x43, 0xdc, - 0x29, 0x4f, 0x55, 0xf2, 0xeb, 0x09, 0x83, 0x40, 0xfe, 0x08, 0x6f, 0xc1, - 0xce, 0x9c, 0x34, 0x58, 0x62, 0x95, 0x0e, 0x0d, 0x03, 0x74, 0x31, 0xee, - 0x4f, 0x6f, 0x16, 0x15, 0xab, 0xc9, 0xd6, 0x53, 0x9e, 0x65, 0x39, 0xd1, - 0xc1, 0x2c, 0x8f, 0x02, 0x1b, 0xfe, 0xee, 0x2d, 0x6a, 0x75, 0x2b, 0x39, - 0xa8, 0x5b, 0x5e, 0xf5, 0x05, 0x78, 0x6a, 0xe3, 0x29, 0x20, 0x75, 0xb7, - 0xad, 0x81, 0x5c, 0xd9, 0xe5, 0x2e, 0xce, 0xea, 0x97, 0x09, 0xd6, 0x96, - 0x59, 0x13, 0xda, 0x9c, 0x12, 0xf3, 0xac, 0x47, 0xee, 0x86, 0x8a, 0xfa, - 0xfe, 0x49, 0x4c, 0xb9, 0x7d, 0x8a, 0x6b, 0xd2, 0xff, 0xf6, 0x78, 0x79, - 0xaf, 0x64, 0x0b, 0x37, 0x6f, 0xae, 0xd1, 0x8c, 0x6c, 0x44, 0x17, 0xe0, - 0x5e, 0x00, 0x09, 0xa2, 0xe8, 0x7a, 0x4c, 0x34, 0xc6, 0xdb, 0x0d, 0x03, - 0xbb, 0x41, 0x29, 0x04, 0xe8, 0xfb, 0x1f, 0xdf, 0x70, 0xed, 0x29, 0xdb, - 0x7f, 0xbf, 0x1d, 0x1a, 0xee, 0xdd, 0xd4, 0x87, 0x57, 0xd5, 0xe1, 0x30, - 0x2a, 0x29, 0x8f, 0x22, 0x9c, 0x5d, 0xec, 0xed, 0xcb, 0xb1, 0x48, 0xe5, - 0xea, 0xe6, 0x74, 0x70, 0x13, 0xb5, 0xf5, 0x1e, 0xe7, 0xbc, 0xb3, 0xa7, - 0xf5, 0xb4, 0xd8, 0x51, 0x47, 0x72, 0xec, 0xfd, 0xbe, 0xb2, 0x2e, 0x82, - 0x36, 0x76, 0x1f, 0xeb, 0x4f, 0xf4, 0x81, 0xd1, 0xa2, 0xdd, 0x50, 0x5f, - 0x07, 0x50, 0x8a, 0xa2, 0x74, 0x10, 0x67, 0x6d, 0x8f, 0xe6, 0x19, 0x5b, - 0xff, 0x25, 0xc6, 0x92, 0x4c, 0x35, 0x08, 0x16, 0x64, 0x5c, 0x4f, 0x8d, - 0x75, 0xba, 0x5d, 0x16, 0x1a, 0x61, 0xb8, 0x0a, 0x8a, 0x1a, 0x85, 0x88, - 0xf6, 0x6e, 0x2f, 0x3b, 0x7d, 0x4c, 0x9a, 0x35, 0x38, 0xb8, 0x59, 0x33, - 0x9b, 0x49, 0xad, 0x1d, 0xef, 0xc9, 0x19, 0xe7, 0x53, 0x77, 0x3f, 0x22, - 0xc5, 0x35, 0x5e, 0xcb, 0x89, 0xfc, 0x66, 0xc3, 0x13, 0x43, 0xe6, 0x82, - 0x60, 0x56, 0x25, 0x4d, 0xb3, 0x59, 0x62, 0x35, 0x8f, 0x31, 0x88, 0xd2, - 0x07, 0xaf, 0x19, 0x79, 0xba, 0x95, 0x1b, 0x73, 0x30, 0x35, 0x5f, 0x14, - 0x45, 0xd4, 0xc9, 0x45, 0xbb, 0xa5, 0xb0, 0x03, 0x90, 0x75, 0xa7, 0x07, - 0x76, 0xf0, 0x2a, 0x29, 0xc0, 0x71, 0xb2, 0x2f, 0xd3, 0xdb, 0xc5, 0x65, - 0x28, 0x32, 0xbf, 0xd5, 0x15, 0xee, 0xbf, 0xc0, 0x60, 0x5f, 0xc2, 0xf1, - 0x1c, 0xed, 0xc1, 0x55, 0x11, 0xa1, 0x2a, 0xe3, 0xd2, 0x6a, 0x54, 0x3a, - 0xff, 0xc8, 0xcc, 0x1a, 0xca, 0x48, 0xdd, 0xca, 0xe8, 0x41, 0xe5, 0xd2, - 0xc6, 0x39, 0x9c, 0x0e, 0x79, 0xbe, 0x34, 0x77, 0x7f, 0x51, 0x06, 0xd7, - 0x46, 0xb3, 0x1d, 0x0c, 0x67, 0xbe, 0x06, 0x0e, 0x54, 0x02, 0xd0, 0x0b, - 0xf2, 0x79, 0x51, 0x8c, 0xeb, 0xc2, 0x70, 0x3d, 0xe4, 0x76, 0x91, 0x91, - 0xde, 0xab, 0xf6, 0xde, 0xdf, 0x31, 0xa8, 0x99, 0x57, 0x86, 0x31, 0x02, - 0x3f, 0x48, 0xee, 0x7e, 0x72, 0x60, 0x65, 0xd2, 0x57, 0x37, 0xff, 0x54, - 0x25, 0xb6, 0x88, 0xa2, 0x41, 0x28, 0x81, 0x41, 0x1c, 0x56, 0x8f, 0x11, - 0x4f, 0xc1, 0x0d, 0x98, 0xde, 0x35, 0xae, 0x9a, 0x43, 0x18, 0x48, 0x86, - 0x83, 0xa9, 0x88, 0xeb, 0x87, 0x28, 0x91, 0xff, 0x79, 0x7b, 0xfd, 0x63, - 0xcc, 0xc8, 0xe3, 0xb5, 0x3f, 0xb1, 0x0a, 0xbc, 0x15, 0x19, 0xd9, 0xa8, - 0x0e, 0x22, 0x0b, 0xf8, 0xb0, 0x1f, 0x46, 0x6f, 0x5d, 0x38, 0x5f, 0x9f, - 0x62, 0x53, 0x03, 0x82, 0xfa, 0x22, 0xf8, 0x8f, 0x1b, 0xfc, 0x79, 0xf3, - 0xf2, 0x3e, 0xc2, 0x67, 0x2d, 0xea, 0x90, 0xeb, 0xaf, 0xd1, 0x75, 0xcd, - 0x53, 0x66, 0x81, 0x05, 0xfc, 0xd6, 0x22, 0xbd, 0xdd, 0x9a, 0x7e, 0x9a, - 0x28, 0xba, 0xd6, 0x4d, 0x3f, 0x88, 0x70, 0xc8, 0x64, 0x3c, 0x2b, 0x7a, - 0x87, 0xbf, 0x87, 0x0b, 0xc3, 0x34, 0x49, 0xe0, 0x49, 0x9f, 0x15, 0xef, - 0x8b, 0x7b, 0x8b, 0x3e, 0x92, 0x55, 0xd1, 0xe4, 0x0f, 0xb5, 0xf2, 0xbd, - 0xff, 0xf1, 0x53, 0xaa, 0x77, 0xdf, 0x1e, 0xec, 0x37, 0xb8, 0x5d, 0xfa, - 0x96, 0x6d, 0xab, 0xcd, 0x6b, 0xa0, 0xbf, 0xd5, 0xcb, 0x07, 0x04, 0x35, - 0xd4, 0xa6, 0x65, 0x4a, 0xe7, 0x25, 0x6f, 0x3e, 0x09, 0x9b, 0xe2, 0xcf, - 0x13, 0xd2, 0x3f, 0x0f, 0x50, 0x44, 0xd0, 0x82, 0xb4, 0x48, 0x2b, 0xeb, - 0x6a, 0x3f, 0x31, 0xa5, 0xaf, 0x4b, 0x8a, 0x35, 0x04, 0x35, 0x35, 0xfb, - 0x94, 0x1e, 0xd0, 0x67, 0x66, 0x47, 0xad, 0x0c, 0x38, 0x45, 0x6d, 0x84, - 0x3a, 0x78, 0xa2, 0x88, 0x34, 0xb8, 0x2f, 0x7f, 0x5c, 0x44, 0x8e, 0xe4, - 0xb1, 0xb4, 0x5e, 0xe3, 0x74, 0xdc, 0x7f, 0x4e, 0x7a, 0x1c, 0x46, 0x18, - 0xcd, 0x95, 0x16, 0x93, 0xbb, 0xb7, 0x27, 0x46, 0xcf, 0x23, 0xd3, 0xf3, - 0x6f, 0x65, 0x55, 0xea, 0xf2, 0x2d, 0x2c, 0x26, 0x5f, 0x5c, 0x5c, 0x76, - 0x40, 0x04, 0xcc, 0x3e, 0x51, 0x31, 0x89, 0x4c, 0x73, 0xc4, 0x6c, 0x57, - 0x62, 0xaa, 0x41, 0x02, 0x5c, 0x3b, 0xbc, 0xb7, 0x88, 0x6a, 0x50, 0x3e, - 0x83, 0x2b, 0x6d, 0x94, 0x6a, 0x70, 0x92, 0x87, 0xd5, 0xcd, 0x33, 0x99, - 0xbd, 0x10, 0xf8, 0x69, 0x61, 0xa5, 0x30, 0xc8, 0xd5, 0x28, 0xf3, 0x12, - 0x51, 0xa2, 0xa0, 0x34, 0xc9, 0x0a, 0x48, 0xf4, 0xa5, 0x78, 0xb0, 0x6a, - 0xc8, 0x43, 0x3a, 0xf2, 0xb1, 0x98, 0xfd, 0x28, 0xf5, 0x67, 0xa4, 0x6e, - 0xc3, 0x59, 0xd2, 0xfb, 0x6e, 0x0a, 0x20, 0x30, 0x05, 0x86, 0xf2, 0x94, - 0x3a, 0x7a, 0xcd, 0x10, 0x54, 0xaa, 0x71, 0xa4, 0x33, 0x51, 0xf8, 0x70, - 0xd0, 0x08, 0x74, 0x43, 0x4f, 0x61, 0x2d, 0x8e, 0x26, 0x9c, 0x23, 0x77, - 0xc8, 0xcb, 0xac, 0xa1, 0xb3, 0xe9, 0x5d, 0x4e, 0x52, 0xda, 0x4a, 0xc6, - 0xb8, 0x3a, 0x88, 0x61, 0x1b, 0x45, 0x84, 0x4b, 0x06, 0xd4, 0xf2, 0xb8, - 0xfa, 0xb6, 0x8f, 0xdd, 0x4b, 0x10, 0x8f, 0x73, 0x6a, 0xd0, 0x8b, 0xf4, - 0xdc, 0x07, 0x98, 0x0b, 0x85, 0x33, 0xc3, 0x4f, 0xb0, 0xbb, 0xf8, 0x78, - 0x1c, 0x84, 0xfc, 0x09, 0xf7, 0x2b, 0x2a, 0x71, 0x6d, 0xe0, 0x56, 0xa4, - 0x95, 0x86, 0x52, 0x71, 0x03, 0x78, 0x56, 0xc7, 0xa1, 0xcf, 0x08, 0x78, - 0xb7, 0x80, 0x97, 0x08, 0x46, 0x1f, 0x66, 0x57, 0x6d, 0x56, 0x38, 0xc7, - 0x87, 0x3b, 0x24, 0xb4, 0x64, 0xfb, 0x4f, 0xfb, 0x77, 0x58, 0x62, 0x67, - 0xe7, 0x7c, 0xd8, 0x55, 0x50, 0x3d, 0x9a, 0x95, 0x8b, 0x1f, 0x4a, 0x38, - 0xe6, 0x6c, 0x06, 0x82, 0x81, 0xc3, 0x3e, 0xf0, 0x69, 0xed, 0xaa, 0x46, - 0x09, 0xab, 0x80, 0xff, 0x4e, 0xb8, 0x49, 0xd8, 0x52, 0xca, 0x07, 0x65, - 0xe3, 0x7e, 0x49, 0x53, 0xd7, 0x78, 0x4a, 0x3d, 0x7b, 0x53, 0xd2, 0x3e, - 0x23, 0x28, 0x8a, 0x64, 0x7d, 0x53, 0x1a, 0x34, 0x52, 0x7b, 0x1f, 0x68, - 0x28, 0x99, 0x1f, 0x74, 0x84, 0x9e, 0x55, 0x97, 0xc0, 0x85, 0x38, 0x35, - 0x55, 0x73, 0x8d, 0x97, 0x23, 0xa2, 0x2f, 0x29, 0xb8, 0xae, 0xcb, 0xf4, - 0xee, 0xb5, 0xb5, 0x1d, 0xf0, 0xe9, 0x0d, 0x22, 0xdf, 0x8a, 0x0a, 0x10, - 0x66, 0x50, 0xf7, 0x16, 0x5f, 0x5a, 0x81, 0xa9, 0xb9, 0x36, 0x85, 0x07, - 0x27, 0x4b, 0x5b, 0xec, 0xd7, 0x27, 0xb4, 0x64, 0x91, 0x77, 0x96, 0x32, - 0xf5, 0x85, 0x3c, 0x07, 0xdd, 0x2f, 0xa9, 0x0f, 0x38, 0xc5, 0x0c, 0x33, - 0x47, 0x88, 0x06, 0xfc, 0xb8, 0xd1, 0x8c, 0xbc, 0xd5, 0x29, 0xa1, 0x70, - 0x2d, 0x45, 0x6e, 0x1e, 0x80, 0x0b, 0x93, 0x53, 0x5c, 0xab, 0x3e, 0x51, - 0x26, 0xd9, 0xeb, 0x33, 0x4f, 0x2f, 0x27, 0xb5, 0x28, 0xa5, 0x52, 0xab, - 0x33, 0xd3, 0x92, 0xca, 0xa6, 0xb2, 0xb6, 0x0e, 0xc4, 0x25, 0x11, 0xb7, - 0x67, 0x04, 0x19, 0xf1, 0x6b, 0x08, 0xbf, 0x34, 0xf4, 0x5e, 0xd0, 0xff, - 0x05, 0x75, 0xa4, 0x0e, 0xd1, 0x78, 0xa9, 0xcb, 0xe3, 0x90, 0x8f, 0x95, - 0x34, 0xc7, 0xa1, 0xfc, 0x24, 0xcb, 0xb4, 0xf5, 0xf3, 0x64, 0x4c, 0x62, - 0x1a, 0x2f, 0xf0, 0x21, 0x8d, 0xb0, 0xd6, 0x7f, 0xe2, 0x47, 0x38, 0xa2, - 0x72, 0x3d, 0x5a, 0xb9, 0xf2, 0x0c, 0x79, 0xe9, 0xad, 0x49, 0x83, 0x02, - 0x6c, 0x2b, 0xf0, 0x94, 0xc4, 0x08, 0x57, 0x3e, 0xb3, 0x37, 0x11, 0x60, - 0xa0, 0x76, 0x22, 0x66, 0xb4, 0x12, 0x2e, 0x54, 0xb8, 0x68, 0x85, 0xa5, - 0x7c, 0xa5, 0x4c, 0x65, 0x6e, 0xc5, 0xcf, 0xe4, 0x20, 0x49, 0x01, 0x1d, - 0x77, 0x63, 0xf0, 0x7e, 0x42, 0x60, 0xd4, 0xcb, 0x86, 0xb5, 0xc9, 0xfc, - 0x81, 0xf0, 0xfc, 0xb5, 0xbd, 0x09, 0x36, 0x8b, 0x31, 0x1e, 0xc5, 0xb8, - 0xc6, 0x90, 0x24, 0xe2, 0xa0, 0xb2, 0x89, 0x1e, 0xbe, 0xe4, 0x8d, 0x75, - 0xbb, 0xf1, 0x4d, 0xcf, 0xa6, 0xc7, 0x74, 0xc0, 0x53, 0x6d, 0x66, 0xf5, - 0xdc, 0xfb, 0xfd, 0x7e, 0x3f, 0x44, 0x43, 0x2f, 0xc4, 0xe0, 0x68, 0x4b, - 0x6e, 0xac, 0x30, 0x87, 0x76, 0x11, 0x83, 0x18, 0x95, 0x8e, 0x66, 0xfd, - 0xec, 0x19, 0xb8, 0xa1, 0x5a, 0x0f, 0xe8, 0xf7, 0x16, 0xef, 0xbe, 0x01, - 0xb4, 0x12, 0x55, 0x2a, 0xf6, 0xb4, 0x74, 0x9f, 0x4e, 0x01, 0xd2, 0xf9, - 0x5c, 0x0f, 0x91, 0xf6, 0xed, 0xd1, 0x57, 0x1a, 0x09, 0xbb, 0x3a, 0xd1, - 0x05, 0xce, 0xd9, 0xe1, 0xc7, 0x52, 0x9a, 0xc0, 0x21, 0xbc, 0x21, 0xb7, - 0x53, 0x7e, 0xdd, 0x64, 0xb9, 0x82, 0x86, 0xde, 0x5b, 0xe4, 0x1c, 0xae, - 0xd4, 0x63, 0x2a, 0xca, 0xc0, 0x07, 0x04, 0x95, 0xdb, 0x3f, 0xed, 0x50, - 0x47, 0x85, 0x9a, 0x94, 0xbd, 0x2b, 0x8f, 0x60, 0x0f, 0x0d, 0xa7, 0xe0, - 0xa7, 0x1b, 0xdb, 0x13, 0x0a, 0x69, 0xb7, 0x50, 0x36, 0xb1, 0xa3, 0xa0, - 0xa1, 0x98, 0x4f, 0xe2, 0x2f, 0xca, 0xc4, 0xe2, 0x53, 0x9c, 0xbf, 0xdb, - 0xf4, 0x16, 0xbe, 0x12, 0x74, 0x99, 0x65, 0x61, 0xcc, 0x2b, 0x99, 0xaf, - 0x3e, 0x41, 0x9e, 0x77, 0xc9, 0xf0, 0x06, 0xc4, 0x53, 0xf8, 0xf4, 0x50, - 0x19, 0x1d, 0x48, 0xc3, 0x0c, 0xae, 0xd7, 0x6f, 0xd5, 0x4e, 0xcb, 0xcb, - 0xe2, 0x72, 0x4c, 0xc2, 0x8b, 0x0c, 0x3d, 0x0b, 0x57, 0x60, 0xf1, 0x78, - 0x39, 0xc4, 0x11, 0x15, 0x69, 0x58, 0xd0, 0x11, 0x07, 0xb5, 0xce, 0xa5, - 0x29, 0xaf, 0xdc, 0xca, 0x6b, 0x45, 0xee, 0x86, 0x9a, 0x33, 0xe9, 0x2a, - 0xa6, 0x89, 0xa4, 0x8a, 0xe9, 0x42, 0x67, 0x50, 0xba, 0xfe, 0x01, 0x77, - 0x1f, 0x93, 0x8b, 0xbe, 0x8d, 0x08, 0x66, 0x8d, 0x89, 0x20, 0x36, 0x3c, - 0xe3, 0x83, 0x5b, 0x25, 0x0f, 0xcb, 0xa8, 0xb2, 0x9c, 0x8b, 0x4f, 0xbc, - 0x76, 0x75, 0xdf, 0xc5, 0x1c, 0xd0, 0xc8, 0x9b, 0x1e, 0x57, 0x23, 0xfd, - 0xc3, 0x46, 0x6b, 0xde, 0x97, 0x9c, 0x2b, 0xc6, 0x91, 0xd8, 0x87, 0x2e, - 0x30, 0x84, 0x8a, 0xa3, 0xcf, 0xc3, 0x87, 0x34, 0x2e, 0xe1, 0x48, 0x6e, - 0xa8, 0x74, 0xd2, 0xbd, 0x10, 0xbc, 0x7d, 0x6e, 0x0b, 0xa8, 0x92, 0x10, - 0x30, 0x3f, 0xa7, 0x46, 0xf9, 0x16, 0x66, 0x19, 0xb3, 0xa9, 0xea, 0xf7, - 0x8b, 0xd7, 0xbd, 0x97, 0x94, 0x87, 0xab, 0x2f, 0x9a, 0xd6, 0x9a, 0x8b, - 0x40, 0x23, 0x33, 0xa0, 0xde, 0x98, 0x8a, 0x9b, 0x6d, 0x9f, 0xb5, 0xd1, - 0x03, 0x34, 0x90, 0xd2, 0x41, 0x34, 0xa9, 0x75, 0xf8, 0x34, 0x5a, 0xbd, - 0x9a, 0x97, 0x28, 0x52, 0x1e, 0x8e, 0x08, 0x42, 0x38, 0x16, 0x78, 0xb6, - 0x6b, 0x5e, 0x2f, 0xa6, 0x15, 0x97, 0x54, 0xcd, 0x52, 0xb1, 0x3f, 0x3e, - 0xae, 0xcd, 0xa4, 0x3f, 0x9c, 0x04, 0x59, 0x6d, 0xa4, 0x25, 0xb7, 0x26, - 0x47, 0xba, 0xb9, 0xd2, 0x2b, 0x95, 0x53, 0x72, 0x23, 0xf3, 0x5b, 0x1a, - 0xd0, 0x33, 0xb7, 0x6a, 0xc7, 0x61, 0xea, 0x6b, 0xea, 0xbb, 0xc7, 0x7c, - 0x0a, 0xe2, 0xcf, 0x57, 0xb8, 0xd9, 0xb0, 0x26, 0x8f, 0xf0, 0x79, 0xff, - 0x2f, 0x77, 0x4e, 0x53, 0x5e, 0x0e, 0x86, 0x7b, 0x7f, 0xd6, 0xaf, 0x33, - 0x38, 0xa1, 0xd7, 0x75, 0x4f, 0x36, 0xa7, 0xed, 0x20, 0xb7, 0xbd, 0x96, - 0x0f, 0xc3, 0x63, 0xb4, 0x1c, 0x40, 0xdf, 0xd5, 0x1a, 0x3c, 0xdc, 0x15, - 0xab, 0xa3, 0x76, 0x61, 0xd2, 0xb8, 0xf8, 0x0f, 0xdf, 0xbd, 0x9b, 0x4c, - 0xb9, 0xe3, 0x0d, 0x30, 0xf7, 0x2e, 0x18, 0xfe, 0x88, 0xab, 0x49, 0x92, - 0xc4, 0x76, 0x07, 0x14, 0x75, 0x1a, 0x64, 0x8c, 0x5e, 0x56, 0xc6, 0x40, - 0x96, 0xfa, 0x0a, 0x49, 0x97, 0xc4, 0x3f, 0xf2, 0xe1, 0x62, 0x36, 0xa6, - 0x30, 0x5b, 0x0e, 0x61, 0xc9, 0x59, 0x05, 0xbb, 0xe0, 0x7c, 0xcd, 0xbd, - 0x8d, 0x06, 0x1b, 0xff, 0x7e, 0xa6, 0xa9, 0x6e, 0xe0, 0xd8, 0xb9, 0xf9, - 0x84, 0x42, 0xde, 0xff, 0x44, 0x8e, 0x1e, 0xab, 0xe9, 0x63, 0x74, 0x09, - 0x1b, 0x86, 0x34, 0x84, 0x6a, 0xcd, 0xa3, 0x0e, 0x31, 0x3e, 0xeb, 0x75, - 0xa3, 0xdf, 0xee, 0xb0, 0xa3, 0x1e, 0x84, 0x82, 0xcb, 0xb4, 0x09, 0x6e, - 0x5d, 0xb8, 0x08, 0x2b, 0x26, 0x52, 0x97, 0xd6, 0x4d, 0xe2, 0xe8, 0x43, - 0x9e, 0xaf, 0x28, 0xeb, 0x01, 0xd2, 0xac, 0xaf, 0x9e, 0x3b, 0xb3, 0x73, - 0x1d, 0x2e, 0x7f, 0xc1, 0xee, 0xcf, 0x24, 0xbd, 0xab, 0x62, 0xd9, 0xb7, - 0x2d, 0xe4, 0xa3, 0xcb, 0x94, 0x26, 0x6e, 0xb1, 0xb1, 0x73, 0x1d, 0x06, - 0x52, 0xbe, 0xb0, 0xcf, 0x74, 0x8c, 0x77, 0x2c, 0x53, 0x9e, 0x52, 0xa6, - 0xea, 0x07, 0x6d, 0x7f, 0x37, 0x46, 0x31, 0x8e, 0xf8, 0x8b, 0x01, 0x09, - 0x0f, 0xf1, 0x06, 0x25, 0xd7, 0x48, 0xd6, 0x7f, 0xf7, 0x0b, 0xe3, 0x47, - 0x6e, 0xe1, 0xe6, 0x0c, 0xf9, 0xb9, 0x65, 0x10, 0xb8, 0x2f, 0xfa, 0xcb, - 0xe2, 0x7e, 0x52, 0xb3, 0xe1, 0xc1, 0xad, 0x12, 0xa1, 0x90, 0x81, 0x41, - 0xfd, 0xba, 0x03, 0xcb, 0xa6, 0x82, 0x13, 0x37, 0x3a, 0x5f, 0xdd, 0x52, - 0xdc, 0x28, 0xf4, 0x87, 0x59, 0xd5, 0xfb, 0x81, 0x3f, 0x5c, 0x29, 0x45, - 0xbd, 0x73, 0x13, 0x3a, 0x5e, 0x7e, 0xe5, 0xac, 0xd9, 0x07, 0x19, 0x1b, - 0x0b, 0x7e, 0x5d, 0x96, 0x16, 0xc3, 0xcd, 0xca, 0x50, 0xf1, 0x68, 0xaa, - 0x81, 0xe5, 0xa3, 0x98, 0x09, 0x7d, 0x10, 0xcd, 0xa5, 0x3d, 0x82, 0xa6, - 0xb9, 0xbf, 0x1f, 0xa4, 0x82, 0x80, 0x0f, 0x6c, 0xec, 0xf9, 0x9c, 0xa1, - 0x04, 0x5a, 0x9f, 0xe2, 0xe2, 0x1d, 0xb5, 0x12, 0x93, 0x57, 0xc6, 0x60, - 0x85, 0x36, 0xee, 0x3a, 0x01, 0xe2, 0x6b, 0x07, 0x77, 0xac, 0xc2, 0x1f, - 0xb8, 0xdd, 0x43, 0x90, 0x3e, 0x7c, 0xb5, 0xe1, 0x72, 0x19, 0x9b, 0xf5, - 0x83, 0xc0, 0x97, 0xcb, 0x54, 0xad, 0xf0, 0x8a, 0x13, 0x16, 0x3c, 0xc4, - 0x21, 0x33, 0xc1, 0x25, 0xd8, 0xd6, 0x36, 0xb2, 0x74, 0x8d, 0x46, 0x69, - 0x73, 0x28, 0xdd, 0x5a, 0x06, 0xa1, 0x37, 0x08, 0xef, 0x91, 0xd9, 0x9b, - 0x9f, 0x52, 0xa4, 0xa9, 0x48, 0xa5, 0x05, 0x59, 0x84, 0xfe, 0x12, 0x25, - 0x46, 0x03, 0xad, 0x0c, 0xfa, 0x40, 0x13, 0x4b, 0xea, 0xf8, 0x13, 0xaa, - 0x35, 0xa7, 0xb1, 0xe6, 0x4d, 0x91, 0x76, 0xf8, 0x76, 0x12, 0xce, 0xd8, - 0x0f, 0x5f, 0x25, 0x29, 0x52, 0x9d, 0x39, 0x8b, 0xd3, 0x71, 0x7b, 0xe7, - 0x34, 0x70, 0x69, 0x9c, 0x84, 0x76, 0x16, 0x3d, 0xc1, 0xf4, 0xc4, 0xcf, - 0x47, 0x32, 0xfa, 0x81, 0x19, 0x79, 0xa0, 0xcb, 0x3a, 0xbe, 0xeb, 0xbd, - 0x85, 0x1c, 0x75, 0x7d, 0xb2, 0x38, 0x1c, 0x83, 0xaa, 0x8a, 0x51, 0xeb, - 0xc5, 0xc4, 0x2e, 0x12, 0x8f, 0xac, 0xbb, 0x82, 0xc8, 0xf7, 0x26, 0xa2, - 0xa6, 0x9d, 0x8e, 0x61, 0xbd, 0xd4, 0x88, 0x23, 0x31, 0xd4, 0x0b, 0x49, - 0x68, 0x66, 0x52, 0x03, 0x82, 0x01, 0x82, 0x40, 0xa2, 0xfe, 0x7c, 0x49, - 0xeb, 0xa7, 0x31, 0xf7, 0xb2, 0x2b, 0xab, 0x22, 0x1d, 0x9f, 0x03, 0x53, - 0x4c, 0xeb, 0xa6, 0x95, 0x39, 0x5f, 0x3b, 0x1b, 0xfa, 0x40, 0xfb, 0xbe, - 0x60, 0x33, 0x52, 0x0e, 0x33, 0xa3, 0x4b, 0xea, 0x73, 0xc7, 0xde, 0xe0, - 0x0f, 0x52, 0x37, 0x11, 0x64, 0x1a, 0x2c, 0x9a, 0xd1, 0xa7, 0xae, 0x85, - 0x8c, 0x43, 0x0f, 0xab, 0x6a, 0x49, 0xb3, 0xcd, 0xbf, 0xce, 0xba, 0x78, - 0x7d, 0xe9, 0xbd, 0x1a, 0x43, 0x9a, 0xbc, 0x8a, 0x5f, 0x06, 0x0b, 0x75, - 0x3b, 0xb3, 0x9e, 0xae, 0x42, 0xf5, 0xc4, 0xc8, 0xe9, 0x6d, 0xd4, 0x11, - 0x00, 0x29, 0x4e, 0x0d, 0x6f, 0x04, 0xfb, 0x97, 0x06, 0x6d, 0x19, 0x11, - 0x31, 0xfb, 0x23, 0xb2, 0x1f, 0x10, 0x8a, 0x29, 0xf3, 0xfa, 0x82, 0x94, - 0x96, 0x15, 0x00, 0xba, 0x03, 0xa9, 0xb0, 0x45, 0xb9, 0x3d, 0x85, 0x98, - 0xd0, 0xde, 0xdb, 0x80, 0x63, 0x4a, 0x0b, 0xc4, 0xe7, 0xf9, 0x7f, 0xd3, - 0x2c, 0x2e, 0x0d, 0x10, 0xd1, 0x8e, 0x92, 0x06, 0x26, 0x15, 0xf4, 0x7c, - 0xfb, 0x7c, 0x7c, 0x58, 0xe3, 0x6d, 0xde, 0xd9, 0x04, 0x69, 0x10, 0xed, - 0xdb, 0x5e, 0x8c, 0xf3, 0xd4, 0xf5, 0x11, 0xc6, 0xb8, 0x87, 0x32, 0x50, - 0x5f, 0x2e, 0xe8, 0x37, 0x1d, 0xec, 0x2d, 0xf4, 0x05, 0xc3, 0xf4, 0x66, - 0xba, 0x2d, 0x6f, 0xcb, 0x29, 0x5a, 0x4e, 0xa7, 0x9c, 0x14, 0xc8, 0xfa, - 0xf0, 0x02, 0x30, 0x8c, 0x86, 0xf0, 0x09, 0x4c, 0x43, 0xbc, 0x5e, 0x50, - 0x2d, 0x0e, 0xce, 0x9e, 0x73, 0xdc, 0x71, 0x0c, 0xec, 0x1b, 0x89, 0x14, - 0x0e, 0x64, 0xec, 0xd9, 0x60, 0x18, 0xd1, 0x3a, 0x60, 0xad, 0x7f, 0x16, - 0xe6, 0xb5, 0xee, 0x9c, 0x7a, 0x63, 0xa1, 0x64, 0x21, 0xfc, 0x71, 0xb5, - 0xa4, 0xe5, 0x1c, 0x69, 0x1e, 0x5c, 0xa5, 0x98, 0xf6, 0x3b, 0x55, 0x7a, - 0x61, 0xa9, 0xb8, 0x68, 0x22, 0x63, 0x3e, 0x63, 0xb7, 0xba, 0x43, 0xa7, - 0xdc, 0xa7, 0x2a, 0xed, 0x37, 0xe5, 0xa4, 0x89, 0xa8, 0x4e, 0x3f, 0xe8, - 0x26, 0x5f, 0xac, 0xc0, 0x37, 0x6e, 0x8b, 0x5b, 0x5e, 0x1a, 0xe7, 0x0e, - 0x42, 0x6c, 0x3b, 0xa9, 0x6f, 0x05, 0x31, 0x81, 0x4e, 0xfd, 0x8b, 0x2a, - 0xa9, 0xfc, 0x34, 0x27, 0x97, 0x64, 0xde, 0x42, 0xe1, 0xb3, 0x9f, 0x51, - 0x29, 0x47, 0xb2, 0x59, 0x25, 0xef, 0x8e, 0x36, 0x69, 0xec, 0xf7, 0x9f, - 0x66, 0x8b, 0xcb, 0xbd, 0x1e, 0x24, 0xec, 0xd3, 0x9d, 0xcb, 0x8d, 0xc4, - 0x1f, 0x9b, 0xb9, 0xa3, 0x9d, 0xc9, 0xca, 0x0f, 0xac, 0xc0, 0xb1, 0x0b, - 0xf4, 0xa5, 0xb8, 0xf0, 0xe4, 0xd7, 0x15, 0xd0, 0x78, 0xd7, 0xe1, 0xed, - 0x69, 0xc5, 0x38, 0x7d, 0x1b, 0x5e, 0x9c, 0xf9, 0xf1, 0x82, 0xbb, 0x06, - 0xf9, 0xc4, 0xdf, 0x43, 0x17, 0xb3, 0x4e, 0xb4, 0x57, 0x7a, 0x14, 0xd0, - 0xc5, 0x36, 0x47, 0x62, 0x8e, 0xae, 0xe4, 0x31, 0x66, 0x4a, 0xa9, 0x21, - 0x1e, 0x00, 0xb1, 0x01, 0xd1, 0x69, 0xbb, 0x86, 0x2b, 0xad, 0x20, 0x4c, - 0x5d, 0x8a, 0x59, 0x08, 0x5d, 0x83, 0x7f, 0x3b, 0x42, 0xdb, 0x24, 0x8e, - 0x20, 0x14, 0xd5, 0xf8, 0xc9, 0x3a, 0xfc, 0xc9, 0xdf, 0x40, 0x56, 0x53, - 0x06, 0x28, 0xb6, 0x94, 0xe6, 0xa0, 0xff, 0x7d, 0xc5, 0xfa, 0x5e, 0xec, - 0xf0, 0xf3, 0x58, 0xdd, 0xbd, 0x42, 0x92, 0x5a, 0x5a, 0x84, 0xac, 0xb7, - 0x99, 0xff, 0x23, 0xe9, 0xab, 0x78, 0x57, 0xe4, 0xc4, 0xbb, 0xb7, 0xf7, - 0x5b, 0xd4, 0x63, 0x3f, 0x3a, 0xb7, 0xe0, 0xac, 0xf7, 0xb2, 0x97, 0x84, - 0x25, 0x5a, 0x41, 0x1d, 0x9c, 0xe3, 0x10, 0x17, 0xe3, 0x50, 0x9f, 0x86, - 0xe8, 0xcf, 0x75, 0x18, 0x09, 0x2c, 0x1b, 0x69, 0x25, 0x4e, 0x8e, 0x6d, - 0x90, 0xc1, 0x30, 0x0e, 0xb6, 0xc2, 0x97, 0xec, 0x56, 0xb3, 0x29, 0xc9, - 0xe3, 0x4a, 0x98, 0x8b, 0x53, 0xe1, 0x28, 0xfe, 0xc5, 0x0b, 0x42, 0xa1, - 0x5c, 0x07, 0xba, 0xc9, 0x22, 0x20, 0xf9, 0xd5, 0x98, 0x52, 0x3b, 0x39, - 0xf5, 0xe0, 0x0d, 0x3f, 0x04, 0xd0, 0x69, 0x1d, 0xe8, 0x9b, 0x99, 0x71, - 0x0b, 0xad, 0x9e, 0xcd, 0x14, 0xf1, 0x19, 0xaf, 0xd2, 0xd9, 0x4c, 0x52, - 0x4e, 0xab, 0x3f, 0xe5, 0x36, 0x25, 0x14, 0xec, 0x02, 0x54, 0x15, 0x6b, - 0xc8, 0xb0, 0xad, 0xcc, 0x42, 0x08, 0xd2, 0xbf, 0xe7, 0x6c, 0x2e, 0xbd, - 0x5c, 0x19, 0x54, 0xc6, 0x80, 0x8d, 0xa7, 0x2e, 0x9b, 0xfa, 0x07, 0xd3, - 0x9e, 0xe7, 0xa1, 0x3b, 0x62, 0xfb, 0x0c, 0x73, 0xab, 0x2e, 0xe9, 0x91, - 0x91, 0x36, 0x84, 0x44, 0x4c, 0x3a, 0xc2, 0x81, 0x1a, 0x89, 0x8f, 0x55, - 0xe2, 0x26, 0x3b, 0xe5, 0x53, 0x8a, 0x67, 0x7b, 0x4f, 0x66, 0x30, 0x6b, - 0xc7, 0xc9, 0x64, 0x85, 0xfd, 0xa8, 0xd1, 0xf2, 0xf1, 0x80, 0x6f, 0xb5, - 0xd4, 0x5a, 0xf0, 0x0d, 0x13, 0x61, 0x88, 0xe3, 0xda, 0x80, 0x95, 0xaa, - 0xaf, 0x74, 0xd9, 0x30, 0x32, 0xd0, 0x89, 0x2e, 0x73, 0x45, 0x99, 0x84, - 0x0c, 0x7e, 0x48, 0xb7, 0x03, 0x00, 0xdb, 0x39, 0x64, 0x4e, 0x75, 0x08, - 0x4c, 0x69, 0x79, 0x44, 0xec, 0x80, 0xe6, 0x46, 0xcd, 0x76, 0xb5, 0x2a, - 0xb3, 0xf4, 0x1e, 0xa2, 0xd5, 0xb4, 0xd3, 0xe0, 0x77, 0xb7, 0x34, 0x67, - 0x1c, 0xb1, 0xb6, 0xb6, 0xd5, 0x8f, 0x4f, 0xa3, 0x13, 0x14, 0x41, 0xb5, - 0x10, 0x76, 0x8c, 0xa3, 0x9f, 0x02, 0xf2, 0xb4, 0x23, 0xe4, 0x1f, 0x93, - 0xaf, 0x62, 0xc7, 0xd3, 0x2d, 0x96, 0xdf, 0x70, 0xf5, 0x4f, 0x83, 0x3d, - 0x5c, 0x81, 0x60, 0x26, 0xef, 0xdb, 0x63, 0xcb, 0xc4, 0x49, 0x4f, 0x80, - 0x6f, 0x6e, 0x96, 0x94, 0x5b, 0x98, 0x54, 0xd1, 0x59, 0xa1, 0x08, 0x40, - 0x79, 0x65, 0xb1, 0x6f, 0x1e, 0x94, 0x6c, 0xf2, 0x92, 0x8f, 0xd1, 0x70, - 0x3d, 0xfd, 0x77, 0x97, 0x7c, 0x4c, 0x15, 0x2e, 0x38, 0xd5, 0x91, 0x1f, - 0xdf, 0x38, 0xf5, 0xc5, 0x1e, 0x6c, 0x10, 0xd9, 0x03, 0x4d, 0xb3, 0x03, - 0x49, 0x8f, 0xd3, 0xb3, 0xfe, 0xe1, 0x5b, 0xb0, 0x17, 0xa9, 0xdb, 0x64, - 0xf8, 0xfa, 0xcf, 0xf2, 0x02, 0x1c, 0x02, 0x89, 0x8e, 0x39, 0x68, 0xa1, - 0x1d, 0x15, 0x33, 0x79, 0x63, 0xd9, 0x62, 0x36, 0xaa, 0x1b, 0x28, 0x44, - 0x55, 0xff, 0xbb, 0x38, 0x08, 0x69, 0xad, 0x9c, 0x70, 0x37, 0x2b, 0x0f, - 0x62, 0x9a, 0x76, 0x78, 0x7c, 0x71, 0x63, 0xd3, 0x48, 0x21, 0x22, 0x3c, - 0x14, 0xb1, 0xe6, 0x45, 0x7c, 0x4a, 0x6c, 0x4f, 0x4c, 0x9d, 0xf8, 0x87, - 0x9a, 0xd5, 0x62, 0x3f, 0x97, 0x51, 0x0e, 0x70, 0x10, 0xd3, 0xb8, 0x2c, - 0xef, 0x6b, 0xdf, 0xc8, 0xe9, 0xfe, 0x0f, 0xcd, 0x9a, 0x0c, 0x51, 0x1a, - 0x47, 0xec, 0xbd, 0xbb, 0xaf, 0x1e, 0x90, 0xde, 0x94, 0x0b, 0x95, 0x59, - 0xca, 0xa9, 0xa4, 0xe0, 0x33, 0xd7, 0xa3, 0xc0, 0x66, 0xd7, 0xb2, 0x04, - 0x9a, 0xad, 0x89, 0xd1, 0x1c, 0xfc, 0xf2, 0x04, 0x30, 0x69, 0x2c, 0xb3, - 0x07, 0x3c, 0x3d, 0x68, 0x1f, 0xc8, 0xe9, 0x30, 0x14, 0xdc, 0x29, 0xa2, - 0xcc, 0x96, 0x01, 0x3e, 0x0b, 0x45, 0xc4, 0x01, 0x9d, 0xf6, 0x04, 0x73, - 0xe8, 0x4a, 0x65, 0x46, 0x3d, 0x33, 0x47, 0xb8, 0xf6, 0x26, 0x9b, 0x61, - 0x55, 0xd8, 0x1c, 0xa9, 0x34, 0x8f, 0xf3, 0x5d, 0x0d, 0x5d, 0x04, 0x9f, - 0x6d, 0xb1, 0x9d, 0x1a, 0xce, 0x01, 0x7f, 0x9f, 0x20, 0x55, 0xe8, 0x6d, - 0xe0, 0xa7, 0xc4, 0x3b, 0xe8, 0xa0, 0x93, 0xf1, 0xb6, 0xbc, 0x79, 0x01, - 0xd3, 0x66, 0xab, 0xf4, 0x46, 0xb1, 0x2f, 0x67, 0xdb, 0xb5, 0x54, 0xe3, - 0xf2, 0x6d, 0xc2, 0x7b, 0x94, 0x69, 0x73, 0xec, 0xdc, 0x0b, 0x0a, 0xa8, - 0x4b, 0x43, 0x79, 0x38, 0x9c, 0xe2, 0x6d, 0xd0, 0x60, 0xe2, 0xbb, 0xc7, - 0x5e, 0x8a, 0xab, 0xe4, 0x36, 0x70, 0xf8, 0x73, 0x07, 0xd2, 0xf1, 0xa4, - 0xd8, 0xfa, 0x11, 0x25, 0xfb, 0x5a, 0xce, 0xea, 0x93, 0x5d, 0x72, 0x6f, - 0x8f, 0xbd, 0x29, 0x51, 0x90, 0xf2, 0x1f, 0x11, 0xb3, 0xc6, 0x2e, 0x49, - 0xc0, 0xb9, 0x74, 0xd2, 0x05, 0x49, 0x3a, 0x86, 0xf9, 0x9d, 0xfa, 0xed, - 0xc9, 0x7b, 0xec, 0x3e, 0x85, 0xc8, 0xa9, 0x8c, 0xaa, 0x12, 0x8f, 0x06, - 0x0c, 0x6c, 0xb9, 0x76, 0xcd, 0x76, 0x89, 0x1a, 0x69, 0x07, 0xe1, 0x20, - 0xa0, 0x66, 0x9a, 0xdb, 0x3a, 0x68, 0x55, 0xe0, 0x59, 0x80, 0x27, 0x94, - 0x0a, 0xfa, 0x58, 0x7a, 0x35, 0x2d, 0xc4, 0x58, 0x22, 0x46, 0xb0, 0x94, - 0x75, 0xfb, 0x66, 0x55, 0xed, 0xfa, 0x70, 0x98, 0x08, 0xdb, 0x52, 0x72, - 0xe7, 0x2e, 0x55, 0x6d, 0xc8, 0xf6, 0x12, 0x47, 0xea, 0x2e, 0xde, 0x4e, - 0xb3, 0x35, 0x22, 0xd8, 0x8d, 0x74, 0xbe, 0x8b, 0x44, 0x8e, 0x46, 0x71, - 0xd1, 0x05, 0xf0, 0x96, 0x25, 0xad, 0x41, 0xfd, 0xba, 0xc1, 0x2a, 0x15, - 0x19, 0x57, 0x97, 0x30, 0x87, 0x13, 0x15, 0x29, 0x42, 0xca, 0x1a, 0x34, - 0x1b, 0x36, 0x64, 0x5b, 0xf7, 0xbf, 0xc6, 0x1a, 0x8d, 0xd2, 0xf8, 0x26, - 0xe8, 0x2d, 0xb3, 0x80, 0x3e, 0xf1, 0x63, 0xeb, 0x37, 0x97, 0x5a, 0x25, - 0x18, 0xbf, 0xad, 0xbd, 0xff, 0x8d, 0x26, 0xf7, 0x89, 0x5b, 0xcc, 0x0f, - 0xf9, 0x04, 0xd2, 0x16, 0x77, 0x27, 0x52, 0xf6, 0x7e, 0xcc, 0x17, 0xa3, - 0xfd, 0x21, 0xa5, 0xe5, 0xc2, 0x28, 0x5b, 0x0f, 0x88, 0x8d, 0x17, 0xf3, - 0xf7, 0x96, 0x44, 0x6d, 0x92, 0x2f, 0x03, 0x3a, 0xae, 0x08, 0x2b, 0x94, - 0xcb, 0x8e, 0x95, 0xee, 0x9d, 0xbd, 0x6b, 0x26, 0x54, 0x04, 0xb2, 0x7a, - 0xc1, 0x5c, 0x8c, 0x25, 0x8c, 0x5c, 0xf4, 0xe9, 0xbb, 0xf6, 0x7a, 0x99, - 0xa3, 0x28, 0x04, 0x6f, 0x2a, 0x4a, 0x0b, 0x34, 0xb8, 0x3b, 0xd3, 0x49, - 0x7b, 0x13, 0x16, 0x78, 0x5f, 0xb4, 0xb2, 0xc0, 0x3a, 0x74, 0x49, 0x32, - 0x92, 0xc2, 0x68, 0xa9, 0xc2, 0xd0, 0xc1, 0xf3, 0xcd, 0xb3, 0xf0, 0x51, - 0x2b, 0xdb, 0xee, 0x58, 0x72, 0xbb, 0x58, 0x4b, 0xac, 0xc6, 0xdf, 0x12, - 0xf3, 0xb5, 0x6b, 0x47, 0x38, 0x1c, 0x02, 0x3b, 0x26, 0xaf, 0xe1, 0xf5, - 0x22, 0x08, 0x66, 0x79, 0xbf, 0xfb, 0x29, 0xb4, 0xc9, 0x1d, 0xa6, 0x48, - 0x27, 0x7f, 0xf4, 0x67, 0x96, 0xbe, 0x53, 0x66, 0x38, 0x7f, 0x12, 0x1e, - 0x3e, 0x3d, 0x49, 0xcd, 0x5c, 0x08, 0x56, 0x39, 0xca, 0xce, 0x41, 0x54, - 0x50, 0xbb, 0xc4, 0xde, 0x5b, 0xd6, 0x8a, 0xdf, 0xd6, 0xcf, 0x3c, 0xb7, - 0xd3, 0x6c, 0xd4, 0xa8, 0xf2, 0x5f, 0x5d, 0x22, 0x77, 0x4a, 0x99, 0x75, - 0xf9, 0xe9, 0xff, 0x80, 0xc9, 0xf6, 0x8b, 0x26, 0x38, 0x4e, 0x07, 0x2a, - 0x3b, 0xcd, 0x7d, 0x85, 0xb0, 0xff, 0x27, 0x4f, 0x75, 0x24, 0x54, 0xeb, - 0xce, 0x8e, 0xdc, 0xe1, 0x13, 0x8c, 0xfa, 0x8c, 0x31, 0x71, 0x21, 0xef, - 0x92, 0x99, 0x2c, 0xba, 0x3b, 0xc3, 0xbf, 0x90, 0x80, 0xec, 0x48, 0x67, - 0x9a, 0xda, 0xc6, 0xaa, 0x67, 0x08, 0x1d, 0xb3, 0x42, 0xf2, 0xf1, 0x3c, - 0x0b, 0xa3, 0x67, 0xe9, 0xfa, 0x0c, 0x2a, 0x0f, 0x66, 0xf2, 0xc3, 0xe2, - 0xec, 0xe1, 0xc5, 0x5e, 0xa9, 0x4b, 0x7e, 0x21, 0x45, 0xaf, 0x9a, 0x90, - 0x69, 0xac, 0xd6, 0xb8, 0xc6, 0xe5, 0xa2, 0xee, 0x13, 0xcf, 0xfa, 0x0d, - 0xb0, 0x93, 0xe7, 0x29, 0xdd, 0xd5, 0xf2, 0x4d, 0x38, 0x94, 0x9a, 0x06, - 0x46, 0xbf, 0xa7, 0xf8, 0xa2, 0x56, 0xa7, 0xdc, 0xd6, 0xaf, 0x33, 0x58, - 0x52, 0xf5, 0xe6, 0x84, 0xd1, 0xd9, 0x0f, 0x74, 0x0d, 0x74, 0x63, 0x0e, - 0xb8, 0x07, 0x51, 0x4a, 0x16, 0xdf, 0xe0, 0xe1, 0x9d, 0x28, 0xe2, 0xd4, - 0xed, 0xf6, 0x3a, 0x91, 0x66, 0x98, 0xa5, 0xc9, 0x0a, 0xac, 0x44, 0xd0, - 0x6f, 0xd0, 0x78, 0xe3, 0x27, 0xdd, 0xdf, 0xb9, 0xeb, 0x19, 0xf9, 0xb7, - 0xbf, 0x83, 0x9e, 0xa6, 0xdd, 0xc0, 0x97, 0xcf, 0x50, 0xe7, 0x44, 0x70, - 0x64, 0xa9, 0xf9, 0x88, 0xd7, 0xc1, 0xfd, 0x99, 0x30, 0xd3, 0x1d, 0x26, - 0x44, 0x2c, 0xe6, 0xbe, 0x36, 0xd6, 0x5e, 0xad, 0x65, 0xb5, 0xdd, 0x48, - 0xa1, 0xe2, 0x80, 0xfa, 0x23, 0xb4, 0xc7, 0x62, 0x77, 0x3e, 0x53, 0xec, - 0x4b, 0x22, 0x22, 0xcc, 0xf2, 0x22, 0x99, 0x31, 0x62, 0x36, 0xe6, 0x1d, - 0x21, 0x20, 0x49, 0x33, 0xce, 0x12, 0x97, 0x55, 0x93, 0xbd, 0xba, 0x41, - 0xa1, 0xe2, 0xad, 0x20, 0x4c, 0x03, 0x9f, 0x7a, 0x80, 0xb0, 0x78, 0xe7, - 0x50, 0x52, 0x14, 0x2c, 0xac, 0x69, 0x54, 0x61, 0x18, 0x94, 0xae, 0x8c, - 0x6d, 0x1f, 0xab, 0x6c, 0xfa, 0x9f, 0x73, 0xad, 0x62, 0x3a, 0x67, 0x50, - 0x40, 0xa4, 0xf9, 0x34, 0xf3, 0x32, 0x00, 0xd3, 0x06, 0x5b, 0x6a, 0xd0, - 0x96, 0xd4, 0x55, 0x05, 0xce, 0xde, 0x55, 0x8c, 0x21, 0x74, 0xbb, 0xd7, - 0xf5, 0xff, 0xb2, 0xef, 0x2c, 0xe7, 0x72, 0xce, 0x21, 0xe3, 0xe1, 0xb1, - 0xe5, 0x0e, 0x5a, 0xe8, 0x18, 0xe0, 0x4d, 0xe9, 0xf0, 0xee, 0x1d, 0x57, - 0x73, 0x38, 0xbc, 0xa5, 0x1f, 0xbc, 0x96, 0x4f, 0xb0, 0x02, 0x11, 0xfd, - 0xfd, 0x6c, 0x3e, 0xee, 0xd7, 0x16, 0x20, 0xf8, 0x7f, 0x5d, 0x04, 0xa7, - 0xec, 0x3c, 0x85, 0xe4, 0x46, 0x94, 0x0e, 0xe5, 0x9b, 0xc7, 0x8f, 0x34, - 0xdb, 0xe2, 0x13, 0x25, 0x5a, 0xca, 0x1c, 0x30, 0x64, 0x07, 0xc7, 0xeb, - 0x61, 0xbb, 0x02, 0x1b, 0x04, 0xba, 0x83, 0x5f, 0xc6, 0x84, 0x80, 0xe5, - 0xcf, 0x09, 0x74, 0xbf, 0x5e, 0x48, 0xa8, 0x2f, 0x58, 0xb9, 0x73, 0x72, - 0x43, 0xa0, 0xb4, 0x26, 0xff, 0x91, 0xea, 0x0e, 0xe9, 0xe7, 0x6c, 0x5e, - 0xb7, 0xcf, 0x7c, 0xe7, 0x17, 0xbe, 0x39, 0x20, 0x5b, 0x56, 0xae, 0x7c, - 0xf3, 0xc5, 0x2c, 0xd0, 0xe0, 0x05, 0x57, 0x1a, 0x36, 0xc4, 0x68, 0xa4, - 0xbb, 0xc3, 0x29, 0x15, 0xbf, 0x18, 0xa5, 0xb7, 0x01, 0xf8, 0x26, 0xda, - 0xf5, 0x4d, 0xb6, 0xa7, 0x8e, 0xde, 0x08, 0xa8, 0x56, 0xf1, 0xa4, 0xeb, - 0x24, 0xba, 0x84, 0x1d, 0xb5, 0x00, 0x30, 0x77, 0x37, 0x75, 0x4e, 0xe4, - 0x5c, 0x58, 0x83, 0x58, 0x9a, 0xd3, 0x81, 0xad, 0x45, 0x57, 0x88, 0xff, - 0xfe, 0x1f, 0x4b, 0x7f, 0x14, 0xda, 0x89, 0x2b, 0x10, 0x14, 0xc8, 0x38, - 0x8f, 0x32, 0xdb, 0x6c, 0xaf, 0xef, 0x74, 0x85, 0x0a, 0x66, 0x6d, 0xc9, - 0x6c, 0xe7, 0x5f, 0x00, 0x8a, 0xde, 0x86, 0x79, 0xbd, 0x0a, 0x7e, 0x16, - 0xe8, 0xaa, 0x83, 0x19, 0x05, 0xbb, 0x60, 0x84, 0x72, 0x4b, 0xb1, 0xf5, - 0xaf, 0x3c, 0x0a, 0xf0, 0x00, 0x4d, 0x15, 0x7c, 0x0c, 0x93, 0xf2, 0x89, - 0x6a, 0xa1, 0xfd, 0x02, 0xc0, 0xc4, 0xa9, 0xd4, 0x9d, 0xd5, 0xd3, 0x16, - 0x97, 0x46, 0x2f, 0xfc, 0xa8, 0xbd, 0x16, 0x4f, 0xfe, 0xf0, 0x47, 0x3b, - 0x88, 0xe7, 0xb4, 0xe4, 0x43, 0x75, 0x13, 0x87, 0xcb, 0xbd, 0xb8, 0xb8, - 0xf3, 0xa2, 0x4e, 0x99, 0x1c, 0x91, 0xd2, 0x36, 0xb7, 0xcd, 0x15, 0x11, - 0xa4, 0x66, 0x23, 0x5e, 0x93, 0xc3, 0xdd, 0x85, 0x12, 0xbc, 0x64, 0x51, - 0x19, 0x10, 0x07, 0x2d, 0xaf, 0x2c, 0xe6, 0x7c, 0xcc, 0x9c, 0x1a, 0xcd, - 0x7a, 0x2f, 0xcc, 0xfe, 0xf2, 0xee, 0x44, 0x9d, 0xe1, 0x08, 0x8d, 0xd4, - 0x61, 0x0b, 0x8a, 0xa3, 0x9d, 0xd7, 0x8d, 0xe5, 0xd7, 0x1f, 0x88, 0x9e, - 0x52, 0xe8, 0x12, 0xf9, 0xa0, 0x11, 0xde, 0x77, 0xe8, 0x36, 0x3e, 0xeb, - 0x24, 0x68, 0x26, 0x41, 0x80, 0x5f, 0x56, 0x71, 0x01, 0xd2, 0xa9, 0x03, - 0xce, 0xe6, 0x34, 0x63, 0x97, 0xe1, 0xac, 0xcb, 0xcb, 0x22, 0x18, 0x3c, - 0x44, 0xbc, 0x36, 0x87, 0x61, 0x27, 0x0c, 0x39, 0x91, 0xe3, 0x90, 0x1e, - 0x41, 0xc0, 0xdb, 0x46, 0x1a, 0xab, 0xbf, 0x0d, 0xc6, 0x14, 0x58, 0x18, - 0x9a, 0x83, 0xfd, 0x35, 0x10, 0x05, 0x76, 0x09, 0x81, 0xe9, 0xa5, 0x96, - 0xa0, 0x8d, 0x7e, 0x41, 0x41, 0x06, 0x31, 0xe3, 0xce, 0xf9, 0xd3, 0xe3, - 0xfd, 0x45, 0x00, 0xf8, 0xd1, 0x97, 0xcb, 0x50, 0x9c, 0xe2, 0x3b, 0xcb, - 0xdc, 0xce, 0xa6, 0xa7, 0xc2, 0x90, 0xa0, 0xce, 0xff, 0xbd, 0xea, 0x45, - 0x24, 0x8a, 0x3d, 0xf7, 0xad, 0xbc, 0x76, 0xb9, 0x1e, 0xeb, 0x3b, 0xf9, - 0x64, 0xb1, 0xba, 0x04, 0xbc, 0xcc, 0xef, 0xe8, 0x95, 0x11, 0x94, 0xa3, - 0xa9, 0xf9, 0x91, 0x6e, 0x7c, 0x80, 0x65, 0xfe, 0x33, 0x1e, 0x08, 0x67, - 0x66, 0xb7, 0x28, 0x81, 0xe5, 0xe1, 0xdb, 0x67, 0x33, 0x95, 0xa9, 0x13, - 0x49, 0x04, 0x00, 0x3f, 0x40, 0xe4, 0x8a, 0x82, 0xce, 0x74, 0x20, 0x29, - 0x9f, 0xde, 0x35, 0xff, 0x6a, 0xfa, 0x48, 0xd2, 0xe8, 0x8d, 0xa6, 0xb7, - 0xef, 0x92, 0xc8, 0x5e, 0x5e, 0x65, 0xa9, 0x67, 0xff, 0xe8, 0x06, 0x83, - 0x82, 0xc2, 0x24, 0x33, 0xc8, 0x5f, 0x62, 0x10, 0x4c, 0x72, 0x7c, 0xf9, - 0xac, 0xfc, 0x16, 0xfe, 0xeb, 0xf1, 0x00, 0x43, 0x80, 0x96, 0x45, 0xac, - 0x1e, 0xc4, 0xc4, 0x12, 0xd5, 0xf3, 0x04, 0x88, 0xf8, 0x17, 0xaf, 0x61, - 0xee, 0x29, 0xa1, 0x8b, 0x1a, 0xee, 0xfc, 0x09, 0x55, 0xef, 0x8f, 0x01, - 0xa8, 0x42, 0x19, 0x9b, 0x97, 0x90, 0x93, 0x33, 0x00, 0x18, 0x67, 0x57, - 0xc8, 0xbd, 0x05, 0x3f, 0x2e, 0x4f, 0xfe, 0x10, 0xeb, 0x17, 0x3d, 0xf3, - 0xf1, 0xa7, 0x0d, 0xeb, 0x5d, 0xe3, 0xed, 0x18, 0x31, 0x2b, 0x77, 0xaf, - 0x66, 0x39, 0xde, 0x12, 0x97, 0x58, 0x58, 0x43, 0xf6, 0xe9, 0xc5, 0x7a, - 0xdf, 0xde, 0xd8, 0xa6, 0x94, 0x33, 0xc9, 0x79, 0xa4, 0xa7, 0xb9, 0xae, - 0x9a, 0x55, 0x21, 0x97, 0x59, 0x66, 0x3c, 0x1c, 0x69, 0xed, 0x19, 0xd5, - 0xfb, 0xb8, 0x03, 0x4e, 0x5e, 0xae, 0x48, 0xb3, 0xcd, 0xcb, 0xd7, 0x61, - 0xd0, 0x5c, 0x95, 0x2b, 0xbc, 0x50, 0xe1, 0xcf, 0x12, 0xf4, 0xde, 0xab, - 0x97, 0x1e, 0x78, 0x13, 0x2b, 0x4a, 0x68, 0xb1, 0x3a, 0xf1, 0xe2, 0x49, - 0xcc, 0xd2, 0x41, 0xbe, 0xe8, 0x08, 0x9e, 0x2a, 0x3c, 0xa9, 0xa3, 0xad, - 0x61, 0x38, 0x09, 0xa5, 0x36, 0xbd, 0x53, 0xd0, 0xba, 0xa7, 0x4f, 0x5b, - 0x1f, 0x4f, 0xdf, 0x9b, 0x87, 0x09, 0xc1, 0xb2, 0x0f, 0x71, 0x39, 0x72, - 0x65, 0x90, 0x18, 0xe9, 0x5c, 0x3d, 0x71, 0x55, 0xbb, 0xc2, 0x82, 0xf9, - 0x85, 0xbb, 0x57, 0xa7, 0xc4, 0xed, 0xb7, 0xcc, 0xf4, 0x55, 0x3c, 0x72, - 0x5e, 0x23, 0xd6, 0x9c, 0x25, 0xee, 0xc2, 0x36, 0x93, 0xfc, 0x7d, 0x5f, - 0x57, 0xb4, 0xa5, 0x13, 0x19, 0xf3, 0x80, 0xa8, 0x03, 0xe0, 0xf9, 0xc4, - 0x6c, 0xf9, 0xa5, 0xbf, 0x59, 0xfe, 0x15, 0x7e, 0xc2, 0xfc, 0x55, 0xcf, - 0x65, 0x00, 0x2b, 0x00, 0xfa, 0x9a, 0x01, 0x28, 0xbe, 0x91, 0x7d, 0x89, - 0x19, 0x77, 0x0e, 0xb1, 0x72, 0xa1, 0x5c, 0x52, 0xba, 0x66, 0x1c, 0x45, - 0x29, 0xf3, 0x5a, 0xcd, 0x8d, 0x83, 0xea, 0xb9, 0xba, 0x01, 0x2e, 0x6e, - 0xfd, 0xf6, 0x70, 0x39, 0x4c, 0x1f, 0x95, 0xdb, 0x58, 0x80, 0x9b, 0xf3, - 0xb5, 0x6c, 0x71, 0xfd, 0x7c, 0x4f, 0x07, 0x2d, 0x35, 0x45, 0xaa, 0x35, - 0x92, 0x0d, 0x70, 0x4b, 0x87, 0x29, 0x68, 0x27, 0x88, 0xb7, 0xef, 0x4b, - 0x8c, 0xff, 0xbf, 0x9f, 0xec, 0x9d, 0x7b, 0x37, 0x27, 0x20, 0x99, 0xda, - 0x7c, 0x22, 0x24, 0xce, 0x7a, 0x3a, 0xbd, 0x92, 0xcd, 0xba, 0xe5, 0xaf, - 0x93, 0x55, 0xa9, 0x42, 0x51, 0x61, 0xcf, 0xcc, 0x6b, 0x97, 0x83, 0x07, - 0xc3, 0x55, 0xe3, 0x48, 0x45, 0x0a, 0x4f, 0x24, 0xd6, 0x8e, 0x52, 0x27, - 0xd2, 0x81, 0xf8, 0xe1, 0x92, 0x4a, 0x95, 0xbe, 0x63, 0x75, 0xe0, 0x72, - 0x12, 0xac, 0x7d, 0x28, 0x56, 0x0e, 0x69, 0xdb, 0x69, 0x72, 0xda, 0xf1, - 0xc5, 0x0e, 0x50, 0x56, 0x7d, 0x82, 0xf2, 0x21, 0x15, 0xc0, 0x04, 0x49, - 0x77, 0xc6, 0xe5, 0x24, 0xe8, 0xfc, 0xf3, 0xc0, 0xca, 0xf2, 0xd8, 0xca, - 0x7a, 0x36, 0x38, 0xbf, 0xa4, 0xb2, 0x8d, 0x0b, 0x7a, 0xbf, 0x94, 0xed, - 0xd9, 0x4e, 0xec, 0x13, 0x33, 0xa4, 0x21, 0x83, 0xef, 0x25, 0x0e, 0x0f, - 0x02, 0x57, 0x88, 0x0d, 0x96, 0x06, 0x13, 0x59, 0xa1, 0xdc, 0xc4, 0x0a, - 0x33, 0xb0, 0x8f, 0x8b, 0x8d, 0xbe, 0xea, 0xff, 0x0b, 0xac, 0xa6, 0x64, - 0xd1, 0xe0, 0xdc, 0x39, 0x37, 0x30, 0x0e, 0x67, 0x6d, 0x1f, 0x37, 0x38, - 0xc1, 0xd3, 0xb6, 0x92, 0x09, 0xf1, 0xcc, 0x80, 0x51, 0xea, 0x11, 0x28, - 0x03, 0xe7, 0xc0, 0xae, 0xff, 0x90, 0x34, 0x81, 0xc7, 0xb1, 0xcf, 0x1b, - 0x8f, 0xe1, 0x70, 0x1b, 0x48, 0xc0, 0xc7, 0x42, 0x19, 0x40, 0xf7, 0x02, - 0xde, 0x00, 0xe0, 0x13, 0x89, 0xdd, 0x13, 0x02, 0xf1, 0x35, 0xc1, 0x53, - 0x0c, 0x37, 0xc4, 0x81, 0xb5, 0xcb, 0x08, 0xce, 0xbe, 0xf3, 0xe0, 0x11, - 0x1b, 0xb5, 0x97, 0xca, 0x2a, 0x91, 0x1b, 0x6c, 0x17, 0xa8, 0x75, 0x40, - 0xc4, 0xbe, 0x6a, 0x81, 0x15, 0xe9, 0xc7, 0x78, 0x36, 0xec, 0x0a, 0xba, - 0x26, 0xc6, 0x03, 0x8b, 0x9f, 0x27, 0x3e, 0x36, 0xdd, 0xbb, 0x4b, 0xe6, - 0xbd, 0x66, 0x00, 0xb6, 0x56, 0x13, 0x8f, 0xa5, 0xcb, 0x48, 0x11, 0x20, - 0xa7, 0x1f, 0x9c, 0xc6, 0x16, 0xcc, 0x08, 0xe1, 0xa9, 0x33, 0x36, 0xfe, - 0x60, 0x42, 0xce, 0x51, 0x98, 0x77, 0x0c, 0x22, 0xe2, 0x99, 0xcf, 0xb5, - 0x07, 0xdf, 0x99, 0xf7, 0xfd, 0x90, 0x56, 0x37, 0x62, 0x62, 0x7e, 0x78, - 0x5f, 0x60, 0x8d, 0x0e, 0x25, 0x74, 0xbd, 0x4d, 0x42, 0x70, 0xd6, 0x9b, - 0x9a, 0x24, 0xfe, 0x58, 0x4b, 0x8d, 0xc1, 0x78, 0x73, 0x77, 0x81, 0x86, - 0x10, 0x61, 0x91, 0xc7, 0x62, 0xae, 0x1d, 0xe9, 0xc7, 0xe2, 0x08, 0x90, - 0x45, 0xd6, 0xad, 0x39, 0x61, 0x05, 0xd8, 0xaa, 0x5b, 0x7e, 0x82, 0x24, - 0xdc, 0x6a, 0xf2, 0x9d, 0xf7, 0x30, 0xdf, 0xc5, 0x79, 0x43, 0xdb, 0xa6, - 0x3f, 0x09, 0x5c, 0xbe, 0x98, 0x26, 0x79, 0x99, 0x02, 0xe7, 0xc7, 0x56, - 0x18, 0xc0, 0x12, 0xdf, 0x2b, 0xe0, 0x1d, 0x57, 0xe5, 0xd4, 0x8f, 0x8b, - 0xfc, 0x2c, 0x1d, 0xa6, 0x7c, 0x79, 0xc3, 0x48, 0x2f, 0xc7, 0xcf, 0x97, - 0x85, 0x69, 0x31, 0x46, 0xe9, 0x52, 0xee, 0xd3, 0xe9, 0x5a, 0x7d, 0x26, - 0x35, 0x22, 0xa4, 0x53, 0x02, 0x41, 0x66, 0x62, 0xbd, 0x4b, 0xad, 0x02, - 0x6b, 0x21, 0xdf, 0x16, 0x5b, 0x3d, 0xa7, 0xd6, 0x3d, 0xe1, 0x5b, 0xe9, - 0x05, 0xa0, 0x30, 0x81, 0x62, 0x1f, 0x73, 0x3f, 0x96, 0xc8, 0x71, 0x72, - 0xcc, 0x1d, 0xbf, 0xae, 0xcf, 0xcf, 0xb1, 0x31, 0xa7, 0xdb, 0x7f, 0x16, - 0x82, 0xfd, 0x3c, 0xe7, 0x6f, 0xb2, 0x3c, 0xd5, 0x77, 0xd2, 0x57, 0xb8, - 0x82, 0xbb, 0x2f, 0x75, 0x6e, 0x68, 0x31, 0x3a, 0x2a, 0x7a, 0xde, 0x6d, - 0x2a, 0x97, 0x53, 0x91, 0xa6, 0x0c, 0xac, 0xe5, 0x3d, 0xe8, 0xd0, 0xef, - 0x8e, 0x96, 0x59, 0x5c, 0xbd, 0x13, 0x0f, 0x71, 0xc6, 0x70, 0x40, 0x3a, - 0x32, 0x19, 0xa9, 0x2e, 0x36, 0xbf, 0x06, 0xc1, 0x95, 0xc8, 0x95, 0xfe, - 0x2b, 0x7e, 0x8c, 0x7e, 0x1d, 0x08, 0x19, 0x19, 0xf9, 0x68, 0x91, 0xcc, - 0x07, 0xd0, 0x96, 0xb5, 0x9e, 0xc8, 0x28, 0xf6, 0x5e, 0x30, 0xcd, 0xbd, - 0xc8, 0x02, 0x13, 0xb0, 0x2d, 0x9f, 0x10, 0xb0, 0x60, 0xc2, 0xef, 0xb8, - 0xc2, 0x43, 0x9b, 0xa6, 0xe1, 0x7d, 0x7d, 0x50, 0x90, 0x9c, 0x55, 0xfe, - 0x7f, 0x3f, 0x74, 0x30, 0x64, 0x49, 0x7e, 0xcc, 0x14, 0x1b, 0x55, 0x4d, - 0x92, 0x70, 0x0d, 0x8f, 0x99, 0x99, 0x0d, 0xbd, 0x59, 0x6f, 0x07, 0xe4, - 0xb3, 0x88, 0x57, 0xd6, 0x12, 0x32, 0x4d, 0x78, 0x47, 0x7f, 0xe9, 0xf5, - 0xf1, 0x43, 0x3f, 0x30, 0x04, 0x3a, 0xe0, 0xba, 0x99, 0x64, 0xb0, 0x4c, - 0xa3, 0xd3, 0xa6, 0xeb, 0x1c, 0x6e, 0x3a, 0x98, 0x0d, 0xb3, 0x91, 0x5f, - 0xb5, 0x80, 0x46, 0x8f, 0x15, 0xa4, 0x97, 0x32, 0x2b, 0x59, 0x4e, 0x9d, - 0x5b, 0x72, 0x8d, 0xa3, 0x36, 0x61, 0xa3, 0xde, 0x43, 0x71, 0x08, 0xec, - 0x6f, 0xa9, 0x4c, 0x8c, 0x2f, 0x81, 0xdc, 0xb4, 0x6a, 0x20, 0xa1, 0x9a, - 0x6b, 0x7b, 0xa5, 0xa5, 0x00, 0xab, 0x69, 0xac, 0x8e, 0x4b, 0x24, 0x14, - 0x9c, 0x17, 0xb5, 0x5e, 0xdf, 0x14, 0x79, 0xce, 0xf7, 0x9f, 0x4a, 0xd7, - 0xf8, 0x75, 0x50, 0xa6, 0x3b, 0x13, 0x26, 0x5d, 0xeb, 0x01, 0xd1, 0x48, - 0xf9, 0x89, 0x33, 0x5f, 0x6f, 0x44, 0xf9, 0x31, 0xc4, 0x5a, 0x91, 0x74, - 0x44, 0x5e, 0x8f, 0xe0, 0xee, 0x91, 0x49, 0x73, 0x26, 0x47, 0x68, 0x43, - 0xce, 0xd5, 0x36, 0x8f, 0x9f, 0xf4, 0x3c, 0xd2, 0x03, 0x4c, 0x90, 0x54, - 0x2f, 0x9e, 0x3d, 0x16, 0x42, 0xe7, 0x00, 0xdb, 0xc3, 0xef, 0x94, 0xa3, - 0x97, 0x07, 0x81, 0x9d, 0xf3, 0xce, 0x16, 0xc4, 0xde, 0xd9, 0x31, 0x17, - 0x21, 0xca, 0xca, 0xaa, 0xba, 0x0b, 0x7a, 0xb8, 0xa6, 0xca, 0x66, 0xf7, - 0x56, 0x7b, 0xa6, 0x70, 0xd2, 0x02, 0x94, 0x0c, 0x55, 0x60, 0xb2, 0xbf, - 0x49, 0xe2, 0x57, 0xf4, 0x70, 0xcd, 0xd6, 0xb6, 0x3b, 0x8a, 0x6b, 0xaf, - 0x56, 0x2c, 0x0b, 0x1c, 0xf2, 0x36, 0x2b, 0xbc, 0x48, 0xf5, 0x86, 0x77, - 0xb5, 0x32, 0xf2, 0x05, 0xa2, 0xba, 0x7f, 0x90, 0x0a, 0x47, 0x44, 0xf8, - 0xe3, 0x88, 0x21, 0xc8, 0x6b, 0x6f, 0x44, 0xed, 0x3f, 0x84, 0x32, 0x8f, - 0xad, 0x1f, 0x0e, 0xc0, 0x12, 0x87, 0xcb, 0x29, 0xc1, 0x9e, 0x57, 0xb4, - 0x59, 0xd5, 0x41, 0xfc, 0xe0, 0x03, 0x36, 0xd4, 0x77, 0xc7, 0x89, 0xb6, - 0x96, 0x8f, 0x44, 0x80, 0x1a, 0x3e, 0x45, 0x93, 0xec, 0xfe, 0xc4, 0x60, - 0x7e, 0x9b, 0x83, 0x19, 0x49, 0x53, 0x29, 0x7d, 0x9a, 0x4c, 0x1e, 0x42, - 0x36, 0x0a, 0xe2, 0x2f, 0x17, 0xb3, 0x44, 0xc4, 0xbf, 0x3c, 0xa4, 0xb5, - 0x80, 0x3c, 0x25, 0x44, 0x0d, 0xb3, 0x88, 0x9b, 0xfe, 0xc4, 0x93, 0x4b, - 0xd9, 0x6a, 0x4e, 0x74, 0xe2, 0xc9, 0xab, 0x81, 0x57, 0x4a, 0xce, 0x45, - 0xaf, 0x2a, 0x71, 0xa8, 0x10, 0x3d, 0x7c, 0xe3, 0x3a, 0x33, 0x8b, 0x51, - 0x98, 0x71, 0x7b, 0xce, 0x25, 0xc4, 0xac, 0xda, 0x5f, 0x72, 0xd6, 0x82, - 0x91, 0x33, 0x55, 0xe0, 0xc7, 0xfa, 0x8d, 0x2c, 0x72, 0x03, 0xd4, 0xed, - 0x90, 0xa8, 0x97, 0x6f, 0x62, 0xbe, 0x5f, 0xfa, 0x2a, 0x61, 0x1d, 0x53, - 0xd8, 0x91, 0x19, 0x8e, 0x84, 0x89, 0x8a, 0xf2, 0x66, 0x76, 0x11, 0xa0, - 0xae, 0x29, 0x76, 0x69, 0x45, 0x32, 0x52, 0x05, 0x13, 0x3a, 0x49, 0x53, - 0x6e, 0x20, 0x40, 0x3b, 0x4b, 0xb7, 0x45, 0x4c, 0xf3, 0xcb, 0xb2, 0x9a, - 0xfc, 0x97, 0x1e, 0xb2, 0xd1, 0x3c, 0xa6, 0xf3, 0x9e, 0xa6, 0xac, 0xf9, - 0x11, 0xba, 0x8c, 0x62, 0xe1, 0x62, 0x01, 0x82, 0x3b, 0x45, 0xf3, 0x28, - 0xc7, 0x9e, 0xe8, 0x3e, 0x6e, 0xa5, 0xfd, 0x5f, 0x56, 0x61, 0xc8, 0x3a, - 0x31, 0x93, 0x6b, 0xc4, 0x73, 0x3f, 0xf3, 0x5a, 0x24, 0x4c, 0x07, 0x3d, - 0x62, 0xef, 0x8f, 0x2e, 0x3c, 0x2e, 0x5e, 0x8d, 0xaf, 0xec, 0xb5, 0x65, - 0x3f, 0x22, 0xa2, 0x96, 0x31, 0xa4, 0x9f, 0x05, 0x40, 0x71, 0xd7, 0xc4, - 0x67, 0x4d, 0x27, 0x7a, 0x43, 0x8e, 0x9e, 0xd9, 0x72, 0xb1, 0x5e, 0x11, - 0x4b, 0xbc, 0x79, 0x92, 0xab, 0xa0, 0x42, 0xda, 0x3f, 0xfd, 0xf2, 0xa9, - 0x40, 0x81, 0x64, 0xbb, 0xe1, 0x29, 0xac, 0x96, 0xc8, 0x31, 0x02, 0xa3, - 0xe5, 0x50, 0x9e, 0x48, 0x3e, 0xd1, 0xdf, 0xee, 0x85, 0x78, 0x23, 0x8b, - 0x33, 0xd8, 0xd7, 0x55, 0xde, 0x90, 0x86, 0xd8, 0x47, 0xe1, 0xc0, 0x1e, - 0x8c, 0x75, 0x8b, 0x20, 0xe7, 0x90, 0xa5, 0xc1, 0x54, 0x15, 0x8c, 0x1f, - 0x44, 0x54, 0xfd, 0x3d, 0x84, 0x91, 0x9d, 0xd9, 0x5b, 0x70, 0x14, 0x44, - 0xaa, 0x37, 0xe0, 0xa9, 0x5d, 0xcc, 0xdc, 0xa0, 0xf6, 0x9f, 0x2a, 0x55, - 0x5c, 0x95, 0xde, 0x8a, 0x13, 0x62, 0xd7, 0xa3, 0xad, 0x83, 0xab, 0x45, - 0x8f, 0x89, 0x8f, 0x1e, 0xc7, 0xce, 0xd3, 0xdb, 0xbf, 0x46, 0x4b, 0xd2, - 0x78, 0x11, 0x91, 0xbd, 0xfa, 0xb4, 0x40, 0xc5, 0x4a, 0xf5, 0xa4, 0xdf, - 0xe5, 0x63, 0xe1, 0x21, 0x9c, 0x2d, 0x8f, 0x2f, 0x6d, 0x7f, 0xe7, 0xf9, - 0xc6, 0xc7, 0x24, 0xb5, 0xc0, 0xf9, 0x1c, 0x8a, 0xd7, 0xea, 0x8e, 0x54, - 0xce, 0xb9, 0x6c, 0x6e, 0xf5, 0xa2, 0x52, 0x4d, 0xf1, 0x90, 0x24, 0x7b, - 0x99, 0x4d, 0x69, 0xe6, 0xf0, 0xd2, 0xa5, 0x97, 0xcc, 0x16, 0x65, 0xef, - 0x2c, 0xe8, 0xad, 0x6f, 0x5a, 0xc1, 0xb9, 0x95, 0xe0, 0xcd, 0x58, 0x39, - 0x25, 0x9e, 0x10, 0xa3, 0xb6, 0xf8, 0x72, 0xa8, 0xaf, 0x57, 0x40, 0xf4, - 0xf7, 0xad, 0xa8, 0xbe, 0x2d, 0x2b, 0x31, 0xd1, 0x9b, 0xf8, 0x2d, 0x0c, - 0x86, 0x12, 0x13, 0xcb, 0x8e, 0xb1, 0x0a, 0xb5, 0x74, 0x20, 0xbc, 0x09, - 0xbd, 0xd7, 0x14, 0x72, 0x01, 0x9b, 0xd7, 0xfa, 0x21, 0x6e, 0xc6, 0xa4, - 0xd6, 0x73, 0x05, 0x17, 0x20, 0x65, 0x57, 0x0a, 0x26, 0x25, 0x6f, 0xe7, - 0x25, 0x81, 0x8f, 0xc0, 0xa3, 0xb1, 0x38, 0xd7, 0xdb, 0x24, 0x4d, 0x14, - 0x54, 0xfe, 0x4d, 0x26, 0x56, 0x7a, 0xad, 0x7b, 0x5a, 0x3b, 0x99, 0x98, - 0x4a, 0x20, 0x53, 0xca, 0x40, 0x2d, 0x59, 0x7c, 0x48, 0xa2, 0x75, 0xc4, - 0x1f, 0xe7, 0xe1, 0x20, 0x82, 0xb2, 0x7e, 0xda, 0x08, 0xb8, 0x22, 0x94, - 0xea, 0x1e, 0x37, 0xf3, 0x9f, 0xb4, 0x3a, 0x05, 0xa9, 0xcf, 0x58, 0xb2, - 0x7c, 0x8b, 0xb3, 0x2e, 0x31, 0xff, 0xd7, 0x56, 0x83, 0xb5, 0x15, 0x07, - 0x2f, 0x2b, 0x2e, 0xfa, 0x46, 0x69, 0x4a, 0x80, 0x6e, 0x0e, 0x41, 0x9e, - 0x9f, 0xca, 0xf7, 0xbf, 0x68, 0x35, 0x35, 0x50, 0xa2, 0x8b, 0xb0, 0x5b, - 0xc2, 0x79, 0xb8, 0x41, 0x72, 0xd9, 0x56, 0x89, 0x23, 0x5c, 0x06, 0x51, - 0x34, 0x4d, 0x45, 0x07, 0x43, 0x44, 0x50, 0x7c, 0x65, 0xc0, 0x6f, 0x78, - 0x6f, 0x78, 0xc8, 0x23, 0xaa, 0xea, 0x01, 0x69, 0xe1, 0xc9, 0x9d, 0xa5, - 0xa7, 0x72, 0xb9, 0xec, 0xcd, 0x27, 0x1b, 0x5a, 0xf0, 0x84, 0x41, 0xbd, - 0x17, 0x3f, 0xd1, 0x95, 0x97, 0xcf, 0x7f, 0x9f, 0xb8, 0xd6, 0xf6, 0xe1, - 0xdf, 0x2f, 0xe7, 0xb8, 0x0c, 0x18, 0xe3, 0xcd, 0x55, 0xc5, 0x9b, 0x12, - 0xfb, 0xc9, 0x64, 0x3b, 0x23, 0xd4, 0x55, 0x41, 0xf3, 0xed, 0x8a, 0xe5, - 0x75, 0x70, 0x62, 0x33, 0xa8, 0x83, 0x34, 0x41, 0xfa, 0xe1, 0xc8, 0x40, - 0xe3, 0xda, 0x27, 0x37, 0xdd, 0xa2, 0x3d, 0xb0, 0xd2, 0xa3, 0x2b, 0x87, - 0x08, 0x54, 0xf7, 0xd9, 0xac, 0x0a, 0x76, 0x41, 0x58, 0xfb, 0xbf, 0xda, - 0xca, 0xb0, 0xb3, 0x8b, 0x43, 0x08, 0xda, 0xb1, 0x8b, 0x12, 0x6d, 0x86, - 0x53, 0x11, 0x9b, 0x3a, 0x12, 0x2d, 0x58, 0x5e, 0xd7, 0x36, 0xba, 0x44, - 0xa2, 0x10, 0xa7, 0x2f, 0xbb, 0x62, 0xdc, 0xfa, 0xa2, 0x5f, 0xb5, 0xc5, - 0x95, 0xc5, 0xe2, 0x40, 0xde, 0x64, 0xcd, 0x96, 0xa2, 0x8e, 0xae, 0xda, - 0x84, 0xe1, 0xcb, 0xc7, 0x5a, 0x8f, 0x46, 0x60, 0xdf, 0xfe, 0x36, 0x94, - 0xd4, 0x21, 0xbf, 0xc9, 0xbb, 0x33, 0x32, 0xad, 0x0f, 0x56, 0x48, 0x1f, - 0x6e, 0xdb, 0x16, 0x3c, 0x38, 0x8d, 0x01, 0x26, 0x20, 0x5a, 0x8b, 0x9a, - 0x3e, 0x49, 0x69, 0xa5, 0xff, 0x4e, 0x14, 0x74, 0xbd, 0x47, 0x5c, 0xa9, - 0x80, 0x64, 0xe7, 0xe9, 0xff, 0x31, 0x1e, 0xce, 0x2b, 0x6d, 0x5d, 0x24, - 0xd9, 0x1b, 0x70, 0xbc, 0x4f, 0xd0, 0x77, 0xbd, 0x06, 0x8b, 0x46, 0xe3, - 0x2b, 0x9d, 0xc0, 0x5c, 0x53, 0x3b, 0x21, 0x03, 0x44, 0xea, 0xb0, 0xd5, - 0x6a, 0xb6, 0xcd, 0x64, 0x5c, 0x60, 0x84, 0xca, 0x2b, 0xd3, 0x47, 0x80, - 0x9f, 0x16, 0xff, 0x7e, 0xc7, 0x93, 0xd6, 0xcf, 0x61, 0x6e, 0xe3, 0x54, - 0x41, 0x80, 0xf0, 0xc6, 0x24, 0x0f, 0x2a, 0xad, 0x6d, 0x0c, 0xf4, 0x9f, - 0x54, 0xe6, 0xdd, 0xe3, 0xae, 0x14, 0x07, 0x54, 0x96, 0x80, 0x00, 0xd6, - 0xcf, 0x17, 0x59, 0xa3, 0xe7, 0x7a, 0x82, 0x48, 0x5c, 0x9a, 0x85, 0xbe, - 0x4c, 0xd2, 0x4a, 0x5f, 0xb6, 0xd0, 0xcd, 0x41, 0x4c, 0x34, 0x2c, 0x8e, - 0x22, 0x9a, 0x71, 0xf5, 0xaf, 0x44, 0x5a, 0x48, 0x62, 0x3f, 0x85, 0x5b, - 0xa0, 0x2d, 0xb9, 0xc9, 0x61, 0x66, 0x6e, 0xa1, 0xdb, 0x3a, 0x89, 0xf9, - 0x77, 0xbc, 0x12, 0x4f, 0x60, 0xac, 0x49, 0x8b, 0x01, 0x2d, 0x5b, 0xd3, - 0x8b, 0xe8, 0xf9, 0x74, 0x25, 0x15, 0x36, 0x39, 0x7c, 0x20, 0x29, 0x81, - 0x46, 0x24, 0x40, 0x07, 0x24, 0x17, 0xb4, 0x4b, 0x46, 0x2d, 0x66, 0xc3, - 0xfe, 0x36, 0x56, 0x0d, 0x0f, 0xad, 0xa0, 0x6f, 0x14, 0x52, 0x7d, 0x9b, - 0x6b, 0xae, 0x7b, 0x32, 0xbd, 0xc9, 0x19, 0x02, 0xa8, 0x02, 0x44, 0xb9, - 0xee, 0x30, 0x88, 0xa0, 0x9f, 0x6c, 0x0f, 0xa7, 0x0c, 0xf2, 0x3e, 0x20, - 0x24, 0xaa, 0xb3, 0x73, 0x9d, 0x85, 0x90, 0xa2, 0xd2, 0x5b, 0x90, 0x70, - 0x06, 0xf3, 0x68, 0xa3, 0x5b, 0x4a, 0x32, 0x2b, 0x95, 0xc5, 0x64, 0x3f, - 0x49, 0xa4, 0x96, 0xae, 0xe6, 0x1e, 0x35, 0xc0, 0x86, 0x8d, 0x5a, 0x58, - 0x8d, 0xcb, 0x85, 0xab, 0xa7, 0xe3, 0x28, 0xc1, 0xd4, 0x88, 0xcf, 0x87, - 0x1d, 0x71, 0x06, 0x84, 0x66, 0x4d, 0x18, 0x7e, 0xdb, 0xc3, 0xb0, 0x89, - 0xdd, 0x02, 0xfa, 0x30, 0xff, 0xe8, 0xf2, 0x04, 0x66, 0xd7, 0x91, 0xb8, - 0x6f, 0x38, 0x3c, 0x1d, 0xfb, 0xc2, 0x64, 0xe7, 0xe7, 0x52, 0x1e, 0xdf, - 0x6a, 0xd0, 0x99, 0x3e, 0x2e, 0x12, 0xfd, 0x87, 0x2b, 0xd1, 0xb6, 0xfd, - 0xcf, 0xd4, 0xed, 0x40, 0x85, 0x29, 0xa0, 0x8c, 0x62, 0x62, 0x6a, 0x44, - 0x63, 0xfc, 0x42, 0x04, 0xce, 0x5a, 0x1a, 0xbf, 0x3e, 0x38, 0x7a, 0x4e, - 0xb0, 0x71, 0xb3, 0x67, 0xbe, 0x37, 0x71, 0x36, 0x45, 0xfb, 0x4c, 0x13, - 0xb2, 0xde, 0x4d, 0x82, 0x0b, 0xe6, 0x21, 0xd8, 0x5b, 0x42, 0xb6, 0x6e, - 0xc2, 0x22, 0x8a, 0x2d, 0x86, 0xb6, 0x6e, 0x1b, 0x7f, 0x52, 0x4e, 0xbb, - 0xc5, 0x8e, 0xf7, 0xeb, 0xb8, 0x54, 0x99, 0xff, 0x4c, 0xda, 0x5a, 0x95, - 0xcf, 0x49, 0x50, 0x67, 0xdd, 0xc7, 0x31, 0x58, 0x55, 0xda, 0xb0, 0xa3, - 0x47, 0x52, 0x3a, 0x5f, 0x2c, 0x28, 0x1d, 0xbf, 0xc1, 0x0c, 0x57, 0xa8, - 0x61, 0x62, 0xa2, 0xd1, 0x5a, 0x0d, 0x21, 0xaa, 0x1b, 0xf7, 0x62, 0xe2, - 0xc0, 0xa1, 0xf6, 0xda, 0x92, 0x78, 0xa9, 0x38, 0xc7, 0x38, 0x3a, 0x4e, - 0xea, 0x53, 0xe4, 0xab, 0xe6, 0x86, 0x52, 0xb7, 0xa7, 0x27, 0x26, 0x4e, - 0x4a, 0xc9, 0x05, 0x49, 0x4a, 0x86, 0x93, 0x6f, 0x9b, 0x13, 0x75, 0x98, - 0x00, 0x7c, 0x0f, 0xab, 0xd9, 0x56, 0xac, 0xcd, 0xe5, 0x05, 0xfd, 0x26, - 0x5e, 0x81, 0xfc, 0xc2, 0xf8, 0x15, 0xca, 0x9b, 0xe0, 0x95, 0x5b, 0xb0, - 0x35, 0x09, 0x74, 0x21, 0x97, 0x8a, 0x8d, 0xfd, 0xc8, 0xbf, 0x43, 0xfb, - 0xa7, 0x95, 0x54, 0x35, 0xf2, 0xc8, 0xea, 0x27, 0x34, 0xa8, 0x30, 0xc7, - 0xc9, 0xb1, 0x2f, 0x44, 0xb2, 0x7f, 0x39, 0x7a, 0x5d, 0x26, 0x6a, 0x60, - 0x24, 0x61, 0x24, 0x7d, 0xe5, 0x71, 0xda, 0xd1, 0x6f, 0x37, 0x4b, 0x40, - 0x07, 0x00, 0xec, 0x09, 0xfb, 0xcd, 0x79, 0x27, 0xf3, 0x4c, 0x2a, 0x82, - 0x94, 0x07, 0x75, 0xf0, 0x51, 0xb3, 0xa6, 0x1c, 0x2b, 0x57, 0x9c, 0x25, - 0xa4, 0x16, 0x5f, 0x66, 0x48, 0xc7, 0xc7, 0xd4, 0x20, 0x37, 0x3d, 0xd2, - 0xad, 0xd5, 0xcf, 0xa8, 0x91, 0x20, 0x61, 0x32, 0x55, 0x66, 0xe3, 0xb7, - 0xe8, 0xe7, 0x19, 0x97, 0xdc, 0x7a, 0x50, 0x28, 0x84, 0xaf, 0xdc, 0x2c, - 0xbb, 0x01, 0x26, 0xe4, 0x35, 0x51, 0xd7, 0x2a, 0x84, 0xe3, 0xbd, 0x22, - 0xb0, 0x53, 0x1b, 0x3e, 0x4f, 0xba, 0x47, 0xb5, 0x84, 0x5c, 0xc6, 0x6d, - 0x0b, 0xd6, 0x30, 0x52, 0x92, 0x82, 0x06, 0xa7, 0xf1, 0xb5, 0x57, 0x6c, - 0x37, 0x85, 0x47, 0x2d, 0x80, 0xab, 0x3e, 0xf9, 0x4f, 0x8c, 0xd0, 0xac, - 0x4b, 0xe9, 0x7b, 0xe3, 0x91, 0x24, 0x89, 0x2f, 0x84, 0xeb, 0x6b, 0x24, - 0x46, 0x45, 0xfa, 0x10, 0x19, 0x24, 0x56, 0xde, 0xb6, 0x86, 0x69, 0x43, - 0x4d, 0x21, 0xce, 0xca, 0x24, 0x2c, 0x00, 0x7c, 0x3b, 0x99, 0xdf, 0x7c, - 0xf9, 0x36, 0x4b, 0x65, 0x8d, 0xe7, 0x3d, 0x6b, 0x88, 0x6b, 0xeb, 0x55, - 0x24, 0xd9, 0xdb, 0xd7, 0xfe, 0xf5, 0xb3, 0x38, 0xc5, 0x50, 0xa2, 0x4f, - 0x88, 0xff, 0xcd, 0xdb, 0x4a, 0x81, 0x14, 0xb7, 0xe2, 0x37, 0xbc, 0xe7, - 0xcf, 0x43, 0x1e, 0x86, 0xb3, 0x75, 0xba, 0x45, 0xeb, 0x2c, 0x32, 0x6d, - 0x96, 0xe9, 0x86, 0xc3, 0x88, 0x43, 0x4a, 0xac, 0x3a, 0x7a, 0xeb, 0x97, - 0x5c, 0xe9, 0xab, 0x07, 0x90, 0xd0, 0xee, 0x3c, 0x5a, 0x95, 0x93, 0x18, - 0x15, 0xe7, 0xcd, 0x67, 0x9c, 0x36, 0x7e, 0x67, 0x70, 0x3b, 0x83, 0x08, - 0xe4, 0xd5, 0x09, 0xf2, 0xd0, 0x22, 0x99, 0x2e, 0x94, 0xbe, 0x61, 0xf5, - 0xbe, 0xb4, 0x73, 0x2a, 0x4b, 0xf0, 0xf5, 0xd3, 0x69, 0x91, 0x3b, 0x41, - 0x53, 0xfd, 0x2b, 0x99, 0x62, 0xe4, 0x4b, 0xcd, 0xc0, 0x50, 0xa2, 0xa2, - 0x20, 0x57, 0xa3, 0xae, 0xa8, 0xbe, 0x91, 0x36, 0x23, 0x0d, 0x5d, 0x0d, - 0x43, 0xcd, 0x90, 0x8d, 0xf8, 0x47, 0x9a, 0x50, 0xee, 0x0b, 0xbb, 0x90, - 0x3e, 0xbf, 0x96, 0x77, 0xa4, 0x83, 0x64, 0xc0, 0x00, 0x14, 0xc0, 0x6c, - 0x55, 0x9b, 0x7b, 0x2c, 0xe8, 0x15, 0x61, 0x24, 0xb0, 0xab, 0x4c, 0xb1, - 0xe3, 0xf9, 0x17, 0x55, 0x68, 0xe8, 0xaa, 0x49, 0x12, 0xfc, 0x0c, 0x4b, - 0x49, 0x6b, 0x32, 0x7c, 0x07, 0x1c, 0x6c, 0x4f, 0xff, 0xd3, 0x62, 0x4c, - 0xdf, 0x6c, 0xd3, 0x2d, 0x61, 0x28, 0x84, 0x0b, 0x9c, 0x52, 0x5c, 0x82, - 0x3c, 0xfe, 0x44, 0x54, 0x7f, 0xba, 0xa8, 0x83, 0x33, 0xdc, 0x32, 0x41, - 0x1b, 0xd1, 0x2c, 0xe6, 0x20, 0xe1, 0x1b, 0xac, 0x50, 0x4c, 0xcf, 0xd8, - 0x5d, 0xdf, 0xda, 0xc4, 0x9b, 0x4b, 0x3d, 0x9d, 0xf1, 0xb1, 0x98, 0x87, - 0x88, 0x4a, 0xfb, 0xc0, 0xfa, 0xb1, 0x11, 0x36, 0x46, 0x63, 0x6d, 0x7d, - 0xa7, 0xc5, 0xd3, 0xa0, 0x4e, 0x74, 0x5e, 0xc8, 0xfd, 0xd4, 0xed, 0x19, - 0xb3, 0xf2, 0xfa, 0x2b, 0x33, 0x1e, 0x5c, 0x8d, 0xf4, 0x4a, 0x20, 0x05, - 0x53, 0x0a, 0x8a, 0x11, 0x4c, 0x32, 0xd7, 0xf9, 0x84, 0xae, 0x68, 0x77, - 0xda, 0x15, 0x8c, 0x4a, 0xd8, 0xee, 0x89, 0xf8, 0x1d, 0x77, 0x28, 0x49, - 0xf0, 0xb5, 0x9f, 0xa5, 0x95, 0x09, 0x71, 0xcb, 0x0e, 0x52, 0x7e, 0x6e, - 0x41, 0xb9, 0x10, 0xa9, 0xd4, 0x85, 0x3d, 0x77, 0x59, 0x6a, 0x26, 0x2e, - 0x5c, 0x4e, 0x9c, 0x5e, 0xf8, 0x51, 0x08, 0x8f, 0x1d, 0xb2, 0xcc, 0x11, - 0x8a, 0x96, 0xc5, 0xe6, 0x9f, 0x0a, 0x10, 0x75, 0x78, 0x9c, 0xe4, 0x4c, - 0x70, 0x98, 0x03, 0xe5, 0x36, 0xdd, 0x95, 0x36, 0xaa, 0x3c, 0x71, 0x10, - 0x93, 0xe7, 0xc1, 0x65, 0x9b, 0xb9, 0x9b, 0xae, 0xaf, 0x70, 0x23, 0x72, - 0x22, 0xc1, 0xdd, 0x2f, 0xa2, 0xb4, 0x2b, 0x5d, 0x41, 0x14, 0x76, 0x60, - 0xe4, 0xb2, 0xae, 0x76, 0xed, 0x78, 0x12, 0x79, 0x87, 0x58, 0xa5, 0x1c, - 0xa7, 0xb7, 0xde, 0x14, 0x07, 0xb6, 0xfe, 0x64, 0x9b, 0x8e, 0xde, 0x99, - 0xdc, 0xb3, 0x8a, 0xef, 0xed, 0xa1, 0xa5, 0xaa, 0x39, 0xbb, 0xb0, 0x45, - 0x99, 0x7b, 0xb0, 0x3c, 0x41, 0xb1, 0x57, 0xe5, 0x9f, 0x25, 0x55, 0xc1, - 0x01, 0x96, 0x37, 0x5c, 0xd4, 0x83, 0xa9, 0x75, 0x72, 0xe2, 0x02, 0xf7, - 0x1f, 0x23, 0xf0, 0xfe, 0x7b, 0x80, 0x4f, 0x28, 0xa2, 0xd6, 0x91, 0x3e, - 0x1a, 0xfb, 0x39, 0x99, 0x1a, 0x7b, 0xa2, 0xb8, 0xda, 0xee, 0x6a, 0x0c, - 0x92, 0x50, 0x04, 0x60, 0xe5, 0x9b, 0xbe, 0xa6, 0xc2, 0xcc, 0xef, 0x98, - 0xb8, 0x3d, 0x8d, 0xd1, 0x0b, 0x0e, 0x2f, 0x3e, 0xbf, 0xa8, 0xe7, 0x08, - 0x15, 0x14, 0xa1, 0x56, 0xea, 0xf2, 0x27, 0xdb, 0x5a, 0x19, 0x49, 0xd4, - 0xf6, 0xe7, 0x82, 0x97, 0x71, 0xbb, 0xbb, 0xc5, 0x9b, 0xdd, 0x2c, 0x6d, - 0xbf, 0x4e, 0x9c, 0x7e, 0xc6, 0xbf, 0xd5, 0xf9, 0x52, 0xaa, 0xce, 0xa8, - 0x74, 0xdc, 0xdf, 0x4d, 0x7e, 0x01, 0x54, 0x0a, 0x87, 0xc2, 0x64, 0x1a, - 0x18, 0x08, 0x15, 0xcb, 0x69, 0x27, 0xfc, 0x17, 0x2d, 0xc7, 0x7d, 0x63, - 0x8f, 0xd4, 0xb0, 0x5d, 0x31, 0x98, 0x8b, 0x55, 0xe0, 0x9d, 0xa2, 0xb7, - 0xb7, 0x47, 0x84, 0x2d, 0x7b, 0xf2, 0xc4, 0x51, 0x58, 0x7e, 0x0f, 0x66, - 0xd8, 0xd9, 0x52, 0x45, 0xc8, 0xe4, 0xd4, 0x54, 0xd0, 0x41, 0xdd, 0x1d, - 0xcb, 0x79, 0xb7, 0x61, 0xfd, 0xd4, 0x5d, 0x86, 0x0d, 0xa0, 0x03, 0x02, - 0x0f, 0x54, 0xd8, 0x45, 0xb3, 0xc1, 0x98, 0xa1, 0x02, 0xdb, 0xda, 0x1f, - 0xda, 0x16, 0x03, 0x9e, 0xdd, 0xc1, 0xb4, 0x46, 0xfb, 0xcc, 0xcd, 0xe1, - 0x05, 0xa6, 0x78, 0xbe, 0x61, 0xed, 0x58, 0x90, 0x25, 0xb0, 0xbf, 0x4f, - 0xfc, 0xa3, 0xf4, 0x7e, 0xd2, 0x1e, 0x65, 0x91, 0xb2, 0x1b, 0xe4, 0x4c, - 0xe8, 0x2a, 0x05, 0xb9, 0x25, 0x20, 0x43, 0x34, 0x21, 0x90, 0x3d, 0x16, - 0xb3, 0x2b, 0x5f, 0x0e, 0x97, 0x3e, 0x5a, 0x2a, 0x64, 0x6e, 0xe8, 0xdc, - 0x6c, 0x10, 0x4f, 0xf8, 0x0e, 0x60, 0x80, 0x59, 0x7a, 0x1b, 0x99, 0xf3, - 0xf7, 0xa3, 0xa1, 0x2e, 0x82, 0x1a, 0x2e, 0x30, 0x6c, 0x7e, 0xa7, 0x32, - 0x8e, 0x0e, 0x8f, 0x63, 0x26, 0x45, 0x7b, 0x6a, 0x22, 0x2b, 0x11, 0x1f, - 0x3c, 0x14, 0x4e, 0xe7, 0x26, 0x2e, 0x52, 0xf6, 0xbe, 0x7a, 0x00, 0x5a, - 0x1e, 0x66, 0xa5, 0xee, 0x02, 0x26, 0xbd, 0x63, 0xcf, 0x39, 0xc8, 0x6b, - 0xcb, 0x9e, 0x63, 0xab, 0x0b, 0xd7, 0xf8, 0x12, 0x46, 0x4a, 0xdd, 0x16, - 0xf8, 0x61, 0xcc, 0x4e, 0x73, 0x45, 0x1d, 0xc8, 0x7b, 0x1f, 0xcc, 0xea, - 0x73, 0x86, 0xcc, 0x05, 0xea, 0x38, 0x20, 0x8f, 0x1a, 0x75, 0x59, 0x87, - 0xc4, 0x91, 0x10, 0xb8, 0x17, 0x18, 0x31, 0x7d, 0xd2, 0x1d, 0x71, 0xef, - 0x64, 0x7e, 0x84, 0x7d, 0x78, 0x82, 0xba, 0x79, 0x3f, 0xb1, 0x63, 0xcd, - 0x77, 0x02, 0x5e, 0xbd, 0x19, 0x0c, 0x51, 0xa7, 0xe9, 0xa0, 0xc5, 0xb7, - 0x25, 0x2d, 0x1f, 0x0d, 0x78, 0x39, 0x2e, 0xbd, 0x83, 0xb0, 0x31, 0x18, - 0x52, 0x67, 0x93, 0x72, 0x3b, 0x34, 0x33, 0xa0, 0x73, 0x4a, 0xa8, 0xf0, - 0x95, 0xa4, 0x23, 0x32, 0x09, 0x6c, 0x94, 0x83, 0x8a, 0xc4, 0xfd, 0x7b, - 0x8d, 0x8d, 0x97, 0x20, 0xb8, 0x2d, 0xde, 0x0c, 0xaa, 0xe7, 0x39, 0x29, - 0x3c, 0x0b, 0xd7, 0x0a, 0xa4, 0xfb, 0xa6, 0x44, 0xb4, 0xe6, 0x27, 0x4c, - 0xa7, 0xbf, 0xb8, 0xd0, 0xdb, 0xfe, 0x52, 0x1e, 0x76, 0xd8, 0xb3, 0x8c, - 0xab, 0x94, 0x12, 0xe2, 0x74, 0x94, 0x09, 0x4b, 0xdd, 0xfa, 0x2f, 0xc2, - 0x1f, 0xe1, 0xae, 0xa6, 0x76, 0x14, 0x3f, 0xd4, 0x5c, 0xfe, 0xa6, 0xf8, - 0x00, 0x41, 0x8d, 0x3f, 0x71, 0x29, 0x32, 0x06, 0xa8, 0x7d, 0x4b, 0x9e, - 0xd5, 0x36, 0xc3, 0x99, 0x91, 0xf2, 0xd6, 0x22, 0x82, 0x33, 0x13, 0xc9, - 0xd7, 0x80, 0x4f, 0xe0, 0x59, 0x88, 0x1c, 0xb7, 0x4a, 0xb7, 0xa7, 0x16, - 0x36, 0x06, 0x63, 0x42, 0xbb, 0xd4, 0x75, 0x38, 0x38, 0xe1, 0x45, 0xb5, - 0x10, 0xf9, 0x39, 0xe5, 0x3f, 0xab, 0x95, 0xc7, 0x6c, 0x31, 0x9e, 0x82, - 0xc6, 0x18, 0xd1, 0xcb, 0x5a, 0x1e, 0x71, 0xff, 0x8e, 0x5a, 0x68, 0xe5, - 0x64, 0xa1, 0x5a, 0xbd, 0x9b, 0x45, 0x3f, 0xf9, 0xf1, 0xb3, 0x04, 0x9e, - 0x5d, 0x0d, 0xa6, 0x83, 0x7d, 0xd0, 0xd2, 0x05, 0x22, 0x3d, 0x07, 0xd7, - 0xf7, 0x79, 0x39, 0x95, 0x30, 0x4f, 0x01, 0x9a, 0x8e, 0x38, 0xcf, 0xa7, - 0x34, 0xd3, 0x57, 0xb3, 0xd6, 0xa4, 0x1b, 0x64, 0xb6, 0x27, 0x56, 0x1d, - 0x10, 0x7c, 0xa3, 0xb4, 0x5d, 0x0a, 0x07, 0xde, 0xd1, 0x4d, 0x58, 0xd0, - 0x3b, 0xb8, 0xef, 0x85, 0x9a, 0xc6, 0x50, 0x5d, 0x9c, 0x25, 0xfd, 0x41, - 0x86, 0x34, 0xcb, 0xf3, 0xbe, 0xe0, 0x5b, 0x2e, 0xa2, 0x6d, 0x44, 0x42, - 0x87, 0x45, 0x96, 0xc4, 0x57, 0xe5, 0x49, 0x35, 0x69, 0x60, 0x40, 0x02, - 0x6c, 0xd6, 0xd0, 0xfb, 0xe9, 0x2f, 0xeb, 0x87, 0x03, 0x9e, 0xc4, 0x0e, - 0xbe, 0xcd, 0x8f, 0x7c, 0x12, 0xf2, 0x84, 0xd6, 0x84, 0xda, 0xec, 0x9d, - 0xa2, 0xa3, 0x22, 0xf4, 0x7f, 0xcd, 0x77, 0xba, 0x60, 0x67, 0xef, 0xf6, - 0x54, 0x11, 0x34, 0x92, 0x1d, 0x68, 0x0f, 0x73, 0xc5, 0xe0, 0x3c, 0x27, - 0xda, 0x74, 0xa4, 0x20, 0x8b, 0xcb, 0x5f, 0xc3, 0x14, 0xa1, 0x03, 0xb8, - 0x2a, 0x70, 0xae, 0x61, 0xda, 0xf2, 0xb5, 0x9e, 0xc5, 0xfb, 0xad, 0x86, - 0xed, 0xb0, 0x6d, 0x8f, 0x07, 0x97, 0x00, 0xaf, 0x69, 0x72, 0x9c, 0xd2, - 0xaa, 0x6d, 0x91, 0x66, 0xd4, 0x23, 0xdd, 0x6b, 0x87, 0xf5, 0x5b, 0x12, - 0x81, 0x30, 0x9f, 0x34, 0x30, 0xa0, 0xf1, 0x60, 0xc6, 0x26, 0x1b, 0x17, - 0x77, 0x2e, 0x74, 0xbe, 0x43, 0x5a, 0xd2, 0x57, 0x16, 0x3b, 0x85, 0x13, - 0x43, 0x52, 0x0a, 0x00, 0xfb, 0x0f, 0x07, 0x64, 0xa5, 0xc6, 0xd0, 0x4c, - 0xbf, 0xf8, 0xd6, 0xf0, 0x5a, 0x08, 0x41, 0xb6, 0x6e, 0xd7, 0xf8, 0x60, - 0xde, 0x81, 0x97, 0x98, 0xfa, 0xf6, 0xe2, 0x31, 0xa6, 0xe7, 0x31, 0x84, - 0xf3, 0x33, 0xc6, 0x34, 0xbb, 0x05, 0x4b, 0x9a, 0x4d, 0xe4, 0xff, 0x54, - 0x17, 0x74, 0x5c, 0xe9, 0xe7, 0x22, 0xbd, 0x4c, 0xe2, 0x4b, 0x77, 0x4a, - 0x5b, 0xa7, 0x77, 0xd1, 0xd3, 0xc2, 0xe4, 0x7d, 0x8e, 0xda, 0x64, 0xb1, - 0xab, 0xfd, 0x4d, 0x11, 0x26, 0x21, 0xe9, 0xba, 0x4a, 0x4e, 0xbc, 0xde, - 0x90, 0x14, 0xa2, 0x2f, 0x87, 0x92, 0xa8, 0x91, 0x80, 0x31, 0xe1, 0xe3, - 0x24, 0x6b, 0x84, 0xc8, 0xbf, 0x95, 0x4e, 0x12, 0xab, 0x57, 0x81, 0xc7, - 0xb2, 0xcc, 0xc1, 0xba, 0xd6, 0xfc, 0x36, 0x65, 0x31, 0x0a, 0x77, 0xf1, - 0x9f, 0xb0, 0x8e, 0x8a, 0x37, 0xb6, 0x03, 0xf6, 0x20, 0x50, 0x8f, 0x59, - 0xf2, 0x6a, 0xf1, 0xfd, 0xf8, 0xfd, 0x8a, 0x06, 0x13, 0x89, 0x5b, 0x61, - 0x70, 0xa9, 0x67, 0x82, 0x0d, 0xfa, 0x56, 0x23, 0x7b, 0xd5, 0x46, 0x2c, - 0x81, 0x66, 0xf8, 0x88, 0x60, 0x91, 0x4d, 0x31, 0x87, 0x12, 0x45, 0x1e, - 0xbf, 0x88, 0xf3, 0xfe, 0x9e, 0x84, 0xb3, 0xa8, 0x76, 0xc8, 0xb5, 0x72, - 0x72, 0x8e, 0x5e, 0xf6, 0x69, 0x55, 0x5e, 0x98, 0x2d, 0x61, 0xa4, 0xc8, - 0xed, 0xee, 0x1c, 0xf6, 0xb0, 0xd9, 0x47, 0x74, 0x0f, 0xfd, 0x81, 0xd9, - 0x9c, 0x8c, 0x57, 0x86, 0x69, 0xa0, 0x85, 0x04, 0x4f, 0x2f, 0x12, 0x02, - 0xb9, 0x67, 0xe6, 0xd2, 0xd1, 0x54, 0x30, 0x0a, 0xda, 0x6c, 0xea, 0xda, - 0x3a, 0xd9, 0x02, 0xe1, 0xb6, 0x34, 0xe3, 0x36, 0x3b, 0xe0, 0xdf, 0x44, - 0x64, 0x05, 0x1f, 0x0d, 0xe7, 0x42, 0xf0, 0xde, 0x83, 0xbd, 0x36, 0x7a, - 0x8e, 0xbb, 0x0d, 0x6f, 0xb5, 0xe6, 0x6f, 0x1f, 0x19, 0xaf, 0x73, 0xcc, - 0x5a, 0x17, 0xd0, 0xc4, 0x75, 0xf7, 0xef, 0xa0, 0xcf, 0xb6, 0xdb, 0xfd, - 0x1e, 0xb8, 0xa1, 0x65, 0x50, 0x08, 0xff, 0xf0, 0x67, 0x20, 0x43, 0xa2, - 0x86, 0x22, 0xa1, 0x44, 0xb7, 0x5a, 0x89, 0x31, 0x2e, 0x68, 0xd9, 0x78, - 0xee, 0x17, 0xbf, 0x59, 0xd3, 0x35, 0xd3, 0x8b, 0x49, 0xcf, 0x2b, 0x08, - 0x29, 0xee, 0xe7, 0x02, 0xef, 0x61, 0x85, 0x37, 0xc3, 0x41, 0x3c, 0x3f, - 0x02, 0x99, 0xdb, 0xce, 0x4b, 0x12, 0x56, 0x71, 0xc3, 0xcc, 0xf2, 0xdb, - 0xdd, 0x21, 0x18, 0xb3, 0x59, 0xb7, 0x6a, 0x79, 0x81, 0xce, 0x4e, 0x43, - 0x55, 0xa8, 0xb6, 0xde, 0xc8, 0x7f, 0x1a, 0xe9, 0x62, 0x96, 0xd7, 0xcf, - 0x15, 0x2e, 0xcd, 0x56, 0x56, 0x48, 0x23, 0x81, 0x4c, 0xc1, 0x81, 0x03, - 0x1f, 0x57, 0xbd, 0xa6, 0x4a, 0x83, 0x59, 0xd5, 0x37, 0xf3, 0x1d, 0x31, - 0x69, 0xd2, 0x5c, 0x56, 0x34, 0xe1, 0xa2, 0xfb, 0xdb, 0xba, 0xed, 0xd1, - 0xf3, 0x81, 0xeb, 0x47, 0x67, 0xed, 0x7f, 0xa2, 0x4a, 0x6e, 0x49, 0xab, - 0xfb, 0x96, 0x9d, 0xc3, 0x33, 0x4f, 0x00, 0xc8, 0x64, 0xe5, 0x5b, 0x0b, - 0x22, 0x5e, 0xc9, 0x9f, 0x89, 0x60, 0x83, 0x3b, 0x84, 0x60, 0x23, 0x71, - 0x05, 0x0a, 0x1c, 0xc0, 0xff, 0x53, 0x58, 0xbd, 0xf3, 0x12, 0x8d, 0x56, - 0x8e, 0xef, 0x25, 0xc4, 0x7a, 0x15, 0xb2, 0x6e, 0xcb, 0x80, 0xdb, 0x66, - 0x42, 0xfa, 0xc7, 0xa3, 0x4e, 0x8a, 0x79, 0xa7, 0x54, 0xd7, 0xb6, 0x47, - 0xfb, 0x6c, 0x97, 0x9e, 0xd5, 0xfc, 0x4b, 0xd3, 0xa8, 0xc7, 0x03, 0x68, - 0x2b, 0x0e, 0x2a, 0x29, 0xd7, 0xab, 0xd2, 0x66, 0x1e, 0x77, 0x85, 0xe3, - 0x89, 0x41, 0x24, 0xf9, 0xde, 0x00, 0x41, 0x8f, 0x5c, 0x3a, 0xc1, 0xa1, - 0xda, 0xbe, 0x43, 0x1d, 0x01, 0xb5, 0xe1, 0xe1, 0x2e, 0xb6, 0xf8, 0x96, - 0xcc, 0x73, 0x67, 0x5c, 0x20, 0xe5, 0x02, 0x92, 0x43, 0x2d, 0x13, 0xba, - 0xc7, 0x72, 0xf7, 0xee, 0x66, 0x47, 0x29, 0x63, 0x67, 0xea, 0x5b, 0x2c, - 0x97, 0xd9, 0xb6, 0x00, 0x77, 0x12, 0x15, 0x72, 0x77, 0x44, 0x34, 0xaa, - 0xa1, 0x72, 0x3a, 0x75, 0x94, 0x95, 0x6d, 0x73, 0xbe, 0x5d, 0x2e, 0x69, - 0xd7, 0x70, 0xbf, 0xeb, 0x19, 0x0f, 0xf0, 0xbe, 0x5c, 0x70, 0x8d, 0xe6, - 0x6d, 0xfb, 0x6c, 0xea, 0x6a, 0x62, 0x4d, 0xc3, 0x87, 0x56, 0xcf, 0xfc, - 0xa3, 0xd5, 0x43, 0x15, 0x36, 0x44, 0x6d, 0x21, 0x81, 0x16, 0x1c, 0x7c, - 0xe8, 0x1d, 0xc8, 0x3b, 0x8a, 0xe6, 0x50, 0xd8, 0x1a, 0xc2, 0xd7, 0x78, - 0x30, 0x32, 0x6d, 0xf8, 0x89, 0xd5, 0x8f, 0x53, 0xb2, 0x72, 0x29, 0xf0, - 0x6f, 0x9a, 0x1c, 0xf6, 0xdc, 0xb7, 0x3e, 0x53, 0x9e, 0xa7, 0xf8, 0x88, - 0xa0, 0x1c, 0x21, 0x0f, 0xea, 0x23, 0x16, 0x81, 0xec, 0xf2, 0x91, 0x04, - 0x44, 0xd7, 0x15, 0x67, 0xc7, 0x63, 0x75, 0xab, 0x35, 0xce, 0x1a, 0x4f, - 0xb9, 0x9a, 0xca, 0x69, 0xe4, 0xaa, 0x8d, 0x3d, 0x8c, 0x86, 0x0a, 0xa2, - 0x92, 0x16, 0xca, 0xe7, 0xd7, 0x86, 0x09, 0x13, 0x0e, 0x31, 0x0a, 0x24, - 0x99, 0xf9, 0x32, 0x90, 0x95, 0x37, 0xbc, 0xdc, 0x00, 0xa9, 0x44, 0x23, - 0xe2, 0xd9, 0x5a, 0x6e, 0xc8, 0x8d, 0xb3, 0xae, 0x52, 0x60, 0x10, 0x9d, - 0x25, 0xc3, 0x35, 0xdc, 0xb7, 0x5a, 0xe8, 0xd4, 0x09, 0x45, 0xd8, 0x50, - 0x4e, 0xf0, 0xb9, 0x4f, 0xef, 0xef, 0x75, 0x5a, 0x26, 0xae, 0x7f, 0xa6, - 0x48, 0x47, 0x6a, 0xf1, 0xb0, 0x31, 0x90, 0x1e, 0x10, 0xae, 0xec, 0x47, - 0xa9, 0x6e, 0xb2, 0xc7, 0xbd, 0xbe, 0xb6, 0xbb, 0x9e, 0x23, 0x97, 0x83, - 0x70, 0x3b, 0xde, 0x89, 0xe4, 0x66, 0x03, 0x5e, 0xc6, 0x53, 0xb8, 0x48, - 0xe8, 0xac, 0xec, 0xa3, 0xce, 0x18, 0x0d, 0x6d, 0xe2, 0xf2, 0xe1, 0xc9, - 0xc1, 0xc2, 0x57, 0x76, 0x68, 0x29, 0x82, 0xf9, 0x3f, 0xc3, 0x6e, 0xc4, - 0xbb, 0x9d, 0x4a, 0xa1, 0xd5, 0x7d, 0x6f, 0x18, 0x14, 0x2b, 0xa1, 0x22, - 0xe3, 0xf4, 0x87, 0xa3, 0x19, 0xba, 0x7a, 0x4b, 0x31, 0x90, 0x74, 0x53, - 0xeb, 0x8e, 0x0e, 0x36, 0xaa, 0x79, 0x9c, 0x1c, 0x30, 0xdc, 0x10, 0x66, - 0x0d, 0x3e, 0xa1, 0xc9, 0x59, 0xc7, 0xa3, 0x1f, 0x08, 0x3d, 0x56, 0xa8, - 0x00, 0x66, 0xb3, 0xcc, 0x34, 0x3f, 0xd9, 0xe7, 0xbe, 0x92, 0xc6, 0x21, - 0x39, 0x8d, 0x18, 0x8a, 0xd1, 0x8a, 0x06, 0x8e, 0x56, 0x57, 0x22, 0x81, - 0x3a, 0xaa, 0x19, 0x5f, 0xfc, 0xca, 0xe4, 0x38, 0x3d, 0x2c, 0x88, 0x16, - 0x6e, 0x74, 0xb2, 0x70, 0xbc, 0x2f, 0x72, 0xfc, 0x6e, 0x1d, 0x42, 0x3d, - 0x15, 0x9c, 0xf4, 0xd8, 0xfe, 0x41, 0x25, 0x89, 0xa7, 0x18, 0x2c, 0x84, - 0x17, 0x14, 0xcc, 0xbc, 0x54, 0x82, 0xf7, 0xac, 0x61, 0xfb, 0x03, 0x0f, - 0x96, 0x2a, 0xb3, 0x73, 0x39, 0xfd, 0xc9, 0xc0, 0x55, 0x20, 0xa9, 0xef, - 0xed, 0xbf, 0x59, 0xf6, 0x4f, 0x6a, 0x67, 0x55, 0xb5, 0x5a, 0x91, 0x34, - 0x93, 0xc3, 0xb8, 0x87, 0xc7, 0xfd, 0x0c, 0x4d, 0x09, 0x17, 0xb3, 0x72, - 0x4c, 0xba, 0x43, 0x33, 0x65, 0x5a, 0x39, 0xce, 0x40, 0x17, 0x86, 0x92, - 0xb5, 0x19, 0x06, 0x58, 0x37, 0x3e, 0x02, 0x62, 0x9b, 0xe5, 0x93, 0x1f, - 0xe0, 0xb7, 0xeb, 0xfc, 0xc2, 0x61, 0x79, 0x0b, 0xfe, 0x65, 0x4a, 0xd4, - 0x1c, 0x88, 0x5f, 0x34, 0xc5, 0x10, 0xbd, 0x4b, 0xc0, 0x47, 0x06, 0xc0, - 0xdb, 0xef, 0x12, 0x27, 0x3f, 0x17, 0x0c, 0x0c, 0x41, 0xd4, 0xee, 0x60, - 0x1c, 0x0f, 0x57, 0x3e, 0xd9, 0x46, 0xd4, 0xa1, 0xcc, 0xf3, 0x6f, 0x30, - 0xb2, 0xe5, 0x1a, 0xc6, 0x4f, 0x03, 0xb2, 0x02, 0x16, 0xf2, 0xa2, 0x75, - 0xd5, 0xb7, 0x19, 0x6d, 0xbd, 0xb6, 0xed, 0x98, 0x7a, 0xdc, 0x39, 0xb2, - 0x36, 0x8f, 0x4b, 0x65, 0xf1, 0x4f, 0xbd, 0x17, 0xdf, 0x35, 0xd7, 0xd3, - 0x1d, 0x7a, 0xd3, 0x48, 0x00, 0xa1, 0x78, 0x05, 0x40, 0xc5, 0xf5, 0x4b, - 0x0f, 0x73, 0x86, 0x3c, 0x6d, 0x07, 0x84, 0x04, 0x25, 0x1d, 0x8a, 0x8b, - 0x5c, 0xf9, 0x09, 0x79, 0x19, 0xa2, 0x1d, 0xf3, 0xfe, 0xa5, 0x71, 0x1d, - 0x25, 0x37, 0x25, 0xae, 0xcc, 0x36, 0xd5, 0x20, 0xb6, 0x88, 0xb1, 0xdd, - 0x89, 0x49, 0x6f, 0xba, 0x99, 0xd8, 0xa5, 0x31, 0x35, 0xe1, 0xea, 0xf0, - 0x3e, 0xe0, 0x16, 0x8b, 0x69, 0x4f, 0xcb, 0x6e, 0xf4, 0x36, 0xa3, 0x50, - 0xf5, 0xb1, 0x66, 0xb1, 0xc4, 0xe1, 0xa7, 0xa7, 0xd5, 0xd2, 0x5d, 0x72, - 0x0c, 0x2a, 0xb7, 0xea, 0x50, 0x2b, 0xe1, 0xc6, 0xe8, 0x04, 0xd2, 0x30, - 0x4c, 0x99, 0x14, 0x8a, 0xb4, 0x01, 0xcf, 0xa0, 0x4d, 0xe9, 0xfb, 0xd2, - 0x60, 0x88, 0x9c, 0x63, 0xec, 0x60, 0x38, 0x3b, 0xaa, 0xa4, 0x3f, 0x6e, - 0xfb, 0xbe, 0x34, 0x4c, 0x26, 0xbd, 0x61, 0xed, 0x5a, 0x33, 0xac, 0x3d, - 0xba, 0xe4, 0x76, 0x13, 0xb9, 0xc1, 0x67, 0x95, 0x81, 0xa0, 0xfe, 0x9b, - 0xd5, 0xcd, 0x45, 0x65, 0x0a, 0x30, 0xaa, 0x34, 0xc8, 0x20, 0x8c, 0xaa, - 0x0f, 0x8c, 0x4c, 0xe3, 0x04, 0x08, 0xfc, 0x94, 0x16, 0xee, 0x38, 0x32, - 0x82, 0x6c, 0x75, 0x4a, 0xf5, 0xe1, 0x2a, 0xfc, 0xb9, 0xd7, 0xfa, 0x55, - 0x8f, 0x1b, 0x1f, 0x66, 0x0d, 0x06, 0xd2, 0xfc, 0x4e, 0xd6, 0xe0, 0x2b, - 0x3f, 0x14, 0xa8, 0x6f, 0xdf, 0x34, 0x3b, 0x7e, 0x8c, 0x07, 0xef, 0xf6, - 0xdd, 0x05, 0xad, 0x5a, 0x3c, 0x71, 0x7c, 0x0e, 0xe3, 0x26, 0xc6, 0x1c, - 0x02, 0x9c, 0xa8, 0x84, 0x2d, 0x09, 0x3b, 0x2f, 0x66, 0xcb, 0xa0, 0xc1, - 0x5c, 0x9c, 0x4d, 0xa9, 0x01, 0x94, 0x24, 0x2a, 0x3b, 0x4a, 0x39, 0x89, - 0xfe, 0x27, 0x49, 0xdd, 0x53, 0x02, 0xd8, 0x48, 0xb1, 0xa3, 0x3f, 0x41, - 0x07, 0x05, 0x08, 0xd9, 0xd4, 0xa9, 0x83, 0x70, 0x56, 0x2f, 0x30, 0x05, - 0xb7, 0x49, 0xec, 0x50, 0x93, 0x27, 0xc6, 0x6c, 0x62, 0xcf, 0x40, 0x19, - 0xa5, 0x77, 0x2f, 0xd2, 0xf0, 0x34, 0x80, 0xbd, 0x8a, 0x58, 0x99, 0xa3, - 0x57, 0xe4, 0xb1, 0x7e, 0x94, 0xfd, 0x27, 0x65, 0x4e, 0xe0, 0xe5, 0x37, - 0xab, 0xfb, 0xd4, 0x07, 0xe1, 0x1c, 0xbe, 0xbb, 0x2c, 0x1e, 0xaf, 0x81, - 0x5c, 0xa3, 0x78, 0x40, 0x07, 0x01, 0xfa, 0x08, 0x02, 0x3b, 0x0c, 0x39, - 0x8b, 0x36, 0x8e, 0x0f, 0xee, 0x19, 0x17, 0x5c, 0x97, 0x46, 0xcd, 0xcd, - 0xf5, 0xeb, 0xc4, 0x9b, 0x74, 0x0c, 0xd1, 0x3e, 0xc2, 0x27, 0x51, 0x03, - 0xcd, 0xeb, 0x04, 0x1e, 0xfa, 0x4d, 0x7e, 0x3d, 0x59, 0xa1, 0x7d, 0x8c, - 0x6d, 0xe4, 0xee, 0xd5, 0x7b, 0x0d, 0xaf, 0x6f, 0xb1, 0xfe, 0x1d, 0x19, - 0x55, 0x00, 0xb6, 0x79, 0x89, 0x23, 0xe6, 0x81, 0xe5, 0x6d, 0xc3, 0x8c, - 0xc0, 0x80, 0x34, 0xce, 0xe3, 0x4d, 0x9e, 0x0c, 0xe6, 0x1e, 0x17, 0xc5, - 0x0b, 0x62, 0x15, 0xe8, 0x71, 0xf5, 0xed, 0x1b, 0xef, 0x33, 0x1f, 0x90, - 0xb3, 0x5f, 0x47, 0x61, 0xc8, 0x4d, 0x2c, 0x3b, 0x0a, 0x41, 0x72, 0x89, - 0x6d, 0xeb, 0xcb, 0x7c, 0x2a, 0x5e, 0x6c, 0xab, 0x18, 0x32, 0x88, 0xd9, - 0x9c, 0x5c, 0xf7, 0xa7, 0x86, 0xc2, 0xe3, 0x83, 0xe6, 0x6f, 0xdb, 0x67, - 0xa0, 0x3e, 0x0e, 0xe5, 0x47, 0x80, 0xaf, 0xc5, 0x62, 0x42, 0x5b, 0xf1, - 0x8a, 0x01, 0x55, 0x33, 0xf5, 0xe6, 0x01, 0xb0, 0x12, 0x3b, 0xd2, 0x75, - 0x68, 0xe6, 0x8b, 0x20, 0x9b, 0x28, 0xbc, 0x80, 0x43, 0x5c, 0x62, 0x4c, - 0x68, 0xc8, 0x0f, 0x02, 0x34, 0x39, 0xb3, 0x84, 0x76, 0x68, 0x52, 0xaa, - 0xb9, 0xdd, 0x03, 0xce, 0x56, 0x54, 0xd2, 0xab, 0x37, 0xf9, 0x9e, 0x59, - 0xb9, 0x6f, 0x1f, 0xf3, 0x72, 0x56, 0xaf, 0x58, 0x7d, 0xe1, 0x4a, 0xcf, - 0x78, 0x68, 0xd6, 0xae, 0xab, 0xe2, 0x8a, 0xc8, 0x1f, 0x42, 0xf3, 0xc3, - 0x80, 0x9b, 0x12, 0xe4, 0xbc, 0xa8, 0x45, 0xc8, 0x51, 0x62, 0xab, 0xb6, - 0xf7, 0x56, 0x12, 0x6c, 0x9e, 0x32, 0xa2, 0x2d, 0xdb, 0xce, 0x28, 0x42, - 0xe8, 0xda, 0x9b, 0x72, 0x0b, 0x9d, 0x3b, 0x8a, 0x71, 0xaa, 0x12, 0x3a, - 0x5a, 0xb6, 0xbe, 0x52, 0xb8, 0x5b, 0xf6, 0x29, 0x63, 0xfe, 0x8c, 0xbb, - 0x78, 0x4e, 0xa6, 0x7b, 0x7a, 0x94, 0x68, 0xfe, 0xfd, 0x4f, 0x7a, 0xe2, - 0x7d, 0x58, 0x98, 0x8f, 0x2d, 0x1c, 0x7d, 0x76, 0xd5, 0x10, 0xde, 0x57, - 0xea, 0xce, 0x31, 0x64, 0x7d, 0x57, 0x18, 0x2e, 0x1a, 0x5b, 0xef, 0x02, - 0x24, 0xa5, 0x65, 0xa7, 0x76, 0xc5, 0xc0, 0x44, 0xbf, 0x05, 0x0a, 0x12, - 0xd0, 0xf0, 0xaf, 0xaf, 0x48, 0xf0, 0xb6, 0x8b, 0xe8, 0x01, 0x9d, 0x61, - 0x9d, 0x44, 0xdd, 0x99, 0x34, 0xbc, 0x87, 0xc0, 0x75, 0x32, 0x69, 0xd0, - 0xee, 0x9b, 0x48, 0x30, 0x68, 0x4b, 0x36, 0xa5, 0x97, 0x4d, 0xd0, 0x39, - 0xc8, 0x68, 0x72, 0x04, 0xa7, 0x1f, 0x03, 0x00, 0x3b, 0x66, 0xc2, 0x50, - 0x98, 0x32, 0xa8, 0x3f, 0xeb, 0xc0, 0xd7, 0xd8, 0xf6, 0xbf, 0xd9, 0xad, - 0x26, 0x4a, 0xe3, 0x04, 0x26, 0x26, 0x65, 0xd3, 0xe1, 0x33, 0x0c, 0xd5, - 0x44, 0xa9, 0x29, 0x18, 0x6e, 0xcb, 0x23, 0x1d, 0xf6, 0x15, 0x0a, 0x88, - 0xb7, 0x46, 0x31, 0x69, 0xeb, 0x96, 0x40, 0x94, 0x95, 0x6c, 0x7b, 0x5c, - 0x18, 0x07, 0x5a, 0x91, 0x3a, 0xea, 0x7e, 0xb0, 0x88, 0xde, 0x7f, 0x38, - 0x44, 0xc5, 0xad, 0x25, 0x9d, 0xf9, 0xfc, 0xa7, 0x7e, 0xc2, 0x52, 0xaa, - 0x3f, 0xa7, 0x5b, 0x69, 0xc3, 0x21, 0xe6, 0x99, 0x5a, 0x83, 0x5b, 0x18, - 0x84, 0xc9, 0xad, 0xeb, 0x93, 0xf1, 0x6e, 0x22, 0xe9, 0xed, 0x98, 0xba, - 0x6e, 0xad, 0x94, 0x92, 0x16, 0x58, 0x9d, 0xa3, 0x20, 0x01, 0x75, 0xca, - 0x18, 0x01, 0xe3, 0x2c, 0x4f, 0x18, 0x77, 0x43, 0x02, 0x2a, 0xd8, 0xe8, - 0x3f, 0xf1, 0xe5, 0xc1, 0x43, 0xfb, 0xbe, 0xf8, 0x4a, 0x78, 0x00, 0x0b, - 0x17, 0x19, 0x42, 0x6c, 0x96, 0x62, 0x75, 0x62, 0xa2, 0x86, 0xc4, 0xc3, - 0x1a, 0x07, 0x2b, 0x9c, 0xb2, 0xe3, 0xc5, 0x16, 0xc0, 0xeb, 0x04, 0xde, - 0x6a, 0x5a, 0xf8, 0x35, 0xc0, 0x78, 0x33, 0xb9, 0xba, 0x9c, 0x51, 0xe5, - 0x8d, 0xc9, 0x99, 0x90, 0xd8, 0x8a, 0x75, 0xc9, 0x38, 0xa1, 0x29, 0xe0, - 0x8c, 0x43, 0x9f, 0x2a, 0x8a, 0xc7, 0xfa, 0x4d, 0xf5, 0x04, 0x67, 0xb0, - 0x96, 0x64, 0x5d, 0x4a, 0xb4, 0x0a, 0x38, 0xa4, 0xb7, 0xda, 0x8f, 0x4a, - 0xa0, 0x65, 0xce, 0x6c, 0xbc, 0x0b, 0x5d, 0xf5, 0xc4, 0x84, 0xcd, 0x55, - 0x37, 0xb0, 0x3d, 0x50, 0xad, 0x5b, 0x49, 0xea, 0x41, 0xbd, 0x26, 0xb4, - 0x24, 0x61, 0x35, 0x65, 0xbe, 0x4e, 0x50, 0xac, 0x27, 0x4e, 0xa8, 0xad, - 0xa2, 0xe1, 0x26, 0x09, 0xd0, 0x09, 0xa0, 0xdd, 0xbc, 0x53, 0x33, 0x86, - 0xaf, 0x22, 0x54, 0x65, 0x11, 0xe7, 0x92, 0x31, 0x30, 0x5d, 0xeb, 0x51, - 0x83, 0xfb, 0xbb, 0x65, 0xfd, 0x89, 0x7a, 0x91, 0xc5, 0xe5, 0x08, 0x71, - 0xf4, 0xbd, 0xaa, 0x61, 0x18, 0xbb, 0x58, 0x3a, 0x5b, 0xe7, 0xd0, 0x37, - 0x8d, 0x7d, 0x6b, 0xfa, 0x06, 0xfc, 0xf5, 0x6f, 0xc1, 0x39, 0x00, 0x44, - 0x3c, 0x0e, 0x3d, 0x28, 0x78, 0x29, 0xde, 0x8b, 0x01, 0xca, 0x65, 0x47, - 0xa0, 0x49, 0x37, 0xcb, 0xdd, 0xc9, 0x8f, 0xfa, 0x9c, 0x39, 0x90, 0x12, - 0x90, 0x03, 0xea, 0x30, 0xfe, 0xca, 0x00, 0x13, 0x22, 0xd0, 0x53, 0x3f, - 0xa5, 0xe1, 0xe1, 0x34, 0xca, 0x14, 0x8b, 0x88, 0xa4, 0xf9, 0x56, 0xf8, - 0xd5, 0xdf, 0x31, 0x78, 0x0d, 0x1d, 0xb5, 0x52, 0xb0, 0x54, 0x26, 0x64, - 0x75, 0x23, 0x65, 0x55, 0x3f, 0xbb, 0x0e, 0x91, 0xf1, 0xbf, 0xc9, 0x62, - 0xb5, 0x58, 0xa9, 0x34, 0x35, 0x3c, 0x41, 0x48, 0x14, 0x89, 0x11, 0xdc, - 0x76, 0xc5, 0x62, 0x67, 0x82, 0x46, 0xd4, 0x8c, 0x4b, 0xa0, 0x32, 0x09, - 0x4d, 0xc4, 0x77, 0xfc, 0x43, 0xac, 0xf1, 0x76, 0xd4, 0x5d, 0x37, 0x28, - 0xb3, 0xa3, 0x52, 0x68, 0xd7, 0x2d, 0xc4, 0x47, 0xff, 0xa4, 0xba, 0x2f, - 0x2a, 0x10, 0x1a, 0x1c, 0x07, 0x1d, 0xb2, 0x1c, 0x5f, 0x23, 0x57, 0xdf, - 0xd3, 0xcd, 0x23, 0x68, 0xe1, 0xef, 0x40, 0x17, 0x05, 0x66, 0x7c, 0xf5, - 0x17, 0x95, 0x27, 0x1f, 0xed, 0xd2, 0xcb, 0x65, 0x44, 0xcb, 0xcc, 0x39, - 0x77, 0x20, 0x39, 0x84, 0x57, 0x87, 0x5b, 0x62, 0x32, 0xbe, 0xf4, 0xef, - 0xa2, 0xe0, 0x0d, 0x8d, 0xf6, 0xef, 0xaa, 0xec, 0xe5, 0xab, 0xed, 0x40, - 0xfb, 0x4d, 0x45, 0xe4, 0xa0, 0x19, 0x61, 0xb7, 0x00, 0x23, 0x5e, 0x9a, - 0x1a, 0x25, 0x18, 0x93, 0xb8, 0x0d, 0xb3, 0x0c, 0x88, 0x59, 0x4e, 0x8e, - 0x60, 0xd8, 0x94, 0x39, 0x56, 0x56, 0x6b, 0xb4, 0xe0, 0x85, 0x2c, 0x49, - 0xf6, 0xbf, 0x53, 0x8f, 0xe6, 0xd7, 0x71, 0x7d, 0x2b, 0x2a, 0x33, 0x3f, - 0x02, 0x33, 0x5c, 0xbe, 0x86, 0x62, 0xc7, 0x6b, 0x1c, 0x87, 0x1e, 0x73, - 0x10, 0xad, 0xb3, 0xee, 0x02, 0xc9, 0x7d, 0xec, 0x33, 0x68, 0x21, 0x5d, - 0xcc, 0xed, 0xd9, 0xb4, 0xf4, 0x47, 0xdc, 0x75, 0x0c, 0x20, 0x47, 0x91, - 0x37, 0x80, 0x50, 0x48, 0xb4, 0x5e, 0x57, 0x54, 0x90, 0x1a, 0x9c, 0x14, - 0xe8, 0x3a, 0xb5, 0xfe, 0x69, 0x02, 0xcd, 0xc0, 0xb0, 0xf8, 0x21, 0xa0, - 0x67, 0x8a, 0xbd, 0x6a, 0x1b, 0x92, 0x21, 0x71, 0x04, 0x11, 0xf9, 0x59, - 0xca, 0xdb, 0x35, 0x44, 0x59, 0x1f, 0x11, 0x39, 0xd4, 0x1b, 0xb3, 0xe1, - 0xd3, 0x78, 0x55, 0x15, 0x4a, 0x7c, 0xa5, 0x7f, 0x12, 0x21, 0xbc, 0x3c, - 0x7d, 0x68, 0x05, 0xc0, 0xb6, 0x77, 0x00, 0x22, 0x40, 0x99, 0x8b, 0x87, - 0xd3, 0x6b, 0xfc, 0x4c, 0xfc, 0xd1, 0xc2, 0x74, 0x67, 0x10, 0x7f, 0x43, - 0x58, 0x1c, 0xf8, 0x1a, 0x20, 0xcd, 0xa6, 0xde, 0xeb, 0x32, 0xee, 0x8b, - 0x10, 0x78, 0x6c, 0xd0, 0xe0, 0x6d, 0xb4, 0xfb, 0xbd, 0xd5, 0x25, 0xf5, - 0x19, 0xaa, 0x15, 0x9c, 0xc2, 0xf1, 0xcf, 0x33, 0x6f, 0x56, 0xb7, 0x64, - 0xd9, 0xca, 0xdd, 0x6c, 0x82, 0xc1, 0x8f, 0xf5, 0x76, 0x5f, 0x80, 0x35, - 0xf1, 0xbf, 0x4d, 0x77, 0x23, 0x87, 0x4e, 0xf3, 0xc5, 0x13, 0xab, 0x87, - 0xa4, 0x51, 0xb3, 0x60, 0xbb, 0x03, 0x71, 0x83, 0xb6, 0x7a, 0x0d, 0x08, - 0x4a, 0x7e, 0xbd, 0x40, 0x2f, 0x51, 0x7f, 0x21, 0xf1, 0x74, 0xfe, 0x4a, - 0x65, 0xe9, 0x06, 0xd8, 0x54, 0x93, 0xbf, 0xe3, 0xb8, 0xc5, 0xdd, 0x56, - 0x87, 0xf2, 0x54, 0x30, 0x16, 0x0f, 0xe6, 0xae, 0xd3, 0xbf, 0x72, 0x6c, - 0x32, 0x8a, 0xf7, 0xe1, 0xcf, 0x19, 0x4d, 0xe9, 0xae, 0x56, 0x56, 0x26, - 0x3f, 0xef, 0xd0, 0x53, 0x53, 0xb6, 0x9f, 0xc2, 0xea, 0xa0, 0xec, 0x39, - 0xd6, 0xfe, 0x94, 0x69, 0xe3, 0x2c, 0xa0, 0x4c, 0xbc, 0x03, 0x17, 0x58, - 0x62, 0x58, 0x92, 0x6b, 0xe8, 0x7c, 0x51, 0x6f, 0x5e, 0xea, 0x38, 0xc6, - 0xbb, 0x58, 0x32, 0xfb, 0x6c, 0x7f, 0x0e, 0xc5, 0xd7, 0xfb, 0x92, 0x89, - 0x78, 0x77, 0xb0, 0x75, 0xd9, 0xe0, 0xb6, 0x93, 0x92, 0x31, 0x23, 0xaf, - 0xa3, 0xb8, 0x4c, 0x9e, 0xb3, 0xbf, 0x55, 0xf1, 0x4f, 0xc5, 0x63, 0xe1, - 0xd3, 0x92, 0x46, 0xb6, 0xfa, 0x8a, 0xa9, 0xba, 0xfc, 0xea, 0x41, 0x80, - 0x4a, 0xd1, 0x15, 0x4c, 0xf8, 0xa4, 0xf4, 0xe0, 0xf4, 0xf4, 0x26, 0x89, - 0x0d, 0xa3, 0xd5, 0xc2, 0xd4, 0x05, 0xda, 0xf0, 0x5f, 0x40, 0xd4, 0xee, - 0x1d, 0x94, 0xc7, 0xcb, 0x53, 0x97, 0x50, 0x52, 0x77, 0xf0, 0x7b, 0x46, - 0x2c, 0x8b, 0x03, 0xfc, 0xc1, 0xbb, 0x0b, 0x5d, 0x6b, 0xfd, 0xaf, 0x6f, - 0x3e, 0xaa, 0x5d, 0x87, 0x28, 0xc3, 0x3d, 0x5e, 0x14, 0xe7, 0xef, 0x21, - 0xa4, 0xd2, 0x90, 0xcc, 0x51, 0x97, 0x8d, 0x71, 0x98, 0xc5, 0xb4, 0x42, - 0x2a, 0x98, 0x19, 0x0e, 0xd8, 0xb6, 0x8c, 0x89, 0x3e, 0xaf, 0x92, 0xe9, - 0x14, 0x83, 0xdd, 0xa5, 0xfa, 0x32, 0x13, 0x2c, 0x4d, 0xe0, 0x37, 0x17, - 0x53, 0x0d, 0x6c, 0x36, 0x7d, 0xba, 0x5e, 0x1b, 0x79, 0x06, 0xc2, 0x2c, - 0xcb, 0x97, 0x05, 0x60, 0x1f, 0xd1, 0x48, 0xbd, 0xa8, 0x91, 0xfa, 0x07, - 0x05, 0x39, 0xc2, 0x45, 0xbc, 0x4b, 0x93, 0xc9, 0x81, 0x23, 0x5a, 0x11, - 0x0a, 0x66, 0xa9, 0x71, 0xd7, 0x37, 0xb1, 0xae, 0xea, 0x68, 0xb0, 0x56, - 0x9e, 0xe7, 0xdf, 0xf0, 0xe8, 0xfd, 0x67, 0x9e, 0x4b, 0x1b, 0x49, 0x68, - 0x82, 0x35, 0xae, 0x98, 0x76, 0x69, 0x8b, 0x7f, 0x50, 0x32, 0x77, 0xd4, - 0x5d, 0x4c, 0xa4, 0xd9, 0xee, 0x3d, 0x5e, 0x79, 0x23, 0x6f, 0x0a, 0xfa, - 0xf6, 0x78, 0x7c, 0x1f, 0x4e, 0x34, 0x4d, 0x7c, 0x81, 0x8e, 0x72, 0xb8, - 0xb6, 0x2c, 0x15, 0xe9, 0x04, 0x81, 0x4c, 0xf7, 0xdb, 0xe6, 0x4d, 0x30, - 0x8f, 0x5e, 0x94, 0x21, 0x41, 0x6f, 0xa4, 0xad, 0x4e, 0xdc, 0xfa, 0x6d, - 0x47, 0xed, 0x88, 0xc7, 0x48, 0xe0, 0x1e, 0x21, 0x2f, 0x19, 0xb3, 0x7e, - 0x52, 0x6d, 0x8f, 0x6b, 0xba, 0x9b, 0xd2, 0x59, 0x56, 0x7a, 0x77, 0xfa, - 0x2e, 0xb3, 0xe4, 0x28, 0xef, 0xbf, 0x85, 0x3a, 0xe2, 0x39, 0xb2, 0x5e, - 0xf6, 0xd2, 0x35, 0xff, 0x4e, 0x8b, 0xfb, 0xbd, 0x98, 0x9b, 0x60, 0xdd, - 0x69, 0x75, 0x9d, 0x1a, 0x5e, 0x3d, 0xb5, 0x5e, 0x3b, 0x6b, 0x7a, 0xb5, - 0x50, 0x00, 0xca, 0xed, 0x59, 0x63, 0xd8, 0xc2, 0xa6, 0x78, 0xc8, 0x42, - 0x61, 0xb9, 0x76, 0x85, 0xc4, 0xbb, 0xab, 0xb2, 0xae, 0x29, 0xc9, 0x81, - 0x60, 0xcf, 0x06, 0x1c, 0x95, 0x5c, 0xb6, 0xbb, 0x3a, 0x43, 0xed, 0x6b, - 0xc7, 0xfd, 0x9f, 0xbb, 0x34, 0x4a, 0xf1, 0xfe, 0xdf, 0xca, 0xd4, 0xa5, - 0x7b, 0xf3, 0x39, 0x66, 0xbf, 0x5d, 0x99, 0x50, 0x66, 0xbe, 0x4c, 0x6f, - 0x69, 0x1a, 0xeb, 0x26, 0x44, 0xc2, 0x5e, 0xbc, 0x90, 0xed, 0x82, 0x07, - 0x1a, 0x5a, 0xc6, 0x6e, 0x20, 0x5c, 0xd0, 0xff, 0x62, 0x4e, 0x74, 0xf8, - 0xf0, 0xa5, 0x5c, 0xfa, 0x5d, 0xd8, 0xf7, 0xd4, 0x72, 0x7b, 0x74, 0xa9, - 0x82, 0xd9, 0xe2, 0x0a, 0xb9, 0x63, 0x06, 0x0b, 0xe6, 0xe6, 0xd8, 0x4c, - 0x53, 0xe0, 0x85, 0xd6, 0x72, 0xa1, 0x84, 0x89, 0xa1, 0xdd, 0xe8, 0xb0, - 0x05, 0x2f, 0x6e, 0xd4, 0x94, 0xbe, 0x06, 0x4c, 0x1f, 0x92, 0xe9, 0xf8, - 0x5b, 0xe6, 0x0c, 0x15, 0x22, 0xd9, 0x12, 0xbc, 0xfa, 0xea, 0x52, 0x6b, - 0x5f, 0xbf, 0x17, 0x3b, 0x7f, 0x87, 0x94, 0xa5, 0x29, 0x5b, 0xd2, 0x09, - 0x9b, 0x77, 0xc7, 0xe7, 0x92, 0x61, 0xf2, 0xfb, 0x7e, 0x2e, 0xbf, 0xeb, - 0x57, 0x85, 0x9e, 0x55, 0xd9, 0x9a, 0x97, 0x5d, 0xf0, 0x58, 0x06, 0x30, - 0x80, 0xd4, 0x91, 0xfd, 0x5e, 0x7b, 0xe3, 0x8c, 0x32, 0xdd, 0x74, 0x23, - 0x92, 0x37, 0x0e, 0xb5, 0xc5, 0x29, 0xc6, 0xb6, 0x9f, 0xbf, 0x1d, 0x11, - 0x40, 0xa9, 0x61, 0x54, 0x7c, 0xac, 0x52, 0x9f, 0xe5, 0x45, 0x5b, 0xce, - 0x3e, 0x9c, 0xea, 0xa7, 0x49, 0xc1, 0x06, 0xce, 0x99, 0x15, 0xc1, 0x7c, - 0xb3, 0xbb, 0xed, 0x69, 0x1e, 0xb2, 0xcc, 0x89, 0x39, 0x1c, 0x85, 0x2f, - 0x5a, 0x69, 0xc9, 0x14, 0x77, 0x5c, 0x78, 0x31, 0x83, 0x8c, 0xbd, 0x49, - 0x06, 0x0d, 0x12, 0x85, 0xfa, 0x7b, 0xa9, 0xa5, 0x2d, 0x42, 0x83, 0x24, - 0xa6, 0x62, 0x7a, 0x60, 0x90, 0x3a, 0x19, 0xec, 0x6d, 0x06, 0x80, 0x89, - 0xc6, 0xaf, 0x57, 0xc3, 0x7e, 0x4a, 0xac, 0x22, 0x0a, 0x4f, 0x25, 0xac, - 0x16, 0x54, 0x69, 0xd6, 0x92, 0x14, 0xbe, 0xee, 0xfd, 0x09, 0x2b, 0x97, - 0xd7, 0x23, 0x13, 0xf9, 0xee, 0x8e, 0xc8, 0x87, 0x8a, 0xbe, 0xcd, 0x7e, - 0x78, 0xe0, 0x80, 0xe1, 0x0b, 0xcb, 0x17, 0x80, 0x5a, 0x74, 0xdf, 0x9c, - 0x44, 0x18, 0x7c, 0x75, 0x25, 0x4d, 0xd9, 0x62, 0x81, 0x82, 0xee, 0x79, - 0xd5, 0x80, 0xea, 0x32, 0x08, 0x7a, 0x35, 0x6f, 0x40, 0xe7, 0x0a, 0xbb, - 0x05, 0x4a, 0xdc, 0x44, 0x6c, 0x74, 0x2e, 0xef, 0x48, 0x6d, 0x1e, 0xa1, - 0x95, 0x3a, 0x0b, 0x11, 0xc2, 0x50, 0xd4, 0xd6, 0x7e, 0x3b, 0x5c, 0x42, - 0x68, 0x86, 0x9b, 0xc2, 0xc3, 0x42, 0x4d, 0x1a, 0xb7, 0xcd, 0xc7, 0xab, - 0x58, 0x87, 0x6e, 0x60, 0x2a, 0xd1, 0xfe, 0x27, 0xf5, 0xf3, 0xa0, 0xd9, - 0xec, 0x39, 0xa2, 0xd7, 0x90, 0xcd, 0x2b, 0x95, 0x2e, 0x34, 0x59, 0x87, - 0x9b, 0x47, 0x53, 0x5b, 0x94, 0xb5, 0xd8, 0x9e, 0x27, 0x87, 0x9b, 0x79, - 0x8b, 0xfe, 0x6a, 0x2f, 0xe9, 0x7c, 0xdc, 0x0d, 0xea, 0x45, 0x54, 0xdc, - 0x0e, 0x8c, 0x43, 0xbb, 0x9d, 0xec, 0x98, 0x2d, 0x2f, 0x54, 0xc6, 0xee, - 0xe1, 0xa8, 0xb0, 0x5d, 0xca, 0x06, 0x43, 0x6b, 0x6c, 0xce, 0x46, 0xb3, - 0x47, 0xfd, 0x64, 0xe3, 0x29, 0xf8, 0x54, 0x1d, 0x16, 0xbd, 0x40, 0x42, - 0xf2, 0x86, 0x66, 0x5e, 0xeb, 0x6e, 0x85, 0x11, 0xa1, 0xe1, 0xcd, 0x4d, - 0x25, 0xe5, 0x16, 0x1d, 0xc9, 0x28, 0xe7, 0x6a, 0x79, 0x21, 0xe7, 0xbc, - 0x1a, 0x66, 0xae, 0xd2, 0x2f, 0xc4, 0xfe, 0x6e, 0xee, 0x93, 0xf2, 0x58, - 0xd3, 0xdb, 0x25, 0x73, 0x47, 0xa0, 0xf5, 0x31, 0x6d, 0x72, 0x26, 0x45, - 0x12, 0x56, 0x04, 0xc0, 0xc1, 0x1b, 0x87, 0x66, 0x79, 0xca, 0xe0, 0xb4, - 0x79, 0xb3, 0x86, 0xbb, 0x70, 0xa2, 0x57, 0x94, 0x18, 0x60, 0xdc, 0xed, - 0x86, 0x04, 0x55, 0x35, 0x0e, 0xf4, 0x01, 0x32, 0x62, 0x0d, 0xc0, 0xfd, - 0x5b, 0x3c, 0x17, 0x17, 0xca, 0xf5, 0x05, 0x25, 0xc4, 0xef, 0x65, 0xb9, - 0x27, 0x2b, 0xa3, 0x36, 0x00, 0x6d, 0xae, 0x83, 0x79, 0x93, 0x0d, 0x8a, - 0x2f, 0xaa, 0x6f, 0xbb, 0x63, 0xa6, 0x09, 0x0b, 0x69, 0x45, 0x46, 0xd0, - 0x98, 0xb1, 0x0b, 0xde, 0xa5, 0x97, 0xc7, 0x06, 0x79, 0xcd, 0xde, 0xf3, - 0xfd, 0x03, 0x4b, 0xca, 0xf4, 0x4b, 0xae, 0x36, 0x18, 0xa2, 0x83, 0x1f, - 0x88, 0x1b, 0x7b, 0xcf, 0x6b, 0xfa, 0xe8, 0x7b, 0xe1, 0xd1, 0xc3, 0xf6, - 0x57, 0x9d, 0x70, 0x09, 0x5f, 0xa8, 0xf4, 0x86, 0xab, 0x29, 0x45, 0xb6, - 0xc4, 0xd0, 0x77, 0x50, 0x08, 0xbc, 0xdc, 0xfa, 0xf6, 0x93, 0x17, 0x7f, - 0x82, 0x36, 0x9b, 0x5f, 0x3a, 0xbc, 0x4c, 0xf0, 0xdc, 0x9a, 0x04, 0x12, - 0x0d, 0x8f, 0xbc, 0xe0, 0xf4, 0xe3, 0x23, 0x3b, 0xf0, 0xfb, 0xf3, 0xd9, - 0xcb, 0x62, 0xd6, 0x39, 0x40, 0xfa, 0x59, 0xa4, 0x03, 0xfa, 0x66, 0x77, - 0x3d, 0xfa, 0x1d, 0xee, 0xd8, 0x09, 0x1b, 0xa9, 0x11, 0x9e, 0x64, 0xf3, - 0xe6, 0x2e, 0x0d, 0x51, 0x77, 0x51, 0xf7, 0xcb, 0x09, 0x97, 0x4e, 0x54, - 0xe7, 0xb4, 0xc8, 0x11, 0xad, 0xe6, 0xda, 0x3e, 0x7b, 0x6f, 0xf3, 0xbc, - 0xc7, 0x94, 0x8f, 0x45, 0x97, 0xfa, 0x40, 0x78, 0x1f, 0x7a, 0xe4, 0x45, - 0x57, 0x63, 0x19, 0x19, 0x2c, 0xd5, 0xef, 0xa9, 0x75, 0x62, 0x3e, 0xf5, - 0x47, 0x0f, 0x35, 0xd3, 0x30, 0x95, 0x5e, 0x00, 0xef, 0x26, 0xd5, 0xb5, - 0x24, 0x5f, 0x7f, 0xcf, 0xe3, 0x9e, 0xf9, 0x81, 0xe4, 0x17, 0x5a, 0xeb, - 0x9b, 0x85, 0x9d, 0xcb, 0xa9, 0x7c, 0x10, 0x03, 0x40, 0x15, 0x7a, 0xd2, - 0xbd, 0xc7, 0x15, 0x76, 0x6d, 0x9c, 0xf9, 0x3a, 0xd7, 0x46, 0x62, 0xa9, - 0xe6, 0xe4, 0x17, 0xb7, 0x73, 0x47, 0xb5, 0x67, 0x69, 0x20, 0xbd, 0x0d, - 0x2d, 0x6b, 0xf3, 0x9b, 0x54, 0x2a, 0x99, 0xfb, 0x6c, 0xfc, 0xc5, 0x8b, - 0xac, 0x53, 0x23, 0x3e, 0xc0, 0xa6, 0xea, 0x76, 0x19, 0xec, 0x37, 0x8c, - 0x60, 0x07, 0xde, 0x7c, 0xeb, 0xef, 0xa0, 0xeb, 0xb7, 0xbe, 0xec, 0xe7, - 0xa0, 0x2e, 0x73, 0x7b, 0xa3, 0xfe, 0x7b, 0xdb, 0x22, 0xfa, 0x51, 0x4d, - 0x40, 0x29, 0x60, 0x61, 0x1d, 0x23, 0xda, 0x54, 0xa8, 0x09, 0x9f, 0x19, - 0x9e, 0xdb, 0xb0, 0x66, 0xd2, 0x04, 0x0d, 0x84, 0x5e, 0x36, 0xd0, 0x93, - 0x70, 0xd5, 0x36, 0xc8, 0x9c, 0x1e, 0x18, 0x6e, 0xa2, 0x02, 0xbb, 0xfe, - 0x7e, 0xb7, 0x0a, 0xcf, 0xbc, 0x10, 0xe5, 0xc6, 0x24, 0x29, 0xfa, 0x55, - 0xf9, 0xfa, 0x0c, 0xcc, 0x92, 0xb2, 0xa0, 0xec, 0xb4, 0xf5, 0xab, 0xae, - 0xaa, 0xca, 0xa7, 0x88, 0x01, 0x3a, 0xcc, 0x78, 0x75, 0x3c, 0x80, 0x47, - 0xfe, 0xd7, 0xca, 0xee, 0xc6, 0xdc, 0x6d, 0x76, 0xb2, 0xff, 0xda, 0x9f, - 0x26, 0x01, 0xeb, 0x56, 0x63, 0x44, 0x92, 0x7a, 0x43, 0xa7, 0x90, 0xc2, - 0x4b, 0x47, 0xc1, 0x52, 0x6b, 0x41, 0xb7, 0xe8, 0x36, 0x70, 0x80, 0x13, - 0x35, 0x47, 0x07, 0x1c, 0x4d, 0xeb, 0xe5, 0xe5, 0x54, 0x5b, 0xb5, 0x72, - 0x50, 0x8f, 0xaf, 0xd2, 0x1a, 0xa8, 0x2d, 0x7b, 0xd9, 0x8c, 0x69, 0xa2, - 0x67, 0x53, 0xa4, 0x41, 0xe1, 0xea, 0xbe, 0x7d, 0xaf, 0xff, 0xa2, 0xa3, - 0xdc, 0x95, 0xa6, 0xc1, 0x21, 0x5e, 0x0d, 0x38, 0x04, 0xa5, 0x77, 0x04, - 0x09, 0x40, 0x6b, 0xdc, 0xc7, 0xa6, 0xaf, 0xd2, 0x1a, 0xa6, 0xe7, 0xf5, - 0xb0, 0xa2, 0xd4, 0xbe, 0xae, 0x30, 0xf1, 0xbf, 0xed, 0xb0, 0x72, 0x55, - 0x12, 0x05, 0x7d, 0x47, 0x0c, 0xd3, 0x64, 0x70, 0x53, 0xa0, 0xc5, 0xfc, - 0xec, 0x2d, 0x89, 0x60, 0xed, 0x24, 0xec, 0x70, 0xbe, 0x5b, 0xc8, 0xcd, - 0xc4, 0x21, 0xfb, 0x85, 0x68, 0xbe, 0x09, 0x3e, 0xec, 0xa1, 0x6d, 0x95, - 0x0a, 0xc4, 0xf6, 0xde, 0x13, 0x4d, 0x39, 0xa9, 0xc0, 0xb4, 0xc1, 0x07, - 0x79, 0x5d, 0xc5, 0x1c, 0xcc, 0x6e, 0x3a, 0x81, 0xa2, 0xcd, 0xbe, 0x6b, - 0x04, 0xe2, 0x7e, 0xe1, 0x41, 0xf9, 0xfd, 0x32, 0x6c, 0x58, 0xb1, 0x8d, - 0x57, 0x9e, 0x81, 0x2f, 0x31, 0x5e, 0x05, 0xa0, 0x23, 0xd1, 0x81, 0x87, - 0x87, 0x01, 0x8b, 0x6c, 0x28, 0x57, 0x93, 0x07, 0x51, 0xf9, 0x8b, 0xb3, - 0xf4, 0xc5, 0x8a, 0xd2, 0x4e, 0xf8, 0x6d, 0x91, 0x0e, 0xe4, 0x31, 0x58, - 0x77, 0x4c, 0x94, 0x4e, 0x6e, 0x30, 0x54, 0x01, 0x40, 0xaa, 0x29, 0x36, - 0x38, 0x04, 0x84, 0x21, 0x7d, 0x63, 0x73, 0x43, 0x00, 0xc7, 0x85, 0x07, - 0xf5, 0x3d, 0x19, 0x71, 0x2b, 0xd1, 0xec, 0x02, 0x80, 0xee, 0x03, 0x41, - 0xfe, 0x0b, 0xbd, 0x2d, 0x3d, 0xd6, 0xf5, 0xec, 0xe6, 0xa6, 0x54, 0x59, - 0xf4, 0xa6, 0xec, 0x89, 0x30, 0x5d, 0xb3, 0x9d, 0x37, 0x4f, 0x1b, 0x4a, - 0x3a, 0x91, 0xda, 0x9d, 0xfd, 0x4a, 0x60, 0x24, 0xa2, 0xff, 0xd7, 0xbe, - 0xd4, 0xc5, 0x24, 0x25, 0xc7, 0xb7, 0xe9, 0x3d, 0xf9, 0xc2, 0xff, 0x15, - 0xcb, 0xa0, 0xc8, 0xb9, 0x5c, 0xc5, 0x99, 0xa9, 0x0c, 0x27, 0x4b, 0xf3, - 0x54, 0xe9, 0xed, 0xbf, 0x20, 0xaa, 0xcc, 0x01, 0x22, 0x0d, 0x81, 0x42, - 0xd1, 0x8c, 0x93, 0x23, 0xac, 0xdb, 0x6d, 0x95, 0xf1, 0xa0, 0x37, 0x75, - 0x07, 0xb2, 0x55, 0xc5, 0x9b, 0xd5, 0x71, 0xa5, 0xf2, 0x36, 0x48, 0x93, - 0xf5, 0xfe, 0xf5, 0xff, 0x8f, 0xa0, 0x87, 0x51, 0x9b, 0x82, 0xab, 0x7e, - 0xa3, 0x1b, 0xca, 0x2a, 0xb4, 0x56, 0x95, 0xf0, 0xe4, 0xce, 0x79, 0xa4, - 0x54, 0x71, 0x17, 0xaa, 0xe6, 0xf1, 0x29, 0xef, 0xea, 0x02, 0x8b, 0xf2, - 0x2b, 0xc0, 0x88, 0x4a, 0x24, 0xb0, 0xdd, 0x69, 0x8b, 0xee, 0x5a, 0x0d, - 0xb4, 0x42, 0x76, 0xe0, 0xec, 0x66, 0x4d, 0x0a, 0x42, 0x17, 0xb7, 0xd9, - 0x0c, 0xe0, 0xb6, 0xcf, 0x6c, 0xea, 0x61, 0x4c, 0x76, 0x34, 0xfb, 0xb6, - 0x73, 0x89, 0xbd, 0xd5, 0x00, 0x61, 0x83, 0xfd, 0x77, 0x1c, 0x3f, 0x51, - 0x36, 0x5a, 0x04, 0xdd, 0xc8, 0x1b, 0xa5, 0xbb, 0xae, 0x53, 0xd4, 0xf0, - 0xba, 0x61, 0x31, 0xe6, 0x2e, 0xb8, 0xe7, 0x86, 0x2f, 0xa2, 0xdf, 0x3e, - 0x8e, 0xce, 0xd5, 0x6a, 0xff, 0x6f, 0x1e, 0xa0, 0xa2, 0xae, 0x8d, 0x9c, - 0x1b, 0x32, 0xf5, 0xd0, 0x85, 0x18, 0x28, 0x46, 0x1a, 0xd1, 0x4a, 0xc6, - 0xd2, 0x77, 0x63, 0xa3, 0xde, 0xdf, 0x8d, 0x4c, 0xcd, 0x42, 0x20, 0xc4, - 0xf2, 0x63, 0x0c, 0x6e, 0x73, 0x89, 0x60, 0xf3, 0xb7, 0x2d, 0x9d, 0x58, - 0x3c, 0x9f, 0x0b, 0x94, 0x18, 0xca, 0xd3, 0xad, 0xd6, 0xc0, 0x6d, 0x4b, - 0x4e, 0xd1, 0x0b, 0x33, 0x65, 0xe5, 0xdf, 0xb8, 0x2f, 0x84, 0xca, 0x50, - 0x86, 0xe3, 0x60, 0xbe, 0x4a, 0xf8, 0x6f, 0x19, 0x19, 0x76, 0xab, 0x4e, - 0x0f, 0x77, 0x45, 0x50, 0xe7, 0x09, 0x14, 0x54, 0xe7, 0x65, 0x8e, 0x82, - 0x3c, 0xf3, 0x8b, 0x2d, 0xf7, 0x5a, 0xc7, 0xaf, 0x07, 0xcc, 0x3b, 0x9e, - 0xde, 0x63, 0xdf, 0xa8, 0x3c, 0x1d, 0x28, 0xbc, 0xb9, 0x52, 0xfb, 0x78, - 0x96, 0x99, 0x3c, 0x65, 0xc0, 0x07, 0x8f, 0xd1, 0x53, 0xb6, 0xb4, 0x79, - 0x00, 0x41, 0xdb, 0x86, 0x06, 0x7b, 0x79, 0xde, 0xd0, 0x9e, 0x67, 0x3f, - 0x5a, 0x22, 0x55, 0x10, 0x9c, 0xcf, 0x0c, 0x73, 0x2c, 0xb3, 0x1f, 0xc7, - 0x77, 0x96, 0x3b, 0xf2, 0x7b, 0xaa, 0x36, 0x17, 0x6f, 0xe3, 0xe9, 0x27, - 0x13, 0xe3, 0x57, 0xfb, 0xb1, 0x5d, 0xf3, 0xa9, 0x60, 0x6d, 0x54, 0xfc, - 0x81, 0xd3, 0x1e, 0x8f, 0xd4, 0x09, 0x63, 0x2d, 0x72, 0x2b, 0xd0, 0x8b, - 0x29, 0x8d, 0x71, 0x2d, 0x04, 0x57, 0x52, 0xf7, 0x16, 0x52, 0xbb, 0x21, - 0x83, 0x1a, 0x91, 0xcd, 0x99, 0xbd, 0xcd, 0x62, 0x4f, 0x70, 0xef, 0x7a, - 0x48, 0x96, 0x23, 0xb2, 0xb4, 0x28, 0x3c, 0xa0, 0x9c, 0x0c, 0x93, 0xb3, - 0x8e, 0xf3, 0x8a, 0xf2, 0x49, 0x16, 0x02, 0xd4, 0x38, 0x1f, 0x9c, 0x8e, - 0x5a, 0x47, 0x09, 0xf3, 0x63, 0x04, 0xe6, 0xfe, 0x3d, 0x3c, 0x4a, 0x49, - 0x14, 0xe8, 0x2e, 0x4a, 0x01, 0xb2, 0x46, 0x6e, 0x6a, 0xd5, 0x80, 0xb9, - 0x8a, 0x21, 0xcc, 0x1a, 0xe9, 0x25, 0x4b, 0x2b, 0x7a, 0x00, 0x18, 0x5e, - 0xc5, 0x5a, 0x76, 0xd4, 0x02, 0x74, 0x2a, 0x52, 0x75, 0x23, 0x22, 0x1a, - 0x83, 0xd7, 0x89, 0x75, 0x18, 0x09, 0xbf, 0x78, 0xbc, 0x01, 0xe2, 0xde, - 0xf5, 0x67, 0xbb, 0x4f, 0x4b, 0x46, 0x0b, 0x29, 0x2e, 0x7b, 0xb3, 0xaf, - 0x0b, 0x54, 0x13, 0xa8, 0x4e, 0x80, 0xff, 0x34, 0x2c, 0xd8, 0x31, 0x7a, - 0xad, 0xed, 0x73, 0xb9, 0xb6, 0x81, 0x2b, 0x86, 0x04, 0x2d, 0x03, 0x54, - 0x25, 0x12, 0x74, 0xb9, 0xe8, 0xce, 0x9a, 0xcf, 0x9f, 0xef, 0xc6, 0x64, - 0x06, 0xed, 0x65, 0xaa, 0x46, 0xb5, 0x3e, 0x24, 0x88, 0x29, 0x58, 0x2c, - 0xda, 0xee, 0x5b, 0xf6, 0xc7, 0x66, 0xdf, 0x5d, 0xb4, 0xd8, 0x01, 0x3e, - 0xb2, 0x66, 0x93, 0x2c, 0xf0, 0xff, 0xa1, 0x1c, 0xfb, 0xac, 0x73, 0x52, - 0x78, 0xba, 0xd5, 0xb9, 0xe0, 0xd3, 0x9c, 0x72, 0xac, 0xd6, 0x5d, 0x2f, - 0x9f, 0x1d, 0x7e, 0x21, 0x5a, 0xdb, 0x00, 0x8f, 0x34, 0xcf, 0xd9, 0xed, - 0x7e, 0xfa, 0x19, 0x5f, 0x76, 0x3b, 0x73, 0xa5, 0x51, 0x12, 0x5a, 0x91, - 0x4e, 0xec, 0x99, 0x36, 0x1b, 0x60, 0x19, 0xd0, 0x15, 0x75, 0xf1, 0xeb, - 0x86, 0x7f, 0xba, 0x0a, 0x18, 0x64, 0x00, 0x8b, 0x28, 0x05, 0xf2, 0x57, - 0x42, 0x59, 0xa2, 0x79, 0x96, 0xd3, 0x39, 0x23, 0x46, 0x76, 0xf1, 0x2f, - 0x17, 0xc7, 0x52, 0xc3, 0x46, 0x82, 0x6d, 0x9e, 0x9c, 0x85, 0x32, 0xf7, - 0x1a, 0xb7, 0x77, 0x7e, 0xde, 0xa5, 0xd6, 0xba, 0x0d, 0x5d, 0x2b, 0xa4, - 0x85, 0x16, 0x67, 0x36, 0xe5, 0xc8, 0x96, 0xe2, 0xca, 0xef, 0x40, 0xfe, - 0x10, 0xf3, 0x22, 0x56, 0x41, 0x82, 0x7c, 0xff, 0x4c, 0x39, 0x87, 0xfe, - 0x4d, 0x6e, 0x14, 0xc6, 0xd4, 0xee, 0xf5, 0xba, 0x5c, 0x83, 0x6e, 0x04, - 0x4e, 0x69, 0x41, 0xe1, 0x5d, 0x51, 0x96, 0x00, 0x46, 0x4d, 0xb7, 0x06, - 0xc0, 0xdd, 0x4e, 0x52, 0xe7, 0x94, 0xb1, 0x9f, 0xbe, 0xfc, 0x65, 0x8e, - 0x6b, 0xf6, 0xc1, 0x90, 0xc8, 0xc2, 0xd1, 0x34, 0x1c, 0x20, 0xd9, 0x96, - 0xc5, 0xeb, 0xde, 0xb8, 0xf8, 0xd4, 0x98, 0x8d, 0xcc, 0x20, 0x73, 0x9e, - 0x53, 0x2b, 0xb0, 0x0b, 0x47, 0x3f, 0x70, 0x55, 0xdf, 0x45, 0x80, 0x6c, - 0xa1, 0xff, 0x19, 0x1c, 0xe3, 0xe1, 0xe3, 0xf3, 0x7f, 0xcc, 0xeb, 0x7c, - 0x0f, 0x7a, 0x44, 0xae, 0xb1, 0x4d, 0xcc, 0x98, 0xb7, 0x45, 0x99, 0xf8, - 0xa1, 0x3c, 0x09, 0xfb, 0x43, 0x8b, 0xe1, 0x0d, 0x9d, 0x66, 0x36, 0xc9, - 0x8e, 0x29, 0xd4, 0xdb, 0x9f, 0xf2, 0x76, 0xcb, 0x8c, 0x64, 0xf7, 0xe4, - 0xce, 0xb1, 0xe0, 0x5f, 0x34, 0x81, 0xaf, 0xb9, 0x50, 0xb6, 0xc5, 0x9a, - 0x6b, 0xee, 0x4d, 0x58, 0x5d, 0x67, 0xa3, 0xe9, 0xd5, 0xd4, 0xd8, 0x02, - 0xf1, 0xed, 0x47, 0xf3, 0xd2, 0xc9, 0xe2, 0xd1, 0x03, 0xfd, 0x84, 0x92, - 0x29, 0x4a, 0xd6, 0xec, 0x8e, 0xc4, 0xb2, 0x13, 0xee, 0xdf, 0xd6, 0xc7, - 0x89, 0x87, 0x56, 0x52, 0x83, 0x5d, 0xa1, 0x5e, 0x9e, 0x78, 0x15, 0xdb, - 0x19, 0xce, 0xda, 0xbb, 0x87, 0x8a, 0x0a, 0xab, 0x2a, 0x4e, 0xd0, 0xdf, - 0x09, 0xb1, 0x3d, 0x85, 0x8b, 0xed, 0x8b, 0xaf, 0x83, 0x1c, 0xb2, 0xdd, - 0xce, 0xb4, 0x5c, 0xe3, 0x16, 0xd4, 0xc9, 0x51, 0x1a, 0xf7, 0xbc, 0xae, - 0xdf, 0xc3, 0x16, 0x9b, 0x2f, 0x2b, 0x94, 0xd0, 0x9b, 0x5e, 0xc4, 0xcd, - 0xf9, 0xd3, 0x09, 0x8c, 0x71, 0x31, 0x8d, 0xa6, 0xf0, 0xa5, 0xeb, 0x6c, - 0x83, 0x2e, 0xaf, 0x5f, 0x55, 0x84, 0xb3, 0x2b, 0xc8, 0xcd, 0xe6, 0x4a, - 0x72, 0x7d, 0x25, 0x7e, 0xd7, 0x42, 0x07, 0xd4, 0x1b, 0xfd, 0xae, 0x8e, - 0xaf, 0xc8, 0xa8, 0xc3, 0x1a, 0xcd, 0x9a, 0x53, 0x9d, 0x37, 0x20, 0x9c, - 0x47, 0x28, 0x0c, 0xbd, 0x43, 0xbd, 0xcc, 0xc5, 0xb9, 0x28, 0x2d, 0xcc, - 0x53, 0xe1, 0xb4, 0xb3, 0xfc, 0x9e, 0x55, 0x5d, 0x2c, 0x8e, 0xdc, 0x98, - 0x93, 0xae, 0xac, 0x63, 0xe7, 0x33, 0xb4, 0xc6, 0x57, 0x82, 0x38, 0x9e, - 0xf4, 0xe7, 0x2d, 0x9a, 0xb8, 0x9b, 0x05, 0x7e, 0xbf, 0x10, 0x00, 0xd0, - 0x41, 0xab, 0x0d, 0x0e, 0x85, 0x17, 0x92, 0x87, 0xb2, 0x14, 0xb9, 0x35, - 0x7a, 0xfb, 0xe9, 0xea, 0xfc, 0xd9, 0xea, 0xe0, 0xaf, 0xf1, 0xba, 0x90, - 0xd3, 0xee, 0x9b, 0xa7, 0xe5, 0xc4, 0x07, 0x9f, 0x64, 0x7e, 0x98, 0x3a, - 0xd5, 0xa0, 0xea, 0xad, 0x75, 0xfd, 0x5c, 0x15, 0x51, 0x61, 0x04, 0xbe, - 0x59, 0x7a, 0x9f, 0xe3, 0x1b, 0xc4, 0xc9, 0x48, 0x16, 0x51, 0x24, 0x3c, - 0x46, 0xe4, 0x55, 0x17, 0x03, 0xb6, 0xa6, 0x3d, 0x7e, 0x33, 0x92, 0xdb, - 0xd2, 0x6b, 0xaf, 0x80, 0x87, 0xb9, 0xa0, 0x00, 0x30, 0x25, 0x07, 0x3e, - 0x08, 0xa9, 0x5d, 0x21, 0x31, 0x7b, 0x18, 0x7f, 0x6e, 0x08, 0x72, 0x16, - 0xe3, 0x42, 0xea, 0x71, 0x17, 0xdc, 0x81, 0xda, 0x7b, 0xc8, 0xf6, 0x38, - 0x7b, 0x34, 0x60, 0x87, 0xc6, 0x22, 0x77, 0x38, 0x48, 0x44, 0x81, 0xb1, - 0xd1, 0x28, 0x4b, 0x6c, 0xf1, 0x26, 0x06, 0x2b, 0xf2, 0x91, 0x08, 0x58, - 0xb7, 0xcb, 0x72, 0x87, 0xbb, 0xb2, 0x0c, 0xad, 0x58, 0x2b, 0xe8, 0x58, - 0x4d, 0xb3, 0x8d, 0x55, 0xb2, 0x15, 0x48, 0xa9, 0x23, 0x9f, 0xc6, 0x03, - 0xb5, 0xfa, 0x19, 0x06, 0x03, 0x6d, 0xa5, 0xf3, 0x4c, 0xab, 0x90, 0x5e, - 0xdf, 0x00, 0x2b, 0x5f, 0xef, 0x8f, 0xbe, 0x42, 0xcc, 0xa3, 0x79, 0xc7, - 0x5c, 0x67, 0xdb, 0xa6, 0x1e, 0x89, 0xc1, 0x61, 0x5c, 0x09, 0xa2, 0xa1, - 0x48, 0xed, 0xe1, 0x2a, 0xaf, 0xe9, 0xc8, 0x81, 0xe1, 0xa2, 0x29, 0xca, - 0x3c, 0x81, 0x2c, 0x02, 0x52, 0xa3, 0xf1, 0x01, 0x1e, 0xd9, 0xd3, 0x82, - 0x1a, 0xbc, 0xd7, 0x41, 0xb1, 0x15, 0x59, 0x79, 0x80, 0x8a, 0x48, 0x0d, - 0x31, 0x57, 0x02, 0x2b, 0xbc, 0xb1, 0xdc, 0x74, 0x21, 0x15, 0xb4, 0xfc, - 0x0a, 0x4e, 0x94, 0x5e, 0x2b, 0xd6, 0x2b, 0xe1, 0xe5, 0x0e, 0x84, 0x3f, - 0x50, 0xd8, 0x40, 0xa9, 0xd1, 0x21, 0x68, 0x67, 0xaa, 0x60, 0x46, 0x53, - 0xe9, 0x32, 0xcb, 0xf9, 0x7f, 0x8f, 0xd5, 0x7a, 0x5f, 0xc1, 0xd6, 0xc7, - 0x6a, 0x8d, 0xd1, 0x92, 0x43, 0xef, 0xc6, 0x27, 0x8c, 0xa9, 0xd9, 0xc3, - 0x89, 0xbb, 0x09, 0xb9, 0x4a, 0xa4, 0xd4, 0xe2, 0xa9, 0xf8, 0x3d, 0x61, - 0xda, 0x1d, 0x36, 0x79, 0xa6, 0xeb, 0x91, 0x63, 0xb2, 0xc1, 0xa5, 0xd2, - 0x55, 0x8a, 0xd5, 0x20, 0xcf, 0x9d, 0x8e, 0x73, 0xd7, 0x55, 0x81, 0x9b, - 0x70, 0xfd, 0xec, 0xb5, 0x31, 0xd3, 0x84, 0x6c, 0x31, 0x1b, 0xc5, 0x3e, - 0x29, 0xb9, 0xfe, 0x72, 0xfd, 0x45, 0xc8, 0x54, 0xf4, 0x66, 0x92, 0x89, - 0xea, 0x55, 0x47, 0xf8, 0xb9, 0x8f, 0x7b, 0x7e, 0xdb, 0xd7, 0x81, 0xc0, - 0x4d, 0xc8, 0x79, 0x60, 0xdd, 0xfc, 0x46, 0xc2, 0x06, 0x95, 0x00, 0x98, - 0xd7, 0x6c, 0xc5, 0x4b, 0xb3, 0xef, 0x1d, 0x77, 0x6b, 0x81, 0x78, 0x3d, - 0x6a, 0xe5, 0x44, 0x71, 0x3d, 0x05, 0xe8, 0xdd, 0x8c, 0x95, 0xcf, 0x61, - 0x37, 0xca, 0xfd, 0x8e, 0xe8, 0xd6, 0xe8, 0x94, 0x64, 0xb6, 0xbf, 0x36, - 0x47, 0xea, 0x36, 0xd4, 0x18, 0x12, 0xf2, 0x1d, 0x74, 0x6b, 0x94, 0xc7, - 0xe8, 0xae, 0xcb, 0xd3, 0xaf, 0x2f, 0x24, 0x6d, 0x58, 0x08, 0xe0, 0x80, - 0x91, 0x6d, 0x2e, 0x04, 0x45, 0x8a, 0x73, 0xca, 0x90, 0x5b, 0x13, 0xbb, - 0xa0, 0x12, 0x0b, 0xc8, 0xad, 0x9c, 0xc7, 0xeb, 0x84, 0xd2, 0x69, 0x98, - 0x23, 0xcf, 0x70, 0xd9, 0x24, 0x58, 0x72, 0x6e, 0x70, 0x15, 0x58, 0xe0, - 0x8d, 0x4a, 0xa3, 0x4a, 0xfe, 0xcc, 0xb2, 0x37, 0x79, 0x01, 0x40, 0x22, - 0xb7, 0xde, 0xea, 0xfa, 0x70, 0x18, 0x62, 0x68, 0x84, 0x7a, 0x64, 0xc9, - 0xb7, 0x00, 0x55, 0x76, 0xd8, 0x50, 0x4b, 0xcd, 0x9e, 0xc8, 0xfa, 0xe4, - 0x89, 0x4a, 0x64, 0x34, 0xf4, 0xf4, 0x49, 0x00, 0x02, 0xc0, 0xe0, 0x19, - 0x84, 0x16, 0xb2, 0xf8, 0x3f, 0xa8, 0xb1, 0xa7, 0x7f, 0x24, 0x71, 0x0c, - 0xce, 0x55, 0x0a, 0xc5, 0xde, 0x3b, 0xbf, 0x3b, 0x8a, 0x65, 0x07, 0xf1, - 0x78, 0x52, 0x83, 0xe0, 0x5b, 0x86, 0x01, 0xc8, 0x26, 0x25, 0x9e, 0xff, - 0x67, 0x86, 0x12, 0xe6, 0xc1, 0x77, 0xeb, 0x50, 0x12, 0x01, 0xc9, 0xd7, - 0xa1, 0x57, 0xdd, 0x89, 0xd9, 0x48, 0xff, 0x3f, 0xa4, 0x53, 0xd3, 0xcb, - 0x93, 0x5b, 0x57, 0xe9, 0x87, 0x15, 0x5f, 0x7a, 0xf2, 0xd7, 0x52, 0x05, - 0x8f, 0x3c, 0xc5, 0x67, 0x69, 0xd3, 0xc3, 0xf5, 0x8a, 0x22, 0xfa, 0x89, - 0xfa, 0x5e, 0x84, 0x4f, 0xf6, 0x40, 0xfc, 0xa0, 0xf1, 0x9f, 0xaa, 0x4f, - 0x68, 0xe6, 0x9b, 0xbe, 0x54, 0x38, 0x73, 0x62, 0xfa, 0x83, 0x70, 0x65, - 0xd4, 0xe5, 0x3b, 0x8f, 0xd9, 0x55, 0xb0, 0x56, 0x5d, 0xfc, 0xd5, 0xc8, - 0xe6, 0x15, 0x55, 0x5d, 0xc8, 0xee, 0x1c, 0x73, 0xed, 0x47, 0x21, 0xe3, - 0x9b, 0x16, 0x24, 0xac, 0x41, 0x9f, 0xb2, 0x08, 0x9d, 0xde, 0x07, 0xff, - 0x0a, 0x82, 0x63, 0x7c, 0x24, 0xbe, 0x12, 0x36, 0x51, 0xd4, 0x9e, 0xa2, - 0x88, 0x0e, 0xea, 0xfb, 0x23, 0x67, 0xe5, 0xa5, 0x54, 0xe8, 0x48, 0x2c, - 0xaa, 0x58, 0x92, 0x92, 0xf6, 0xb6, 0x2f, 0x8a, 0xed, 0xc8, 0x1e, 0x3b, - 0xdf, 0xcd, 0xfb, 0xdd, 0xfc, 0x62, 0x9b, 0xea, 0xc2, 0x13, 0x02, 0x9e, - 0x0e, 0x29, 0x6f, 0xc8, 0x0a, 0x75, 0x0c, 0x66, 0x6a, 0x23, 0xd4, 0xaa, - 0x49, 0x63, 0xe6, 0x72, 0x1c, 0x5a, 0xfd, 0xf5, 0x90, 0x45, 0x27, 0x2a, - 0x8f, 0xe8, 0xdf, 0x16, 0x91, 0xaa, 0x75, 0x8f, 0xe1, 0x6f, 0xd0, 0x38, - 0x22, 0x4b, 0xef, 0x29, 0xcd, 0x8b, 0x6d, 0x7c, 0xcd, 0x74, 0x59, 0x2f, - 0x35, 0x4a, 0xde, 0xdd, 0x6f, 0xeb, 0x03, 0x7c, 0x30, 0x87, 0xc0, 0x7f, - 0x76, 0xa3, 0x23, 0x00, 0x38, 0x9e, 0xde, 0xc9, 0x56, 0x52, 0x97, 0x9b, - 0x27, 0x63, 0x08, 0xfe, 0x4e, 0x10, 0x0c, 0x91, 0x9e, 0x31, 0xdc, 0xd5, - 0x28, 0x48, 0xc6, 0xda, 0xdc, 0xfd, 0x3f, 0xf9, 0xd5, 0x3e, 0xed, 0x6d, - 0xc4, 0x25, 0xea, 0x2c, 0x9b, 0x72, 0xbe, 0x55, 0x10, 0xe8, 0x5e, 0xc2, - 0xef, 0x37, 0xa9, 0xbd, 0xc0, 0xfa, 0xfb, 0x54, 0x3c, 0x77, 0x3f, 0xf5, - 0xc4, 0x93, 0x13, 0xb4, 0xc3, 0x34, 0xff, 0x7f, 0xba, 0x04, 0xc4, 0xa5, - 0x44, 0xce, 0x72, 0xf9, 0x50, 0x88, 0xdf, 0x7d, 0x87, 0x1f, 0xca, 0x56, - 0x66, 0x4e, 0x48, 0xeb, 0x1c, 0x3a, 0x70, 0xdd, 0x26, 0xec, 0x87, 0xd1, - 0x7b, 0xd8, 0x00, 0x2f, 0x97, 0x3e, 0x00, 0x64, 0xe2, 0x05, 0x39, 0x1c, - 0xa6, 0x8a, 0x1f, 0xa4, 0x33, 0x7d, 0x99, 0x45, 0xdd, 0x70, 0x81, 0xaf, - 0x1c, 0xdc, 0xa5, 0x9b, 0xc2, 0xca, 0x0e, 0x99, 0xb1, 0x35, 0x2b, 0xb3, - 0xc1, 0x9e, 0xca, 0x23, 0x0f, 0x17, 0x56, 0xa7, 0x6c, 0x01, 0x7d, 0x56, - 0xe4, 0x51, 0xf1, 0xc7, 0xd4, 0x85, 0x51, 0xa3, 0x26, 0x76, 0x3f, 0xf0, - 0x50, 0x49, 0x9a, 0x9e, 0x18, 0xba, 0x2c, 0xd6, 0x0d, 0xe6, 0xde, 0x5b, - 0x35, 0x18, 0x74, 0xfa, 0x3a, 0x49, 0x50, 0xfd, 0x93, 0xac, 0x0d, 0x7c, - 0xd3, 0x83, 0xfb, 0xf4, 0x07, 0x7a, 0x70, 0x84, 0x1c, 0x9b, 0xdc, 0x36, - 0xf1, 0x6f, 0x77, 0xf7, 0x7c, 0x98, 0x96, 0x21, 0x9d, 0x3b, 0x94, 0x31, - 0xfe, 0x21, 0x52, 0xd2, 0xae, 0x26, 0xfd, 0xc9, 0xac, 0x92, 0x9a, 0x50, - 0x28, 0xdb, 0x5e, 0xe7, 0xf6, 0x49, 0xeb, 0x55, 0xac, 0x36, 0x92, 0x04, - 0xc3, 0x51, 0x56, 0x3f, 0x68, 0x98, 0xf3, 0xf0, 0x09, 0xb6, 0x07, 0x7d, - 0x36, 0x59, 0x4b, 0x45, 0xd3, 0x25, 0xe6, 0x4b, 0x12, 0x6c, 0x4e, 0xfa, - 0x67, 0x61, 0x51, 0x6e, 0x11, 0x64, 0x63, 0x98, 0x09, 0xce, 0xc0, 0xd9, - 0x72, 0x7e, 0x15, 0xa1, 0x6f, 0x3d, 0xbf, 0x0d, 0x2f, 0x95, 0xa8, 0x72, - 0x11, 0x14, 0xfe, 0xe4, 0x60, 0xb8, 0xd9, 0x46, 0x4a, 0x8d, 0xf8, 0xd5, - 0x78, 0xf4, 0xfa, 0x3f, 0x65, 0x86, 0x00, 0xbc, 0xcb, 0xf1, 0x3f, 0xaf, - 0x0a, 0x61, 0xf7, 0x8a, 0x51, 0xb2, 0x96, 0x33, 0x58, 0x58, 0xdc, 0xec, - 0x29, 0x4a, 0x89, 0xc0, 0x3f, 0x7c, 0xab, 0xec, 0x9f, 0xff, 0x68, 0x1f, - 0x29, 0xf0, 0x45, 0x6e, 0xb6, 0x08, 0xf6, 0xa4, 0x1a, 0x9c, 0x1f, 0x0d, - 0xc6, 0xd6, 0xcf, 0x5c, 0x27, 0x6d, 0x84, 0xa1, 0x56, 0x8b, 0x8b, 0x64, - 0x76, 0x0d, 0xb6, 0x91, 0x71, 0x2e, 0x22, 0x69, 0xec, 0xf3, 0x42, 0x4e, - 0x28, 0x62, 0x9a, 0xc5, 0xa7, 0x41, 0xda, 0x19, 0xe3, 0x85, 0x7b, 0x81, - 0x2c, 0x4c, 0x1f, 0xfa, 0x11, 0x8d, 0x86, 0x02, 0x32, 0xcb, 0xe4, 0xaf, - 0x7b, 0xd9, 0x1a, 0x08, 0xaf, 0xee, 0xf1, 0xb9, 0x30, 0x48, 0xe1, 0x8a, - 0x96, 0x59, 0xf3, 0xf1, 0xb7, 0xde, 0x0e, 0xb6, 0x61, 0x34, 0x26, 0x8c, - 0xc7, 0xc3, 0x0b, 0x28, 0x45, 0x81, 0x55, 0x1d, 0x30, 0xc2, 0xbf, 0x1a, - 0x3d, 0x20, 0x1f, 0x0d, 0xbc, 0xcf, 0xeb, 0xc4, 0xde, 0xfc, 0xd1, 0xe0, - 0x42, 0x6a, 0xd8, 0x2b, 0xcc, 0xad, 0xfc, 0x85, 0x95, 0x02, 0x12, 0x06, - 0x79, 0xc0, 0x19, 0xbe, 0x2f, 0xfb, 0x69, 0x9b, 0x1a, 0xeb, 0x58, 0xc3, - 0x7c, 0xa2, 0x94, 0x3c, 0x64, 0x4f, 0xfe, 0xb8, 0x0a, 0x93, 0x0c, 0x6e, - 0x0f, 0xf9, 0x5a, 0x80, 0xf3, 0x3f, 0x77, 0x4f, 0x68, 0x9b, 0x52, 0x50, - 0xe6, 0xc2, 0x52, 0x0e, 0x56, 0x5c, 0x0e, 0xb6, 0xdd, 0xf3, 0x97, 0x0a, - 0xe2, 0xf2, 0x14, 0x9c, 0x0d, 0xd0, 0x46, 0xbc, 0x5e, 0xc5, 0x0c, 0xb6, - 0x01, 0xca, 0x3e, 0x53, 0x79, 0xa8, 0xba, 0x17, 0x12, 0xe0, 0x75, 0x46, - 0xad, 0x11, 0x50, 0xb0, 0x96, 0x06, 0x60, 0xd4, 0x5e, 0xe5, 0xe9, 0x2b, - 0x76, 0xa8, 0x11, 0xcd, 0x76, 0x96, 0xa8, 0xa6, 0xd5, 0xbd, 0xbf, 0xbb, - 0x1a, 0x6b, 0xae, 0xd9, 0x66, 0xc2, 0xc2, 0xb8, 0x31, 0xb0, 0x01, 0xb6, - 0x9c, 0xa9, 0x71, 0xfd, 0x2f, 0x23, 0xa3, 0xbf, 0x17, 0xfa, 0x9f, 0xf6, - 0xe6, 0x51, 0xe3, 0x92, 0xe9, 0xe8, 0x2d, 0x55, 0x11, 0x15, 0x52, 0x76, - 0xa4, 0xcc, 0x4c, 0x1a, 0xa0, 0xcd, 0xd8, 0xee, 0xa4, 0xb3, 0x1b, 0x5e, - 0x68, 0x48, 0xac, 0xf9, 0x35, 0x89, 0x73, 0x22, 0x3d, 0x0f, 0x76, 0x98, - 0xeb, 0x28, 0x39, 0xec, 0xd6, 0x24, 0xf7, 0x0f, 0x00, 0xd4, 0x09, 0x46, - 0xee, 0xab, 0x72, 0x95, 0x25, 0x9f, 0xc6, 0x9b, 0x62, 0xea, 0x6f, 0x7d, - 0xf9, 0x98, 0xda, 0xe0, 0x6c, 0xa9, 0x8e, 0x6e, 0x08, 0x43, 0xd3, 0x57, - 0xd3, 0xd7, 0x02, 0xe6, 0xaf, 0xe3, 0x4b, 0x13, 0x64, 0x4e, 0xbe, 0xd5, - 0xa1, 0x8d, 0xe0, 0x9c, 0x4a, 0xba, 0xc6, 0x93, 0xca, 0xa7, 0x6e, 0x76, - 0x60, 0xac, 0x26, 0xd9, 0x88, 0x3b, 0x47, 0x4b, 0xee, 0xd2, 0x45, 0xc1, - 0xd3, 0x5a, 0x3d, 0x6f, 0xb3, 0xbf, 0x75, 0x42, 0x2f, 0xfe, 0x76, 0xf9, - 0xdb, 0x13, 0x0d, 0x8d, 0xe2, 0x86, 0xb6, 0xc5, 0x5b, 0x7a, 0xc2, 0xb9, - 0x36, 0xd6, 0xd1, 0x50, 0x6a, 0xfd, 0xd0, 0x27, 0x45, 0x32, 0x2e, 0x79, - 0x3e, 0xf0, 0x27, 0x4e, 0x0c, 0x5f, 0x95, 0x24, 0x26, 0xfb, 0x64, 0x3d, - 0xa6, 0x9c, 0xae, 0xa9, 0xa6, 0xe0, 0xf6, 0x1f, 0xd1, 0xad, 0x95, 0x39, - 0x28, 0xd3, 0x6e, 0x57, 0x89, 0xf1, 0x37, 0xe5, 0xf7, 0x97, 0xdd, 0x68, - 0xd2, 0x65, 0x1b, 0x60, 0x14, 0x38, 0xea, 0xed, 0x3b, 0x95, 0xb9, 0x04, - 0x91, 0xf5, 0x8b, 0x84, 0xf1, 0x73, 0x6e, 0x28, 0x89, 0x77, 0xc4, 0xe6, - 0x0e, 0x0d, 0x8d, 0x9d, 0xea, 0x55, 0x19, 0xc6, 0xa7, 0xd2, 0xa9, 0x91, - 0xe8, 0xf7, 0xde, 0x53, 0x53, 0xe4, 0xdd, 0xe8, 0x0f, 0xbe, 0x11, 0x8b, - 0x38, 0x1e, 0x95, 0xc2, 0xcd, 0x37, 0xca, 0xc3, 0x0b, 0x85, 0xd6, 0x2b, - 0xbf, 0x4e, 0x30, 0xd2, 0x1b, 0x2e, 0x05, 0x49, 0x85, 0x22, 0xf5, 0x91, - 0x1a, 0xe5, 0x5e, 0xc7, 0x57, 0x37, 0xa4, 0x74, 0x5c, 0xf1, 0x65, 0x21, - 0xa5, 0x8c, 0xb9, 0x6c, 0x25, 0x5a, 0xaa, 0xc7, 0x7e, 0x2a, 0x1e, 0x06, - 0x4e, 0x30, 0x27, 0x3b, 0x1d, 0xd3, 0x47, 0x20, 0x70, 0xf8, 0x05, 0x9a, - 0x15, 0x0e, 0x41, 0xb1, 0xe1, 0xc9, 0xcb, 0x33, 0x60, 0x1d, 0x8d, 0x63, - 0x00, 0xbd, 0x55, 0xc7, 0x86, 0x89, 0x15, 0xf2, 0xbe, 0xd4, 0x9f, 0x79, - 0xe4, 0xf6, 0x0f, 0x81, 0x26, 0x9b, 0x5b, 0xee, 0x20, 0xf7, 0xb2, 0x09, - 0x0c, 0xd0, 0xab, 0x61, 0x0f, 0x74, 0xc3, 0x54, 0x39, 0xfb, 0x19, 0x29, - 0x91, 0x86, 0xf3, 0x8b, 0x45, 0x21, 0xfc, 0x25, 0xd6, 0xa0, 0x7b, 0x8b, - 0x49, 0xbe, 0xbb, 0x0b, 0x6f, 0xb5, 0xd5, 0x54, 0x2b, 0xbb, 0x8c, 0x6d, - 0x76, 0x8f, 0x22, 0x53, 0x59, 0x54, 0x5a, 0xc8, 0x14, 0xf1, 0x55, 0x80, - 0x62, 0xed, 0xab, 0x08, 0x02, 0x5d, 0x4c, 0xe0, 0x81, 0x55, 0x19, 0x77, - 0x0d, 0x79, 0xee, 0xe3, 0x9f, 0xaa, 0x1e, 0x16, 0x87, 0x0c, 0xf7, 0x74, - 0xc3, 0x18, 0x7a, 0x73, 0x05, 0x0e, 0xa1, 0xfe, 0x51, 0x82, 0x6f, 0x83, - 0x20, 0x5f, 0xc1, 0x7e, 0x9f, 0x15, 0x5c, 0xee, 0xaa, 0xb5, 0x91, 0xbc, - 0xc8, 0xb3, 0x23, 0xa9, 0xca, 0xc0, 0x35, 0xf9, 0xf7, 0x8c, 0x22, 0x99, - 0xc6, 0x19, 0x46, 0x5a, 0x02, 0x7b, 0x12, 0x34, 0x87, 0x90, 0xb2, 0x8b, - 0xa1, 0xc4, 0x80, 0xab, 0x03, 0x7f, 0xb8, 0xbb, 0x1b, 0xbb, 0x38, 0xf4, - 0xc0, 0xac, 0x23, 0xb7, 0x10, 0x84, 0x1a, 0x60, 0x2a, 0xb7, 0x21, 0x7a, - 0x5c, 0xf8, 0x42, 0xc1, 0xf1, 0x09, 0x86, 0xc8, 0x9a, 0x6a, 0xfc, 0x18, - 0xf2, 0x2e, 0xb8, 0x4a, 0xff, 0x07, 0xcc, 0x8f, 0x47, 0x5d, 0x30, 0xc8, - 0x0d, 0x10, 0x67, 0x34, 0x3f, 0xf9, 0x46, 0x76, 0xed, 0x01, 0x78, 0x26, - 0x18, 0xca, 0x4a, 0x77, 0xef, 0x9a, 0xc7, 0x01, 0xb9, 0x5a, 0xd1, 0x30, - 0x77, 0xb0, 0xec, 0x02, 0x70, 0xaa, 0x07, 0xb9, 0xff, 0x2e, 0xe3, 0x0f, - 0xe9, 0xd6, 0x56, 0x1a, 0xf0, 0xc5, 0x7f, 0xf8, 0x47, 0x80, 0x46, 0xd7, - 0x5f, 0xe4, 0x5d, 0x5f, 0xf4, 0xc6, 0xa2, 0xa4, 0x7b, 0x13, 0x40, 0x1c, - 0xe7, 0xc9, 0x0f, 0x06, 0x15, 0xe7, 0x51, 0xa0, 0x14, 0x00, 0x08, 0xf4, - 0xde, 0xc5, 0xa7, 0xaa, 0x77, 0x31, 0x71, 0x9d, 0x04, 0x1a, 0x87, 0x5d, - 0x7c, 0x5e, 0x7d, 0x8b, 0x86, 0xcd, 0xa2, 0xa4, 0x4e, 0x74, 0xc0, 0x85, - 0xf4, 0x48, 0x3a, 0x82, 0xcc, 0x3a, 0xaa, 0x19, 0xd3, 0xd0, 0x8a, 0xda, - 0x62, 0x8c, 0x60, 0xcb, 0x81, 0x2b, 0x6a, 0x37, 0x58, 0xa2, 0x60, 0xac, - 0x22, 0x96, 0x3a, 0xa3, 0xf7, 0x7d, 0x5c, 0xf2, 0x0e, 0xc4, 0x59, 0x2d, - 0x84, 0x1d, 0x3f, 0x2e, 0x29, 0x9b, 0xfa, 0x58, 0xa1, 0x59, 0xfe, 0xc0, - 0xc4, 0x20, 0x86, 0x3d, 0xff, 0x25, 0xa4, 0x09, 0x4a, 0x59, 0xe5, 0xf0, - 0x04, 0xea, 0x46, 0xe0, 0xcc, 0x97, 0x19, 0xce, 0xa2, 0x55, 0xf5, 0xd6, - 0xd6, 0x26, 0xe9, 0xa9, 0xe3, 0x4a, 0x16, 0x3d, 0xb7, 0x78, 0x2c, 0x37, - 0x48, 0xd1, 0x75, 0x28, 0x7b, 0x16, 0x95, 0x93, 0x70, 0x90, 0xb9, 0x5d, - 0xaa, 0xf0, 0x4c, 0x0c, 0x30, 0x95, 0x32, 0x5a, 0x4e, 0x1b, 0x54, 0x97, - 0x74, 0xb2, 0x8a, 0xad, 0x14, 0x80, 0x76, 0x1b, 0xf0, 0x8a, 0x16, 0xa5, - 0x1a, 0x0e, 0xbf, 0x05, 0x90, 0xdf, 0xd8, 0xc1, 0x23, 0x02, 0xb8, 0xe3, - 0xaf, 0xa6, 0x36, 0xf3, 0x4b, 0xb0, 0xad, 0x42, 0xc2, 0xcd, 0xc5, 0xd4, - 0xee, 0xbe, 0x7b, 0xc8, 0x05, 0x7c, 0x17, 0xa9, 0xdd, 0xf6, 0x5e, 0x5e, - 0x9a, 0xe5, 0x98, 0x4b, 0x39, 0xff, 0x92, 0x05, 0x74, 0xed, 0x7d, 0xa5, - 0x99, 0xbd, 0xe3, 0x3d, 0xb1, 0x6d, 0xc7, 0xf8, 0x78, 0x3a, 0xf3, 0x15, - 0x33, 0xa0, 0x0b, 0x0d, 0xbc, 0xfd, 0x93, 0x88, 0x28, 0x6d, 0x99, 0x4a, - 0x8c, 0x71, 0xf9, 0x71, 0x86, 0x9b, 0x08, 0x13, 0xdb, 0x33, 0x9b, 0xe7, - 0xbf, 0x4c, 0x42, 0x41, 0xd9, 0xbd, 0xd3, 0x91, 0x40, 0x00, 0xb5, 0x73, - 0x95, 0x2c, 0x81, 0xeb, 0xb1, 0x23, 0xa8, 0x6d, 0x94, 0xcf, 0x78, 0xaa, - 0xc1, 0xa0, 0x5a, 0x64, 0xb7, 0x18, 0xc4, 0x0c, 0xc3, 0x39, 0x64, 0x4a, - 0xc6, 0x28, 0x08, 0x71, 0xb9, 0x77, 0x2d, 0x8c, 0xaa, 0xba, 0x1b, 0x37, - 0xb5, 0x52, 0xa8, 0xe5, 0x7a, 0x69, 0xd2, 0xba, 0x31, 0xaa, 0x38, 0x15, - 0x7f, 0xa9, 0x80, 0xe9, 0xa3, 0x15, 0xa8, 0x4c, 0xfd, 0x49, 0x95, 0x1b, - 0x9c, 0x89, 0x32, 0x8c, 0xd4, 0xe5, 0x5f, 0x42, 0x78, 0xaf, 0xa8, 0x75, - 0xe2, 0xfd, 0xc5, 0x66, 0xa1, 0x6f, 0x39, 0x92, 0x7a, 0x92, 0xc6, 0x58, - 0x4a, 0x07, 0xdf, 0x6e, 0x19, 0x1d, 0x7b, 0x9b, 0xc7, 0xcc, 0x8c, 0x9f, - 0x70, 0xb8, 0xae, 0x96, 0x9d, 0x3b, 0x5e, 0x61, 0xb5, 0xff, 0x50, 0xec, - 0x4a, 0xc3, 0xe4, 0xd7, 0x7a, 0xbf, 0xa0, 0x7e, 0x69, 0x8e, 0xa8, 0xb7, - 0x0f, 0x0f, 0x78, 0xa8, 0xca, 0x86, 0xe4, 0x17, 0xde, 0x50, 0x3a, 0xa3, - 0x11, 0xc4, 0x49, 0x3b, 0xec, 0x59, 0xcb, 0x8b, 0x52, 0x5b, 0x67, 0x7f, - 0x19, 0x77, 0x24, 0x4e, 0x63, 0xbf, 0xa9, 0x9a, 0x05, 0x58, 0x6c, 0x1b, - 0x7e, 0xc2, 0x72, 0x15, 0x88, 0x5c, 0x04, 0x9d, 0x87, 0xeb, 0xf3, 0x91, - 0x67, 0x72, 0x29, 0xdf, 0x76, 0x1b, 0xbc, 0x2f, 0xaf, 0xa4, 0x97, 0x54, - 0x95, 0xce, 0xfd, 0x8a, 0x5f, 0x9f, 0x7b, 0x8d, 0x54, 0xf7, 0xfe, 0xb6, - 0x77, 0x78, 0xf6, 0x9f, 0x7a, 0xcf, 0xea, 0xdb, 0x77, 0x17, 0xd6, 0x57, - 0x7c, 0x90, 0xac, 0x4a, 0x14, 0xaa, 0x70, 0x1c, 0xcc, 0xb0, 0xc7, 0xcb, - 0x74, 0x7e, 0x98, 0x7b, 0x45, 0x11, 0xe5, 0xa3, 0x7c, 0xb3, 0x59, 0x19, - 0xc5, 0xc3, 0xa7, 0xb1, 0x16, 0xd0, 0x86, 0x67, 0xe4, 0xd1, 0x1e, 0x08, - 0x92, 0x05, 0x37, 0x35, 0x85, 0xef, 0x3a, 0xfa, 0xc6, 0x51, 0x18, 0x1e, - 0xc0, 0x72, 0x35, 0xcc, 0x1a, 0x32, 0x5f, 0x1a, 0x5d, 0xb5, 0x77, 0x76, - 0x12, 0x59, 0x56, 0x4b, 0x85, 0x5b, 0x09, 0x0c, 0x62, 0x73, 0xc6, 0x29, - 0x02, 0x94, 0x43, 0x2c, 0xae, 0xf8, 0xcc, 0x2c, 0x5a, 0x3f, 0x8c, 0xde, - 0x2d, 0x5a, 0x27, 0x01, 0xb5, 0xda, 0x07, 0x97, 0xe8, 0x33, 0x7c, 0x80, - 0xae, 0xee, 0xce, 0xe5, 0xf7, 0xbd, 0x48, 0xb7, 0xbc, 0xdc, 0x29, 0x37, - 0xd2, 0x27, 0x70, 0xed, 0x86, 0x5f, 0xb8, 0x0f, 0xf1, 0x2b, 0x61, 0xa7, - 0x09, 0xda, 0x0a, 0x64, 0x39, 0x84, 0x6a, 0x50, 0x84, 0xdd, 0xc3, 0x7b, - 0x9a, 0x43, 0x89, 0xac, 0xe8, 0xe6, 0xc1, 0x07, 0xa4, 0xe2, 0x65, 0xec, - 0x15, 0xec, 0x63, 0xa9, 0x76, 0xe6, 0x5d, 0x62, 0xf3, 0x86, 0xfa, 0xa0, - 0xd3, 0x56, 0x73, 0x3d, 0xbf, 0x8f, 0xc6, 0xd4, 0xe0, 0xc6, 0x20, 0xeb, - 0xca, 0x5e, 0xfb, 0x45, 0x59, 0x91, 0x06, 0x2d, 0xad, 0xad, 0xb0, 0xbd, - 0x7a, 0x8f, 0x45, 0xf7, 0x89, 0x67, 0xc8, 0x4f, 0x51, 0xa8, 0x92, 0x14, - 0xf3, 0x90, 0xad, 0xf2, 0x00, 0x81, 0xfe, 0xe1, 0x4c, 0xb6, 0x04, 0xda, - 0x7f, 0x4f, 0xa6, 0xc0, 0xd7, 0x1e, 0x55, 0xd7, 0xb9, 0x01, 0x31, 0x39, - 0xdd, 0x9c, 0x37, 0x33, 0xcd, 0x89, 0x41, 0x53, 0x73, 0x02, 0x07, 0x11, - 0x1a, 0xa5, 0x47, 0xbd, 0x7b, 0x50, 0x94, 0x48, 0x63, 0x00, 0xdc, 0xf3, - 0x9d, 0xd5, 0xd3, 0xf4, 0x3a, 0x40, 0x9a, 0xf7, 0x51, 0xf1, 0x20, 0x9e, - 0xfa, 0x54, 0x7d, 0x00, 0x05, 0x31, 0x7e, 0x7c, 0xa0, 0xbc, 0x67, 0xb3, - 0x3d, 0x39, 0x26, 0x83, 0x3e, 0xd9, 0x78, 0x56, 0xd1, 0x6d, 0xa4, 0xbb, - 0x59, 0x92, 0xaa, 0x16, 0xb4, 0xfa, 0x06, 0xd5, 0x55, 0x5c, 0xd8, 0x19, - 0x0f, 0x2c, 0x2f, 0xa3, 0x46, 0x17, 0x04, 0x8f, 0x6c, 0x71, 0xf3, 0x6b, - 0x77, 0xfd, 0x1a, 0xba, 0xdc, 0x6f, 0x4e, 0xb5, 0x78, 0xa3, 0x6e, 0x67, - 0xc1, 0x46, 0x8f, 0x7f, 0x69, 0xa3, 0x69, 0xa5, 0xd8, 0x94, 0x7c, 0xdb, - 0x7e, 0xc3, 0xfa, 0xa5, 0x68, 0x3e, 0xb6, 0x0a, 0x1d, 0xcb, 0xfc, 0xf6, - 0xe3, 0xa8, 0x45, 0x44, 0x6e, 0xff, 0x93, 0x22, 0x82, 0x1a, 0x6a, 0x6d, - 0x7a, 0xeb, 0x4c, 0xa1, 0x8d, 0x75, 0x7c, 0x2c, 0x2f, 0x69, 0xd1, 0xbf, - 0x52, 0x18, 0xe0, 0x96, 0x30, 0xd1, 0x3f, 0x86, 0x62, 0x3c, 0x5f, 0xd3, - 0xae, 0x29, 0xb2, 0x78, 0xe1, 0x5a, 0xda, 0xe1, 0xc7, 0x80, 0x91, 0xa7, - 0x17, 0x1a, 0x2a, 0x13, 0x3d, 0xb6, 0xd1, 0x0e, 0x9f, 0x02, 0x4c, 0xc7, - 0xfb, 0x05, 0x80, 0xe3, 0x0c, 0x4c, 0xfb, 0x5a, 0x9d, 0x3c, 0x7e, 0xee, - 0xda, 0x92, 0x3e, 0xaa, 0xb8, 0xce, 0x3f, 0xcd, 0xf0, 0x11, 0x38, 0xab, - 0x10, 0x35, 0xdd, 0xaa, 0x00, 0xb0, 0x78, 0xc8, 0xa7, 0x05, 0x5c, 0x3c, - 0x57, 0xf8, 0xc7, 0x6b, 0x25, 0x24, 0x3e, 0x5f, 0x5e, 0x15, 0x96, 0x7f, - 0xb6, 0x1e, 0xa6, 0xc6, 0x3d, 0x08, 0x96, 0x16, 0x5b, 0xca, 0x6b, 0x43, - 0xf9, 0x9f, 0x8c, 0x84, 0xa2, 0xa6, 0x58, 0x6d, 0xd5, 0x6d, 0x6e, 0x80, - 0x6f, 0x62, 0x84, 0x69, 0x99, 0xa8, 0x08, 0x25, 0x8c, 0xc1, 0x29, 0xf5, - 0x6f, 0x5e, 0xf7, 0x0f, 0xc4, 0xc9, 0x3b, 0x8f, 0xcc, 0x8c, 0x56, 0x12, - 0xbe, 0xd7, 0x6d, 0x59, 0x84, 0xf0, 0x3a, 0x3f, 0xd8, 0x7d, 0x18, 0xc7, - 0x4e, 0x30, 0x08, 0xf5, 0x96, 0x3a, 0xd3, 0xe2, 0x52, 0x16, 0xd8, 0x17, - 0xe8, 0xa8, 0xf0, 0x91, 0x39, 0x17, 0x11, 0x0a, 0xe7, 0xce, 0xf8, 0x0e, - 0xc2, 0x21, 0xfa, 0xe7, 0x86, 0x01, 0x39, 0xb3, 0x42, 0x88, 0x09, 0x41, - 0x0c, 0xd4, 0x92, 0x9e, 0x8b, 0x3b, 0xdd, 0x3d, 0x5c, 0xf5, 0xd6, 0x17, - 0x3b, 0x3d, 0x18, 0xdc, 0x49, 0x78, 0x06, 0x74, 0xa3, 0x1e, 0xf6, 0x35, - 0x68, 0x28, 0xf7, 0x7c, 0x37, 0x4f, 0xed, 0xe3, 0xf3, 0xac, 0xa9, 0x43, - 0x01, 0x48, 0xc1, 0x3a, 0x26, 0xbd, 0xa2, 0x47, 0x25, 0xba, 0xa5, 0x9d, - 0xb8, 0x9e, 0x63, 0xc6, 0x10, 0x0b, 0x99, 0x35, 0xa4, 0x84, 0xc9, 0x48, - 0x36, 0xcf, 0x23, 0xd0, 0x8a, 0xf1, 0x41, 0xd4, 0xcf, 0x74, 0xac, 0x7c, - 0xd8, 0x89, 0x38, 0xb6, 0x95, 0x2a, 0x51, 0x4f, 0xee, 0xfa, 0xf6, 0x49, - 0x3c, 0x2f, 0x30, 0xd3, 0xe2, 0x8e, 0xc7, 0x86, 0x45, 0xe0, 0xa9, 0xec, - 0x27, 0x59, 0x8a, 0x1d, 0xb3, 0xa2, 0x47, 0xa3, 0x53, 0x09, 0x94, 0x8a, - 0xaa, 0x09, 0xb2, 0x73, 0xa7, 0x93, 0x00, 0xe7, 0xea, 0x0f, 0x9e, 0xdf, - 0xca, 0xc5, 0xdf, 0x5d, 0x00, 0xed, 0xe7, 0xcf, 0x5b, 0x44, 0xf6, 0x3c, - 0x8b, 0x91, 0x65, 0xac, 0x21, 0x17, 0x9f, 0xa1, 0x48, 0x10, 0x1a, 0x59, - 0x7b, 0x30, 0x2c, 0xd4, 0x06, 0x6b, 0xa4, 0xe4, 0x56, 0x57, 0x20, 0x81, - 0x1f, 0x70, 0x6d, 0x3c, 0x14, 0xbe, 0x4c, 0x16, 0xdd, 0x9f, 0xdc, 0x0d, - 0x27, 0xbe, 0x3b, 0xa4, 0x57, 0xa0, 0xed, 0xb5, 0x2c, 0xba, 0x1d, 0xf7, - 0x3f, 0x2f, 0xc6, 0x59, 0x2e, 0xc6, 0xfc, 0xe9, 0xc1, 0x64, 0x84, 0x65, - 0x5b, 0x73, 0x99, 0xde, 0x13, 0x61, 0xf9, 0xd8, 0xa0, 0xf3, 0xee, 0x79, - 0x50, 0x5b, 0x1f, 0x19, 0x63, 0xb6, 0xef, 0xad, 0xab, 0x03, 0xc2, 0x6c, - 0xf5, 0x7b, 0xcb, 0x31, 0x57, 0x70, 0x62, 0xae, 0xfc, 0xd3, 0x19, 0x4a, - 0x3f, 0xa7, 0xb7, 0x9e, 0xe5, 0xbb, 0x8c, 0x5e, 0x45, 0x8c, 0xba, 0xde, - 0x7d, 0x64, 0xdb, 0xeb, 0x45, 0x27, 0xda, 0xb2, 0x8e, 0xe0, 0xb8, 0xc1, - 0xe6, 0x27, 0x58, 0x6c, 0x90, 0xff, 0xea, 0xf3, 0xab, 0xf0, 0xfa, 0x0c, - 0x78, 0x72, 0x2f, 0xea, 0x0d, 0x46, 0x11, 0xb1, 0xe6, 0x75, 0x68, 0xd4, - 0x39, 0xb8, 0xa5, 0xb9, 0xcb, 0x15, 0x9c, 0xe5, 0x08, 0x86, 0x7f, 0xb8, - 0x65, 0x30, 0x0e, 0x88, 0x79, 0x5e, 0x20, 0x8f, 0x4b, 0x70, 0x6c, 0x3e, - 0x55, 0x0e, 0x33, 0x7b, 0x2a, 0xfe, 0x64, 0x10, 0xbc, 0xf7, 0xab, 0xf6, - 0xae, 0x20, 0x84, 0x1a, 0x36, 0xc5, 0x4a, 0xc5, 0xfa, 0x36, 0xb5, 0x75, - 0x63, 0x91, 0xec, 0x77, 0x93, 0x82, 0xbe, 0x26, 0x3c, 0x37, 0x0b, 0x1e, - 0x4d, 0xc6, 0x71, 0x73, 0xcb, 0x85, 0x5e, 0xe5, 0xd1, 0xd8, 0xac, 0xf2, - 0xfa, 0xf6, 0xe1, 0x5a, 0xc4, 0xce, 0xa8, 0x78, 0x69, 0x5b, 0xba, 0x26, - 0x20, 0x00, 0x66, 0xf3, 0x5f, 0x51, 0x86, 0x6e, 0x26, 0x55, 0xfe, 0xc8, - 0x57, 0x40, 0xaf, 0x9d, 0x1d, 0x60, 0x76, 0x4f, 0xe1, 0x8b, 0xb8, 0x65, - 0xa3, 0x78, 0x03, 0xbb, 0x86, 0xc6, 0x7a, 0x4c, 0xc0, 0x7a, 0x22, 0x94, - 0x07, 0x09, 0xb4, 0x5a, 0x58, 0x9b, 0xd2, 0x70, 0x23, 0xe6, 0x08, 0xc2, - 0xd0, 0x6b, 0x3d, 0x4f, 0xf9, 0x4c, 0x40, 0x58, 0x7e, 0xe7, 0xb5, 0xce, - 0x54, 0x5a, 0xdc, 0xdd, 0xb0, 0xa5, 0xa6, 0xa5, 0x84, 0xf8, 0x2a, 0xb0, - 0x25, 0xdb, 0x6d, 0xd4, 0xe8, 0x27, 0x16, 0x09, 0x6d, 0xda, 0x9d, 0x91, - 0x59, 0xe8, 0x64, 0xc3, 0xbb, 0x62, 0xc3, 0x5e, 0x8c, 0xac, 0xc0, 0xcf, - 0xe1, 0x34, 0x04, 0xae, 0xd0, 0x51, 0x01, 0x80, 0x27, 0x32, 0x22, 0x9d, - 0x95, 0x8e, 0xeb, 0x55, 0x3c, 0x24, 0xa1, 0x1d, 0xbb, 0x2e, 0xc7, 0x7f, - 0x1c, 0x98, 0x54, 0x0d, 0x54, 0x12, 0xd7, 0x03, 0xb0, 0xa4, 0xaa, 0xac, - 0x94, 0x4c, 0x60, 0x0c, 0xc8, 0xae, 0xb3, 0xa3, 0x4a, 0x7b, 0x48, 0x3b, - 0xd5, 0xba, 0x8d, 0x24, 0x3f, 0xd4, 0x3c, 0x55, 0xeb, 0xea, 0x5a, 0x72, - 0xe6, 0xbd, 0x01, 0x05, 0xf5, 0xcc, 0xd9, 0xd1, 0x9b, 0x46, 0x04, 0x0e, - 0x06, 0x7b, 0xbc, 0x20, 0x97, 0xbe, 0x7a, 0x7c, 0x56, 0xed, 0x14, 0x22, - 0xe6, 0xbf, 0x2a, 0xe4, 0x37, 0x48, 0x50, 0x14, 0x33, 0xd2, 0xa8, 0xc8, - 0x92, 0x59, 0xca, 0x2e, 0x4d, 0xab, 0x01, 0xbb, 0xa0, 0xb6, 0xbf, 0x80, - 0xe6, 0x25, 0xd4, 0x9f, 0xdf, 0x42, 0x25, 0xa1, 0xba, 0x2a, 0x12, 0xcf, - 0x7e, 0xf9, 0xee, 0xbd, 0x4a, 0xa4, 0xec, 0xfc, 0xbc, 0x0f, 0x89, 0x80, - 0x9c, 0xb3, 0x04, 0x4a, 0x4e, 0x39, 0x43, 0xa7, 0xf2, 0x68, 0xfb, 0xb5, - 0x33, 0x7a, 0xe7, 0x57, 0x4b, 0x32, 0xfa, 0x9b, 0xf7, 0x48, 0x79, 0xcb, - 0xf0, 0x18, 0x3b, 0x68, 0xfa, 0xd4, 0x8d, 0x81, 0xd8, 0xca, 0xfa, 0xb4, - 0x77, 0x98, 0x4e, 0xa9, 0x20, 0x08, 0x65, 0xb9, 0xcf, 0x20, 0x65, 0xea, - 0x3a, 0x4c, 0x78, 0x4d, 0x91, 0x32, 0xd4, 0x63, 0xf6, 0x14, 0x1d, 0x33, - 0xfe, 0x01, 0x43, 0x7e, 0x79, 0x2f, 0x7d, 0x08, 0x36, 0xb3, 0xd3, 0x68, - 0x0d, 0xa2, 0x6a, 0x01, 0x64, 0xd9, 0x96, 0xaf, 0x6b, 0xd1, 0x6c, 0x4f, - 0x6f, 0x7d, 0x37, 0xb1, 0xf7, 0xe5, 0xee, 0xf8, 0x43, 0x84, 0xe0, 0x97, - 0xa8, 0xfb, 0x2f, 0x2d, 0x5c, 0xba, 0x3b, 0xc9, 0xa4, 0x02, 0xb0, 0x25, - 0x51, 0x2f, 0x52, 0x1f, 0x60, 0x08, 0x40, 0xbc, 0x7c, 0xfc, 0xa1, 0x5e, - 0xf5, 0x64, 0xc5, 0xed, 0x63, 0x1d, 0xed, 0x50, 0xb1, 0xd0, 0x86, 0xa6, - 0x88, 0x7e, 0x45, 0x50, 0x57, 0x2f, 0x81, 0x79, 0xa9, 0xe9, 0x11, 0xff, - 0xe7, 0x5f, 0x66, 0xf7, 0x64, 0x3c, 0x77, 0xd2, 0x03, 0xb3, 0x79, 0x74, - 0x79, 0x3b, 0x25, 0x87, 0x89, 0x79, 0xc1, 0x91, 0x8f, 0x9c, 0x44, 0x6a, - 0xba, 0x78, 0x88, 0x4a, 0x58, 0x6f, 0x7e, 0xb5, 0x7b, 0x73, 0x73, 0x49, - 0xb9, 0x2d, 0x1e, 0x10, 0xc6, 0x69, 0xa8, 0x5b, 0x81, 0x26, 0x4f, 0x72, - 0x39, 0xc7, 0xa9, 0x14, 0xd5, 0x7b, 0x28, 0x7f, 0xe7, 0x8f, 0x47, 0x52, - 0x87, 0x44, 0x3f, 0xfb, 0xc0, 0x78, 0x34, 0xe9, 0x0e, 0x0e, 0x5d, 0x21, - 0x89, 0xd5, 0xf4, 0x4d, 0x95, 0x22, 0xec, 0xb7, 0xe5, 0x04, 0xdf, 0xd2, - 0xe8, 0x7b, 0x5b, 0x6c, 0xb9, 0xa1, 0x86, 0xab, 0x02, 0xca, 0x4f, 0x64, - 0xf0, 0x51, 0x0c, 0xd2, 0x53, 0xc7, 0xef, 0xce, 0x10, 0x1e, 0x94, 0x45, - 0xec, 0xc3, 0xf4, 0x7d, 0x30, 0xbe, 0xd5, 0x9a, 0x44, 0x8e, 0xb9, 0x56, - 0x14, 0x7a, 0xc7, 0xe9, 0x58, 0xb0, 0xd2, 0xfb, 0x56, 0xdc, 0x7a, 0x82, - 0x5f, 0x6b, 0x11, 0x44, 0xe1, 0x66, 0x5d, 0xb2, 0x54, 0x29, 0x7d, 0xbb, - 0x8c, 0x22, 0xb4, 0x64, 0xcf, 0xbe, 0x1d, 0x90, 0x43, 0x65, 0xe5, 0xa1, - 0xa9, 0x66, 0xb7, 0x12, 0x1e, 0x04, 0x93, 0xbc, 0x99, 0x1c, 0x3b, 0xd6, - 0xc9, 0x53, 0x75, 0xd0, 0xa5, 0x91, 0xb5, 0xa4, 0x33, 0x61, 0x7f, 0x3e, - 0xd9, 0x38, 0x03, 0x19, 0x95, 0x25, 0x06, 0x29, 0x99, 0x4c, 0xc3, 0xfc, - 0xb7, 0xc6, 0xc7, 0xbe, 0x6a, 0x6b, 0x77, 0x94, 0xe5, 0xe1, 0xce, 0x4d, - 0x77, 0x38, 0xd9, 0x89, 0x0f, 0xaa, 0xc2, 0x64, 0x62, 0xc3, 0x54, 0x00, - 0xc6, 0x96, 0x22, 0xf7, 0xc0, 0x4d, 0x64, 0x90, 0x7b, 0xa7, 0xea, 0xfc, - 0x36, 0x24, 0xca, 0x67, 0xe7, 0x8b, 0x10, 0x99, 0xa2, 0xb3, 0x04, 0x33, - 0x0f, 0x5d, 0x4e, 0x1b, 0xd7, 0xfe, 0x32, 0x33, 0x04, 0xd9, 0x93, 0x23, - 0xa3, 0xe9, 0x2d, 0x4f, 0x87, 0x82, 0xad, 0xc2, 0x93, 0x6a, 0x26, 0x42, - 0x61, 0x21, 0x7b, 0xc9, 0xb3, 0xef, 0x7b, 0x0a, 0x89, 0xa4, 0x9c, 0x72, - 0x89, 0xdf, 0xe1, 0x07, 0xcc, 0x4d, 0x47, 0xa7, 0x41, 0xff, 0x6b, 0xf2, - 0xc7, 0xfb, 0xfb, 0xff, 0x37, 0x25, 0xc8, 0x78, 0xbe, 0x7b, 0x6f, 0x15, - 0xff, 0xc6, 0xd5, 0x58, 0x84, 0x30, 0x44, 0xb0, 0xe1, 0xd8, 0x59, 0xa2, - 0xac, 0xff, 0x05, 0x1f, 0xce, 0x0e, 0xef, 0x95, 0x81, 0x34, 0xc3, 0xb5, - 0x2a, 0xb8, 0x58, 0x91, 0xc8, 0xbf, 0xf4, 0x7c, 0xd9, 0x52, 0xb5, 0x4f, - 0x57, 0xe5, 0x56, 0x9e, 0xf7, 0xd2, 0x67, 0xfe, 0x38, 0xa9, 0xb5, 0x04, - 0x53, 0x21, 0xf0, 0xbe, 0x40, 0x8f, 0x75, 0xb6, 0xb6, 0x7b, 0xc9, 0x0f, - 0xc2, 0x86, 0x27, 0xc1, 0x7d, 0x03, 0xbe, 0xc2, 0x13, 0x27, 0x1e, 0xb6, - 0xff, 0x36, 0x44, 0xbd, 0x1c, 0x38, 0xcd, 0x6c, 0x0a, 0x48, 0xd3, 0x79, - 0xec, 0xff, 0xfa, 0xd1, 0xaa, 0xb1, 0x7a, 0x91, 0x5a, 0x38, 0xef, 0x39, - 0x1c, 0xf2, 0xd9, 0x77, 0xcf, 0xdf, 0xf8, 0xc6, 0x75, 0xf6, 0xd5, 0xf5, - 0xe5, 0x5d, 0x4d, 0x4f, 0x45, 0x10, 0x46, 0xeb, 0x01, 0x6d, 0x78, 0xd5, - 0xa1, 0x47, 0x46, 0x77, 0xda, 0x16, 0xaf, 0xdb, 0x1b, 0x88, 0xfe, 0x9e, - 0x3e, 0x71, 0x93, 0xda, 0x67, 0xcb, 0x8e, 0x05, 0xf8, 0x2d, 0x40, 0x9d, - 0x2c, 0x4a, 0x13, 0xa6, 0xd5, 0x1e, 0x96, 0xf5, 0xd6, 0x35, 0x00, 0x0e, - 0x5b, 0xf0, 0x99, 0x2c, 0x30, 0xff, 0xc4, 0x7c, 0x04, 0x78, 0xe4, 0x52, - 0x59, 0x7b, 0x86, 0xbb, 0x94, 0x6b, 0x26, 0xbc, 0x01, 0xdd, 0xef, 0x5a, - 0x47, 0x21, 0x64, 0x0d, 0xf0, 0x11, 0x1e, 0x7e, 0xed, 0x89, 0x96, 0xc9, - 0x94, 0x68, 0x70, 0x95, 0xc4, 0xfe, 0xb3, 0x27, 0x8b, 0x5a, 0x2e, 0xc4, - 0xc0, 0x1d, 0x0b, 0x65, 0x84, 0x6a, 0x1f, 0x28, 0x4a, 0x1f, 0xb2, 0xd1, - 0x8f, 0x9e, 0xad, 0xcf, 0xb6, 0xb4, 0x5d, 0x89, 0x52, 0x48, 0x01, 0x1b, - 0xbb, 0x6e, 0x15, 0x2c, 0xdf, 0x95, 0xcb, 0xb3, 0xd5, 0x5d, 0x7b, 0x8e, - 0x8b, 0xb1, 0xd8, 0x35, 0x5b, 0xe4, 0x5d, 0x17, 0xb7, 0xd7, 0x01, 0xc6, - 0x41, 0xff, 0x80, 0x70, 0x8f, 0x27, 0xbe, 0x75, 0xf8, 0x90, 0xc7, 0x1f, - 0x73, 0xd0, 0xad, 0x11, 0x2f, 0xbb, 0x9f, 0xd3, 0x44, 0xf7, 0x70, 0x0c, - 0x19, 0x85, 0xe8, 0xb6, 0x6a, 0x29, 0xc6, 0x08, 0x36, 0x99, 0xbf, 0x65, - 0xc8, 0xf0, 0x88, 0x1a, 0xa9, 0x51, 0x1d, 0x94, 0xe7, 0x81, 0xad, 0x7c, - 0x02, 0xcb, 0x88, 0xa5, 0xb8, 0x4e, 0xe7, 0xed, 0x33, 0xd5, 0x63, 0xb3, - 0x30, 0xb3, 0xd0, 0xb2, 0x41, 0x76, 0xa5, 0x40, 0x73, 0x17, 0xa2, 0xb0, - 0x37, 0x80, 0xfb, 0xcf, 0x7c, 0xd3, 0x28, 0xc1, 0x6b, 0xae, 0x0b, 0xde, - 0x64, 0x85, 0x22, 0xf7, 0xb3, 0xa9, 0x8d, 0x31, 0xcc, 0xcd, 0xdb, 0x2f, - 0x18, 0x64, 0x27, 0xa7, 0xc5, 0xac, 0x01, 0xfb, 0x64, 0xfa, 0x7e, 0xa0, - 0x12, 0x81, 0xeb, 0x96, 0x79, 0xd3, 0x38, 0xc3, 0xce, 0xee, 0x3c, 0x28, - 0x58, 0xa2, 0xb6, 0x1b, 0xe9, 0xf7, 0x85, 0x72, 0x85, 0x44, 0xd7, 0xfd, - 0xad, 0xdb, 0xdf, 0x45, 0x13, 0x4c, 0x90, 0x97, 0x1f, 0x8d, 0x49, 0x3e, - 0x04, 0x5f, 0xb8, 0x5b, 0x8b, 0x1d, 0x0f, 0x50, 0xd4, 0xd5, 0x94, 0xdf, - 0xba, 0x19, 0x1c, 0x2e, 0x95, 0x9b, 0xc0, 0x95, 0x16, 0x2f, 0x1b, 0xbb, - 0xfb, 0x64, 0x62, 0x4a, 0xc3, 0xdd, 0x08, 0x80, 0xfb, 0x11, 0x2b, 0x83, - 0xb6, 0x2e, 0xb4, 0x69, 0x89, 0x2d, 0xa8, 0x83, 0xf8, 0x62, 0xc2, 0x12, - 0xf8, 0x17, 0x2a, 0x77, 0xe6, 0xa3, 0x96, 0x6b, 0x94, 0x2b, 0xf4, 0xaa, - 0x3a, 0xb1, 0xd0, 0x55, 0xe2, 0x67, 0x21, 0xd4, 0xc2, 0x3d, 0x5c, 0x2c, - 0x36, 0x75, 0x64, 0xcc, 0x4c, 0xe7, 0x1a, 0x83, 0xdd, 0xfa, 0x60, 0x86, - 0xcc, 0xff, 0x16, 0x56, 0xf3, 0xc3, 0xf3, 0x26, 0x02, 0x16, 0x70, 0x5c, - 0x88, 0xdc, 0xf9, 0x5c, 0x3c, 0x8c, 0xd7, 0xb1, 0xf9, 0x5f, 0xf4, 0x7e, - 0xf8, 0x65, 0x11, 0xce, 0xa8, 0xe7, 0x1d, 0x6e, 0x87, 0x83, 0x64, 0xdf, - 0x80, 0x35, 0x68, 0xfd, 0xb9, 0xca, 0xa7, 0xab, 0x64, 0x57, 0x98, 0xaf, - 0xe8, 0x53, 0x66, 0x43, 0x43, 0xd2, 0xb1, 0x95, 0x0a, 0xde, 0x5c, 0xf2, - 0xe1, 0x2e, 0x75, 0x6d, 0x1a, 0xf1, 0x61, 0x59, 0x2c, 0xf7, 0x0b, 0x5b, - 0xe7, 0x26, 0x89, 0xed, 0x7d, 0x1b, 0xfb, 0x34, 0xa3, 0x90, 0x60, 0x33, - 0x2e, 0xd4, 0xee, 0x88, 0xc0, 0x99, 0x4b, 0x3a, 0x29, 0xfa, 0x0e, 0x2d, - 0x27, 0x7a, 0x92, 0xaa, 0x27, 0xff, 0x6c, 0x17, 0xde, 0x31, 0x20, 0x48, - 0x89, 0xe7, 0xd6, 0x20, 0xcb, 0x2d, 0x06, 0xea, 0xff, 0x5c, 0xdf, 0x6d, - 0x3c, 0x96, 0x02, 0x04, 0x39, 0xb6, 0x3e, 0x02, 0x26, 0xe2, 0x9a, 0x33, - 0x97, 0xef, 0x02, 0x6a, 0x70, 0xfa, 0xbe, 0x42, 0x41, 0x30, 0xc3, 0x8d, - 0x5e, 0x50, 0xaa, 0xb8, 0x51, 0x20, 0x6a, 0x2e, 0x77, 0x65, 0xa1, 0x74, - 0x35, 0xc1, 0x8a, 0x03, 0x0e, 0x06, 0xdf, 0x5b, 0xa2, 0x7d, 0x22, 0x56, - 0xe7, 0x6f, 0x36, 0x96, 0x5f, 0xfd, 0x06, 0xf9, 0x66, 0x94, 0x12, 0xc3, - 0x42, 0x35, 0xd8, 0xbe, 0x4d, 0xdf, 0x2d, 0x22, 0xa5, 0x7b, 0xe0, 0xca, - 0x72, 0xe1, 0xfd, 0x4b, 0xf7, 0x39, 0x1c, 0x8f, 0xac, 0x15, 0x15, 0x63, - 0x65, 0xf3, 0xa7, 0x8a, 0x40, 0x82, 0x4c, 0xb2, 0x29, 0x40, 0x45, 0x34, - 0x8c, 0xe3, 0xc3, 0x05, 0x34, 0x74, 0x62, 0x01, 0x73, 0xaf, 0x92, 0x4f, - 0x33, 0x51, 0xc7, 0xe8, 0xe8, 0x85, 0x17, 0x59, 0x32, 0x2e, 0xb2, 0xac, - 0x87, 0x24, 0xb1, 0x53, 0x5b, 0xe4, 0x18, 0x86, 0x7e, 0xe0, 0x9f, 0xc1, - 0x7b, 0x20, 0xce, 0x63, 0xec, 0xa3, 0xf1, 0x56, 0x91, 0xcb, 0xc4, 0x97, - 0xee, 0xa4, 0x23, 0xb6, 0xe2, 0xfb, 0xf6, 0x21, 0x4d, 0xa2, 0x2a, 0x76, - 0x9c, 0x55, 0xb9, 0x19, 0x00, 0x44, 0x50, 0x05, 0xba, 0xfc, 0xc0, 0xb0, - 0x56, 0x5a, 0x6b, 0x05, 0xd0, 0x0e, 0xd2, 0xc8, 0x36, 0xc5, 0x64, 0x93, - 0xe2, 0xe3, 0x42, 0xb4, 0x58, 0xf2, 0xaa, 0x05, 0x53, 0x9b, 0xb7, 0xd0, - 0x1d, 0xee, 0xb0, 0x3d, 0x38, 0xf2, 0x9e, 0x76, 0x27, 0xe5, 0xcd, 0x08, - 0xf5, 0xed, 0x03, 0x93, 0x3f, 0x5c, 0x50, 0x35, 0x10, 0x56, 0xd2, 0xdb, - 0x4a, 0x4a, 0x32, 0x2e, 0x62, 0x29, 0xfd, 0x0c, 0x50, 0x53, 0xbe, 0xa1, - 0xbf, 0x81, 0x1f, 0x8b, 0xbf, 0xfe, 0x7d, 0xe8, 0x07, 0xbb, 0x3b, 0xb6, - 0xec, 0xc5, 0xec, 0xb3, 0xcc, 0x45, 0xee, 0xed, 0x03, 0xeb, 0x5e, 0xd2, - 0xd7, 0x01, 0x42, 0x33, 0x92, 0x30, 0x40, 0xff, 0xf2, 0x67, 0xf7, 0x9b, - 0x41, 0x82, 0x34, 0x90, 0xea, 0xee, 0xbe, 0xe7, 0x8e, 0x86, 0x7a, 0xf1, - 0xef, 0x30, 0x51, 0x6a, 0xd4, 0xa3, 0xbb, 0x52, 0x9b, 0xa8, 0x8c, 0x22, - 0x19, 0xa7, 0x32, 0x98, 0xf2, 0x39, 0x96, 0x29, 0x28, 0x58, 0x90, 0x2e, - 0x1f, 0x8c, 0x1a, 0xb7, 0x64, 0x7f, 0x55, 0x3d, 0xd4, 0x61, 0x04, 0x44, - 0xb8, 0x18, 0x1f, 0x43, 0x9f, 0xdb, 0x3a, 0xa2, 0x26, 0xb9, 0xc8, 0x10, - 0x56, 0x7e, 0x5c, 0xbb, 0xca, 0x40, 0x83, 0x48, 0x83, 0xc3, 0x47, 0x62, - 0xbe, 0x81, 0x82, 0xcd, 0x44, 0x22, 0x90, 0xdb, 0xfb, 0x92, 0x41, 0x7b, - 0xae, 0x36, 0xd7, 0xe6, 0x78, 0xa0, 0x81, 0x87, 0xfd, 0x24, 0xdc, 0xb7, - 0xd5, 0xb0, 0x71, 0xd8, 0x57, 0xf1, 0x41, 0x1e, 0xdb, 0x82, 0x6d, 0x41, - 0xf0, 0x01, 0x3a, 0x88, 0xba, 0xc2, 0x7e, 0x8b, 0x54, 0x4f, 0xfd, 0x4a, - 0xf2, 0x54, 0xae, 0x83, 0xf7, 0x31, 0xb5, 0xba, 0x2b, 0xe8, 0xb2, 0xf5, - 0xa2, 0xdf, 0xf0, 0x9a, 0x66, 0x77, 0x8c, 0xe9, 0x59, 0xcd, 0x72, 0x36, - 0x80, 0x33, 0x74, 0x9f, 0x22, 0x9c, 0xea, 0x34, 0x22, 0x16, 0x29, 0x5c, - 0x22, 0x9b, 0xa1, 0xb8, 0xc9, 0x4c, 0x5f, 0xb5, 0x48, 0xdb, 0x5b, 0xc3, - 0x0d, 0x27, 0x99, 0xe7, 0x41, 0x87, 0x1d, 0xbf, 0x4e, 0x58, 0x46, 0xc3, - 0x3c, 0x17, 0x9d, 0x7b, 0x61, 0xa1, 0xa1, 0x58, 0x87, 0x18, 0x0d, 0xc1, - 0x2d, 0xdc, 0xa6, 0x49, 0x54, 0xc4, 0x7d, 0x1d, 0x6f, 0x66, 0xf4, 0x5a, - 0xf8, 0x75, 0xce, 0x5c, 0xae, 0xf6, 0x59, 0x64, 0xca, 0x05, 0x25, 0x6a, - 0xe7, 0x82, 0x65, 0x5e, 0x69, 0x4f, 0x7e, 0x5d, 0xc0, 0xd9, 0xd8, 0x9c, - 0x8c, 0x15, 0xf7, 0x3b, 0x75, 0xa4, 0x99, 0x52, 0xd5, 0x3b, 0xb3, 0xe6, - 0x63, 0x9c, 0x87, 0xad, 0x52, 0xc7, 0x8d, 0xd4, 0x55, 0x5a, 0x8f, 0x0c, - 0xbb, 0x53, 0x87, 0x66, 0x8f, 0xab, 0x54, 0x8b, 0x8f, 0x0d, 0x5a, 0x6d, - 0x13, 0x88, 0xd0, 0x70, 0xda, 0x54, 0x98, 0x72, 0x5f, 0x6b, 0x4a, 0x3f, - 0x0a, 0xe5, 0xd2, 0xd6, 0x4d, 0x30, 0xf2, 0x26, 0x55, 0x14, 0x5c, 0x9e, - 0x32, 0x61, 0x90, 0x4b, 0x25, 0x6b, 0x96, 0x3e, 0x82, 0x6d, 0x30, 0x5e, - 0x8b, 0x92, 0xd7, 0x33, 0x13, 0xda, 0x4a, 0xb3, 0x71, 0xf6, 0xef, 0x17, - 0xdb, 0xe9, 0xb0, 0xa2, 0xff, 0x6a, 0xcb, 0xd2, 0xe4, 0xe1, 0x08, 0x6b, - 0x0a, 0x95, 0xc1, 0x4b, 0xdc, 0x30, 0xc7, 0xdd, 0xb3, 0x1f, 0xb7, 0xd0, - 0x09, 0x1b, 0x60, 0x9e, 0xa8, 0x8b, 0x64, 0x4d, 0x0e, 0xb5, 0xec, 0x4a, - 0xe4, 0x18, 0x08, 0x39, 0xde, 0x86, 0x3d, 0x26, 0x0a, 0xfe, 0xeb, 0x05, - 0xcd, 0xbd, 0x64, 0x63, 0xeb, 0x67, 0x82, 0xf5, 0xab, 0x37, 0xac, 0x91, - 0xad, 0xdf, 0x8d, 0xb2, 0x3e, 0x58, 0x2d, 0x49, 0x58, 0x7b, 0x0c, 0x9a, - 0x14, 0x7d, 0xd1, 0x6f, 0x67, 0xc4, 0x9f, 0x90, 0x37, 0xcf, 0x2c, 0x16, - 0x13, 0x16, 0x84, 0xe6, 0xc1, 0xd0, 0xcc, 0x2b, 0xcc, 0xce, 0xb8, 0x83, - 0x0d, 0xfb, 0xc6, 0x98, 0xef, 0xe8, 0x0a, 0x49, 0x79, 0x56, 0xe6, 0x9c, - 0xb3, 0xd3, 0x47, 0x05, 0x50, 0xef, 0xef, 0x67, 0x72, 0x1b, 0x07, 0x0c, - 0x50, 0xed, 0x7e, 0xe5, 0x04, 0x06, 0xc7, 0x39, 0x5f, 0x8c, 0xc1, 0xb6, - 0x49, 0x70, 0x72, 0x74, 0x8a, 0x96, 0x1a, 0x69, 0x2b, 0xf6, 0x5f, 0x57, - 0x9b, 0xa0, 0xfb, 0xd4, 0xc1, 0xae, 0xd6, 0x5c, 0x44, 0x81, 0x44, 0x0b, - 0x3d, 0x7a, 0xe6, 0xa0, 0x70, 0xc8, 0x5b, 0x3c, 0xf1, 0x35, 0xb1, 0xbf, - 0x42, 0x7e, 0xf7, 0xb1, 0xf8, 0x32, 0xd7, 0x79, 0x12, 0x50, 0x32, 0xb6, - 0x07, 0x12, 0xec, 0xc2, 0x26, 0x97, 0xe3, 0x05, 0xe2, 0xe9, 0x9e, 0x4c, - 0x59, 0x9c, 0x06, 0xc9, 0x6d, 0xcd, 0x18, 0x06, 0xa9, 0x47, 0xde, 0x28, - 0xec, 0xbc, 0x73, 0x14, 0x94, 0x2c, 0x4d, 0x37, 0x98, 0xb6, 0x8e, 0xcb, - 0x04, 0x98, 0xfe, 0x1a, 0x4f, 0x5b, 0xdc, 0xc2, 0x22, 0xdd, 0x02, 0x43, - 0x3c, 0x72, 0xc8, 0x37, 0x77, 0xae, 0x59, 0x13, 0x41, 0xb4, 0x55, 0x04, - 0x77, 0x61, 0x0a, 0x1a, 0xd6, 0xf0, 0x12, 0x40, 0x7f, 0xab, 0x2c, 0x40, - 0x87, 0x64, 0xe1, 0x2f, 0xef, 0x41, 0x18, 0xa5, 0x1c, 0x2c, 0xa0, 0xf9, - 0xb7, 0x22, 0xa6, 0x29, 0xc8, 0xa8, 0xe1, 0xef, 0xd1, 0x62, 0xe6, 0x20, - 0xbc, 0x5c, 0x62, 0x42, 0xe8, 0x45, 0x86, 0x45, 0x11, 0x7c, 0xf6, 0xed, - 0xbd, 0x3f, 0xb4, 0xd7, 0x6a, 0x95, 0x25, 0xd3, 0xe6, 0x61, 0x48, 0xb7, - 0x73, 0x6d, 0xfc, 0x87, 0x27, 0x6e, 0x7b, 0x7f, 0xd7, 0x84, 0x7b, 0xb6, - 0x43, 0x35, 0x44, 0x17, 0xca, 0x91, 0x5e, 0x8c, 0xb0, 0x27, 0x79, 0x21, - 0xe8, 0xfe, 0xd0, 0xb3, 0x85, 0x6e, 0x51, 0x0c, 0xbb, 0x81, 0x57, 0x19, - 0x48, 0xaf, 0xe2, 0xe7, 0x2b, 0xe9, 0xef, 0x03, 0x6b, 0x75, 0xdc, 0x4a, - 0x1b, 0x24, 0x23, 0x55, 0x64, 0x9d, 0xc9, 0x07, 0x4b, 0x7f, 0xe2, 0xa5, - 0x49, 0x62, 0x6c, 0xcb, 0xb3, 0xaa, 0x9b, 0xe4, 0x0b, 0x13, 0x28, 0xb0, - 0xd5, 0x5b, 0x2e, 0xb4, 0x4c, 0x98, 0xba, 0xf1, 0x39, 0x81, 0x7c, 0xbc, - 0x15, 0x67, 0x6c, 0x5b, 0x7f, 0x61, 0xf1, 0xb5, 0xb2, 0x95, 0x2d, 0x23, - 0x74, 0x51, 0xa1, 0x02, 0xc2, 0x72, 0x3e, 0xc7, 0xb6, 0x76, 0xbd, 0x67, - 0xc2, 0x05, 0xeb, 0xd0, 0x0a, 0x2f, 0xe0, 0x86, 0x1a, 0x87, 0xea, 0x0e, - 0x00, 0x4e, 0x5d, 0x79, 0x8e, 0x94, 0xa7, 0xa3, 0x5f, 0x7e, 0x1e, 0xfe, - 0x0d, 0xb2, 0xf3, 0x3b, 0x1e, 0x72, 0x17, 0xca, 0xb2, 0xec, 0x04, 0x75, - 0x74, 0x8e, 0xbf, 0x8d, 0x7f, 0x5f, 0x83, 0xb8, 0x3c, 0xb9, 0x64, 0xf6, - 0x9b, 0x99, 0xc9, 0xb8, 0xac, 0xe7, 0xd2, 0x7f, 0x33, 0xbe, 0x63, 0xc6, - 0xdf, 0xb5, 0x7e, 0xb5, 0x73, 0xbf, 0x6c, 0x38, 0xdd, 0x5e, 0xf3, 0x4a, - 0x8b, 0x37, 0xf3, 0x01, 0xa0, 0xc2, 0xad, 0x14, 0xfd, 0xdc, 0x6d, 0x19, - 0x26, 0xa3, 0x87, 0x9c, 0x58, 0xa4, 0xea, 0xd6, 0xbb, 0x0d, 0x92, 0xc4, - 0x1e, 0x0e, 0xd2, 0xf3, 0x27, 0x11, 0xd9, 0x29, 0xbf, 0x5e, 0x14, 0x8f, - 0xa4, 0xb4, 0xdd, 0x11, 0x09, 0xeb, 0x31, 0xa9, 0x74, 0xa7, 0x51, 0xb8, - 0x2d, 0x1a, 0xe1, 0xb8, 0x6e, 0xc1, 0x4b, 0xbe, 0x8c, 0xae, 0x12, 0xe2, - 0xa6, 0x66, 0xda, 0x3a, 0x36, 0x6b, 0xa0, 0xab, 0xb9, 0x51, 0x9e, 0x37, - 0x3e, 0x90, 0xa7, 0x8e, 0x1a, 0xe4, 0xc7, 0xe0, 0xf9, 0x18, 0xbf, 0xe7, - 0x79, 0x9c, 0x20, 0xe7, 0x4f, 0xf7, 0xee, 0xad, 0xdf, 0xd0, 0xa3, 0x88, - 0xfb, 0xf2, 0x8c, 0x00, 0x7c, 0x12, 0x42, 0x48, 0xfb, 0x83, 0xab, 0x9a, - 0x48, 0xd2, 0x93, 0x78, 0x58, 0xfe, 0xf6, 0xb2, 0xe7, 0x04, 0xe0, 0x1a, - 0x31, 0xf3, 0x67, 0xb3, 0x22, 0xcf, 0x20, 0x69, 0x7d, 0xd5, 0x70, 0x12, - 0x56, 0x66, 0x03, 0x38, 0x5c, 0x4a, 0x16, 0x15, 0x72, 0x94, 0x27, 0x1a, - 0xca, 0xc6, 0xa1, 0xef, 0x51, 0x2b, 0x04, 0xa9, 0xfc, 0x99, 0x3f, 0x15, - 0x14, 0x5f, 0x99, 0x3b, 0xbe, 0x0b, 0x5f, 0x7a, 0x2b, 0xb4, 0x7f, 0x83, - 0x90, 0x4c, 0x2a, 0xb8, 0xf5, 0x5e, 0x06, 0xc4, 0x6f, 0x31, 0x6e, 0x82, - 0xf7, 0x7e, 0x60, 0x3e, 0x42, 0x7b, 0x0c, 0xfd, 0xd9, 0xd5, 0x66, 0x42, - 0x33, 0x2f, 0xe8, 0x56, 0xa1, 0xe7, 0xc8, 0xaf, 0x05, 0xb1, 0x75, 0x92, - 0x67, 0x07, 0x09, 0xbc, 0x63, 0x91, 0x83, 0x97, 0x68, 0x41, 0xc4, 0xae, - 0x3c, 0xf3, 0xcc, 0x50, 0x63, 0xe7, 0x7b, 0x51, 0xc8, 0xfe, 0x46, 0x2c, - 0x28, 0x8a, 0x55, 0xa6, 0x9d, 0x86, 0x51, 0x84, 0x8b, 0x5d, 0x1f, 0x04, - 0x2e, 0x87, 0x71, 0x63, 0x55, 0x91, 0x12, 0xdc, 0xc0, 0xf6, 0x30, 0x8d, - 0x81, 0xc4, 0x64, 0x82, 0x6e, 0x6b, 0x1e, 0xce, 0xa4, 0x4d, 0x0c, 0xe5, - 0x8b, 0xfc, 0x52, 0x2e, 0x7a, 0x3f, 0xec, 0x8d, 0x63, 0x77, 0xa5, 0x48, - 0x35, 0xbe, 0xad, 0x4c, 0x3f, 0xf3, 0xa6, 0xf3, 0x44, 0xce, 0x2d, 0x34, - 0x3c, 0xec, 0x5e, 0x9f, 0xee, 0x88, 0x15, 0xa6, 0xf3, 0xde, 0x13, 0xef, - 0x1f, 0xf2, 0x02, 0x26, 0x41, 0xe4, 0x9a, 0x95, 0x97, 0x1d, 0x99, 0x14, - 0x39, 0x71, 0x09, 0xf9, 0x31, 0x34, 0x6f, 0x3f, 0x62, 0x6d, 0x0e, 0x15, - 0x69, 0xc8, 0xad, 0x90, 0x34, 0x7a, 0x97, 0x13, 0xf8, 0xb4, 0x11, 0xdb, - 0x7d, 0xfb, 0x7f, 0x04, 0x31, 0x28, 0xf3, 0xe5, 0x4b, 0xdb, 0xab, 0x19, - 0xa6, 0x0b, 0xe6, 0x8b, 0x21, 0x89, 0xba, 0x2a, 0x2a, 0x80, 0x25, 0x80, - 0xee, 0x8a, 0xd8, 0x65, 0xcc, 0x23, 0x05, 0x11, 0xf5, 0xc6, 0x7d, 0x2d, - 0xd4, 0xbc, 0x2e, 0xe2, 0xe2, 0x73, 0xd1, 0x05, 0x7e, 0xa3, 0x4e, 0x16, - 0x35, 0x73, 0xba, 0x30, 0x2f, 0x3d, 0xff, 0x10, 0x40, 0x9a, 0xe6, 0x56, - 0xaa, 0x63, 0x29, 0x17, 0x85, 0x5a, 0x62, 0x62, 0xed, 0x3d, 0x8b, 0x4f, - 0x66, 0xfd, 0x1b, 0x12, 0xfa, 0x00, 0x2a, 0x61, 0x77, 0xbe, 0xe8, 0xcb, - 0xb3, 0x86, 0x14, 0x02, 0xaa, 0xb8, 0x50, 0xf8, 0x93, 0x83, 0xd1, 0xd5, - 0x9f, 0xd4, 0x02, 0x43, 0xd4, 0x7a, 0x6a, 0xb6, 0xf5, 0x5e, 0xe7, 0x1f, - 0x9a, 0x9d, 0xbe, 0x63, 0x0d, 0x19, 0x97, 0xd3, 0x33, 0xde, 0xea, 0x2e, - 0x71, 0x6b, 0xbf, 0x87, 0xc6, 0x9b, 0x5f, 0x90, 0x17, 0x7f, 0x8b, 0x5a, - 0x74, 0x55, 0x1b, 0x1b, 0x48, 0x3a, 0x17, 0xe9, 0xc0, 0xfd, 0x27, 0x4a, - 0xb6, 0xb8, 0xaa, 0x1d, 0x73, 0x4c, 0xe1, 0x1f, 0xf5, 0xbf, 0x86, 0x46, - 0x64, 0xa6, 0xdd, 0xa2, 0xc2, 0x8c, 0xbe, 0x6b, 0xfa, 0xc8, 0x74, 0xa6, - 0x1e, 0x4a, 0xe5, 0xa9, 0x4c, 0x9d, 0xa6, 0x11, 0x8d, 0x3a, 0x51, 0x4f, - 0x0d, 0x7a, 0xca, 0x50, 0xc2, 0xa3, 0x87, 0x1b, 0x11, 0xe9, 0x66, 0xe0, - 0xa5, 0x63, 0xf3, 0xcb, 0xd2, 0x90, 0xe5, 0x0a, 0xe4, 0x71, 0xe0, 0xc8, - 0x38, 0x86, 0x59, 0xbb, 0x40, 0x05, 0x88, 0x2e, 0x0a, 0x6a, 0x1c, 0xff, - 0x2d, 0x64, 0x55, 0x6f, 0xf7, 0x64, 0x2b, 0x7e, 0x4d, 0x8b, 0xa7, 0x4f, - 0x2d, 0xb8, 0x75, 0xfa, 0xad, 0xa1, 0x93, 0xfe, 0x93, 0x6a, 0x2a, 0xc4, - 0xe3, 0xce, 0x1c, 0xc5, 0xcd, 0x5a, 0xc0, 0xd5, 0xa4, 0x1b, 0x00, 0x43, - 0x58, 0x92, 0x03, 0x9c, 0x70, 0x04, 0xfd, 0x81, 0x63, 0x6e, 0x0c, 0xc5, - 0x12, 0xd5, 0x4c, 0x6f, 0x7c, 0x70, 0xbe, 0xe7, 0x1f, 0xab, 0x45, 0x99, - 0xf1, 0x6a, 0x50, 0xd8, 0x47, 0xc3, 0x27, 0xd3, 0x39, 0x5c, 0xb5, 0x05, - 0x48, 0xc2, 0x02, 0x2e, 0x0a, 0x2d, 0x29, 0xc0, 0xc8, 0x86, 0xab, 0x80, - 0x06, 0x94, 0x5b, 0xd0, 0xf2, 0x3d, 0xe9, 0x3b, 0x07, 0x4d, 0x7d, 0x8d, - 0x46, 0x25, 0xd8, 0x6e, 0x85, 0xda, 0x78, 0xb2, 0xdd, 0x4c, 0x6c, 0x82, - 0xa4, 0x1b, 0x9e, 0xa6, 0x20, 0x76, 0xca, 0xb8, 0xb5, 0x9b, 0x5f, 0xa4, - 0x59, 0xb1, 0xf0, 0xd9, 0x87, 0xa5, 0xf8, 0x55, 0x67, 0x8b, 0xb0, 0x45, - 0x6d, 0xc9, 0x8c, 0xf8, 0x5a, 0xe3, 0x6a, 0x70, 0x4d, 0x9c, 0x02, 0xa3, - 0xfe, 0x9f, 0xc5, 0x6e, 0x22, 0x3e, 0xce, 0xed, 0xb4, 0x48, 0xb3, 0xb2, - 0x78, 0x30, 0xb8, 0xa5, 0xf3, 0x96, 0xc3, 0x76, 0xa2, 0x3e, 0xeb, 0x00, - 0x20, 0x2c, 0xb8, 0xc6, 0x17, 0x3c, 0xb7, 0x4d, 0x6c, 0xd1, 0x5c, 0x05, - 0x75, 0x2a, 0xf2, 0x2d, 0x85, 0x59, 0x54, 0xdf, 0xb0, 0xb0, 0x82, 0x45, - 0x50, 0x8f, 0x59, 0x8c, 0x5c, 0x60, 0x49, 0xe3, 0x74, 0x43, 0xbe, 0x3d, - 0x77, 0xbc, 0x4a, 0x1e, 0x9f, 0xf6, 0x3b, 0x42, 0x8b, 0x08, 0x59, 0xe8, - 0xe2, 0xbe, 0xb5, 0x63, 0x05, 0x6b, 0xda, 0x82, 0x9d, 0x56, 0xcd, 0xfd, - 0x4d, 0x8e, 0xe8, 0x14, 0xf0, 0x9f, 0x3c, 0x4b, 0x9d, 0x5f, 0x50, 0x8b, - 0x3d, 0x45, 0x46, 0xaa, 0xf9, 0x5f, 0x15, 0x0d, 0x63, 0x4c, 0xa3, 0x2d, - 0xfb, 0x6b, 0xbb, 0x64, 0x2e, 0x4e, 0x7b, 0x6d, 0xf9, 0xa9, 0x3a, 0x89, - 0xb1, 0xfc, 0x75, 0xa5, 0x19, 0x46, 0xba, 0x72, 0xc7, 0x19, 0x93, 0xe9, - 0x40, 0xca, 0xc1, 0xc1, 0x38, 0x20, 0xd0, 0xc4, 0xda, 0x92, 0xf9, 0x46, - 0x31, 0x5a, 0x24, 0x85, 0xe2, 0xc6, 0xdd, 0x01, 0x79, 0x7b, 0xd4, 0xe1, - 0x33, 0x43, 0xce, 0xe6, 0xba, 0x08, 0x89, 0x30, 0xe9, 0x6a, 0xd1, 0x52, - 0x2c, 0x35, 0x7a, 0xf8, 0xaf, 0x53, 0xca, 0xd3, 0xd3, 0x62, 0xc8, 0x4e, - 0xdc, 0xa4, 0x43, 0x8a, 0x5e, 0xc1, 0x49, 0x68, 0xbf, 0xad, 0x4e, 0x14, - 0xe5, 0x64, 0xce, 0x2f, 0x49, 0x36, 0x51, 0xcc, 0xfe, 0x29, 0x3d, 0xee, - 0x72, 0x47, 0xef, 0x95, 0xdd, 0xf0, 0x9a, 0x5f, 0x8c, 0x4c, 0xae, 0x2e, - 0x46, 0xac, 0xa0, 0x6f, 0x4d, 0xb0, 0x63, 0x77, 0xd8, 0x28, 0xe0, 0xea, - 0x9c, 0x75, 0x1b, 0x79, 0xc6, 0x80, 0xe3, 0x68, 0x39, 0x65, 0xe3, 0x79, - 0x23, 0x8c, 0xbf, 0x78, 0x68, 0x43, 0xd8, 0xec, 0xa0, 0xb8, 0x8a, 0xdb, - 0x31, 0xde, 0x4a, 0x7a, 0x16, 0x5f, 0xf6, 0xe0, 0x03, 0xed, 0x86, 0x59, - 0x1c, 0xda, 0xd2, 0xe8, 0x4d, 0x0d, 0x81, 0x83, 0x5f, 0x91, 0x76, 0x21, - 0xfc, 0x96, 0xdd, 0x1d, 0x3b, 0x8b, 0xb2, 0xab, 0x48, 0xe6, 0x61, 0x9f, - 0xe7, 0x58, 0x33, 0xf9, 0xa7, 0x59, 0x32, 0x1b, 0xf1, 0xfe, 0xd7, 0x18, - 0x96, 0x70, 0xaf, 0xab, 0xb6, 0xf0, 0xe5, 0xf6, 0x9e, 0x69, 0x72, 0x40, - 0xe6, 0xce, 0x29, 0x32, 0xee, 0x11, 0x6f, 0x68, 0x80, 0xb4, 0x9f, 0x8d, - 0x6f, 0x49, 0x77, 0x36, 0x13, 0x77, 0x91, 0x07, 0x55, 0x8e, 0x9f, 0x81, - 0x3c, 0x05, 0x8b, 0x89, 0xaa, 0x96, 0xe6, 0x6e, 0x85, 0x4a, 0xff, 0x46, - 0xfa, 0xb2, 0x8c, 0x1f, 0xe3, 0x4f, 0x79, 0x08, 0x64, 0xe9, 0x5f, 0xfb, - 0x10, 0xa1, 0xf8, 0x86, 0x3e, 0xd3, 0x00, 0xa1, 0x13, 0x0e, 0x91, 0xc5, - 0xa1, 0x2e, 0xce, 0xba, 0x09, 0x8c, 0xc3, 0xc3, 0xc3, 0x5e, 0x6e, 0x7d, - 0xa7, 0xe1, 0x3d, 0x6d, 0xce, 0x75, 0xeb, 0x6c, 0xdd, 0xa3, 0xc0, 0x4f, - 0x2f, 0x98, 0x2a, 0x94, 0xaa, 0x66, 0x36, 0x2b, 0x8b, 0xd6, 0x13, 0x7b, - 0xf8, 0x25, 0x7f, 0x4e, 0xca, 0xe8, 0x9f, 0x20, 0x69, 0xc4, 0x1a, 0x0d, - 0xd0, 0x80, 0x52, 0x15, 0x12, 0x74, 0x9d, 0x99, 0x41, 0x50, 0x02, 0xee, - 0x96, 0x62, 0xa0, 0xfd, 0xf7, 0xd3, 0x1d, 0x00, 0x86, 0x25, 0x9b, 0x4a, - 0xc2, 0xd9, 0x2a, 0x36, 0x55, 0xb8, 0x36, 0x6f, 0xc9, 0x70, 0x82, 0xf4, - 0xe0, 0xfd, 0x16, 0xc7, 0x5b, 0x62, 0xb3, 0xcb, 0x13, 0x99, 0xa7, 0xef, - 0x6e, 0x5d, 0x90, 0xb2, 0x82, 0x12, 0x02, 0x83, 0xba, 0x2e, 0xea, 0x6c, - 0xee, 0x05, 0x47, 0x47, 0x0b, 0x09, 0x38, 0x08, 0xc1, 0xb4, 0xc7, 0x45, - 0x27, 0xf7, 0x0d, 0xd5, 0x85, 0xce, 0xc1, 0xac, 0x81, 0x70, 0x03, 0xb6, - 0x7a, 0x28, 0x2c, 0x19, 0x52, 0x0f, 0xfd, 0xad, 0x00, 0x99, 0xa8, 0x90, - 0xa1, 0x6f, 0x56, 0x12, 0x8e, 0x5d, 0x9c, 0x59, 0xc9, 0x13, 0x34, 0xaf, - 0x96, 0x18, 0x72, 0x72, 0xcb, 0x74, 0xad, 0x81, 0xf0, 0xc7, 0x7f, 0x09, - 0x74, 0xa5, 0x16, 0x80, 0xb3, 0x6e, 0xc9, 0x8e, 0xb6, 0x6a, 0xea, 0x24, - 0xfd, 0x38, 0x36, 0xc9, 0xd5, 0x8e, 0x75, 0xb6, 0x8d, 0xbd, 0x32, 0x47, - 0x0f, 0xf8, 0x07, 0xf0, 0x00, 0x5c, 0x46, 0x04, 0xd9, 0x98, 0xbb, 0x29, - 0x31, 0xe7, 0xef, 0x6f, 0xe5, 0x06, 0x00, 0x3f, 0x42, 0x9b, 0x62, 0xc9, - 0x07, 0x9b, 0xfa, 0x26, 0xad, 0x46, 0xf0, 0x04, 0x46, 0x4c, 0x8b, 0xc0, - 0x3c, 0xf9, 0xa1, 0x28, 0x48, 0x92, 0xe7, 0xaa, 0x96, 0xf9, 0xbe, 0xee, - 0xdf, 0x7e, 0x46, 0xf0, 0x91, 0x06, 0xce, 0x95, 0x70, 0x72, 0xc4, 0x5a, - 0x65, 0xad, 0xf4, 0xc2, 0x98, 0xeb, 0x32, 0x47, 0x52, 0xc7, 0x17, 0x23, - 0xa1, 0x04, 0x0c, 0x66, 0x26, 0x1e, 0xa3, 0xef, 0x9c, 0x13, 0x75, 0x23, - 0x4a, 0xa7, 0x76, 0x4e, 0xe9, 0x1d, 0xfd, 0x62, 0xc9, 0x26, 0xbe, 0x60, - 0x7b, 0x5c, 0x35, 0x04, 0xc5, 0xee, 0x54, 0x0f, 0x40, 0x73, 0xc9, 0xd6, - 0xff, 0xe0, 0xa0, 0xce, 0x25, 0x74, 0x38, 0xe4, 0x36, 0x71, 0x7b, 0x13, - 0x5c, 0x61, 0xfc, 0x1d, 0xb9, 0xe0, 0x73, 0x5f, 0xb0, 0xbe, 0x01, 0x46, - 0xa1, 0xfd, 0xf6, 0xed, 0x8b, 0xc9, 0x83, 0x90, 0xfd, 0xd0, 0x38, 0xc1, - 0xbc, 0x1b, 0xb7, 0x05, 0xe7, 0xf8, 0x65, 0x14, 0x6b, 0xe4, 0x89, 0xf1, - 0x27, 0x33, 0xbc, 0xd4, 0x51, 0x32, 0xbc, 0xb4, 0x56, 0xca, 0x37, 0x33, - 0x4c, 0xed, 0xf7, 0xda, 0xe0, 0xbb, 0x4a, 0xcc, 0xe7, 0xf7, 0x18, 0x87, - 0x87, 0xa4, 0x4f, 0xca, 0xe6, 0xa0, 0xfe, 0xef, 0x0f, 0xec, 0xf4, 0x68, - 0x65, 0xd6, 0x78, 0x12, 0xeb, 0x49, 0xef, 0xa1, 0x51, 0x8b, 0x46, 0xec, - 0xf0, 0x25, 0xe3, 0x49, 0x47, 0x51, 0x47, 0x74, 0xce, 0x49, 0x24, 0x03, - 0x36, 0xce, 0xde, 0xce, 0xa5, 0x33, 0x0e, 0xfc, 0xdf, 0x0b, 0xb3, 0x36, - 0x8a, 0x77, 0xb7, 0x49, 0x9e, 0xe7, 0xc7, 0xe5, 0x63, 0xfc, 0x0c, 0x86, - 0x8a, 0x1c, 0x29, 0xda, 0x9b, 0xed, 0x24, 0xf3, 0x1c, 0x49, 0x0b, 0x24, - 0x1f, 0xb1, 0x60, 0x04, 0x7e, 0x94, 0x80, 0x63, 0x2b, 0x30, 0x9a, 0x03, - 0x5d, 0xe8, 0x0c, 0x69, 0x15, 0x34, 0x8c, 0x71, 0x02, 0x03, 0x10, 0xaf, - 0x0d, 0x47, 0x3b, 0x61, 0x3a, 0x13, 0x7b, 0xa7, 0x61, 0x2f, 0x3d, 0x75, - 0xb9, 0x35, 0x79, 0x43, 0xf4, 0x44, 0x39, 0x4f, 0xee, 0xc4, 0xd8, 0x45, - 0x55, 0x76, 0x45, 0x1a, 0xc0, 0x06, 0x82, 0xd5, 0x11, 0x8a, 0x64, 0x61, - 0xe0, 0xfe, 0xb7, 0x5f, 0x98, 0x3f, 0xc7, 0x65, 0xfa, 0x3c, 0x8e, 0xf6, - 0xb4, 0x78, 0x00, 0x7b, 0xef, 0xf6, 0xcb, 0xa5, 0x8c, 0xb1, 0x4e, 0x25, - 0xc0, 0xc0, 0x15, 0x2a, 0x81, 0x36, 0x4a, 0x7c, 0x71, 0x98, 0x15, 0x76, - 0xde, 0x32, 0x37, 0x44, 0xab, 0xaa, 0xb2, 0x66, 0x31, 0x86, 0x80, 0x57, - 0x5c, 0x73, 0xde, 0xdf, 0xad, 0xf1, 0x66, 0x16, 0x37, 0xf9, 0x17, 0xbe, - 0xeb, 0x99, 0x2e, 0x46, 0x82, 0xc4, 0x44, 0xbd, 0xf4, 0x02, 0x4a, 0x97, - 0xaf, 0xda, 0x45, 0xf5, 0xbc, 0x96, 0x86, 0x19, 0xe6, 0x08, 0xa3, 0x30, - 0xd3, 0x6d, 0x6e, 0x7a, 0xaf, 0x97, 0x2b, 0xe8, 0x2f, 0xe0, 0xa4, 0xb1, - 0xce, 0x95, 0x50, 0x21, 0xff, 0x84, 0x22, 0xbd, 0x4d, 0x51, 0x16, 0x1c, - 0xe4, 0x1e, 0x43, 0x75, 0x28, 0x1d, 0xdb, 0xa8, 0xa8, 0xba, 0xa7, 0xb7, - 0xc3, 0x26, 0x48, 0x05, 0xa9, 0x27, 0xb6, 0x38, 0x7a, 0xa1, 0x69, 0xec, - 0x42, 0x7b, 0x3a, 0x22, 0x16, 0xe4, 0x8d, 0xc6, 0xf2, 0xd0, 0x6b, 0xd4, - 0x04, 0x52, 0xb1, 0x2d, 0x22, 0x1d, 0xd6, 0x19, 0xd4, 0x30, 0x37, 0x6b, - 0x5e, 0x92, 0x4e, 0xdf, 0x80, 0xcf, 0xa6, 0x03, 0xdf, 0x7c, 0x28, 0xe9, - 0x58, 0x8b, 0xb6, 0x8c, 0x3e, 0x65, 0xb2, 0xa8, 0x3e, 0x42, 0xeb, 0x20, - 0xc2, 0x45, 0xfc, 0xf9, 0x7a, 0x94, 0x93, 0xf4, 0x04, 0x16, 0xc9, 0xfc, - 0xc6, 0x80, 0xec, 0x22, 0xd1, 0x6d, 0xb4, 0x93, 0x4b, 0x45, 0x4f, 0x19, - 0xb4, 0x25, 0x63, 0x24, 0x1b, 0xcc, 0xa0, 0xb6, 0xe1, 0x90, 0xd3, 0xb8, - 0x9c, 0x4f, 0x56, 0x39, 0x61, 0x50, 0xe1, 0xcf, 0x4a, 0x0a, 0xee, 0x65, - 0x98, 0x5d, 0x72, 0x02, 0x59, 0x31, 0xef, 0xc7, 0xfc, 0x61, 0x2f, 0xa8, - 0x5c, 0xef, 0x35, 0xb9, 0x9c, 0x46, 0xfc, 0x86, 0xce, 0xe7, 0x31, 0x3e, - 0x2d, 0xd7, 0x4d, 0xa5, 0x60, 0x3b, 0xc7, 0x09, 0x11, 0xae, 0x9f, 0xd8, - 0x35, 0x76, 0x56, 0x80, 0xce, 0x49, 0x8a, 0xe1, 0xe5, 0xd6, 0x8b, 0xcc, - 0xa3, 0x84, 0xae, 0x5a, 0xf0, 0xc0, 0x29, 0x90, 0x22, 0x2e, 0x4b, 0x5c, - 0xf1, 0x37, 0x18, 0x01, 0x24, 0x6d, 0xde, 0x44, 0xaa, 0x8a, 0x4b, 0x6c, - 0xcb, 0x27, 0xf0, 0x13, 0x77, 0x94, 0x4f, 0xd3, 0xce, 0x7b, 0x10, 0x32, - 0x00, 0x03, 0x28, 0x44, 0x92, 0x56, 0x3b, 0xc0, 0x66, 0x80, 0x38, 0x64, - 0x75, 0x75, 0x3b, 0xcc, 0x00, 0x94, 0xed, 0x26, 0x63, 0xa4, 0x0f, 0xa8, - 0x7e, 0x4f, 0xb5, 0x4d, 0xf9, 0x8a, 0x8b, 0x3a, 0x49, 0x9f, 0x51, 0xad, - 0x3c, 0x21, 0x1b, 0xdf, 0xbe, 0x6d, 0x46, 0xec, 0xd7, 0xc3, 0x80, 0xca, - 0xd0, 0xb0, 0xa8, 0x47, 0x6b, 0x1a, 0x4f, 0x40, 0x2c, 0xc5, 0xc9, 0xab, - 0xec, 0x0f, 0x33, 0xb8, 0xee, 0xd0, 0x96, 0x31, 0x45, 0x87, 0xd6, 0x68, - 0xa2, 0x6f, 0x23, 0x71, 0x0d, 0xa6, 0xe7, 0xb3, 0x44, 0xe1, 0x74, 0x18, - 0xc4, 0xfb, 0xf3, 0x97, 0xa1, 0xee, 0xd7, 0x4e, 0x5c, 0x57, 0x90, 0xd5, - 0x94, 0x09, 0xbd, 0x66, 0x13, 0x1d, 0xd8, 0x7f, 0xe8, 0xd3, 0x1f, 0x44, - 0xb8, 0xea, 0x59, 0x7f, 0xad, 0x91, 0xee, 0xdc, 0xa6, 0x19, 0xf8, 0x35, - 0xfa, 0xed, 0x1e, 0x63, 0x85, 0xf1, 0x94, 0x94, 0x8a, 0x8e, 0x87, 0xca, - 0xad, 0xfc, 0x22, 0x89, 0x71, 0x52, 0x85, 0x5d, 0x4d, 0x82, 0x5a, 0x67, - 0x0e, 0x6e, 0x64, 0xc5, 0xec, 0x06, 0x33, 0xae, 0xac, 0x98, 0xdf, 0x85, - 0x71, 0xde, 0xf0, 0x4a, 0x63, 0x22, 0xca, 0x9d, 0xaa, 0x3d, 0x9e, 0x96, - 0x05, 0xe3, 0x28, 0x5c, 0x69, 0x29, 0x5c, 0x81, 0x13, 0xef, 0xa9, 0x6a, - 0x32, 0xc0, 0x23, 0xa9, 0xab, 0x6f, 0xed, 0x7a, 0xd3, 0x75, 0xba, 0xd5, - 0xee, 0x38, 0xb6, 0x3f, 0x69, 0x6a, 0x74, 0x6a, 0x2e, 0x99, 0x63, 0x82, - 0x4b, 0x95, 0x1b, 0x46, 0x3e, 0xdc, 0x45, 0xc1, 0x63, 0xc4, 0xa4, 0xb4, - 0x0a, 0xc1, 0xf3, 0xa8, 0xa9, 0x6e, 0xa2, 0x51, 0x4c, 0x2f, 0xb6, 0xe0, - 0xcc, 0x50, 0x51, 0x12, 0x9c, 0x30, 0xbe, 0xda, 0x5e, 0xb8, 0xad, 0xcb, - 0x9a, 0x6a, 0x81, 0x76, 0x9c, 0x24, 0xa9, 0x2a, 0x7d, 0x7d, 0xdc, 0x1b, - 0x21, 0x9f, 0xcb, 0x3b, 0x95, 0x5a, 0x7e, 0xa9, 0xea, 0x39, 0x2d, 0x40, - 0x97, 0x09, 0xf2, 0xc5, 0xa7, 0xd1, 0xad, 0xd5, 0x4e, 0x1c, 0x0b, 0x34, - 0xf2, 0xb7, 0xb8, 0x9a, 0x71, 0x92, 0xfb, 0xd8, 0xae, 0xce, 0xde, 0x85, - 0x60, 0x93, 0x6a, 0x94, 0xe7, 0x57, 0x1f, 0xfc, 0xdd, 0x39, 0xa0, 0x73, - 0xbb, 0x3b, 0x33, 0x24, 0x4c, 0x36, 0x43, 0x90, 0x45, 0x46, 0x0e, 0xbd, - 0x48, 0x89, 0x8d, 0xf4, 0x1a, 0xd1, 0xab, 0x89, 0x8a, 0x72, 0xf8, 0xf4, - 0xfd, 0x59, 0x4e, 0xa1, 0xb6, 0x1e, 0x2e, 0x54, 0x0d, 0x75, 0x1f, 0xaa, - 0xc4, 0x2b, 0x92, 0x75, 0x01, 0x2b, 0x1b, 0xca, 0x5e, 0xd7, 0xe4, 0x7c, - 0xc0, 0xb5, 0xdf, 0xea, 0x9b, 0x50, 0xfe, 0x7a, 0xef, 0x11, 0x45, 0xf5, - 0xcc, 0xd5, 0x25, 0xb8, 0xac, 0x4c, 0x63, 0xf7, 0xe7, 0x50, 0xeb, 0x58, - 0x39, 0xc3, 0xb5, 0x1d, 0x87, 0xf5, 0x75, 0x85, 0x6a, 0x9a, 0x27, 0x3d, - 0x09, 0xcb, 0xf4, 0x2b, 0x74, 0x3a, 0x77, 0x6f, 0xc9, 0xd9, 0xf9, 0x81, - 0xdc, 0x62, 0xe4, 0x90, 0xe2, 0xbb, 0x22, 0xcf, 0xdd, 0x5a, 0x48, 0x3b, - 0xaf, 0x3c, 0x1f, 0xdd, 0xa7, 0xc4, 0xa1, 0x55, 0x8a, 0xce, 0xbb, 0xb3, - 0x52, 0x4f, 0x72, 0x56, 0xb9, 0xfc, 0xba, 0x4c, 0x71, 0x4c, 0xf9, 0x53, - 0x7d, 0xbf, 0x37, 0x29, 0x35, 0x0e, 0x90, 0x11, 0x43, 0xa5, 0x90, 0x75, - 0x13, 0x24, 0x39, 0x5a, 0xc5, 0x2f, 0x97, 0x01, 0xf9, 0x57, 0x86, 0xc3, - 0xc9, 0x55, 0x32, 0x0c, 0xa1, 0xaa, 0x2c, 0x3f, 0x7f, 0x22, 0x5d, 0x49, - 0x4e, 0xee, 0xd1, 0x27, 0x18, 0x46, 0x27, 0x00, 0xf8, 0x47, 0x47, 0x76, - 0xcc, 0xa4, 0x9d, 0xbb, 0x25, 0xec, 0x92, 0xe7, 0x6b, 0x8e, 0x54, 0xce, - 0xa8, 0x82, 0x39, 0x6b, 0x97, 0x2a, 0x72, 0xfe, 0x1b, 0x2a, 0x23, 0xd2, - 0x93, 0x1b, 0x20, 0x10, 0x00, 0x09, 0x9b, 0xe6, 0xd5, 0x38, 0xab, 0x84, - 0xee, 0x15, 0x18, 0xca, 0x85, 0xfc, 0x85, 0x38, 0xcd, 0x37, 0x58, 0x2e, - 0x47, 0xcd, 0x05, 0x49, 0xe5, 0x92, 0x4d, 0x53, 0x1d, 0xa0, 0xeb, 0xf5, - 0xa9, 0x3d, 0x93, 0xde, 0xe0, 0x10, 0x78, 0x4a, 0x42, 0x68, 0x97, 0xc2, - 0x67, 0x0f, 0xa1, 0x09, 0xdc, 0xdc, 0x6e, 0x12, 0x84, 0x2e, 0x64, 0xaa, - 0xc3, 0x64, 0x45, 0x80, 0x10, 0x9c, 0x2f, 0x26, 0x62, 0x35, 0xbf, 0x5a, - 0x04, 0xad, 0xf5, 0xe4, 0x9f, 0x64, 0xe8, 0x28, 0xd8, 0xc3, 0x1d, 0x21, - 0x8f, 0x64, 0x92, 0x71, 0x30, 0x90, 0xb7, 0x2b, 0xb6, 0xa1, 0xfe, 0x45, - 0xa5, 0x4d, 0x5c, 0xab, 0x66, 0x1d, 0x95, 0x15, 0xa4, 0x60, 0x14, 0xf7, - 0x29, 0x19, 0x44, 0x9f, 0x30, 0x7e, 0x5e, 0xb2, 0x62, 0xeb, 0xc2, 0x93, - 0x97, 0x6d, 0xd5, 0x4a, 0x93, 0xb6, 0x3c, 0xba, 0xb5, 0xf7, 0xd9, 0xd7, - 0xbb, 0x29, 0x0a, 0x57, 0x41, 0x75, 0xd1, 0xa3, 0x27, 0xe4, 0x54, 0x99, - 0x3e, 0x6e, 0x74, 0xd5, 0x64, 0x6b, 0xd0, 0x75, 0xf7, 0xbb, 0x47, 0x2e, - 0xc5, 0xcc, 0xb4, 0xb2, 0xc4, 0x3b, 0xac, 0x0a, 0x5f, 0xde, 0x53, 0x37, - 0x36, 0xa8, 0x6c, 0x25, 0xa0, 0xc0, 0x67, 0x22, 0x2c, 0x51, 0x3b, 0x02, - 0x59, 0x14, 0xd0, 0xf2, 0x14, 0x53, 0xff, 0x3a, 0xee, 0x01, 0x22, 0x2c, - 0xf4, 0x5c, 0x41, 0x52, 0x2b, 0x28, 0xaf, 0xdd, 0xcc, 0x37, 0xe2, 0xf9, - 0x97, 0x40, 0x38, 0x8d, 0x9d, 0x4b, 0x8c, 0x3a, 0x92, 0x05, 0x7a, 0x63, - 0x8a, 0x09, 0xb4, 0x27, 0xe1, 0xba, 0xf2, 0xd3, 0x49, 0x80, 0x7f, 0x28, - 0xc7, 0x7f, 0xa2, 0x66, 0xf3, 0xf7, 0xd3, 0xda, 0x29, 0xba, 0x77, 0xe5, - 0x1f, 0xef, 0xa9, 0xec, 0xa9, 0xb1, 0x5d, 0x0f, 0x3e, 0xa2, 0x24, 0x00, - 0x2d, 0x2e, 0xc9, 0x18, 0xc6, 0x10, 0xe5, 0xc7, 0x28, 0xf6, 0xd5, 0x78, - 0x86, 0xd7, 0xe2, 0x4c, 0xce, 0x04, 0x60, 0x44, 0xea, 0xeb, 0xb7, 0x72, - 0x33, 0x60, 0xc7, 0x95, 0xe8, 0xc3, 0xa8, 0x3c, 0xef, 0x15, 0x5a, 0xa9, - 0x41, 0x15, 0xf0, 0x5e, 0xaa, 0x82, 0x3d, 0xfa, 0xf1, 0x91, 0x0d, 0x66, - 0x3d, 0xf0, 0x72, 0xd5, 0xbc, 0x81, 0xc0, 0x02, 0xb0, 0xf4, 0x5e, 0x28, - 0x95, 0x81, 0x46, 0xd8, 0xb4, 0x74, 0x45, 0xe2, 0x7e, 0x26, 0x80, 0xf0, - 0x43, 0xdc, 0xbd, 0x31, 0x79, 0x38, 0x90, 0xd7, 0xc0, 0xfc, 0xf1, 0x70, - 0xbe, 0x7b, 0xbc, 0x08, 0x62, 0x40, 0x4f, 0x07, 0x63, 0xae, 0x9b, 0xa1, - 0xb7, 0xdd, 0x47, 0xe7, 0x55, 0x45, 0xf6, 0xb8, 0x3b, 0x5c, 0x08, 0x0f, - 0x22, 0x12, 0x85, 0x81, 0x3f, 0x28, 0xd7, 0xfe, 0x87, 0xcc, 0xfe, 0x09, - 0x45, 0x72, 0x74, 0xce, 0x92, 0xef, 0x3f, 0x34, 0xba, 0x2e, 0x32, 0x6a, - 0xdb, 0xef, 0x5d, 0x7c, 0x9a, 0xfc, 0x55, 0xec, 0x1b, 0xf9, 0x5a, 0x72, - 0x59, 0xd4, 0x2a, 0xdb, 0xac, 0x9a, 0x4f, 0xd7, 0x3b, 0x02, 0x32, 0x8d, - 0x4f, 0x2a, 0xca, 0x3e, 0xc0, 0xa8, 0x80, 0x37, 0x65, 0x39, 0xdf, 0x34, - 0x99, 0xc9, 0x66, 0x28, 0x6c, 0x42, 0xa7, 0xc3, 0xed, 0xd4, 0x3b, 0x40, - 0xc3, 0xc3, 0xfa, 0xaa, 0x5f, 0x0a, 0xe6, 0xb4, 0xc2, 0x9d, 0xc5, 0x4c, - 0x0e, 0x3e, 0x52, 0x9d, 0x6d, 0x49, 0x1a, 0xf0, 0x22, 0x52, 0xd9, 0x7a, - 0x6d, 0xd0, 0xb8, 0xf4, 0xb3, 0xf8, 0x2a, 0xeb, 0xc2, 0x2d, 0xf9, 0xb4, - 0xe8, 0x83, 0x9a, 0xb4, 0x6b, 0xeb, 0x37, 0xef, 0xd0, 0x10, 0x00, 0x3e, - 0x10, 0x95, 0xf6, 0xbd, 0xc2, 0xaf, 0x31, 0x4d, 0xc7, 0xb7, 0xdd, 0x44, - 0xf0, 0x43, 0x33, 0x9a, 0xb3, 0x28, 0xdb, 0x63, 0x66, 0x28, 0x89, 0x49, - 0x9e, 0x9e, 0x47, 0xa6, 0xe0, 0x93, 0xcc, 0xf6, 0x10, 0x77, 0x6a, 0x26, - 0xc0, 0x2d, 0x0b, 0xcd, 0x59, 0x03, 0xda, 0x5b, 0x9c, 0x2b, 0x67, 0x90, - 0xb4, 0xdd, 0x9e, 0xac, 0x66, 0x61, 0x10, 0xa3, 0x8f, 0x4a, 0xbf, 0xe8, - 0x75, 0x48, 0x05, 0x4d, 0x01, 0x35, 0x9e, 0x07, 0x07, 0xa5, 0x2f, 0xfd, - 0xbb, 0xa1, 0x12, 0x41, 0xd5, 0xb7, 0x7f, 0xa0, 0xce, 0xb1, 0x83, 0x98, - 0xf1, 0xbf, 0xbb, 0xd4, 0x4b, 0xf0, 0x34, 0x98, 0x02, 0x06, 0xd3, 0xbf, - 0x52, 0x1c, 0x39, 0x54, 0x0b, 0xa1, 0x4f, 0xcf, 0x77, 0xdb, 0x03, 0x9e, - 0x37, 0xcf, 0xb6, 0x8f, 0x8f, 0x9f, 0xc2, 0x32, 0x53, 0x5e, 0x34, 0xf9, - 0x19, 0xa2, 0xbb, 0x67, 0x01, 0xc3, 0x07, 0x26, 0x81, 0x32, 0x23, 0xf4, - 0xf3, 0xa0, 0xc3, 0x79, 0xd4, 0xed, 0x66, 0x3e, 0x5c, 0x4f, 0x27, 0x40, - 0x9c, 0x74, 0x64, 0x86, 0xb6, 0xe1, 0x9f, 0x0c, 0x57, 0x86, 0xe3, 0x96, - 0xac, 0x3f, 0xa7, 0xaf, 0x60, 0xbc, 0x1b, 0x20, 0xc2, 0x5e, 0xc5, 0x82, - 0x3b, 0xef, 0x55, 0x6c, 0xa6, 0x6a, 0xe7, 0x3a, 0xb6, 0x32, 0x48, 0xa9, - 0x4d, 0x3a, 0x2e, 0x23, 0xfd, 0x59, 0xcb, 0x1e, 0xab, 0x41, 0x57, 0x33, - 0x0a, 0x25, 0xdd, 0x98, 0x74, 0xfc, 0xe2, 0x4b, 0xcc, 0x62, 0x9b, 0xbd, - 0x7d, 0xf5, 0x33, 0x98, 0x1f, 0x91, 0xb6, 0xd1, 0x1e, 0xb2, 0xc6, 0xca, - 0x31, 0xf7, 0xb9, 0x9f, 0x51, 0xca, 0x59, 0x13, 0x9c, 0x06, 0x93, 0x80, - 0xeb, 0xdb, 0x11, 0x4f, 0x90, 0x4f, 0x59, 0x24, 0xd9, 0x0a, 0x56, 0x6a, - 0x8b, 0xa1, 0xd2, 0x3a, 0x66, 0x81, 0x2e, 0x6f, 0xf4, 0x03, 0xd4, 0xd0, - 0xe5, 0xda, 0x02, 0x63, 0xa3, 0x77, 0x07, 0xa1, 0xa1, 0xc4, 0x2d, 0x2f, - 0xef, 0x1b, 0x2e, 0x24, 0x8c, 0x98, 0xfd, 0x6c, 0x2b, 0x7b, 0xc7, 0xe0, - 0xb5, 0xe3, 0xd8, 0x20, 0xae, 0x7f, 0x6f, 0x29, 0xe4, 0x56, 0x1a, 0xb4, - 0xd9, 0x93, 0xec, 0x56, 0xd7, 0x94, 0x62, 0xb1, 0x9c, 0xe7, 0x4a, 0x21, - 0x0a, 0x3e, 0xac, 0x6b, 0x0e, 0x69, 0x25, 0x71, 0x3a, 0x92, 0xf4, 0x14, - 0x61, 0xcb, 0xf4, 0xec, 0x28, 0xab, 0x6d, 0x94, 0xdb, 0xb7, 0x29, 0x04, - 0x96, 0x95, 0x2b, 0x91, 0x65, 0xe1, 0x44, 0xc3, 0x04, 0x47, 0x2d, 0x4d, - 0x86, 0x0a, 0xd3, 0x96, 0xd4, 0x98, 0x0f, 0x10, 0xda, 0x32, 0xb5, 0x8e, - 0xa2, 0xc8, 0x89, 0x8f, 0xc5, 0x44, 0x96, 0x78, 0x1c, 0xdd, 0x30, 0x47, - 0xf8, 0x14, 0x27, 0xca, 0xfc, 0xc9, 0x69, 0x9e, 0x8f, 0xee, 0xfe, 0xe5, - 0xed, 0xa8, 0x4e, 0x3f, 0x0b, 0x99, 0x44, 0x42, 0xbb, 0x1d, 0xe1, 0x87, - 0x6c, 0xbb, 0x2c, 0x94, 0xd2, 0xd6, 0xb3, 0x25, 0xf1, 0xf2, 0x2c, 0x71, - 0x7b, 0x18, 0x9e, 0x6f, 0x94, 0xf9, 0xec, 0x47, 0x76, 0x55, 0xc7, 0xca, - 0x14, 0x99, 0xe9, 0x90, 0xaf, 0xc0, 0x15, 0xb5, 0x41, 0x95, 0xa4, 0x6e, - 0xa9, 0x70, 0x55, 0xe7, 0xfe, 0xaa, 0xf8, 0x56, 0xa2, 0x4a, 0xb7, 0x52, - 0x07, 0x3d, 0x17, 0x85, 0x44, 0xf3, 0xa3, 0x17, 0x18, 0xeb, 0x92, 0x6e, - 0xe5, 0xfd, 0xbf, 0x08, 0x68, 0x17, 0xe0, 0xe2, 0x94, 0x1a, 0x84, 0xae, - 0x9b, 0x75, 0x7d, 0xc6, 0xdd, 0x84, 0x68, 0xff, 0xa7, 0x53, 0x72, 0xdb, - 0x57, 0x81, 0xef, 0xba, 0x77, 0xa4, 0xb2, 0xbe, 0x37, 0xf2, 0xfe, 0x2f, - 0xe2, 0x19, 0x59, 0x06, 0xac, 0x46, 0x7d, 0x8a, 0x76, 0xbf, 0x7b, 0x6e, - 0xad, 0xf9, 0xe8, 0xf6, 0x1b, 0xab, 0x80, 0x4e, 0x2c, 0xc3, 0xeb, 0x11, - 0x69, 0x74, 0x3f, 0x94, 0x81, 0x2d, 0xd0, 0xbd, 0xb1, 0x7c, 0xbf, 0x85, - 0x29, 0xa6, 0xaa, 0x33, 0xff, 0x74, 0xd2, 0x14, 0x83, 0x6a, 0x1e, 0x0e, - 0xfe, 0x53, 0xc8, 0x1f, 0x9a, 0x74, 0xfd, 0x9d, 0xc0, 0xdc, 0x25, 0x3d, - 0x17, 0xf2, 0xdf, 0x08, 0x54, 0x6b, 0x59, 0x5f, 0x3d, 0x00, 0xc0, 0xcc, - 0xde, 0x5b, 0x17, 0xda, 0x63, 0x58, 0xef, 0xe6, 0x92, 0x54, 0x3c, 0x10, - 0x63, 0x72, 0x34, 0xde, 0x87, 0x8b, 0xe2, 0x01, 0x6b, 0x55, 0x56, 0x0c, - 0xd3, 0xa1, 0x24, 0x40, 0x45, 0xc5, 0xcb, 0xf3, 0xdb, 0x4a, 0x95, 0x41, - 0x49, 0xd3, 0xe1, 0xfe, 0x7a, 0xa8, 0xb7, 0x30, 0xaa, 0x67, 0x44, 0xe7, - 0x8f, 0xad, 0xaf, 0x92, 0x9d, 0x8b, 0x47, 0x4f, 0xc8, 0x4f, 0x1a, 0x92, - 0x43, 0xac, 0xd9, 0x0f, 0x4b, 0xe3, 0xdf, 0x6f, 0xc1, 0x43, 0x26, 0xd8, - 0x72, 0x29, 0x72, 0x14, 0x8e, 0xc8, 0x78, 0xfc, 0xf3, 0x7a, 0x77, 0xb9, - 0x90, 0xdd, 0xe0, 0xab, 0x9c, 0xfe, 0x13, 0x92, 0x38, 0x79, 0xea, 0xca, - 0xaa, 0xb2, 0x68, 0x2d, 0xfb, 0x6c, 0x3e, 0xe8, 0xa4, 0x0f, 0x9b, 0xc4, - 0xef, 0x46, 0x53, 0xf8, 0x85, 0xb7, 0xe3, 0xb9, 0xb4, 0xe6, 0xd6, 0x3d, - 0xa9, 0x0b, 0x63, 0x6b, 0xe7, 0x91, 0xc7, 0x65, 0xca, 0xd0, 0xe1, 0xbb, - 0x12, 0x38, 0x3f, 0xd9, 0xf8, 0xc9, 0x3b, 0x01, 0x59, 0xe2, 0x4a, 0xbb, - 0x62, 0x77, 0x48, 0xd8, 0x21, 0x74, 0xfb, 0xa4, 0x9b, 0xb2, 0x9b, 0x7c, - 0xa3, 0x66, 0x83, 0x36, 0x4b, 0x84, 0x51, 0xb2, 0x37, 0xbb, 0xf1, 0x4c, - 0x94, 0x22, 0x27, 0x9a, 0x7e, 0xa7, 0x91, 0xcf, 0x36, 0x39, 0xcf, 0x99, - 0x70, 0x2d, 0x5f, 0x79, 0xd7, 0x06, 0xdf, 0x8d, 0xb0, 0x5e, 0xde, 0x3d, - 0xe4, 0x62, 0x6e, 0x69, 0x33, 0x9a, 0x20, 0xdb, 0x30, 0x3a, 0x52, 0x23, - 0x79, 0xca, 0xc5, 0x35, 0xe0, 0x84, 0x86, 0x7e, 0xbf, 0x7e, 0x5a, 0xf4, - 0x99, 0xed, 0x35, 0x7d, 0xc9, 0xd1, 0x23, 0x3b, 0xb1, 0x9b, 0x49, 0x7b, - 0xee, 0xdb, 0xf8, 0x71, 0xe7, 0xad, 0x39, 0x48, 0x63, 0x62, 0x1d, 0x59, - 0x7b, 0x4e, 0x45, 0x6b, 0xa3, 0x8c, 0x6b, 0x9f, 0xab, 0x13, 0x37, 0x69, - 0x12, 0xa7, 0x04, 0xff, 0x55, 0x73, 0x3d, 0x68, 0x9f, 0x5f, 0x42, 0x75, - 0xb1, 0x17, 0x67, 0x46, 0xc9, 0x33, 0x5a, 0x53, 0xe3, 0x5d, 0xce, 0xe0, - 0x7e, 0xc6, 0xee, 0xed, 0x6b, 0xb3, 0xc7, 0xd1, 0xc7, 0x95, 0x74, 0xf3, - 0xda, 0x19, 0xd7, 0x8c, 0x37, 0xfe, 0x6d, 0x73, 0x84, 0x23, 0x52, 0x42, - 0xdf, 0xa8, 0x62, 0xb0, 0x55, 0xe5, 0xe4, 0xf7, 0xc8, 0x81, 0xe0, 0xda, - 0x3d, 0x9e, 0x37, 0x03, 0xe0, 0x1a, 0xd4, 0xb5, 0x37, 0x6e, 0xeb, 0xab, - 0x62, 0xe2, 0x3a, 0xdb, 0x11, 0x12, 0xa1, 0x95, 0xbf, 0x0d, 0x51, 0x27, - 0xde, 0x56, 0x73, 0xa7, 0x6e, 0xb3, 0x26, 0xac, 0x91, 0x41, 0x9b, 0xa1, - 0xa9, 0xa9, 0x51, 0xb0, 0xe4, 0x19, 0x19, 0x0b, 0xd1, 0x7f, 0x65, 0x10, - 0x6b, 0x85, 0x4e, 0xe2, 0xb7, 0xb4, 0x4c, 0xc2, 0xba, 0x01, 0xb0, 0xdc, - 0x63, 0xee, 0x5a, 0x94, 0x4c, 0x5e, 0xac, 0x13, 0x73, 0xea, 0x1a, 0xa7, - 0xaa, 0x78, 0x5a, 0xd6, 0xb9, 0x2e, 0x3f, 0x4f, 0x3f, 0x50, 0x95, 0x4f, - 0x49, 0x09, 0xae, 0xbc, 0x14, 0x87, 0xe3, 0x86, 0xe5, 0x4b, 0x78, 0xd4, - 0x68, 0x3b, 0xaf, 0x8a, 0x52, 0xdb, 0xf4, 0xeb, 0xb8, 0x38, 0x08, 0x6c, - 0x6a, 0xa1, 0x39, 0x8c, 0xe0, 0xab, 0x7d, 0xb8, 0x78, 0xde, 0x63, 0x45, - 0x65, 0xa2, 0xe1, 0x52, 0x76, 0x5c, 0xd1, 0xd7, 0x5e, 0x61, 0xde, 0xca, - 0x82, 0x86, 0xc3, 0x03, 0x0a, 0x54, 0x47, 0x7a, 0x42, 0x96, 0x17, 0xef, - 0x5b, 0x1b, 0x9d, 0x38, 0x81, 0xe6, 0xe1, 0xfe, 0xcc, 0x39, 0xc5, 0xa1, - 0x72, 0xf9, 0x3d, 0xc9, 0x81, 0xaf, 0x69, 0x9f, 0xb7, 0xf4, 0x42, 0xfa, - 0xb1, 0x5f, 0x4f, 0xa2, 0x49, 0xc8, 0xa8, 0x84, 0x4d, 0x44, 0x95, 0x7c, - 0x77, 0x38, 0x75, 0x55, 0xdb, 0x4e, 0x75, 0x62, 0x8e, 0x3b, 0xc1, 0x99, - 0x85, 0xb8, 0x51, 0xa7, 0x60, 0x80, 0x1b, 0x32, 0xcb, 0x08, 0x8e, 0x1b, - 0x9d, 0xfb, 0x96, 0x0c, 0x1e, 0x3a, 0x5c, 0x15, 0x45, 0x5b, 0x89, 0xaf, - 0xf7, 0x90, 0xda, 0xd0, 0x86, 0x26, 0xca, 0xf0, 0x2f, 0x10, 0xd4, 0x16, - 0xa1, 0x96, 0x12, 0x2c, 0x62, 0x34, 0xc7, 0xec, 0x24, 0x9a, 0xf6, 0x0d, - 0xe3, 0xa4, 0x89, 0x4a, 0xaa, 0xc6, 0xed, 0x6b, 0x0d, 0x49, 0x98, 0x0d, - 0x81, 0x8d, 0x9e, 0x62, 0x2b, 0x98, 0xf7, 0x9b, 0x09, 0x03, 0xa9, 0x1a, - 0x6f, 0x96, 0x85, 0x94, 0x5e, 0xb2, 0x00, 0x18, 0x09, 0x80, 0xf3, 0xb7, - 0x28, 0x36, 0x3c, 0xfa, 0xb3, 0xf0, 0xc7, 0x5e, 0xdf, 0xce, 0x30, 0x23, - 0xfb, 0x83, 0x8f, 0x6f, 0xef, 0x72, 0x38, 0xf8, 0x1f, 0x64, 0xfe, 0x48, - 0x21, 0xee, 0x14, 0xf3, 0x33, 0xea, 0xfd, 0x5d, 0xd8, 0x9a, 0x0c, 0xf6, - 0xd4, 0x3c, 0x46, 0xb9, 0x86, 0x7d, 0x38, 0x94, 0xbf, 0x2f, 0x21, 0x4e, - 0xd3, 0x6d, 0x97, 0x16, 0xf8, 0x3d, 0x24, 0x46, 0x47, 0x3c, 0xda, 0x43, - 0x79, 0xf7, 0xe3, 0xf1, 0x3a, 0x4b, 0x8a, 0x57, 0x8e, 0x10, 0xd3, 0xf1, - 0x20, 0x88, 0xc1, 0x7f, 0x12, 0x66, 0xac, 0x9b, 0x5d, 0x70, 0xdc, 0x0c, - 0x22, 0xdd, 0xd5, 0x5a, 0xfe, 0x77, 0x34, 0xa6, 0xcf, 0x46, 0xc0, 0x49, - 0xc5, 0xe7, 0x6e, 0x39, 0xca, 0x1c, 0x61, 0x91, 0xdf, 0x9e, 0x0a, 0xae, - 0x45, 0x0b, 0x11, 0xf0, 0x02, 0x01, 0x9e, 0xb5, 0xe2, 0xb4, 0x50, 0x8b, - 0x07, 0x00, 0xbf, 0xe2, 0x67, 0x17, 0x5f, 0xf8, 0xe2, 0x76, 0x36, 0xc9, - 0x4f, 0x65, 0xfa, 0x6c, 0x1d, 0xc1, 0x68, 0x2d, 0xd0, 0x36, 0x3a, 0x3e, - 0x87, 0x44, 0x3a, 0x0c, 0x10, 0x1c, 0xcf, 0x06, 0x29, 0xe4, 0x7b, 0x1e, - 0x38, 0x7f, 0x75, 0x64, 0xf4, 0xb6, 0xe0, 0x58, 0x76, 0x9a, 0x1c, 0x15, - 0x87, 0xb4, 0x8f, 0x70, 0x5c, 0xf3, 0x7b, 0xf6, 0x4b, 0x95, 0x44, 0x22, - 0x79, 0xb9, 0x3b, 0x68, 0x00, 0x63, 0xfb, 0xcd, 0xcd, 0x61, 0x62, 0x6c, - 0x4b, 0x03, 0x79, 0x16, 0xab, 0xde, 0x1e, 0xf4, 0xab, 0x17, 0x54, 0x70, - 0x29, 0x0b, 0x47, 0x17, 0xeb, 0x32, 0x2a, 0x2f, 0x47, 0x62, 0x2d, 0x64, - 0xb0, 0x02, 0x95, 0x3e, 0x66, 0x20, 0xfd, 0xc3, 0xe4, 0x29, 0x1e, 0xbf, - 0x7b, 0xef, 0xc2, 0xd1, 0x6c, 0x52, 0x62, 0x83, 0xaa, 0x77, 0x51, 0x39, - 0x11, 0x06, 0x4b, 0x3d, 0x87, 0x94, 0x8b, 0x70, 0xa7, 0x6b, 0xe1, 0xea, - 0x89, 0x4f, 0x79, 0xef, 0xb3, 0x37, 0x0c, 0xb5, 0x12, 0x07, 0x61, 0x1a, - 0xd5, 0xcf, 0xcb, 0xd0, 0xb1, 0x77, 0x3e, 0x41, 0xf1, 0xf8, 0x23, 0x9d, - 0x2e, 0xcd, 0x80, 0xa8, 0xfc, 0x23, 0x75, 0x58, 0xa1, 0x7d, 0xc8, 0x93, - 0xf7, 0x03, 0x08, 0x26, 0x3f, 0x89, 0x33, 0x44, 0xf2, 0xc8, 0x77, 0x1a, - 0x4b, 0xfe, 0x6b, 0x85, 0xe6, 0x6e, 0xb5, 0x75, 0x4a, 0xd2, 0x11, 0xdb, - 0x53, 0xcd, 0xfa, 0x5d, 0xa6, 0x2f, 0x93, 0xad, 0x4f, 0x64, 0xde, 0x79, - 0x8d, 0x5a, 0x85, 0xb0, 0x0c, 0x10, 0x01, 0x46, 0xff, 0x50, 0x8f, 0x9e, - 0x75, 0x6b, 0xe4, 0xa0, 0x62, 0x22, 0x97, 0xa1, 0xf7, 0x33, 0x29, 0xbc, - 0x21, 0x7f, 0xf5, 0xfe, 0xe2, 0x74, 0x8a, 0xd7, 0x80, 0x1c, 0x6c, 0xcf, - 0xa5, 0x3e, 0x27, 0x81, 0xa8, 0x45, 0x4a, 0x49, 0x4c, 0x9d, 0xb8, 0xeb, - 0x37, 0x51, 0x01, 0x85, 0xe8, 0x94, 0x72, 0x1b, 0x28, 0x52, 0x8c, 0x81, - 0x61, 0xe3, 0x1f, 0x47, 0x92, 0x3e, 0xda, 0x83, 0x22, 0xad, 0xf1, 0x12, - 0x71, 0x81, 0x78, 0x0c, 0xee, 0x5e, 0x1b, 0xa1, 0x71, 0x00, 0x27, 0xd7, - 0xbe, 0xbd, 0xe3, 0x83, 0x55, 0x9c, 0x0a, 0x38, 0x0c, 0xff, 0xd7, 0x86, - 0x18, 0x0f, 0x05, 0xb6, 0xac, 0xb8, 0xc5, 0xc7, 0xfa, 0x40, 0x3c, 0xa8, - 0xd0, 0xac, 0xd2, 0x7e, 0x62, 0x18, 0x11, 0xe9, 0x84, 0xf8, 0x1e, 0xde, - 0x32, 0x1b, 0xce, 0x26, 0x75, 0x90, 0x6e, 0x00, 0x23, 0x14, 0x83, 0x34, - 0xb9, 0xf2, 0x83, 0x00, 0x2a, 0xf9, 0x4e, 0x98, 0xf5, 0x8f, 0xa1, 0xe3, - 0x83, 0x39, 0xf6, 0x45, 0x6c, 0x37, 0x8d, 0x41, 0x54, 0x54, 0x12, 0x86, - 0xe1, 0xa9, 0x8c, 0xb3, 0x22, 0x9a, 0xd0, 0x0a, 0x7d, 0x2b, 0x17, 0xb6, - 0x55, 0x9a, 0x5b, 0x5a, 0xbc, 0x5f, 0x3a, 0xc3, 0xdc, 0x4c, 0x27, 0xe3, - 0xb9, 0xfa, 0x7c, 0xda, 0xb2, 0x40, 0x34, 0xb5, 0x65, 0x0a, 0xe7, 0x4b, - 0x7d, 0x69, 0x39, 0x96, 0xe1, 0x33, 0x85, 0xa4, 0xaf, 0x11, 0x41, 0xec, - 0xa8, 0xdb, 0x9d, 0xf7, 0x7e, 0xc7, 0x0f, 0x43, 0x38, 0x39, 0xd7, 0x67, - 0xde, 0x94, 0x2c, 0x2e, 0xd1, 0xa5, 0x71, 0xba, 0xcc, 0xe3, 0x71, 0x18, - 0x5a, 0xa1, 0x12, 0x5f, 0x1b, 0xad, 0xff, 0x38, 0xd7, 0x01, 0x81, 0x44, - 0x86, 0xd5, 0xff, 0xbf, 0xb0, 0x63, 0xa1, 0xee, 0xc2, 0x03, 0x12, 0x63, - 0x06, 0x11, 0xc1, 0xe7, 0x50, 0x6c, 0x64, 0xbc, 0xc3, 0x84, 0x78, 0xc4, - 0x98, 0x73, 0x4c, 0x1b, 0x42, 0xa7, 0x15, 0x7c, 0x64, 0xbf, 0x27, 0x2b, - 0x80, 0x61, 0xcb, 0x75, 0xe1, 0x26, 0x56, 0x31, 0x87, 0xda, 0x70, 0x19, - 0x49, 0x18, 0x48, 0xdb, 0x74, 0x5c, 0x19, 0xa8, 0x0e, 0xb3, 0xf0, 0x46, - 0x6f, 0x34, 0xea, 0x1a, 0x5d, 0x62, 0x82, 0x70, 0xc2, 0x09, 0x64, 0x72, - 0x42, 0xbc, 0xb4, 0x10, 0x47, 0xee, 0x45, 0x74, 0xe3, 0x9c, 0xf5, 0x9c, - 0xa2, 0xed, 0x0c, 0xda, 0xb9, 0x6f, 0x14, 0x4d, 0xb2, 0x0b, 0x25, 0x9f, - 0x0d, 0x3c, 0x71, 0x10, 0x87, 0x35, 0x76, 0xc4, 0x91, 0x7c, 0x22, 0xb8, - 0xdc, 0x7a, 0xdb, 0xae, 0x57, 0xaa, 0x7c, 0xb3, 0xc8, 0xaa, 0xb0, 0x23, - 0xe1, 0x11, 0x0f, 0x14, 0x62, 0x90, 0x8c, 0xf9, 0x6c, 0x63, 0x37, 0x6a, - 0x07, 0x0c, 0x61, 0x80, 0xdb, 0xde, 0xdc, 0x8f, 0xcb, 0xca, 0x6b, 0x78, - 0xa2, 0x2d, 0xff, 0xce, 0xfa, 0x9d, 0x55, 0x63, 0x73, 0xd2, 0xdd, 0x4b, - 0xa7, 0xec, 0x36, 0xeb, 0xa4, 0x8e, 0x97, 0x64, 0xa6, 0x8c, 0x7c, 0x7d, - 0xd8, 0xe4, 0x26, 0x9e, 0x88, 0xa0, 0x05, 0x5e, 0x17, 0xd0, 0x77, 0x8b, - 0xa9, 0xf3, 0x20, 0x9d, 0x8c, 0x7c, 0x8f, 0xe3, 0xe8, 0x0b, 0x9b, 0x24, - 0xae, 0x11, 0x8d, 0x68, 0x93, 0xae, 0x3d, 0xb1, 0x06, 0x4b, 0x54, 0xd7, - 0x36, 0x8c, 0x8c, 0x4d, 0xeb, 0xb2, 0x63, 0x34, 0xca, 0x84, 0x5a, 0x7c, - 0x14, 0x72, 0x7b, 0x42, 0x86, 0x8a, 0xb9, 0x4d, 0xe3, 0x02, 0x4b, 0x00, - 0x0e, 0xb9, 0x71, 0xe0, 0x37, 0x05, 0x3b, 0x54, 0x32, 0xd4, 0x11, 0x03, - 0x37, 0x37, 0xf4, 0x5a, 0xa8, 0x21, 0x21, 0x54, 0x4d, 0x71, 0x5d, 0x56, - 0x8d, 0x0d, 0x09, 0xcc, 0xf1, 0x69, 0xec, 0xfd, 0xf5, 0xde, 0x3a, 0x9b, - 0xa5, 0x66, 0x18, 0xd1, 0xa5, 0xab, 0x71, 0x5e, 0x64, 0xba, 0x1b, 0x96, - 0xd9, 0x83, 0xb8, 0xff, 0x72, 0x27, 0x36, 0x22, 0xc3, 0x1d, 0xb4, 0x46, - 0xd5, 0xc8, 0x06, 0x16, 0xf4, 0x51, 0x5c, 0xea, 0x8d, 0x29, 0x43, 0x73, - 0xec, 0xae, 0x02, 0x2b, 0xed, 0x3a, 0x65, 0x02, 0xf9, 0x02, 0xcd, 0x6c, - 0x82, 0xfe, 0xb1, 0x9e, 0x4c, 0xda, 0x9c, 0x86, 0xfa, 0x32, 0x42, 0x87, - 0x64, 0x10, 0xe8, 0xe7, 0xb9, 0xc2, 0x99, 0xf2, 0x76, 0xcb, 0x64, 0x1d, - 0xdd, 0x74, 0x13, 0xc9, 0x19, 0xfa, 0x3d, 0xd4, 0x37, 0x01, 0x53, 0x4c, - 0xca, 0x2e, 0x79, 0xbb, 0x31, 0xef, 0xc1, 0xd9, 0x2d, 0xe2, 0xa7, 0x7b, - 0x35, 0x98, 0xe2, 0x78, 0xf7, 0x47, 0x7c, 0xc6, 0x62, 0x8e, 0x76, 0x5a, - 0xf8, 0x8a, 0xbf, 0x6d, 0x41, 0xef, 0x83, 0x3c, 0x03, 0x3c, 0x34, 0xe8, - 0x93, 0xa1, 0x6d, 0x53, 0x48, 0x7a, 0xd3, 0xcb, 0x97, 0x1e, 0x90, 0xea, - 0x31, 0xa6, 0xdb, 0x83, 0x0b, 0xdf, 0x5f, 0x61, 0xc2, 0xd8, 0x38, 0xa1, - 0x50, 0x74, 0x8c, 0x75, 0x7c, 0xab, 0x83, 0xc5, 0xf9, 0x0d, 0x3f, 0x0f, - 0x63, 0x5c, 0x5a, 0x86, 0xfe, 0x46, 0x79, 0x34, 0x75, 0xc8, 0x6d, 0xf3, - 0x44, 0xbd, 0x31, 0xf7, 0xc7, 0x36, 0x3f, 0xa2, 0x93, 0xcc, 0xf9, 0x2e, - 0x7a, 0xa5, 0x31, 0x29, 0x7e, 0xc2, 0xe8, 0xb8, 0xa1, 0xb0, 0xc7, 0x67, - 0x36, 0xb3, 0x0a, 0x6d, 0xae, 0xf4, 0x4d, 0x64, 0xb8, 0x63, 0x52, 0x19, - 0x7f, 0xa9, 0x6b, 0x99, 0xfa, 0xd0, 0x70, 0xf9, 0x02, 0x2e, 0x04, 0xd9, - 0x5b, 0xaa, 0x32, 0x59, 0x77, 0xf0, 0x1f, 0x45, 0x52, 0x8d, 0xbd, 0xef, - 0xb3, 0x3b, 0x11, 0xee, 0xb5, 0x37, 0xf5, 0x5f, 0x31, 0x5e, 0x55, 0xc2, - 0xeb, 0x42, 0xbe, 0x99, 0x21, 0x37, 0xc1, 0x28, 0x04, 0xeb, 0x9e, 0x19, - 0xd5, 0x1e, 0xda, 0x1c, 0xbe, 0x61, 0xea, 0x33, 0x6b, 0x43, 0x52, 0x94, - 0x91, 0xa0, 0xaa, 0xfa, 0x0c, 0x52, 0x03, 0x4c, 0xc6, 0x7b, 0x47, 0x45, - 0x4b, 0xf7, 0x7c, 0x28, 0x1d, 0x1e, 0x82, 0xd8, 0x66, 0x01, 0xb3, 0xfe, - 0xe8, 0x24, 0x57, 0x14, 0x85, 0x4f, 0xda, 0xf8, 0xa2, 0x36, 0x67, 0xd3, - 0x79, 0xf7, 0x0f, 0xf9, 0x16, 0xb2, 0xf3, 0x33, 0x3d, 0x74, 0x1f, 0xb9, - 0x25, 0x9f, 0xcd, 0xeb, 0x96, 0x39, 0xb9, 0x64, 0xa5, 0x06, 0xf0, 0x9f, - 0x13, 0x74, 0x2b, 0x22, 0x57, 0x47, 0x8c, 0x97, 0xad, 0x10, 0x18, 0x23, - 0xd7, 0xa0, 0xa2, 0xf3, 0x94, 0x54, 0x0a, 0x71, 0xf3, 0x6e, 0x40, 0xfa, - 0x3a, 0x6a, 0xa1, 0xae, 0xcb, 0x23, 0x55, 0x8e, 0xe3, 0xdd, 0x77, 0x0a, - 0xaf, 0x74, 0xc6, 0x5e, 0x3d, 0xf8, 0x54, 0x07, 0xa1, 0x5d, 0x99, 0xc8, - 0x05, 0x0f, 0xd7, 0xd7, 0xa4, 0xe0, 0x4f, 0xb3, 0xd3, 0x65, 0xff, 0xc6, - 0xd5, 0x95, 0x04, 0x64, 0x76, 0x24, 0x6f, 0xc5, 0x69, 0x10, 0x82, 0x9f, - 0x19, 0xfe, 0x41, 0x2f, 0x98, 0xd2, 0x64, 0xff, 0x08, 0xa7, 0x9b, 0xf7, - 0x6c, 0xa9, 0xd1, 0x44, 0x2c, 0x27, 0x64, 0x33, 0x55, 0xc8, 0x07, 0x25, - 0x1b, 0x3b, 0x55, 0x4a, 0x2f, 0x73, 0x0d, 0x7b, 0x44, 0xee, 0x22, 0x63, - 0xf8, 0x29, 0x4d, 0x44, 0x6a, 0x8f, 0xca, 0x43, 0xaa, 0x5c, 0x2c, 0xc0, - 0x19, 0x47, 0xc2, 0x6f, 0xaf, 0xf6, 0xf5, 0xec, 0x79, 0xb3, 0x83, 0x78, - 0xfe, 0x83, 0x60, 0x5b, 0xc6, 0x29, 0x9f, 0x31, 0x3a, 0xd9, 0xf4, 0x22, - 0xea, 0xa8, 0x6c, 0x94, 0x27, 0x74, 0x92, 0xe5, 0x31, 0x94, 0x3b, 0xfa, - 0x69, 0x27, 0x54, 0xdb, 0x38, 0x42, 0x71, 0xbf, 0x39, 0xfa, 0x1f, 0xfb, - 0x68, 0xd4, 0x53, 0xc9, 0x7f, 0x31, 0x76, 0x5d, 0x2c, 0x0a, 0x89, 0xfa, - 0x25, 0x49, 0xa7, 0xe0, 0xdd, 0x75, 0xdf, 0xd9, 0x5a, 0x49, 0x84, 0x98, - 0x14, 0xa4, 0x06, 0x65, 0x0c, 0x46, 0x31, 0x1a, 0x26, 0x68, 0x8d, 0x31, - 0x52, 0xac, 0x53, 0x0b, 0x96, 0xf4, 0xf2, 0x2a, 0xa7, 0x7e, 0x55, 0x0c, - 0x71, 0xa7, 0x40, 0x8b, 0x6a, 0xd1, 0x3f, 0xfe, 0xd2, 0x40, 0x1a, 0x5e, - 0x74, 0x10, 0xe3, 0x50, 0x71, 0x17, 0x97, 0x0a, 0xba, 0xe9, 0xeb, 0xa6, - 0x97, 0x83, 0xd1, 0xe7, 0xd4, 0xad, 0x08, 0x99, 0x10, 0xf7, 0xa3, 0x04, - 0x64, 0x64, 0x71, 0x93, 0xd9, 0xfd, 0x6c, 0xc4, 0x29, 0x25, 0x19, 0x2e, - 0x6a, 0x40, 0x0a, 0x6c, 0x95, 0x12, 0x8b, 0x61, 0xee, 0x07, 0xae, 0xe9, - 0x55, 0x4b, 0x7a, 0x84, 0xd6, 0x53, 0x4b, 0xd9, 0xec, 0x5a, 0xc9, 0xd0, - 0xf4, 0xa5, 0x8b, 0x2b, 0x22, 0x2f, 0x25, 0x74, 0xec, 0x40, 0xb6, 0x4b, - 0x02, 0xba, 0xaf, 0x44, 0xfa, 0xdf, 0xb7, 0x2d, 0x86, 0xf9, 0xe9, 0xc2, - 0x62, 0x72, 0xdb, 0x44, 0xdc, 0x58, 0xbd, 0x95, 0xfd, 0x7f, 0xf3, 0xb9, - 0x9f, 0x93, 0x33, 0x4f, 0x2e, 0x81, 0x17, 0xb3, 0x23, 0xc3, 0x27, 0xf9, - 0x69, 0x54, 0xb3, 0x71, 0xd4, 0x70, 0x6b, 0x50, 0x24, 0x85, 0x98, 0x2f, - 0x10, 0x39, 0xdf, 0x38, 0x82, 0x6c, 0x85, 0xf4, 0xd7, 0x55, 0x1f, 0x29, - 0x8f, 0x09, 0x22, 0x22, 0x0b, 0x36, 0x93, 0xb0, 0x21, 0xd3, 0x63, 0x77, - 0x6b, 0x1d, 0x52, 0x8a, 0x65, 0x93, 0x1c, 0x09, 0xde, 0x0a, 0x8f, 0x61, - 0x62, 0x95, 0x2a, 0x50, 0x5b, 0xd0, 0x86, 0xd1, 0x82, 0xf6, 0x29, 0xce, - 0xed, 0x20, 0xfd, 0x3e, 0xef, 0x59, 0x0e, 0xfd, 0xe7, 0x72, 0x8b, 0x0d, - 0x78, 0xed, 0xce, 0x39, 0xd6, 0x20, 0x59, 0xc3, 0xd1, 0xb0, 0xc1, 0xa3, - 0x93, 0xfd, 0xb2, 0xf7, 0x04, 0x0f, 0xea, 0x04, 0x64, 0x20, 0xef, 0x96, - 0x13, 0x3f, 0x81, 0x97, 0x9a, 0xa6, 0x1f, 0x97, 0xf8, 0x58, 0xf1, 0x90, - 0x32, 0xde, 0x47, 0x34, 0xf3, 0xe1, 0x28, 0x85, 0xb8, 0xc9, 0x13, 0x84, - 0x02, 0x16, 0xaf, 0x18, 0xef, 0xb0, 0xa0, 0x1c, 0xce, 0xf5, 0xfd, 0xbf, - 0xb4, 0x9a, 0x85, 0xeb, 0xd7, 0x07, 0xac, 0x07, 0xd7, 0x85, 0x60, 0x4a, - 0x65, 0x00, 0xf0, 0x25, 0xb2, 0x72, 0xe3, 0x9c, 0x4b, 0x00, 0xc4, 0x7f, - 0x92, 0x2e, 0x7d, 0x2a, 0x56, 0xd5, 0xef, 0x22, 0xca, 0x0f, 0xae, 0xe2, - 0x61, 0xf4, 0xe8, 0xae, 0xdb, 0xfe, 0x33, 0xa1, 0x65, 0x44, 0x08, 0x03, - 0xe3, 0xc2, 0xcc, 0xc3, 0x24, 0xf2, 0xe0, 0x8f, 0xaf, 0x97, 0x47, 0x78, - 0x30, 0xc9, 0xa3, 0x49, 0x20, 0xa9, 0x2d, 0xb3, 0x51, 0x14, 0x46, 0xc4, - 0xa9, 0x3d, 0x74, 0x26, 0x25, 0xdd, 0xbd, 0x84, 0xc4, 0x05, 0xa1, 0xba, - 0xfc, 0x8e, 0xa2, 0xcd, 0x2d, 0xe4, 0x50, 0x4c, 0xf2, 0xe3, 0xa8, 0x94, - 0x6d, 0xd1, 0x68, 0x93, 0x74, 0x20, 0xac, 0x9c, 0x23, 0xf7, 0x92, 0x4b, - 0xff, 0xd2, 0xb4, 0x99, 0x2f, 0x80, 0x02, 0x61, 0xb4, 0xa7, 0x28, 0x8a, - 0x58, 0x2e, 0x94, 0x0a, 0x07, 0x6b, 0x85, 0x13, 0xab, 0xd1, 0xdc, 0xe9, - 0x3c, 0xf2, 0xad, 0x2b, 0xf3, 0x6d, 0xd7, 0x80, 0x33, 0x75, 0xe6, 0x26, - 0xdc, 0xf7, 0x82, 0x98, 0xce, 0x3d, 0x47, 0xda, 0x9b, 0x76, 0xec, 0x46, - 0x62, 0x4b, 0x6b, 0xc0, 0xad, 0x11, 0x36, 0x77, 0x8e, 0x8b, 0x60, 0xa5, - 0x74, 0x90, 0xc1, 0x59, 0x1a, 0xf6, 0xe9, 0xbd, 0x81, 0x87, 0x5c, 0xd6, - 0xc9, 0xb2, 0xe1, 0x77, 0x78, 0x0e, 0xf2, 0x5c, 0x1f, 0x53, 0xe1, 0xfd, - 0x9c, 0xe8, 0xc8, 0xb6, 0x41, 0xfc, 0x24, 0xb1, 0x06, 0x63, 0x88, 0x6f, - 0xb7, 0x0f, 0xa4, 0xb7, 0xb5, 0x98, 0xd6, 0xb6, 0x5f, 0x68, 0x9c, 0x83, - 0x42, 0x95, 0xad, 0xd8, 0xb1, 0xd2, 0x61, 0xaa, 0xf2, 0x99, 0x30, 0x40, - 0xe3, 0x92, 0xd0, 0x99, 0x18, 0x87, 0xd4, 0x7a, 0xca, 0x9d, 0x36, 0xf2, - 0x16, 0x6d, 0xb4, 0x8a, 0x06, 0xd7, 0xd6, 0x04, 0xed, 0x82, 0x5a, 0x0c, - 0x64, 0x9a, 0xa9, 0xd0, 0xa6, 0x14, 0x6f, 0xc8, 0x41, 0x64, 0x9c, 0x40, - 0x8e, 0x30, 0xca, 0x85, 0x1a, 0x20, 0xed, 0x61, 0xeb, 0xd1, 0x7f, 0x6d, - 0x56, 0xa3, 0x52, 0x2a, 0x03, 0x77, 0xfe, 0xfd, 0x8f, 0x48, 0xf3, 0x5f, - 0x30, 0x8b, 0x40, 0x36, 0xee, 0x6e, 0x08, 0xb9, 0xb8, 0x81, 0x62, 0x51, - 0x13, 0x6b, 0xbf, 0x07, 0x4d, 0x01, 0xb0, 0x8b, 0x61, 0x30, 0x96, 0x94, - 0x44, 0x81, 0x35, 0x92, 0x1b, 0x68, 0xa4, 0xcf, 0x96, 0x5f, 0xc9, 0x18, - 0x34, 0x04, 0x05, 0x87, 0x82, 0x8e, 0x11, 0x80, 0x6c, 0xaa, 0x77, 0x1e, - 0xc0, 0x60, 0x50, 0xef, 0xd0, 0x8b, 0xf6, 0x5a, 0x84, 0xee, 0x5d, 0xbd, - 0x89, 0xf7, 0x70, 0xa9, 0x03, 0x28, 0x04, 0x29, 0x24, 0x3d, 0x74, 0x45, - 0x80, 0xe0, 0xa9, 0xb3, 0xdb, 0x3f, 0xa2, 0x22, 0xbe, 0xd9, 0x48, 0x56, - 0x88, 0xe2, 0x76, 0x17, 0xa1, 0xf2, 0x8b, 0x33, 0x6a, 0x45, 0x85, 0x10, - 0x1f, 0xdf, 0xb0, 0xe4, 0xed, 0xaa, 0xc2, 0x95, 0x07, 0x64, 0x00, 0xfe, - 0xeb, 0x99, 0xae, 0x95, 0x0e, 0x42, 0x39, 0x07, 0x5f, 0x70, 0x84, 0x5c, - 0x29, 0x0a, 0x32, 0xf3, 0x56, 0xed, 0xa8, 0x46, 0xa2, 0x43, 0xd6, 0x26, - 0x9b, 0x4b, 0x28, 0xc9, 0xf0, 0xcc, 0xe5, 0x01, 0x31, 0x4d, 0x73, 0xc4, - 0x2e, 0xfc, 0x27, 0x22, 0xfc, 0x78, 0xed, 0x70, 0x16, 0xbe, 0xe8, 0x5b, - 0xe1, 0x32, 0xb8, 0xba, 0x7f, 0x65, 0x91, 0xdf, 0x66, 0xc1, 0x76, 0x1f, - 0xe5, 0xff, 0x8c, 0x11, 0x8f, 0x61, 0xf1, 0xdb, 0xa2, 0xad, 0xc5, 0xa1, - 0x62, 0x72, 0x94, 0x38, 0x29, 0x1d, 0xc9, 0xd7, 0x9d, 0x1b, 0x3c, 0x01, - 0xb8, 0x5b, 0x1a, 0x29, 0x46, 0xab, 0xe9, 0x5a, 0x47, 0x40, 0xa4, 0xcf, - 0xef, 0x83, 0xdf, 0x03, 0xd0, 0xb5, 0x07, 0x92, 0xda, 0xc1, 0xf1, 0xb1, - 0x66, 0x99, 0x3f, 0xd9, 0x31, 0x55, 0x7e, 0x63, 0x7e, 0x82, 0x9d, 0xfa, - 0x5f, 0x38, 0xa2, 0xf7, 0x64, 0x33, 0xe7, 0xc2, 0xd9, 0x97, 0xb1, 0x2f, - 0x27, 0x90, 0xb3, 0x8b, 0x0f, 0x0e, 0xb1, 0xa0, 0x4b, 0xd7, 0x36, 0x25, - 0x80, 0x7d, 0x59, 0x98, 0x59, 0xa8, 0x16, 0x88, 0x1b, 0xe9, 0x0c, 0x3e, - 0x1f, 0x8d, 0x70, 0x8b, 0xd5, 0x2e, 0x48, 0x98, 0xa9, 0x86, 0x0f, 0xdf, - 0xa9, 0xee, 0x37, 0x4d, 0x84, 0xe5, 0xac, 0x46, 0xc8, 0xcf, 0xea, 0xc0, - 0xba, 0x80, 0x68, 0x82, 0xae, 0xbd, 0xb4, 0x69, 0x88, 0xe6, 0xfc, 0x40, - 0x26, 0x32, 0x15, 0x86, 0xd8, 0x45, 0xa2, 0xac, 0xdc, 0x68, 0xd7, 0xcf, - 0x1f, 0x8d, 0x53, 0xea, 0x7e, 0x9d, 0x64, 0x49, 0x92, 0x8b, 0x86, 0x84, - 0xa0, 0x07, 0xfc, 0x53, 0x6b, 0x75, 0x94, 0x7b, 0x3f, 0x00, 0x1c, 0x5a, - 0x12, 0x3d, 0x15, 0xae, 0x58, 0x43, 0xf7, 0x2e, 0xc7, 0xca, 0x05, 0x6a, - 0x4f, 0x37, 0xfd, 0x3c, 0xfb, 0x2f, 0xe3, 0xc2, 0x82, 0xc7, 0x46, 0x8a, - 0xc0, 0xb2, 0xa8, 0x79, 0x8f, 0xab, 0x13, 0x49, 0x1f, 0xd2, 0xed, 0xa4, - 0xef, 0xda, 0xf0, 0xd5, 0xc3, 0x94, 0x75, 0x9a, 0x46, 0x86, 0x90, 0x7a, - 0x10, 0xd0, 0xd8, 0xe7, 0x6b, 0x21, 0x49, 0x6e, 0xbe, 0x60, 0x98, 0x92, - 0x6f, 0x85, 0x08, 0x12, 0xa1, 0xc8, 0xa6, 0xf8, 0x9f, 0x14, 0x09, 0x0d, - 0x0d, 0x81, 0x76, 0x77, 0x79, 0x57, 0x66, 0x6c, 0x53, 0x21, 0xb6, 0x23, - 0x41, 0xe5, 0x9b, 0xba, 0x2a, 0xec, 0x74, 0x20, 0x24, 0x7d, 0x0d, 0xb2, - 0xd2, 0xd0, 0x82, 0x03, 0x29, 0xe2, 0x68, 0x03, 0x08, 0x19, 0xf0, 0x63, - 0x25, 0x6f, 0xce, 0x28, 0xea, 0x80, 0xd1, 0xf0, 0x88, 0xe9, 0xef, 0xf0, - 0xac, 0xec, 0x19, 0x2c, 0x99, 0xf2, 0x5d, 0x1b, 0xfc, 0x05, 0xdd, 0x92, - 0xc2, 0x9b, 0x6f, 0xcb, 0x7f, 0xf2, 0x61, 0x06, 0x17, 0xfc, 0x2d, 0x09, - 0x15, 0xce, 0x6c, 0x82, 0xc1, 0x95, 0x36, 0x8a, 0x1b, 0x33, 0x7d, 0xf0, - 0x61, 0xdf, 0x27, 0xde, 0x2f, 0x00, 0xda, 0x69, 0x70, 0xf0, 0xca, 0x31, - 0x7d, 0x39, 0xaf, 0xad, 0x60, 0x61, 0x02, 0x05, 0xb9, 0x04, 0x9e, 0x08, - 0x15, 0xa1, 0xa8, 0x57, 0x5f, 0x74, 0x97, 0x8b, 0xed, 0x64, 0x8b, 0xb5, - 0x0f, 0x5c, 0x19, 0xfe, 0x3c, 0x29, 0x6c, 0x6c, 0xeb, 0xb8, 0xbe, 0x3e, - 0xf5, 0xf2, 0x5c, 0x77, 0x3d, 0x1c, 0xc2, 0xd9, 0xe8, 0xbc, 0xf9, 0x0e, - 0x55, 0x5e, 0x45, 0xe8, 0xe3, 0x15, 0x42, 0xc0, 0x64, 0xa8, 0x70, 0xeb, - 0x4b, 0x0e, 0x71, 0x80, 0x92, 0x42, 0x89, 0x71, 0xd2, 0x0f, 0x6e, 0x45, - 0x39, 0x42, 0x30, 0x94, 0xc9, 0x5a, 0x1e, 0xed, 0x2a, 0x70, 0x7f, 0xca, - 0x80, 0x3c, 0x1c, 0x11, 0x0c, 0x52, 0xa0, 0x7e, 0x18, 0x88, 0x47, 0x54, - 0x30, 0x2e, 0x25, 0xab, 0x9c, 0xeb, 0x38, 0x42, 0x3a, 0xf8, 0x1c, 0x28, - 0x65, 0xc1, 0x61, 0x49, 0x5e, 0xe4, 0x69, 0x27, 0x85, 0x21, 0x8a, 0x06, - 0xbd, 0x8b, 0xbc, 0x6b, 0xde, 0x41, 0x35, 0xdd, 0xe3, 0xaa, 0xe8, 0xf6, - 0x3c, 0x78, 0xf6, 0x6c, 0xd1, 0x44, 0xb1, 0x68, 0x23, 0xa8, 0xbc, 0x43, - 0x0e, 0xdf, 0xfa, 0x1b, 0x18, 0x3b, 0x8f, 0x1a, 0x7b, 0x01, 0xbd, 0x27, - 0xf4, 0xd9, 0xb2, 0x6c, 0xbf, 0xfd, 0xd1, 0x44, 0x59, 0x74, 0x8e, 0x4d, - 0x26, 0xc7, 0x47, 0x70, 0x25, 0x3e, 0xed, 0x72, 0x37, 0x1c, 0x58, 0x3c, - 0xb8, 0x66, 0x4d, 0xbb, 0xa5, 0x6c, 0x55, 0x8e, 0x94, 0xb2, 0xbb, 0xb0, - 0x35, 0xe1, 0xaf, 0x8e, 0x25, 0xd3, 0x79, 0xee, 0x72, 0xbf, 0x97, 0x62, - 0x77, 0x2a, 0xce, 0x3a, 0x17, 0x56, 0x15, 0x52, 0xe2, 0xf3, 0x64, 0xf3, - 0x1c, 0x61, 0x94, 0xc3, 0xd0, 0x8c, 0x26, 0x5a, 0x56, 0x58, 0xc5, 0x1b, - 0xb1, 0x18, 0x55, 0xb1, 0x48, 0x67, 0x4f, 0x47, 0x2a, 0x39, 0x8a, 0x8c, - 0xb0, 0x26, 0x2e, 0x5d, 0xa5, 0xfd, 0xc1, 0x3b, 0x2e, 0x2f, 0xae, 0x88, - 0xe4, 0x03, 0xa2, 0xb6, 0x0d, 0xe0, 0x32, 0x6b, 0x25, 0x88, 0x2c, 0x71, - 0x66, 0xd1, 0xde, 0xe7, 0x89, 0x46, 0xa2, 0xeb, 0x90, 0xc9, 0xae, 0x1d, - 0x3e, 0x51, 0xdc, 0x2c, 0xdf, 0x5c, 0x6d, 0x45, 0x7f, 0x0e, 0x9a, 0xc3, - 0x92, 0x48, 0x2f, 0x2c, 0xde, 0xd8, 0x84, 0x46, 0x2f, 0xb6, 0x0d, 0x75, - 0x81, 0x83, 0x13, 0xce, 0x53, 0x71, 0x54, 0x3f, 0xd5, 0x99, 0xa9, 0x6c, - 0x81, 0x63, 0xfd, 0x94, 0xff, 0x91, 0x32, 0x2f, 0xe9, 0x78, 0x50, 0xb4, - 0x46, 0xb2, 0xc8, 0x01, 0xe8, 0x14, 0x01, 0xf0, 0x0d, 0x5f, 0x7e, 0x1a, - 0xb0, 0x25, 0x7b, 0xfa, 0xd6, 0xf9, 0x00, 0xd0, 0xe5, 0x82, 0xfb, 0x9c, - 0xdc, 0xb5, 0xa6, 0x1d, 0xb5, 0xa2, 0x84, 0x8a, 0x4d, 0x7d, 0x72, 0x4b, - 0xe7, 0x61, 0x98, 0xd7, 0xdb, 0xd2, 0x42, 0xfd, 0xd6, 0x57, 0x4d, 0xb7, - 0x4a, 0xa5, 0x96, 0x70, 0xae, 0xe3, 0x73, 0x29, 0x62, 0x13, 0x44, 0xfa, - 0x3b, 0x84, 0x91, 0xd0, 0x21, 0x71, 0xc7, 0xd6, 0x87, 0xb9, 0xc4, 0xb7, - 0x25, 0x85, 0x48, 0xb1, 0xca, 0x76, 0x69, 0x81, 0xb0, 0x9a, 0x39, 0xfe, - 0x07, 0xd9, 0xed, 0x92, 0x88, 0x12, 0xeb, 0xa3, 0x26, 0x15, 0xfb, 0x7b, - 0x92, 0x31, 0xd8, 0x99, 0xdd, 0x31, 0x3a, 0x88, 0x63, 0x1a, 0xb0, 0xdc, - 0x49, 0xcf, 0x83, 0xa1, 0x5a, 0x08, 0xd7, 0x0f, 0x53, 0x79, 0xa1, 0xc4, - 0xa8, 0x98, 0x6a, 0xf5, 0xcb, 0xc7, 0xd8, 0x6d, 0xc4, 0xf0, 0xce, 0xac, - 0x5d, 0x79, 0x7e, 0xac, 0x75, 0x2a, 0x61, 0x4f, 0x34, 0x63, 0x29, 0x1a, - 0x64, 0x2b, 0x68, 0xea, 0xcb, 0xd9, 0xc5, 0x85, 0x6f, 0xdf, 0x50, 0xe2, - 0x25, 0x7d, 0x02, 0xbf, 0xd6, 0xe5, 0x40, 0xff, 0x6a, 0x05, 0x79, 0x12, - 0xcc, 0xb5, 0x12, 0xac, 0x0b, 0x5a, 0x23, 0x50, 0x16, 0xaf, 0xc5, 0x60, - 0x35, 0x16, 0x6e, 0x63, 0xe9, 0x47, 0x68, 0x7b, 0x4b, 0xea, 0x89, 0x0f, - 0x89, 0x21, 0x3f, 0xc5, 0x4d, 0xaa, 0x28, 0xe3, 0xdd, 0x7b, 0xad, 0xcd, - 0xbd, 0xb0, 0xa9, 0x38, 0xab, 0xde, 0xce, 0x09, 0xb6, 0xce, 0x47, 0x09, - 0xde, 0x80, 0xe9, 0xda, 0x43, 0x1b, 0xa0, 0x34, 0xf1, 0x05, 0x9a, 0xe9, - 0xb8, 0xdf, 0x05, 0x2e, 0xd6, 0xa7, 0xf6, 0xb5, 0xfb, 0x51, 0x48, 0x51, - 0x31, 0x6b, 0x0b, 0x24, 0x2b, 0x64, 0x2e, 0xd1, 0xec, 0xee, 0x61, 0x49, - 0x10, 0xcc, 0x15, 0x74, 0xe9, 0xd5, 0xd1, 0xbb, 0x96, 0x6f, 0x25, 0xa3, - 0xfb, 0xe7, 0x23, 0xa1, 0x8c, 0x3e, 0xa4, 0xae, 0x96, 0xee, 0x23, 0x60, - 0xe4, 0x16, 0x55, 0x89, 0x00, 0x96, 0xee, 0x62, 0xe0, 0x27, 0xaa, 0x45, - 0xc1, 0x62, 0x85, 0x1d, 0xc3, 0x40, 0x20, 0x82, 0x39, 0xc9, 0xcf, 0x69, - 0x99, 0x46, 0x1f, 0x53, 0xa4, 0x45, 0xe6, 0x27, 0x06, 0xe9, 0x87, 0x5e, - 0xce, 0xe6, 0x38, 0x2d, 0x54, 0x08, 0x1f, 0xe1, 0xe9, 0x3f, 0xef, 0x18, - 0xff, 0xa8, 0x71, 0x2e, 0xc1, 0xa4, 0xf8, 0x69, 0xbc, 0xee, 0x6b, 0xc7, - 0xe2, 0x12, 0x26, 0xc3, 0x6f, 0x1d, 0x3b, 0x85, 0x0a, 0x2d, 0x14, 0x3d, - 0x43, 0xb0, 0xca, 0x02, 0x55, 0xa5, 0x90, 0xca, 0xf6, 0x48, 0xcc, 0xe2, - 0x46, 0x81, 0xa5, 0x12, 0x08, 0x9f, 0xc0, 0x38, 0x58, 0x95, 0x99, 0x5a, - 0xab, 0xb8, 0x54, 0xa4, 0x99, 0x1b, 0x68, 0x63, 0xef, 0x2d, 0x26, 0x27, - 0x18, 0x92, 0xf9, 0x4e, 0x67, 0x7f, 0xa9, 0x22, 0xfe, 0xe8, 0x7b, 0x79, - 0x8b, 0xd7, 0x34, 0x84, 0xb9, 0x1c, 0x73, 0xf6, 0xab, 0x16, 0x6e, 0x3a, - 0xd4, 0x70, 0x40, 0x86, 0xdc, 0x49, 0x9e, 0xed, 0xc5, 0x62, 0x7f, 0x07, - 0xe7, 0xca, 0x6a, 0x0a, 0xf2, 0x75, 0x70, 0x1e, 0x46, 0x4a, 0xc7, 0xea, - 0x1c, 0x0e, 0x25, 0x94, 0x1d, 0xc5, 0x38, 0xad, 0x4b, 0x61, 0x28, 0xec, - 0x22, 0xe7, 0x43, 0x26, 0x89, 0xaf, 0x96, 0x7c, 0x7e, 0xe4, 0x7d, 0x35, - 0x61, 0xf0, 0x6b, 0x4c, 0x2f, 0xd0, 0x96, 0x68, 0xc2, 0xcd, 0x7a, 0x26, - 0xb0, 0xd7, 0x60, 0x16, 0xa5, 0x83, 0xb0, 0x0c, 0xa4, 0xd9, 0x5c, 0x65, - 0x78, 0xe9, 0x5f, 0x97, 0xdc, 0x6a, 0x0a, 0xd6, 0x2c, 0xfd, 0x56, 0x2b, - 0xf1, 0x17, 0xac, 0x95, 0x48, 0x83, 0x50, 0x57, 0xbd, 0x19, 0xaa, 0xb1, - 0x4b, 0xe0, 0xf4, 0x87, 0x34, 0xee, 0x36, 0x16, 0xbb, 0x37, 0x36, 0xb7, - 0xd1, 0xc1, 0xd1, 0xf0, 0x40, 0xf9, 0x1c, 0x8f, 0x85, 0x1b, 0xf3, 0x30, - 0x16, 0x57, 0x8a, 0x15, 0xd4, 0x5d, 0xe1, 0x96, 0xbf, 0xb8, 0x66, 0x44, - 0xc5, 0xec, 0x32, 0xe2, 0x63, 0x3f, 0xb7, 0xc0, 0x14, 0x4e, 0xc7, 0xc8, - 0xfc, 0x80, 0x05, 0xd9, 0x73, 0x49, 0x1f, 0x79, 0xc7, 0xb6, 0x4b, 0x95, - 0x94, 0xb4, 0xb3, 0xf4, 0x32, 0x01, 0xe8, 0x94, 0x7a, 0x52, 0xde, 0x1c, - 0x41, 0xc9, 0xc1, 0x1a, 0xb0, 0x6e, 0x08, 0x08, 0xfa, 0xe4, 0x51, 0x9c, - 0xd9, 0xf9, 0xe7, 0xed, 0xda, 0x41, 0xb4, 0x3f, 0x58, 0xc5, 0x7f, 0x61, - 0x07, 0xf2, 0xb1, 0x8a, 0x65, 0xe1, 0xc7, 0x25, 0xf7, 0x47, 0x29, 0x64, - 0x43, 0xad, 0x23, 0x62, 0x30, 0xc6, 0x62, 0xe4, 0x31, 0x29, 0x55, 0x4a, - 0x6d, 0x7f, 0xf9, 0x69, 0xe2, 0x5a, 0x0e, 0x2a, 0xbf, 0x06, 0xaa, 0xa3, - 0x73, 0xce, 0x81, 0x2e, 0x79, 0x3c, 0x9c, 0x65, 0xf7, 0xcc, 0xa6, 0x06, - 0xd2, 0xdc, 0xe0, 0x55, 0x08, 0x56, 0xd2, 0x83, 0x72, 0x1e, 0x79, 0x3e, - 0x59, 0xbc, 0xb5, 0x4c, 0x90, 0x3b, 0x3d, 0xf1, 0x61, 0xa4, 0x43, 0x1b, - 0x2c, 0xa2, 0xbe, 0xa3, 0x6b, 0x96, 0x8c, 0x18, 0x3e, 0x5c, 0xa7, 0xec, - 0x3b, 0xfe, 0xd2, 0xdd, 0xeb, 0xa0, 0x5e, 0x07, 0x01, 0x66, 0x83, 0x2a, - 0x27, 0x52, 0x03, 0x96, 0xaf, 0xbc, 0xc3, 0xfd, 0x02, 0x21, 0x73, 0xbf, - 0x1e, 0x30, 0x16, 0x06, 0x52, 0xbc, 0xf9, 0x57, 0xce, 0x5c, 0x68, 0x72, - 0x27, 0x25, 0x42, 0xa5, 0x77, 0xa9, 0xa5, 0xd4, 0x07, 0x89, 0x53, 0x61, - 0x16, 0xbe, 0x5f, 0xcd, 0x12, 0xea, 0xbf, 0x6f, 0xbb, 0xa3, 0x25, 0x62, - 0x63, 0x0c, 0xb9, 0x40, 0xb6, 0x16, 0x9f, 0x67, 0x97, 0xd1, 0xa0, 0x36, - 0xc1, 0x8d, 0x7f, 0x9e, 0xe4, 0x28, 0xf7, 0xdf, 0xeb, 0x8c, 0x25, 0x69, - 0x80, 0x0b, 0x42, 0x4a, 0x67, 0xf2, 0xa5, 0x28, 0x14, 0x5e, 0x52, 0x0b, - 0x4b, 0x32, 0x59, 0x99, 0x45, 0xa7, 0xef, 0x2d, 0x24, 0x03, 0xf7, 0xc2, - 0x3f, 0xd7, 0xaf, 0xc7, 0x32, 0xc5, 0x10, 0x98, 0x66, 0xa9, 0xed, 0x1e, - 0x8f, 0xa7, 0x45, 0x83, 0x5e, 0xe5, 0x1d, 0x90, 0x3b, 0x2e, 0x85, 0x0e, - 0x09, 0x63, 0x91, 0x4c, 0x2c, 0x0a, 0x89, 0x1b, 0x42, 0x74, 0x8c, 0x85, - 0x6b, 0x3f, 0x02, 0xb8, 0x38, 0x89, 0x13, 0xcc, 0x7f, 0x5d, 0x8b, 0xf7, - 0x1c, 0x7f, 0x88, 0xfe, 0xac, 0x5c, 0x78, 0xaf, 0x5b, 0xe6, 0x09, 0x7a, - 0xf1, 0x9b, 0xda, 0x3e, 0xfb, 0xbc, 0xa8, 0x82, 0x89, 0x1c, 0x02, 0xbd, - 0x4a, 0x65, 0xfb, 0x02, 0x2f, 0xc2, 0x47, 0x66, 0xe0, 0xdb, 0x7a, 0x8e, - 0x0b, 0xb0, 0xd4, 0xe4, 0x56, 0xd2, 0xb1, 0xc4, 0x10, 0x30, 0x63, 0x9e, - 0xc6, 0xcc, 0x8e, 0x36, 0x48, 0xbd, 0xd6, 0xb2, 0x6d, 0xa9, 0xd8, 0x33, - 0xae, 0x29, 0xd1, 0x8a, 0x60, 0x48, 0xb8, 0xde, 0xe7, 0x76, 0x65, 0x37, - 0xdf, 0x31, 0x72, 0x82, 0x66, 0xfe, 0x97, 0x69, 0x41, 0xca, 0x1c, 0x1e, - 0x2b, 0xc6, 0x4d, 0x22, 0x30, 0x96, 0x7e, 0x90, 0x33, 0xb2, 0x79, 0x0b, - 0x25, 0x42, 0x20, 0x93, 0xe2, 0x46, 0x8a, 0x2f, 0xc1, 0x68, 0xe8, 0x3a, - 0x0a, 0x48, 0xcd, 0x1b, 0x30, 0x00, 0xdb, 0x3f, 0x2e, 0xee, 0x41, 0x7d, - 0xb1, 0x6d, 0xd0, 0x90, 0xd5, 0xac, 0xbc, 0x2d, 0x5a, 0xa7, 0x3d, 0xd8, - 0x75, 0x23, 0x12, 0x6c, 0x9d, 0xd5, 0x79, 0xd5, 0x8a, 0x54, 0x46, 0x61, - 0xb7, 0xb6, 0xde, 0x92, 0x71, 0x10, 0xa6, 0x17, 0x96, 0x42, 0x8b, 0x49, - 0x94, 0x5b, 0x35, 0x28, 0xee, 0x60, 0x10, 0x42, 0x23, 0xc0, 0xb5, 0xd0, - 0x5e, 0xef, 0x07, 0xc8, 0xe2, 0x8e, 0x40, 0x7a, 0xfe, 0x1d, 0xbc, 0x3d, - 0x65, 0x06, 0x46, 0xba, 0x43, 0xee, 0x65, 0xf9, 0xff, 0x9e, 0xe8, 0x43, - 0x21, 0x21, 0x72, 0x19, 0x44, 0x7a, 0x42, 0x9a, 0xc0, 0xe2, 0x7d, 0x06, - 0x94, 0xa4, 0x60, 0xed, 0x8b, 0x76, 0x69, 0x6b, 0x5a, 0xe4, 0x79, 0xbc, - 0xcd, 0x1b, 0xe4, 0xf3, 0xae, 0x40, 0x0b, 0xba, 0x36, 0xaf, 0x57, 0x68, - 0x5d, 0xaa, 0x8b, 0x5e, 0x60, 0x96, 0x02, 0x64, 0x74, 0x83, 0xb6, 0x96, - 0x48, 0x55, 0xc3, 0x57, 0x4b, 0x0a, 0xc2, 0x7b, 0x38, 0xe1, 0xf8, 0x38, - 0xc3, 0xd4, 0xcc, 0x33, 0xda, 0x80, 0x7c, 0x4f, 0x3f, 0x08, 0xaa, 0x11, - 0xec, 0x8f, 0x06, 0xc3, 0x03, 0x64, 0x38, 0x60, 0x81, 0x08, 0xae, 0xb0, - 0x4a, 0x9a, 0x85, 0x80, 0xbc, 0x10, 0xe2, 0xae, 0x84, 0xc9, 0xda, 0x64, - 0x5c, 0xf0, 0xfc, 0x90, 0xfb, 0xc6, 0x12, 0x20, 0x70, 0x00, 0xdd, 0x2b, - 0x20, 0x0b, 0xa0, 0x9e, 0x06, 0xf0, 0xc1, 0x48, 0x81, 0xce, 0x1a, 0xed, - 0x5d, 0x8d, 0x44, 0xe2, 0x36, 0x96, 0x69, 0x5b, 0x27, 0xae, 0xba, 0x8a, - 0x6a, 0x3e, 0xc9, 0xd6, 0x41, 0xf3, 0xeb, 0x07, 0x5f, 0xea, 0xa9, 0x16, - 0xa6, 0x20, 0xbf, 0x7d, 0x49, 0xf4, 0x4f, 0x32, 0x0f, 0x12, 0x5a, 0x84, - 0x83, 0x40, 0xd8, 0x92, 0x1e, 0x22, 0xdc, 0x39, 0xb1, 0xe2, 0x94, 0x78, - 0xa6, 0x5f, 0x82, 0x89, 0x00, 0x0a, 0xb0, 0xed, 0x47, 0x92, 0xcc, 0x85, - 0xb0, 0xcf, 0x8f, 0x8d, 0x61, 0xba, 0xcc, 0x3b, 0x30, 0xbb, 0x83, 0xa7, - 0xd3, 0x92, 0xeb, 0x2a, 0x3b, 0x7e, 0x95, 0x4e, 0x2f, 0x59, 0xfe, 0x6f, - 0xec, 0x42, 0x89, 0xdc, 0xca, 0x13, 0x84, 0xb7, 0x45, 0x6f, 0x8a, 0x15, - 0x32, 0xd1, 0xbd, 0x9e, 0x9c, 0x80, 0xc3, 0x6e, 0x14, 0x8d, 0x9d, 0x30, - 0xd4, 0xe9, 0x11, 0xa9, 0xfe, 0x6e, 0x95, 0x6e, 0xf7, 0x73, 0xcd, 0x28, - 0x90, 0xa1, 0xcb, 0x25, 0xb5, 0x3e, 0x31, 0xcb, 0x6c, 0x62, 0x91, 0x44, - 0x93, 0xe9, 0x15, 0xc4, 0x87, 0xdb, 0x7c, 0xa0, 0x4c, 0xa2, 0xbd, 0xbc, - 0x87, 0xf2, 0x4f, 0x30, 0xe6, 0xd0, 0xf7, 0x82, 0x19, 0xe9, 0x0c, 0x0d, - 0xf7, 0x32, 0xf6, 0x90, 0x8f, 0xd3, 0x57, 0x1c, 0xaf, 0xe1, 0xe5, 0x6f, - 0xda, 0x49, 0x57, 0x95, 0x55, 0x64, 0x56, 0x53, 0x69, 0xe6, 0x90, 0x6c, - 0xa6, 0x1b, 0xde, 0xc3, 0xd1, 0x70, 0x84, 0x3e, 0xe1, 0xc8, 0x53, 0xf1, - 0x66, 0x32, 0x12, 0x07, 0x66, 0xbd, 0xcb, 0x1a, 0x0e, 0x11, 0xc9, 0xb4, - 0x5d, 0x03, 0x48, 0xbf, 0x8f, 0x23, 0xcb, 0xa6, 0xf1, 0x26, 0x5c, 0x89, - 0x45, 0x99, 0xfb, 0x74, 0x1c, 0x85, 0x5e, 0x79, 0xd9, 0x07, 0xe5, 0x9d, - 0xa1, 0x1e, 0xe2, 0x99, 0xb9, 0xa0, 0xd7, 0x36, 0xb0, 0xda, 0x17, 0x00, - 0xd6, 0x0c, 0xb1, 0xa2, 0xaf, 0x88, 0x6f, 0x56, 0xfc, 0x99, 0xd1, 0x34, - 0xc7, 0x60, 0x42, 0xdc, 0x97, 0xbc, 0x7b, 0x1e, 0xd7, 0x29, 0x5d, 0x7f, - 0x45, 0xea, 0x09, 0xd3, 0x46, 0xf2, 0xbf, 0x0d, 0xb3, 0xe0, 0x5d, 0x47, - 0x15, 0x7f, 0x30, 0xc1, 0x36, 0x84, 0xac, 0x6a, 0x51, 0xee, 0xab, 0x89, - 0xe0, 0x6a, 0xdd, 0x41, 0xc3, 0x0a, 0xf3, 0xd5, 0x92, 0x36, 0xf7, 0x91, - 0x2d, 0xa5, 0xb2, 0x4e, 0x97, 0x64, 0x87, 0xbe, 0x37, 0xe8, 0x84, 0x4a, - 0x3e, 0xeb, 0x8e, 0x29, 0x73, 0x02, 0xe5, 0x48, 0xa5, 0x06, 0x3e, 0x38, - 0xad, 0x96, 0x2f, 0x89, 0xaa, 0xdf, 0x8a, 0x5c, 0xef, 0x96, 0x0e, 0xdd, - 0xc6, 0x75, 0x78, 0x8b, 0x9e, 0x37, 0xe1, 0xdc, 0xb4, 0xea, 0xa6, 0x4c, - 0x5e, 0x17, 0x53, 0x93, 0x03, 0x50, 0x15, 0x9d, 0xe0, 0x86, 0xfc, 0x82, - 0xe2, 0x4c, 0x6c, 0x89, 0x4b, 0x04, 0x0b, 0xa5, 0x7c, 0x6c, 0x26, 0x0b, - 0x6a, 0xcf, 0x4d, 0xa6, 0x8f, 0xb5, 0x37, 0xc3, 0x46, 0x4f, 0x69, 0xd3, - 0x2f, 0xc2, 0xec, 0xc5, 0x0b, 0x1f, 0x62, 0x21, 0x89, 0x07, 0x55, 0x0a, - 0xc0, 0x2a, 0xf1, 0x55, 0x54, 0x12, 0x08, 0x7a, 0x3a, 0xef, 0xe8, 0xf2, - 0x98, 0x6e, 0xd8, 0xb1, 0xa2, 0xfb, 0x08, 0x74, 0x70, 0xe2, 0xce, 0x40, - 0xaa, 0x0e, 0x24, 0x4a, 0xc5, 0x4a, 0x76, 0x0b, 0x07, 0xde, 0x36, 0x2f, - 0xcc, 0x20, 0x7c, 0x70, 0x1c, 0xe0, 0xbc, 0xdf, 0xe5, 0xa9, 0xbc, 0x68, - 0xa5, 0x50, 0x95, 0xe2, 0x34, 0x90, 0xb8, 0x51, 0x31, 0xe2, 0x52, 0x69, - 0xd9, 0xcb, 0xbc, 0x70, 0x6a, 0x3a, 0xb6, 0xc9, 0x9f, 0x9b, 0x2e, 0x63, - 0x7a, 0x63, 0xb3, 0x60, 0xc6, 0xd3, 0x1c, 0x04, 0xef, 0x78, 0x81, 0x34, - 0x11, 0x61, 0xfe, 0x02, 0x07, 0x27, 0xee, 0x9f, 0x9e, 0x82, 0x6c, 0x2f, - 0x52, 0x82, 0x4f, 0xc0, 0xaa, 0x0e, 0x72, 0xa2, 0x36, 0xe3, 0x69, 0xcc, - 0x22, 0xe2, 0xb3, 0xd7, 0x17, 0x23, 0x97, 0xa4, 0xd5, 0x8e, 0x07, 0x5d, - 0x0d, 0xa2, 0xe1, 0xb4, 0x70, 0x31, 0x08, 0x07, 0x8e, 0x45, 0x5a, 0xe0, - 0x06, 0x1f, 0x67, 0xa1, 0xaa, 0xd5, 0x64, 0x42, 0x91, 0x1d, 0x16, 0x32, - 0x8f, 0x0d, 0x6c, 0x58, 0xe4, 0xf8, 0xea, 0x2a, 0x56, 0x14, 0x07, 0x45, - 0xe1, 0x88, 0x45, 0x7d, 0x4b, 0x78, 0x81, 0xe0, 0x3b, 0x76, 0x65, 0xaf, - 0xea, 0xf7, 0x82, 0x89, 0xec, 0x09, 0x3e, 0xf5, 0x9e, 0x09, 0x3e, 0xea, - 0xae, 0x2c, 0x8f, 0xe9, 0xc1, 0x3f, 0x3d, 0x7a, 0x5a, 0xdc, 0xcf, 0xfa, - 0x89, 0x36, 0x4a, 0x9e, 0xc7, 0x9f, 0x1e, 0xc3, 0x0e, 0x0e, 0x08, 0x37, - 0xa5, 0x6a, 0xd3, 0x7b, 0x52, 0xd5, 0x39, 0xfb, 0x83, 0x8c, 0xfa, 0xb0, - 0x97, 0x01, 0x10, 0x85, 0xab, 0x1c, 0xa2, 0x01, 0x00, 0x44, 0x8e, 0xa6, - 0x26, 0x79, 0xb3, 0x49, 0x1c, 0xfe, 0x00, 0x6d, 0xf2, 0x6f, 0xae, 0x8e, - 0x46, 0xc2, 0xac, 0xc6, 0x0b, 0xb7, 0x56, 0xef, 0x1f, 0xcb, 0x73, 0xda, - 0x80, 0x6e, 0x2a, 0x10, 0x57, 0x4c, 0x05, 0x62, 0xea, 0x62, 0xa2, 0x6d, - 0x45, 0xb8, 0x77, 0xe4, 0x83, 0xa4, 0xf3, 0x17, 0x1b, 0x43, 0x49, 0x14, - 0x47, 0xb2, 0x3e, 0x6f, 0xe1, 0x27, 0x7e, 0x34, 0x52, 0xfe, 0xc1, 0x6b, - 0xcc, 0xb1, 0x7a, 0x2d, 0x50, 0x17, 0x42, 0x50, 0x00, 0x44, 0xfd, 0x99, - 0x39, 0x08, 0xd3, 0xe6, 0xf1, 0x9f, 0xd2, 0xf6, 0x1f, 0xc6, 0xae, 0xeb, - 0xf2, 0xd5, 0xb6, 0xd5, 0xbb, 0xe2, 0x9b, 0xa0, 0x9d, 0xab, 0x39, 0x0f, - 0x5c, 0xe1, 0x61, 0x68, 0x6f, 0xc2, 0x34, 0x03, 0x4c, 0x51, 0xcd, 0x46, - 0x2b, 0xdb, 0x0c, 0x1a, 0x77, 0x06, 0x3c, 0x7f, 0x8c, 0x8c, 0xae, 0xe7, - 0x26, 0xcb, 0x32, 0x61, 0x56, 0x9c, 0x5a, 0x48, 0x87, 0x16, 0xb3, 0x58, - 0x33, 0xfb, 0x0f, 0x3a, 0xe7, 0xeb, 0xc7, 0x36, 0xa3, 0x42, 0x98, 0xe7, - 0x98, 0x6f, 0xc5, 0x56, 0xad, 0x9a, 0x95, 0x28, 0xf2, 0x09, 0xe3, 0xc8, - 0x9c, 0xba, 0x75, 0x18, 0x68, 0xce, 0x8f, 0x56, 0xa8, 0x80, 0xac, 0x83, - 0x9e, 0x5c, 0xe6, 0x6f, 0xad, 0x3f, 0x61, 0x98, 0xe8, 0x55, 0x6c, 0x67, - 0xed, 0xeb, 0x5d, 0xf6, 0x28, 0xff, 0x55, 0x23, 0xf4, 0xbe, 0xad, 0x8c, - 0xb9, 0x5b, 0x75, 0xe5, 0x5e, 0xde, 0xb1, 0x5c, 0x4b, 0x48, 0x7e, 0x8a, - 0x23, 0x21, 0x90, 0xf4, 0x3c, 0x99, 0x95, 0x4d, 0x89, 0x79, 0xdc, 0xff, - 0xbe, 0xf4, 0x59, 0x4d, 0x2a, 0xa4, 0xdc, 0x67, 0x55, 0x9a, 0xa6, 0x4f, - 0x2d, 0x64, 0x0c, 0x3c, 0x67, 0xd9, 0xbd, 0xd4, 0xde, 0xac, 0x24, 0xc7, - 0xef, 0x1a, 0xe6, 0x3e, 0x93, 0xaa, 0x70, 0x6b, 0x8f, 0x80, 0xb8, 0x9b, - 0xf2, 0x4b, 0xf9, 0x09, 0x04, 0xc0, 0xd7, 0x22, 0x0b, 0x43, 0xcd, 0xa7, - 0xca, 0x08, 0xd0, 0xaa, 0xd3, 0xfd, 0x40, 0xf9, 0x4a, 0xa8, 0x4a, 0xb2, - 0x48, 0xee, 0xf2, 0xe4, 0x6f, 0x50, 0xbe, 0xcd, 0x52, 0x03, 0x1d, 0xe5, - 0x03, 0x68, 0x1d, 0xe1, 0xce, 0x30, 0x88, 0x63, 0xe0, 0x10, 0xf4, 0x98, - 0x72, 0xe8, 0x55, 0x56, 0x61, 0x7a, 0x0f, 0x21, 0x20, 0x00, 0x70, 0x46, - 0xf3, 0x95, 0x72, 0x7a, 0x2d, 0x25, 0xd0, 0x87, 0xe2, 0x87, 0xb9, 0x4a, - 0x0e, 0x9b, 0x71, 0xe1, 0x23, 0x88, 0x7c, 0xe1, 0x42, 0xdc, 0xfc, 0x74, - 0x4c, 0x00, 0x0a, 0xb9, 0x27, 0x89, 0x6d, 0x2b, 0x65, 0x04, 0x2f, 0xce, - 0xb4, 0x77, 0xe3, 0x1c, 0xf2, 0x0e, 0x67, 0xf2, 0xb7, 0xfb, 0x1c, 0xf9, - 0xd8, 0x5b, 0xe0, 0x5c, 0xff, 0xe4, 0x27, 0xe2, 0xef, 0x05, 0x76, 0x70, - 0x29, 0x3c, 0xec, 0x43, 0x7a, 0x61, 0x25, 0x36, 0x8c, 0xd3, 0xa4, 0x67, - 0x88, 0xf0, 0x0e, 0x00, 0xc5, 0x19, 0x6d, 0x0d, 0x7a, 0x42, 0x86, 0x4e, - 0x89, 0x16, 0x9c, 0x16, 0x2d, 0xb6, 0x8c, 0xb0, 0xc8, 0xe0, 0x70, 0xdf, - 0x92, 0x46, 0x4e, 0xb5, 0xb8, 0x11, 0x6d, 0xd6, 0x5c, 0xe8, 0xd2, 0x12, - 0xfc, 0x91, 0x97, 0x37, 0x11, 0x55, 0xaf, 0x0a, 0x40, 0xe2, 0xa9, 0x70, - 0x19, 0x59, 0xac, 0xc4, 0x67, 0xba, 0x28, 0xf9, 0xc3, 0x69, 0x14, 0x1a, - 0x44, 0x1a, 0xa0, 0x51, 0x0d, 0xe2, 0x99, 0xa3, 0xbb, 0x02, 0xe9, 0x92, - 0x5c, 0x07, 0x62, 0xfb, 0xd3, 0x2f, 0x55, 0x0c, 0xca, 0xe3, 0x59, 0x7b, - 0xd6, 0x6a, 0x71, 0x8e, 0xed, 0x18, 0xf1, 0x95, 0x35, 0x16, 0x99, 0xc4, - 0x14, 0xcf, 0xa0, 0xce, 0xed, 0x7d, 0x12, 0xb6, 0x78, 0x38, 0x9f, 0x27, - 0xfc, 0x04, 0x6c, 0x18, 0xd3, 0x7e, 0xa4, 0x4c, 0x8e, 0xdb, 0x2f, 0x72, - 0x41, 0x42, 0x5b, 0x00, 0x08, 0x30, 0xbe, 0x2d, 0xba, 0x9b, 0x57, 0xa3, - 0x88, 0x4b, 0x06, 0x71, 0xa4, 0xb2, 0x46, 0x34, 0xeb, 0x4e, 0xbc, 0xb8, - 0x8c, 0x41, 0xf0, 0x40, 0xd2, 0xb0, 0xcc, 0x1f, 0x48, 0x18, 0xeb, 0xe9, - 0xa0, 0xc1, 0x19, 0xc0, 0x18, 0xf0, 0x40, 0x56, 0x5a, 0xb9, 0xbe, 0x4b, - 0xad, 0x75, 0xc5, 0xa0, 0x9e, 0x4a, 0x68, 0x36, 0xb7, 0xdd, 0xf9, 0x3f, - 0xdf, 0x52, 0x8a, 0xf0, 0x36, 0x2d, 0x76, 0xce, 0x2c, 0x7e, 0x91, 0xce, - 0x2d, 0xde, 0xe6, 0x6a, 0x2b, 0x71, 0x0a, 0xd2, 0x03, 0xd8, 0x0f, 0x56, - 0xc9, 0x42, 0xb7, 0x58, 0x0b, 0xb8, 0xd0, 0x85, 0xc4, 0x8a, 0x0e, 0x71, - 0x4b, 0xcd, 0x0a, 0x33, 0x95, 0x33, 0x35, 0x22, 0x0b, 0x97, 0xd8, 0x49, - 0xb6, 0xf7, 0xc3, 0x55, 0x10, 0x44, 0xcd, 0x96, 0x71, 0x38, 0xb8, 0x0a, - 0x6a, 0x71, 0x4f, 0x31, 0xcf, 0x70, 0x81, 0x84, 0x9e, 0x5d, 0x15, 0x67, - 0x01, 0x10, 0xce, 0x82, 0xe3, 0xbf, 0x4f, 0x8b, 0xc1, 0xed, 0xeb, 0x3b, - 0x23, 0x90, 0x85, 0x38, 0x37, 0x44, 0xcb, 0xed, 0x3a, 0x46, 0x61, 0x23, - 0x5e, 0x64, 0xf9, 0x65, 0x98, 0x02, 0x2c, 0xe1, 0xea, 0x86, 0x1a, 0x30, - 0x42, 0xa0, 0x91, 0x51, 0xa6, 0x33, 0xef, 0x49, 0xa8, 0x4d, 0x3f, 0x51, - 0x12, 0x3b, 0x3b, 0x12, 0xbe, 0x63, 0xc3, 0xf5, 0x5d, 0x63, 0x1d, 0x4b, - 0x8f, 0xc5, 0xc6, 0xed, 0x38, 0xe4, 0x07, 0x46, 0xb0, 0xbd, 0x88, 0x29, - 0x0c, 0x2d, 0xde, 0x60, 0xd6, 0x86, 0xed, 0x58, 0xa6, 0x16, 0x0e, 0xa5, - 0x50, 0x00, 0x0d, 0xec, 0x3d, 0x2f, 0xc5, 0xde, 0x47, 0xa9, 0x5b, 0xb6, - 0x31, 0x27, 0xc9, 0xcd, 0xa0, 0x5c, 0xeb, 0x2f, 0x8a, 0x2d, 0x63, 0x73, - 0x88, 0x9a, 0xde, 0x03, 0x3e, 0x4c, 0xaf, 0x7e, 0x7e, 0x2e, 0x44, 0x50, - 0x0f, 0x7b, 0xe2, 0xe8, 0x03, 0x72, 0x7e, 0x50, 0xea, 0x1f, 0xef, 0x67, - 0x42, 0xd8, 0x00, 0xe0, 0xb7, 0x30, 0x2a, 0xfd, 0x66, 0x84, 0x92, 0xe1, - 0x93, 0x38, 0xd3, 0xca, 0xbe, 0xe4, 0x8c, 0xb7, 0xd8, 0x83, 0x3c, 0x08, - 0x20, 0x04, 0xb3, 0x8f, 0x36, 0x23, 0xa8, 0xd2, 0xe7, 0x3a, 0x25, 0xbf, - 0xd1, 0xca, 0xb3, 0x06, 0x2d, 0x5a, 0xdb, 0xd7, 0xc2, 0x45, 0xff, 0x53, - 0xac, 0x8f, 0x86, 0x5e, 0x5b, 0x67, 0xf8, 0x39, 0x9a, 0xc5, 0x3d, 0x83, - 0x04, 0xcc, 0xa5, 0x67, 0xd1, 0x37, 0x1f, 0xf7, 0xd1, 0x98, 0x11, 0x2b, - 0x8f, 0xaf, 0xb5, 0x49, 0x4a, 0x83, 0x12, 0xa6, 0x48, 0x9c, 0xb5, 0x3a, - 0x4e, 0xb8, 0xd1, 0xb1, 0x02, 0xc9, 0x4a, 0x62, 0xed, 0x8a, 0x75, 0x11, - 0xc4, 0x4b, 0x7f, 0x01, 0x3b, 0xd7, 0xe1, 0x3c, 0x73, 0xe4, 0x6e, 0x2b, - 0xe6, 0x69, 0xb1, 0x15, 0x16, 0x66, 0xde, 0xdd, 0x08, 0x01, 0x95, 0x6e, - 0xd6, 0x40, 0x49, 0xe3, 0x97, 0xd5, 0x54, 0xf1, 0x4f, 0x62, 0xbb, 0xae, - 0xa4, 0xb7, 0x68, 0x1f, 0x90, 0x60, 0xf5, 0x6e, 0x9c, 0x0f, 0xd9, 0xad, - 0x97, 0xda, 0x02, 0x4f, 0xdd, 0x8d, 0x0b, 0xd1, 0xb0, 0x93, 0xf9, 0xc4, - 0x14, 0x89, 0xdc, 0x0c, 0xbd, 0x98, 0x49, 0xe1, 0x0d, 0x9c, 0x32, 0xf4, - 0xce, 0x28, 0xc9, 0xdf, 0x12, 0xf0, 0x72, 0xbb, 0x56, 0x35, 0x31, 0xb4, - 0xbf, 0xd6, 0x5a, 0x2f, 0xf6, 0x79, 0x8a, 0xa2, 0xa7, 0xe1, 0x0e, 0xf1, - 0x05, 0x4f, 0x02, 0xfb, 0x27, 0xb3, 0xe0, 0x1f, 0xbf, 0xdf, 0x55, 0x09, - 0xea, 0x23, 0xab, 0x42, 0xe0, 0x6f, 0x6a, 0x4e, 0xce, 0xbc, 0xdc, 0x7e, - 0x63, 0x43, 0xc3, 0x09, 0xca, 0x5f, 0xb9, 0x5c, 0x71, 0x60, 0x7c, 0x95, - 0xdd, 0xeb, 0x25, 0x0d, 0xd1, 0x81, 0x55, 0x7b, 0x62, 0x89, 0x37, 0x83, - 0x75, 0x1d, 0xfd, 0xb2, 0x4a, 0xe0, 0x03, 0x41, 0xbb, 0x56, 0xc6, 0x97, - 0x47, 0x0c, 0x75, 0x9e, 0x16, 0x0f, 0x10, 0xc2, 0x57, 0xa0, 0xbd, 0x76, - 0x31, 0xed, 0xec, 0xa8, 0x74, 0x56, 0x29, 0x7a, 0x53, 0xb9, 0x04, 0x72, - 0xfc, 0xa6, 0x7c, 0x54, 0x8e, 0x57, 0x59, 0x70, 0x17, 0x6d, 0xac, 0x7c, - 0xf3, 0x20, 0xf5, 0x7a, 0x12, 0xc7, 0x0e, 0x73, 0xa0, 0x46, 0xdd, 0x65, - 0xfa, 0x77, 0xce, 0xbf, 0x4c, 0x19, 0xd5, 0xfa, 0x72, 0x12, 0xd3, 0xfd, - 0xcd, 0xb4, 0x34, 0x3d, 0xae, 0x17, 0x5f, 0x7c, 0xf4, 0x4f, 0x12, 0x09, - 0xf9, 0x77, 0x69, 0x42, 0x22, 0x93, 0xf9, 0x14, 0x89, 0x37, 0xfd, 0xa4, - 0xd8, 0x98, 0x19, 0x5f, 0xf1, 0x45, 0x74, 0x35, 0x4c, 0xb6, 0x07, 0x76, - 0x8f, 0x0e, 0x2b, 0x92, 0xc8, 0x6b, 0x48, 0x57, 0xd2, 0x9d, 0xfd, 0x06, - 0xf8, 0x7d, 0x67, 0x39, 0x0e, 0x63, 0x6b, 0xee, 0x71, 0xa9, 0x47, 0xf6, - 0x6f, 0xd9, 0x1f, 0x42, 0x2e, 0x25, 0xd1, 0xdc, 0x67, 0x6a, 0xe9, 0xac, - 0xce, 0x49, 0x28, 0x78, 0x47, 0x2c, 0x9b, 0x5a, 0xb7, 0x9a, 0x92, 0xa7, - 0x30, 0xa5, 0x3d, 0x0f, 0x2c, 0x8f, 0xfa, 0x80, 0x10, 0x0e, 0x82, 0xd8, - 0x7f, 0xbd, 0x2a, 0x37, 0x71, 0x60, 0xfd, 0xb9, 0xf7, 0xbb, 0xd4, 0x7c, - 0x51, 0x28, 0x5a, 0x4c, 0xb6, 0x3d, 0x35, 0xb6, 0x11, 0x8a, 0x99, 0xf2, - 0x3e, 0xdf, 0x9a, 0x19, 0x7c, 0x07, 0x91, 0x18, 0xb4, 0x24, 0x4f, 0x3c, - 0x2e, 0x3c, 0x7e, 0xc3, 0x75, 0x5f, 0x1f, 0x1c, 0xb4, 0x19, 0x28, 0x24, - 0x6f, 0x88, 0x3b, 0x6f, 0xe5, 0xbd, 0x06, 0x82, 0x16, 0xc0, 0xb4, 0x88, - 0xe2, 0x17, 0x7c, 0x5d, 0x4c, 0x2b, 0x0f, 0xc2, 0xcb, 0xd7, 0x38, 0xed, - 0xfd, 0x9a, 0x24, 0x4e, 0x14, 0x18, 0x73, 0x54, 0x0e, 0x23, 0x27, 0x67, - 0xf3, 0x06, 0xc6, 0x28, 0x70, 0xaa, 0xd2, 0xab, 0x1f, 0x82, 0xb1, 0x69, - 0xe2, 0x98, 0x9c, 0x27, 0x8f, 0x5d, 0x65, 0x26, 0x5c, 0xa3, 0x13, 0x60, - 0xd9, 0x73, 0x84, 0x31, 0x75, 0xea, 0x7e, 0xbc, 0x9b, 0x22, 0x5e, 0xe6, - 0xe4, 0xb0, 0x8d, 0x18, 0x2b, 0x3c, 0xe6, 0xe0, 0x69, 0x09, 0x5d, 0x4f, - 0xc0, 0x57, 0x45, 0x3b, 0xd3, 0xfb, 0x4c, 0x77, 0x79, 0x71, 0xd3, 0x50, - 0x8a, 0xce, 0xf8, 0xec, 0x99, 0x69, 0x34, 0xea, 0x6f, 0x00, 0xc1, 0x8a, - 0x7f, 0x08, 0x07, 0x35, 0xa3, 0x90, 0x6c, 0x21, 0x6f, 0x6a, 0xee, 0x89, - 0xeb, 0xa2, 0x49, 0x10, 0x8d, 0xff, 0xfd, 0x93, 0x4f, 0x39, 0x1a, 0x4b, - 0x7d, 0x5d, 0x87, 0x38, 0x30, 0xb2, 0x16, 0xeb, 0x9f, 0xf5, 0x55, 0x78, - 0x1b, 0x4d, 0x81, 0xf0, 0xfe, 0x72, 0x76, 0x4f, 0x4d, 0x0b, 0x9c, 0x93, - 0x47, 0x7f, 0x44, 0x57, 0x9b, 0xac, 0xcf, 0x26, 0xda, 0x36, 0x96, 0x0b, - 0x95, 0xa3, 0x05, 0xd8, 0x5f, 0xa9, 0x43, 0x65, 0x8c, 0x19, 0xbf, 0x30, - 0x66, 0xbc, 0xe7, 0x83, 0x93, 0x9d, 0x64, 0xb3, 0x94, 0xff, 0xa3, 0x44, - 0x87, 0xcf, 0x69, 0xc9, 0xbe, 0x41, 0xac, 0x82, 0x39, 0x9f, 0x5a, 0xc6, - 0x1d, 0xfb, 0x90, 0x62, 0x7d, 0xc9, 0x17, 0x10, 0xb2, 0xe9, 0x4d, 0xae, - 0x9f, 0x3c, 0xa4, 0xd7, 0x94, 0xfb, 0x7e, 0x02, 0xbe, 0xd1, 0x72, 0xdb, - 0x2b, 0x04, 0x2f, 0x20, 0x80, 0xda, 0x79, 0x13, 0x67, 0x9b, 0x0f, 0xb9, - 0xff, 0xaa, 0xe0, 0x34, 0x48, 0x99, 0xef, 0xd7, 0x68, 0xc8, 0x2c, 0x3e, - 0x24, 0x57, 0xaa, 0x9a, 0x92, 0x75, 0x1f, 0x89, 0x93, 0x92, 0x82, 0x42, - 0x7d, 0xe9, 0x81, 0xf8, 0x12, 0xc3, 0xd5, 0xdf, 0x41, 0x57, 0x59, 0x10, - 0x35, 0x8e, 0x30, 0x83, 0x27, 0x0f, 0x5c, 0x74, 0xc1, 0x46, 0xdd, 0x7b, - 0x6f, 0x4b, 0x8c, 0xf3, 0xee, 0xac, 0xf4, 0x05, 0xd4, 0xfe, 0x86, 0xe7, - 0x88, 0x23, 0x3e, 0x11, 0x57, 0xbb, 0x4d, 0xeb, 0xa0, 0x19, 0x78, 0x06, - 0x00, 0x06, 0x99, 0x18, 0x67, 0xdc, 0x0b, 0xae, 0x08, 0xf6, 0x25, 0x98, - 0x9c, 0xb3, 0xa6, 0x69, 0xda, 0x6f, 0x9b, 0x0a, 0x33, 0x27, 0xb3, 0x1b, - 0x19, 0x01, 0xdf, 0xfc, 0x9c, 0x13, 0x0d, 0x6d, 0x3a, 0x87, 0x99, 0xc4, - 0x43, 0xc3, 0xed, 0x9f, 0xed, 0x1b, 0x6c, 0xb7, 0xbf, 0x14, 0x7f, 0xd6, - 0x33, 0xc3, 0xb3, 0x30, 0xa7, 0x5d, 0xd9, 0xd3, 0xe2, 0xa5, 0x61, 0xde, - 0x67, 0x82, 0x95, 0x4d, 0x1b, 0xe6, 0x05, 0x64, 0x47, 0xec, 0x6a, 0xf4, - 0x4b, 0x4c, 0x5f, 0xa4, 0xe4, 0x4d, 0x62, 0xc9, 0x85, 0x1c, 0xee, 0x7f, - 0xc4, 0xa5, 0x42, 0x59, 0x32, 0xd2, 0xa0, 0xce, 0x83, 0x25, 0x9e, 0xf0, - 0xa5, 0xa3, 0x4d, 0x5f, 0x95, 0xd2, 0x4b, 0x9b, 0x17, 0x77, 0x06, 0x8f, - 0xed, 0x8d, 0xdd, 0xcd, 0x3a, 0x74, 0xd3, 0xc3, 0x28, 0xba, 0x15, 0x22, - 0xa9, 0x1e, 0xb2, 0x8a, 0x47, 0x83, 0x59, 0xc3, 0xb4, 0xd4, 0x81, 0xec, - 0x66, 0x67, 0x0c, 0xc6, 0x47, 0xfe, 0x47, 0xc8, 0x23, 0x35, 0x05, 0x0a, - 0xa2, 0x95, 0xc8, 0x2b, 0x45, 0x9a, 0xe0, 0x27, 0xe9, 0x09, 0x13, 0x39, - 0xea, 0x03, 0x43, 0xdb, 0x1c, 0x9d, 0xe6, 0xc5, 0x81, 0xb5, 0xb3, 0x1d, - 0xb3, 0x7f, 0x50, 0x15, 0xe3, 0x04, 0x05, 0x7a, 0xf7, 0x50, 0x66, 0xf9, - 0x35, 0x2c, 0xd0, 0xa7, 0x18, 0x03, 0x83, 0xb9, 0x8e, 0x3a, 0x4b, 0xf9, - 0xb5, 0xfe, 0x9c, 0xb0, 0xeb, 0x2a, 0x13, 0x7d, 0xfa, 0xe7, 0x48, 0xdf, - 0x08, 0x4c, 0xbb, 0x5a, 0xaf, 0x91, 0x2b, 0x5a, 0x3e, 0x2d, 0x65, 0xa5, - 0xea, 0x8a, 0x02, 0xc4, 0xec, 0x8c, 0xfd, 0x85, 0xbc, 0x2a, 0x86, 0xa3, - 0x19, 0x55, 0x6c, 0x5d, 0x50, 0xcc, 0x4a, 0x05, 0xc8, 0xbe, 0x85, 0xf9, - 0xd0, 0x46, 0x23, 0xd5, 0xa1, 0x10, 0x30, 0x48, 0x47, 0x2b, 0x95, 0xb3, - 0xfe, 0x78, 0xea, 0xc8, 0x53, 0x17, 0x29, 0xe5, 0x3e, 0x6a, 0xdd, 0x8f, - 0x8a, 0xc4, 0x7a, 0xf6, 0x6f, 0x31, 0x4e, 0x60, 0x5e, 0x79, 0xf6, 0x2c, - 0xc6, 0x22, 0x88, 0x71, 0x4f, 0x0c, 0x2d, 0x35, 0x3a, 0xf0, 0x96, 0xe7, - 0xf9, 0x30, 0x4a, 0xbf, 0x32, 0xac, 0x41, 0xe1, 0xb1, 0x4b, 0xf2, 0x1d, - 0x9a, 0x86, 0x02, 0xb4, 0xaa, 0x87, 0x28, 0x82, 0xfe, 0x47, 0xe7, 0x6a, - 0x1b, 0xf3, 0x38, 0xd7, 0x57, 0x20, 0xb3, 0x0f, 0x19, 0x66, 0x36, 0xd7, - 0x58, 0xdc, 0x9f, 0x98, 0x44, 0xb8, 0xa2, 0x4b, 0x61, 0xe1, 0x8f, 0xd2, - 0x68, 0x84, 0x55, 0x63, 0x57, 0x19, 0xdc, 0x2f, 0xd5, 0xc0, 0x48, 0xf2, - 0x23, 0xd2, 0x40, 0x2b, 0x36, 0x2a, 0xde, 0x21, 0xdf, 0x9c, 0x4e, 0x7b, - 0x8d, 0x12, 0x6d, 0xe4, 0x71, 0x43, 0xc8, 0x96, 0xd2, 0xb9, 0xc8, 0x82, - 0xc9, 0x0f, 0x7a, 0xdb, 0xb1, 0xa4, 0x3e, 0x3f, 0x31, 0x47, 0xc6, 0xab, - 0x8a, 0xe8, 0xcb, 0x4f, 0x7e, 0x1f, 0xd7, 0x02, 0x2e, 0x93, 0xd7, 0x93, - 0xa9, 0xfa, 0x6d, 0x69, 0xe8, 0x38, 0x3c, 0x14, 0x18, 0xf4, 0x5e, 0xe9, - 0xa7, 0x15, 0xc5, 0xf7, 0xe1, 0x0a, 0x01, 0xf1, 0xe4, 0x3c, 0xdb, 0xd3, - 0xd2, 0x42, 0xa9, 0x3b, 0x0a, 0xa9, 0xf0, 0x2a, 0xf2, 0x43, 0x24, 0xc6, - 0xd0, 0x29, 0x5a, 0x7b, 0xec, 0xe5, 0x18, 0xb2, 0x83, 0x99, 0x5c, 0x4d, - 0xe7, 0x3e, 0x96, 0x88, 0x69, 0x0f, 0x28, 0xb9, 0x91, 0x42, 0xdf, 0x74, - 0xd3, 0x6d, 0x87, 0x11, 0x32, 0x89, 0xa2, 0xd9, 0x82, 0x9b, 0xae, 0xb8, - 0x1b, 0xd0, 0xa8, 0xed, 0x66, 0xa9, 0x42, 0xf3, 0x28, 0x55, 0x1b, 0x29, - 0x02, 0x6e, 0xf9, 0x26, 0x62, 0x91, 0x23, 0x31, 0x5f, 0x1e, 0x07, 0x60, - 0x35, 0x0f, 0x22, 0x3e, 0x3a, 0xb3, 0xe3, 0x6b, 0xcd, 0x00, 0xe3, 0x4f, - 0x98, 0x84, 0xfb, 0x3f, 0x55, 0xf1, 0x4b, 0xff, 0x96, 0x80, 0x11, 0xe9, - 0xe2, 0x7b, 0x90, 0x8b, 0xd7, 0xad, 0xae, 0xf4, 0x73, 0x16, 0xec, 0x57, - 0x84, 0x54, 0x03, 0x39, 0xc3, 0x94, 0x18, 0xc3, 0x2a, 0xc1, 0x84, 0x3b, - 0x7e, 0xad, 0xff, 0xbb, 0xe5, 0x1c, 0x4c, 0xdf, 0x6e, 0x94, 0xe0, 0xe6, - 0xfb, 0xe5, 0x6d, 0x3a, 0x4f, 0xc0, 0xbf, 0x6c, 0x03, 0x1a, 0x6c, 0xb6, - 0x9a, 0x83, 0xf0, 0x82, 0x78, 0xf2, 0xf6, 0x2c, 0xbb, 0xb8, 0x5c, 0x7f, - 0x0f, 0x83, 0x7d, 0x31, 0x2e, 0xab, 0x9d, 0xf6, 0xfb, 0xd7, 0x35, 0x06, - 0x12, 0x11, 0xe3, 0xa1, 0x0e, 0xd4, 0x45, 0xdd, 0x1e, 0xb1, 0x6a, 0xee, - 0x6e, 0xa5, 0xff, 0xf5, 0x45, 0x24, 0x5f, 0x57, 0x95, 0x6d, 0x38, 0x78, - 0x51, 0x1d, 0xf2, 0x58, 0xcd, 0xb8, 0xbc, 0xc3, 0x34, 0x9d, 0x9d, 0xbb, - 0x07, 0xd8, 0x51, 0x8f, 0x56, 0xb6, 0x1a, 0x4e, 0xbb, 0xec, 0xf6, 0xc4, - 0x95, 0x33, 0x36, 0x8a, 0x79, 0x85, 0x8c, 0x01, 0x0b, 0x9d, 0xb0, 0x2a, - 0x35, 0xcc, 0x0e, 0x02, 0x62, 0xdf, 0x70, 0x13, 0x30, 0x34, 0xa1, 0x28, - 0xe0, 0x48, 0xca, 0x8e, 0xcc, 0xd3, 0x6e, 0x2b, 0x3a, 0x85, 0x14, 0x54, - 0x46, 0x3c, 0xdb, 0x1e, 0x39, 0x33, 0xa2, 0x33, 0x8e, 0x10, 0x99, 0x94, - 0x46, 0x96, 0x49, 0x66, 0x11, 0xe9, 0x51, 0xc9, 0xc5, 0x06, 0x6b, 0x01, - 0xe2, 0xcc, 0xa4, 0xe2, 0x1d, 0xfe, 0x5d, 0xaa, 0x46, 0x9a, 0xbf, 0xa5, - 0xad, 0xb7, 0x89, 0xe7, 0xfc, 0x1e, 0x2c, 0x00, 0xb6, 0x9d, 0xe7, 0xb2, - 0xff, 0x3d, 0x4d, 0x5f, 0xb9, 0x6f, 0x2c, 0x04, 0xa6, 0x0b, 0x3d, 0xe8, - 0x4c, 0xbd, 0xcc, 0x17, 0xc5, 0x6e, 0x3e, 0xbb, 0xb0, 0x74, 0x99, 0x12, - 0xec, 0x3d, 0x3c, 0x31, 0x05, 0x2c, 0xf2, 0x70, 0x68, 0x34, 0xda, 0x1e, - 0x26, 0xad, 0x6a, 0x65, 0xb6, 0xf1, 0xa9, 0xf8, 0xf6, 0x29, 0x60, 0x97, - 0x5e, 0x02, 0x4d, 0x16, 0x8c, 0xab, 0x85, 0xb9, 0xe7, 0x2c, 0x1a, 0x91, - 0xfd, 0xbc, 0x98, 0x5f, 0x93, 0x69, 0x39, 0x3a, 0x20, 0x17, 0xf5, 0x01, - 0xa0, 0x39, 0xb6, 0x76, 0xe2, 0xff, 0xa9, 0xc3, 0x1c, 0x13, 0xac, 0x50, - 0xee, 0x5c, 0xe5, 0x84, 0x64, 0xdf, 0x88, 0x6f, 0xbc, 0x46, 0x45, 0x02, - 0xe7, 0xcb, 0xab, 0x1f, 0x79, 0x4c, 0x2d, 0xe7, 0x3e, 0x1b, 0xd9, 0x40, - 0x40, 0x80, 0xd3, 0xb5, 0x8d, 0x38, 0xf8, 0xd7, 0x67, 0x80, 0xc5, 0x46, - 0xf0, 0xd8, 0xe8, 0xd2, 0x61, 0xf1, 0xba, 0x87, 0x18, 0x65, 0x57, 0x96, - 0x62, 0x5e, 0x27, 0x9b, 0xa7, 0xd4, 0xa6, 0x47, 0x05, 0xbf, 0x99, 0xf9, - 0x88, 0x41, 0xbb, 0x22, 0x9f, 0x89, 0xcf, 0xcd, 0x88, 0xc6, 0x93, 0x39, - 0x32, 0xe4, 0xc1, 0x21, 0x80, 0x95, 0x6f, 0x9a, 0x37, 0x72, 0xaa, 0x08, - 0xce, 0xa9, 0xdd, 0xd4, 0x1f, 0xf9, 0x0c, 0xf5, 0x06, 0x8d, 0x60, 0x68, - 0x5f, 0x38, 0x0b, 0x35, 0x59, 0xe8, 0xf9, 0x1c, 0x21, 0x7f, 0xac, 0xd3, - 0xca, 0xe9, 0x03, 0x24, 0xea, 0xb8, 0x25, 0x6e, 0xc8, 0xfc, 0x8f, 0x71, - 0x83, 0xfd, 0x36, 0x69, 0x26, 0x15, 0xf1, 0x39, 0x55, 0xe1, 0xc9, 0x6b, - 0x32, 0xc6, 0x31, 0x18, 0x57, 0x2f, 0xa0, 0x05, 0x5e, 0xaf, 0x3e, 0x99, - 0x40, 0x95, 0x40, 0x17, 0xde, 0xdb, 0xe3, 0xe6, 0x65, 0x6b, 0xc8, 0x9c, - 0x19, 0x5e, 0x5d, 0x17, 0x34, 0xed, 0x76, 0x35, 0x3d, 0x39, 0xa1, 0x69, - 0x52, 0xe4, 0x5a, 0x6c, 0x3b, 0x5d, 0x0c, 0xb2, 0x56, 0x1b, 0xfa, 0xf4, - 0xd4, 0x1f, 0xfd, 0x1e, 0xa7, 0x7e, 0xb2, 0xda, 0x58, 0x14, 0x98, 0x46, - 0x7e, 0xcb, 0x9e, 0xb4, 0x1e, 0x3e, 0xf6, 0x80, 0x7f, 0xd0, 0x4e, 0x2e, - 0x57, 0xd6, 0x09, 0xca, 0xc1, 0x68, 0x38, 0xe0, 0x42, 0x31, 0x64, 0x3e, - 0xf8, 0xfa, 0x71, 0x30, 0xa8, 0x11, 0x4d, 0x17, 0xae, 0xe2, 0x02, 0x9e, - 0xf5, 0xb8, 0x57, 0x56, 0x04, 0x3e, 0x78, 0x29, 0x2f, 0xe1, 0x5f, 0xeb, - 0x5c, 0x1e, 0x00, 0x66, 0x11, 0x2c, 0xe0, 0x71, 0x83, 0x31, 0xd9, 0x79, - 0xc8, 0x36, 0x82, 0xf5, 0x5c, 0x25, 0x7a, 0xbe, 0xaa, 0x6f, 0xb4, 0xd8, - 0xc6, 0xb1, 0x7b, 0xaa, 0x3b, 0x92, 0xa7, 0x85, 0xe7, 0x46, 0xc4, 0xb3, - 0xc4, 0x03, 0x0e, 0xb0, 0xa1, 0xd9, 0x25, 0xd0, 0x37, 0x8c, 0x88, 0x72, - 0x86, 0x6b, 0x4b, 0x3b, 0xf1, 0xe2, 0x8f, 0x4f, 0xc2, 0x65, 0x0f, 0xa2, - 0xc6, 0x27, 0x82, 0x17, 0xd7, 0x21, 0x9c, 0xb3, 0xe0, 0x20, 0x71, 0x50, - 0xa9, 0x1c, 0x43, 0x82, 0x37, 0x86, 0x67, 0xf8, 0xc9, 0x00, 0x16, 0xb9, - 0x69, 0x8c, 0x31, 0x14, 0x4c, 0x3e, 0x73, 0x64, 0x94, 0x19, 0x0e, 0x67, - 0x0c, 0x12, 0x31, 0x96, 0x95, 0xab, 0xda, 0x76, 0x20, 0x0d, 0x31, 0x97, - 0x83, 0xbb, 0x7b, 0x06, 0x08, 0x9c, 0x24, 0xfd, 0xbe, 0xbb, 0x54, 0x23, - 0x21, 0x1c, 0x3e, 0xd5, 0x36, 0x4a, 0x36, 0x53, 0x95, 0xcc, 0x2d, 0xa0, - 0x50, 0xb7, 0xb3, 0x41, 0xb1, 0x33, 0x1d, 0x48, 0x2c, 0x85, 0xeb, 0xbc, - 0xd8, 0x85, 0x9e, 0xac, 0xdb, 0xb2, 0xd4, 0xa8, 0x2b, 0xe9, 0x50, 0x62, - 0x10, 0x94, 0x73, 0xce, 0x81, 0x40, 0x91, 0x9d, 0xd6, 0xd1, 0x31, 0x33, - 0x31, 0xc9, 0x4e, 0x95, 0xba, 0x26, 0x5d, 0x87, 0x4e, 0xf3, 0x17, 0x2f, - 0xe2, 0xd8, 0x6c, 0xa9, 0x32, 0x34, 0x65, 0x03, 0x64, 0x6a, 0xac, 0x25, - 0x12, 0x8a, 0x19, 0x44, 0x00, 0x73, 0xcd, 0xa1, 0x6c, 0xc3, 0x5a, 0xa6, - 0xad, 0x7b, 0x39, 0xe9, 0x57, 0x3d, 0x97, 0x29, 0x2d, 0x28, 0xe1, 0xaf, - 0x71, 0xae, 0xb3, 0x4d, 0xba, 0xec, 0x9b, 0xa6, 0x8a, 0xa6, 0x9b, 0x10, - 0x67, 0xac, 0x7b, 0x91, 0xa0, 0xa6, 0xba, 0x0b, 0xea, 0x7a, 0xb4, 0xbd, - 0xe8, 0xb1, 0x40, 0x51, 0xa4, 0x0a, 0x62, 0x61, 0xb3, 0x75, 0x87, 0xaf, - 0xd8, 0x79, 0xe2, 0xb3, 0x74, 0xa1, 0xfb, 0x78, 0x7c, 0xd9, 0x61, 0xa4, - 0x65, 0xad, 0x90, 0x6e, 0x4d, 0x21, 0x86, 0xe4, 0xed, 0xc6, 0xaf, 0x61, - 0xc6, 0xbe, 0x2d, 0x6c, 0x1c, 0x79, 0xbf, 0xf9, 0x1e, 0x9d, 0xfe, 0x5f, - 0x64, 0xd0, 0xe0, 0x30, 0xd4, 0xae, 0xf8, 0x99, 0xd7, 0x72, 0xa9, 0x05, - 0x48, 0x55, 0xee, 0xaf, 0x34, 0xa1, 0x4d, 0xcb, 0xbe, 0x4e, 0xb0, 0x92, - 0xb3, 0x77, 0x98, 0x97, 0xb0, 0x58, 0x79, 0xe3, 0xc2, 0x5a, 0x1b, 0x04, - 0x88, 0x5a, 0x48, 0x54, 0x0d, 0x92, 0xc0, 0xb7, 0x6b, 0xe3, 0x27, 0x34, - 0x96, 0x3e, 0x91, 0x20, 0x7b, 0x4f, 0x85, 0xc0, 0x2f, 0xd0, 0x2a, 0x40, - 0xee, 0xe8, 0x2d, 0xde, 0x0b, 0x2a, 0x2d, 0xcd, 0x2e, 0xb4, 0x46, 0x6c, - 0x2c, 0x3c, 0x8e, 0x3d, 0x3b, 0x50, 0xc3, 0x74, 0x49, 0x76, 0x9b, 0x86, - 0xe0, 0x99, 0x63, 0x02, 0xef, 0x5e, 0x90, 0x3c, 0x16, 0x5a, 0x7b, 0x7b, - 0xbd, 0xb9, 0x6a, 0xc8, 0xe2, 0x5f, 0xe4, 0x0f, 0x40, 0x20, 0x01, 0x2b, - 0x9e, 0xe0, 0x01, 0x13, 0xdb, 0xfe, 0xa4, 0xc4, 0x5d, 0x53, 0xab, 0xbd, - 0x6b, 0x1b, 0x25, 0x1d, 0x24, 0x73, 0x1d, 0x65, 0xdc, 0x19, 0x04, 0xe4, - 0x46, 0x86, 0x3b, 0xaf, 0x61, 0xaa, 0xbd, 0x5f, 0xbe, 0x59, 0x09, 0xd2, - 0x3d, 0xf2, 0x6c, 0x60, 0x88, 0x00, 0x21, 0x39, 0xc5, 0x60, 0xf3, 0x5c, - 0x53, 0xdb, 0x8d, 0xc9, 0x2d, 0x58, 0x3e, 0xaf, 0x23, 0x97, 0x7e, 0x9d, - 0x43, 0x55, 0xda, 0xdd, 0xdc, 0x01, 0x83, 0x7e, 0x10, 0xa8, 0x80, 0x6c, - 0x9a, 0xfa, 0x3c, 0xf8, 0xde, 0xd5, 0xa0, 0xea, 0x47, 0xec, 0xe5, 0x75, - 0xae, 0x6f, 0x10, 0x76, 0x87, 0x26, 0x4e, 0x0f, 0xf3, 0x7a, 0xec, 0xc7, - 0xbd, 0x4d, 0x98, 0xb2, 0xce, 0x4d, 0x31, 0x95, 0xd2, 0x70, 0x06, 0x2e, - 0x2d, 0xfc, 0xc0, 0x86, 0x63, 0x3c, 0x1f, 0xd3, 0x50, 0x59, 0x66, 0xcd, - 0x91, 0x00, 0xf6, 0xec, 0x29, 0x9c, 0x4a, 0xeb, 0x6a, 0xb0, 0x84, 0xce, - 0x0e, 0x6b, 0xae, 0x3f, 0xc8, 0x11, 0x29, 0x1e, 0x34, 0x78, 0x6b, 0xad, - 0xcb, 0x39, 0x32, 0x27, 0x36, 0xa0, 0x70, 0x92, 0xbf, 0x38, 0xbb, 0x5e, - 0x69, 0x9a, 0xe1, 0x30, 0x88, 0xc4, 0xb9, 0x1c, 0x7a, 0x05, 0x2d, 0x2f, - 0x71, 0xc7, 0xa6, 0x1c, 0xed, 0x92, 0x77, 0x7a, 0x7e, 0xa2, 0x6d, 0x48, - 0x75, 0x46, 0x57, 0x0f, 0xe7, 0x98, 0xa5, 0x8b, 0xd3, 0xd8, 0x11, 0x28, - 0x97, 0xf7, 0xf6, 0xf1, 0xd7, 0x4d, 0xee, 0xfd, 0xe8, 0xff, 0x60, 0x35, - 0xbf, 0x2a, 0x92, 0x11, 0x0a, 0x5d, 0x69, 0xdb, 0x14, 0x1d, 0xde, 0x7f, - 0x37, 0x17, 0xae, 0xbb, 0xcb, 0xce, 0xd5, 0x8d, 0x98, 0x8c, 0x8f, 0x3a, - 0x66, 0x43, 0x0e, 0x13, 0xbf, 0xc8, 0x17, 0xaa, 0xf6, 0x3c, 0x78, 0x3f, - 0x5b, 0x23, 0x70, 0xbc, 0xff, 0xa0, 0xd8, 0x3a, 0x3e, 0x38, 0xef, 0xf3, - 0xb9, 0xc3, 0x4e, 0x58, 0x80, 0x09, 0xbe, 0x39, 0x2d, 0xfa, 0x23, 0xe1, - 0x97, 0x72, 0x68, 0x71, 0x6f, 0xc6, 0xff, 0x7f, 0x6a, 0x9e, 0x61, 0xb6, - 0x24, 0x5e, 0x53, 0x7f, 0x25, 0x15, 0xbe, 0x4a, 0x1f, 0xfa, 0xbf, 0xd0, - 0x65, 0x5a, 0x93, 0x38, 0xc3, 0xa5, 0x82, 0xc9, 0x7b, 0xb6, 0x9f, 0xcd, - 0x38, 0x4f, 0xcb, 0x58, 0x82, 0x53, 0xf6, 0x8a, 0x40, 0x13, 0x7a, 0x4f, - 0xb5, 0xd9, 0xfc, 0xa2, 0x43, 0x6a, 0xb2, 0x7a, 0xca, 0xad, 0xf2, 0xcb, - 0x5f, 0x5a, 0x4f, 0x86, 0xe2, 0x97, 0x9d, 0x16, 0x0d, 0xec, 0x9d, 0x5f, - 0x5b, 0xb9, 0x8d, 0x5f, 0xfc, 0x86, 0xdc, 0xbf, 0x6c, 0xd0, 0xaa, 0x79, - 0xd2, 0x95, 0x84, 0x2e, 0xad, 0x9d, 0xfd, 0xbc, 0x16, 0xc7, 0xa7, 0xba, - 0x22, 0x73, 0x30, 0xb5, 0xdd, 0xdc, 0x75, 0xc5, 0xf2, 0xe9, 0xc6, 0x57, - 0x5e, 0x5e, 0x1c, 0xdf, 0x97, 0xbd, 0xb6, 0x09, 0x97, 0x04, 0xa1, 0xbc, - 0x1e, 0x18, 0xcc, 0xcf, 0x04, 0x34, 0x0a, 0x79, 0x01, 0xde, 0x59, 0x68, - 0x8a, 0x45, 0x81, 0xf4, 0x80, 0xa9, 0x88, 0x12, 0xaa, 0x21, 0x6b, 0x78, - 0xfe, 0x22, 0x6e, 0x4d, 0x43, 0xa5, 0x82, 0xef, 0xc6, 0x94, 0x98, 0x42, - 0x49, 0xe3, 0xde, 0xc5, 0xa8, 0x37, 0xbb, 0x11, 0x8e, 0x6f, 0xe8, 0xbe, - 0xb2, 0x3d, 0xe4, 0xfc, 0x40, 0x44, 0x25, 0x47, 0x1b, 0xe3, 0x38, 0xef, - 0x2d, 0x3f, 0x76, 0x93, 0xdd, 0x61, 0x67, 0x80, 0x99, 0x15, 0x3e, 0xf9, - 0xcf, 0x46, 0x5e, 0x70, 0xd1, 0x09, 0x79, 0xb7, 0x65, 0x25, 0xa8, 0x43, - 0xc9, 0xcb, 0x11, 0x62, 0x51, 0x44, 0x29, 0x95, 0x90, 0xb1, 0x7b, 0x28, - 0xca, 0x7c, 0x9c, 0xc5, 0x0d, 0x69, 0xea, 0xd8, 0x61, 0xc8, 0xdc, 0x9d, - 0xba, 0xd8, 0x8c, 0x60, 0xe2, 0x59, 0x2d, 0xd2, 0x92, 0x62, 0x3e, 0x0f, - 0x66, 0x52, 0x22, 0x0c, 0x20, 0xaf, 0x91, 0x2c, 0xdd, 0x6e, 0xf6, 0xe8, - 0x8d, 0xc6, 0x5f, 0xe2, 0x2d, 0xc2, 0x2f, 0xe4, 0x9b, 0xfe, 0x79, 0xee, - 0x2b, 0x29, 0xbe, 0x6e, 0xde, 0x88, 0xc8, 0x4a, 0x15, 0x1e, 0xd6, 0x4e, - 0x4a, 0x26, 0x6b, 0x68, 0x72, 0x81, 0xfd, 0x9a, 0x4b, 0xab, 0x62, 0x2f, - 0xb4, 0x88, 0x89, 0x42, 0xea, 0x98, 0xe5, 0x41, 0x17, 0xd2, 0x1c, 0xcc, - 0x53, 0xda, 0xc0, 0xeb, 0xb0, 0xc6, 0x34, 0x58, 0x9d, 0x0f, 0x70, 0x4c, - 0x31, 0xdd, 0xfe, 0x5f, 0x9f, 0x0c, 0x46, 0x98, 0x3d, 0xd4, 0x9b, 0x53, - 0xcb, 0x96, 0x19, 0xd6, 0x5e, 0xba, 0x91, 0x18, 0xa7, 0xc9, 0x45, 0x00, - 0xcc, 0x2b, 0xbb, 0x65, 0x39, 0xcc, 0xe6, 0x6c, 0xdd, 0xa0, 0x61, 0x05, - 0x5e, 0x73, 0xfc, 0xb1, 0x7b, 0x7d, 0xf8, 0x82, 0xb8, 0xc3, 0x62, 0x77, - 0xfe, 0x3b, 0xec, 0xc8, 0x67, 0xfb, 0xc0, 0x9f, 0x74, 0x70, 0x56, 0x94, - 0xc0, 0x0a, 0x17, 0x0a, 0xef, 0x02, 0xec, 0x3d, 0xa8, 0xec, 0xf0, 0x3a, - 0xb2, 0x27, 0x91, 0xc9, 0x09, 0xd2, 0x3a, 0x8b, 0xec, 0x32, 0x85, 0xed, - 0x73, 0x94, 0xb2, 0x8b, 0x8c, 0xdc, 0x2b, 0xa7, 0xce, 0xc8, 0xc6, 0xa8, - 0x9c, 0x1e, 0x78, 0x2e, 0x44, 0x8d, 0x71, 0xc6, 0x5d, 0xd5, 0x95, 0x87, - 0x25, 0x87, 0xdf, 0x4c, 0x4e, 0xc6, 0x28, 0x74, 0x61, 0x65, 0x2f, 0xc4, - 0xe6, 0x24, 0x11, 0x18, 0xea, 0xf9, 0xbd, 0x67, 0xab, 0xa8, 0x46, 0x09, - 0xde, 0x39, 0xcd, 0xec, 0x72, 0x4d, 0x8d, 0xae, 0x1a, 0x92, 0x10, 0xb0, - 0x62, 0xf1, 0x61, 0x75, 0x70, 0xa6, 0x5c, 0x82, 0xb5, 0xa1, 0x66, 0x88, - 0xa1, 0xe4, 0x37, 0xbe, 0x9c, 0xb3, 0x88, 0x94, 0xa6, 0x7e, 0xc9, 0xdb, - 0x8d, 0xbc, 0xde, 0x5e, 0x8b, 0xb2, 0xee, 0xc8, 0x25, 0xbc, 0x79, 0x95, - 0xf6, 0xcb, 0xac, 0x7d, 0xc0, 0xb5, 0xee, 0x98, 0x46, 0x3a, 0xa3, 0x58, - 0x3a, 0x12, 0x32, 0xef, 0x8d, 0xc0, 0x6e, 0x9d, 0x14, 0xa4, 0x1a, 0x38, - 0x6c, 0x5c, 0x1d, 0xf0, 0x89, 0xd5, 0x3e, 0xf7, 0x0a, 0x3c, 0x33, 0xf6, - 0x8b, 0xf8, 0x4c, 0x93, 0x95, 0x59, 0x19, 0xfd, 0x86, 0x14, 0x36, 0xd2, - 0xde, 0x53, 0xe1, 0x2a, 0xaf, 0xb0, 0x26, 0xbe, 0x97, 0x79, 0xde, 0x28, - 0x53, 0x29, 0xc2, 0x66, 0x2b, 0xf5, 0x62, 0x3b, 0xc9, 0x82, 0x57, 0x15, - 0x57, 0x9e, 0x85, 0x3d, 0xa9, 0xd9, 0xd9, 0x75, 0x30, 0x39, 0xc6, 0x3f, - 0x0a, 0x79, 0x1b, 0x71, 0x7a, 0xf1, 0x6c, 0x10, 0xdf, 0x4e, 0x5f, 0xc4, - 0x21, 0xcd, 0xd1, 0xaa, 0x5c, 0xf5, 0x5a, 0x0d, 0x18, 0x48, 0xbf, 0xb3, - 0x51, 0x5a, 0x21, 0x9b, 0x0d, 0x45, 0x01, 0xe8, 0xca, 0xe6, 0xbc, 0xe9, - 0x8e, 0xb2, 0xa1, 0x78, 0x65, 0x26, 0x1f, 0x59, 0x45, 0x47, 0xb4, 0x62, - 0xbe, 0x29, 0x4d, 0xc1, 0x78, 0x97, 0xd2, 0xb0, 0xca, 0x94, 0x81, 0x76, - 0xca, 0xec, 0xc4, 0xd1, 0xdd, 0xa9, 0x49, 0x3a, 0xbb, 0x12, 0xf5, 0xa8, - 0xe8, 0xb7, 0xe0, 0xc2, 0x9a, 0x25, 0x35, 0x72, 0xe3, 0x97, 0xd2, 0x56, - 0x3c, 0x2f, 0x2c, 0x56, 0xee, 0x41, 0xfc, 0xd6, 0x5c, 0x72, 0x8c, 0x24, - 0x26, 0xc3, 0x5b, 0xb3, 0x5d, 0x71, 0x5e, 0xc2, 0x20, 0x41, 0x07, 0x3e, - 0x35, 0xfc, 0xac, 0x74, 0x9a, 0x06, 0xc8, 0x96, 0x60, 0x44, 0x09, 0xb2, - 0x71, 0x5a, 0x98, 0x13, 0x3b, 0x78, 0x64, 0x9f, 0x2e, 0x69, 0x02, 0x34, - 0x0b, 0xbb, 0x81, 0x58, 0x8c, 0xb9, 0x23, 0x0b, 0x05, 0x46, 0xc9, 0xad, - 0x36, 0x79, 0x6e, 0xa8, 0x0b, 0x0f, 0x87, 0xa0, 0x61, 0xc5, 0xa4, 0x77, - 0x2a, 0xff, 0x69, 0x88, 0x27, 0xd7, 0x68, 0x12, 0x54, 0x28, 0x12, 0x3d, - 0xe3, 0xab, 0xbe, 0x92, 0xa3, 0x1d, 0x11, 0x85, 0x62, 0xbb, 0x39, 0x59, - 0x77, 0xb9, 0x67, 0x4a, 0x31, 0xbc, 0x92, 0xd4, 0xa7, 0x01, 0x89, 0x8c, - 0x1a, 0x2f, 0xba, 0x4e, 0xf8, 0xcd, 0x40, 0xa7, 0xbe, 0x11, 0xb9, 0xa0, - 0xac, 0x2e, 0x3d, 0xd1, 0xc3, 0xac, 0x61, 0xd3, 0x80, 0x8d, 0x2a, 0x00, - 0x69, 0x7b, 0x8b, 0x99, 0x1d, 0x52, 0x1d, 0x4e, 0xfb, 0xeb, 0x8b, 0x27, - 0xd1, 0x10, 0x8d, 0xee, 0x51, 0x2f, 0x31, 0x39, 0x9c, 0x60, 0x21, 0xa7, - 0x22, 0x8f, 0x72, 0x33, 0xe6, 0x32, 0x4f, 0x84, 0xdc, 0x0a, 0xe5, 0xed, - 0xbe, 0xa7, 0xac, 0xfb, 0x47, 0xe0, 0x8e, 0xfc, 0x0b, 0xeb, 0x9c, 0x3b, - 0x05, 0x75, 0x46, 0x17, 0xa9, 0xe3, 0xcb, 0xf9, 0x83, 0x17, 0x37, 0xff, - 0x17, 0x88, 0x2c, 0x72, 0x35, 0x92, 0x3a, 0xc1, 0x44, 0x2a, 0x7e, 0xa7, - 0xf6, 0x9a, 0xe5, 0x0a, 0xa1, 0x21, 0x08, 0xde, 0xb5, 0xff, 0xa2, 0x02, - 0x51, 0xcc, 0x4b, 0xda, 0x89, 0xa9, 0xd5, 0xc8, 0x1d, 0x81, 0x7e, 0xed, - 0xb9, 0x1a, 0x93, 0xf2, 0x05, 0x6e, 0x4f, 0x57, 0x77, 0x3b, 0xf9, 0xdd, - 0xf3, 0xe2, 0xca, 0xbc, 0x03, 0x4e, 0xaa, 0xd9, 0xc3, 0x82, 0x3a, 0x2c, - 0x5e, 0xc9, 0x06, 0x3a, 0xb2, 0xed, 0x8b, 0x01, 0x02, 0x40, 0xf2, 0xed, - 0xeb, 0x80, 0x0e, 0xf6, 0xa0, 0x42, 0x68, 0xcb, 0xfb, 0xc4, 0x4f, 0x58, - 0xb5, 0x6c, 0xca, 0x00, 0xb2, 0x25, 0x19, 0xc9, 0x40, 0x35, 0x47, 0x4f, - 0x4f, 0xc7, 0x06, 0x59, 0x33, 0x43, 0x48, 0xdf, 0x69, 0xc9, 0x06, 0x35, - 0xe0, 0x00, 0x80, 0x11, 0x41, 0x89, 0x15, 0x4a, 0x55, 0x9a, 0xbd, 0x48, - 0x1a, 0x88, 0x6f, 0x20, 0xd4, 0x12, 0x88, 0xba, 0xb5, 0x49, 0xc2, 0x73, - 0xe0, 0x2c, 0x64, 0x68, 0xba, 0xde, 0x33, 0x01, 0x6f, 0x7f, 0x39, 0x7f, - 0x4a, 0xba, 0xbe, 0x25, 0x6b, 0xc5, 0x32, 0x1f, 0xd2, 0x33, 0x7b, 0x59, - 0x78, 0x23, 0xeb, 0x83, 0xcd, 0x0c, 0x0b, 0x02, 0x46, 0x18, 0x68, 0x18, - 0x53, 0xb1, 0x1a, 0xea, 0xc4, 0xc7, 0x94, 0x1c, 0x24, 0x6e, 0x31, 0xf6, - 0x4d, 0xe7, 0x9b, 0x89, 0x69, 0x33, 0xe4, 0xf1, 0xd0, 0xac, 0xe2, 0x57, - 0x70, 0x6d, 0xe9, 0x09, 0x59, 0x09, 0xee, 0x52, 0x54, 0xec, 0x01, 0x0e, - 0x79, 0x79, 0x3d, 0xe4, 0x78, 0x20, 0xea, 0x86, 0x46, 0x20, 0xb1, 0x38, - 0x1e, 0x29, 0xeb, 0xb3, 0xf2, 0x29, 0xc6, 0xec, 0x41, 0xae, 0x2a, 0xf4, - 0xe9, 0xc6, 0x69, 0x39, 0x62, 0x5a, 0x9b, 0xe6, 0xd9, 0xd5, 0xa3, 0x1b, - 0xb7, 0xba, 0xbf, 0xd3, 0x4d, 0xc9, 0x21, 0xef, 0x2b, 0x71, 0x3c, 0x8b, - 0x4a, 0xb8, 0x2f, 0x31, 0x6b, 0x63, 0x22, 0xb5, 0x42, 0x32, 0x61, 0x3d, - 0x6b, 0x4c, 0x97, 0xa8, 0x17, 0x86, 0x32, 0x69, 0xf0, 0x64, 0x72, 0x35, - 0x66, 0x41, 0xa5, 0xa4, 0x52, 0x70, 0x42, 0x05, 0x5a, 0xec, 0x2e, 0x3e, - 0x3c, 0x43, 0xc0, 0xa7, 0xb0, 0x78, 0xf1, 0x49, 0xd0, 0x77, 0x0d, 0x7c, - 0x86, 0x5b, 0x67, 0x2b, 0x2a, 0x84, 0x41, 0xd5, 0xaf, 0xb7, 0x87, 0xdb, - 0x1e, 0x0f, 0x4b, 0xc8, 0x56, 0xd0, 0xa3, 0x66, 0x1a, 0x6f, 0xcb, 0x65, - 0x40, 0xfc, 0xbe, 0xa6, 0x1e, 0x52, 0x41, 0xe2, 0xda, 0xc6, 0x5e, 0x9e, - 0xbb, 0xcf, 0xaf, 0x7e, 0x1a, 0xd2, 0x22, 0xa1, 0x27, 0xdd, 0x0d, 0x12, - 0xd7, 0x1f, 0xbc, 0x22, 0xe6, 0x14, 0xd8, 0x3a, 0x62, 0x17, 0x1c, 0xab, - 0xdb, 0x94, 0x78, 0xfd, 0x5f, 0x44, 0xe3, 0xcb, 0x79, 0xcc, 0x7f, 0x75, - 0xa2, 0xca, 0xf1, 0x87, 0xfe, 0xbf, 0xec, 0xf3, 0xb1, 0x39, 0xe3, 0xbb, - 0xa5, 0x32, 0x4d, 0xe3, 0xc6, 0x3a, 0x7f, 0x22, 0x77, 0x27, 0x80, 0x5a, - 0x7d, 0x4e, 0xb9, 0xf7, 0x16, 0xeb, 0xf1, 0x58, 0xcc, 0x5f, 0xb7, 0xc0, - 0x2a, 0x96, 0x65, 0xd2, 0x70, 0x88, 0xb4, 0xf3, 0xd8, 0x2e, 0x29, 0xb9, - 0xc9, 0xb7, 0xc9, 0x56, 0xd0, 0x32, 0x4e, 0x70, 0xa5, 0x1b, 0xfb, 0xc6, - 0x9c, 0x89, 0x16, 0x2d, 0x75, 0x01, 0xbc, 0x72, 0x4a, 0xd5, 0x52, 0x94, - 0x22, 0x51, 0xe8, 0xe1, 0xf1, 0xb8, 0x0a, 0x40, 0xe5, 0xe6, 0x94, 0xbb, - 0x3a, 0xb8, 0x40, 0x7e, 0x26, 0x4f, 0x4d, 0xd4, 0x83, 0x49, 0x70, 0x16, - 0xa4, 0x27, 0xfd, 0x63, 0x37, 0xb5, 0x15, 0x7d, 0x19, 0xfc, 0x06, 0x8a, - 0x7a, 0xaf, 0x69, 0x7e, 0xbb, 0xe9, 0xd1, 0x91, 0xfe, 0x93, 0x1f, 0xfd, - 0xcd, 0x3f, 0xd8, 0x66, 0x12, 0x79, 0x63, 0xcc, 0x14, 0xe9, 0x96, 0xfb, - 0x39, 0x34, 0x7b, 0xcd, 0x80, 0x04, 0x73, 0xc0, 0x60, 0xc3, 0xf5, 0x25, - 0xe3, 0x98, 0x01, 0x3b, 0xd2, 0x6d, 0x72, 0x1e, 0xaf, 0xe9, 0x80, 0x62, - 0xb2, 0xe3, 0x63, 0x2d, 0xbd, 0xf0, 0xfc, 0xaa, 0xfb, 0x51, 0xc4, 0xfb, - 0x95, 0xf7, 0x8c, 0x78, 0xcc, 0xe1, 0x3f, 0x5e, 0xdd, 0x89, 0x9e, 0x49, - 0xe2, 0x07, 0xb2, 0x06, 0x95, 0x43, 0xe4, 0x12, 0xc9, 0xe6, 0x75, 0xde, - 0x8d, 0x10, 0xec, 0x36, 0x75, 0x5d, 0xac, 0xf4, 0x33, 0x4b, 0x25, 0xb1, - 0xc0, 0x91, 0x15, 0x07, 0xbb, 0xb6, 0xc4, 0xae, 0xa1, 0x21, 0xa6, 0xd7, - 0xac, 0xf0, 0x52, 0xca, 0x6e, 0x1e, 0x94, 0x0b, 0xc5, 0xb8, 0x23, 0x23, - 0xf9, 0x51, 0xe1, 0x42, 0x00, 0x31, 0x71, 0xd7, 0xd4, 0xbe, 0x7b, 0xf8, - 0x59, 0xfc, 0x42, 0x43, 0xbf, 0xe2, 0xf2, 0xa6, 0xce, 0x21, 0xea, 0xd7, - 0xbd, 0x53, 0x54, 0x10, 0xdd, 0x78, 0x00, 0x41, 0x9d, 0xd8, 0xfb, 0x92, - 0x41, 0x06, 0x39, 0xed, 0xc3, 0x3a, 0x14, 0x55, 0x29, 0x1e, 0x7b, 0x30, - 0xfb, 0x36, 0x6e, 0x79, 0xf6, 0x3d, 0x58, 0xc7, 0x5d, 0x0a, 0xd0, 0x16, - 0xea, 0x3c, 0x89, 0xb2, 0xb2, 0x97, 0xef, 0xff, 0x29, 0x3a, 0x90, 0xbe, - 0xa9, 0x9d, 0x12, 0x0c, 0x27, 0x31, 0xdd, 0x9c, 0xed, 0x8b, 0xdb, 0xd1, - 0x14, 0x83, 0x3a, 0x1d, 0x7d, 0x42, 0x4d, 0x09, 0x08, 0xfc, 0xe3, 0x6a, - 0x55, 0xdb, 0xae, 0x99, 0x01, 0x49, 0x4d, 0x17, 0xd2, 0xf1, 0xc5, 0xfc, - 0x80, 0xdc, 0x38, 0xd8, 0x89, 0x6e, 0x9f, 0x85, 0xa4, 0x79, 0xd9, 0x90, - 0x70, 0x83, 0x0f, 0xcf, 0x70, 0x85, 0x2e, 0x4a, 0x57, 0xc6, 0xa6, 0x1f, - 0x15, 0xc2, 0x6a, 0x97, 0xac, 0xb1, 0xd5, 0xdb, 0x54, 0xf4, 0xe8, 0x33, - 0x85, 0xc8, 0xff, 0x52, 0x4f, 0x6d, 0xc5, 0x12, 0x71, 0xb0, 0x9a, 0x3a, - 0xe0, 0xff, 0x8b, 0x12, 0x47, 0xc6, 0x95, 0x0a, 0xf5, 0xa3, 0x80, 0xf6, - 0xc0, 0xa1, 0xd7, 0x52, 0xfa, 0x60, 0x41, 0x6a, 0x1c, 0xca, 0x9c, 0x4f, - 0xfa, 0xbb, 0x48, 0x8b, 0x17, 0x47, 0xeb, 0xb7, 0xb4, 0x08, 0x30, 0xc2, - 0x22, 0x99, 0x54, 0x01, 0xc7, 0x7e, 0xe8, 0x1a, 0xd1, 0x1f, 0x20, 0x94, - 0xfc, 0xe1, 0x65, 0x67, 0x14, 0x44, 0xcb, 0xa9, 0x93, 0x35, 0xb6, 0xc9, - 0x9e, 0x90, 0x83, 0x82, 0xd1, 0x4c, 0xd8, 0xd1, 0xeb, 0x93, 0x8a, 0x47, - 0x6c, 0x95, 0xde, 0x6a, 0x25, 0x79, 0x8f, 0x7e, 0xe2, 0x8f, 0x1a, 0xa3, - 0xbe, 0x76, 0xe6, 0xa8, 0x6c, 0xb4, 0x2e, 0xb8, 0xaa, 0x72, 0xfd, 0x28, - 0x95, 0x26, 0x0d, 0xa7, 0xa7, 0x75, 0x6c, 0xbf, 0x53, 0x41, 0x41, 0x1a, - 0xb9, 0x75, 0x8f, 0xc6, 0x91, 0xcd, 0x83, 0x95, 0xae, 0xe3, 0x8f, 0xb5, - 0xf9, 0x13, 0x23, 0x74, 0x07, 0x6d, 0x11, 0xd6, 0xc5, 0xfa, 0x90, 0x86, - 0xe3, 0xe0, 0x1a, 0xcc, 0x69, 0x68, 0xb1, 0x9c, 0x9c, 0x61, 0xa0, 0xcf, - 0x52, 0xdf, 0xe4, 0xeb, 0x01, 0x93, 0x2b, 0x7d, 0x20, 0xd6, 0x96, 0xc2, - 0xef, 0x62, 0xa2, 0xa3, 0x1e, 0x7a, 0x0b, 0x95, 0x3b, 0xa0, 0x5d, 0xbb, - 0x84, 0x87, 0xb1, 0x23, 0xed, 0x31, 0x65, 0x94, 0x31, 0xf1, 0xc8, 0xbf, - 0x9b, 0x0b, 0x87, 0x13, 0x0e, 0xff, 0x3f, 0x8e, 0x53, 0x9c, 0xef, 0x02, - 0xd3, 0xf3, 0x00, 0xf9, 0xf1, 0x12, 0xbe, 0x1b, 0x40, 0xc2, 0xe5, 0xb2, - 0x4b, 0x6e, 0xae, 0x82, 0x45, 0x37, 0x15, 0xc8, 0x24, 0x15, 0x1c, 0xd8, - 0xa8, 0x8a, 0xd1, 0x48, 0x1e, 0x32, 0x3e, 0x4c, 0x10, 0x2f, 0xc4, 0xa5, - 0x30, 0x76, 0x89, 0x1d, 0xb5, 0x3f, 0xb5, 0x9a, 0x02, 0x61, 0xf3, 0x8d, - 0xd6, 0x94, 0xbe, 0x74, 0x75, 0x19, 0x3c, 0x48, 0x0e, 0x58, 0x70, 0x87, - 0xc6, 0xb2, 0x47, 0x88, 0x9a, 0x05, 0xc9, 0xf7, 0xbc, 0x44, 0xe3, 0xc3, - 0xa0, 0x65, 0xbc, 0xe5, 0x69, 0x6c, 0x45, 0xd2, 0x57, 0x66, 0x1d, 0x17, - 0x0f, 0x18, 0x2d, 0xd0, 0xd7, 0xfd, 0xd6, 0xcd, 0xe0, 0x89, 0xa9, 0x23, - 0x76, 0x51, 0x71, 0x81, 0x74, 0x10, 0x41, 0x3b, 0xc9, 0x08, 0xe7, 0x5a, - 0x39, 0x64, 0x03, 0x5c, 0xab, 0x5c, 0x39, 0x09, 0x4e, 0x57, 0xe1, 0xb9, - 0xdf, 0xec, 0x42, 0x48, 0x8f, 0x05, 0x2e, 0xb1, 0xba, 0x4f, 0xce, 0x7d, - 0x1e, 0xf6, 0xab, 0x62, 0xd3, 0xf3, 0xc6, 0x33, 0x16, 0x06, 0x40, 0xc0, - 0x0e, 0xdc, 0x05, 0x47, 0x77, 0x5c, 0xcf, 0x66, 0x83, 0xa9, 0x08, 0x56, - 0x24, 0x5b, 0x69, 0x5e, 0x84, 0x9b, 0xd0, 0xdb, 0xe5, 0x6b, 0xf0, 0xda, - 0x0d, 0xb7, 0xc4, 0x90, 0x74, 0xa3, 0x50, 0x31, 0x6c, 0xb0, 0xfd, 0x71, - 0xcd, 0x2c, 0x7d, 0x14, 0x8f, 0x80, 0x6d, 0xcf, 0x91, 0xef, 0x19, 0xef, - 0x5e, 0x3a, 0x81, 0x8b, 0x97, 0x5a, 0x32, 0xed, 0x8d, 0xe4, 0x2e, 0x24, - 0xbc, 0x16, 0xf9, 0xd3, 0xe8, 0x01, 0x02, 0x30, 0x23, 0x09, 0x7e, 0x77, - 0x2b, 0x55, 0x1f, 0xbc, 0xd6, 0xd1, 0x38, 0xe2, 0xc1, 0xb4, 0xe3, 0xd6, - 0x03, 0x08, 0x95, 0xd0, 0x42, 0xbb, 0x0f, 0x45, 0x2a, 0x8d, 0x8c, 0xbb, - 0x62, 0x10, 0x99, 0xac, 0x3d, 0xbc, 0x6c, 0x53, 0x6a, 0xce, 0x13, 0x85, - 0x2b, 0xff, 0xf2, 0xbe, 0xe0, 0xba, 0x65, 0xa9, 0x58, 0x59, 0xcb, 0x62, - 0x9e, 0x78, 0x08, 0xdc, 0x30, 0x53, 0x0a, 0xbf, 0x3a, 0x75, 0x97, 0xe2, - 0x8e, 0x90, 0xeb, 0x2c, 0x12, 0x4f, 0x0c, 0xdc, 0xc8, 0x8f, 0xaf, 0xdc, - 0x73, 0x00, 0x20, 0x9b, 0x50, 0xd2, 0xa1, 0x9c, 0xf6, 0xa6, 0x7b, 0x61, - 0x82, 0xca, 0xd3, 0x14, 0x50, 0xc5, 0xf8, 0x5c, 0x0a, 0xa2, 0x3c, 0x43, - 0x8e, 0x82, 0x69, 0xbd, 0x37, 0xc1, 0x31, 0x9a, 0x95, 0xf3, 0x02, 0xd4, - 0xee, 0x27, 0x26, 0x78, 0xaf, 0xf2, 0x70, 0xae, 0x01, 0x34, 0xdf, 0xc4, - 0xc6, 0x26, 0xb3, 0x3e, 0xdd, 0xe0, 0xf5, 0xcf, 0x80, 0xcc, 0x4d, 0x7a, - 0x59, 0x47, 0xfc, 0xec, 0x26, 0x43, 0x2f, 0x39, 0x18, 0x0e, 0x7f, 0x96, - 0xca, 0x28, 0xc7, 0x93, 0xde, 0xfe, 0x72, 0x7c, 0x47, 0x4e, 0xe4, 0xbf, - 0x0d, 0xdb, 0xff, 0xcc, 0x46, 0xf3, 0xda, 0xbc, 0x1d, 0xc6, 0xa7, 0xb3, - 0x33, 0x5b, 0x18, 0x6e, 0xdc, 0x99, 0x9c, 0x48, 0xbd, 0xba, 0xd8, 0x69, - 0x04, 0x2e, 0x33, 0x1a, 0x83, 0xea, 0x73, 0x8c, 0x7e, 0xcf, 0x84, 0x1c, - 0xda, 0xef, 0xba, 0xc3, 0x93, 0xc7, 0x81, 0xb5, 0x9b, 0xc2, 0x7d, 0x38, - 0x02, 0x3e, 0x71, 0x01, 0xd3, 0x21, 0x1a, 0x10, 0x6b, 0x7f, 0x21, 0x51, - 0xba, 0x0c, 0xe0, 0xfc, 0x27, 0x63, 0x37, 0x3d, 0x2e, 0x63, 0x70, 0x3f, - 0x6e, 0x94, 0x08, 0x56, 0xea, 0xb7, 0x63, 0xc3, 0x68, 0x2a, 0x1c, 0xa6, - 0xf2, 0xde, 0x59, 0x53, 0x81, 0x18, 0xfd, 0xd4, 0x67, 0xe8, 0xfb, 0x5a, - 0x42, 0xa9, 0x53, 0xa4, 0xfb, 0xfc, 0xb0, 0x72, 0x4c, 0x89, 0xdd, 0xb3, - 0x60, 0x47, 0x47, 0x93, 0xf7, 0x03, 0x29, 0x41, 0x73, 0x59, 0xd6, 0xa7, - 0xde, 0xe4, 0x66, 0x58, 0x43, 0x85, 0xf7, 0x05, 0xd1, 0xaa, 0xb0, 0x88, - 0x42, 0x96, 0xcc, 0x4e, 0x25, 0x8e, 0xc2, 0x36, 0x5f, 0x99, 0x6a, 0x70, - 0x63, 0xfa, 0xe5, 0xf0, 0xf1, 0xa6, 0xbb, 0x4c, 0x70, 0x8d, 0x1f, 0x06, - 0x08, 0x93, 0xdc, 0x1c, 0xf7, 0xc0, 0x8e, 0x96, 0x02, 0xb2, 0x0f, 0x60, - 0x0d, 0x72, 0xb7, 0x7c, 0xca, 0x6e, 0x96, 0xfe, 0x54, 0xe4, 0xa0, 0x07, - 0x9a, 0xf8, 0x13, 0x15, 0xcc, 0xc4, 0x06, 0x6c, 0xa4, 0xfd, 0xf0, 0x63, - 0x6c, 0xa5, 0x2c, 0x95, 0xb5, 0xc5, 0x48, 0x55, 0xbf, 0x4b, 0xb3, 0x69, - 0x8f, 0x61, 0xe7, 0x6e, 0x37, 0x9b, 0xa3, 0xfa, 0x42, 0xf6, 0xdb, 0x45, - 0xd2, 0xc2, 0xff, 0x60, 0xee, 0xf9, 0x84, 0x74, 0x43, 0xdf, 0x8b, 0x82, - 0x62, 0x69, 0x02, 0x25, 0xfc, 0x63, 0xaf, 0x05, 0x08, 0xff, 0xca, 0xc1, - 0xd3, 0x42, 0xba, 0xb1, 0xea, 0xed, 0x69, 0x95, 0x92, 0x40, 0x0b, 0xf4, - 0xf0, 0x89, 0x83, 0xa6, 0xed, 0xb1, 0x01, 0x14, 0x47, 0x98, 0x33, 0x0f, - 0xfb, 0xf5, 0x46, 0x59, 0x9d, 0x2e, 0x89, 0x8f, 0xcf, 0xca, 0x8a, 0x55, - 0x44, 0xf6, 0xfc, 0x71, 0xe3, 0x7c, 0x8d, 0x2d, 0x3c, 0xce, 0xb9, 0xde, - 0x90, 0xd8, 0xb0, 0x62, 0x2b, 0xb1, 0xb8, 0xe3, 0xbd, 0x2a, 0xe7, 0xa9, - 0xe4, 0xaf, 0xfb, 0x35, 0xf1, 0x50, 0xff, 0xbb, 0x77, 0x5b, 0xc3, 0xfd, - 0x72, 0x02, 0x25, 0x51, 0x29, 0xed, 0x2b, 0xbf, 0x66, 0x00, 0x09, 0x1e, - 0x28, 0xe2, 0xba, 0xde, 0xea, 0x6b, 0x67, 0x1d, 0xe8, 0x0a, 0xa5, 0xff, - 0xa0, 0x9e, 0x0f, 0x8f, 0x6b, 0xdd, 0xdf, 0x9a, 0xa1, 0xd6, 0xe3, 0xcb, - 0x99, 0x91, 0x6f, 0xb5, 0x83, 0x93, 0x98, 0xdd, 0xb4, 0xae, 0xbc, 0xce, - 0x02, 0x66, 0xa0, 0x7c, 0x95, 0x88, 0x7d, 0x62, 0x56, 0x2b, 0x9f, 0x0a, - 0x1c, 0x7a, 0x39, 0xb5, 0xba, 0x34, 0x3a, 0xd9, 0xf5, 0xd7, 0xda, 0xaa, - 0xab, 0xac, 0x35, 0xb3, 0xf0, 0x5d, 0x21, 0xf2, 0x65, 0x83, 0x39, 0xc5, - 0xa2, 0x11, 0x34, 0x84, 0x87, 0x01, 0x2e, 0x81, 0xa6, 0x3d, 0xed, 0x19, - 0x5e, 0x87, 0x82, 0xe5, 0x69, 0x98, 0xff, 0x8b, 0x1f, 0xb8, 0xd1, 0x76, - 0xdf, 0x92, 0x93, 0x22, 0x9d, 0x50, 0xdf, 0x41, 0xaf, 0x85, 0x2d, 0x94, - 0x8b, 0x3e, 0x5c, 0x18, 0x02, 0xa0, 0xeb, 0xd5, 0x97, 0x8a, 0xe8, 0xae, - 0xab, 0x59, 0x18, 0xa5, 0xf5, 0xea, 0x42, 0x2b, 0x16, 0x0e, 0xc0, 0xe6, - 0x0f, 0x48, 0x41, 0x23, 0x0f, 0x17, 0x4a, 0x0e, 0x91, 0x74, 0x4d, 0xe2, - 0x2e, 0x85, 0x26, 0x0b, 0xfb, 0x2d, 0x6b, 0xa6, 0x15, 0x17, 0xdc, 0x87, - 0x4e, 0x67, 0x07, 0xc5, 0xb5, 0x60, 0xde, 0x57, 0x3c, 0x19, 0xc1, 0x27, - 0xc6, 0x0a, 0x03, 0xc2, 0x90, 0x53, 0x7e, 0x6c, 0xdd, 0xa1, 0x9b, 0x2a, - 0xc6, 0xe6, 0x3f, 0x73, 0x6d, 0xbd, 0x25, 0xb2, 0x06, 0xd2, 0x27, 0xcb, - 0xee, 0x34, 0x88, 0xa6, 0xcf, 0xb3, 0xab, 0xb3, 0x1a, 0x0d, 0x6b, 0xfd, - 0x9c, 0xb6, 0x89, 0x96, 0xa9, 0x31, 0xbc, 0x26, 0xe9, 0x18, 0xdf, 0x17, - 0x57, 0x7b, 0xd1, 0xcc, 0x4b, 0xa0, 0x60, 0x40, 0x16, 0x62, 0x20, 0x98, - 0x3c, 0x00, 0x4a, 0x38, 0xbe, 0x84, 0x56, 0x03, 0x44, 0x10, 0x8d, 0x7a, - 0xaf, 0x9f, 0xbb, 0xd6, 0x6d, 0x46, 0xf1, 0x85, 0x45, 0x4a, 0xda, 0x75, - 0x24, 0x64, 0x14, 0x52, 0x6b, 0x95, 0x03, 0x29, 0xd8, 0xbf, 0xcf, 0x44, - 0xde, 0x75, 0x7f, 0xb8, 0xe5, 0xc1, 0xb9, 0x13, 0xb3, 0x78, 0xb6, 0x67, - 0x5c, 0x34, 0x2b, 0x47, 0x9b, 0xa8, 0x95, 0x11, 0xea, 0x27, 0xd7, 0xe7, - 0xb9, 0xab, 0x61, 0xe4, 0xe6, 0xf3, 0x4a, 0x57, 0x7a, 0x77, 0xd2, 0xa2, - 0xe9, 0x69, 0x90, 0x0d, 0x07, 0x21, 0x59, 0x47, 0xff, 0x38, 0x6f, 0xea, - 0x65, 0xf3, 0x31, 0x43, 0x17, 0x5d, 0x3b, 0x59, 0x6f, 0x0c, 0x10, 0x3a, - 0xbc, 0x52, 0xdd, 0x17, 0x9d, 0x00, 0x4b, 0xf7, 0xd3, 0xea, 0xfe, 0xa3, - 0x8e, 0x2b, 0x41, 0x25, 0x88, 0x20, 0x6e, 0xb4, 0xda, 0x11, 0x01, 0xd4, - 0x0f, 0xbd, 0x97, 0xc1, 0x64, 0xf0, 0x93, 0xcb, 0x64, 0xb9, 0xf7, 0x21, - 0x30, 0x24, 0x38, 0x0d, 0x76, 0x18, 0x6c, 0x93, 0x93, 0xc4, 0x18, 0x05, - 0x2f, 0x9d, 0x97, 0xdd, 0x15, 0x74, 0xdc, 0x7a, 0xe2, 0xc6, 0x84, 0xf0, - 0xbc, 0x8b, 0xe8, 0x58, 0xef, 0xd8, 0xd1, 0xe0, 0xda, 0x4b, 0x56, 0x3f, - 0xe7, 0x01, 0x4d, 0x0b, 0xcc, 0x83, 0xd6, 0xb5, 0xad, 0x19, 0xc9, 0xf8, - 0x14, 0xb6, 0x61, 0x98, 0x83, 0xe0, 0x1a, 0xb9, 0x35, 0xc2, 0x3a, 0x19, - 0x96, 0xcd, 0xcd, 0xbf, 0x49, 0x5e, 0x3d, 0x63, 0x2e, 0x69, 0x96, 0x1e, - 0xb6, 0xd4, 0xce, 0x60, 0x59, 0x90, 0x0f, 0x46, 0x22, 0x32, 0xb7, 0xac, - 0x13, 0x12, 0x8a, 0x38, 0xff, 0xf0, 0x3e, 0x85, 0xab, 0xd4, 0x98, 0xf7, - 0xe5, 0x53, 0xac, 0x63, 0x9b, 0x65, 0x12, 0x28, 0xa8, 0x97, 0x29, 0xf1, - 0x6b, 0x45, 0x38, 0x1d, 0x9d, 0x7a, 0x85, 0x75, 0x50, 0x0d, 0x8c, 0x13, - 0x8d, 0xff, 0x77, 0xa7, 0x5f, 0x3c, 0xc3, 0xc5, 0x32, 0xd2, 0x40, 0xaa, - 0x08, 0x6c, 0x7f, 0x71, 0xb9, 0x88, 0xa2, 0xc4, 0x74, 0x1b, 0x2d, 0x65, - 0x4a, 0xa7, 0xa9, 0x05, 0x98, 0xc0, 0x0a, 0x2e, 0xf2, 0x56, 0x2b, 0xf0, - 0xb8, 0x08, 0x37, 0xaa, 0x8c, 0xf6, 0x2c, 0xe8, 0xf4, 0xb6, 0x64, 0x41, - 0xa2, 0x89, 0xf4, 0x7f, 0x93, 0x59, 0x92, 0x14, 0x9f, 0xb5, 0xed, 0x23, - 0x16, 0x63, 0x86, 0xfa, 0xf7, 0x07, 0xb6, 0x19, 0x61, 0x3d, 0x01, 0x22, - 0x01, 0x4b, 0x8d, 0x44, 0x03, 0x6a, 0x9c, 0x4e, 0x81, 0x69, 0x7e, 0xb8, - 0x55, 0xed, 0xd3, 0x78, 0xbf, 0x7f, 0xb9, 0xb3, 0x9a, 0x59, 0x41, 0x25, - 0x7a, 0xc8, 0xf1, 0xf3, 0xed, 0x0f, 0x68, 0xa4, 0xc8, 0x8f, 0x07, 0x46, - 0xf4, 0x1e, 0x9e, 0x69, 0xac, 0xfe, 0xa2, 0x42, 0x83, 0x1f, 0xda, 0x5b, - 0x9d, 0x13, 0xa5, 0x62, 0xcb, 0x56, 0xa5, 0x40, 0x15, 0xa9, 0xf3, 0x3a, - 0x8a, 0xb3, 0x0c, 0x2d, 0xee, 0xab, 0x18, 0x74, 0x48, 0x8a, 0x24, 0xf3, - 0xe8, 0x09, 0x7e, 0xad, 0xba, 0xa2, 0xe3, 0x56, 0xae, 0x5a, 0xd3, 0xe5, - 0x31, 0x43, 0xfe, 0xee, 0x2f, 0x78, 0x89, 0xe8, 0xec, 0xbc, 0x32, 0x40, - 0xf9, 0xb4, 0x32, 0xc2, 0x21, 0xfb, 0xc3, 0x17, 0x21, 0xbe, 0x23, 0xec, - 0x3c, 0x36, 0xa7, 0x70, 0xa3, 0x9f, 0x03, 0x16, 0x0e, 0x93, 0xc6, 0x55, - 0x70, 0x5c, 0x1d, 0x6f, 0x19, 0x55, 0xe9, 0xd6, 0xf2, 0xad, 0x4b, 0xf7, - 0x36, 0xa9, 0xdd, 0xa5, 0x49, 0xe4, 0x9c, 0xa8, 0x49, 0x9a, 0xe6, 0x6f, - 0xb3, 0x48, 0x35, 0xe3, 0x5e, 0x1a, 0xad, 0x09, 0x6d, 0x05, 0x7e, 0x56, - 0x41, 0xad, 0x2c, 0xb6, 0xce, 0xe7, 0x96, 0x2a, 0xf1, 0x93, 0xfa, 0x32, - 0x90, 0x6b, 0x34, 0xe1, 0x6e, 0xa7, 0x99, 0x5c, 0x1d, 0xea, 0x29, 0xa7, - 0xf2, 0x6f, 0xe7, 0xd5, 0x9e, 0x83, 0x23, 0x6e, 0x29, 0x4a, 0xa0, 0x77, - 0x2d, 0x9f, 0xa1, 0x47, 0x1b, 0x60, 0x43, 0x23, 0x9a, 0x88, 0xfe, 0xd4, - 0xd2, 0xa1, 0xbb, 0xc8, 0xc6, 0x66, 0xa2, 0xee, 0x6d, 0x3e, 0x49, 0x1a, - 0xb6, 0x0e, 0x5f, 0xde, 0x85, 0x7a, 0xab, 0x18, 0xfc, 0xc8, 0xbf, 0x96, - 0x7d, 0xf0, 0x18, 0x62, 0xf1, 0x6f, 0x54, 0xe3, 0x83, 0xb4, 0xfb, 0x46, - 0xed, 0x0f, 0x9b, 0x94, 0x7d, 0x2c, 0x89, 0xe2, 0x9a, 0x3d, 0xd9, 0x1c, - 0x3c, 0x9d, 0x94, 0x8e, 0x9c, 0xdf, 0x8a, 0x30, 0x99, 0x5a, 0x4e, 0x02, - 0x63, 0xe7, 0xc9, 0x14, 0x71, 0xef, 0x56, 0x14, 0xbf, 0x83, 0xe9, 0x95, - 0x5f, 0xd9, 0x2f, 0x48, 0xc9, 0xdf, 0x15, 0xd1, 0xa8, 0x78, 0x0f, 0x82, - 0x16, 0x89, 0xb9, 0xfa, 0x58, 0x52, 0x10, 0x46, 0x61, 0xc4, 0x15, 0x7c, - 0x9c, 0xb3, 0x73, 0x59, 0x1d, 0xe9, 0x07, 0x5d, 0x55, 0x49, 0x8e, 0xdd, - 0x2f, 0x49, 0x83, 0x2d, 0x6d, 0x8e, 0x4e, 0x69, 0x10, 0x0a, 0x60, 0xc6, - 0x7e, 0x77, 0x31, 0x98, 0xf4, 0x6a, 0xf2, 0x90, 0xa6, 0x82, 0x90, 0x31, - 0xd2, 0x6c, 0xf9, 0xfe, 0x63, 0x51, 0x05, 0xd2, 0x2d, 0xbc, 0xfb, 0x5b, - 0x1e, 0x77, 0x3a, 0x2f, 0x01, 0x3a, 0x6f, 0xf7, 0x14, 0x5c, 0x8b, 0xc8, - 0x4f, 0x5a, 0x76, 0xa5, 0xf8, 0x2e, 0xb4, 0x64, 0xdd, 0xc9, 0x67, 0xfb, - 0x8c, 0xbe, 0x69, 0x4f, 0x3e, 0xf3, 0x7c, 0x03, 0x57, 0xad, 0xa4, 0x37, - 0x3f, 0x58, 0x67, 0x30, 0xbe, 0x4c, 0x97, 0x23, 0x85, 0xbd, 0xc7, 0x87, - 0xad, 0x19, 0x27, 0x0e, 0x74, 0xab, 0x20, 0x1c, 0xec, 0xe5, 0x6c, 0x22, - 0x09, 0x3e, 0xa8, 0xe9, 0xdc, 0xf0, 0x56, 0xda, 0xf1, 0x88, 0x6e, 0x27, - 0x6c, 0x51, 0x6b, 0xaa, 0x11, 0x94, 0xc6, 0x21, 0x34, 0x13, 0xac, 0x8c, - 0xd0, 0x95, 0x35, 0xd9, 0x7a, 0x72, 0xfd, 0xd2, 0xaf, 0x62, 0x6c, 0x4c, - 0xb0, 0xe1, 0xf0, 0x4f, 0x1e, 0xfc, 0xd7, 0xcc, 0x65, 0x3e, 0x0f, 0x3b, - 0xb9, 0xbe, 0x7f, 0x66, 0xef, 0x32, 0xea, 0x40, 0xea, 0x0a, 0xc0, 0x3e, - 0x99, 0x35, 0x6b, 0x60, 0x80, 0xf1, 0x84, 0xa0, 0x6d, 0x45, 0x62, 0x0b, - 0xb1, 0x10, 0xef, 0x1b, 0x6b, 0xa3, 0x23, 0x7c, 0xf6, 0xb7, 0xf4, 0x2b, - 0x6c, 0x86, 0x6d, 0x81, 0xe9, 0x3a, 0x8b, 0x1d, 0xcc, 0x8c, 0xfc, 0xb7, - 0x87, 0xe3, 0x28, 0xe9, 0x91, 0x2f, 0x4b, 0x9b, 0x6d, 0x52, 0xfa, 0x24, - 0xce, 0xe8, 0x84, 0xff, 0x7d, 0xbb, 0x8d, 0x22, 0xf5, 0x89, 0x00, 0x47, - 0xac, 0x97, 0xfd, 0x2a, 0xb3, 0xce, 0x23, 0x2e, 0x1e, 0xf8, 0xb1, 0x87, - 0x35, 0xf6, 0xad, 0x34, 0x3e, 0x42, 0xc3, 0x15, 0x3c, 0x47, 0x43, 0xd8, - 0x0a, 0x20, 0x2f, 0xfa, 0xc2, 0x8f, 0x44, 0x68, 0xba, 0x79, 0x55, 0x0b, - 0xe7, 0xc6, 0xac, 0x36, 0x61, 0x1f, 0xf2, 0xfa, 0x81, 0x94, 0xd1, 0xd2, - 0xfd, 0x8a, 0xb9, 0x5f, 0xc7, 0x7e, 0x2a, 0xe2, 0x92, 0xd2, 0xd5, 0xf3, - 0x96, 0xdd, 0x05, 0xdd, 0xc9, 0x5f, 0xb4, 0x10, 0xca, 0xb7, 0xc0, 0xd7, - 0xbb, 0xd0, 0xc0, 0x04, 0x9d, 0x2e, 0x25, 0x81, 0xb6, 0x73, 0xd0, 0x8c, - 0x69, 0xa0, 0xce, 0x61, 0x94, 0xaa, 0x94, 0x90, 0xa6, 0x70, 0x95, 0x7a, - 0x10, 0x3d, 0x34, 0xe5, 0xdc, 0xac, 0x9d, 0x29, 0xac, 0xde, 0x02, 0x97, - 0xef, 0x3b, 0x34, 0x4e, 0x93, 0x52, 0x07, 0x5c, 0xb2, 0xa3, 0xcf, 0x78, - 0x35, 0x49, 0x9b, 0xbb, 0xc2, 0xfe, 0xe2, 0x94, 0xe1, 0x8e, 0x86, 0x8e, - 0x77, 0x92, 0xcd, 0xf5, 0x65, 0x60, 0xb8, 0x58, 0x04, 0xd8, 0xd1, 0x3c, - 0xe4, 0x09, 0x07, 0xf3, 0xa2, 0xc1, 0xc1, 0x91, 0x78, 0x25, 0x49, 0xa4, - 0x52, 0x76, 0xb4, 0x62, 0xc1, 0xa3, 0x55, 0x84, 0x52, 0xef, 0xd2, 0x7d, - 0x72, 0xd8, 0xaf, 0xef, 0x89, 0x2d, 0xec, 0xbe, 0x4b, 0x73, 0x5e, 0x1e, - 0xbd, 0x52, 0x1d, 0x45, 0x66, 0x69, 0xfd, 0xf7, 0x43, 0xdd, 0x90, 0xe3, - 0xda, 0x65, 0x24, 0x04, 0x5a, 0x47, 0xe2, 0x25, 0x68, 0xef, 0xbf, 0x00, - 0x27, 0x61, 0x63, 0x19, 0x05, 0xb3, 0x04, 0x35, 0x1a, 0x16, 0xd2, 0xd6, - 0x52, 0x91, 0x76, 0x63, 0xe9, 0x0b, 0xcb, 0xe4, 0xc9, 0x68, 0xcf, 0x6d, - 0x12, 0x14, 0xa2, 0xb1, 0x77, 0x62, 0x12, 0x7b, 0xb5, 0xf8, 0x4a, 0x33, - 0x20, 0x2c, 0x7e, 0xb9, 0xdd, 0x88, 0x5d, 0x7e, 0x2a, 0xd2, 0xb8, 0x0c, - 0x94, 0xaf, 0xfb, 0x84, 0x08, 0x4d, 0x53, 0x0d, 0x03, 0x81, 0x41, 0xbb, - 0xee, 0x9f, 0x7a, 0x71, 0x13, 0xe9, 0x60, 0x94, 0xd7, 0x92, 0x1e, 0xe4, - 0x9d, 0x13, 0x9f, 0x78, 0xee, 0x7a, 0xf9, 0x6e, 0x80, 0x23, 0x31, 0xe6, - 0x73, 0xa6, 0x64, 0xbf, 0x5d, 0x35, 0xdb, 0x74, 0x66, 0xfc, 0x4d, 0x8b, - 0x2b, 0xc4, 0xe2, 0x8f, 0x4c, 0x74, 0x6f, 0x3f, 0x77, 0x4e, 0xc1, 0xad, - 0x5f, 0x51, 0x7c, 0x43, 0x0d, 0x69, 0x11, 0x75, 0xaf, 0xd7, 0x4d, 0x07, - 0x96, 0xf3, 0xab, 0x9a, 0x87, 0x6e, 0x60, 0x79, 0xe2, 0x9f, 0x7a, 0x34, - 0x34, 0xbc, 0xec, 0xaa, 0x91, 0x2c, 0x55, 0x15, 0xfc, 0x2b, 0x26, 0x6f, - 0xd7, 0x99, 0x68, 0x27, 0xb0, 0x35, 0xfc, 0xaf, 0x0d, 0x5b, 0x7a, 0x39, - 0xa8, 0x13, 0xf3, 0xd9, 0xbe, 0xe3, 0x04, 0x37, 0x31, 0xa1, 0x36, 0xb4, - 0x06, 0xb8, 0xc6, 0x05, 0x62, 0x17, 0x90, 0x51, 0xaf, 0xac, 0x46, 0x1c, - 0xc9, 0x74, 0xf8, 0x3c, 0x82, 0x19, 0x21, 0x0e, 0xff, 0xb7, 0x5d, 0xe7, - 0xa2, 0x38, 0x2b, 0x64, 0xb4, 0x35, 0xe1, 0x95, 0x67, 0x59, 0x80, 0xcf, - 0x6f, 0xa6, 0x88, 0x93, 0xe7, 0xa8, 0x61, 0xfc, 0xd6, 0x0d, 0x5e, 0xfe, - 0x0e, 0x77, 0xe3, 0x6f, 0xa1, 0xfb, 0x53, 0x2b, 0x2a, 0xc8, 0xab, 0xf2, - 0x8a, 0xc3, 0xa3, 0xc9, 0xe5, 0xc8, 0x3c, 0xdc, 0x40, 0x9e, 0x5f, 0x63, - 0xb1, 0x50, 0x85, 0x2d, 0x42, 0xb9, 0x10, 0x31, 0x1d, 0x0c, 0x18, 0x0b, - 0xf8, 0x1f, 0x9f, 0x08, 0x70, 0x5e, 0x34, 0xd8, 0x61, 0xe7, 0x51, 0xfa, - 0xdc, 0xaf, 0x09, 0x7b, 0xe0, 0x90, 0x6d, 0x27, 0x91, 0x17, 0x85, 0xbf, - 0xe2, 0x39, 0x97, 0xab, 0x1e, 0x32, 0xa6, 0x56, 0x91, 0x2c, 0x72, 0xb0, - 0x63, 0x03, 0x28, 0x89, 0x3c, 0x2a, 0x5a, 0x91, 0xb1, 0xe9, 0x3c, 0xb6, - 0x9f, 0x4f, 0xf1, 0x58, 0xe0, 0x62, 0xef, 0xe7, 0x26, 0xfd, 0xf2, 0x71, - 0x09, 0x18, 0xad, 0x6e, 0x0d, 0x70, 0xa5, 0x5d, 0x3d, 0x74, 0xff, 0x27, - 0x9e, 0xf9, 0x46, 0x22, 0xb2, 0xc2, 0x6f, 0xdf, 0xa8, 0xd7, 0xe8, 0x61, - 0x98, 0xd4, 0x3d, 0xc3, 0x2a, 0x11, 0x24, 0xe5, 0x90, 0x02, 0x6d, 0xa5, - 0x6c, 0x6d, 0x1d, 0xb3, 0x6a, 0x66, 0x44, 0x9e, 0xcf, 0xe7, 0x73, 0xe9, - 0x1c, 0x70, 0x2f, 0xa4, 0x29, 0x2c, 0x96, 0xe1, 0xf8, 0xb6, 0x2a, 0x41, - 0xbe, 0x6e, 0x42, 0x4e, 0xc4, 0xc8, 0xc2, 0x3c, 0x93, 0xff, 0x78, 0x5b, - 0x2c, 0x80, 0x7e, 0x07, 0x4f, 0xb4, 0xb6, 0x0c, 0x42, 0x01, 0x27, 0x06, - 0x7c, 0xde, 0xc5, 0xde, 0x47, 0x6a, 0xbe, 0x35, 0x0a, 0xaf, 0x12, 0xc4, - 0x00, 0x88, 0xa4, 0xa9, 0xce, 0xaa, 0xcd, 0x96, 0x92, 0x2b, 0xc9, 0xb4, - 0xc1, 0x08, 0x35, 0x2c, 0x17, 0xd8, 0xf6, 0x16, 0x93, 0x5e, 0xbd, 0x9e, - 0xf5, 0x89, 0x47, 0xdc, 0x44, 0x02, 0x0a, 0x56, 0x04, 0x96, 0x11, 0x41, - 0xef, 0x2d, 0x9d, 0xea, 0x9e, 0x38, 0x00, 0xe1, 0x75, 0xd2, 0x5e, 0x07, - 0x22, 0x1f, 0x51, 0x20, 0xf8, 0x02, 0x08, 0x6d, 0x85, 0xc9, 0x99, 0xb5, - 0xd7, 0x6b, 0x92, 0xef, 0xdb, 0xe3, 0xbf, 0xce, 0x2a, 0x7f, 0x6b, 0xf6, - 0xe6, 0x43, 0x24, 0xf7, 0xcf, 0xcf, 0x38, 0x8d, 0x38, 0x25, 0x8a, 0xd1, - 0x83, 0x08, 0x69, 0x41, 0x38, 0xc5, 0x5f, 0x8c, 0xb4, 0xbb, 0x95, 0x1a, - 0x4f, 0x0b, 0x2f, 0x1f, 0x00, 0x3d, 0x87, 0x66, 0x58, 0xc8, 0x54, 0x3b, - 0x50, 0xec, 0x18, 0x2e, 0x3b, 0x09, 0x87, 0x76, 0x4c, 0x3f, 0x07, 0xaa, - 0x11, 0x8e, 0x81, 0x45, 0xe3, 0xac, 0x41, 0x76, 0x90, 0xac, 0x0d, 0xbc, - 0x44, 0x07, 0x9e, 0x10, 0x61, 0x9c, 0x57, 0x91, 0x7b, 0xfe, 0x90, 0xd0, - 0xd5, 0x95, 0x0e, 0xaf, 0xff, 0x2b, 0x4f, 0x05, 0x72, 0x47, 0x0b, 0x9d, - 0xd9, 0x61, 0xd3, 0xe5, 0x71, 0xff, 0xca, 0x9d, 0x0d, 0x28, 0x73, 0x09, - 0x55, 0x56, 0x01, 0x24, 0x44, 0xab, 0x2a, 0x7e, 0x99, 0xe4, 0x16, 0x10, - 0xf1, 0xdf, 0x53, 0xf2, 0x7f, 0xca, 0x3d, 0x76, 0xda, 0xb3, 0xe3, 0xbc, - 0x37, 0xb6, 0x99, 0x7f, 0xee, 0xd6, 0x2e, 0x56, 0x84, 0xf6, 0xbe, 0x89, - 0xc4, 0xd6, 0xfc, 0x1a, 0x8e, 0x85, 0x5f, 0xe3, 0xbc, 0x44, 0xe5, 0x8e, - 0x41, 0x26, 0x4e, 0x87, 0xc7, 0xfe, 0x20, 0x26, 0x93, 0x65, 0x82, 0xd1, - 0x85, 0x4a, 0xdb, 0xd6, 0x64, 0xc6, 0x2d, 0x4a, 0x7f, 0x0f, 0xb9, 0x54, - 0x01, 0x71, 0x99, 0xdb, 0xaa, 0x87, 0xb3, 0x5c, 0x4e, 0xb5, 0xb0, 0x74, - 0x78, 0x82, 0x74, 0x37, 0x8b, 0xba, 0xe2, 0x18, 0x68, 0x4b, 0x5b, 0x06, - 0x36, 0x9c, 0xca, 0x92, 0xfb, 0x85, 0x2d, 0xe6, 0x54, 0xa3, 0x84, 0xca, - 0x5a, 0x13, 0x60, 0xe5, 0xd6, 0x9c, 0x3f, 0xb9, 0xbf, 0x9f, 0x28, 0xe6, - 0x45, 0x2b, 0x96, 0xac, 0xe5, 0x6d, 0xc5, 0xce, 0x5c, 0xc1, 0x2f, 0xee, - 0xb3, 0x38, 0x2b, 0xcc, 0xa2, 0xb5, 0x15, 0x5a, 0xf2, 0x18, 0x69, 0xc3, - 0x25, 0xb9, 0x06, 0x16, 0x3f, 0x21, 0x85, 0xa3, 0x03, 0x16, 0xdf, 0x3a, - 0xec, 0x65, 0x7b, 0xa4, 0x69, 0xc7, 0x45, 0x72, 0x9f, 0xf3, 0x21, 0x3a, - 0x9a, 0xe2, 0x33, 0xad, 0xcb, 0x8b, 0xd0, 0x84, 0x04, 0x79, 0x1d, 0x45, - 0xee, 0xf3, 0xc8, 0x6f, 0xe9, 0x78, 0x28, 0x0e, 0x5c, 0xb8, 0x06, 0xee, - 0xd1, 0x7a, 0x31, 0x79, 0xde, 0x02, 0x00, 0x85, 0xa0, 0xf2, 0xd5, 0x60, - 0x66, 0xe3, 0xf5, 0x73, 0xc3, 0x02, 0xbb, 0x20, 0x71, 0x1a, 0x8a, 0x4b, - 0x08, 0xde, 0x7a, 0x34, 0x96, 0x07, 0x69, 0x4d, 0x24, 0x59, 0xbc, 0x40, - 0x8d, 0xbd, 0xec, 0x8d, 0x93, 0x5c, 0x18, 0xe4, 0xe8, 0x2e, 0xf2, 0xfc, - 0x87, 0x7b, 0x5c, 0xf0, 0x72, 0x50, 0x1d, 0x91, 0x27, 0xef, 0xe1, 0x3a, - 0xb5, 0x78, 0xa0, 0xdd, 0x93, 0xff, 0xdc, 0x63, 0xf9, 0x39, 0x1a, 0xde, - 0x91, 0x3c, 0xe2, 0xcc, 0x86, 0x73, 0x17, 0xff, 0xbb, 0x2d, 0xb3, 0x91, - 0x29, 0x2f, 0xf2, 0x17, 0x4e, 0xcf, 0x0d, 0x58, 0x9f, 0xda, 0xc2, 0xcd, - 0xb6, 0x14, 0x82, 0xf7, 0x54, 0x3b, 0xda, 0x77, 0xb6, 0x83, 0x78, 0x75, - 0x46, 0x40, 0x6f, 0x08, 0xa0, 0x95, 0xff, 0x47, 0x53, 0x05, 0x83, 0x6e, - 0xd5, 0x38, 0xaf, 0xc4, 0xd2, 0xa6, 0x5d, 0x01, 0xbc, 0x21, 0x18, 0xf1, - 0x0f, 0x80, 0xde, 0x3b, 0x93, 0x21, 0xb4, 0xb0, 0xb7, 0xa2, 0xe0, 0xf6, - 0x5b, 0xd5, 0x1a, 0xa0, 0x72, 0xf6, 0x7e, 0x93, 0x9a, 0x41, 0x6a, 0x3e, - 0x8a, 0xbc, 0x41, 0x0a, 0x20, 0x4f, 0x1f, 0x4c, 0x77, 0xb9, 0x6e, 0xc3, - 0x39, 0x51, 0x35, 0x37, 0x9d, 0x75, 0x1e, 0x09, 0xde, 0x20, 0x38, 0x7f, - 0xc3, 0x2f, 0xe5, 0x75, 0x5b, 0xf1, 0xea, 0x31, 0x5e, 0x24, 0x4b, 0x7c, - 0xb0, 0x79, 0x05, 0xbc, 0x72, 0x90, 0x80, 0x8d, 0x08, 0x9f, 0x3a, 0x45, - 0x23, 0x83, 0x09, 0x32, 0x81, 0x74, 0x35, 0xc4, 0xdc, 0x2d, 0x10, 0x9d, - 0x2b, 0xd0, 0xa4, 0x14, 0x8e, 0x95, 0x9e, 0x1c, 0x11, 0x3a, 0x24, 0x44, - 0xf0, 0xd7, 0x5a, 0xba, 0xc3, 0x52, 0x26, 0x00, 0xd3, 0x9a, 0x80, 0x5c, - 0xff, 0x1f, 0x77, 0x6b, 0x64, 0x4c, 0x4b, 0x8b, 0x46, 0xde, 0xdc, 0x64, - 0xac, 0x03, 0xd6, 0x24, 0x53, 0x6a, 0x23, 0x15, 0x2e, 0x7d, 0xd1, 0xf9, - 0x59, 0xb3, 0x95, 0xe3, 0x52, 0x32, 0x4e, 0x40, 0x0b, 0x61, 0x57, 0x46, - 0x4a, 0xe8, 0x1e, 0xa4, 0x5e, 0x43, 0xc0, 0x47, 0x75, 0x16, 0xba, 0x8f, - 0xc3, 0x73, 0x9d, 0xfe, 0x02, 0x2b, 0x40, 0x13, 0x26, 0x76, 0xfc, 0xc9, - 0x82, 0x25, 0x2a, 0x7f, 0x1b, 0x27, 0xb6, 0x9c, 0x30, 0xd8, 0x14, 0x83, - 0x63, 0xa2, 0x1b, 0x56, 0xf6, 0x32, 0x8c, 0x43, 0xe6, 0xd6, 0x81, 0x65, - 0x20, 0x9a, 0xd6, 0x10, 0xcb, 0xaf, 0x86, 0x13, 0x2d, 0xa5, 0xba, 0xdf, - 0x5c, 0x11, 0x92, 0x09, 0x87, 0x60, 0x70, 0x06, 0x19, 0x6c, 0xe5, 0xe8, - 0x16, 0x9a, 0x7d, 0xd0, 0xe6, 0xd8, 0x96, 0x34, 0x0c, 0xdc, 0x36, 0x0b, - 0xd3, 0x1b, 0x8a, 0x5d, 0xc4, 0x6f, 0xca, 0x8e, 0x57, 0xd9, 0x31, 0xf3, - 0x4c, 0x43, 0x22, 0xcb, 0x7b, 0x30, 0xc2, 0xe0, 0xaf, 0x03, 0xa2, 0x1d, - 0xb8, 0xd1, 0x52, 0x17, 0x84, 0xcb, 0xfa, 0x2a, 0x2e, 0x50, 0xce, 0x87, - 0x48, 0xf6, 0xec, 0x54, 0x7f, 0x5f, 0x73, 0x6d, 0x16, 0xd3, 0x4d, 0xf9, - 0x64, 0x01, 0x42, 0xa9, 0x5a, 0x4e, 0x59, 0xa8, 0x0a, 0xda, 0x58, 0xfe, - 0x5f, 0x24, 0xd0, 0xac, 0x51, 0x8f, 0x25, 0xb9, 0x84, 0x1d, 0x3f, 0xbc, - 0xfa, 0x40, 0x3b, 0xba, 0xfd, 0x30, 0x22, 0xa3, 0x82, 0x18, 0xe0, 0xe1, - 0xb7, 0x20, 0x21, 0xe9, 0x02, 0xc0, 0x63, 0xa1, 0x5e, 0x6b, 0x19, 0xdd, - 0x4c, 0xff, 0xa9, 0xc4, 0x1c, 0x5b, 0xb4, 0x25, 0xc6, 0x7f, 0x7a, 0xc9, - 0x60, 0x28, 0x4a, 0x18, 0x6f, 0x21, 0x05, 0x2d, 0x10, 0xd4, 0x08, 0xe3, - 0x6e, 0x78, 0x3d, 0x2b, 0x1c, 0xc5, 0x62, 0xd6, 0x56, 0x8c, 0x60, 0x9e, - 0x0d, 0xc3, 0x35, 0x9f, 0x30, 0x3d, 0xef, 0x4a, 0x11, 0xbd, 0x2e, 0xb9, - 0xb7, 0x0d, 0x16, 0xb5, 0xdd, 0x6c, 0x08, 0x22, 0xc1, 0xa0, 0xda, 0x22, - 0x47, 0xb7, 0x28, 0xaf, 0xf0, 0x6b, 0xe9, 0x11, 0x83, 0x32, 0x07, 0x7d, - 0xd2, 0x00, 0xf2, 0x07, 0x79, 0xae, 0x60, 0x3e, 0xcd, 0x8b, 0xa8, 0x53, - 0x13, 0x84, 0x4b, 0xa0, 0xe4, 0xea, 0xfc, 0xfb, 0xd7, 0xef, 0x46, 0x7f, - 0xa2, 0x4a, 0xcb, 0xcd, 0x80, 0x3a, 0xdb, 0xce, 0x89, 0xf5, 0x95, 0x7f, - 0xa7, 0xcc, 0xcd, 0x04, 0xf3, 0x37, 0x8a, 0x10, 0x21, 0x04, 0xb1, 0xa6, - 0xc2, 0x01, 0xe0, 0x86, 0xfd, 0x5a, 0xb1, 0x9a, 0x7f, 0xab, 0x25, 0x80, - 0x93, 0x57, 0x31, 0x68, 0x68, 0x4f, 0xa1, 0x9b, 0xce, 0xea, 0xb3, 0x22, - 0xc9, 0xf6, 0xcd, 0xba, 0xa6, 0x0d, 0xd3, 0xc1, 0xbd, 0x39, 0xab, 0xd2, - 0x2f, 0x7e, 0x74, 0x6e, 0x81, 0xaf, 0x3f, 0xdc, 0x4e, 0xaa, 0xf8, 0x78, - 0xf0, 0xb1, 0xe6, 0xa0, 0x19, 0x9a, 0xeb, 0xf7, 0xa8, 0x0a, 0xac, 0xa6, - 0xac, 0x49, 0x91, 0xe0, 0x6d, 0xa6, 0x7c, 0x03, 0x02, 0xf0, 0x93, 0x60, - 0x18, 0xb1, 0x0b, 0x13, 0xc1, 0xb6, 0xd5, 0xa5, 0x49, 0xfc, 0x10, 0xf5, - 0xc5, 0x95, 0x59, 0x11, 0xbf, 0xd3, 0x88, 0x6d, 0x91, 0x5e, 0x54, 0x43, - 0x77, 0x9f, 0xbd, 0x0d, 0xa3, 0x04, 0xc0, 0x96, 0xb2, 0xa4, 0x94, 0x08, - 0x99, 0xaa, 0xa3, 0x09, 0x84, 0x11, 0xe2, 0x35, 0xe9, 0xcb, 0xd8, 0xf2, - 0x7b, 0xa3, 0xc2, 0x02, 0x04, 0xa0, 0x87, 0x44, 0x3f, 0xd5, 0xc0, 0xca, - 0xda, 0xb7, 0xc6, 0xe6, 0x7b, 0x30, 0xe8, 0xd2, 0x4e, 0x6b, 0x2a, 0x51, - 0xd0, 0x9d, 0x10, 0x7c, 0xac, 0xa0, 0x7a, 0xf2, 0x6c, 0x9c, 0x25, 0x52, - 0xdf, 0x7b, 0x9d, 0x60, 0xe5, 0x25, 0xa8, 0x77, 0xb2, 0xda, 0xd4, 0x8b, - 0xb4, 0x99, 0xfa, 0x74, 0x73, 0x54, 0x98, 0x33, 0x6c, 0xbc, 0xde, 0x58, - 0xcd, 0x35, 0x7a, 0x9a, 0x4d, 0xa9, 0xeb, 0x42, 0x1e, 0x32, 0x69, 0xf3, - 0x55, 0xe8, 0x8e, 0x15, 0x59, 0xe9, 0x4c, 0xb5, 0x49, 0xc7, 0x2c, 0x2f, - 0x36, 0x5a, 0xa6, 0x8e, 0xb7, 0x8c, 0x5d, 0x2b, 0x80, 0x25, 0xc4, 0x4e, - 0x80, 0xff, 0xf8, 0xab, 0x9f, 0x78, 0x84, 0x29, 0x52, 0x2b, 0x4c, 0x28, - 0x38, 0x1e, 0x2e, 0xdd, 0x72, 0xfa, 0xb1, 0xa7, 0x46, 0x30, 0x18, 0xb0, - 0x98, 0x5f, 0xe5, 0xbb, 0x38, 0x3f, 0x30, 0xff, 0x4a, 0xa6, 0x82, 0x10, - 0x99, 0x1d, 0xd8, 0xdd, 0xe3, 0x83, 0x89, 0xc6, 0x16, 0x7b, 0x5d, 0x57, - 0xa1, 0x72, 0xb6, 0x5a, 0xb2, 0x4f, 0x95, 0x5d, 0x7b, 0xcc, 0xd1, 0xc8, - 0x8d, 0x84, 0x45, 0x37, 0xf0, 0x1b, 0x9b, 0xc2, 0xf5, 0xb8, 0x09, 0xf0, - 0x9e, 0x44, 0xe7, 0xed, 0x3b, 0x9d, 0xf0, 0xea, 0x59, 0xce, 0x7c, 0x33, - 0x42, 0x9f, 0x8b, 0xac, 0x25, 0x98, 0x61, 0xe9, 0x73, 0x65, 0x33, 0x30, - 0x71, 0x38, 0x07, 0xa5, 0x7f, 0xa3, 0xe6, 0xfa, 0x97, 0x0a, 0xe2, 0x32, - 0xf4, 0x81, 0x3d, 0xa5, 0x2a, 0xe2, 0x16, 0xd2, 0xa6, 0x6e, 0x61, 0x77, - 0xa1, 0x4f, 0xeb, 0x9c, 0x50, 0x1d, 0x8a, 0x49, 0x09, 0x7f, 0xe8, 0x59, - 0x7b, 0xad, 0xe0, 0x29, 0xb3, 0xfd, 0x75, 0x49, 0x85, 0xee, 0x31, 0xb5, - 0x3a, 0xb9, 0x99, 0x2c, 0xf6, 0x6c, 0xa8, 0xfa, 0x5d, 0x87, 0x8f, 0x11, - 0xef, 0x68, 0x58, 0xc5, 0x78, 0x02, 0x70, 0x00, 0x4e, 0x29, 0x01, 0x4a, - 0x22, 0x79, 0x77, 0xe5, 0x81, 0x0d, 0xb1, 0x10, 0xe7, 0x29, 0x32, 0xd3, - 0x78, 0xd7, 0x58, 0x04, 0xbc, 0xe5, 0x19, 0x13, 0x64, 0x71, 0xd9, 0x28, - 0x24, 0xf1, 0x80, 0xc6, 0xd2, 0xb6, 0x45, 0xf2, 0x6f, 0x05, 0xf0, 0xf1, - 0x55, 0xf6, 0x1f, 0xa9, 0x0a, 0x4e, 0xa8, 0x14, 0x36, 0xb2, 0x6d, 0x86, - 0x52, 0x00, 0x3d, 0x2b, 0x9e, 0x44, 0x85, 0x2d, 0x65, 0x81, 0xd4, 0xb3, - 0x7d, 0x30, 0x5c, 0x9a, 0x30, 0xf4, 0x7e, 0xcc, 0x33, 0x73, 0x96, 0xb6, - 0x06, 0x7a, 0xae, 0xbd, 0x90, 0x17, 0x56, 0xc0, 0x1f, 0x34, 0x2c, 0xb2, - 0x69, 0x29, 0x8e, 0xee, 0x20, 0x30, 0x69, 0xd1, 0x0e, 0xd2, 0x34, 0x4d, - 0x7c, 0xce, 0xec, 0xe7, 0x1c, 0xa3, 0xa0, 0x4f, 0x8a, 0x04, 0x03, 0x33, - 0xb0, 0xad, 0x35, 0xa0, 0x8b, 0xac, 0xc1, 0x13, 0xab, 0x4c, 0x70, 0x6b, - 0x61, 0xd0, 0x34, 0x4f, 0xee, 0x44, 0x0a, 0x28, 0x1f, 0x92, 0x77, 0xec, - 0xde, 0xe8, 0xc2, 0x81, 0x6a, 0xe5, 0x22, 0xab, 0xb9, 0x98, 0xf6, 0x44, - 0x4e, 0x24, 0xd7, 0xa4, 0x57, 0xa2, 0x3b, 0xc5, 0x58, 0xab, 0x22, 0x01, - 0xb2, 0x18, 0x7b, 0x72, 0x88, 0xd7, 0x99, 0x30, 0x2f, 0x14, 0x3e, 0xb2, - 0xe8, 0x6d, 0xc4, 0x47, 0x23, 0x8d, 0xe1, 0xa3, 0x42, 0x8a, 0xa5, 0xc8, - 0xd0, 0x15, 0x0d, 0x8f, 0xda, 0x34, 0x2c, 0x1e, 0x19, 0xf5, 0xf2, 0x68, - 0x2b, 0xbe, 0x66, 0x46, 0x93, 0xb2, 0x15, 0xbe, 0x33, 0x12, 0x79, 0x8e, - 0xf9, 0x38, 0xc8, 0xd3, 0xf8, 0xa0, 0xa5, 0xc5, 0xe9, 0xec, 0xf5, 0x1a, - 0xdd, 0xc3, 0x40, 0xe8, 0xad, 0x91, 0x81, 0x2c, 0xa3, 0xf8, 0x02, 0xc5, - 0xfc, 0xcc, 0x0c, 0x67, 0x35, 0x8f, 0x34, 0x49, 0xe0, 0x3f, 0x27, 0x3e, - 0x9b, 0x8a, 0x2a, 0x6e, 0xf3, 0xc6, 0x82, 0x9c, 0xa6, 0x1c, 0xf0, 0x48, - 0x92, 0xa4, 0xb7, 0x84, 0x14, 0x58, 0x07, 0x9b, 0x33, 0x4f, 0xee, 0xdb, - 0xce, 0xa5, 0x94, 0xbe, 0xcf, 0xfe, 0xfa, 0xce, 0x9f, 0xb4, 0x7b, 0xbd, - 0x8d, 0x65, 0xa7, 0x01, 0xa2, 0x4d, 0x10, 0x97, 0x44, 0x99, 0xa7, 0xdd, - 0x65, 0x0d, 0xc7, 0x0f, 0x4b, 0xe2, 0x4d, 0x79, 0x3e, 0x7f, 0xfd, 0x74, - 0xf1, 0x28, 0x02, 0xc4, 0x47, 0xae, 0xf1, 0x30, 0x15, 0x24, 0xd1, 0x25, - 0x78, 0x63, 0xbd, 0x5b, 0x70, 0x38, 0xc6, 0x7b, 0xae, 0x70, 0x70, 0xf1, - 0x1d, 0xfb, 0x2d, 0x2a, 0x9e, 0x53, 0x9a, 0xe9, 0x68, 0xba, 0xf5, 0x29, - 0xb8, 0xdc, 0x1b, 0xab, 0xbf, 0x24, 0x13, 0x75, 0x9a, 0x7a, 0xba, 0x80, - 0x50, 0x88, 0xa9, 0x26, 0x57, 0x78, 0x8c, 0xb7, 0xa8, 0x25, 0x15, 0x59, - 0x02, 0x11, 0x96, 0x8b, 0x17, 0x58, 0xfa, 0x9e, 0xce, 0xa7, 0x28, 0xae, - 0x55, 0xbf, 0x0e, 0x76, 0x7d, 0x3b, 0x33, 0x08, 0xe7, 0x97, 0xff, 0xc2, - 0x85, 0xbc, 0x6a, 0x44, 0xc6, 0xdc, 0x93, 0x9a, 0x30, 0xa3, 0x21, 0x61, - 0x93, 0xde, 0xa5, 0xd3, 0x6e, 0x74, 0x78, 0xa7, 0x49, 0xb3, 0x3e, 0xf0, - 0x36, 0xf3, 0x65, 0x99, 0x2a, 0x9f, 0x48, 0x4e, 0x1a, 0x61, 0xe9, 0x1d, - 0x4c, 0x97, 0x79, 0xef, 0x54, 0xc4, 0x99, 0x97, 0x2a, 0xfe, 0x35, 0xc3, - 0x05, 0x02, 0x83, 0x51, 0x97, 0xd6, 0x43, 0x8c, 0x10, 0xfb, 0xd8, 0x54, - 0x2a, 0x6a, 0x2f, 0x75, 0x2f, 0xf7, 0x25, 0x89, 0x30, 0xd4, 0xf0, 0x10, - 0x02, 0xdf, 0xc7, 0x6a, 0x45, 0x42, 0xc1, 0x11, 0x5a, 0x78, 0x7a, 0xde, - 0xbc, 0xbe, 0x93, 0x18, 0x9c, 0xb6, 0x2c, 0x58, 0x3b, 0x2a, 0xd8, 0xbd, - 0x7c, 0x3f, 0xa7, 0x95, 0x87, 0xb3, 0xd1, 0x37, 0xf3, 0xc4, 0xfb, 0x17, - 0x46, 0x43, 0x8c, 0x96, 0x45, 0x87, 0x66, 0x3d, 0x4d, 0x0b, 0x0d, 0xae, - 0x05, 0x9b, 0x6e, 0xc3, 0x89, 0x00, 0xb0, 0x33, 0xff, 0x86, 0xa3, 0xb9, - 0x4f, 0x8e, 0xd9, 0x28, 0xbb, 0x07, 0xbe, 0xdb, 0x48, 0x5a, 0x7d, 0xd2, - 0x38, 0x74, 0xeb, 0x82, 0x18, 0x47, 0xdf, 0x7a, 0xf3, 0xe0, 0x26, 0x81, - 0xa9, 0xf7, 0xc9, 0xf4, 0xa4, 0x40, 0x3f, 0x01, 0x51, 0xbd, 0xf1, 0x1c, - 0x5b, 0x4a, 0x5b, 0x56, 0x13, 0x9f, 0x2a, 0xa9, 0x67, 0x57, 0xbd, 0x67, - 0x55, 0xe9, 0x2a, 0xab, 0xd9, 0x2e, 0xd4, 0x05, 0x57, 0x6f, 0xb7, 0xef, - 0xd1, 0xf3, 0x4a, 0x78, 0x07, 0x7e, 0x3d, 0xc6, 0x80, 0x85, 0xc8, 0xec, - 0xfd, 0xad, 0x21, 0x7b, 0x3e, 0x11, 0x8a, 0xa6, 0xae, 0xad, 0xb6, 0x25, - 0x9a, 0x35, 0x2d, 0x4f, 0xa9, 0x42, 0x94, 0xe3, 0x91, 0x66, 0x1d, 0x62, - 0xde, 0x57, 0x4f, 0x5d, 0xc4, 0x08, 0xfd, 0x2a, 0xd9, 0x40, 0x6a, 0x98, - 0xf9, 0x43, 0x9c, 0xfc, 0xa3, 0xd4, 0x52, 0xc6, 0x8b, 0xa7, 0x82, 0x15, - 0x28, 0xcc, 0x56, 0xb9, 0xb3, 0x38, 0x83, 0x99, 0xac, 0xb0, 0xee, 0x97, - 0xbf, 0x58, 0xa8, 0xe5, 0x32, 0xfa, 0x6c, 0x6e, 0xec, 0x5a, 0xd9, 0xa2, - 0x52, 0x82, 0x16, 0x1a, 0xaf, 0xf2, 0x5d, 0xa6, 0xe0, 0x7e, 0x22, 0x76, - 0x6d, 0x70, 0x80, 0xa8, 0x12, 0x35, 0x30, 0xdf, 0x7a, 0x45, 0x73, 0xe1, - 0xb1, 0x80, 0x81, 0xdf, 0x85, 0x94, 0x61, 0x25, 0x19, 0x16, 0x2f, 0xda, - 0x3e, 0xa6, 0x1e, 0x4d, 0xd8, 0x24, 0x53, 0x7f, 0x9e, 0x60, 0x98, 0x81, - 0x9f, 0x91, 0x21, 0xe9, 0xb5, 0xc8, 0xcc, 0x14, 0xe1, 0xf1, 0xa1, 0x84, - 0xee, 0x54, 0x04, 0x4d, 0xc6, 0xe1, 0x0a, 0x63, 0x63, 0x41, 0xc0, 0x34, - 0x6b, 0x77, 0xd4, 0x92, 0x3a, 0x72, 0xa0, 0x43, 0x8f, 0x57, 0xdc, 0xe2, - 0x16, 0x92, 0xa4, 0x61, 0x80, 0xa0, 0xb9, 0x34, 0xa7, 0xcb, 0x79, 0xb0, - 0x93, 0xf2, 0x0a, 0xfe, 0x29, 0xc0, 0xf9, 0x76, 0x5d, 0xaf, 0xe1, 0x9e, - 0x4e, 0x57, 0x3e, 0xea, 0xae, 0xd4, 0xf3, 0xdc, 0x64, 0x83, 0x60, 0x46, - 0x4f, 0x40, 0x6d, 0xc7, 0x2f, 0xb6, 0x08, 0x30, 0xb7, 0xbc, 0xc0, 0xf9, - 0xbe, 0xb6, 0x41, 0xe0, 0x59, 0xdb, 0xda, 0xbd, 0xaa, 0xdb, 0xea, 0xd6, - 0x84, 0xd3, 0x64, 0x04, 0x48, 0x35, 0xda, 0x94, 0xa5, 0x8c, 0x0e, 0x31, - 0x59, 0x1d, 0xbc, 0x9a, 0xd5, 0x18, 0x1a, 0xc3, 0x16, 0xfe, 0x45, 0x9a, - 0x70, 0xd0, 0x96, 0xe6, 0x73, 0x5b, 0x1f, 0xb0, 0xd9, 0xa3, 0x9a, 0xe0, - 0x35, 0x01, 0x66, 0x8b, 0x85, 0xd0, 0xb6, 0xc7, 0x48, 0x45, 0xa6, 0xe6, - 0x02, 0xad, 0x49, 0x3a, 0x73, 0xb9, 0xc6, 0xb0, 0x85, 0xb5, 0xb8, 0x0e, - 0xa8, 0xbc, 0xb9, 0xf3, 0xa1, 0x88, 0x7e, 0xe7, 0x1c, 0xba, 0xb4, 0x60, - 0x66, 0xe4, 0xb1, 0x9e, 0xa4, 0xdc, 0xc8, 0xe6, 0xbf, 0xfc, 0x11, 0x3f, - 0xb7, 0x73, 0xa1, 0x93, 0x07, 0x1b, 0xea, 0xc5, 0x00, 0xbe, 0x1e, 0x07, - 0xb3, 0x00, 0x26, 0x36, 0xbc, 0x26, 0xd5, 0xb2, 0x29, 0xf4, 0x84, 0x4e, - 0x98, 0x17, 0x43, 0xbc, 0xe1, 0x1d, 0xa8, 0xb2, 0xfd, 0xe2, 0x37, 0xc9, - 0x36, 0x32, 0x07, 0x28, 0xf7, 0x69, 0x24, 0x2d, 0xb6, 0xc2, 0x81, 0x1c, - 0xc7, 0x9e, 0x4f, 0x13, 0x33, 0x87, 0x5b, 0xca, 0x75, 0xd1, 0xd5, 0x58, - 0xdc, 0xd6, 0xe4, 0x8f, 0xef, 0x6e, 0x9b, 0x32, 0xad, 0x1c, 0x7c, 0xe6, - 0xd2, 0x97, 0xec, 0xc1, 0x40, 0x7d, 0xaa, 0x30, 0x75, 0x52, 0xee, 0x6f, - 0x9a, 0xb7, 0xef, 0xe0, 0xa7, 0x7f, 0xb9, 0xd3, 0x02, 0x09, 0x59, 0xd5, - 0xd0, 0xe7, 0x0a, 0xd5, 0xaf, 0x01, 0x08, 0x4c, 0x63, 0xfa, 0xeb, 0x5a, - 0x3e, 0x29, 0x1c, 0x2a, 0xcd, 0x75, 0x04, 0xa7, 0x89, 0x1f, 0x8d, 0x46, - 0x94, 0xdf, 0x3a, 0x34, 0x8b, 0x47, 0x57, 0x42, 0xe6, 0xb1, 0x63, 0xfa, - 0xc7, 0xae, 0x07, 0x83, 0x47, 0x58, 0x00, 0xf9, 0xa3, 0x8b, 0x19, 0x33, - 0xa9, 0xe2, 0xac, 0x1e, 0x92, 0x13, 0xe2, 0x38, 0xe5, 0x01, 0x3e, 0x15, - 0x84, 0x35, 0x92, 0x16, 0x26, 0x6b, 0x1f, 0xc3, 0xe5, 0xbc, 0x66, 0x91, - 0x3e, 0x57, 0xe6, 0x44, 0x76, 0x21, 0xb6, 0x00, 0x31, 0x06, 0x48, 0x0f, - 0x03, 0x56, 0x39, 0x35, 0x2a, 0x9b, 0x72, 0x1d, 0xd4, 0x6d, 0xbf, 0x7d, - 0xf2, 0xfd, 0xff, 0xb9, 0x72, 0xc6, 0xcb, 0xbe, 0xa1, 0x0a, 0xf6, 0xf7, - 0x4a, 0xc8, 0x62, 0x8f, 0xe2, 0x2a, 0x5d, 0x7f, 0xfa, 0x62, 0x1c, 0x99, - 0xb7, 0xec, 0x2f, 0x71, 0x1f, 0x33, 0x02, 0x28, 0x1c, 0x9e, 0xff, 0x35, - 0x9d, 0x47, 0xde, 0xb7, 0xb9, 0x1e, 0xe6, 0x40, 0xeb, 0xc4, 0x3a, 0xa0, - 0x3b, 0x17, 0xf0, 0x36, 0x7d, 0xa6, 0x62, 0xf4, 0x2a, 0xca, 0x0e, 0x3e, - 0xf8, 0xb0, 0xfb, 0x56, 0xd4, 0x10, 0x8f, 0x01, 0x3e, 0x37, 0xc0, 0x40, - 0x54, 0xb3, 0xfd, 0xdf, 0xd3, 0xee, 0xe5, 0xad, 0xfb, 0xbc, 0xfa, 0x18, - 0x12, 0x33, 0x02, 0xdc, 0x40, 0xca, 0xd7, 0x67, 0xea, 0x26, 0xac, 0x6a, - 0x90, 0x75, 0x9d, 0xac, 0x28, 0x51, 0x5b, 0xdf, 0x5c, 0x3a, 0xc5, 0xca, - 0x8b, 0x20, 0x25, 0xcf, 0x65, 0x37, 0xda, 0x8b, 0x99, 0x1c, 0x30, 0xea, - 0x5c, 0xb1, 0x13, 0x00, 0x5a, 0x82, 0xa3, 0x82, 0xff, 0x77, 0xf4, 0x59, - 0xbe, 0x1e, 0x51, 0x13, 0xb6, 0xd9, 0x0b, 0x08, 0x6d, 0x09, 0x4f, 0xe8, - 0x84, 0x9a, 0x9a, 0x93, 0xc5, 0x16, 0x74, 0x60, 0x34, 0x9e, 0x0a, 0xf0, - 0xe0, 0x32, 0x2b, 0x81, 0xf0, 0x57, 0xe7, 0x43, 0xef, 0xe0, 0x8e, 0x1d, - 0x73, 0x83, 0xbc, 0x8a, 0x50, 0xc5, 0xaf, 0x9b, 0xac, 0x57, 0x08, 0x6d, - 0x05, 0x04, 0x4a, 0x34, 0x1d, 0x6b, 0x5a, 0xa8, 0x89, 0xde, 0x18, 0x24, - 0xc5, 0x2f, 0x9f, 0x5a, 0xbd, 0x95, 0x73, 0x1f, 0x29, 0x86, 0xfb, 0xe6, - 0x3c, 0xc3, 0xa6, 0x3b, 0xf7, 0x22, 0x00, 0x88, 0x1f, 0xf1, 0xf9, 0x4d, - 0x4e, 0x61, 0x48, 0x44, 0xab, 0xf3, 0xae, 0xf4, 0x5c, 0x64, 0x27, 0x3d, - 0xde, 0x32, 0x6a, 0xf2, 0x30, 0x35, 0x8f, 0xfd, 0x58, 0x24, 0x99, 0x37, - 0x02, 0x17, 0xbb, 0xea, 0x63, 0xf7, 0x97, 0xc3, 0xe0, 0x59, 0xf2, 0x5a, - 0x63, 0x75, 0x5a, 0x87, 0xe7, 0x45, 0xc3, 0xb7, 0xec, 0x6a, 0x34, 0x4b, - 0x49, 0x3c, 0x81, 0x2c, 0x5f, 0xb6, 0x8d, 0x74, 0xd3, 0x04, 0x20, 0x08, - 0x7d, 0x11, 0x27, 0x7a, 0xbd, 0x59, 0xec, 0x74, 0x64, 0x41, 0x34, 0x2f, - 0x6d, 0x6b, 0x6b, 0xa7, 0x38, 0x65, 0x70, 0xe0, 0xcd, 0x27, 0x7b, 0xe9, - 0x94, 0x7e, 0xcb, 0x1b, 0xcc, 0x5b, 0xcd, 0x27, 0x3f, 0x28, 0x97, 0x45, - 0x4d, 0xd0, 0x70, 0x20, 0x3b, 0xc5, 0xad, 0xc0, 0x18, 0xd2, 0xec, 0x58, - 0x20, 0x4e, 0x45, 0x7a, 0xcc, 0x1a, 0xc1, 0x45, 0x4f, 0xdb, 0xe6, 0x3c, - 0x56, 0x11, 0x27, 0x5a, 0x76, 0x73, 0x44, 0x53, 0x5b, 0x58, 0xe8, 0xd3, - 0xa0, 0x5e, 0x06, 0x56, 0x4b, 0xd2, 0x56, 0xc4, 0x78, 0x2a, 0xda, 0x7c, - 0x52, 0xdd, 0x7b, 0xbf, 0x17, 0x1b, 0xc9, 0x68, 0x79, 0xa3, 0x40, 0x84, - 0x49, 0xb2, 0xb0, 0xb4, 0x54, 0x77, 0x3b, 0xe2, 0xe8, 0xc1, 0x15, 0x00, - 0xab, 0x6d, 0xb9, 0x10, 0x67, 0x88, 0x82, 0xc2, 0x1f, 0xf2, 0x6e, 0x29, - 0xf5, 0xce, 0x86, 0x88, 0x74, 0xb1, 0xef, 0xc8, 0x82, 0xce, 0x45, 0xaa, - 0x8c, 0x0f, 0xed, 0x99, 0x57, 0x21, 0xd2, 0x86, 0x43, 0x02, 0x6b, 0xe5, - 0x47, 0xb1, 0x02, 0x61, 0x4d, 0xf0, 0xf2, 0x13, 0x67, 0x95, 0x11, 0x0b, - 0x68, 0x8d, 0x10, 0xbf, 0xef, 0xf4, 0x27, 0xfa, 0x95, 0xd9, 0xee, 0xd3, - 0x3a, 0x2b, 0x89, 0xc8, 0x18, 0x2d, 0x85, 0x0b, 0x86, 0x88, 0x7d, 0x76, - 0x17, 0x3c, 0x76, 0xa6, 0xb6, 0x38, 0xeb, 0xa6, 0x49, 0x8f, 0xeb, 0xe2, - 0x55, 0x10, 0x72, 0x3f, 0x2b, 0xa1, 0xcf, 0x42, 0x79, 0x08, 0xa7, 0xe8, - 0xb8, 0x05, 0x8c, 0x4a, 0xad, 0x71, 0x90, 0x62, 0xb0, 0x8f, 0x24, 0xd5, - 0xc9, 0x66, 0x49, 0xa4, 0x34, 0xa8, 0x51, 0x21, 0x2e, 0x31, 0x6b, 0xb7, - 0x56, 0x55, 0x2f, 0xf2, 0xb3, 0x91, 0xcc, 0xe8, 0x14, 0x8c, 0xb7, 0xf2, - 0xc1, 0x4a, 0x48, 0x90, 0xb7, 0x8f, 0x68, 0x38, 0x05, 0x27, 0xcc, 0x4f, - 0xda, 0xdc, 0xdc, 0xcf, 0x37, 0x2b, 0x4e, 0xf3, 0x07, 0xbb, 0x7b, 0x26, - 0x3e, 0xc9, 0x9e, 0xe3, 0xbd, 0x67, 0x3b, 0xfc, 0xe8, 0xd6, 0xb5, 0x81, - 0xba, 0xec, 0x00, 0xbb, 0xdf, 0x94, 0x09, 0xff, 0x6c, 0xac, 0x2a, 0xa6, - 0xe4, 0x0f, 0xc4, 0x21, 0x5c, 0xca, 0x3a, 0xca, 0xc7, 0xdf, 0x91, 0xf1, - 0xd6, 0x64, 0x5d, 0xef, 0x1e, 0x2c, 0x98, 0xcf, 0xbd, 0xdd, 0xfa, 0x51, - 0x08, 0x8f, 0x9a, 0x43, 0xef, 0x2b, 0x7e, 0xda, 0x74, 0x70, 0xf2, 0x96, - 0x59, 0x0c, 0xd6, 0xa3, 0x6e, 0x52, 0x0d, 0x8a, 0xfe, 0xe6, 0x07, 0x8f, - 0x2e, 0x65, 0x2e, 0xd9, 0x5a, 0x31, 0x37, 0x06, 0x61, 0xfc, 0x45, 0x2a, - 0x6a, 0x30, 0xa6, 0x9c, 0x14, 0x71, 0xb0, 0x67, 0xe2, 0x04, 0xb7, 0xae, - 0x4d, 0x54, 0x3a, 0xd5, 0x47, 0x5c, 0xce, 0x60, 0x9b, 0x44, 0x02, 0x7a, - 0xd9, 0x29, 0xa2, 0x4f, 0xd7, 0x9f, 0x01, 0xb6, 0x07, 0x83, 0xc9, 0xd9, - 0xbb, 0x84, 0x8b, 0xd5, 0x66, 0x10, 0x7c, 0xf5, 0xbf, 0x01, 0x71, 0x0a, - 0x0f, 0xff, 0x0f, 0x4f, 0x8b, 0xad, 0xbb, 0x9c, 0xaa, 0xc9, 0x1e, 0xda, - 0x9e, 0x92, 0xdf, 0x94, 0xad, 0xfd, 0x77, 0x82, 0xd4, 0x9e, 0x6f, 0x76, - 0xeb, 0x30, 0x0e, 0x46, 0xbb, 0xd1, 0xb8, 0xb1, 0x4c, 0x5d, 0x19, 0xa4, - 0x4c, 0x3c, 0xdf, 0x24, 0x30, 0xea, 0x2d, 0x10, 0x54, 0x5f, 0x9b, 0x98, - 0x80, 0xde, 0x53, 0xd1, 0x7d, 0x41, 0x70, 0xdf, 0xb1, 0x41, 0xea, 0x14, - 0x8b, 0xec, 0x77, 0xbe, 0x1f, 0x55, 0x3c, 0x72, 0x63, 0x2d, 0x8b, 0xf3, - 0xe6, 0x36, 0xb8, 0xef, 0xcb, 0x91, 0x45, 0xdd, 0x97, 0x84, 0xed, 0x3c, - 0x39, 0xca, 0xde, 0xae, 0xa7, 0x38, 0x2b, 0x73, 0x1a, 0x4b, 0x2f, 0xe0, - 0x7a, 0xbd, 0xb8, 0xab, 0x5f, 0x50, 0x76, 0x3d, 0xc8, 0x44, 0xdc, 0x9b, - 0xc6, 0x2e, 0x20, 0x25, 0x9b, 0xe5, 0x2d, 0x82, 0xfe, 0x7a, 0x74, 0x5d, - 0x0d, 0xe3, 0x0a, 0x88, 0xc3, 0xdc, 0xaa, 0xf9, 0xba, 0xef, 0xfe, 0x34, - 0xe6, 0x88, 0xff, 0x55, 0xe8, 0x56, 0x7a, 0xab, 0xa5, 0x86, 0xb7, 0x51, - 0x80, 0x7b, 0xc0, 0x4e, 0xcc, 0xe7, 0x6c, 0x73, 0x76, 0x98, 0x46, 0xe2, - 0xce, 0x2f, 0x39, 0xf0, 0xa9, 0x89, 0x3f, 0xc0, 0x52, 0x30, 0xb6, 0x8b, - 0x7f, 0x7f, 0x46, 0xcd, 0x07, 0xb0, 0x2d, 0xec, 0x57, 0x11, 0x3a, 0x1a, - 0xd4, 0xc5, 0x56, 0xd6, 0x21, 0xb7, 0x83, 0x00, 0x2e, 0xa8, 0x1a, 0x36, - 0x62, 0x31, 0xba, 0x70, 0x94, 0x69, 0x35, 0x77, 0x0a, 0xa0, 0xb0, 0x57, - 0xe2, 0x22, 0x27, 0x3f, 0x93, 0x0f, 0xde, 0x57, 0x5b, 0xf8, 0x9e, 0x5f, - 0x04, 0x6f, 0x80, 0xd4, 0xb1, 0x46, 0x66, 0x1f, 0x74, 0xa6, 0x98, 0x79, - 0x37, 0x6a, 0xea, 0x71, 0xd0, 0x40, 0x80, 0xe3, 0x21, 0x0e, 0xe1, 0x6a, - 0xc2, 0x34, 0x02, 0xc4, 0xe8, 0x99, 0xb7, 0x69, 0x8e, 0x43, 0xa3, 0x3b, - 0x64, 0x9f, 0x40, 0x04, 0xc1, 0x6f, 0xb4, 0xcb, 0x6c, 0xa7, 0xe1, 0x44, - 0xb9, 0xc4, 0xb6, 0x4f, 0xb2, 0x0b, 0x3a, 0x31, 0x3a, 0xef, 0x96, 0x53, - 0xa7, 0x98, 0x40, 0xaf, 0x4e, 0x4a, 0x5e, 0xad, 0x70, 0xec, 0x5a, 0x0e, - 0x81, 0x3e, 0xf5, 0x04, 0xfc, 0x96, 0x64, 0x22, 0x3c, 0xc5, 0x6d, 0x4e, - 0x86, 0xdb, 0x57, 0xe2, 0x62, 0x19, 0x5b, 0x57, 0xe5, 0xc2, 0x72, 0x14, - 0xc2, 0x85, 0x27, 0x25, 0xb2, 0xd1, 0x1d, 0xa0, 0x79, 0x6a, 0xd5, 0x40, - 0xe1, 0xd1, 0x21, 0xf8, 0xb9, 0x9a, 0xda, 0xb9, 0x69, 0x0a, 0x51, 0x2b, - 0x93, 0x09, 0x53, 0xe8, 0x88, 0x25, 0xb3, 0x6b, 0xcf, 0x15, 0x14, 0x32, - 0x39, 0x02, 0xed, 0xc1, 0xcf, 0x1f, 0x19, 0x51, 0x89, 0x08, 0x4f, 0xd0, - 0x53, 0x48, 0x2b, 0xbc, 0xa0, 0xbb, 0x67, 0xc1, 0x76, 0xa1, 0x7c, 0x30, - 0xb7, 0x7f, 0x67, 0xa5, 0xbe, 0x23, 0x19, 0x5e, 0x39, 0x14, 0xed, 0xa6, - 0x93, 0xbf, 0x4a, 0x09, 0x35, 0xe6, 0xe1, 0x37, 0x40, 0xbe, 0x69, 0x14, - 0x38, 0xb2, 0xfb, 0xb6, 0x31, 0xf0, 0x94, 0xef, 0xe6, 0xac, 0xbb, 0xba, - 0xba, 0xc1, 0x7d, 0x08, 0x3c, 0x5e, 0x7a, 0x38, 0x36, 0x84, 0x9d, 0xe7, - 0x3b, 0x31, 0x92, 0x8b, 0xb9, 0x7f, 0x3d, 0x35, 0xf2, 0x36, 0xd8, 0x17, - 0x4f, 0x4a, 0xf8, 0xc7, 0xe9, 0x9f, 0x3c, 0x85, 0x64, 0x2f, 0x69, 0x77, - 0x37, 0xe1, 0xb6, 0xf4, 0xeb, 0xb3, 0x3b, 0x14, 0x1d, 0x66, 0x52, 0xcb, - 0x1e, 0x22, 0xeb, 0x67, 0x2f, 0xf6, 0x6d, 0x0a, 0x11, 0x7e, 0x6b, 0x9f, - 0xd3, 0x97, 0xea, 0x10, 0x41, 0xd6, 0xe3, 0x23, 0x51, 0xe1, 0x32, 0xf1, - 0x1b, 0xb3, 0x07, 0x78, 0xf5, 0x18, 0xdf, 0x1b, 0x83, 0x77, 0x8d, 0x0c, - 0xf4, 0x2f, 0x42, 0x94, 0x59, 0x9d, 0xcf, 0x40, 0xfb, 0xf1, 0x5f, 0xec, - 0x6c, 0x91, 0xb4, 0x52, 0xf8, 0x72, 0xcb, 0xbe, 0x56, 0xea, 0x77, 0xb1, - 0x48, 0x3a, 0x4f, 0x73, 0xd1, 0x43, 0xed, 0x8c, 0xcf, 0x49, 0x17, 0x02, - 0xdf, 0x11, 0x84, 0xa7, 0x41, 0x0f, 0x26, 0xc9, 0x3e, 0xd8, 0xd3, 0xc1, - 0xfc, 0x49, 0x58, 0xba, 0x2c, 0x7f, 0x63, 0x1d, 0x38, 0xe6, 0xc7, 0x4c, - 0xcd, 0xcc, 0x4f, 0x53, 0xa6, 0x5b, 0xd2, 0x28, 0x6a, 0xc3, 0xf2, 0xf7, - 0x43, 0xfd, 0x51, 0xf2, 0xd8, 0x5c, 0x55, 0x62, 0xef, 0x32, 0x13, 0xc5, - 0x87, 0x83, 0x33, 0xaa, 0x68, 0xc8, 0x4e, 0xd0, 0x06, 0x94, 0x87, 0xb2, - 0xa0, 0xe3, 0xbc, 0xf1, 0x13, 0xe3, 0xaa, 0x64, 0x82, 0x2c, 0xa1, 0x4f, - 0x84, 0xfd, 0x8b, 0x9a, 0x14, 0xac, 0x93, 0xf9, 0xbc, 0x44, 0x33, 0xd4, - 0xf4, 0xd8, 0xdd, 0xa7, 0x16, 0xe5, 0xe1, 0xff, 0x3b, 0x00, 0xe5, 0x74, - 0x75, 0x22, 0xc9, 0x69, 0xd1, 0x96, 0x97, 0xe4, 0xf3, 0xc4, 0xd4, 0xfb, - 0xbc, 0x7a, 0xa3, 0x1b, 0x1a, 0xf5, 0x50, 0xb6, 0x6b, 0xf5, 0x61, 0x46, - 0x84, 0xfc, 0xe9, 0xaf, 0x9c, 0x2e, 0xd9, 0xe9, 0xc6, 0x71, 0xc7, 0xb3, - 0xf8, 0xb8, 0x96, 0xfc, 0x85, 0x1b, 0x5c, 0xa0, 0x3c, 0x07, 0xf0, 0xb5, - 0x8a, 0x2c, 0x3d, 0x67, 0x9b, 0xbd, 0x4a, 0x72, 0x98, 0xcb, 0x5b, 0xf5, - 0xc5, 0x54, 0xb2, 0xb8, 0x60, 0x1c, 0x73, 0x3a, 0x78, 0x19, 0x89, 0xd9, - 0x2d, 0x3e, 0xba, 0x1e, 0x1b, 0xbb, 0x0a, 0x33, 0xdb, 0x8c, 0xb7, 0x71, - 0xd4, 0xb5, 0x82, 0x53, 0x13, 0xb3, 0x7a, 0x5c, 0xa9, 0x82, 0x3c, 0x2d, - 0x00, 0xe3, 0x69, 0x60, 0x3f, 0xd3, 0xd5, 0xab, 0xa6, 0x77, 0x84, 0x69, - 0x03, 0xab, 0x59, 0x2d, 0x9d, 0xef, 0xc4, 0x1c, 0x29, 0x79, 0x75, 0x62, - 0x62, 0xaa, 0x5c, 0x58, 0x42, 0x62, 0x2f, 0x5b, 0xb6, 0x5c, 0x92, 0xc3, - 0x88, 0x91, 0x28, 0x9f, 0x46, 0x0c, 0xa3, 0x3c, 0x32, 0xd6, 0x92, 0x0e, - 0x03, 0x69, 0x67, 0xf0, 0x0a, 0xe1, 0xc1, 0x0c, 0xee, 0x92, 0xf6, 0x91, - 0x9e, 0x3c, 0x7e, 0x76, 0xaf, 0x73, 0x2f, 0x3e, 0xf9, 0x2d, 0x5c, 0xd7, - 0xf5, 0x44, 0x08, 0x53, 0x90, 0x7c, 0x77, 0x3e, 0x40, 0xbb, 0x64, 0xee, - 0x0e, 0xed, 0x75, 0x92, 0x70, 0xfa, 0xe7, 0xdc, 0x1f, 0x64, 0x46, 0xd3, - 0xd6, 0x0e, 0x8e, 0x6d, 0x32, 0x87, 0x93, 0x21, 0x08, 0x16, 0x78, 0xe6, - 0x4e, 0xae, 0x97, 0xef, 0x8c, 0xfc, 0x87, 0xea, 0x4b, 0x37, 0xa9, 0x9e, - 0x8a, 0x0a, 0xe8, 0x3a, 0x9a, 0xe5, 0xe8, 0x5b, 0x04, 0xad, 0x3a, 0x09, - 0x2e, 0x9e, 0x49, 0xc6, 0xc0, 0x3f, 0xf0, 0x15, 0x44, 0xbe, 0xca, 0x59, - 0x31, 0xf1, 0xd5, 0x6f, 0x1c, 0x16, 0x28, 0xf3, 0x9b, 0xbe, 0x05, 0x22, - 0x6b, 0x2f, 0xd3, 0xba, 0xa2, 0xf4, 0x09, 0x53, 0x2a, 0x89, 0x71, 0x91, - 0x25, 0x9d, 0xed, 0x21, 0x7d, 0xe9, 0x15, 0x34, 0x9b, 0x59, 0xa2, 0x48, - 0x59, 0xec, 0xdc, 0x8e, 0x44, 0x1f, 0xd4, 0x8e, 0xaa, 0x03, 0xb9, 0x25, - 0x4d, 0x23, 0x0d, 0x8c, 0x36, 0xf0, 0x72, 0x46, 0x58, 0x3f, 0xc2, 0x51, - 0xd7, 0xc6, 0xff, 0xf0, 0x18, 0xa9, 0xf8, 0x4f, 0x37, 0x6d, 0x37, 0xd8, - 0x78, 0x13, 0x04, 0xd6, 0x42, 0xcf, 0xec, 0x84, 0xb4, 0x3b, 0x93, 0x41, - 0x4a, 0x26, 0x54, 0xdf, 0xc0, 0xab, 0x31, 0x36, 0xa6, 0x7b, 0x28, 0x63, - 0x15, 0xe3, 0x0c, 0xbb, 0x75, 0xf1, 0xa1, 0x49, 0x6a, 0x87, 0xb2, 0x9d, - 0xcc, 0x51, 0xe0, 0x11, 0x46, 0x8d, 0xd8, 0x54, 0x28, 0x96, 0x23, 0x5b, - 0xd8, 0x7e, 0xb6, 0xad, 0xd4, 0x82, 0x3f, 0x83, 0x85, 0x6a, 0xe2, 0xe9, - 0x17, 0xdf, 0x5d, 0xf3, 0xaf, 0x96, 0xc7, 0xb7, 0x48, 0x90, 0x1f, 0xb4, - 0xa0, 0x8e, 0xce, 0x58, 0xbc, 0x50, 0xc4, 0xac, 0x87, 0x07, 0x36, 0x93, - 0xe7, 0xa3, 0x9e, 0x1f, 0x1f, 0x82, 0xba, 0x87, 0x2f, 0x4f, 0xff, 0xb4, - 0x03, 0x87, 0x6e, 0x05, 0xe6, 0xa1, 0x67, 0xd3, 0xd7, 0xfc, 0x74, 0xcf, - 0x48, 0x4a, 0xdb, 0x4d, 0x1e, 0xda, 0x21, 0x47, 0x6e, 0x13, 0x03, 0x14, - 0xd2, 0xd6, 0x4f, 0x9b, 0xc2, 0x43, 0x21, 0x1d, 0x4c, 0x84, 0xc5, 0x39, - 0x3b, 0xe0, 0x9c, 0x10, 0xfa, 0x5e, 0xf9, 0x1f, 0x5e, 0x30, 0x21, 0xdf, - 0x59, 0x11, 0xdb, 0x04, 0x71, 0xc5, 0xc0, 0x88, 0x16, 0xf7, 0x79, 0x63, - 0x50, 0x06, 0x67, 0x23, 0x6b, 0xe1, 0x5e, 0xcd, 0x3e, 0xba, 0x9a, 0x22, - 0x53, 0xef, 0xce, 0x8a, 0x6e, 0x8f, 0x2b, 0x11, 0x59, 0xc6, 0xb1, 0xa8, - 0xc4, 0xce, 0xa5, 0x4b, 0x6e, 0x22, 0xce, 0x15, 0x0f, 0x5f, 0x37, 0x52, - 0xfe, 0xdf, 0xe2, 0xcb, 0x95, 0xd1, 0x5b, 0x4f, 0xfd, 0x29, 0xe6, 0xbe, - 0x38, 0xbb, 0xc7, 0x58, 0xbf, 0x3b, 0x0b, 0x9d, 0xee, 0x45, 0xaf, 0xe5, - 0x4e, 0xbf, 0x0d, 0x22, 0xec, 0xca, 0xeb, 0xf5, 0xa0, 0x45, 0x92, 0x7c, - 0xcd, 0x77, 0x49, 0x65, 0xd3, 0x91, 0x4a, 0x54, 0xfa, 0xbb, 0xec, 0x8c, - 0xdc, 0x3f, 0x0f, 0xe5, 0xae, 0x16, 0x33, 0xcf, 0x47, 0x8e, 0xb6, 0xaa, - 0x03, 0xe0, 0x3f, 0x34, 0x18, 0x31, 0xd6, 0x6b, 0x50, 0x38, 0x72, 0x34, - 0x0d, 0xb9, 0x6a, 0x36, 0x92, 0x88, 0xa8, 0x64, 0xd9, 0x5d, 0x9d, 0xc1, - 0x44, 0x83, 0xb0, 0xc5, 0xc4, 0x62, 0x86, 0x17, 0xe9, 0xd9, 0x80, 0x38, - 0xff, 0x88, 0xcb, 0x2d, 0xe9, 0x7c, 0x3d, 0xe6, 0x19, 0x2b, 0x79, 0x3a, - 0x30, 0x9d, 0x56, 0xcc, 0x4b, 0x91, 0xf8, 0xb5, 0x2b, 0x0f, 0xa4, 0x23, - 0xdc, 0x71, 0x82, 0xa9, 0xef, 0xa7, 0x71, 0xdd, 0x19, 0xa5, 0xac, 0x03, - 0xa4, 0x40, 0x03, 0x70, 0x3c, 0x05, 0x64, 0x80, 0x0a, 0x65, 0x6e, 0x2a, - 0xfe, 0x72, 0x7a, 0xe8, 0xaa, 0x6c, 0x09, 0xce, 0x0e, 0xb5, 0xda, 0xf9, - 0x5c, 0xa8, 0x9a, 0x7a, 0x6f, 0xdc, 0x01, 0xe8, 0x34, 0x5a, 0x2e, 0xc8, - 0x63, 0x24, 0x45, 0x57, 0x90, 0x89, 0xa0, 0xe7, 0x5d, 0xbd, 0xba, 0xe8, - 0x76, 0x38, 0xbc, 0x93, 0x58, 0xef, 0x4a, 0x5e, 0x5e, 0xde, 0x4d, 0x67, - 0xa3, 0x30, 0x86, 0xd7, 0x9c, 0xb8, 0x46, 0xe2, 0x69, 0xf7, 0xd6, 0x16, - 0x52, 0x2f, 0x98, 0x28, 0xee, 0x42, 0x4d, 0x08, 0x41, 0xaa, 0xa5, 0xaa, - 0xff, 0x1e, 0x3f, 0x04, 0x2d, 0xd9, 0xe1, 0xe4, 0x66, 0x0e, 0x1f, 0x45, - 0x69, 0x87, 0x0a, 0x46, 0x37, 0x27, 0xb8, 0x72, 0x66, 0xf4, 0x97, 0x1f, - 0x8b, 0x02, 0xd7, 0x92, 0x85, 0x61, 0x00, 0x75, 0x48, 0xf8, 0xc9, 0xb0, - 0xf7, 0x46, 0x27, 0xc9, 0xcc, 0x81, 0x90, 0x17, 0x4b, 0x33, 0xd2, 0x6e, - 0x05, 0xdf, 0xf1, 0x0b, 0x37, 0x0c, 0xb4, 0xf8, 0x43, 0xbb, 0x0e, 0x85, - 0x2f, 0x79, 0xb1, 0xb7, 0x3b, 0xff, 0x4c, 0xb5, 0xf8, 0xc5, 0x88, 0x88, - 0xc5, 0xe6, 0xec, 0xcc, 0xa1, 0xc1, 0xf2, 0x22, 0x31, 0x87, 0x49, 0x5a, - 0x9f, 0xd1, 0x7f, 0x40, 0xe7, 0x74, 0xc3, 0x53, 0xd5, 0x9e, 0xeb, 0x17, - 0x3f, 0xe2, 0xfb, 0x73, 0x65, 0x8d, 0x83, 0x62, 0xaa, 0x0f, 0xa1, 0x56, - 0x8f, 0x2c, 0x3b, 0xd2, 0xc6, 0x15, 0x47, 0xf7, 0x20, 0x62, 0x7b, 0x37, - 0x7e, 0x10, 0x81, 0x48, 0x2f, 0x72, 0x5e, 0xa4, 0x5a, 0x9f, 0x63, 0x46, - 0xdd, 0x6a, 0x31, 0x70, 0x2b, 0xcf, 0xc0, 0x68, 0xfc, 0x52, 0xb5, 0x69, - 0xe7, 0x08, 0x94, 0x1e, 0x46, 0x31, 0x5e, 0xc2, 0x7c, 0x85, 0x94, 0xd4, - 0x4f, 0xbf, 0xed, 0xd4, 0x50, 0xf3, 0xe2, 0x70, 0x2d, 0xb1, 0x9b, 0xda, - 0x0d, 0x23, 0xad, 0xe5, 0x2a, 0x7e, 0xe4, 0x3f, 0xae, 0x88, 0xa1, 0x30, - 0x7e, 0x47, 0x99, 0xa6, 0x04, 0xae, 0x5e, 0x05, 0x09, 0xf0, 0x23, 0x52, - 0xfe, 0x46, 0x14, 0xbd, 0xe0, 0x33, 0xc5, 0x4f, 0x4b, 0xdf, 0x68, 0xc4, - 0xf7, 0xfa, 0x50, 0xe8, 0xa8, 0x34, 0xcd, 0x32, 0x33, 0x23, 0x2a, 0x96, - 0xf1, 0x54, 0xd7, 0xab, 0x73, 0x3d, 0x7f, 0x81, 0x7b, 0x8a, 0xf8, 0xb3, - 0x53, 0x2b, 0xfd, 0xaf, 0xc6, 0x11, 0x9a, 0x6b, 0xdb, 0x56, 0x3d, 0x23, - 0x6c, 0xe6, 0x66, 0x3b, 0xd2, 0x30, 0x38, 0xde, 0x71, 0xd0, 0x01, 0x20, - 0xde, 0x82, 0xae, 0x0c, 0x52, 0x74, 0xcd, 0x56, 0x8b, 0xb1, 0xf2, 0x6c, - 0xf3, 0xd7, 0x6c, 0x40, 0xb6, 0x0e, 0x2b, 0x47, 0x62, 0xbf, 0xcb, 0x51, - 0xeb, 0x31, 0xb5, 0xf8, 0x51, 0xbc, 0xac, 0xcc, 0x39, 0x1c, 0x14, 0x34, - 0x50, 0xb5, 0x4b, 0x06, 0x1b, 0x37, 0xe5, 0x7e, 0x93, 0x03, 0xcf, 0xe0, - 0x15, 0x51, 0xb2, 0xdc, 0xfb, 0x99, 0x54, 0xa8, 0xfb, 0xad, 0x6b, 0x10, - 0xfc, 0xe0, 0xd3, 0xae, 0x30, 0x99, 0x62, 0xe5, 0x78, 0x25, 0x61, 0x4a, - 0x09, 0xf2, 0xa5, 0x8b, 0x61, 0x10, 0x7c, 0xe2, 0xe5, 0x9e, 0x90, 0x29, - 0xfe, 0xc3, 0x9b, 0xb7, 0xa8, 0x2d, 0xba, 0x71, 0x31, 0xcd, 0xc2, 0x17, - 0xdf, 0xe1, 0xe7, 0x9f, 0x04, 0x11, 0xc8, 0x7c, 0xfc, 0xe4, 0x9d, 0x90, - 0x9f, 0x3b, 0xae, 0x4a, 0xe8, 0x30, 0xc7, 0x49, 0x27, 0x8b, 0x2d, 0x04, - 0x28, 0x63, 0x71, 0xb6, 0xec, 0x0a, 0x72, 0x12, 0xba, 0xba, 0x48, 0x39, - 0x5e, 0x7c, 0x36, 0x1b, 0x59, 0x6f, 0x43, 0x79, 0x29, 0x27, 0x3f, 0x90, - 0x3f, 0x52, 0x31, 0x7d, 0xce, 0x9a, 0x4d, 0xd3, 0x53, 0x8d, 0x38, 0x55, - 0x11, 0x6c, 0x50, 0x53, 0xe1, 0x0d, 0xcb, 0x46, 0x7d, 0x45, 0x6c, 0x84, - 0xfc, 0x7f, 0xb0, 0xb9, 0x70, 0x9a, 0xc3, 0xc8, 0x4d, 0x8b, 0x67, 0x83, - 0xfb, 0x61, 0xe0, 0x3f, 0xab, 0x96, 0x6a, 0xeb, 0xfb, 0xcf, 0x72, 0x0e, - 0x59, 0xb5, 0x8c, 0x3f, 0xe8, 0x8c, 0xe2, 0x26, 0x6e, 0x69, 0x25, 0xba, - 0x33, 0x10, 0xb6, 0xdd, 0x7d, 0x51, 0x11, 0xfd, 0xae, 0xf0, 0x55, 0x0c, - 0x72, 0x92, 0xd2, 0x59, 0xfa, 0x6f, 0x15, 0xb9, 0xb5, 0x99, 0xe7, 0xe8, - 0xb3, 0xc0, 0x21, 0x9f, 0x05, 0x88, 0xaf, 0xe1, 0xef, 0xd0, 0xd8, 0x5c, - 0x61, 0x75, 0x87, 0xf7, 0x39, 0x49, 0x32, 0x1f, 0x37, 0x41, 0x3a, 0xbc, - 0x10, 0x8b, 0xde, 0x93, 0xdc, 0x01, 0x87, 0x62, 0x3f, 0xdb, 0x33, 0x76, - 0x2a, 0xea, 0x0d, 0x8f, 0x60, 0xec, 0xd2, 0x02, 0xb7, 0x50, 0xc8, 0x04, - 0x47, 0x78, 0x73, 0xbc, 0x40, 0xed, 0xb2, 0x05, 0x6c, 0xa7, 0x44, 0x12, - 0x2f, 0x23, 0xcd, 0xd5, 0xa0, 0x56, 0xda, 0x9e, 0xf6, 0xb5, 0x28, 0x45, - 0x80, 0x4c, 0x29, 0x2e, 0x9b, 0x19, 0x0c, 0x7b, 0x17, 0x98, 0x13, 0x1c, - 0xed, 0x90, 0xc3, 0x4b, 0x6e, 0x36, 0xa7, 0xbb, 0x52, 0x2e, 0x79, 0xca, - 0xa2, 0x76, 0x89, 0xd2, 0x1e, 0x7b, 0x9c, 0x34, 0x30, 0x13, 0x2d, 0xaa, - 0x8d, 0x69, 0x11, 0x99, 0x03, 0xdb, 0xcd, 0x98, 0x33, 0x1c, 0xf0, 0x4d, - 0xfa, 0x3f, 0xde, 0xc1, 0x8e, 0xa4, 0x45, 0xf8, 0x75, 0x31, 0x21, 0x55, - 0xf2, 0xaf, 0xfd, 0x63, 0x38, 0x27, 0xb9, 0xab, 0x40, 0x61, 0x84, 0xbb, - 0xb9, 0x38, 0xa1, 0x95, 0xb3, 0x65, 0xee, 0x97, 0x30, 0x0b, 0x3e, 0x90, - 0xcb, 0xd0, 0xe2, 0x0c, 0x66, 0x86, 0xa4, 0x0f, 0xda, 0x78, 0x8d, 0x44, - 0xdc, 0x7e, 0xea, 0x24, 0x9e, 0x9b, 0xc1, 0x51, 0x14, 0x5e, 0xd6, 0x50, - 0x33, 0xe8, 0x6a, 0xed, 0xa1, 0xa4, 0x15, 0x43, 0x66, 0x45, 0x20, 0xfe, - 0x37, 0x31, 0xd6, 0x09, 0x7a, 0x75, 0xe2, 0x79, 0x02, 0xca, 0x6d, 0x67, - 0x4c, 0x90, 0xd2, 0xd1, 0x6e, 0xe5, 0x91, 0x2e, 0x98, 0xf7, 0x0e, 0xb8, - 0x7d, 0xed, 0x4f, 0xe8, 0x30, 0x45, 0x8f, 0xab, 0x29, 0x8c, 0x35, 0x0a, - 0xb1, 0x57, 0x95, 0x01, 0x2e, 0x05, 0x28, 0xf1, 0x3b, 0x6a, 0x5e, 0x88, - 0x26, 0xac, 0x13, 0x5f, 0xb7, 0xee, 0xe8, 0xe3, 0xd3, 0x9f, 0x26, 0x6c, - 0xcf, 0x0f, 0x30, 0xf8, 0xf4, 0xf7, 0xa9, 0xac, 0x2d, 0xde, 0xe6, 0xae, - 0x71, 0x69, 0x77, 0x74, 0x60, 0xac, 0x26, 0x36, 0x2e, 0x84, 0x57, 0x42, - 0x34, 0xcc, 0x9f, 0xd7, 0xee, 0xc7, 0x5d, 0xc2, 0xcd, 0x96, 0x87, 0x49, - 0xe0, 0x3e, 0x64, 0x66, 0xe1, 0x32, 0xc7, 0x4c, 0x23, 0x27, 0x08, 0x33, - 0xca, 0x9d, 0x7d, 0xd3, 0x5d, 0x46, 0xd6, 0xe3, 0x89, 0xc9, 0x39, 0xce, - 0xb7, 0x95, 0xba, 0x9e, 0x49, 0x04, 0x7a, 0xd7, 0x4b, 0xf9, 0x2a, 0xb5, - 0x4f, 0x80, 0x05, 0x5f, 0x00, 0x68, 0x76, 0x91, 0xe2, 0xbb, 0x86, 0xc7, - 0xc7, 0x71, 0xac, 0xe8, 0xc3, 0xb4, 0xcf, 0xf4, 0xd3, 0xb0, 0x69, 0x87, - 0x29, 0x12, 0x66, 0x69, 0x7b, 0x5a, 0x60, 0xac, 0x58, 0x23, 0x2a, 0xa1, - 0x4d, 0x3c, 0x96, 0x93, 0xe7, 0x9f, 0xda, 0x86, 0x4c, 0xe6, 0xaf, 0x61, - 0x02, 0x43, 0x9a, 0x70, 0xda, 0xe7, 0x2a, 0xb6, 0x72, 0x35, 0x6f, 0xed, - 0xea, 0xff, 0x4f, 0x27, 0x3b, 0x98, 0xd4, 0x07, 0x04, 0x9a, 0x6d, 0xc5, - 0xb9, 0xf9, 0xf0, 0xfa, 0xf2, 0x66, 0x9f, 0xe2, 0x87, 0x0e, 0x83, 0x32, - 0x03, 0xed, 0xc2, 0xe9, 0xe1, 0x1d, 0x1d, 0x50, 0xff, 0x9d, 0xbe, 0xfe, - 0xe7, 0xa3, 0xa4, 0xf7, 0x09, 0xbe, 0x4a, 0x68, 0x00, 0x64, 0xa0, 0xe2, - 0xa4, 0x29, 0x81, 0xd2, 0x0b, 0x7b, 0x94, 0x53, 0x68, 0x7e, 0xf7, 0xb9, - 0xcc, 0x5e, 0xe5, 0xf4, 0x1f, 0x67, 0xe2, 0x9a, 0x7d, 0x09, 0x52, 0x33, - 0xdc, 0x8b, 0x2a, 0x79, 0x34, 0xf3, 0x37, 0x22, 0x1f, 0xe8, 0xf8, 0x9a, - 0xc4, 0x4a, 0x2e, 0x2f, 0x95, 0x1e, 0x5f, 0x3b, 0x9a, 0x0d, 0x2d, 0x57, - 0x68, 0x45, 0x48, 0xf0, 0x83, 0xb6, 0x22, 0x64, 0xcd, 0xa8, 0xa9, 0x0f, - 0xeb, 0x83, 0x86, 0xea, 0xd7, 0x4c, 0xfd, 0x53, 0x14, 0x21, 0xf7, 0x6c, - 0xe6, 0x72, 0xd7, 0x11, 0x91, 0xe5, 0xbd, 0x05, 0x48, 0x1e, 0xaf, 0x12, - 0x9e, 0xdb, 0x3c, 0xd9, 0x74, 0x2d, 0x78, 0x6b, 0x1c, 0x51, 0xd3, 0xd9, - 0x79, 0xa3, 0x40, 0x38, 0x74, 0x9f, 0xae, 0x77, 0xea, 0x0e, 0x85, 0xc1, - 0xe8, 0xe6, 0x1a, 0xa5, 0x9c, 0x58, 0x81, 0xad, 0x08, 0x46, 0x1c, 0xb1, - 0x29, 0x28, 0xe5, 0x72, 0xa8, 0x18, 0xad, 0xf1, 0xc0, 0x39, 0xd8, 0xee, - 0x2b, 0x3e, 0xa5, 0x17, 0xea, 0x93, 0x54, 0x6b, 0xa7, 0x80, 0xec, 0xac, - 0x8e, 0x5c, 0x30, 0x5b, 0xb2, 0x25, 0xcd, 0x78, 0xb0, 0x6a, 0xa3, 0xb5, - 0x9b, 0x75, 0x74, 0xe3, 0x9d, 0x8d, 0x96, 0x1e, 0x0e, 0x4f, 0x77, 0x5c, - 0xfc, 0x43, 0xf4, 0xcf, 0x60, 0x0c, 0xe3, 0xc0, 0x13, 0x78, 0xb2, 0x20, - 0xb0, 0x46, 0xd0, 0xf0, 0x8a, 0xca, 0xf8, 0xf2, 0x97, 0xc9, 0x19, 0x16, - 0xb2, 0x2c, 0x05, 0xb8, 0xb2, 0x6e, 0x7a, 0xcc, 0x3c, 0x7c, 0xf2, 0x95, - 0x93, 0x7f, 0x95, 0x57, 0x92, 0xd4, 0x8b, 0x9d, 0x30, 0x6d, 0x69, 0xb4, - 0x50, 0xe9, 0xd6, 0xb4, 0x82, 0xb1, 0xcd, 0xab, 0x55, 0x47, 0x48, 0x25, - 0x9c, 0xce, 0x59, 0x47, 0x82, 0x6b, 0xa1, 0xd3, 0xe8, 0x1b, 0xc0, 0x58, - 0xe1, 0xec, 0x9f, 0xe3, 0x4b, 0xcd, 0xab, 0xa8, 0x8e, 0x43, 0x40, 0x28, - 0x05, 0xc9, 0xbb, 0x8a, 0x29, 0xe2, 0xd3, 0xa9, 0xa2, 0xa6, 0x51, 0x49, - 0x07, 0x23, 0xd8, 0xb1, 0x4a, 0xa9, 0x1d, 0x9a, 0x05, 0x4a, 0x19, 0x34, - 0x08, 0x40, 0x91, 0x0b, 0x37, 0x44, 0x53, 0xe4, 0x58, 0xcd, 0x28, 0xb0, - 0x49, 0xc1, 0x21, 0x4e, 0x3e, 0x2a, 0x34, 0xce, 0x16, 0xea, 0xed, 0xa9, - 0xde, 0xd3, 0xf3, 0x0d, 0xe8, 0xba, 0x0c, 0x3a, 0x15, 0xf6, 0x9a, 0x58, - 0x73, 0x86, 0xeb, 0xa5, 0x7d, 0x9e, 0x9a, 0xef, 0x0d, 0x1d, 0x0c, 0x46, - 0xfd, 0xac, 0x90, 0x61, 0xcc, 0xe5, 0x3f, 0xd1, 0xaa, 0xa8, 0x8a, 0xa9, - 0xb9, 0xdb, 0x4f, 0xd7, 0x40, 0x9a, 0x22, 0x31, 0xcc, 0x09, 0x7c, 0x79, - 0xc4, 0x90, 0xf7, 0xb0, 0xd1, 0x48, 0x89, 0xc3, 0xa9, 0xf7, 0xea, 0x6f, - 0x4c, 0xd7, 0x15, 0x0d, 0x6a, 0xa7, 0x92, 0xc4, 0x0c, 0x25, 0xb6, 0x60, - 0x42, 0x75, 0x80, 0xe9, 0x16, 0x07, 0x70, 0xc4, 0x10, 0x5a, 0x42, 0xdf, - 0xf0, 0x13, 0x5b, 0xd8, 0x97, 0x35, 0x06, 0xd9, 0x43, 0xd5, 0x59, 0x7d, - 0xbc, 0x5d, 0xe7, 0x4c, 0x3f, 0x37, 0x5e, 0x09, 0x09, 0x57, 0x33, 0x13, - 0xc1, 0x81, 0x0f, 0x9c, 0x48, 0x75, 0xd4, 0x9c, 0x33, 0x5f, 0x0d, 0x31, - 0xe3, 0xf6, 0x2a, 0x58, 0x2d, 0xf4, 0x3b, 0x33, 0x94, 0x2b, 0x97, 0xea, - 0x9f, 0x6f, 0xc3, 0x9e, 0x2f, 0xd2, 0x8e, 0x75, 0x74, 0xd5, 0x27, 0xce, - 0x78, 0xe3, 0x52, 0x58, 0x2a, 0x0f, 0x90, 0xcd, 0xbb, 0x64, 0x3d, 0x8e, - 0x2e, 0x4b, 0x0b, 0xec, 0x33, 0x6e, 0x3d, 0xfc, 0x0b, 0x47, 0x67, 0xa9, - 0xf8, 0x7a, 0xc4, 0x69, 0xaf, 0xa4, 0x71, 0xc8, 0x84, 0xa1, 0x5c, 0x5b, - 0x33, 0xb0, 0x4a, 0x65, 0xc1, 0xa2, 0x02, 0xf5, 0xf6, 0x05, 0x3c, 0x24, - 0x16, 0x64, 0xe3, 0x9c, 0x87, 0x62, 0xad, 0xa3, 0x74, 0x13, 0xa8, 0x1a, - 0x80, 0x70, 0x89, 0xeb, 0xdc, 0x72, 0x40, 0x2d, 0x30, 0x07, 0x21, 0xb2, - 0xaf, 0xc4, 0xe5, 0x51, 0x6d, 0x0c, 0x96, 0xeb, 0x4f, 0x7d, 0xfc, 0x2d, - 0x47, 0x1f, 0x72, 0xad, 0x40, 0x03, 0x30, 0x83, 0xea, 0xf5, 0xe5, 0xf7, - 0xe9, 0xea, 0xce, 0x3e, 0x39, 0xab, 0xad, 0x69, 0x4f, 0xb4, 0x75, 0x49, - 0x76, 0xcb, 0x1d, 0xac, 0xfe, 0xaa, 0x43, 0x97, 0xc0, 0xf3, 0x09, 0xe7, - 0x78, 0x16, 0x34, 0x3a, 0x98, 0x01, 0x8c, 0x2c, 0xd0, 0x32, 0xb6, 0x1c, - 0xe1, 0x8a, 0x83, 0x05, 0x7a, 0xb1, 0x25, 0x18, 0x38, 0xea, 0x0c, 0x6b, - 0xf1, 0xe7, 0x49, 0xbe, 0x8e, 0x42, 0xd6, 0xb7, 0x0a, 0x1b, 0x5c, 0x00, - 0x99, 0xdb, 0xb1, 0xaa, 0x89, 0xb9, 0xc4, 0xe9, 0xef, 0x5f, 0xf2, 0x9d, - 0xa0, 0xf0, 0x6d, 0x8c, 0x9d, 0xc5, 0x41, 0x60, 0x88, 0x2a, 0xb0, 0xdc, - 0xc2, 0x70, 0x1d, 0xd9, 0xe6, 0xba, 0x77, 0xe4, 0x3a, 0x27, 0x01, 0x96, - 0xb4, 0x48, 0x09, 0x39, 0x1d, 0x73, 0x7f, 0x1c, 0xed, 0xc4, 0x35, 0x09, - 0x45, 0x03, 0xdd, 0x89, 0x5f, 0x30, 0x77, 0x74, 0x3c, 0x3c, 0xf0, 0x90, - 0x2e, 0x3e, 0x2f, 0xf5, 0x71, 0x4a, 0xac, 0x7f, 0xa5, 0x93, 0x5c, 0xcd, - 0xfa, 0x93, 0x5f, 0x52, 0x85, 0xba, 0x76, 0xea, 0x7c, 0x79, 0x3f, 0x43, - 0x60, 0x6b, 0x28, 0x30, 0x36, 0x34, 0x94, 0xb1, 0x5b, 0x1a, 0xa6, 0xe5, - 0x74, 0x0a, 0x8b, 0x8d, 0x32, 0x8a, 0xfd, 0xb5, 0x3a, 0xad, 0x8e, 0x20, - 0x80, 0xe5, 0x29, 0xe1, 0x9a, 0x84, 0x2a, 0xed, 0xc9, 0x39, 0x3c, 0xa3, - 0xcb, 0x0c, 0xc6, 0x57, 0xc3, 0x1f, 0xd3, 0xb8, 0x2e, 0xec, 0xa7, 0x19, - 0xba, 0x55, 0x2e, 0x03, 0xea, 0x88, 0xe7, 0xbe, 0xcc, 0xc0, 0x09, 0xbb, - 0x56, 0x2d, 0xbe, 0xbd, 0xe7, 0xf1, 0x3a, 0xf2, 0xd9, 0xf8, 0x30, 0x4d, - 0xf1, 0xde, 0x1c, 0xde, 0x52, 0x4f, 0xb4, 0x92, 0xbb, 0xa9, 0x75, 0xc5, - 0x98, 0xa4, 0x23, 0x11, 0x8d, 0xf2, 0x53, 0xb5, 0x3a, 0x0a, 0x86, 0xa3, - 0x00, 0x67, 0xa2, 0xf1, 0x27, 0x5f, 0x0c, 0xda, 0x00, 0x40, 0xeb, 0xe4, - 0x39, 0xcf, 0xc2, 0x12, 0x49, 0x65, 0xcc, 0xe5, 0x8b, 0x3c, 0x69, 0x8d, - 0xb3, 0xd6, 0x63, 0x0f, 0xe0, 0x90, 0x44, 0xb8, 0x76, 0x02, 0xa9, 0xd7, - 0x24, 0xb2, 0x73, 0x1a, 0xce, 0x46, 0xa6, 0x9b, 0xe2, 0x78, 0xe3, 0x05, - 0xa3, 0x7a, 0x7e, 0xe2, 0xa7, 0x0e, 0x50, 0xe8, 0x55, 0x8e, 0xa9, 0x8f, - 0x44, 0x02, 0xbb, 0x14, 0xbe, 0x2c, 0x29, 0x56, 0x2d, 0x6f, 0x15, 0x6f, - 0x39, 0x66, 0x16, 0x57, 0x9e, 0x86, 0x18, 0x0b, 0x3c, 0x29, 0xd9, 0x2a, - 0xb6, 0x31, 0xc5, 0x58, 0x9a, 0x78, 0x64, 0xc0, 0x72, 0xbb, 0xb4, 0xb3, - 0x41, 0x99, 0xf8, 0xa2, 0x0e, 0xd0, 0x36, 0x17, 0xf6, 0x44, 0xd3, 0xf3, - 0x0a, 0xe2, 0xea, 0x60, 0x0c, 0x72, 0xfa, 0x29, 0x13, 0x7f, 0x39, 0x5d, - 0xff, 0x1e, 0x42, 0x6b, 0x07, 0x80, 0x64, 0x85, 0x6f, 0xb1, 0xf9, 0x41, - 0x85, 0xe5, 0xfd, 0x0d, 0x9c, 0xb0, 0xa0, 0xbf, 0xdb, 0x8b, 0xb6, 0xf0, - 0x05, 0xe7, 0x86, 0x5b, 0x20, 0x2f, 0x06, 0xa4, 0x0b, 0xdf, 0x08, 0xed, - 0x64, 0xd2, 0xb8, 0xe4, 0x40, 0x29, 0xc9, 0x76, 0x2c, 0x6c, 0xf6, 0xe2, - 0x2d, 0x11, 0x16, 0xe1, 0xcb, 0x59, 0x5c, 0x78, 0x98, 0x3c, 0x43, 0x4a, - 0xea, 0xbf, 0x75, 0xe0, 0x01, 0xea, 0x89, 0xa6, 0x98, 0x53, 0xa8, 0x8b, - 0x60, 0x04, 0xa0, 0x4d, 0x7f, 0x6e, 0x1a, 0x6c, 0x9e, 0xa7, 0x7c, 0xe8, - 0x81, 0xc1, 0xd5, 0x47, 0xc3, 0x13, 0xde, 0xcc, 0x2f, 0x76, 0x5b, 0x3b, - 0x77, 0xa9, 0xc6, 0xc4, 0x5a, 0x36, 0x9b, 0xcf, 0xd8, 0xd9, 0x07, 0xa5, - 0x29, 0x5d, 0x19, 0x3e, 0x06, 0x53, 0xae, 0xf5, 0x42, 0xe8, 0xfe, 0xb8, - 0x2e, 0x3f, 0xb3, 0xe4, 0xb0, 0x1e, 0x79, 0xe2, 0x22, 0x81, 0x17, 0xb0, - 0xd6, 0xa1, 0xfa, 0x33, 0xd2, 0xd5, 0xcb, 0x21, 0x75, 0x36, 0xa9, 0xf0, - 0x80, 0x0b, 0x84, 0x2e, 0x3a, 0xe5, 0xff, 0x2b, 0xf6, 0x47, 0xa7, 0x5f, - 0x6e, 0xe5, 0x39, 0x46, 0x5c, 0xfb, 0xc1, 0xdc, 0xf5, 0x15, 0xfd, 0x2d, - 0x71, 0xaa, 0xdc, 0x31, 0x49, 0x36, 0x21, 0x22, 0x25, 0x9f, 0xc5, 0x18, - 0xf2, 0xb5, 0x9b, 0x13, 0x60, 0x9b, 0x32, 0x59, 0x85, 0xb9, 0x3e, 0xa0, - 0xa2, 0xbd, 0xf1, 0xfb, 0x82, 0xf4, 0xf2, 0xef, 0x44, 0x17, 0xc2, 0xa3, - 0x45, 0x74, 0x26, 0x81, 0x5c, 0x1a, 0x16, 0x06, 0x5a, 0x09, 0x71, 0xbe, - 0xfe, 0x3f, 0x68, 0x17, 0xc7, 0xb5, 0x35, 0xbd, 0x99, 0xf1, 0x1e, 0x4c, - 0x83, 0x61, 0xb0, 0x63, 0x7b, 0xd8, 0xd4, 0x6c, 0x6d, 0x01, 0x01, 0x12, - 0x66, 0x49, 0x77, 0x43, 0x11, 0xa8, 0x81, 0x7a, 0x0f, 0xb5, 0x79, 0x3d, - 0x4e, 0x16, 0xb4, 0x33, 0x3f, 0x96, 0x3e, 0xe8, 0x67, 0x60, 0x34, 0x82, - 0xd8, 0xed, 0xc0, 0xf8, 0x9c, 0x42, 0x8d, 0xfc, 0xef, 0x99, 0x4f, 0x2b, - 0x67, 0xcf, 0xf1, 0x46, 0xbb, 0xd4, 0x8a, 0x13, 0xcd, 0x65, 0x77, 0x34, - 0x5a, 0x60, 0x24, 0xe9, 0xb8, 0x85, 0xf6, 0xf9, 0x03, 0x14, 0x63, 0x5e, - 0xf8, 0xa9, 0xdf, 0xec, 0x21, 0x09, 0xc5, 0x96, 0xf7, 0xbc, 0x55, 0x66, - 0xc5, 0x41, 0xe7, 0x6d, 0xe9, 0xfc, 0xf4, 0x0a, 0xcc, 0xae, 0x7a, 0x33, - 0x5f, 0xae, 0x7a, 0x57, 0x16, 0xbc, 0x9b, 0x87, 0x9a, 0x15, 0xf4, 0x65, - 0x6d, 0xe0, 0x9c, 0xf3, 0xbb, 0xe9, 0x09, 0xef, 0xc4, 0x9d, 0xed, 0x13, - 0xfe, 0x01, 0x6f, 0xbb, 0x62, 0x30, 0x46, 0xcb, 0x22, 0xa1, 0x1b, 0xcb, - 0x4c, 0xa1, 0xa1, 0xfd, 0x6a, 0x34, 0xb2, 0x00, 0x72, 0xf3, 0xc6, 0x08, - 0x89, 0x0f, 0xf5, 0x6c, 0x74, 0xc8, 0xd6, 0xe5, 0x75, 0xdc, 0x3e, 0xce, - 0x2d, 0xec, 0xd0, 0x04, 0x26, 0x89, 0xec, 0xa1, 0x0d, 0x1d, 0x43, 0x56, - 0x63, 0xc7, 0xb0, 0x71, 0x0e, 0xd6, 0x9d, 0xf7, 0x29, 0xfb, 0xb5, 0x82, - 0x8e, 0xfe, 0xb9, 0x1a, 0x1d, 0x2e, 0x9f, 0x5b, 0xb4, 0x36, 0xe4, 0x22, - 0x23, 0x65, 0xd9, 0x55, 0x21, 0xd6, 0x8e, 0xf3, 0x6d, 0x7a, 0x22, 0xb6, - 0x2e, 0xae, 0x7c, 0xee, 0xa1, 0xf4, 0xa3, 0x08, 0x51, 0xf4, 0x6a, 0x69, - 0xd0, 0xa6, 0x61, 0x52, 0xcf, 0x87, 0xeb, 0x7a, 0x4a, 0xa0, 0x6b, 0xfb, - 0xd4, 0xeb, 0x91, 0xaa, 0xd7, 0xfa, 0xa3, 0xde, 0x29, 0x41, 0x76, 0x6e, - 0x5e, 0x26, 0xa1, 0x09, 0x65, 0xc6, 0x57, 0x8b, 0x94, 0x8b, 0x90, 0xdb, - 0x1f, 0xcd, 0x9a, 0x4b, 0xfa, 0x9d, 0xeb, 0xc4, 0xf7, 0xbb, 0xf1, 0xe4, - 0x72, 0xe8, 0x2a, 0xa2, 0x46, 0xfe, 0xba, 0xe4, 0x3f, 0x13, 0xa7, 0x05, - 0x72, 0x73, 0xab, 0x08, 0x9b, 0x01, 0x7b, 0xf2, 0x4f, 0x3a, 0x55, 0x7e, - 0x0d, 0xcd, 0x1d, 0x1d, 0xd2, 0x8f, 0x84, 0x93, 0x59, 0x01, 0x8c, 0x61, - 0x21, 0x9d, 0x09, 0x78, 0x38, 0x02, 0x56, 0xd9, 0x4b, 0xae, 0x72, 0x6b, - 0xcf, 0x58, 0x2b, 0x02, 0x37, 0x9d, 0x48, 0xf8, 0x57, 0x28, 0x46, 0x54, - 0xc2, 0x7d, 0x5b, 0xfa, 0xa7, 0xf7, 0xf6, 0x8a, 0xaf, 0xd5, 0x6c, 0xdf, - 0x06, 0xc2, 0xfe, 0x49, 0xea, 0x0f, 0x48, 0xb0, 0x14, 0x99, 0x8b, 0xc2, - 0xbe, 0xf1, 0x9c, 0x28, 0x7a, 0x69, 0x3e, 0xd1, 0x31, 0xf6, 0xba, 0x75, - 0xfa, 0x1b, 0xa8, 0x3f, 0x35, 0x31, 0x90, 0x38, 0xc5, 0xdf, 0x85, 0x0f, - 0x94, 0xd0, 0xb4, 0x84, 0xed, 0x94, 0x43, 0xaf, 0x59, 0xaa, 0xa5, 0x97, - 0xfc, 0x1f, 0x47, 0x58, 0x18, 0xf4, 0x14, 0xeb, 0x66, 0x8b, 0xb9, 0x42, - 0x92, 0x0a, 0x9c, 0xbd, 0x3d, 0x6e, 0xf3, 0xb3, 0xc2, 0x77, 0x5f, 0x86, - 0xed, 0xf4, 0x4b, 0xc1, 0x27, 0x8a, 0xd3, 0x45, 0x95, 0x0b, 0xcd, 0xd6, - 0xe2, 0x09, 0xab, 0xe8, 0x1e, 0xdd, 0xa0, 0x25, 0x42, 0x7e, 0x00, 0x09, - 0x14, 0x24, 0x6d, 0x76, 0xc8, 0x7c, 0xb4, 0x68, 0xbf, 0x8e, 0xc4, 0x31, - 0xfa, 0x27, 0xb7, 0x05, 0xdf, 0x30, 0xa8, 0xd7, 0x53, 0xf7, 0xaf, 0x27, - 0x52, 0x5c, 0xcd, 0x5a, 0x79, 0xa8, 0x84, 0xc0, 0x68, 0xef, 0xef, 0x40, - 0x2b, 0xdb, 0xbc, 0xe4, 0xe8, 0x2b, 0x91, 0x2e, 0x9a, 0x38, 0x22, 0x37, - 0x46, 0x20, 0xb8, 0xbd, 0x7c, 0xee, 0x5e, 0xc8, 0x3e, 0xf1, 0xda, 0xdb, - 0xd0, 0x2c, 0x77, 0x70, 0x48, 0x24, 0x2a, 0x3f, 0x34, 0xed, 0xd6, 0xcf, - 0xaa, 0x10, 0x70, 0xba, 0xfc, 0x77, 0xd8, 0xf6, 0x63, 0xfa, 0xad, 0xfa, - 0xd2, 0x45, 0xd5, 0xa1, 0x6d, 0x42, 0x64, 0xdf, 0x89, 0x67, 0x35, 0x89, - 0xf8, 0xc5, 0x5f, 0x8d, 0x5a, 0x48, 0xa8, 0xa4, 0x4b, 0x83, 0xbb, 0x9d, - 0x57, 0x2c, 0x21, 0x4b, 0xa0, 0x49, 0x0d, 0x88, 0x5d, 0xa4, 0x36, 0x5a, - 0xf2, 0x00, 0x85, 0xe0, 0x2c, 0x31, 0x5f, 0x04, 0xc7, 0x8a, 0x62, 0x38, - 0x0c, 0x77, 0x40, 0x1e, 0xd7, 0x7a, 0x0f, 0x49, 0x27, 0xa9, 0x91, 0x42, - 0x4e, 0x45, 0x8b, 0xee, 0x32, 0xa1, 0xd4, 0x2d, 0x20, 0x91, 0xb0, 0x8c, - 0xfc, 0x77, 0xda, 0xa1, 0xfc, 0x98, 0xfd, 0x65, 0x99, 0x29, 0xa0, 0x1b, - 0x5e, 0xe8, 0x50, 0x94, 0xa1, 0xff, 0xe8, 0x30, 0xc4, 0x51, 0x0d, 0x4d, - 0x6e, 0xa6, 0xcf, 0xfc, 0x74, 0xc8, 0x88, 0x6c, 0xa2, 0xb4, 0x4e, 0xdb, - 0xd0, 0x33, 0xce, 0xd5, 0x16, 0x6d, 0x99, 0xd7, 0xf5, 0x97, 0x65, 0x1f, - 0x47, 0x11, 0x00, 0x76, 0x09, 0x34, 0xf8, 0x73, 0x29, 0x5e, 0x40, 0x73, - 0x54, 0x55, 0x6b, 0x3f, 0x79, 0xcd, 0xff, 0xf3, 0xdb, 0xf7, 0x2b, 0x1e, - 0x9a, 0x28, 0xb4, 0xa0, 0x8a, 0x61, 0xfc, 0xfe, 0x77, 0xf8, 0x47, 0xf2, - 0x71, 0xa7, 0x44, 0x77, 0xe1, 0xd3, 0x9f, 0xd0, 0x65, 0x66, 0x1d, 0xe3, - 0x64, 0x8f, 0xf0, 0x98, 0x4e, 0x74, 0xd3, 0xd5, 0x11, 0x0a, 0xc7, 0x0b, - 0x84, 0x6b, 0xa3, 0x83, 0x40, 0x95, 0x46, 0x88, 0xe7, 0x14, 0x8f, 0x2b, - 0x48, 0x1a, 0x98, 0x3c, 0xd7, 0x1b, 0xee, 0xb9, 0x83, 0x2c, 0xa3, 0x02, - 0xa8, 0xce, 0xe2, 0x75, 0xae, 0x42, 0xf9, 0xd7, 0xe3, 0x98, 0x93, 0x92, - 0x8d, 0x77, 0x35, 0x15, 0x38, 0xd7, 0x79, 0x9e, 0x81, 0x74, 0xe7, 0x56, - 0xa1, 0xbc, 0xb2, 0xfe, 0x1d, 0x1d, 0x1f, 0xae, 0xc6, 0x56, 0x25, 0x80, - 0x3b, 0xdc, 0x30, 0x83, 0x36, 0x8d, 0x55, 0x10, 0xdb, 0x19, 0xd2, 0xd8, - 0x50, 0x27, 0xa1, 0xaa, 0xe6, 0x19, 0xaa, 0x0b, 0x65, 0x59, 0xa9, 0x95, - 0x66, 0xe2, 0x31, 0xea, 0x3a, 0x3a, 0x7c, 0xb9, 0x5b, 0xf1, 0xd9, 0xba, - 0x4d, 0x53, 0xdf, 0xbe, 0x72, 0x98, 0x75, 0xd2, 0x2c, 0x80, 0xbb, 0x7d, - 0x8f, 0x61, 0x2e, 0x8b, 0xf4, 0xf3, 0xf2, 0x9e, 0xd6, 0xd0, 0xbb, 0x56, - 0xbe, 0x39, 0x7f, 0x7a, 0x3a, 0x3e, 0x58, 0x22, 0xaa, 0x20, 0x23, 0xe9, - 0xa4, 0x4c, 0x32, 0xe8, 0x64, 0x8d, 0xae, 0xd7, 0x62, 0x9f, 0x54, 0x71, - 0xcc, 0x52, 0xfb, 0xb6, 0x23, 0xd4, 0x49, 0x00, 0xaf, 0xf5, 0x8e, 0xfe, - 0x91, 0x72, 0x84, 0x5c, 0xcb, 0x9d, 0x62, 0xcd, 0x4e, 0x52, 0x5e, 0x1b, - 0x41, 0xe2, 0x80, 0x24, 0xb9, 0x84, 0x58, 0x83, 0xe8, 0x55, 0x15, 0x0e, - 0x2e, 0x80, 0xab, 0xff, 0xf5, 0x6b, 0x28, 0x72, 0xc9, 0x77, 0xab, 0xf9, - 0xe2, 0x0e, 0x5b, 0xaf, 0x5d, 0x0e, 0x08, 0x79, 0x33, 0x76, 0x8b, 0xa3, - 0xb6, 0xa8, 0xbb, 0x53, 0x71, 0x82, 0x93, 0x6b, 0x23, 0x2f, 0x78, 0xc5, - 0x36, 0x6b, 0x1e, 0x57, 0x40, 0x51, 0xde, 0x94, 0x51, 0x2f, 0x31, 0x3f, - 0x11, 0x38, 0x56, 0xfc, 0x22, 0x01, 0x93, 0xe5, 0x9e, 0xf8, 0x10, 0x61, - 0x04, 0xd9, 0x5a, 0x6a, 0x02, 0xd2, 0xbb, 0x17, 0x2c, 0x62, 0xf3, 0x32, - 0x24, 0xa3, 0x22, 0xbc, 0x29, 0x05, 0xf6, 0x93, 0xc3, 0xd4, 0xb6, 0x23, - 0x7f, 0x72, 0xe2, 0x11, 0xda, 0x2e, 0x12, 0x55, 0x9e, 0xbc, 0xe3, 0xe7, - 0x26, 0xb8, 0x33, 0x71, 0x0f, 0x13, 0xb1, 0x38, 0x87, 0xd2, 0xa3, 0xda, - 0x01, 0x00, 0x0f, 0x9a, 0x36, 0x57, 0xeb, 0x06, 0xa3, 0x2b, 0x8d, 0x13, - 0x7d, 0xa1, 0xb5, 0xb0, 0x9d, 0x7b, 0x1c, 0x47, 0x01, 0x73, 0xde, 0x97, - 0xb1, 0xb5, 0x15, 0x73, 0xb5, 0xdd, 0xb5, 0x19, 0x2b, 0xce, 0xd5, 0x99, - 0xe5, 0x7b, 0x6a, 0xc6, 0x38, 0x3a, 0xc0, 0xd4, 0x63, 0x99, 0x41, 0x8e, - 0xb4, 0xf9, 0xe6, 0xa5, 0xd0, 0xcb, 0xf4, 0x4f, 0x8a, 0xd8, 0x9b, 0xbd, - 0xdf, 0x21, 0x1a, 0xf2, 0x79, 0x22, 0xd7, 0x23, 0x27, 0x64, 0x85, 0xa0, - 0x04, 0x13, 0xc1, 0xde, 0x79, 0x1f, 0x7a, 0xaa, 0x77, 0x26, 0x4e, 0x47, - 0xa4, 0x09, 0x59, 0xe3, 0x38, 0x05, 0xc9, 0x63, 0x44, 0x75, 0x16, 0x07, - 0x28, 0x19, 0xa2, 0x7b, 0xb4, 0x09, 0xdc, 0x3f, 0x3b, 0x46, 0x87, 0x2d, - 0xcf, 0x1e, 0x17, 0x64, 0x74, 0x0f, 0xf6, 0x85, 0xa0, 0x09, 0x39, 0x37, - 0xb2, 0x1f, 0x1a, 0x43, 0x79, 0x7f, 0x72, 0x96, 0xea, 0x67, 0x5b, 0x2e, - 0xa9, 0x37, 0x21, 0x53, 0x10, 0x2b, 0x2e, 0x53, 0xe3, 0x28, 0x06, 0x8e, - 0x7a, 0x50, 0xd4, 0x74, 0xe5, 0xcb, 0x8d, 0x3c, 0xae, 0xa9, 0x9d, 0x0f, - 0xfb, 0x82, 0x33, 0xbf, 0x14, 0x3b, 0xab, 0x35, 0x4b, 0xb4, 0x04, 0x70, - 0xae, 0x6d, 0x6a, 0x97, 0xf6, 0xd4, 0x45, 0x3f, 0xf8, 0x03, 0x54, 0x62, - 0xf2, 0x28, 0x93, 0x9f, 0x02, 0xae, 0x43, 0x88, 0xaa, 0x6b, 0xb7, 0xc5, - 0x8d, 0x0f, 0x1e, 0x84, 0x0a, 0xc1, 0x0d, 0x34, 0x05, 0xbf, 0x51, 0xb1, - 0x88, 0xf6, 0x8f, 0xc4, 0xb6, 0xe4, 0x7c, 0xb1, 0x0a, 0x05, 0x2a, 0x8f, - 0x9f, 0xd1, 0xdf, 0x00, 0xea, 0x23, 0xbe, 0x79, 0x44, 0x80, 0x9e, 0x46, - 0x7b, 0xa0, 0x60, 0x09, 0x1f, 0x14, 0x9a, 0x9c, 0xe6, 0x53, 0x88, 0x19, - 0xda, 0xc2, 0xbf, 0x6a, 0xab, 0x89, 0x61, 0x8f, 0xcb, 0x61, 0x19, 0xdf, - 0x03, 0x76, 0xdf, 0x28, 0x7c, 0x08, 0xb3, 0xc0, 0x0d, 0x34, 0x5a, 0x70, - 0xd4, 0x7d, 0x13, 0xe4, 0x02, 0xa5, 0x58, 0xff, 0x76, 0x9f, 0xf1, 0x01, - 0x07, 0x9d, 0x96, 0x18, 0x38, 0x61, 0x2c, 0xf0, 0x97, 0xfa, 0x4f, 0xe3, - 0x02, 0x50, 0x08, 0x93, 0xae, 0x8d, 0xdf, 0x2e, 0x22, 0x12, 0x3a, 0x5f, - 0x7d, 0xed, 0xd1, 0x16, 0xf9, 0xcc, 0xa6, 0xfc, 0x38, 0x4e, 0x71, 0x1f, - 0x25, 0x88, 0x58, 0x07, 0x9d, 0x2c, 0x14, 0x6a, 0x60, 0x57, 0x22, 0xab, - 0x6e, 0xfd, 0xd8, 0x99, 0x8a, 0x62, 0xff, 0xec, 0x02, 0x13, 0x59, 0xce, - 0x8b, 0x74, 0xfc, 0x67, 0x28, 0xee, 0x51, 0x9a, 0x44, 0x08, 0x92, 0x2f, - 0xe4, 0x93, 0xea, 0x84, 0x5d, 0xb1, 0x8c, 0x93, 0xea, 0x69, 0x2d, 0xf3, - 0xd9, 0xab, 0x29, 0x99, 0xfb, 0x9c, 0xaa, 0x3b, 0x95, 0xb2, 0xaf, 0xb8, - 0x4f, 0x9e, 0xfb, 0x79, 0x16, 0x8d, 0x1a, 0xac, 0x62, 0xb9, 0x46, 0x97, - 0x11, 0xb6, 0xee, 0xb4, 0xad, 0x25, 0x8e, 0x0c, 0x88, 0x98, 0xc8, 0xad, - 0x42, 0xa6, 0x5a, 0xea, 0x02, 0x8e, 0x60, 0xbe, 0xe0, 0xd9, 0xde, 0xaa, - 0x34, 0xc2, 0x75, 0x76, 0x7c, 0x25, 0x95, 0xe1, 0xe0, 0xe2, 0xe3, 0xaa, - 0x75, 0xc0, 0x0b, 0x32, 0xe8, 0x40, 0x55, 0x98, 0xc9, 0x0f, 0x16, 0x9e, - 0x40, 0xe5, 0x92, 0x7c, 0xa5, 0x62, 0x2d, 0x90, 0x95, 0xed, 0x77, 0x87, - 0x1c, 0xea, 0xb3, 0xc1, 0xa5, 0x31, 0x82, 0x11, 0x4b, 0x84, 0x5c, 0x27, - 0x5f, 0x54, 0x51, 0x4b, 0x49, 0x62, 0x2d, 0xcd, 0xc6, 0x07, 0x91, 0xc0, - 0x2b, 0x40, 0xf4, 0x2b, 0x7e, 0x9f, 0x41, 0x14, 0x4b, 0x33, 0xb8, 0xd4, - 0x1c, 0x0d, 0xfd, 0x03, 0xcb, 0xb6, 0xa1, 0x55, 0x3c, 0x06, 0x5f, 0xad, - 0xb4, 0x24, 0xf0, 0x10, 0xe9, 0x28, 0xb4, 0x72, 0xea, 0xae, 0xe0, 0xf6, - 0x3c, 0x2e, 0xf5, 0xc3, 0xcf, 0xde, 0xeb, 0x3d, 0x39, 0xf6, 0x62, 0x9e, - 0x22, 0x0e, 0x15, 0xa0, 0x47, 0xb1, 0x90, 0x34, 0xf6, 0x12, 0xc5, 0x1d, - 0xa2, 0x99, 0x45, 0x41, 0xc6, 0x85, 0x0c, 0x40, 0x87, 0x44, 0x8d, 0x8a, - 0x1f, 0x1f, 0x70, 0xf3, 0xbc, 0x2c, 0x5d, 0xb8, 0x6a, 0x3f, 0x92, 0xec, - 0x2c, 0x7e, 0x0a, 0xcc, 0x0c, 0xb3, 0xe3, 0xd7, 0x38, 0x94, 0x53, 0xf3, - 0xa8, 0x2c, 0xfb, 0x7b, 0x09, 0x80, 0x61, 0x99, 0xd2, 0x1c, 0x33, 0x8a, - 0x97, 0x6b, 0x12, 0xed, 0x69, 0x0b, 0x49, 0xa0, 0xd5, 0xa8, 0xfc, 0xb2, - 0xf2, 0xd3, 0x24, 0x11, 0x7c, 0xcb, 0xf6, 0xe2, 0x10, 0xfe, 0x21, 0x59, - 0xf2, 0xa1, 0x9c, 0x0e, 0xfc, 0x39, 0x47, 0xfc, 0x30, 0x1c, 0x99, 0xaa, - 0xef, 0x33, 0xb1, 0x19, 0x9f, 0x82, 0xf1, 0x60, 0x7b, 0xb5, 0xe8, 0x10, - 0x60, 0x28, 0xeb, 0x58, 0x26, 0x86, 0x3b, 0xe5, 0xcc, 0x1a, 0x27, 0x0e, - 0xaa, 0x40, 0xd3, 0x7c, 0xea, 0x49, 0x00, 0x10, 0x13, 0x28, 0x67, 0x4b, - 0x0a, 0x2c, 0x04, 0xc6, 0xd5, 0x3b, 0x74, 0xe9, 0x36, 0x0e, 0x93, 0xb1, - 0x10, 0x8e, 0x24, 0xcf, 0xb6, 0x5e, 0xf6, 0x02, 0x24, 0x57, 0xbd, 0xb2, - 0x0b, 0x6c, 0x7b, 0x6d, 0xb9, 0xa3, 0x22, 0xc1, 0xd5, 0xbd, 0x63, 0xab, - 0x60, 0x55, 0x3e, 0x0f, 0x88, 0x88, 0xcf, 0x05, 0xa4, 0x01, 0x5c, 0x63, - 0x78, 0xcb, 0xbd, 0x45, 0x1f, 0x10, 0x9d, 0x3c, 0xe1, 0x36, 0x8e, 0xc1, - 0x18, 0xe2, 0xba, 0x6c, 0xb2, 0x92, 0x40, 0xfd, 0x63, 0x9c, 0x39, 0xf0, - 0x11, 0x3d, 0x50, 0x2f, 0x4e, 0xb1, 0x7b, 0x56, 0xea, 0x90, 0x9d, 0x89, - 0xb2, 0xeb, 0xd9, 0x37, 0x67, 0x71, 0xcd, 0x72, 0x73, 0x04, 0xdb, 0x9d, - 0xd3, 0x36, 0xc0, 0x8b, 0x8b, 0xa7, 0x55, 0x71, 0xd3, 0x50, 0xbe, 0xf5, - 0xa5, 0xbb, 0x68, 0x86, 0xc8, 0x4b, 0x69, 0xb5, 0x69, 0x70, 0x60, 0x74, - 0x81, 0x39, 0x4a, 0x7a, 0xd9, 0xca, 0xdf, 0xca, 0xd5, 0xd5, 0xd8, 0x72, - 0x12, 0x4d, 0xe9, 0x9e, 0x19, 0x83, 0xf3, 0xc2, 0x91, 0x14, 0x02, 0x4d, - 0xf6, 0x2a, 0x8a, 0xf3, 0x28, 0x1e, 0x55, 0x2a, 0x51, 0xcf, 0x26, 0x6f, - 0xf7, 0xa8, 0xff, 0x5b, 0x23, 0xe1, 0xf4, 0x8d, 0xa4, 0x34, 0xcb, 0x2e, - 0x6e, 0x0d, 0x02, 0x57, 0xbb, 0x97, 0x19, 0x96, 0xfc, 0x04, 0x31, 0xca, - 0x80, 0xb9, 0x60, 0xf1, 0xc4, 0xdf, 0x01, 0x12, 0xbb, 0xa0, 0xea, 0x72, - 0x50, 0xad, 0x60, 0x27, 0x59, 0x81, 0x7c, 0x7e, 0x2a, 0xa4, 0xad, 0x84, - 0xa0, 0x4e, 0xdb, 0x38, 0x6c, 0xea, 0xe4, 0x78, 0x12, 0xed, 0xa1, 0x5a, - 0xf6, 0x1c, 0x10, 0x02, 0x82, 0x95, 0x56, 0xfb, 0x8a, 0x4c, 0xfe, 0x7d, - 0xeb, 0xbe, 0x31, 0x08, 0x80, 0xae, 0x16, 0xe6, 0x28, 0xb0, 0x4f, 0xcb, - 0x7a, 0xca, 0x2d, 0x88, 0xc5, 0x92, 0xd0, 0x51, 0xc6, 0xa5, 0x86, 0xff, - 0x7a, 0xe5, 0xe4, 0x07, 0x7f, 0xfb, 0xa3, 0x27, 0x85, 0x5b, 0xf7, 0x85, - 0xcd, 0xc7, 0x38, 0x9a, 0x2e, 0x11, 0xa4, 0x33, 0x64, 0xea, 0x6f, 0x2b, - 0x77, 0x55, 0x97, 0xef, 0x7a, 0xc9, 0x0f, 0x28, 0xbc, 0xf3, 0xac, 0xc5, - 0x74, 0x92, 0x18, 0xe2, 0x43, 0x37, 0x38, 0x06, 0xba, 0xfd, 0xc9, 0x3b, - 0x0f, 0x4a, 0xdb, 0x88, 0x2d, 0xae, 0x4c, 0x3e, 0x3b, 0xa9, 0x0a, 0xf4, - 0xa1, 0xdf, 0xc6, 0x37, 0x4c, 0x0c, 0x58, 0xd8, 0xb1, 0xdd, 0x43, 0x82, - 0xf2, 0xa8, 0x7f, 0x23, 0x2a, 0xcf, 0xe5, 0x3c, 0x88, 0xcf, 0xf1, 0x7e, - 0xc4, 0x39, 0x62, 0x64, 0x10, 0xb0, 0x3a, 0x97, 0x00, 0x0d, 0xb3, 0xb1, - 0x97, 0x9a, 0x74, 0x21, 0x9b, 0xaa, 0x71, 0x63, 0xfa, 0xe4, 0xad, 0x84, - 0xca, 0x56, 0x2c, 0x46, 0x95, 0x77, 0x03, 0x90, 0x6e, 0x95, 0xc2, 0x1b, - 0x1d, 0x6f, 0xaa, 0xb7, 0x18, 0x4c, 0xd4, 0x47, 0x6b, 0xd1, 0xc6, 0xb3, - 0x5a, 0xa0, 0xa0, 0xca, 0x95, 0xb0, 0x1e, 0xce, 0xf0, 0x87, 0x73, 0xf4, - 0x5a, 0xdc, 0x8f, 0x43, 0x76, 0x2e, 0x25, 0x7e, 0x33, 0xae, 0xcd, 0x28, - 0x71, 0x17, 0xe9, 0xa9, 0x77, 0x30, 0x69, 0xe5, 0xfe, 0x2c, 0xa7, 0x69, - 0xbc, 0x43, 0x8b, 0x57, 0x76, 0x0e, 0xbd, 0x16, 0xad, 0x08, 0x36, 0x87, - 0x25, 0x06, 0xe9, 0xa5, 0x4d, 0x92, 0xfc, 0x74, 0x4b, 0x95, 0x91, 0x00, - 0xa6, 0xed, 0x26, 0xdd, 0xd4, 0x07, 0x6c, 0xac, 0x84, 0xdc, 0xb5, 0x73, - 0x41, 0x21, 0xf6, 0x0d, 0x77, 0xa2, 0x91, 0x29, 0x1e, 0x4a, 0x15, 0x9a, - 0xb0, 0x36, 0xe6, 0x10, 0x2c, 0xc8, 0x37, 0xd8, 0x64, 0x40, 0x6c, 0xe8, - 0x8d, 0x52, 0xc2, 0x69, 0xc3, 0x2e, 0x11, 0xd5, 0x01, 0x4b, 0x84, 0x8b, - 0xcd, 0x74, 0x91, 0xa5, 0x56, 0x8b, 0x00, 0xc7, 0x94, 0xe4, 0x5e, 0x83, - 0x69, 0xbd, 0x02, 0xaf, 0x5f, 0x04, 0xdf, 0xe8, 0x55, 0xa1, 0xa9, 0x05, - 0xa4, 0x29, 0xb4, 0xe0, 0x9c, 0xa0, 0x88, 0x17, 0x51, 0x6a, 0x01, 0xdb, - 0x83, 0x51, 0x97, 0x1d, 0xa9, 0xef, 0xde, 0xea, 0x11, 0xec, 0x16, 0x0a, - 0x2d, 0xed, 0x62, 0xd5, 0xe1, 0x25, 0x8f, 0x1a, 0x33, 0x66, 0x7d, 0xf4, - 0x9b, 0x6d, 0x7f, 0x21, 0xf0, 0x60, 0xb5, 0x63, 0x68, 0xbd, 0x1e, 0x7e, - 0xd8, 0x62, 0xc9, 0x19, 0xf4, 0x21, 0xc4, 0x29, 0x6e, 0xd2, 0x28, 0xb2, - 0x7c, 0xd1, 0xc5, 0x20, 0xef, 0x2b, 0xe9, 0x7d, 0xb2, 0x99, 0x0e, 0x50, - 0x34, 0x50, 0x69, 0xb6, 0xb7, 0xa5, 0x05, 0xc1, 0xd5, 0xbd, 0xcd, 0x68, - 0x53, 0x76, 0x64, 0xaf, 0xd0, 0x9c, 0x86, 0x6b, 0x80, 0x25, 0x0d, 0xcc, - 0xbd, 0x88, 0xc7, 0x45, 0x69, 0xf3, 0x3a, 0x0c, 0xb8, 0x6f, 0x99, 0xdf, - 0x4e, 0xad, 0x0c, 0x8b, 0xe0, 0xad, 0x3d, 0x07, 0x45, 0x1c, 0x44, 0x5c, - 0x70, 0x2f, 0x14, 0xaf, 0x81, 0x85, 0x52, 0x6e, 0xac, 0xa6, 0x75, 0x4e, - 0x8c, 0xb4, 0x72, 0xd0, 0xbe, 0x39, 0x7e, 0x72, 0x6a, 0x6e, 0xed, 0x02, - 0x4d, 0x25, 0xa3, 0x6d, 0x48, 0xeb, 0x54, 0x8c, 0x01, 0x29, 0xb2, 0x51, - 0x5e, 0x64, 0x40, 0xe8, 0xc9, 0xf7, 0x39, 0x80, 0x47, 0x3e, 0x9f, 0xc0, - 0x6b, 0xe2, 0x0f, 0xf7, 0x1e, 0xdf, 0xb8, 0xdd, 0xb9, 0x5e, 0x55, 0x55, - 0x1d, 0x46, 0x47, 0x7f, 0x04, 0xa8, 0x32, 0xa6, 0x6a, 0x8d, 0x40, 0x0e, - 0x33, 0x61, 0xdc, 0xaa, 0x9f, 0xa3, 0xd6, 0xc3, 0x12, 0x2e, 0x8b, 0xb1, - 0xfa, 0xef, 0x0e, 0xb5, 0x20, 0xf0, 0xb1, 0xc0, 0x5e, 0x2c, 0x61, 0x32, - 0x7d, 0x10, 0xfe, 0x72, 0xb4, 0x42, 0x01, 0x4a, 0x43, 0x25, 0x35, 0xb4, - 0xbd, 0x78, 0x6a, 0x83, 0x54, 0xac, 0xf9, 0xe7, 0xf2, 0x9e, 0x73, 0x12, - 0x7a, 0x1d, 0x22, 0x9c, 0xbd, 0xb3, 0x5b, 0x29, 0xaf, 0x97, 0xf5, 0x2c, - 0xd8, 0x33, 0x46, 0xaa, 0x1e, 0x4d, 0x47, 0xdc, 0x0e, 0x58, 0xad, 0x33, - 0x69, 0x57, 0xd3, 0x68, 0xe6, 0x68, 0xfd, 0x44, 0x12, 0xbc, 0x1e, 0x6a, - 0xd8, 0xb4, 0xdf, 0x3d, 0xd4, 0xda, 0x89, 0xec, 0xa3, 0xb8, 0xf9, 0xa5, - 0xa8, 0x2d, 0xe5, 0xd5, 0xe6, 0x08, 0x0f, 0xfc, 0x44, 0xb2, 0xf0, 0x93, - 0x26, 0x3c, 0x15, 0x5c, 0x04, 0x52, 0x4a, 0x48, 0xa9, 0x86, 0xec, 0x53, - 0xac, 0x43, 0xfc, 0xe4, 0xbf, 0x47, 0xcf, 0x30, 0x9d, 0xf3, 0x54, 0xdd, - 0x4d, 0xf2, 0x8a, 0x78, 0xb9, 0x1f, 0x8a, 0x38, 0x20, 0xe2, 0xb5, 0x4e, - 0xca, 0x7a, 0x38, 0x89, 0xc0, 0x62, 0xe4, 0xce, 0x10, 0xea, 0x9b, 0x20, - 0x19, 0x19, 0xa3, 0xe0, 0xce, 0xb4, 0xde, 0xe6, 0x4c, 0x98, 0x7f, 0xd3, - 0x04, 0x55, 0x14, 0xf9, 0x3d, 0x3a, 0xbe, 0x51, 0xa2, 0xd5, 0x1b, 0x82, - 0x4d, 0x4b, 0xd4, 0xc8, 0x65, 0x98, 0x75, 0xcc, 0x01, 0xbf, 0x04, 0x1d, - 0xa8, 0x88, 0x6c, 0x8a, 0xf1, 0x14, 0x77, 0x23, 0x63, 0x39, 0x78, 0x59, - 0xb2, 0x6e, 0x4a, 0xd9, 0xf8, 0x02, 0x9d, 0x03, 0xe0, 0x68, 0xb6, 0xc0, - 0x93, 0x98, 0xb1, 0x28, 0xaf, 0xd5, 0x93, 0x1c, 0x8e, 0x4f, 0xda, 0x4f, - 0xcd, 0xee, 0xc6, 0x67, 0x17, 0xc7, 0x98, 0xf3, 0x46, 0xff, 0x82, 0x00, - 0xa2, 0xdf, 0x76, 0x32, 0x09, 0xb4, 0x03, 0xb1, 0x00, 0x61, 0x60, 0xc0, - 0x9a, 0x1a, 0x8d, 0x00, 0x4f, 0x30, 0x8a, 0xc2, 0xda, 0x65, 0x19, 0x76, - 0xdd, 0x99, 0xd0, 0x2b, 0x52, 0x92, 0x9b, 0x37, 0xf6, 0x3f, 0x6f, 0x25, - 0x60, 0x17, 0x35, 0x8f, 0x47, 0xc4, 0x32, 0xe7, 0x0c, 0xc7, 0xe0, 0xcb, - 0xa8, 0xc8, 0xe5, 0x43, 0x6a, 0x4c, 0x95, 0x75, 0x45, 0xc3, 0xe7, 0xdb, - 0xba, 0x38, 0x1a, 0xd6, 0xf8, 0xdf, 0x5a, 0x2f, 0xdb, 0x73, 0x19, 0x2e, - 0x08, 0x67, 0xbc, 0x16, 0x6a, 0x8c, 0x4f, 0x8b, 0x71, 0xa1, 0x21, 0xc1, - 0x7a, 0x73, 0xe2, 0x58, 0x64, 0x84, 0xf2, 0x81, 0x23, 0xc5, 0x3a, 0x70, - 0xe2, 0x50, 0x56, 0xfb, 0x4e, 0x47, 0x73, 0xf8, 0xe9, 0x01, 0x3a, 0x15, - 0x65, 0x40, 0x5e, 0x96, 0x8c, 0x98, 0x9c, 0x49, 0x6f, 0x3d, 0xb5, 0x69, - 0x8d, 0xe3, 0xdc, 0x3e, 0x2c, 0x52, 0xe3, 0x42, 0xaa, 0x91, 0xc2, 0x98, - 0xa6, 0x13, 0x90, 0xac, 0xb1, 0xb7, 0x19, 0x0c, 0xea, 0x62, 0x5d, 0x2d, - 0x2e, 0x91, 0xe0, 0xb4, 0x87, 0x90, 0x73, 0x70, 0xae, 0x0c, 0xdc, 0x3a, - 0xd4, 0x59, 0x25, 0x9c, 0xba, 0x82, 0x09, 0x4e, 0xae, 0x72, 0x4b, 0x31, - 0x9e, 0xb0, 0xc9, 0x43, 0xb8, 0xae, 0x15, 0xdd, 0x78, 0xd2, 0xb4, 0x15, - 0xa9, 0x1b, 0xf1, 0xe7, 0x96, 0x01, 0xbb, 0xb7, 0x75, 0xfe, 0xc0, 0xb6, - 0x40, 0x9d, 0x5b, 0xde, 0xa8, 0xb4, 0x2b, 0x4e, 0x51, 0xfe, 0x21, 0x9e, - 0x53, 0xae, 0x31, 0xc6, 0x22, 0x20, 0xaf, 0x42, 0x0e, 0xdf, 0xc1, 0x78, - 0xac, 0x42, 0xde, 0x94, 0x53, 0x7f, 0xa9, 0x1a, 0xeb, 0x51, 0xe1, 0x5a, - 0xe2, 0x4d, 0x03, 0xe8, 0xc5, 0x40, 0xf1, 0x83, 0xbe, 0x0b, 0xd3, 0x6b, - 0x54, 0x7d, 0xcc, 0xe5, 0x9c, 0x83, 0x93, 0x12, 0x3d, 0x82, 0x3a, 0x11, - 0xfa, 0x68, 0x6c, 0x48, 0xef, 0x7e, 0xd8, 0xb6, 0x78, 0x37, 0xd3, 0x95, - 0xf0, 0xae, 0xd9, 0x95, 0x04, 0xa1, 0xeb, 0xfe, 0xfc, 0xa5, 0xe1, 0x1c, - 0xcd, 0x7d, 0x47, 0x7d, 0xdd, 0xe3, 0x48, 0x61, 0x41, 0x82, 0x34, 0x93, - 0xe9, 0x53, 0x75, 0x75, 0x6c, 0x00, 0x89, 0x56, 0x15, 0x77, 0xdf, 0x7d, - 0x7d, 0x0b, 0xf2, 0x2f, 0x34, 0x92, 0xed, 0xac, 0xec, 0xed, 0xf4, 0xba, - 0x41, 0xd2, 0x86, 0xb0, 0xd0, 0x1b, 0x95, 0x09, 0x8e, 0x05, 0x3b, 0xea, - 0x7d, 0x03, 0xc0, 0x8d, 0xf6, 0x9c, 0x89, 0x53, 0x96, 0x3e, 0x7c, 0x2f, - 0x25, 0xf6, 0x59, 0x1e, 0x7d, 0x8e, 0x7c, 0xa6, 0xcb, 0x86, 0x52, 0x59, - 0x2d, 0x75, 0x0e, 0x8f, 0xbb, 0xe7, 0x94, 0x7d, 0xf4, 0x86, 0xb5, 0x30, - 0xce, 0xb3, 0x68, 0xf7, 0x7d, 0x31, 0x04, 0xb8, 0x37, 0xdd, 0x1b, 0xad, - 0xf9, 0xd1, 0x77, 0x20, 0x09, 0x95, 0x67, 0x09, 0x70, 0xc3, 0xcf, 0x2d, - 0xd5, 0xc1, 0x34, 0x3b, 0x4a, 0x97, 0x78, 0x6a, 0x57, 0x41, 0xc7, 0xfd, - 0xbf, 0xe0, 0x2b, 0xc2, 0xa8, 0x12, 0xcd, 0x52, 0x66, 0x74, 0x88, 0x47, - 0x26, 0xc9, 0xf9, 0x33, 0xf8, 0x29, 0x5f, 0x0a, 0x23, 0xbb, 0x9c, 0x90, - 0xbe, 0xfc, 0xde, 0xac, 0x6d, 0x25, 0x59, 0x65, 0x8a, 0x07, 0x8f, 0x73, - 0x70, 0x3a, 0xde, 0x2d, 0xc7, 0x01, 0xe3, 0x23, 0xda, 0xa5, 0xb0, 0x36, - 0x3a, 0x4e, 0xa8, 0x6f, 0x96, 0xf9, 0x6c, 0xfb, 0x17, 0x23, 0x6b, 0x00, - 0xad, 0xeb, 0xae, 0x81, 0x3e, 0xd2, 0xe7, 0x87, 0x8e, 0x66, 0x94, 0x66, - 0x24, 0x41, 0x19, 0x00, 0xfe, 0x34, 0x0e, 0x5c, 0x51, 0xb8, 0xf8, 0x11, - 0x6b, 0xd2, 0x9f, 0xc1, 0xc0, 0x5b, 0xd7, 0x05, 0x8c, 0x79, 0xa0, 0x8c, - 0xa9, 0x39, 0x98, 0x75, 0xe6, 0x13, 0x0d, 0xd0, 0xbf, 0xf2, 0x93, 0x2e, - 0x13, 0x92, 0x51, 0x04, 0xd5, 0xc9, 0xe2, 0xb9, 0x33, 0xa6, 0xa3, 0x41, - 0xa2, 0xb7, 0x39, 0x1c, 0x6d, 0xca, 0x5f, 0x18, 0x12, 0x44, 0x93, 0xf5, - 0x3c, 0x7d, 0xaf, 0xa3, 0x62, 0x45, 0x6f, 0xd8, 0x16, 0x20, 0xd0, 0xef, - 0x89, 0x39, 0xd9, 0x1a, 0x73, 0x49, 0xad, 0x59, 0xfd, 0x9c, 0xe1, 0xea, - 0xfe, 0xb9, 0x53, 0xa8, 0xda, 0xfa, 0xf0, 0xa8, 0xd5, 0x81, 0xdd, 0x61, - 0x3c, 0x8c, 0x1e, 0xea, 0x79, 0xad, 0xc1, 0xea, 0x63, 0x88, 0x37, 0xcb, - 0x4d, 0xca, 0x17, 0xec, 0xd4, 0xf1, 0xda, 0xcc, 0x36, 0x78, 0x5f, 0x5c, - 0x5b, 0x63, 0x4a, 0xbf, 0x5e, 0x40, 0x65, 0xe7, 0x81, 0xc5, 0x2d, 0x9e, - 0xe0, 0x16, 0x9b, 0x9f, 0x2e, 0x47, 0x6f, 0xb7, 0xb5, 0x9f, 0x3e, 0x49, - 0xdd, 0xd3, 0x9f, 0x45, 0xa5, 0x14, 0x9e, 0x4f, 0xb1, 0x2f, 0x39, 0xc4, - 0x30, 0x65, 0x0f, 0x9e, 0xb6, 0x0c, 0x12, 0x24, 0xfe, 0x13, 0xfc, 0xfd, - 0x44, 0x07, 0x27, 0x80, 0x2a, 0x67, 0xd8, 0x9f, 0x2c, 0x7a, 0xcc, 0xfa, - 0x52, 0xfc, 0x25, 0x5b, 0xfa, 0x7f, 0x50, 0x05, 0xee, 0x5f, 0xc4, 0xbc, - 0xa5, 0x63, 0x01, 0x69, 0xcc, 0x01, 0xe9, 0x08, 0x35, 0xad, 0x30, 0xff, - 0xfc, 0xb0, 0x0c, 0x31, 0x0d, 0xde, 0xac, 0xa6, 0xd5, 0x69, 0xb7, 0x6d, - 0x42, 0xe0, 0xfb, 0xc1, 0x31, 0xbe, 0xbf, 0x31, 0xcf, 0x93, 0x8d, 0xfc, - 0x6a, 0x2c, 0xdc, 0xd0, 0xbe, 0xec, 0xf4, 0x3c, 0xc5, 0xae, 0xef, 0x3d, - 0x49, 0xef, 0x91, 0xac, 0x2e, 0x0d, 0xd1, 0x9a, 0x3a, 0xb8, 0x2f, 0xb9, - 0x4b, 0xf5, 0xf5, 0xd4, 0xf4, 0xc9, 0x31, 0x4a, 0x98, 0x16, 0x27, 0x80, - 0x5d, 0x69, 0x5c, 0x95, 0x7f, 0xe0, 0x3f, 0x33, 0xf1, 0xd2, 0xed, 0x31, - 0xf9, 0x97, 0xc5, 0x74, 0x90, 0x4d, 0xb8, 0x38, 0xf7, 0x95, 0xab, 0xdc, - 0xcb, 0x51, 0x81, 0x9e, 0xb3, 0x87, 0x50, 0x87, 0xe1, 0xbe, 0x6b, 0x6e, - 0x57, 0x6e, 0xf9, 0x87, 0x1a, 0x92, 0x3e, 0xc0, 0x0d, 0x10, 0xd2, 0x83, - 0x04, 0x32, 0x36, 0x14, 0x9c, 0xad, 0xce, 0x86, 0xbc, 0x70, 0x19, 0xe9, - 0x26, 0x79, 0xe5, 0x6d, 0x80, 0x1d, 0x44, 0xd3, 0x8c, 0x7e, 0xd9, 0x9b, - 0x79, 0xa5, 0x60, 0x28, 0x52, 0x7c, 0xdc, 0xa8, 0x93, 0xba, 0xba, 0xd8, - 0x87, 0x8f, 0x8a, 0x00, 0xa8, 0xe4, 0x07, 0x0b, 0x09, 0xd8, 0x3c, 0x03, - 0xda, 0x3f, 0xa4, 0x0c, 0x98, 0x46, 0xbd, 0xa2, 0xb4, 0xe1, 0x65, 0x30, - 0x95, 0xa2, 0x10, 0xb4, 0xa3, 0xba, 0x56, 0xa6, 0x49, 0xa2, 0x1e, 0xb3, - 0x26, 0x0c, 0x10, 0xc7, 0x95, 0xf0, 0x73, 0x38, 0x4e, 0x6c, 0xe8, 0x28, - 0xe3, 0xb2, 0x88, 0xd8, 0x77, 0x1b, 0x9d, 0x16, 0xca, 0x0b, 0xce, 0x3e, - 0xef, 0xbf, 0x1f, 0x08, 0xd0, 0x60, 0xee, 0x3d, 0x78, 0x9e, 0x7b, 0x53, - 0x0b, 0x14, 0xb7, 0xb8, 0xdf, 0x0f, 0x79, 0x2d, 0xb1, 0x6f, 0xb4, 0x54, - 0x39, 0x89, 0x02, 0x33, 0x74, 0xe8, 0x96, 0x87, 0x75, 0x7d, 0xf7, 0xa3, - 0x5c, 0x8c, 0xb6, 0xf6, 0xdc, 0x82, 0xaf, 0x99, 0x7e, 0x89, 0x41, 0xb7, - 0x6f, 0x5f, 0x98, 0xe5, 0x8c, 0xa8, 0x92, 0x6d, 0x81, 0xcc, 0xff, 0xf4, - 0x2a, 0xdf, 0xf8, 0x4e, 0xd7, 0xb1, 0x07, 0x64, 0xd2, 0xbe, 0x71, 0xe7, - 0xf2, 0x19, 0x0f, 0xe5, 0x1d, 0x8a, 0x31, 0x65, 0x3c, 0xec, 0xcb, 0x0e, - 0x5c, 0x86, 0xdb, 0x5e, 0x29, 0x74, 0x71, 0x4a, 0x29, 0x2e, 0x31, 0x09, - 0x53, 0x80, 0x3d, 0xe4, 0x83, 0xd7, 0x17, 0xa8, 0xee, 0x40, 0x95, 0x64, - 0x91, 0xdf, 0x84, 0x72, 0xc2, 0x3d, 0xe7, 0x19, 0xdb, 0x9b, 0x50, 0xab, - 0xff, 0xc3, 0x51, 0xf4, 0xb0, 0x3b, 0xe8, 0xb3, 0x8e, 0x63, 0x32, 0x4e, - 0xc1, 0x44, 0x00, 0x35, 0x34, 0xa7, 0xb0, 0xad, 0x16, 0x99, 0xef, 0x34, - 0x7e, 0x2e, 0xb9, 0x48, 0x72, 0xd0, 0xca, 0x72, 0x41, 0xdf, 0x25, 0xdb, - 0xe0, 0xb2, 0xd1, 0x11, 0x21, 0xde, 0x15, 0x2d, 0xe9, 0xf4, 0xf7, 0x72, - 0x3b, 0x00, 0x63, 0xd4, 0xe7, 0x11, 0x0e, 0x6a, 0xab, 0x10, 0xc8, 0xdc, - 0x70, 0xba, 0x1f, 0x42, 0x96, 0xa1, 0xa7, 0xdb, 0x33, 0x04, 0x18, 0x2e, - 0xd4, 0xbf, 0xba, 0x76, 0xb5, 0x0d, 0x33, 0xda, 0x1e, 0xa7, 0xa3, 0x54, - 0x95, 0xd8, 0x69, 0x50, 0x70, 0x6c, 0x8b, 0x1d, 0x33, 0xfb, 0xa3, 0x44, - 0xbb, 0x6a, 0xd4, 0x5e, 0xd3, 0xce, 0x37, 0xb2, 0x7f, 0x40, 0x7b, 0xd3, - 0x7c, 0xdb, 0x7d, 0x6c, 0x08, 0x27, 0x08, 0xe6, 0xb0, 0x2e, 0x14, 0x82, - 0x9f, 0x03, 0xbf, 0x75, 0x69, 0x6c, 0x10, 0x70, 0x82, 0xaa, 0xea, 0x07, - 0xfa, 0x14, 0xf9, 0xeb, 0xf5, 0xde, 0xea, 0x61, 0x0c, 0x07, 0x3b, 0xc9, - 0x71, 0x05, 0x7c, 0xd6, 0xfc, 0xbe, 0xc5, 0xa1, 0xfe, 0xb1, 0x5e, 0x95, - 0x2e, 0x76, 0x1c, 0x7f, 0x0f, 0x83, 0x84, 0x00, 0xf0, 0xe8, 0x07, 0x91, - 0x5d, 0xd6, 0xee, 0x07, 0x1a, 0x26, 0x28, 0xb8, 0xa1, 0xba, 0x4c, 0x26, - 0x69, 0x62, 0x19, 0x70, 0x7b, 0x08, 0x2f, 0xf6, 0xb5, 0x5d, 0xf5, 0x33, - 0xeb, 0x22, 0x81, 0xcf, 0xc3, 0xab, 0xbf, 0x05, 0x80, 0xfe, 0xb1, 0x2a, - 0x6b, 0xde, 0x58, 0x1a, 0x28, 0x47, 0xb1, 0xb3, 0x3d, 0xf5, 0x03, 0x65, - 0xe7, 0x3e, 0x5f, 0x97, 0x45, 0xb2, 0x11, 0x54, 0xf4, 0xe6, 0x52, 0xab, - 0xd3, 0xb6, 0xb8, 0xd6, 0xce, 0xea, 0x56, 0x0c, 0xa9, 0x9f, 0xf4, 0x1a, - 0x78, 0xf2, 0xe9, 0x83, 0xeb, 0x2a, 0x47, 0x26, 0x9c, 0x16, 0x00, 0xf4, - 0xd8, 0xda, 0x88, 0x61, 0x8e, 0xff, 0x19, 0x20, 0xac, 0x9f, 0x63, 0x79, - 0x06, 0x4f, 0x54, 0x8c, 0xd8, 0xaa, 0x95, 0x64, 0xc0, 0xb3, 0xff, 0xb3, - 0x59, 0x59, 0x1a, 0x26, 0x19, 0xd3, 0x5a, 0x70, 0xfe, 0xbe, 0x74, 0xa7, - 0xd1, 0x78, 0x76, 0x02, 0xa3, 0x5e, 0x98, 0x62, 0x9f, 0xdb, 0xae, 0x7e, - 0x49, 0xd5, 0xdf, 0x05, 0x89, 0x13, 0x2c, 0xba, 0xf8, 0x94, 0xdd, 0xd7, - 0xc0, 0xc8, 0xc3, 0x9d, 0x18, 0xe5, 0x67, 0x2b, 0x86, 0xde, 0x0b, 0xf6, - 0xce, 0x35, 0x40, 0xe8, 0x6d, 0x11, 0xd5, 0xd7, 0x8d, 0x6b, 0xe0, 0x19, - 0x66, 0x53, 0x00, 0xc7, 0xdf, 0x42, 0x0b, 0x21, 0x03, 0x48, 0x00, 0xd0, - 0x07, 0x7d, 0x2e, 0x6c, 0x34, 0x42, 0x9e, 0xdd, 0x1f, 0x4f, 0xea, 0x01, - 0x46, 0x85, 0xa2, 0x8d, 0xc7, 0x0d, 0xfd, 0x6d, 0x46, 0xfe, 0xb8, 0x93, - 0x76, 0x69, 0x9f, 0x6a, 0x16, 0x5d, 0xda, 0x62, 0x71, 0x59, 0xd9, 0xd1, - 0x24, 0x1c, 0x39, 0x39, 0x76, 0x1e, 0x13, 0xf8, 0xa1, 0x25, 0x6b, 0x8e, - 0xe2, 0x7a, 0x4a, 0x3d, 0x00, 0x39, 0x97, 0x68, 0x82, 0x4b, 0x37, 0xb9, - 0xc9, 0xb1, 0xce, 0x11, 0x3d, 0xfd, 0x54, 0x37, 0x8b, 0xb5, 0x1b, 0x30, - 0xfb, 0x14, 0x3a, 0x77, 0x2c, 0xce, 0x42, 0xbe, 0xb6, 0xce, 0x2e, 0x42, - 0xe5, 0x58, 0x6d, 0xef, 0xc2, 0x03, 0x05, 0x90, 0x92, 0x68, 0x05, 0xa5, - 0x70, 0x92, 0xe2, 0xdd, 0x9a, 0x75, 0x2c, 0xc4, 0x43, 0xff, 0xa5, 0x00, - 0xa8, 0x43, 0x38, 0x4d, 0x04, 0xcc, 0xa2, 0x62, 0x46, 0xf2, 0x0e, 0xde, - 0x77, 0xf5, 0x0d, 0x22, 0xd8, 0x1d, 0xb7, 0x55, 0xf5, 0x8f, 0x83, 0xe5, - 0xf7, 0xb2, 0x98, 0xe2, 0xef, 0x90, 0xf8, 0xc4, 0x9b, 0x1c, 0xe1, 0x43, - 0x89, 0xfb, 0x87, 0xfb, 0x02, 0x35, 0x76, 0xa9, 0x66, 0x1f, 0x33, 0x72, - 0x1f, 0x97, 0x1e, 0xa9, 0xae, 0x68, 0x5e, 0x4e, 0x8f, 0xf4, 0x7c, 0xc3, - 0x96, 0xee, 0x7a, 0x28, 0x24, 0xce, 0xa7, 0x52, 0xd9, 0x41, 0xa0, 0x23, - 0x44, 0x99, 0xa4, 0x55, 0x11, 0xfb, 0x5f, 0x8e, 0x1e, 0x90, 0x22, 0x98, - 0xed, 0x0f, 0xe2, 0x79, 0xde, 0x3c, 0xde, 0xbe, 0x7b, 0xc6, 0x34, 0xd3, - 0x0e, 0x73, 0xd0, 0x7f, 0xd0, 0xa1, 0x96, 0x85, 0x34, 0x69, 0x29, 0xeb, - 0x1f, 0x27, 0x3c, 0xc7, 0xce, 0x2d, 0x2c, 0x4a, 0x5c, 0xf2, 0xa1, 0x1c, - 0x5d, 0x84, 0xd8, 0xfa, 0x02, 0x7a, 0xaa, 0xba, 0x63, 0xde, 0xe2, 0xaa, - 0xf5, 0xeb, 0x6f, 0xb8, 0x20, 0x1c, 0x82, 0x2f, 0x4a, 0x2c, 0xab, 0x96, - 0x21, 0xd5, 0xa7, 0x9d, 0xc2, 0x5c, 0xb3, 0x24, 0xa8, 0x80, 0x72, 0x86, - 0x2c, 0x67, 0xc6, 0x2c, 0x77, 0xad, 0x7b, 0xc2, 0x2e, 0x4e, 0xf7, 0x60, - 0x4c, 0xe8, 0xc2, 0xc3, 0x65, 0x0a, 0x73, 0x28, 0x51, 0x3b, 0xe0, 0xc9, - 0x19, 0x5a, 0xda, 0x6a, 0xd6, 0xb9, 0xe2, 0x87, 0x01, 0x0a, 0x0a, 0x39, - 0xcd, 0xab, 0x5e, 0x14, 0x57, 0x10, 0x4f, 0x88, 0x3b, 0xb3, 0x97, 0xfe, - 0x12, 0x0a, 0xda, 0x87, 0xfb, 0x89, 0xd1, 0x44, 0x52, 0xd6, 0x86, 0x1e, - 0xf1, 0x8a, 0xd0, 0x0c, 0x55, 0x16, 0x16, 0x0d, 0xba, 0x1f, 0xa0, 0x85, - 0xb8, 0xda, 0xdc, 0x12, 0xbc, 0x30, 0x59, 0x11, 0x86, 0x8f, 0x5f, 0x01, - 0xa5, 0x65, 0x65, 0xbb, 0xb3, 0x80, 0x15, 0x87, 0x8d, 0xf3, 0x60, 0x3d, - 0x0b, 0x08, 0xe9, 0xda, 0x7a, 0x31, 0x13, 0x59, 0x4e, 0xa3, 0xb8, 0xf8, - 0x62, 0x7c, 0xf0, 0xfe, 0xad, 0x41, 0x8e, 0x51, 0xb2, 0x9c, 0x6e, 0x76, - 0xb2, 0xa4, 0x71, 0x5a, 0x38, 0xf4, 0xd7, 0xfd, 0x41, 0x85, 0x49, 0x96, - 0xe3, 0x90, 0xa0, 0x91, 0x94, 0xcf, 0xef, 0x6b, 0xa2, 0x4c, 0x8c, 0xbd, - 0x10, 0x3f, 0xc8, 0x4b, 0x4d, 0xd6, 0x44, 0x74, 0xcd, 0x7f, 0xce, 0x66, - 0xf3, 0xf5, 0xb8, 0x67, 0x51, 0xd3, 0xe8, 0xd6, 0x6d, 0x49, 0x95, 0x44, - 0xda, 0x1c, 0x48, 0x58, 0x52, 0x58, 0xb8, 0x4a, 0x1b, 0xd0, 0x44, 0xc4, - 0x18, 0x4c, 0xff, 0x92, 0x72, 0x07, 0xaa, 0xde, 0x4f, 0x79, 0x7c, 0x05, - 0x47, 0xce, 0x13, 0xdb, 0x6c, 0xff, 0x7e, 0x46, 0x63, 0xda, 0x7d, 0x6b, - 0xdb, 0x03, 0xb9, 0x48, 0xff, 0x52, 0x3f, 0x28, 0xf3, 0xfc, 0x10, 0x3b, - 0xbc, 0x8b, 0x3f, 0xa0, 0xd6, 0x32, 0xb5, 0x3c, 0xb7, 0x1a, 0xc3, 0xf0, - 0x1c, 0x0d, 0xe7, 0x69, 0x2a, 0xc8, 0xa8, 0xad, 0x0f, 0x17, 0xda, 0x28, - 0x0e, 0xa6, 0xe9, 0x9c, 0x6d, 0x1b, 0x26, 0xab, 0xe7, 0x80, 0x64, 0xd9, - 0xf1, 0x0f, 0xaa, 0xac, 0xd1, 0xcb, 0x96, 0x4c, 0xec, 0x0c, 0x62, 0x7d, - 0x7a, 0xe2, 0xea, 0xf3, 0x31, 0x81, 0x7c, 0x81, 0xad, 0x02, 0x6d, 0xd8, - 0x2b, 0xe6, 0xdb, 0xc0, 0x5e, 0xe9, 0xfa, 0x17, 0x66, 0x3d, 0x6d, 0xc8, - 0xb0, 0xbd, 0x47, 0xaa, 0x96, 0xb2, 0x32, 0x23, 0xb8, 0x64, 0x0e, 0x49, - 0xc7, 0x92, 0x66, 0x85, 0xca, 0xe5, 0x58, 0xe0, 0xef, 0xbf, 0xff, 0xbc, - 0x7d, 0xdd, 0xde, 0x14, 0x9f, 0x97, 0xcb, 0xc5, 0x75, 0x5f, 0x6a, 0xe7, - 0xf3, 0x9f, 0xa1, 0xaa, 0xe7, 0x86, 0xfc, 0x5b, 0x77, 0x6a, 0x83, 0xfb, - 0x29, 0xe3, 0xa6, 0x26, 0xf8, 0x07, 0xa8, 0xb8, 0xc7, 0xef, 0x91, 0xc2, - 0x08, 0x59, 0x38, 0xed, 0x13, 0x9e, 0xc8, 0xcb, 0xe4, 0x1a, 0x42, 0xef, - 0xf6, 0x80, 0x8e, 0x7b, 0x03, 0x64, 0x9d, 0xa7, 0x11, 0x58, 0x83, 0x59, - 0xee, 0x6e, 0x26, 0x17, 0x85, 0xc1, 0x30, 0x34, 0x22, 0xd4, 0xb3, 0x51, - 0x67, 0x64, 0xd4, 0x04, 0x29, 0x1c, 0xee, 0xfc, 0x50, 0xae, 0xfb, 0xdc, - 0x39, 0xc6, 0x59, 0x33, 0x8b, 0x0d, 0x66, 0xbf, 0x72, 0x9e, 0xa9, 0xd8, - 0xc4, 0x68, 0xfd, 0x7d, 0x44, 0x41, 0xef, 0xd3, 0x2a, 0x27, 0x91, 0x2f, - 0xe3, 0x11, 0xb1, 0xa7, 0x2d, 0x4a, 0x2c, 0xb6, 0xe1, 0xc8, 0xa6, 0x33, - 0xd7, 0xf0, 0x6d, 0x94, 0x69, 0x9f, 0xb6, 0x80, 0xce, 0x16, 0x19, 0x0d, - 0xc9, 0x99, 0x64, 0xea, 0x48, 0x63, 0xda, 0x00, 0x2c, 0xf0, 0x7e, 0xec, - 0xfa, 0xef, 0xca, 0xb2, 0xf5, 0xdc, 0xe5, 0x6b, 0xdf, 0xa0, 0xe3, 0x42, - 0x11, 0x12, 0x1e, 0x97, 0x52, 0x24, 0xcb, 0x35, 0xac, 0xa4, 0x3d, 0xb9, - 0x2f, 0xf5, 0x2b, 0x8b, 0xf9, 0x7a, 0xab, 0xb3, 0xf8, 0xbc, 0x7e, 0xc6, - 0xc5, 0x4c, 0x4a, 0xd0, 0xcc, 0x3d, 0x8e, 0x4b, 0x5f, 0xb1, 0x9b, 0x85, - 0x63, 0xc2, 0xfd, 0x32, 0x1d, 0xe1, 0x06, 0x81, 0xd1, 0x7f, 0x94, 0x53, - 0xd0, 0xe0, 0x32, 0xb7, 0xb3, 0xac, 0x5e, 0xa6, 0x98, 0x7e, 0xc1, 0x40, - 0x4a, 0x67, 0x4a, 0xdc, 0xb5, 0xac, 0x00, 0x24, 0x88, 0x63, 0xe5, 0x25, - 0x0d, 0xba, 0x24, 0x8d, 0x45, 0x50, 0x57, 0xab, 0x10, 0x6d, 0x6a, 0x11, - 0x1c, 0xb3, 0x38, 0xb3, 0xf1, 0x57, 0xf3, 0xf0, 0xb8, 0x36, 0xce, 0x9b, - 0x94, 0x7e, 0xea, 0xe7, 0x3e, 0x2a, 0x3a, 0xd7, 0x9b, 0x73, 0x0e, 0x0f, - 0xef, 0xe1, 0x01, 0x7b, 0x2a, 0xb2, 0x2c, 0xbf, 0x42, 0xb8, 0xb4, 0xcf, - 0xee, 0x79, 0x3c, 0xa5, 0xf6, 0x15, 0xc8, 0xaa, 0xb8, 0x07, 0x76, 0x0f, - 0xcb, 0x02, 0x49, 0xcc, 0xe2, 0x96, 0x01, 0x27, 0xc8, 0xed, 0xec, 0x16, - 0xf0, 0x2b, 0xdc, 0x57, 0x95, 0xd5, 0x57, 0x96, 0x9d, 0x22, 0x8b, 0xd3, - 0xfb, 0x5c, 0x55, 0x34, 0x9e, 0x6f, 0x42, 0x9d, 0x5f, 0xa9, 0xbd, 0x25, - 0xf2, 0x3e, 0xfd, 0x76, 0x6e, 0x88, 0x8a, 0x62, 0xc2, 0xee, 0x07, 0xc8, - 0x62, 0x9d, 0x85, 0xa8, 0xd1, 0x41, 0xb3, 0x25, 0x98, 0x86, 0xf4, 0x9c, - 0x01, 0x06, 0xc4, 0xe8, 0x12, 0x50, 0x64, 0x50, 0xf5, 0xe3, 0x2e, 0x26, - 0xfc, 0x91, 0x97, 0xb5, 0x99, 0xde, 0x4e, 0xe1, 0x16, 0x50, 0xd4, 0xfd, - 0x87, 0x52, 0x67, 0x81, 0x0c, 0x28, 0x44, 0xe0, 0x19, 0x95, 0x6d, 0xf9, - 0xa6, 0x76, 0x1d, 0x92, 0x54, 0x74, 0x2f, 0x3b, 0x61, 0xb7, 0xee, 0x38, - 0x0f, 0xc7, 0x9b, 0x56, 0x4b, 0x59, 0x88, 0x5c, 0x60, 0x31, 0xf7, 0x5f, - 0x19, 0x98, 0x93, 0x0e, 0xd2, 0xd0, 0x42, 0xe2, 0x58, 0x90, 0x25, 0x60, - 0xdb, 0x1f, 0x4a, 0xeb, 0xfe, 0x64, 0x3e, 0x9b, 0xfc, 0x63, 0x6e, 0xee, - 0x1d, 0x49, 0x5c, 0x1d, 0x82, 0x05, 0x53, 0x78, 0x91, 0x14, 0x25, 0x72, - 0x3e, 0x82, 0xae, 0xfc, 0x70, 0x39, 0x33, 0xb2, 0xaf, 0xa4, 0x1e, 0xe6, - 0x4c, 0xb1, 0x32, 0x7f, 0xbc, 0x68, 0xf8, 0x2b, 0xa6, 0x2a, 0x55, 0xde, - 0x85, 0x9b, 0x96, 0x33, 0xda, 0x2a, 0x83, 0x4c, 0x7c, 0x0e, 0x5c, 0x3d, - 0x83, 0x81, 0x73, 0xac, 0x68, 0x38, 0xed, 0x98, 0x97, 0x98, 0xc1, 0x6c, - 0xcd, 0x89, 0x59, 0xde, 0xbb, 0x2f, 0x39, 0x78, 0xec, 0x07, 0xd6, 0x04, - 0xe1, 0x35, 0x86, 0xdf, 0xd6, 0x33, 0x72, 0x83, 0xb5, 0x9f, 0xbd, 0xf6, - 0x76, 0x16, 0x3f, 0x3f, 0x7f, 0x4e, 0xa3, 0xeb, 0x6f, 0xe7, 0xab, 0x3d, - 0x77, 0x51, 0x2f, 0xb5, 0x9e, 0x49, 0x64, 0xa5, 0x38, 0x01, 0x7f, 0x0d, - 0xd1, 0x4c, 0xc6, 0xa5, 0x41, 0xdf, 0x06, 0x33, 0x86, 0x1e, 0xbf, 0xa3, - 0x56, 0x83, 0x4c, 0x06, 0x69, 0xd4, 0x97, 0xc1, 0x44, 0x8c, 0x2b, 0xc0, - 0xe3, 0x59, 0x77, 0x19, 0xe2, 0x05, 0xb9, 0xb9, 0x2f, 0xc5, 0x28, 0x25, - 0x5e, 0xf7, 0xc7, 0x83, 0x84, 0x96, 0xaa, 0xb7, 0x83, 0xca, 0x04, 0x91, - 0xdf, 0x29, 0x94, 0x6c, 0xb0, 0xf4, 0xa4, 0x8a, 0x5a, 0x2c, 0x95, 0x39, - 0x13, 0xd4, 0x7a, 0x49, 0xcd, 0x02, 0x62, 0x04, 0x96, 0x36, 0x65, 0xa6, - 0x69, 0x72, 0x7c, 0x63, 0x4e, 0x30, 0xbb, 0xd4, 0x52, 0x87, 0x8c, 0x27, - 0x9f, 0x28, 0x66, 0xb9, 0x7a, 0x90, 0x30, 0x07, 0x59, 0xd5, 0x2a, 0x16, - 0x4c, 0x1e, 0xb9, 0x24, 0xbd, 0xbd, 0x63, 0xb8, 0x1a, 0x90, 0x7e, 0x90, - 0xe3, 0x02, 0xba, 0x44, 0x02, 0x1e, 0x92, 0x6b, 0x38, 0x5b, 0x21, 0x6f, - 0x98, 0xae, 0x36, 0x46, 0x8a, 0xbf, 0x8d, 0xae, 0x54, 0x58, 0xb6, 0x0f, - 0xf6, 0x10, 0xac, 0x09, 0x16, 0x93, 0x22, 0x1e, 0x16, 0x03, 0x20, 0x39, - 0x48, 0xb9, 0xbe, 0x2f, 0x72, 0x24, 0x6a, 0x7d, 0x9d, 0x95, 0x9e, 0x0d, - 0x68, 0xc6, 0xe6, 0x35, 0x70, 0xb8, 0xb1, 0x9a, 0x8f, 0xb9, 0x09, 0x08, - 0x53, 0x3f, 0x10, 0x60, 0xf4, 0x9c, 0xde, 0xda, 0x99, 0x73, 0xf9, 0x4a, - 0x49, 0x8b, 0x1b, 0x9c, 0x3a, 0xdc, 0x09, 0xa0, 0xec, 0x13, 0x62, 0x6d, - 0xeb, 0x40, 0xa4, 0x43, 0x29, 0x4f, 0x04, 0x57, 0x0e, 0x8f, 0x2d, 0x0e, - 0x58, 0xab, 0x3d, 0x67, 0xdb, 0xfe, 0x5c, 0xb8, 0x4f, 0xa4, 0x63, 0x27, - 0x57, 0x56, 0x32, 0xa7, 0x16, 0xdb, 0xa6, 0x68, 0x3a, 0xce, 0xef, 0xf7, - 0x6a, 0xfe, 0xde, 0xea, 0xbe, 0xbb, 0x30, 0x66, 0x74, 0x97, 0x8d, 0x11, - 0xe5, 0x8a, 0x27, 0xb8, 0x7b, 0x89, 0xc8, 0x85, 0xd0, 0x1c, 0x20, 0xdd, - 0x6b, 0x79, 0xf4, 0x41, 0x3f, 0x80, 0x5e, 0x70, 0xc5, 0x20, 0x73, 0x55, - 0xf7, 0xef, 0xd3, 0x55, 0xa7, 0x65, 0x0c, 0x34, 0x20, 0x60, 0x4e, 0x57, - 0xee, 0x73, 0xb6, 0xa8, 0xfb, 0x13, 0xf8, 0x6d, 0xec, 0xf0, 0xbe, 0x14, - 0x12, 0x64, 0xe5, 0x20, 0xea, 0xed, 0xc7, 0xe5, 0xb8, 0xb4, 0xd2, 0x94, - 0xa1, 0x23, 0xa1, 0xe5, 0x26, 0x56, 0x16, 0xea, 0xd8, 0xa9, 0xdf, 0x5c, - 0xa0, 0xd8, 0xde, 0xd3, 0x85, 0x0b, 0x2b, 0xd5, 0x9f, 0x14, 0xe1, 0x7a, - 0x0a, 0xd4, 0xd4, 0xba, 0x70, 0x33, 0xc1, 0xf8, 0xef, 0x0a, 0xa2, 0xac, - 0x3f, 0x38, 0x18, 0xc8, 0x6c, 0xf8, 0x16, 0xcf, 0x72, 0x51, 0x1d, 0x91, - 0xdf, 0x1e, 0x8a, 0x74, 0x7f, 0xfa, 0xaa, 0xf1, 0x2b, 0x72, 0xab, 0x02, - 0x35, 0x1a, 0xd5, 0x0c, 0x1b, 0x6e, 0x9c, 0xb7, 0xfe, 0xc4, 0xf3, 0xa9, - 0x82, 0x90, 0xbf, 0x4a, 0xcf, 0x7c, 0x86, 0x29, 0x5b, 0xc5, 0xc0, 0xfa, - 0xda, 0x83, 0xbf, 0xb2, 0x04, 0x76, 0x4a, 0xec, 0x97, 0x84, 0x73, 0x2a, - 0x82, 0x76, 0x68, 0x62, 0x9b, 0x6b, 0xa8, 0x46, 0x48, 0xb3, 0xe1, 0xbb, - 0x4f, 0xfb, 0xfa, 0x94, 0x3b, 0x77, 0x27, 0xd7, 0xa0, 0x54, 0xff, 0xbb, - 0x01, 0x60, 0x4c, 0x46, 0xa2, 0x06, 0xdf, 0xdc, 0x18, 0xf5, 0xef, 0x79, - 0xc8, 0x66, 0xd2, 0xfd, 0x94, 0xf7, 0xd5, 0x65, 0x9c, 0xd8, 0xed, 0x64, - 0x0e, 0x3d, 0xb9, 0xb7, 0x6c, 0x0c, 0x40, 0xea, 0xe7, 0x56, 0x16, 0xbe, - 0x28, 0x6d, 0x9f, 0x33, 0x51, 0x49, 0x08, 0x30, 0x05, 0x98, 0x92, 0x2c, - 0xaa, 0xa2, 0xb0, 0x2f, 0x46, 0x43, 0x67, 0x41, 0xbb, 0x8c, 0x36, 0x00, - 0x5e, 0xc5, 0x3d, 0x1b, 0x66, 0xa8, 0xe5, 0xee, 0xa5, 0xf8, 0x29, 0x6f, - 0x5c, 0x2f, 0x2b, 0x8c, 0x12, 0x8d, 0xcf, 0xea, 0x2c, 0x78, 0x5c, 0x86, - 0x7b, 0x17, 0x9f, 0xe5, 0x12, 0xc5, 0x7b, 0x55, 0xf3, 0x74, 0x08, 0x74, - 0x81, 0x30, 0x9f, 0x8f, 0x36, 0x54, 0xa8, 0xb1, 0xa4, 0x80, 0x23, 0x44, - 0x35, 0xd1, 0x46, 0xb2, 0x18, 0x02, 0x98, 0xa8, 0x84, 0x9b, 0x5f, 0x48, - 0x05, 0x6a, 0x82, 0xcd, 0x77, 0xd0, 0x95, 0x6a, 0x3c, 0x6a, 0xa4, 0xe3, - 0xa9, 0x5f, 0xb6, 0xcb, 0x2e, 0x93, 0x8d, 0x2e, 0xe1, 0x55, 0x1a, 0xae, - 0x08, 0x1e, 0xf8, 0x26, 0x3f, 0x1b, 0xe9, 0x49, 0x11, 0x16, 0x58, 0xbf, - 0x40, 0x6f, 0xa8, 0xb2, 0xd4, 0xac, 0x18, 0x4a, 0xb1, 0xa8, 0xf8, 0xcf, - 0xee, 0x84, 0x11, 0xec, 0xf0, 0x86, 0x5c, 0x21, 0x2a, 0xf5, 0xb8, 0x30, - 0x28, 0x40, 0xb2, 0x67, 0x97, 0x97, 0x4e, 0x86, 0x0a, 0xa2, 0xf4, 0xcb, - 0x60, 0x71, 0x15, 0x6f, 0x85, 0x40, 0x85, 0xc2, 0x98, 0xeb, 0x6a, 0x09, - 0x0f, 0xf6, 0x62, 0x2a, 0x34, 0x11, 0x2a, 0x10, 0xd1, 0x2f, 0xce, 0x69, - 0x1c, 0x5e, 0xb9, 0x7c, 0xdb, 0xff, 0xa3, 0x7d, 0xc5, 0x50, 0x2e, 0xf2, - 0xa3, 0xb5, 0xae, 0x92, 0x8a, 0x65, 0x5c, 0x4e, 0xd4, 0x78, 0xd0, 0x42, - 0x7f, 0x07, 0x35, 0x0e, 0x46, 0xa5, 0x94, 0x7c, 0x8b, 0xd9, 0x65, 0x96, - 0x7e, 0xac, 0xc6, 0xb0, 0x63, 0x9b, 0x5f, 0x63, 0x3b, 0x43, 0x75, 0xc4, - 0x26, 0xbd, 0xe0, 0xc5, 0xb9, 0x42, 0x6d, 0x27, 0x82, 0xcd, 0x3f, 0xa0, - 0x85, 0xbe, 0xbf, 0xde, 0xff, 0x83, 0x5d, 0x05, 0x51, 0x27, 0xfa, 0x9d, - 0xe2, 0x52, 0x11, 0x96, 0xb4, 0x0f, 0x42, 0x2e, 0x68, 0xec, 0x21, 0x92, - 0xba, 0xb7, 0x70, 0x4a, 0x24, 0x4f, 0xd3, 0x2b, 0x41, 0x86, 0xfd, 0xc9, - 0xc0, 0x83, 0x7f, 0xd7, 0xa3, 0x7f, 0xf7, 0x92, 0x1a, 0x1e, 0x93, 0xb2, - 0x20, 0xb4, 0xbe, 0x6f, 0x22, 0xb0, 0xc2, 0x6f, 0xed, 0x9b, 0x04, 0xad, - 0x18, 0x32, 0xee, 0xcc, 0x86, 0xb2, 0x4a, 0x29, 0x44, 0x54, 0x25, 0x95, - 0xa6, 0x1c, 0x12, 0x9e, 0x2a, 0x69, 0x55, 0xec, 0x1c, 0x2b, 0x48, 0xcb, - 0x28, 0xb9, 0x82, 0x64, 0xe5, 0x48, 0x61, 0xd6, 0x00, 0x52, 0x04, 0x98, - 0x8b, 0x50, 0xb4, 0x14, 0xcf, 0xb8, 0x2e, 0x7c, 0xdc, 0x31, 0x69, 0x56, - 0xe2, 0x4c, 0x36, 0x0f, 0xc0, 0xf8, 0x09, 0xe9, 0xcc, 0xb3, 0xe2, 0x7d, - 0x83, 0x0e, 0xad, 0xd1, 0x49, 0x6e, 0x75, 0x0d, 0x7c, 0xa1, 0x34, 0x37, - 0x56, 0xdd, 0xa3, 0x1c, 0xcb, 0x4e, 0x2f, 0x6b, 0x25, 0x4d, 0xc3, 0x3d, - 0xc6, 0xd5, 0xbc, 0x74, 0x37, 0x3a, 0x71, 0xe1, 0xea, 0x0a, 0x2e, 0xbc, - 0x13, 0x7f, 0xae, 0x3c, 0xe1, 0x92, 0x71, 0x69, 0x0d, 0x17, 0xb4, 0x39, - 0x74, 0xd7, 0x85, 0x75, 0x80, 0x71, 0x92, 0xdd, 0x01, 0x2b, 0x30, 0x77, - 0x60, 0x59, 0x72, 0x03, 0x05, 0xff, 0x09, 0x80, 0xdb, 0xfb, 0x62, 0x26, - 0x9b, 0x43, 0x37, 0x34, 0x04, 0x84, 0xe7, 0xd6, 0xd3, 0x67, 0xf0, 0x16, - 0x10, 0x02, 0xa6, 0x97, 0xf2, 0x05, 0x80, 0xf7, 0xad, 0xfe, 0x4b, 0xee, - 0xc1, 0x59, 0x0c, 0x45, 0xe7, 0x83, 0xbc, 0x56, 0x64, 0x58, 0xef, 0x83, - 0x8f, 0x3d, 0x2c, 0x70, 0x71, 0x96, 0xc8, 0xc6, 0x62, 0xdd, 0xd4, 0x2a, - 0x82, 0xcc, 0xef, 0x27, 0x6b, 0xb9, 0x04, 0x1b, 0x6c, 0x2f, 0xdc, 0xed, - 0x31, 0xcc, 0x32, 0x09, 0xe6, 0x32, 0x5c, 0xaa, 0xd2, 0xe5, 0x03, 0x72, - 0x9d, 0x3c, 0x7f, 0x1e, 0xd7, 0x07, 0xcd, 0xe9, 0x7d, 0xc6, 0x74, 0x93, - 0x05, 0xa2, 0x0d, 0x13, 0x09, 0xe5, 0x5e, 0x47, 0x82, 0xbe, 0x3c, 0x1a, - 0x7f, 0x5f, 0x33, 0x03, 0x54, 0xc8, 0xcc, 0x3e, 0x4f, 0x0a, 0xe7, 0x55, - 0x77, 0xb5, 0x7e, 0x9d, 0xf1, 0xd6, 0xd2, 0xb4, 0x99, 0xbd, 0x62, 0xd3, - 0x89, 0xb6, 0x6f, 0x27, 0x70, 0x73, 0x42, 0x21, 0x55, 0xaa, 0x93, 0xba, - 0x93, 0x41, 0xdd, 0x39, 0x75, 0x67, 0x30, 0x52, 0xee, 0xa6, 0x8c, 0x01, - 0x1c, 0x7d, 0xc8, 0xb0, 0x51, 0x50, 0x8c, 0x5c, 0x0a, 0x17, 0x1e, 0x1e, - 0xa1, 0x57, 0x12, 0xb3, 0x04, 0xb6, 0x9f, 0x65, 0x37, 0x43, 0x08, 0x76, - 0x88, 0x1c, 0xb5, 0x48, 0x9d, 0x31, 0x7e, 0x75, 0xf3, 0x9e, 0xda, 0x6c, - 0xb6, 0x8b, 0x77, 0x9c, 0xb7, 0x92, 0x40, 0x42, 0x5b, 0xca, 0x41, 0xb9, - 0x77, 0x5d, 0xce, 0x1a, 0x1b, 0x6b, 0xea, 0xca, 0x45, 0x54, 0x4e, 0x90, - 0x41, 0xd4, 0x56, 0xc6, 0xd8, 0x36, 0x11, 0xe4, 0x9a, 0xd3, 0x2c, 0x2f, - 0x1d, 0x1d, 0x83, 0xb3, 0x3d, 0x93, 0x19, 0x87, 0x44, 0xe7, 0x56, 0x6e, - 0xb2, 0x62, 0xc2, 0x7a, 0xba, 0x21, 0xde, 0x1a, 0x08, 0x23, 0x29, 0xbc, - 0x5a, 0xa8, 0xec, 0x2d, 0x36, 0xb4, 0x17, 0xb8, 0xe4, 0x54, 0x1d, 0x70, - 0xef, 0x98, 0xbd, 0x0f, 0x4e, 0x8d, 0x9f, 0x29, 0x1a, 0x53, 0x4e, 0x00, - 0xa5, 0xff, 0xbe, 0xec, 0x45, 0x13, 0xb4, 0xc0, 0x21, 0x06, 0x89, 0x42, - 0x6e, 0x9a, 0x84, 0xb1, 0x70, 0x5b, 0xec, 0xb4, 0x8c, 0x7a, 0x94, 0x79, - 0x8d, 0x98, 0x80, 0x22, 0xd8, 0x68, 0x42, 0x48, 0xd3, 0x67, 0xa5, 0x98, - 0xe5, 0xe4, 0x04, 0x9c, 0x0f, 0xb4, 0xdd, 0x7b, 0x2d, 0x19, 0x4a, 0xc7, - 0x5e, 0x08, 0x69, 0x36, 0x39, 0x93, 0x4d, 0x15, 0x05, 0x56, 0x87, 0xa5, - 0x11, 0x59, 0x16, 0xf8, 0x40, 0x38, 0x1f, 0xca, 0xc0, 0xb5, 0x33, 0x52, - 0x97, 0x42, 0x03, 0x1b, 0xde, 0xec, 0x8e, 0xad, 0x2a, 0x68, 0x4a, 0x5e, - 0x0b, 0x4e, 0x9c, 0xfa, 0x87, 0x16, 0xef, 0xfe, 0xe1, 0xb5, 0xb0, 0xdd, - 0x41, 0xfc, 0x64, 0x1b, 0x65, 0x07, 0xf9, 0xc7, 0x4a, 0xcd, 0x18, 0x12, - 0xd2, 0x4c, 0x1c, 0xbf, 0x92, 0x55, 0xe4, 0x68, 0xca, 0x92, 0x2f, 0x5e, - 0x05, 0xe9, 0x67, 0xe1, 0x04, 0xe8, 0x03, 0xc3, 0x56, 0x7c, 0x8e, 0xcb, - 0x0c, 0xfe, 0x0e, 0x90, 0x7a, 0x3b, 0x96, 0x9e, 0x96, 0xe8, 0x7e, 0xe7, - 0x14, 0x5b, 0xfd, 0x79, 0xe0, 0xa8, 0x90, 0x1e, 0x48, 0x6d, 0xd9, 0xfb, - 0x37, 0x27, 0x2f, 0xa0, 0x3a, 0xda, 0x58, 0x91, 0x3b, 0x12, 0xcb, 0xc0, - 0xa6, 0x72, 0xc1, 0x95, 0xae, 0x1f, 0xa6, 0x8d, 0x5b, 0xa4, 0xb5, 0x26, - 0x00, 0x19, 0xe8, 0xe1, 0xc2, 0xa0, 0x8e, 0x55, 0x39, 0x00, 0x2a, 0xc4, - 0xd0, 0xb5, 0xdf, 0xc2, 0xb8, 0xba, 0x33, 0xcb, 0xed, 0x4e, 0x30, 0xfb, - 0xd8, 0x60, 0x8e, 0x31, 0x73, 0x2a, 0x36, 0x0d, 0x0a, 0x76, 0x98, 0x72, - 0xa2, 0x5b, 0xed, 0x00, 0xeb, 0x79, 0xc4, 0xa9, 0x5e, 0xea, 0xf2, 0xe0, - 0x68, 0x23, 0x4f, 0x87, 0xdb, 0x71, 0x9d, 0x6c, 0xe9, 0x88, 0x46, 0x98, - 0xb6, 0xff, 0x8d, 0x83, 0x99, 0x06, 0xe4, 0x85, 0xad, 0x01, 0x9d, 0xf4, - 0x69, 0x6f, 0x6e, 0xdc, 0xba, 0x24, 0xda, 0xf6, 0x5f, 0x04, 0x9e, 0xc6, - 0x19, 0xd1, 0x81, 0x66, 0xfc, 0x8a, 0xe5, 0x88, 0x29, 0xe4, 0x4e, 0x5d, - 0xc2, 0x93, 0x0d, 0x67, 0x5b, 0x5d, 0x92, 0x9d, 0x46, 0x94, 0x1f, 0x40, - 0xd6, 0x55, 0x6e, 0xde, 0x6b, 0x32, 0x72, 0x07, 0xd8, 0xdc, 0xff, 0xb9, - 0x0a, 0xa5, 0xa7, 0xef, 0x2d, 0x28, 0x58, 0x10, 0xe6, 0x54, 0x8c, 0xd3, - 0x98, 0xf8, 0xfd, 0x18, 0xf7, 0xcb, 0x52, 0xed, 0x6f, 0x5d, 0x7a, 0xdb, - 0xcc, 0x48, 0x18, 0xd9, 0xf1, 0x1a, 0xa6, 0x21, 0xd8, 0xb6, 0x2e, 0x81, - 0xde, 0xce, 0x04, 0x17, 0xb4, 0x71, 0x3f, 0xa8, 0xe4, 0x68, 0x3c, 0x1d, - 0x07, 0x79, 0x7c, 0x67, 0xba, 0x72, 0xaf, 0xd8, 0x45, 0x53, 0x28, 0x4d, - 0xea, 0x9e, 0xf9, 0x49, 0x1d, 0x7e, 0x5b, 0x3f, 0xb6, 0xd8, 0x15, 0xc1, - 0x58, 0x21, 0x13, 0x16, 0x7b, 0x42, 0xfc, 0xd5, 0x8c, 0xaa, 0x9b, 0xd0, - 0x14, 0xd3, 0x95, 0x77, 0x93, 0x4e, 0x08, 0xe6, 0x14, 0x4e, 0xf1, 0xfa, - 0x40, 0x61, 0x3a, 0xa2, 0xbf, 0xba, 0xf4, 0x8f, 0xda, 0x90, 0xe6, 0xae, - 0xa3, 0x68, 0x76, 0xdf, 0x65, 0xa8, 0x39, 0xbc, 0xd6, 0x82, 0xfa, 0xf8, - 0x9a, 0xcd, 0xea, 0x79, 0xa6, 0xb2, 0x18, 0x91, 0xef, 0xd4, 0x64, 0xa2, - 0x4b, 0x05, 0x6f, 0x20, 0x5c, 0x31, 0x35, 0x65, 0x12, 0x1d, 0x2f, 0x9b, - 0xf7, 0xeb, 0xd7, 0x82, 0xa0, 0x0a, 0x71, 0xdb, 0xe0, 0xfd, 0x08, 0xdf, - 0xf5, 0xa6, 0xa8, 0xa8, 0x30, 0xcf, 0xcc, 0xd7, 0x6d, 0x7c, 0x78, 0xb5, - 0x98, 0xee, 0x75, 0x33, 0x7b, 0x3f, 0x15, 0x86, 0x56, 0x19, 0x5e, 0x90, - 0xf9, 0x10, 0xc1, 0xe9, 0xb9, 0xc3, 0xa9, 0x27, 0x9f, 0x3c, 0x36, 0x35, - 0x5e, 0xf1, 0x0a, 0x3d, 0xbe, 0x76, 0x6f, 0xf4, 0xd2, 0xfc, 0x49, 0x38, - 0x86, 0xb3, 0xbd, 0x6a, 0xc4, 0x1c, 0x17, 0xdf, 0x4f, 0x3e, 0xdc, 0x10, - 0x14, 0x4d, 0xa6, 0xed, 0x51, 0x67, 0xf5, 0x73, 0x47, 0xe6, 0x75, 0xba, - 0x6d, 0xc4, 0x04, 0xc5, 0x08, 0xcf, 0x82, 0xce, 0x6b, 0x3d, 0xe8, 0x39, - 0x45, 0xcd, 0x99, 0x63, 0xa2, 0xc8, 0x99, 0x77, 0x65, 0x20, 0x99, 0xe0, - 0xfd, 0x82, 0xff, 0xef, 0xde, 0xbb, 0x7d, 0xe9, 0x02, 0xb5, 0x6a, 0xab, - 0x2f, 0x1f, 0x54, 0x02, 0xd4, 0x1f, 0xa1, 0x2f, 0x73, 0x4c, 0xb7, 0xc8, - 0x20, 0xd1, 0xa4, 0x1f, 0x50, 0xc5, 0x89, 0x11, 0xaf, 0xdc, 0xba, 0x4e, - 0x66, 0xdc, 0x1c, 0xab, 0xee, 0x14, 0x8a, 0xae, 0x2c, 0x99, 0x97, 0x6f, - 0xfb, 0x1a, 0x6c, 0xd7, 0xfb, 0xb9, 0x53, 0x19, 0x43, 0xbf, 0x59, 0x2f, - 0xea, 0x82, 0x21, 0xa0, 0x48, 0x33, 0x7c, 0x05, 0x04, 0xa7, 0x76, 0x8a, - 0x5d, 0xe3, 0xb0, 0xa6, 0x73, 0x36, 0x0e, 0xa4, 0xb4, 0x1f, 0x17, 0x30, - 0x52, 0x35, 0x0a, 0xf1, 0x89, 0xe2, 0x78, 0xa2, 0x6c, 0x25, 0x14, 0xdd, - 0xfa, 0x6c, 0x33, 0x37, 0x05, 0x50, 0x09, 0x86, 0x0d, 0xb5, 0xdf, 0x67, - 0xb6, 0xc9, 0xa9, 0xe4, 0x1e, 0x5b, 0x12, 0x23, 0x77, 0x92, 0x1b, 0x73, - 0xfa, 0x59, 0xc7, 0xfc, 0x98, 0x61, 0x45, 0xf6, 0x2f, 0x4f, 0x9d, 0xeb, - 0x46, 0xe2, 0xae, 0xce, 0x37, 0xc8, 0xb3, 0x13, 0xc9, 0x0d, 0x9e, 0x39, - 0xc6, 0x92, 0x5c, 0xb2, 0x29, 0x92, 0x45, 0xd9, 0x5c, 0x12, 0xbc, 0x50, - 0x28, 0x42, 0xe8, 0xc8, 0x6e, 0x31, 0x69, 0xf2, 0xde, 0xc9, 0xf5, 0x4e, - 0x72, 0x32, 0x27, 0x4c, 0xcf, 0xd2, 0x3a, 0xc4, 0x3a, 0x25, 0x71, 0x2b, - 0x49, 0x91, 0x03, 0x1e, 0xd2, 0x34, 0xfb, 0x45, 0x79, 0xce, 0x25, 0xef, - 0x6f, 0xbf, 0x5c, 0x5f, 0x13, 0x7e, 0x61, 0x33, 0x12, 0xf6, 0x1b, 0xbc, - 0xfb, 0x5f, 0x24, 0x33, 0x70, 0xea, 0xcf, 0xaa, 0x32, 0x19, 0x58, 0x74, - 0x96, 0x0d, 0xa7, 0xfe, 0x79, 0xb6, 0xbc, 0x9f, 0xfa, 0x68, 0x81, 0x02, - 0xb2, 0x38, 0x34, 0x0e, 0x2e, 0xb0, 0x70, 0x2a, 0x4d, 0xc7, 0xea, 0x4d, - 0xf9, 0x77, 0x3e, 0x3c, 0x65, 0xb3, 0x0e, 0x65, 0x9e, 0x17, 0x92, 0xca, - 0x9b, 0xb6, 0xc9, 0xbb, 0x29, 0x33, 0xf8, 0x6a, 0x38, 0x7e, 0xd3, 0xf4, - 0xda, 0x7b, 0x55, 0xef, 0x72, 0x29, 0x5e, 0x96, 0xee, 0x01, 0xb2, 0x60, - 0x55, 0xc7, 0x61, 0x55, 0x72, 0xf4, 0x2d, 0x30, 0xef, 0xa9, 0xde, 0xb9, - 0xe0, 0x87, 0xa0, 0x0d, 0x8a, 0x22, 0x31, 0x41, 0x86, 0x36, 0xcf, 0xe4, - 0x18, 0x28, 0xa8, 0x52, 0x69, 0xf1, 0x9c, 0x4f, 0x2a, 0x5f, 0xac, 0xc9, - 0xc1, 0xcb, 0x91, 0x62, 0xc5, 0x17, 0xfe, 0x20, 0x3a, 0xd7, 0x28, 0xf5, - 0x8f, 0xd1, 0xe0, 0x29, 0x9d, 0x4d, 0xaa, 0x28, 0x88, 0x05, 0xc6, 0xfa, - 0xc7, 0x92, 0x40, 0x99, 0x21, 0x32, 0x32, 0xfe, 0x59, 0x8f, 0x5f, 0x6a, - 0x43, 0x9a, 0x96, 0xa8, 0x00, 0x04, 0x8f, 0x2a, 0x70, 0x40, 0x6a, 0x84, - 0xb9, 0xbd, 0xed, 0xe3, 0x68, 0x0a, 0x8f, 0x4a, 0xca, 0x37, 0xcd, 0xb1, - 0x39, 0x87, 0xe1, 0x31, 0x99, 0xff, 0xf6, 0x91, 0x56, 0x80, 0x95, 0xac, - 0xbc, 0xe5, 0x22, 0x29, 0xd6, 0x81, 0x64, 0xe6, 0x51, 0x09, 0x2e, 0xeb, - 0x40, 0x0c, 0xc4, 0xbe, 0xc0, 0x4d, 0x20, 0x5b, 0x43, 0xc6, 0x5c, 0x1f, - 0xcc, 0x15, 0xdb, 0x3e, 0x58, 0x7d, 0x3e, 0xf3, 0x8f, 0x70, 0xe7, 0x24, - 0x5b, 0xc3, 0xc0, 0xc0, 0x52, 0x27, 0x01, 0x20, 0xe6, 0x54, 0x03, 0x8a, - 0x8d, 0xee, 0x45, 0x34, 0x49, 0xb5, 0x13, 0x97, 0x3b, 0xdc, 0xa4, 0xf2, - 0x38, 0x9d, 0x48, 0xdb, 0xe7, 0xb4, 0xcd, 0x2e, 0xc7, 0xcc, 0x91, 0xa0, - 0xee, 0xd7, 0x38, 0x72, 0xbf, 0x0b, 0x14, 0x6b, 0x2f, 0x75, 0x15, 0x95, - 0x9e, 0xbc, 0xfa, 0x6b, 0x03, 0x89, 0x05, 0x06, 0xd9, 0x0f, 0x32, 0xb4, - 0x6a, 0x57, 0x7f, 0xaa, 0x10, 0x8d, 0x3c, 0x89, 0xb1, 0x3a, 0x7e, 0xdc, - 0x6d, 0xfd, 0x3f, 0x80, 0xa3, 0x4e, 0xae, 0x9a, 0x17, 0xb8, 0x65, 0x5a, - 0x83, 0x6a, 0xb4, 0x0e, 0xce, 0x21, 0xb9, 0x9e, 0xf7, 0xe7, 0x54, 0xa0, - 0xff, 0x35, 0x30, 0x99, 0x9c, 0x03, 0x77, 0xbf, 0xaf, 0x89, 0x93, 0x29, - 0x6b, 0x34, 0x87, 0xee, 0x04, 0x1b, 0x3a, 0xbc, 0x89, 0xb9, 0x88, 0x46, - 0x91, 0x91, 0x2c, 0x30, 0x9d, 0xce, 0xe5, 0x2e, 0x68, 0xcb, 0x49, 0xf1, - 0x7e, 0x71, 0xe1, 0xec, 0x1a, 0x3c, 0x24, 0x2b, 0xb6, 0x81, 0xd9, 0xf0, - 0x81, 0x70, 0x5c, 0xc1, 0x80, 0x4b, 0x08, 0xfe, 0x35, 0xc5, 0xb4, 0xbd, - 0x7f, 0x78, 0x47, 0xb8, 0xfc, 0x84, 0x99, 0x95, 0x5a, 0x9c, 0x07, 0x2b, - 0xba, 0x6a, 0xe2, 0xa7, 0x44, 0x1e, 0x0f, 0x8d, 0x4e, 0x60, 0x9f, 0xa9, - 0xd7, 0x47, 0x39, 0x56, 0xe2, 0x19, 0x8a, 0x68, 0x9c, 0x87, 0x55, 0xda, - 0xe4, 0x02, 0x11, 0x97, 0x2b, 0x1d, 0x42, 0xf1, 0x54, 0x5a, 0x82, 0x74, - 0x87, 0x93, 0x29, 0x3f, 0x18, 0x3f, 0x74, 0xd5, 0x54, 0xc9, 0xcc, 0x3d, - 0x45, 0x5c, 0xd5, 0x3f, 0xd9, 0xb9, 0x34, 0x8c, 0x8d, 0x80, 0x37, 0x0f, - 0x9a, 0x38, 0xe0, 0x9a, 0x85, 0x51, 0x0d, 0xaf, 0x4c, 0x19, 0x00, 0xfa, - 0xe5, 0x32, 0x92, 0xc7, 0xcc, 0x17, 0x8b, 0x5e, 0x7c, 0x41, 0x33, 0x81, - 0x78, 0xc4, 0x3a, 0x90, 0x77, 0x03, 0x82, 0x53, 0xb0, 0x0b, 0xd8, 0x25, - 0x2c, 0x31, 0x8b, 0x9c, 0x11, 0x31, 0x2b, 0x53, 0x20, 0xa7, 0x6c, 0xac, - 0x83, 0xcf, 0xad, 0x49, 0x1b, 0x7b, 0x88, 0x00, 0x96, 0x0f, 0xa2, 0x98, - 0x1b, 0x47, 0xec, 0x74, 0xc0, 0xfa, 0x02, 0x2a, 0xd0, 0xc4, 0x84, 0xda, - 0xa1, 0x54, 0x35, 0x9a, 0x23, 0xee, 0x99, 0x36, 0x84, 0x1c, 0xfc, 0x04, - 0xb7, 0x8e, 0xd8, 0x03, 0x07, 0xca, 0xd4, 0xa6, 0x1d, 0x35, 0x4e, 0x33, - 0x9c, 0xc7, 0xfd, 0xae, 0x81, 0xd2, 0xc1, 0x6a, 0x79, 0x5d, 0xc7, 0xc1, - 0x1d, 0x32, 0x7d, 0xc4, 0x5a, 0x7d, 0xeb, 0xb8, 0x1e, 0x82, 0x6a, 0xf1, - 0xc8, 0xa7, 0xa2, 0xf4, 0xf6, 0xb1, 0x6a, 0xb1, 0xd4, 0x88, 0xcf, 0x22, - 0x43, 0xd6, 0xf4, 0x45, 0x50, 0x51, 0x11, 0xf0, 0xc3, 0xc7, 0x64, 0xac, - 0x76, 0xc6, 0x81, 0x47, 0xee, 0xcc, 0xb5, 0x6e, 0xc4, 0x03, 0xdf, 0x7d, - 0x96, 0xbc, 0xec, 0x5c, 0x30, 0xfa, 0xb1, 0x4c, 0xdb, 0xc7, 0x2a, 0xd6, - 0xff, 0x66, 0xc0, 0x74, 0x25, 0xdb, 0x7a, 0x08, 0xf1, 0xde, 0x0a, 0x3e, - 0x49, 0x3d, 0x98, 0x8d, 0x76, 0x80, 0xe0, 0xca, 0xdb, 0x50, 0xb5, 0x54, - 0xae, 0x5f, 0xe6, 0x4c, 0x4d, 0xe0, 0xd0, 0xf5, 0x05, 0xf9, 0xcf, 0x00, - 0xf0, 0x5e, 0x93, 0x6d, 0xf9, 0x53, 0xd6, 0x3c, 0xcd, 0xc7, 0xe6, 0xde, - 0xb4, 0xc7, 0xde, 0x98, 0x10, 0x54, 0xf6, 0x16, 0x69, 0x9b, 0x6d, 0xb5, - 0x4f, 0xc5, 0x57, 0xe4, 0x5e, 0x08, 0xae, 0xeb, 0xa8, 0x00, 0xdd, 0x93, - 0xd5, 0x86, 0x51, 0xbb, 0x1c, 0xa4, 0xad, 0x64, 0x43, 0x08, 0xe3, 0x7c, - 0x67, 0xa1, 0x18, 0x57, 0x3f, 0x7e, 0x20, 0xc5, 0xe2, 0x43, 0x5f, 0xab, - 0xc5, 0x83, 0xb1, 0xe4, 0x8d, 0xfa, 0xee, 0x91, 0x04, 0x2c, 0x79, 0x90, - 0xea, 0xf7, 0x92, 0x8a, 0xb8, 0x25, 0x4d, 0xf6, 0x8c, 0x07, 0x0a, 0x4e, - 0x71, 0x49, 0x24, 0xc2, 0x2a, 0xb2, 0x1c, 0x23, 0x31, 0xbe, 0xb2, 0xa6, - 0x8a, 0x90, 0x7b, 0xb8, 0xce, 0x5f, 0x69, 0x99, 0x18, 0x10, 0x77, 0xb5, - 0x0a, 0xa8, 0x29, 0xc1, 0x2d, 0x03, 0x2a, 0x45, 0x6c, 0x06, 0x1d, 0x30, - 0xcb, 0xab, 0x9f, 0xba, 0x0d, 0xb7, 0x50, 0x72, 0x35, 0x05, 0x50, 0x22, - 0x50, 0x9b, 0xd4, 0xa8, 0xfb, 0x4e, 0x5f, 0xa4, 0x56, 0xea, 0x82, 0x2e, - 0xb5, 0x48, 0x64, 0xf4, 0xb1, 0x03, 0x79, 0x53, 0x1d, 0x03, 0x4a, 0x33, - 0x0c, 0x54, 0x6d, 0x8a, 0x0e, 0x62, 0x31, 0x0e, 0x6f, 0xb6, 0x7a, 0x9e, - 0x0e, 0x18, 0x38, 0x59, 0xdf, 0xd1, 0x98, 0x3d, 0x02, 0x87, 0x70, 0xd2, - 0x5e, 0x40, 0x5c, 0xf3, 0x26, 0x72, 0x50, 0xcb, 0x85, 0xf4, 0xfd, 0x2b, - 0x75, 0xff, 0x8b, 0x29, 0x2e, 0xfa, 0xf2, 0x6c, 0xc8, 0xc7, 0x12, 0xd5, - 0x1c, 0x74, 0x67, 0x4f, 0x11, 0x1c, 0xe5, 0xe7, 0x01, 0x93, 0xf9, 0xb1, - 0x13, 0x5e, 0x85, 0xc6, 0x15, 0x1e, 0x0e, 0x81, 0x98, 0x4d, 0xe0, 0x6f, - 0x39, 0x22, 0x82, 0xb1, 0x29, 0xcd, 0xaa, 0xa4, 0xf9, 0x70, 0x9d, 0xe1, - 0x1e, 0x2f, 0x4c, 0x50, 0x26, 0xe9, 0x83, 0xbd, 0x9e, 0xe2, 0x35, 0x3f, - 0x9c, 0xe5, 0xce, 0x1b, 0xd7, 0x4d, 0x37, 0x40, 0x40, 0xa5, 0x37, 0xad, - 0x8d, 0xd8, 0x19, 0x54, 0x85, 0xc5, 0x91, 0x71, 0xa2, 0x39, 0xa9, 0x9e, - 0x49, 0x54, 0x90, 0x27, 0x40, 0x2f, 0x5d, 0xfe, 0x94, 0x63, 0x55, 0x08, - 0xb3, 0xb5, 0x68, 0x90, 0x8f, 0x57, 0x6e, 0xce, 0xfa, 0xc7, 0xff, 0x0a, - 0x10, 0x91, 0x1f, 0x42, 0xe6, 0x0a, 0x39, 0xeb, 0xec, 0xc1, 0x4b, 0x3a, - 0x0f, 0xc5, 0x5f, 0x2a, 0xa6, 0xca, 0x38, 0x0e, 0xe4, 0x7c, 0xfb, 0xab, - 0xd9, 0xa5, 0x25, 0x28, 0xcd, 0x85, 0xcb, 0x20, 0x0c, 0x34, 0xa7, 0x1b, - 0xba, 0xeb, 0x60, 0x72, 0x78, 0x89, 0x4f, 0x7a, 0xca, 0x83, 0x01, 0x7e, - 0xa4, 0x4c, 0x7b, 0xbc, 0x0b, 0xa9, 0xaa, 0x76, 0x5e, 0xf9, 0x55, 0x0a, - 0xf3, 0x1d, 0x0a, 0x59, 0x28, 0x85, 0xf1, 0x15, 0xf4, 0xf5, 0x75, 0xab, - 0x77, 0xb3, 0x59, 0x42, 0x46, 0x22, 0x78, 0xf4, 0x7a, 0xd9, 0x19, 0x6d, - 0xeb, 0xc2, 0x63, 0x33, 0xe0, 0xe9, 0xf9, 0xf6, 0xa2, 0x8f, 0x44, 0xb9, - 0x9d, 0xac, 0xd7, 0xec, 0x31, 0x97, 0x15, 0x9c, 0xf3, 0x3e, 0x2c, 0xf6, - 0x0b, 0xeb, 0xea, 0x9d, 0xbc, 0xaf, 0xde, 0xd0, 0xea, 0x17, 0x67, 0x60, - 0x25, 0x19, 0x42, 0x07, 0x56, 0x1d, 0x49, 0x34, 0xfe, 0xf1, 0x81, 0x76, - 0x79, 0x54, 0x54, 0xc5, 0x8f, 0xfc, 0xb6, 0x77, 0xde, 0xee, 0x53, 0x44, - 0x14, 0x0f, 0x68, 0x73, 0x65, 0x64, 0xaa, 0x56, 0x0a, 0x5e, 0x51, 0x97, - 0x16, 0xf5, 0xba, 0x7a, 0x34, 0xd5, 0x6e, 0xac, 0x39, 0x11, 0x64, 0x08, - 0x69, 0x88, 0x85, 0x33, 0x1f, 0x9b, 0x32, 0x1a, 0x82, 0x09, 0x7e, 0x4a, - 0x1a, 0xb0, 0xf0, 0x7f, 0x4a, 0x01, 0x12, 0x0d, 0xa0, 0x53, 0x87, 0x36, - 0x82, 0xbd, 0x20, 0xf0, 0xba, 0x50, 0xb2, 0x6b, 0x5d, 0xa5, 0x48, 0x9c, - 0xa7, 0x56, 0x80, 0x09, 0x7d, 0x06, 0x4c, 0xc0, 0x7d, 0x06, 0xd5, 0x94, - 0xdc, 0x93, 0xe1, 0xaf, 0x2a, 0xa5, 0x15, 0x81, 0x89, 0x2c, 0x2b, 0x6c, - 0xdc, 0x9e, 0x30, 0x1e, 0x43, 0x25, 0xcf, 0x17, 0x6f, 0x91, 0xf1, 0x57, - 0x86, 0x90, 0x42, 0xaf, 0xba, 0x69, 0x56, 0x05, 0x99, 0xac, 0xca, 0xcf, - 0x75, 0xe7, 0x13, 0x04, 0x61, 0xa7, 0xcf, 0xe9, 0xbe, 0x9f, 0x1d, 0x91, - 0x22, 0x92, 0x0e, 0x11, 0x3d, 0xbe, 0x42, 0xff, 0x47, 0xb6, 0xa0, 0x18, - 0x3c, 0xad, 0x02, 0xd1, 0x10, 0xc3, 0x44, 0xf5, 0xd6, 0x6d, 0x76, 0x65, - 0xad, 0xa4, 0xcf, 0xfe, 0x5a, 0xd5, 0x2c, 0x5f, 0xee, 0xba, 0xd9, 0x2a, - 0xfe, 0x5a, 0x8b, 0x76, 0x2f, 0x68, 0x97, 0xb4, 0xa0, 0x77, 0xb5, 0x88, - 0x02, 0x38, 0xad, 0x92, 0xe6, 0xb8, 0x53, 0x44, 0x8d, 0x77, 0xc9, 0x9a, - 0x01, 0x60, 0xe8, 0xbc, 0x34, 0xaf, 0xc4, 0x27, 0xc2, 0x1d, 0x12, 0xeb, - 0xbb, 0x45, 0xb6, 0x44, 0x43, 0xaf, 0x28, 0x4e, 0x41, 0x12, 0x23, 0x23, - 0x70, 0x35, 0x7c, 0x18, 0x4a, 0x3b, 0x33, 0xad, 0x81, 0xe2, 0xbd, 0x19, - 0x4c, 0xf1, 0xe7, 0x2f, 0x13, 0x46, 0x7e, 0xea, 0x6f, 0xa1, 0x62, 0x33, - 0x5f, 0x2b, 0xea, 0x6c, 0x01, 0xb0, 0xb1, 0xd8, 0x6b, 0x47, 0x71, 0xf1, - 0xe3, 0xd2, 0x1b, 0x9b, 0x7b, 0xc6, 0xcb, 0x1e, 0xb9, 0xfb, 0xa0, 0x48, - 0x5f, 0xe9, 0xac, 0xdf, 0xf6, 0xe0, 0x93, 0x64, 0x90, 0x78, 0xbf, 0x4f, - 0x7d, 0x27, 0x85, 0x66, 0x89, 0x23, 0x56, 0x44, 0xfc, 0xdd, 0xb3, 0x6f, - 0xcf, 0xe5, 0x85, 0xdb, 0x76, 0x74, 0x60, 0x25, 0xf8, 0x12, 0xb5, 0xb0, - 0xfb, 0x79, 0xc1, 0x64, 0x53, 0xf2, 0x85, 0xc0, 0xe1, 0x25, 0x33, 0x81, - 0x58, 0x6e, 0xed, 0x46, 0x75, 0x21, 0x58, 0x29, 0xbc, 0xd7, 0x76, 0xf4, - 0x2a, 0xd5, 0x85, 0x1a, 0x5f, 0xab, 0x6a, 0xdd, 0x04, 0x46, 0x06, 0x6e, - 0x53, 0xdc, 0x45, 0xa7, 0x04, 0x6c, 0x63, 0xa2, 0x9d, 0x47, 0x03, 0xc6, - 0xcd, 0x4b, 0xa1, 0x56, 0xa1, 0xc6, 0x6b, 0x5c, 0x3c, 0xa9, 0xca, 0xae, - 0xf7, 0xcf, 0x88, 0x64, 0xc2, 0x8c, 0x07, 0x96, 0x47, 0x68, 0x09, 0x25, - 0x50, 0xba, 0xbd, 0x9e, 0x40, 0xf0, 0x4f, 0x96, 0xfd, 0x75, 0x05, 0x74, - 0xab, 0xd8, 0x46, 0x50, 0x2f, 0x13, 0x83, 0xb0, 0x95, 0x52, 0x7e, 0x69, - 0xa1, 0xd6, 0xc4, 0x5c, 0xfe, 0xbd, 0x94, 0x27, 0xe5, 0x3c, 0x39, 0xf9, - 0xea, 0x83, 0xc4, 0xac, 0x7c, 0x37, 0x90, 0xe5, 0xc5, 0x2d, 0x2a, 0x00, - 0x53, 0xd6, 0xa7, 0x36, 0xd6, 0xe6, 0x47, 0x44, 0xac, 0x1f, 0x68, 0x0c, - 0xf0, 0x96, 0xd6, 0x4e, 0x0d, 0x8d, 0x6f, 0x42, 0x8c, 0x87, 0x03, 0x21, - 0xdd, 0x14, 0xc8, 0x71, 0xd6, 0xfe, 0x2f, 0x99, 0xce, 0x95, 0x19, 0x5e, - 0xf1, 0x2b, 0xba, 0x8e, 0x55, 0xdd, 0xd7, 0x76, 0x54, 0x5b, 0x28, 0xda, - 0x6e, 0xf1, 0x9c, 0x71, 0x8a, 0x6d, 0x90, 0x16, 0x0e, 0x2e, 0xfc, 0xea, - 0x95, 0x8d, 0x5a, 0xda, 0x5f, 0xd2, 0x8e, 0xd8, 0x23, 0xd9, 0xed, 0x51, - 0x9a, 0x12, 0x01, 0x42, 0x1c, 0x6a, 0xb3, 0x04, 0x55, 0xb9, 0x1f, 0x74, - 0x12, 0x6a, 0x10, 0x1b, 0x1f, 0xd6, 0xa6, 0x57, 0x0b, 0x5f, 0x6d, 0xc9, - 0xf0, 0xcf, 0x2a, 0x42, 0xcc, 0x9d, 0x2f, 0xc6, 0x42, 0xfe, 0xde, 0xbf, - 0x27, 0xe4, 0xee, 0x77, 0xb3, 0xb7, 0x90, 0x26, 0xff, 0xb8, 0xd7, 0x80, - 0x77, 0xc0, 0x38, 0x0b, 0x0c, 0x7c, 0x31, 0x0c, 0x5d, 0xab, 0x8c, 0x94, - 0x7b, 0x12, 0x99, 0xfc, 0x40, 0x37, 0xfd, 0x06, 0x96, 0x95, 0x50, 0x1d, - 0xb0, 0x7c, 0xd6, 0xed, 0x47, 0xbf, 0x1b, 0x51, 0x11, 0x76, 0x0d, 0xd7, - 0x5b, 0x6f, 0x79, 0xed, 0xc0, 0x0f, 0x52, 0xe8, 0x1c, 0xeb, 0x0c, 0x5d, - 0x56, 0x6c, 0x3d, 0xba, 0x7b, 0x36, 0x02, 0x9e, 0xef, 0x4d, 0x14, 0x1d, - 0x15, 0x0a, 0xd9, 0x62, 0xbf, 0x6d, 0x04, 0x9a, 0x9f, 0xd2, 0x1b, 0xd8, - 0xd3, 0xd7, 0xd4, 0x46, 0x45, 0x1d, 0x9b, 0x95, 0xc7, 0xe8, 0xc0, 0x98, - 0x07, 0xae, 0xff, 0xaa, 0x2d, 0x8e, 0x89, 0xbf, 0x2d, 0x60, 0xe0, 0x4d, - 0x5e, 0x71, 0x40, 0xeb, 0x7f, 0x0d, 0x1e, 0x39, 0xce, 0xb3, 0x10, 0x38, - 0x14, 0x46, 0xaf, 0x76, 0x8c, 0x11, 0x98, 0xb0, 0x74, 0xe6, 0x44, 0x7c, - 0x3e, 0xfb, 0x37, 0xad, 0xfd, 0x8c, 0xa2, 0xf2, 0x28, 0xac, 0xc7, 0xb0, - 0xbd, 0x3a, 0x8e, 0xf3, 0x40, 0x0f, 0x88, 0xcd, 0x65, 0x75, 0x60, 0xe0, - 0x3d, 0x88, 0x8d, 0xa6, 0x5d, 0x6d, 0xe2, 0xe0, 0x1a, 0xc1, 0x30, 0x4f, - 0x1b, 0x06, 0x93, 0x85, 0x9d, 0x67, 0x5a, 0xad, 0xb6, 0xc5, 0xe1, 0x2d, - 0x30, 0x75, 0xe2, 0x92, 0x6f, 0xe5, 0xf2, 0xb9, 0xec, 0x1b, 0x4f, 0x81, - 0xe3, 0x71, 0xb5, 0xc9, 0x9c, 0x67, 0xb4, 0x50, 0xbe, 0x5f, 0x48, 0x74, - 0x21, 0xfe, 0xcd, 0x9c, 0x4d, 0x0a, 0xc3, 0x14, 0x40, 0xa9, 0x30, 0xd3, - 0xe8, 0xc5, 0x84, 0xba, 0xa1, 0x11, 0x37, 0x6b, 0xda, 0xa0, 0x68, 0x5a, - 0x0b, 0xce, 0x22, 0x71, 0x33, 0x17, 0xc1, 0x6b, 0xa9, 0xf0, 0x3b, 0x22, - 0x1b, 0x22, 0xb3, 0x7c, 0x07, 0x88, 0xc3, 0x47, 0xdf, 0xc3, 0x90, 0x66, - 0xd9, 0x44, 0x61, 0x26, 0x28, 0x2a, 0x36, 0x39, 0x6d, 0x45, 0xb1, 0xea, - 0xb9, 0xa9, 0xef, 0x32, 0x01, 0x5e, 0x2f, 0x7d, 0x7a, 0x6e, 0xef, 0xe7, - 0xf9, 0x2a, 0x52, 0xea, 0x95, 0x9c, 0x23, 0x48, 0xd1, 0x2a, 0x35, 0xa8, - 0x8b, 0x17, 0x32, 0x83, 0xd7, 0x9e, 0x7b, 0x66, 0x06, 0x4a, 0x2f, 0x9d, - 0xe5, 0xba, 0xd7, 0x1c, 0x20, 0xb4, 0x0e, 0x2e, 0x50, 0x9a, 0x91, 0x23, - 0x64, 0x06, 0x0e, 0x1b, 0x18, 0x0e, 0xf8, 0xfc, 0xa7, 0x33, 0xbd, 0x13, - 0x2a, 0x1a, 0xb1, 0xe8, 0xc0, 0x2d, 0x0e, 0x32, 0x16, 0x24, 0x9c, 0x07, - 0xcc, 0x28, 0x10, 0x9a, 0x18, 0xec, 0x6f, 0x74, 0x12, 0x32, 0x07, 0x75, - 0x64, 0xbb, 0x45, 0x21, 0xc5, 0x9a, 0xd4, 0x41, 0x4f, 0x74, 0x58, 0x70, - 0x6c, 0x8b, 0x15, 0x3f, 0xf8, 0x93, 0xfb, 0xc6, 0xb3, 0x20, 0x8f, 0xc3, - 0xe7, 0x61, 0x36, 0x42, 0x7f, 0x5d, 0x8a, 0x59, 0x01, 0x7f, 0xe1, 0x7d, - 0x21, 0x09, 0xad, 0x3d, 0xef, 0x1c, 0x1f, 0x0b, 0xd9, 0xa3, 0x1b, 0xe3, - 0xc3, 0x90, 0xb2, 0xbc, 0x2e, 0xfa, 0xff, 0x39, 0x11, 0x83, 0xb9, 0x30, - 0x81, 0xe2, 0x8f, 0xb1, 0xeb, 0x6c, 0x5d, 0x3b, 0xc4, 0xb9, 0x0d, 0xbb, - 0x1f, 0x29, 0xc8, 0x35, 0x41, 0x55, 0x16, 0x1c, 0xda, 0x67, 0x7f, 0xd9, - 0x17, 0x9f, 0x29, 0xc8, 0x1a, 0xd4, 0xf5, 0xc9, 0xad, 0x10, 0x0d, 0x34, - 0x51, 0x25, 0xf4, 0xab, 0x90, 0x78, 0xd4, 0x5f, 0x0f, 0xe6, 0x9b, 0x10, - 0xf6, 0xd0, 0x78, 0xf1, 0x65, 0x77, 0x5e, 0xc8, 0xf4, 0xfa, 0x52, 0x14, - 0xd9, 0x1f, 0xd8, 0xe9, 0x25, 0xb0, 0x88, 0x52, 0x4a, 0x9d, 0x64, 0x71, - 0x7a, 0x97, 0x93, 0x7e, 0xe8, 0xd0, 0xa4, 0xd8, 0xe4, 0x92, 0xa2, 0xbf, - 0x0e, 0xaa, 0xe9, 0x08, 0x80, 0x82, 0x7e, 0xc9, 0x96, 0xfd, 0x72, 0x94, - 0x8e, 0x99, 0xf4, 0x5b, 0xf1, 0x41, 0xc1, 0xf0, 0x2e, 0xc4, 0xf6, 0x2c, - 0xf0, 0xb4, 0x11, 0x3b, 0x4c, 0x34, 0x7f, 0xda, 0xd2, 0xfe, 0x7f, 0x2d, - 0xd6, 0x0b, 0x46, 0x8f, 0xb8, 0x8f, 0xf2, 0x30, 0x96, 0x8e, 0xec, 0x0a, - 0xd6, 0x28, 0xcb, 0x35, 0xb7, 0x90, 0x1d, 0x79, 0xcf, 0x8e, 0x33, 0x00, - 0x32, 0x67, 0x07, 0x6c, 0xa5, 0xe2, 0x2a, 0x47, 0x16, 0x2d, 0xbe, 0x85, - 0xe0, 0xf2, 0xb8, 0xd4, 0x7f, 0xc8, 0x34, 0x19, 0xb5, 0xf6, 0xce, 0xc6, - 0x91, 0x25, 0x1b, 0x3b, 0x58, 0x96, 0x81, 0x67, 0x0d, 0x77, 0x8f, 0x12, - 0x9b, 0x8b, 0x45, 0x18, 0x5f, 0x09, 0x13, 0x8d, 0x84, 0x20, 0xc8, 0x7d, - 0xf9, 0xa2, 0xd7, 0x6a, 0x6a, 0xa5, 0xca, 0x40, 0x36, 0xc0, 0x2a, 0xf9, - 0xf3, 0xd4, 0x23, 0x7e, 0x35, 0x0d, 0xa6, 0x98, 0x88, 0x1e, 0x2f, 0xd5, - 0xc9, 0x98, 0x92, 0x38, 0x1d, 0xb0, 0x45, 0x85, 0xf3, 0xa0, 0xba, 0xc5, - 0xe4, 0x3f, 0x64, 0x63, 0x73, 0x92, 0xda, 0xa4, 0xe6, 0x5a, 0x4b, 0x89, - 0x2c, 0xf8, 0xda, 0xa6, 0xe2, 0x9f, 0xe4, 0x91, 0x46, 0x2d, 0x8e, 0xe2, - 0x30, 0x63, 0x4c, 0xc5, 0x3c, 0xeb, 0x4a, 0x3d, 0x35, 0x6e, 0x67, 0x06, - 0x35, 0x4b, 0x4c, 0x29, 0x4f, 0x6b, 0xa1, 0xf2, 0x18, 0x07, 0x1e, 0x47, - 0x29, 0x69, 0x27, 0xb2, 0x6e, 0xc3, 0xe2, 0xc2, 0x30, 0x3f, 0x7a, 0x6c, - 0xfb, 0x0c, 0x1e, 0xc0, 0xbc, 0x42, 0xa3, 0x80, 0x30, 0x82, 0xb4, 0x36, - 0x19, 0xc3, 0xc8, 0x13, 0x3e, 0xf1, 0x0a, 0x7e, 0xef, 0x4e, 0xba, 0x7a, - 0x26, 0x88, 0x5e, 0x55, 0x77, 0xdd, 0x89, 0xb3, 0xc3, 0x19, 0x01, 0x9e, - 0xf4, 0x08, 0x61, 0x4e, 0xbb, 0xfb, 0x8e, 0x3e, 0xe8, 0x44, 0xa1, 0xc8, - 0x2a, 0xc2, 0x80, 0x0c, 0x98, 0xea, 0xdf, 0xef, 0x1a, 0x67, 0x1d, 0x79, - 0x12, 0xae, 0x57, 0xa1, 0x5d, 0x8f, 0x9a, 0x4e, 0x02, 0xef, 0xbe, 0xd4, - 0x0e, 0x37, 0x41, 0x4c, 0x5d, 0x62, 0x24, 0x54, 0x04, 0xf0, 0x2b, 0x20, - 0x46, 0x66, 0x20, 0x4b, 0x06, 0x8c, 0xf5, 0xf5, 0x5e, 0xf1, 0x8c, 0xd9, - 0xf1, 0xe6, 0x40, 0xcf, 0x12, 0x78, 0xb9, 0x90, 0x33, 0xf5, 0xb5, 0x93, - 0x87, 0xcf, 0xa8, 0xde, 0xb8, 0xa8, 0x55, 0x10, 0xef, 0x67, 0xca, 0x86, - 0x20, 0x3a, 0x12, 0xed, 0x67, 0xa3, 0x56, 0x76, 0x52, 0xb0, 0x5f, 0x10, - 0x83, 0x40, 0xfe, 0x49, 0x3f, 0x41, 0x52, 0xc9, 0x35, 0x5c, 0x7d, 0xc6, - 0x58, 0x51, 0xbb, 0xe4, 0xea, 0xa9, 0x60, 0xf8, 0x70, 0x0d, 0x60, 0xea, - 0xbe, 0x0e, 0x78, 0xd5, 0x59, 0x5f, 0x19, 0x06, 0xd7, 0x4f, 0x59, 0x3e, - 0xc4, 0x3a, 0x9d, 0x8f, 0xb3, 0x9d, 0xd7, 0xe4, 0xab, 0xc9, 0x25, 0xb0, - 0xe3, 0x3d, 0x61, 0x4c, 0x88, 0x6c, 0x92, 0x2f, 0xd1, 0xca, 0x56, 0x04, - 0x67, 0xff, 0x0e, 0x5b, 0x64, 0x3b, 0xe0, 0x0d, 0x4f, 0x55, 0xc8, 0x29, - 0x76, 0xab, 0xfb, 0xc1, 0xf6, 0x2f, 0x38, 0xbc, 0x98, 0xc8, 0xb6, 0x0a, - 0x37, 0x46, 0x77, 0xf4, 0x9d, 0x7f, 0xf9, 0x48, 0xc0, 0x6b, 0xb6, 0x15, - 0x7f, 0xb4, 0x84, 0xcb, 0xb6, 0x5d, 0x32, 0x54, 0x09, 0x1a, 0xe8, 0x9a, - 0xb6, 0xaa, 0x6a, 0xa1, 0x46, 0xf8, 0x47, 0x75, 0xf4, 0xa4, 0x8b, 0x05, - 0xdd, 0xa4, 0xc7, 0x1b, 0x90, 0xec, 0x57, 0x3d, 0x71, 0xc0, 0xb5, 0x8f, - 0x4a, 0x5a, 0xfe, 0xab, 0xfa, 0x4b, 0xe4, 0xba, 0xb2, 0xf6, 0xf2, 0x72, - 0xba, 0x22, 0x9b, 0x7b, 0xce, 0xd4, 0x22, 0x77, 0x86, 0x0c, 0x87, 0xe9, - 0x83, 0x41, 0x77, 0xd3, 0x7f, 0xcb, 0x83, 0x0e, 0xae, 0xaf, 0x04, 0xbf, - 0x5f, 0xf2, 0x46, 0xea, 0xfb, 0xa3, 0x2b, 0x97, 0x39, 0x10, 0x09, 0x90, - 0x3a, 0x8f, 0xa7, 0x26, 0x99, 0x9d, 0xb0, 0x0d, 0x24, 0x9d, 0x52, 0x5c, - 0xa1, 0x77, 0xc2, 0xe9, 0x9d, 0xf0, 0x29, 0x13, 0x61, 0x62, 0x80, 0x8c, - 0x11, 0xf7, 0x63, 0x1c, 0xea, 0x71, 0x07, 0xd6, 0x9a, 0x6d, 0xa1, 0xe7, - 0x06, 0x5f, 0x83, 0x91, 0xa2, 0xf6, 0x3d, 0x61, 0x5f, 0xd2, 0x60, 0x43, - 0xe8, 0xe6, 0x40, 0xad, 0x14, 0xbf, 0x91, 0x9e, 0x68, 0xeb, 0x7b, 0x45, - 0xf0, 0x83, 0x7e, 0xfc, 0xca, 0x64, 0x22, 0x9f, 0xaf, 0x84, 0x10, 0x01, - 0x99, 0xac, 0x76, 0xa8, 0xd4, 0x5c, 0xff, 0x79, 0xa0, 0x65, 0xcc, 0x53, - 0xa7, 0x7f, 0x36, 0x4a, 0x53, 0xa6, 0x17, 0x82, 0xab, 0xcd, 0x70, 0x69, - 0xb2, 0x40, 0x03, 0x0f, 0x6f, 0x64, 0x61, 0xfc, 0x20, 0x2b, 0x2d, 0x2e, - 0xd9, 0xf8, 0xb9, 0x46, 0x42, 0x31, 0xba, 0x9e, 0xcb, 0xb9, 0xd6, 0xc6, - 0x8b, 0x35, 0x48, 0xdf, 0x15, 0x97, 0x3c, 0xeb, 0xa2, 0x67, 0x94, 0x7e, - 0x52, 0x4d, 0x22, 0x94, 0x23, 0x4a, 0x3d, 0x7f, 0x69, 0x7c, 0x4a, 0x8d, - 0x40, 0xb5, 0xe8, 0x5b, 0x42, 0x04, 0xca, 0x48, 0xa2, 0x1c, 0x55, 0x75, - 0x88, 0xd1, 0x70, 0x0c, 0xd3, 0x95, 0x2c, 0xa9, 0x00, 0xa9, 0x24, 0xcd, - 0xe4, 0xd3, 0xc5, 0x4c, 0x2e, 0x96, 0xe3, 0xa5, 0xb9, 0x71, 0xa7, 0xf6, - 0x20, 0xc3, 0xa8, 0x9a, 0x6c, 0x81, 0xa8, 0x79, 0x81, 0x55, 0x7d, 0xcd, - 0x91, 0x0c, 0x26, 0x1f, 0xdd, 0x45, 0x18, 0x05, 0xec, 0x32, 0xaa, 0xd1, - 0x37, 0x6a, 0x01, 0x9b, 0x56, 0x3b, 0x4a, 0x1a, 0x46, 0xe7, 0x0d, 0x31, - 0x0a, 0x8d, 0x65, 0x1c, 0x96, 0x45, 0x5e, 0xf5, 0xaa, 0x27, 0x0b, 0xf0, - 0x91, 0x06, 0x78, 0x26, 0x79, 0xda, 0x3d, 0xd6, 0x3a, 0x49, 0xa9, 0xe1, - 0x2d, 0x86, 0xe0, 0xbd, 0xbb, 0x4e, 0xa9, 0x12, 0xf4, 0x4c, 0xe7, 0x24, - 0xc3, 0xc5, 0x85, 0x87, 0x4c, 0x99, 0x8d, 0xad, 0x5a, 0xdc, 0xc8, 0x3f, - 0x82, 0x5d, 0x1f, 0x62, 0x5d, 0xf3, 0xfd, 0x4c, 0x6c, 0x83, 0xc4, 0xe2, - 0xd4, 0x74, 0x03, 0x77, 0x60, 0x94, 0x27, 0x4b, 0x64, 0x34, 0x65, 0x8a, - 0x9a, 0xaf, 0xeb, 0x66, 0xd1, 0x6f, 0x5e, 0xfe, 0x15, 0x27, 0x7b, 0xe4, - 0xa8, 0x40, 0xee, 0x85, 0x3c, 0xcf, 0xb5, 0xdb, 0x9a, 0x1c, 0xb2, 0xc2, - 0x5e, 0x11, 0x23, 0xbd, 0xe0, 0xde, 0x78, 0x22, 0xeb, 0x24, 0xa7, 0xd6, - 0x99, 0xbb, 0x18, 0x2f, 0xed, 0x09, 0x2a, 0x01, 0xe8, 0xed, 0x29, 0x24, - 0xe0, 0xc3, 0x3d, 0x87, 0x74, 0xde, 0x5b, 0x80, 0xf1, 0x37, 0x81, 0x84, - 0x70, 0xa9, 0xd1, 0xb6, 0x0d, 0x52, 0x45, 0xfe, 0x6a, 0xe2, 0xde, 0x2f, - 0xa6, 0xe8, 0x24, 0x70, 0x92, 0x59, 0x2f, 0x9d, 0x8c, 0x30, 0xed, 0x7c, - 0x2f, 0x51, 0x61, 0x5f, 0x77, 0xea, 0x3e, 0x3a, 0x12, 0x02, 0x44, 0x66, - 0x95, 0xd3, 0xca, 0x50, 0x4b, 0xc7, 0x1d, 0xad, 0xc7, 0x93, 0x41, 0xcb, - 0x3c, 0xef, 0x8a, 0x60, 0x22, 0x85, 0x2b, 0xfb, 0x4e, 0x5b, 0xfa, 0x6f, - 0x62, 0x52, 0xa6, 0x33, 0xcd, 0x13, 0x49, 0x72, 0x3d, 0xb7, 0x8c, 0xc1, - 0xa8, 0x84, 0x2a, 0x8c, 0x48, 0x09, 0x83, 0xdd, 0x84, 0x54, 0x2d, 0x4c, - 0x19, 0x04, 0x9e, 0x87, 0x10, 0x88, 0x0b, 0xea, 0x9d, 0xb1, 0xa4, 0xdd, - 0x19, 0x1c, 0x0d, 0xc1, 0x30, 0xc3, 0x09, 0x09, 0x3b, 0x59, 0x3a, 0x72, - 0xe7, 0x76, 0x35, 0x86, 0xf5, 0x7d, 0x61, 0xb4, 0x4c, 0x5a, 0x20, 0x88, - 0x24, 0x1a, 0x38, 0x6d, 0xd7, 0x37, 0xb9, 0x6a, 0x89, 0xbe, 0x54, 0x57, - 0xc1, 0x8d, 0x22, 0x95, 0xa4, 0xe2, 0x28, 0x85, 0x44, 0x20, 0xfb, 0xd0, - 0xed, 0x47, 0xf0, 0x77, 0xa1, 0xb2, 0xa0, 0xe6, 0x58, 0x39, 0x4f, 0x26, - 0x25, 0x9b, 0xfe, 0x55, 0x85, 0x3f, 0xb7, 0xaa, 0xa1, 0x54, 0x14, 0x2f, - 0xa6, 0xc4, 0x2d, 0x3f, 0xec, 0xce, 0x86, 0x65, 0xd2, 0xb9, 0x0f, 0x8f, - 0x17, 0x9c, 0x80, 0x58, 0x84, 0x13, 0x67, 0xb4, 0x65, 0x77, 0xd0, 0x48, - 0x7f, 0xa7, 0x04, 0x94, 0x1c, 0x6a, 0x10, 0xbf, 0xea, 0xc3, 0xa6, 0xff, - 0x69, 0x6f, 0xe6, 0xe3, 0x24, 0x03, 0x32, 0xd1, 0x5d, 0x48, 0xc3, 0xd7, - 0x67, 0xf1, 0x21, 0xcb, 0x48, 0xa0, 0xb6, 0x2a, 0xf9, 0x52, 0x3c, 0x2d, - 0xb0, 0xf4, 0x9e, 0x2f, 0x81, 0xba, 0xba, 0x2b, 0x2e, 0x8a, 0x9c, 0x2b, - 0xe4, 0x68, 0xec, 0x28, 0x3b, 0x4e, 0x69, 0xac, 0xb1, 0xe8, 0xd5, 0x29, - 0xea, 0x85, 0xd9, 0x48, 0xd2, 0x6d, 0x3b, 0xd8, 0x0a, 0x1d, 0xb4, 0x46, - 0x1f, 0xbe, 0x54, 0xd1, 0x1a, 0xb5, 0xd3, 0x90, 0x12, 0xd7, 0xd6, 0xb8, - 0x16, 0x5d, 0x24, 0x22, 0x0f, 0xb8, 0x4e, 0x24, 0xbd, 0x51, 0x7a, 0x10, - 0x02, 0x19, 0x71, 0x0a, 0x61, 0x0d, 0x77, 0xf0, 0x01, 0x36, 0xfa, 0x9b, - 0x24, 0x8a, 0x40, 0xd8, 0x42, 0x1b, 0xa5, 0xd8, 0x46, 0x0e, 0xa8, 0xbd, - 0xe6, 0x09, 0xca, 0xc2, 0xa2, 0x6e, 0x23, 0x0c, 0xb7, 0xf6, 0x08, 0xe4, - 0x7d, 0x88, 0xbd, 0x9c, 0xbe, 0x05, 0xe6, 0x78, 0x82, 0x20, 0x3b, 0x35, - 0xd8, 0x97, 0xab, 0xd3, 0x05, 0x6b, 0x48, 0x11, 0x5d, 0xfa, 0x70, 0x8a, - 0x23, 0xbd, 0x69, 0x2d, 0x25, 0xd6, 0x32, 0x4c, 0xb9, 0x73, 0xb5, 0x40, - 0x6e, 0x1b, 0x16, 0xc6, 0x51, 0x6d, 0xb5, 0xed, 0xe3, 0x71, 0x59, 0x6e, - 0x7d, 0x84, 0xd0, 0x61, 0xb9, 0x3c, 0x45, 0xad, 0x1f, 0x97, 0x53, 0x03, - 0x15, 0x12, 0xe9, 0xcc, 0x88, 0x27, 0x9c, 0x64, 0xe1, 0x9a, 0x25, 0xf1, - 0xb8, 0x24, 0xab, 0x6e, 0x3f, 0xec, 0x72, 0x09, 0xa5, 0x97, 0x93, 0xf3, - 0x66, 0x11, 0x8e, 0xe5, 0x3e, 0xa8, 0xc3, 0x26, 0x34, 0x5f, 0x8a, 0x2b, - 0xd2, 0x94, 0xa1, 0x30, 0x0b, 0x66, 0xca, 0x49, 0xa8, 0x8d, 0x12, 0xcc, - 0x63, 0x9f, 0xfc, 0xe5, 0x76, 0xe7, 0xe8, 0x6c, 0x7f, 0xe7, 0xc3, 0xe2, - 0xee, 0xc8, 0x9c, 0x6c, 0xa0, 0xd5, 0x97, 0x37, 0xda, 0x6c, 0xe2, 0x16, - 0xa8, 0x93, 0x34, 0x65, 0xea, 0xb7, 0x07, 0xa3, 0x73, 0xdc, 0xd6, 0xa6, - 0x13, 0x66, 0xac, 0x28, 0x30, 0x9e, 0x55, 0x41, 0x1e, 0x35, 0x08, 0x5e, - 0xfc, 0xbe, 0x8d, 0xde, 0x64, 0x9d, 0xb3, 0x2d, 0xca, 0xa1, 0x6e, 0xc0, - 0xda, 0x5d, 0x62, 0x09, 0x0a, 0xd4, 0x9d, 0x74, 0x3b, 0xaa, 0x30, 0x4c, - 0x06, 0xef, 0x49, 0x00, 0x20, 0xeb, 0xf1, 0xbd, 0x2e, 0x7b, 0x95, 0xb5, - 0xc2, 0xd5, 0x2d, 0x4a, 0xc9, 0xdd, 0xf1, 0xff, 0x20, 0xdd, 0x0e, 0xf4, - 0xa7, 0x42, 0x63, 0x0c, 0x61, 0x4b, 0x04, 0xff, 0x1c, 0xfd, 0xa8, 0x42, - 0x4c, 0x30, 0xf9, 0xf4, 0x98, 0xa2, 0x98, 0x06, 0xa7, 0xc5, 0x91, 0xfe, - 0x57, 0xe8, 0xef, 0x08, 0x02, 0x28, 0x1f, 0x47, 0x45, 0xb7, 0xdb, 0xde, - 0xc9, 0x31, 0x61, 0x5b, 0xb1, 0x13, 0xea, 0xa9, 0xde, 0xc8, 0x98, 0x85, - 0x7d, 0x0c, 0x2d, 0xad, 0xe7, 0xe2, 0xc6, 0xac, 0x25, 0xb4, 0x40, 0x80, - 0xac, 0xf1, 0xcc, 0xd7, 0x3c, 0x59, 0x69, 0xf6, 0x0e, 0x97, 0x6d, 0x5c, - 0x56, 0x76, 0x37, 0x56, 0x4c, 0x65, 0xc5, 0xdc, 0x58, 0x52, 0x94, 0xe4, - 0xc1, 0x07, 0x71, 0x2e, 0x84, 0x88, 0x20, 0x07, 0xf0, 0x3a, 0xea, 0x1c, - 0x43, 0xc8, 0x9d, 0x40, 0x9c, 0x0f, 0xa2, 0x5b, 0xa6, 0x8d, 0xf3, 0xcf, - 0x40, 0x48, 0x90, 0x7d, 0x9d, 0xd0, 0x38, 0x49, 0xcc, 0xfd, 0x0a, 0x9b, - 0x40, 0xc5, 0xc3, 0xb3, 0x6d, 0x62, 0x9c, 0x82, 0x55, 0xef, 0x71, 0xa2, - 0x9e, 0x5d, 0xd7, 0x63, 0xa7, 0xcc, 0x42, 0x7d, 0x6e, 0xff, 0x91, 0x07, - 0x7a, 0x32, 0x40, 0x16, 0x1f, 0x6d, 0x8b, 0x06, 0xe5, 0x20, 0xe1, 0xac, - 0x6f, 0x05, 0xf6, 0xe9, 0x75, 0x55, 0x2a, 0xf9, 0xc8, 0x28, 0x02, 0xcc, - 0x41, 0x50, 0x39, 0xb5, 0x1e, 0x94, 0x30, 0x57, 0xbc, 0x0a, 0xd2, 0x9d, - 0xb3, 0xbc, 0xe6, 0x74, 0xf3, 0xa0, 0x0c, 0xf3, 0xcc, 0x60, 0x06, 0xd4, - 0x58, 0xa4, 0x49, 0x9b, 0xf2, 0x0e, 0x78, 0x45, 0xc3, 0x45, 0x33, 0x6c, - 0x31, 0x55, 0x24, 0x48, 0xce, 0xc4, 0x50, 0xb8, 0xcd, 0x85, 0x5b, 0xb7, - 0x6b, 0x97, 0x0c, 0x58, 0x27, 0x13, 0x05, 0x94, 0x14, 0x00, 0xbb, 0x49, - 0x51, 0x34, 0x83, 0x55, 0x91, 0xf2, 0xc6, 0xd8, 0x33, 0x9a, 0x9d, 0x61, - 0x56, 0xef, 0x68, 0x6e, 0xda, 0x0b, 0xc6, 0x87, 0xad, 0x51, 0x16, 0xe6, - 0x26, 0x31, 0x3d, 0x60, 0x2f, 0x46, 0xff, 0x12, 0x38, 0xf4, 0xba, 0x21, - 0xe2, 0x76, 0xce, 0x30, 0x93, 0xdc, 0x8c, 0x4e, 0xf0, 0xab, 0x5b, 0x41, - 0x8b, 0x30, 0x2a, 0x32, 0xa0, 0x12, 0x61, 0x03, 0x04, 0xf1, 0xde, 0x82, - 0x6f, 0x29, 0x34, 0x4f, 0xc1, 0xe5, 0xa8, 0x4d, 0x45, 0xdc, 0xb4, 0x2d, - 0x88, 0x98, 0x14, 0x41, 0x8f, 0x9b, 0xbb, 0xad, 0x30, 0xda, 0xc1, 0x50, - 0x99, 0x4a, 0x69, 0x41, 0x43, 0x50, 0x22, 0x3a, 0x9a, 0x66, 0x83, 0xa8, - 0x88, 0x5d, 0xc5, 0x5b, 0x8f, 0x04, 0x95, 0xa8, 0xfd, 0xf7, 0xd1, 0x2a, - 0xc1, 0xb0, 0x2a, 0xbf, 0xa5, 0x67, 0xf8, 0x82, 0xc0, 0x98, 0x12, 0x48, - 0x20, 0x7c, 0xe2, 0xeb, 0xa0, 0x45, 0x0f, 0xc3, 0x48, 0x20, 0xc9, 0xae, - 0x6c, 0x4e, 0x74, 0x26, 0x3f, 0x6d, 0xa6, 0xce, 0x0c, 0xfc, 0x95, 0xa7, - 0x66, 0xd4, 0xa1, 0x9f, 0x1e, 0x40, 0xa7, 0x37, 0x09, 0x4b, 0xc1, 0xe6, - 0x40, 0xfe, 0xfd, 0x45, 0x69, 0xd1, 0x30, 0x20, 0x54, 0x74, 0x57, 0xfa, - 0x30, 0xb5, 0x7e, 0x49, 0xa9, 0x04, 0x2c, 0x9b, 0x70, 0xbe, 0x49, 0x51, - 0x1f, 0xa8, 0xfe, 0xd8, 0x6c, 0x1d, 0xdd, 0x77, 0x55, 0x16, 0xf4, 0x3c, - 0xfd, 0xcd, 0x3e, 0xf2, 0x41, 0x8c, 0xe5, 0x73, 0xdd, 0x42, 0xa9, 0x9f, - 0x48, 0x0a, 0xa3, 0x86, 0xcf, 0x06, 0x65, 0xae, 0x6d, 0xb6, 0xec, 0x14, - 0xe3, 0x16, 0x10, 0xbb, 0xfa, 0x09, 0x5b, 0xe7, 0x6d, 0xe3, 0x2f, 0x3b, - 0xdd, 0x05, 0x2a, 0xee, 0x5b, 0x0c, 0x85, 0xa6, 0x3e, 0x44, 0x59, 0xa0, - 0x44, 0xdb, 0xb0, 0xe5, 0x49, 0x0a, 0xee, 0x48, 0xaa, 0x78, 0x35, 0xb3, - 0x1c, 0xd9, 0x40, 0xeb, 0xb5, 0x52, 0x70, 0x7b, 0x65, 0x59, 0x0d, 0x74, - 0x60, 0x21, 0x39, 0xb9, 0xf4, 0x48, 0x0a, 0x6a, 0x56, 0x32, 0x3b, 0xae, - 0x2e, 0xaa, 0x61, 0xf7, 0xe0, 0xb2, 0x91, 0x71, 0x0d, 0xd1, 0x7e, 0x12, - 0x4a, 0xf9, 0x96, 0x5b, 0x3a, 0x30, 0x48, 0x66, 0x4d, 0x0d, 0x63, 0xa0, - 0x78, 0x4e, 0x69, 0x96, 0xf0, 0x7b, 0x21, 0x2c, 0xf3, 0x4f, 0xcb, 0x55, - 0x3a, 0x4e, 0x5c, 0xd1, 0x4e, 0x6f, 0x37, 0xcd, 0xab, 0x7a, 0xbe, 0xcf, - 0xc6, 0x71, 0x6a, 0x0b, 0x7f, 0xe8, 0xa8, 0x78, 0x78, 0x7f, 0x1b, 0x34, - 0x98, 0xd6, 0x8f, 0x1b, 0x5d, 0xb7, 0x4b, 0x6a, 0x24, 0x91, 0xca, 0xca, - 0x54, 0xcc, 0xa1, 0xf5, 0x9a, 0x35, 0x5c, 0x6c, 0xdf, 0x7f, 0x7f, 0x3b, - 0xac, 0x2f, 0xa3, 0xf8, 0x42, 0x30, 0x2d, 0xfb, 0xd9, 0xe7, 0xda, 0x22, - 0x9e, 0xd9, 0x70, 0x96, 0x45, 0x24, 0xe3, 0xcb, 0xa8, 0xe8, 0x0a, 0x2a, - 0x2e, 0x5b, 0xbe, 0xc3, 0xb6, 0xc3, 0xdc, 0x54, 0x94, 0xca, 0x8e, 0xd8, - 0x87, 0x39, 0xda, 0xe2, 0x17, 0xeb, 0xbc, 0x48, 0xac, 0x91, 0xe4, 0x53, - 0x3f, 0xac, 0x5d, 0x31, 0xbd, 0x60, 0x6d, 0xff, 0xf6, 0x18, 0xf1, 0x78, - 0x0a, 0x66, 0xf3, 0xf3, 0x46, 0xa6, 0xcf, 0xad, 0x75, 0x0e, 0x6f, 0x82, - 0xf9, 0x15, 0x39, 0x38, 0x3b, 0x24, 0x81, 0x31, 0x30, 0xf7, 0x82, 0x19, - 0xf1, 0xe8, 0x74, 0x2e, 0x03, 0x23, 0xbc, 0x53, 0x3b, 0x41, 0x39, 0xa7, - 0xc7, 0xf0, 0x80, 0x7b, 0xc1, 0x6b, 0xef, 0xa2, 0x5f, 0xdf, 0xa3, 0x83, - 0x74, 0x72, 0xe9, 0x6a, 0xe6, 0xa9, 0x96, 0x9a, 0xa1, 0xb3, 0xb6, 0x9a, - 0xf4, 0x5d, 0x58, 0x86, 0xc8, 0x02, 0xc9, 0x62, 0xca, 0xcf, 0xbe, 0xe9, - 0x9f, 0x3c, 0xc3, 0xb0, 0x64, 0x26, 0xed, 0x3f, 0x32, 0x52, 0x22, 0x4d, - 0x01, 0xe6, 0x09, 0x4a, 0xe8, 0xa2, 0xec, 0x68, 0x10, 0x33, 0x6b, 0x53, - 0x4f, 0xa3, 0xc8, 0x54, 0x68, 0x8c, 0xa3, 0x60, 0xac, 0x0b, 0x50, 0xf6, - 0x53, 0xc1, 0x45, 0x0f, 0x33, 0x95, 0x53, 0x0a, 0x15, 0x10, 0x67, 0xf8, - 0x9c, 0x61, 0x64, 0xb8, 0x93, 0x1b, 0x8e, 0x19, 0xc0, 0x1e, 0x61, 0xff, - 0x8a, 0xd5, 0xcb, 0xcb, 0x71, 0x34, 0x76, 0x4a, 0xbf, 0x46, 0x58, 0x17, - 0x74, 0x76, 0xad, 0xde, 0xee, 0x8b, 0x5a, 0xbc, 0xd2, 0xdb, 0x18, 0x09, - 0x18, 0xcd, 0x01, 0xf1, 0xa9, 0xba, 0xb9, 0x92, 0x92, 0xe2, 0x99, 0x14, - 0x5b, 0xdb, 0x0d, 0xc4, 0x9a, 0xc9, 0x41, 0xcb, 0x13, 0xdf, 0x73, 0x7b, - 0xcb, 0xa9, 0x19, 0x59, 0x49, 0x1f, 0x4e, 0x14, 0xfe, 0x92, 0x95, 0x2a, - 0x5f, 0x35, 0x3f, 0x63, 0xc1, 0xe6, 0xd0, 0xfb, 0xcd, 0x68, 0x11, 0x2d, - 0xcf, 0x39, 0xea, 0x20, 0xcb, 0x2a, 0x9a, 0x4f, 0xfa, 0x35, 0xb6, 0x55, - 0x18, 0x7c, 0xe7, 0x34, 0xf2, 0x1c, 0x62, 0x54, 0x29, 0x2e, 0xa3, 0xf2, - 0xda, 0xd4, 0xae, 0xc3, 0x77, 0x99, 0x5e, 0xeb, 0x5e, 0x29, 0x1c, 0xed, - 0x63, 0x05, 0x73, 0x40, 0x1f, 0x65, 0xe2, 0xba, 0x9b, 0x06, 0xf2, 0xd8, - 0xb9, 0x30, 0xdd, 0x31, 0x37, 0xbf, 0xf1, 0x1c, 0x7f, 0xbc, 0x56, 0x2b, - 0xfd, 0x6e, 0xeb, 0x94, 0xcb, 0x44, 0x52, 0x7b, 0xa0, 0x6c, 0x3a, 0x69, - 0xe9, 0xef, 0x3c, 0x81, 0xb7, 0x4c, 0x16, 0xf4, 0x7b, 0x48, 0xdb, 0xbc, - 0xc0, 0x79, 0x64, 0x67, 0x22, 0xe3, 0x62, 0x0d, 0xdd, 0xea, 0xdc, 0x61, - 0x17, 0xe8, 0x20, 0x45, 0xe2, 0x1a, 0xa8, 0x42, 0xf9, 0xcd, 0x38, 0x74, - 0xb0, 0xe2, 0x50, 0x5e, 0x59, 0x70, 0x9e, 0x73, 0x7a, 0x55, 0xd8, 0x57, - 0xa3, 0x69, 0x25, 0xe7, 0x66, 0x2e, 0x12, 0xcf, 0x1f, 0xcd, 0x3a, 0x5f, - 0x7d, 0xcd, 0x4d, 0xa4, 0xd2, 0xb4, 0x12, 0x71, 0xf2, 0x73, 0xe7, 0x8f, - 0x24, 0x3f, 0x52, 0xa7, 0xe9, 0xb8, 0x55, 0x45, 0x13, 0x0f, 0x03, 0x8e, - 0x1a, 0xfa, 0xaa, 0x1e, 0xa8, 0xe5, 0x76, 0x5f, 0x91, 0x6a, 0xa8, 0x36, - 0xa7, 0xc6, 0xa9, 0xa3, 0x5d, 0x94, 0xcf, 0xb8, 0x9b, 0x31, 0x14, 0x33, - 0x00, 0x9f, 0x09, 0xba, 0x0f, 0x54, 0xd8, 0x11, 0xbb, 0xa5, 0xb2, 0x2c, - 0x14, 0xdb, 0x04, 0x51, 0x97, 0xf5, 0x45, 0x4b, 0x88, 0x2f, 0xb4, 0xaa, - 0xe7, 0xf5, 0xa9, 0x67, 0x3c, 0xe4, 0x67, 0xa8, 0x31, 0x57, 0xdc, 0x18, - 0x6f, 0x80, 0x55, 0xff, 0x4d, 0x08, 0xa6, 0x6f, 0x14, 0xad, 0x89, 0x76, - 0x33, 0x76, 0x28, 0x68, 0x3f, 0xeb, 0xd5, 0x13, 0x47, 0xb2, 0xa7, 0x81, - 0x00, 0x6b, 0x5d, 0x3c, 0x82, 0xf6, 0x54, 0x82, 0xda, 0xca, 0x12, 0x0a, - 0x67, 0x85, 0xe6, 0x93, 0xea, 0xb5, 0x6f, 0x4b, 0xf6, 0x56, 0xed, 0xa0, - 0xfa, 0x30, 0xcb, 0xd9, 0xbb, 0x6e, 0x28, 0xb5, 0x7c, 0xcc, 0x1f, 0xe1, - 0x8b, 0x89, 0x83, 0x88, 0xae, 0x13, 0xfd, 0x7d, 0x02, 0xee, 0x39, 0xf6, - 0x08, 0xf6, 0x6b, 0x80, 0x5c, 0x15, 0xd8, 0x04, 0xfc, 0x29, 0xba, 0xf2, - 0x3e, 0xde, 0xb6, 0xe7, 0x06, 0xca, 0x38, 0x97, 0xae, 0x3a, 0x60, 0xaa, - 0x56, 0xae, 0x2a, 0x10, 0x44, 0xf0, 0x1a, 0x94, 0xad, 0x7c, 0x96, 0xdb, - 0x48, 0xca, 0xb7, 0x11, 0x6e, 0x64, 0xd6, 0x7c, 0x16, 0x09, 0x1a, 0x64, - 0xe2, 0x77, 0xa1, 0x46, 0x45, 0xc4, 0xec, 0x27, 0x13, 0x82, 0x10, 0xfd, - 0x54, 0xec, 0xb7, 0x4b, 0x35, 0x07, 0x8b, 0x00, 0x25, 0x8a, 0x42, 0xb7, - 0x9c, 0x45, 0x63, 0xf9, 0xa7, 0x30, 0xee, 0xa2, 0x99, 0xf0, 0xc8, 0xd4, - 0x34, 0x87, 0x39, 0x4d, 0x3f, 0x74, 0x22, 0x39, 0x03, 0x7c, 0xfb, 0x8d, - 0xf2, 0xc5, 0x43, 0x74, 0x22, 0x14, 0x8e, 0x39, 0xa4, 0xbe, 0x5e, 0x8f, - 0x33, 0x61, 0x45, 0x33, 0x50, 0xc4, 0xfb, 0x40, 0xa8, 0x41, 0xa4, 0x47, - 0x7f, 0x3b, 0x84, 0x3e, 0x88, 0x3c, 0xb1, 0x20, 0x0d, 0x3e, 0x21, 0x1b, - 0x97, 0x15, 0xce, 0xe1, 0xca, 0xee, 0x93, 0xa7, 0xb4, 0x62, 0x4f, 0x4e, - 0x90, 0xcb, 0x10, 0x2e, 0xa5, 0x1b, 0xbd, 0x17, 0x9e, 0x26, 0x29, 0xa7, - 0x01, 0x97, 0x4b, 0x05, 0x17, 0xa8, 0x75, 0xd0, 0xd9, 0x3d, 0x4b, 0x17, - 0x8c, 0x35, 0x49, 0x32, 0xb5, 0xbf, 0x4e, 0xbd, 0x71, 0x5b, 0xc6, 0x6a, - 0x14, 0x80, 0x8c, 0xed, 0x65, 0x3b, 0x4f, 0x28, 0x40, 0xed, 0x4a, 0x51, - 0x38, 0x94, 0xfe, 0xb8, 0x19, 0x99, 0xb1, 0x89, 0xe3, 0x72, 0x81, 0x77, - 0x48, 0x22, 0xc8, 0xfb, 0x0e, 0x02, 0xd2, 0x76, 0x42, 0x6d, 0xa6, 0x7c, - 0x13, 0xfe, 0x5e, 0x4a, 0x6a, 0x8d, 0x15, 0xda, 0x2b, 0xa1, 0x60, 0x84, - 0x79, 0x24, 0x2a, 0xc1, 0x81, 0x59, 0xb4, 0x5b, 0xd7, 0x83, 0xed, 0x03, - 0x90, 0x98, 0xd0, 0xed, 0xda, 0x76, 0x94, 0xa4, 0x96, 0xd1, 0xda, 0xc3, - 0xf1, 0xb4, 0x8a, 0xa4, 0x77, 0xc3, 0x7d, 0xb8, 0x9a, 0xe3, 0x27, 0x4b, - 0x05, 0x65, 0x36, 0x10, 0x55, 0xeb, 0x21, 0x5e, 0x62, 0x77, 0x49, 0x29, - 0x59, 0x9e, 0x3c, 0xdb, 0x20, 0x4c, 0xb6, 0xc6, 0xc1, 0xbd, 0x7c, 0xe0, - 0x21, 0x39, 0x66, 0x37, 0x88, 0x3a, 0x9e, 0x58, 0xff, 0x3d, 0xd8, 0xe9, - 0x59, 0xcf, 0x75, 0x9e, 0xb8, 0x08, 0xe5, 0xee, 0x21, 0x21, 0xe8, 0x39, - 0x6c, 0x11, 0x4c, 0xc7, 0x89, 0xd6, 0xf8, 0x1c, 0xac, 0xe5, 0x42, 0xc2, - 0x3d, 0x3f, 0x61, 0x15, 0x95, 0xba, 0xb9, 0x42, 0x89, 0xef, 0xa7, 0xe8, - 0xee, 0x21, 0x85, 0xbe, 0xb0, 0x42, 0xab, 0x03, 0x25, 0x18, 0x03, 0xf5, - 0x81, 0xcd, 0xa7, 0xad, 0xd7, 0x11, 0xa3, 0x6d, 0xb4, 0xd7, 0xc5, 0xfa, - 0xc7, 0xe2, 0xf9, 0x55, 0x3a, 0xb1, 0xe3, 0x26, 0x43, 0x1e, 0x5a, 0x26, - 0x03, 0xad, 0x9b, 0x7d, 0x59, 0x90, 0xdd, 0x28, 0xdb, 0x77, 0x3a, 0x38, - 0x19, 0xef, 0x29, 0xb7, 0xf8, 0xcb, 0x1e, 0x76, 0xb0, 0xc9, 0x4a, 0x84, - 0x17, 0xb5, 0xa5, 0x73, 0x59, 0xfd, 0x53, 0x5a, 0x50, 0x99, 0x13, 0x40, - 0x2f, 0x90, 0x47, 0x77, 0x21, 0x97, 0x11, 0x17, 0xb8, 0x57, 0x27, 0x9b, - 0xb5, 0x02, 0x96, 0x69, 0x03, 0x5b, 0x2f, 0xc9, 0x43, 0x1e, 0xf2, 0x9d, - 0xac, 0xdd, 0xab, 0xf1, 0x49, 0x6f, 0xa9, 0xcf, 0x18, 0xcd, 0xcf, 0x50, - 0xdf, 0x5f, 0x85, 0xb9, 0x11, 0x8e, 0xa6, 0x3b, 0x0b, 0xcb, 0x65, 0x04, - 0x9e, 0x88, 0x76, 0xb6, 0x66, 0x3c, 0xa8, 0x5a, 0xf8, 0x39, 0x00, 0xb1, - 0xc3, 0x57, 0x29, 0xb0, 0x2a, 0x3a, 0xb4, 0x15, 0xa7, 0x52, 0x53, 0x41, - 0x8a, 0xdc, 0x93, 0xc7, 0x6b, 0x05, 0xd8, 0x45, 0xfa, 0x21, 0xd4, 0xb2, - 0xb0, 0x46, 0xb0, 0xd8, 0x52, 0x2c, 0x3c, 0x84, 0x7c, 0x06, 0x31, 0x0e, - 0xf0, 0xec, 0x75, 0x21, 0x50, 0xfd, 0x54, 0xbc, 0x7a, 0x3b, 0xdf, 0xea, - 0x54, 0x58, 0xc7, 0x05, 0x48, 0x49, 0x39, 0xb4, 0xc0, 0x60, 0x5b, 0xde, - 0x5d, 0x93, 0x51, 0x5c, 0xb4, 0xb3, 0x59, 0x0e, 0xf8, 0xb2, 0xdd, 0xf0, - 0xab, 0xc4, 0x7c, 0x7d, 0x0e, 0xda, 0x63, 0xde, 0xd8, 0xe1, 0xd5, 0x69, - 0x51, 0x87, 0x79, 0x93, 0x2d, 0x08, 0xf8, 0x74, 0x96, 0xdb, 0x35, 0x15, - 0xf9, 0x24, 0x2e, 0xb3, 0x99, 0x45, 0x9b, 0xeb, 0x60, 0x66, 0x6a, 0x97, - 0x34, 0x4f, 0x14, 0x23, 0x9d, 0x29, 0xca, 0x99, 0xf4, 0x0c, 0x33, 0x27, - 0x1d, 0x12, 0xfb, 0x3b, 0xfe, 0xa1, 0xc1, 0x59, 0x45, 0x59, 0x84, 0xe5, - 0x7f, 0x0e, 0xc9, 0x5b, 0x91, 0x5e, 0x5b, 0x6c, 0xa7, 0xbe, 0x58, 0x2b, - 0xb9, 0x3d, 0x2a, 0x68, 0x7f, 0xa1, 0xb3, 0x8b, 0xad, 0x21, 0xf0, 0x72, - 0x48, 0xb8, 0x6e, 0x23, 0xdb, 0x44, 0x31, 0x8a, 0xea, 0x62, 0xfc, 0x4e, - 0x75, 0xb8, 0x4b, 0x26, 0x66, 0xab, 0x42, 0x93, 0x31, 0x39, 0xf8, 0x51, - 0x19, 0x20, 0x4b, 0xc9, 0x27, 0x02, 0xf5, 0xd3, 0x86, 0x9a, 0x43, 0xaa, - 0xc0, 0xb0, 0xd2, 0xa7, 0xad, 0xf0, 0x50, 0x9a, 0xee, 0x97, 0x3f, 0x45, - 0x92, 0x44, 0x16, 0x10, 0xb4, 0x78, 0xc0, 0xc6, 0x1e, 0xb6, 0x0f, 0xb8, - 0x1a, 0x3c, 0xa9, 0xda, 0x29, 0xf7, 0xde, 0xef, 0x1e, 0x04, 0xde, 0x7e, - 0x1a, 0x31, 0x41, 0x39, 0x78, 0x98, 0x51, 0x07, 0x7f, 0x28, 0x49, 0x69, - 0xef, 0x83, 0xff, 0x3c, 0xca, 0x24, 0x90, 0xb5, 0xfd, 0xd8, 0x30, 0xb5, - 0xaf, 0xfe, 0x7f, 0xe7, 0xd6, 0x8e, 0x3d, 0x67, 0x78, 0x3f, 0x15, 0xc9, - 0x25, 0x7f, 0xba, 0xc0, 0x57, 0x8f, 0x29, 0x4a, 0x4a, 0x96, 0x97, 0x6d, - 0x6d, 0x3b, 0x58, 0x40, 0x1f, 0x16, 0xb5, 0xda, 0x2c, 0xb8, 0x5d, 0x18, - 0x61, 0x3a, 0xf1, 0xd7, 0x84, 0x6a, 0xc1, 0x6a, 0x1a, 0x98, 0x40, 0xe4, - 0x52, 0xbf, 0x12, 0x35, 0xb3, 0xa5, 0x48, 0xcc, 0xda, 0x67, 0x93, 0x64, - 0x68, 0x73, 0xbe, 0x3e, 0x83, 0x9e, 0xea, 0x93, 0x88, 0x68, 0xe1, 0x55, - 0x83, 0xaa, 0x91, 0xd9, 0x29, 0x70, 0x9d, 0x5b, 0x60, 0x56, 0x5f, 0x85, - 0xeb, 0x32, 0x3f, 0x03, 0xab, 0x48, 0x92, 0x8c, 0x19, 0x7a, 0xeb, 0x22, - 0x6b, 0xc6, 0x2e, 0x1e, 0xd2, 0x18, 0x13, 0x20, 0xfb, 0x65, 0x09, 0x4b, - 0xf2, 0xa0, 0xae, 0x56, 0xa0, 0x0c, 0xf8, 0x91, 0xde, 0xe1, 0xae, 0x5a, - 0x7e, 0xdd, 0x13, 0x9d, 0x12, 0x65, 0x8a, 0xb9, 0x91, 0xbb, 0x29, 0x50, - 0xc8, 0xad, 0x8f, 0x8d, 0x1c, 0x55, 0x48, 0x7e, 0x44, 0x3f, 0xb0, 0x34, - 0x75, 0x01, 0x30, 0x8a, 0x5d, 0x74, 0x08, 0x62, 0xfd, 0x13, 0x3e, 0x1f, - 0x9b, 0x86, 0x33, 0xd2, 0x7d, 0x58, 0x2a, 0x6e, 0x4b, 0x41, 0x81, 0x5a, - 0xad, 0xd7, 0x08, 0x72, 0xe9, 0x17, 0x3f, 0x22, 0x62, 0x07, 0x15, 0x19, - 0x3f, 0x19, 0x58, 0x33, 0x17, 0x2c, 0xf3, 0x9a, 0x0e, 0xbf, 0x5c, 0xc5, - 0x2e, 0x72, 0xd6, 0x7f, 0x74, 0x00, 0x0a, 0xe3, 0x79, 0x0f, 0x8a, 0x10, - 0xb1, 0x85, 0x3b, 0x39, 0x11, 0x92, 0x2e, 0xc1, 0xff, 0xd0, 0x78, 0x47, - 0x1a, 0xa6, 0x85, 0xb9, 0xbd, 0x53, 0xeb, 0x20, 0x28, 0x02, 0x02, 0x81, - 0xf0, 0x74, 0x9a, 0xb0, 0x92, 0x47, 0xc7, 0x39, 0xc6, 0x65, 0x57, 0xb5, - 0x87, 0xe7, 0x67, 0x44, 0xd9, 0x03, 0x92, 0xc6, 0xbe, 0x5d, 0xdf, 0xfd, - 0xcc, 0xa2, 0x9f, 0x36, 0xbf, 0x6c, 0x1c, 0x79, 0xd2, 0x38, 0x5c, 0xf5, - 0x66, 0x55, 0x4e, 0xc4, 0xdb, 0xe4, 0x0c, 0xd3, 0x92, 0x75, 0xe7, 0xaa, - 0x1c, 0x1c, 0x46, 0x6c, 0x15, 0x67, 0x61, 0x52, 0x9c, 0x61, 0x91, 0x9a, - 0x46, 0xc1, 0x43, 0x30, 0x7c, 0x9a, 0x31, 0xa9, 0x97, 0x0d, 0x6f, 0xde, - 0xdf, 0x76, 0x73, 0xe9, 0x6b, 0xd9, 0xf8, 0xbd, 0x40, 0x51, 0x7d, 0x75, - 0x4b, 0x6e, 0xb2, 0x45, 0x2c, 0x6c, 0xd2, 0xd6, 0xdf, 0x90, 0x61, 0x0f, - 0x1f, 0xbe, 0x49, 0xf6, 0x78, 0xd9, 0x5b, 0xf4, 0x3e, 0x66, 0xff, 0x0a, - 0xe3, 0x43, 0xf0, 0x9a, 0x86, 0x16, 0x52, 0x0c, 0x27, 0xf8, 0x4c, 0x90, - 0x06, 0x32, 0x4d, 0xa6, 0xbb, 0x4a, 0xfc, 0xe2, 0x00, 0x9d, 0xf3, 0x3d, - 0x41, 0x40, 0x64, 0xf2, 0xf6, 0x75, 0xf1, 0xce, 0x3c, 0xa1, 0xa5, 0x9b, - 0xd8, 0xf7, 0xc4, 0x9a, 0x21, 0xca, 0xcb, 0x44, 0x88, 0xfe, 0xd5, 0x54, - 0x60, 0x58, 0x7f, 0x7f, 0x75, 0x01, 0x58, 0x5d, 0x3c, 0x5c, 0x47, 0x08, - 0x0b, 0xd7, 0x4c, 0xbd, 0x61, 0x2a, 0xb4, 0x87, 0xab, 0xdc, 0xeb, 0x3a, - 0x0b, 0xa2, 0xfb, 0x51, 0xa3, 0xc5, 0x0d, 0xec, 0xed, 0x3a, 0x1b, 0xff, - 0x4a, 0x76, 0x4f, 0x43, 0x2c, 0x43, 0x15, 0xa4, 0x31, 0x4c, 0x5b, 0x09, - 0xca, 0xac, 0xb8, 0x41, 0x72, 0x4e, 0xe5, 0x10, 0x45, 0x9f, 0xe7, 0xd6, - 0xe4, 0x8c, 0x7c, 0x88, 0x46, 0xa2, 0x08, 0xe1, 0x24, 0x63, 0xc2, 0xc1, - 0x0b, 0x41, 0x78, 0x73, 0x7f, 0xf8, 0x01, 0x83, 0x84, 0x36, 0x9f, 0x32, - 0x4e, 0x5a, 0xe5, 0xc0, 0x61, 0xe5, 0x85, 0x3a, 0xa0, 0x19, 0xc0, 0x8f, - 0x20, 0x44, 0x84, 0x50, 0x2d, 0xe7, 0xbe, 0x99, 0x62, 0x21, 0x97, 0x75, - 0x97, 0x96, 0x50, 0x9f, 0x68, 0xee, 0x73, 0x52, 0x77, 0x54, 0xa6, 0xea, - 0xdf, 0x36, 0x89, 0x30, 0xad, 0x72, 0xbf, 0xa3, 0x15, 0xd0, 0xdd, 0x86, - 0x2d, 0x8b, 0x65, 0x84, 0x7c, 0x12, 0x85, 0x6c, 0x2f, 0x42, 0x72, 0xb0, - 0xab, 0x3b, 0xf4, 0xa7, 0x06, 0xc2, 0xf2, 0x05, 0xca, 0xa6, 0x4b, 0xe2, - 0xa2, 0x6f, 0x20, 0xe6, 0x8b, 0x8f, 0xb8, 0xbd, 0x2c, 0x82, 0x6c, 0xb2, - 0x1e, 0xbb, 0x2d, 0x77, 0xba, 0xac, 0x3a, 0xc0, 0x87, 0x7e, 0x7b, 0x1f, - 0x4d, 0xff, 0x12, 0xec, 0xb7, 0xf6, 0x03, 0x57, 0x24, 0x02, 0xbb, 0x56, - 0x13, 0xb8, 0x21, 0x76, 0x0f, 0xc5, 0x22, 0x10, 0xf2, 0x1f, 0x8e, 0x4f, - 0xba, 0x46, 0x3b, 0x8d, 0x5b, 0xfb, 0xb8, 0x27, 0x67, 0x09, 0xae, 0x73, - 0x85, 0xc4, 0xf0, 0x56, 0x2d, 0x19, 0x2a, 0xfc, 0x7b, 0x1e, 0x58, 0x29, - 0x16, 0xd1, 0x1a, 0xe0, 0x87, 0x1d, 0xa4, 0x57, 0xe2, 0x2c, 0xe9, 0x28, - 0xad, 0x9c, 0x78, 0x6d, 0x5c, 0xd7, 0x88, 0x8a, 0x58, 0x4c, 0x39, 0xd3, - 0xb3, 0xfe, 0xa3, 0x03, 0xcb, 0x85, 0x20, 0x2e, 0x43, 0xf1, 0x64, 0x99, - 0xb8, 0x2d, 0x64, 0x44, 0x7a, 0x33, 0xe3, 0xbb, 0x47, 0x00, 0x1a, 0xaf, - 0xf3, 0x32, 0x9b, 0x2b, 0xbf, 0xed, 0xf5, 0x42, 0xb2, 0x44, 0x0f, 0x68, - 0xb4, 0xe2, 0x11, 0xfa, 0x32, 0xb4, 0xdb, 0x22, 0x27, 0x3d, 0x30, 0x72, - 0xb7, 0xe8, 0x72, 0xfc, 0x72, 0xcb, 0xad, 0xe9, 0x30, 0xc7, 0xb6, 0x02, - 0x4c, 0x5f, 0x4b, 0x3f, 0xc9, 0x5c, 0x17, 0xb3, 0x8a, 0x3c, 0x0a, 0x23, - 0xfe, 0xf2, 0x1e, 0x89, 0xfc, 0x7d, 0x12, 0xd4, 0x8e, 0x69, 0x13, 0xee, - 0x14, 0x58, 0x9e, 0x76, 0x6f, 0x9b, 0x58, 0x34, 0x6f, 0xe1, 0x67, 0xc7, - 0x1c, 0x1c, 0x0d, 0x4c, 0xc4, 0xd7, 0x88, 0x2d, 0x2f, 0xc9, 0x81, 0x6f, - 0xa2, 0x84, 0xd7, 0xb1, 0xd8, 0x83, 0xee, 0x55, 0x02, 0x8f, 0x1f, 0x66, - 0x7a, 0x9b, 0x42, 0x9c, 0x50, 0x1c, 0x27, 0x68, 0x54, 0x6e, 0xa2, 0x5a, - 0x0e, 0x6e, 0xa4, 0x2c, 0x30, 0x4c, 0x94, 0x3a, 0x9f, 0xa9, 0x41, 0x2f, - 0xe9, 0x2e, 0xad, 0x13, 0xd4, 0x7f, 0xb8, 0xe4, 0x24, 0x7a, 0x94, 0x67, - 0xc0, 0xbe, 0x02, 0x5a, 0xce, 0x48, 0x5e, 0x1b, 0xab, 0x76, 0xcd, 0x0b, - 0x22, 0x39, 0x86, 0x85, 0xfb, 0x22, 0x06, 0xa7, 0x01, 0x80, 0x04, 0x55, - 0x04, 0x0e, 0x4a, 0x90, 0xf4, 0x1c, 0x33, 0x9c, 0xa0, 0xbe, 0x50, 0x81, - 0x5b, 0xf6, 0x7f, 0x2d, 0x31, 0x09, 0xf4, 0x66, 0x52, 0x3c, 0x2e, 0xc4, - 0xdb, 0x8d, 0xdd, 0xe7, 0xac, 0xc8, 0xa9, 0x62, 0x1e, 0x4a, 0x81, 0x87, - 0xc3, 0xb7, 0x39, 0xb9, 0x28, 0x07, 0xe0, 0x61, 0xb6, 0x4d, 0x0b, 0xc4, - 0xa9, 0x67, 0x6c, 0xfb, 0xb1, 0x30, 0x9a, 0x82, 0x30, 0x9d, 0x83, 0xab, - 0xf5, 0x67, 0x22, 0x0a, 0x39, 0x4d, 0x63, 0x6a, 0x51, 0x06, 0x3a, 0xe2, - 0x7b, 0x32, 0x61, 0x0c, 0x64, 0x43, 0xca, 0x34, 0x92, 0x75, 0x9e, 0xe1, - 0x3b, 0x06, 0xc0, 0xd7, 0x88, 0xe5, 0x4f, 0x6f, 0x8e, 0x5b, 0xef, 0xf0, - 0xab, 0x21, 0x66, 0x1b, 0x1e, 0x56, 0x73, 0x24, 0xe1, 0x1f, 0xb0, 0x81, - 0x50, 0x20, 0x59, 0x15, 0xa3, 0x18, 0x86, 0xf0, 0x0c, 0x52, 0x10, 0x5a, - 0x59, 0x94, 0xd9, 0x1c, 0xa3, 0x1a, 0x5e, 0xf5, 0x26, 0x19, 0xf3, 0x1f, - 0xad, 0x5d, 0xe4, 0x01, 0x9e, 0x79, 0x33, 0xbe, 0xe5, 0x4c, 0x53, 0xa7, - 0x71, 0x3b, 0x4b, 0x36, 0xfc, 0xbd, 0xe3, 0x16, 0xdc, 0x07, 0xfc, 0xcf, - 0x49, 0xe8, 0xa5, 0x34, 0xe6, 0x05, 0x86, 0xeb, 0x1c, 0xbc, 0x8c, 0xa8, - 0xfb, 0xde, 0xf0, 0x0c, 0x19, 0x9c, 0xb3, 0xeb, 0xe2, 0x50, 0xb3, 0x18, - 0x07, 0x38, 0x5c, 0xa4, 0x38, 0x5f, 0x49, 0xb5, 0x6e, 0x73, 0x44, 0xcb, - 0xcc, 0xb8, 0x11, 0x41, 0xf8, 0x3e, 0x7b, 0x30, 0xeb, 0x19, 0x2f, 0x46, - 0xc1, 0x44, 0xbb, 0x2a, 0x7b, 0x5e, 0x36, 0xf3, 0x08, 0x92, 0x11, 0x01, - 0xb5, 0x4c, 0x02, 0xb2, 0xf9, 0x4f, 0x9b, 0x02, 0x44, 0x93, 0x19, 0x9b, - 0x37, 0x95, 0x21, 0xb3, 0xd2, 0xfe, 0x1e, 0xb7, 0xb8, 0x16, 0x41, 0xc3, - 0xa1, 0x4f, 0xc7, 0xe1, 0xca, 0x1d, 0xb9, 0x15, 0x2f, 0x44, 0x40, 0xb0, - 0x31, 0xbd, 0x44, 0xa0, 0x4e, 0xa3, 0x68, 0x9d, 0x59, 0x1e, 0x6e, 0xa3, - 0x35, 0x5f, 0xd5, 0x0a, 0x6b, 0xa0, 0x29, 0x6f, 0x95, 0x98, 0x33, 0x3c, - 0x66, 0x18, 0x54, 0x7f, 0xce, 0xcb, 0x6b, 0x2b, 0x1a, 0x21, 0x32, 0x02, - 0x55, 0x35, 0x8f, 0xe7, 0x4b, 0x72, 0x48, 0x74, 0x26, 0x51, 0xf8, 0x84, - 0x90, 0xee, 0x91, 0xdf, 0x54, 0x3e, 0xe1, 0x4a, 0x6c, 0xb0, 0x26, 0x4d, - 0xb9, 0x53, 0x66, 0x69, 0xd0, 0xb9, 0x8c, 0xc7, 0x19, 0x9b, 0x6e, 0x6a, - 0x07, 0x9e, 0x21, 0x15, 0x94, 0xb4, 0x24, 0x00, 0x99, 0xbf, 0xfa, 0x0c, - 0x23, 0xa1, 0x97, 0x43, 0xfe, 0xe9, 0x97, 0x25, 0xfb, 0xd9, 0xf4, 0xfa, - 0x5d, 0x7f, 0xb0, 0x73, 0xa1, 0x60, 0x0c, 0xa0, 0x51, 0x75, 0xdf, 0x2f, - 0xb6, 0x54, 0xc0, 0xca, 0x5d, 0xc8, 0x00, 0x05, 0xf9, 0xd3, 0x1b, 0xab, - 0xe2, 0x8b, 0xa1, 0x41, 0x3e, 0x10, 0x40, 0x69, 0x91, 0xd8, 0x75, 0x23, - 0x94, 0xe9, 0xa0, 0x42, 0xb9, 0x2f, 0x5e, 0xe9, 0x30, 0x22, 0x41, 0x42, - 0x14, 0x2c, 0x4c, 0x4c, 0x99, 0x9a, 0xd9, 0x99, 0x43, 0xba, 0x4a, 0x2e, - 0xdd, 0x66, 0xa8, 0x10, 0x8e, 0x54, 0x66, 0x21, 0x3c, 0xa5, 0xb5, 0x41, - 0x5b, 0x56, 0x6c, 0x9d, 0x6e, 0xec, 0x2d, 0xe0, 0x96, 0x15, 0x70, 0x58, - 0xd6, 0x52, 0xf0, 0xed, 0x2a, 0x37, 0xe0, 0x2e, 0x1f, 0x2e, 0x5e, 0x47, - 0x65, 0xf7, 0x80, 0x48, 0xc9, 0xc6, 0x4d, 0x99, 0x32, 0x37, 0xe2, 0x8d, - 0xac, 0x29, 0x8f, 0x71, 0xf0, 0xb3, 0xe7, 0xd0, 0xce, 0x5f, 0x5c, 0x8f, - 0x57, 0x0a, 0x14, 0xcc, 0x94, 0x35, 0x76, 0xc1, 0x92, 0x40, 0xd9, 0xd5, - 0x28, 0x5c, 0x65, 0x1c, 0x8f, 0xac, 0x1e, 0xc6, 0x42, 0xfa, 0xac, 0x7e, - 0x72, 0xea, 0x3f, 0x34, 0xa2, 0xbf, 0x0e, 0x2e, 0x18, 0x08, 0xaf, 0x1d, - 0x77, 0x2d, 0xa8, 0xa6, 0xe1, 0x27, 0xb4, 0x2f, 0xac, 0x15, 0xb5, 0x9e, - 0x78, 0x52, 0xd7, 0x1b, 0x02, 0x11, 0x31, 0x5e, 0x58, 0xe1, 0x43, 0x55, - 0x3b, 0xe5, 0x63, 0x48, 0xa2, 0xfc, 0x17, 0x39, 0x7d, 0xca, 0xbf, 0xf6, - 0x21, 0x74, 0xaf, 0xf6, 0x86, 0xe3, 0x26, 0x81, 0x78, 0x93, 0x85, 0x90, - 0xdd, 0x0b, 0x8f, 0xf5, 0x19, 0x4a, 0xdf, 0xa6, 0x99, 0x3d, 0x96, 0x7b, - 0x08, 0x2e, 0x1d, 0x62, 0x1f, 0xca, 0x52, 0x33, 0xc3, 0x32, 0x8f, 0x7a, - 0xa9, 0x62, 0xab, 0x16, 0xb4, 0xab, 0xc8, 0xd5, 0x76, 0x9f, 0x70, 0x25, - 0x55, 0xa0, 0x71, 0x18, 0xe8, 0x7d, 0x05, 0x14, 0xf7, 0x20, 0x8c, 0xc8, - 0x9c, 0x61, 0xaa, 0xfa, 0x33, 0xea, 0x4f, 0x7d, 0x92, 0x8c, 0x43, 0xf9, - 0x84, 0x91, 0xdf, 0x64, 0xca, 0x89, 0x73, 0x56, 0xad, 0x0c, 0x97, 0xf8, - 0x29, 0x08, 0xb5, 0x08, 0xb7, 0x66, 0x01, 0xc9, 0xb1, 0x07, 0x07, 0x7f, - 0xcd, 0xcc, 0x29, 0x97, 0x91, 0x49, 0xc0, 0xa6, 0xc6, 0x5e, 0xd4, 0x27, - 0x91, 0x2e, 0xc9, 0xfb, 0x60, 0xa2, 0xd2, 0xba, 0x52, 0x76, 0xff, 0x8a, - 0x03, 0xc0, 0xb6, 0xe0, 0xde, 0x6f, 0xa7, 0xc0, 0x21, 0xe0, 0xbc, 0x5b, - 0xdf, 0x36, 0x46, 0x85, 0x3b, 0x9d, 0xa0, 0x9f, 0x53, 0xca, 0xd0, 0x28, - 0x63, 0x8a, 0x04, 0x8a, 0x5c, 0x8b, 0xfd, 0x4b, 0x33, 0x86, 0xe9, 0x71, - 0x19, 0xd4, 0x46, 0x2f, 0xc4, 0x08, 0xa9, 0xe9, 0x3a, 0xe3, 0x6b, 0x6a, - 0xdb, 0x7d, 0x72, 0x01, 0x22, 0x0a, 0x78, 0xf3, 0x48, 0x78, 0x59, 0x38, - 0x2b, 0x45, 0x47, 0xcc, 0xa4, 0x28, 0xfc, 0xce, 0x3e, 0x40, 0x59, 0x25, - 0xf1, 0x54, 0x6b, 0x7c, 0x57, 0x07, 0x60, 0xd7, 0xad, 0x9b, 0xa3, 0x87, - 0x95, 0x29, 0x7d, 0x98, 0x7f, 0x37, 0xae, 0x5e, 0xd5, 0x60, 0xb1, 0xe2, - 0x35, 0xea, 0xb7, 0xa1, 0xac, 0x03, 0x06, 0x8a, 0x6b, 0x4e, 0x50, 0xd3, - 0x32, 0xa2, 0x23, 0x0f, 0x01, 0x53, 0x45, 0x72, 0xce, 0xfa, 0x51, 0xe1, - 0x9d, 0xd1, 0x68, 0xac, 0xdd, 0x30, 0xc2, 0x82, 0xf3, 0xca, 0xec, 0x22, - 0x51, 0xe4, 0x4c, 0xca, 0x53, 0xca, 0xc0, 0xeb, 0xd3, 0x31, 0x60, 0xd7, - 0x88, 0x71, 0x0f, 0x0d, 0x38, 0x4f, 0xdf, 0x82, 0x88, 0x0f, 0xdb, 0xc3, - 0x17, 0x7f, 0x95, 0x33, 0x8c, 0xcb, 0x6c, 0x40, 0x68, 0x86, 0x60, 0x10, - 0x87, 0x01, 0x6c, 0x66, 0x53, 0xd6, 0x25, 0xef, 0xd0, 0x8a, 0x62, 0xa4, - 0x6b, 0x0f, 0xd4, 0x05, 0xee, 0x47, 0x0f, 0xd4, 0xaf, 0xea, 0xc1, 0x0e, - 0x9e, 0x5a, 0xae, 0x9c, 0x3d, 0xd6, 0xb5, 0xcf, 0x6c, 0xdb, 0x7d, 0x45, - 0xec, 0xc3, 0x4b, 0x03, 0x3b, 0x77, 0x06, 0xc5, 0xc7, 0x82, 0xc3, 0xe7, - 0x20, 0xde, 0x2a, 0x6b, 0xd9, 0xe9, 0xe4, 0x63, 0x8e, 0xbd, 0xa4, 0x70, - 0xec, 0xf5, 0x63, 0x0e, 0x56, 0xe5, 0x2a, 0x02, 0x1a, 0x40, 0x30, 0x49, - 0x58, 0xdc, 0xb2, 0xb4, 0x9c, 0x66, 0x90, 0xc4, 0x08, 0xce, 0x1f, 0x74, - 0x3c, 0xc0, 0xd8, 0xbb, 0x35, 0xa9, 0x6c, 0x02, 0xf7, 0x7e, 0x87, 0xc0, - 0xee, 0xc3, 0x98, 0xdc, 0xd5, 0xdb, 0xd1, 0xd5, 0x93, 0x4a, 0x8f, 0x50, - 0x61, 0x28, 0x36, 0xa5, 0xa1, 0x20, 0xdc, 0x69, 0x68, 0xca, 0x79, 0x8e, - 0x96, 0xcb, 0x9f, 0x0f, 0x6b, 0xf3, 0xba, 0x57, 0x0f, 0x55, 0xeb, 0xfa, - 0x92, 0xc2, 0xf0, 0xe3, 0xfe, 0x0d, 0xf9, 0xa6, 0x8e, 0x4b, 0xd7, 0xa2, - 0xcb, 0xd9, 0x29, 0x8c, 0xc6, 0x1c, 0xcd, 0x41, 0x80, 0x74, 0xaf, 0x9b, - 0x98, 0x84, 0x14, 0x00, 0x65, 0x8d, 0xc9, 0x15, 0xbd, 0x20, 0x7f, 0xf7, - 0x05, 0x54, 0x9c, 0x66, 0xe9, 0xd9, 0x63, 0x6a, 0x0c, 0x07, 0xe9, 0x31, - 0x89, 0x83, 0x7a, 0xdc, 0x52, 0x0b, 0x39, 0x4d, 0x5e, 0x59, 0xea, 0x9e, - 0x9f, 0xd9, 0x7a, 0x58, 0x27, 0x44, 0xee, 0x54, 0xef, 0xd3, 0x47, 0x43, - 0x4a, 0xb4, 0x46, 0xb3, 0xa0, 0xd0, 0xe3, 0x67, 0xf1, 0x18, 0x58, 0xdb, - 0x3d, 0x03, 0x5b, 0x19, 0x7f, 0xed, 0xc8, 0x67, 0xaa, 0x92, 0xe5, 0x4c, - 0x2a, 0x2f, 0xfe, 0x51, 0x17, 0x13, 0xd0, 0x45, 0x4c, 0x50, 0x52, 0xff, - 0xeb, 0x41, 0x1b, 0x0a, 0xe8, 0x7d, 0x87, 0x63, 0x52, 0xe6, 0x88, 0x0c, - 0x97, 0x38, 0xfa, 0x31, 0xb9, 0x30, 0xc0, 0x85, 0xd3, 0x58, 0x07, 0x35, - 0xcd, 0x24, 0x93, 0x60, 0x3f, 0xe7, 0x58, 0x49, 0x4f, 0x63, 0x8d, 0xd7, - 0x5b, 0xce, 0xaf, 0xb1, 0xfe, 0x49, 0x1d, 0x11, 0xa5, 0x6c, 0x1c, 0xb3, - 0x5c, 0x93, 0xf7, 0xbe, 0x51, 0x2b, 0x46, 0x10, 0x09, 0x81, 0x11, 0xe6, - 0x6a, 0x94, 0xcb, 0x04, 0x01, 0x89, 0xab, 0xac, 0xbe, 0xa3, 0xc2, 0x45, - 0x2a, 0xe3, 0xa5, 0x8c, 0xe9, 0xa0, 0x2f, 0xfa, 0xb5, 0x1d, 0x79, 0x1a, - 0x98, 0x35, 0x73, 0x59, 0x19, 0x76, 0x8d, 0x13, 0xd8, 0xe6, 0x54, 0xf9, - 0xc4, 0x5d, 0x82, 0xd1, 0x8c, 0x17, 0x1e, 0x71, 0xe2, 0x0c, 0x49, 0xe8, - 0x54, 0x70, 0x4f, 0xad, 0x6a, 0x38, 0xa6, 0xe8, 0x1e, 0x7d, 0xdb, 0x88, - 0x0f, 0xe3, 0x70, 0x21, 0x68, 0x0d, 0x9b, 0xf0, 0xd6, 0xfe, 0x4d, 0x29, - 0xe6, 0xea, 0xe7, 0x7c, 0x41, 0x37, 0x21, 0x73, 0xa6, 0x5e, 0x5c, 0x59, - 0x40, 0xe9, 0x00, 0xab, 0xea, 0x14, 0x91, 0x13, 0x11, 0x7f, 0xaf, 0xd7, - 0xc1, 0xba, 0x4a, 0x5c, 0x9b, 0xe3, 0xcb, 0x2f, 0xec, 0x56, 0xa2, 0x2a, - 0x13, 0xa1, 0xca, 0x81, 0x9a, 0xab, 0xd2, 0x47, 0xad, 0xfc, 0x5e, 0x9d, - 0xa3, 0xa3, 0x23, 0x2e, 0x36, 0xf1, 0xae, 0xf3, 0xca, 0xf8, 0x35, 0x6a, - 0x80, 0x61, 0x12, 0xd3, 0x2e, 0x7d, 0xdc, 0xab, 0xe0, 0x7f, 0x5c, 0x25, - 0x41, 0xaa, 0xc2, 0xc9, 0x76, 0x8b, 0xea, 0x21, 0xa6, 0x03, 0x6f, 0x99, - 0x49, 0x0c, 0x03, 0x7e, 0x9a, 0xa8, 0xa1, 0xf2, 0xfe, 0xe2, 0x88, 0x95, - 0x67, 0x81, 0xb6, 0x9f, 0x36, 0x5c, 0x9f, 0x9f, 0x58, 0x5d, 0x59, 0x6a, - 0x95, 0xbc, 0x92, 0xd5, 0x4f, 0x17, 0x99, 0xbc, 0x5c, 0xf7, 0x82, 0x2f, - 0x3b, 0x4e, 0x66, 0x45, 0xc6, 0x87, 0x35, 0xfc, 0x24, 0xa2, 0x25, 0x98, - 0xc4, 0xfa, 0x50, 0xe1, 0xe3, 0x72, 0xa7, 0x05, 0x0e, 0x76, 0xe0, 0xf7, - 0xee, 0x44, 0x30, 0xfe, 0xa9, 0x58, 0x14, 0xa6, 0x34, 0xce, 0xc2, 0xb5, - 0xb7, 0xb6, 0x57, 0xa1, 0x93, 0x4c, 0x6c, 0x36, 0x3f, 0xac, 0xdf, 0xf0, - 0x50, 0xa5, 0xe3, 0xa6, 0x05, 0x9d, 0x2f, 0x5d, 0x67, 0x7d, 0xe6, 0xeb, - 0xcf, 0x1e, 0x51, 0xc5, 0x29, 0x82, 0xb0, 0xb9, 0x2e, 0xe4, 0x31, 0x45, - 0x02, 0xbf, 0x4f, 0x8f, 0x45, 0x43, 0xc3, 0x32, 0x42, 0xce, 0x4a, 0xeb, - 0xf9, 0x4b, 0x59, 0x78, 0xb7, 0x87, 0x7a, 0x7d, 0x8d, 0x28, 0xa0, 0x63, - 0x3e, 0x4b, 0xc3, 0x6c, 0x31, 0x37, 0x4b, 0xf6, 0xaf, 0x24, 0xe6, 0xce, - 0xed, 0x7d, 0xae, 0x1d, 0x7b, 0xa5, 0x35, 0x14, 0xac, 0xa3, 0x64, 0x51, - 0x1b, 0x71, 0xe5, 0x63, 0xca, 0x72, 0x26, 0x79, 0xb6, 0xda, 0xb8, 0x8d, - 0x78, 0xde, 0x64, 0x6d, 0x4f, 0x69, 0x95, 0x4c, 0x43, 0x1d, 0xd8, 0xcb, - 0x53, 0x06, 0x16, 0xf6, 0x55, 0x01, 0x8d, 0x02, 0xbf, 0x37, 0xe0, 0x9d, - 0x5d, 0x20, 0x13, 0xc2, 0xc3, 0x10, 0xd2, 0x05, 0x6b, 0x65, 0xc2, 0xc2, - 0x82, 0xe4, 0xe3, 0xde, 0x94, 0x05, 0x31, 0x2d, 0x3d, 0xfc, 0x91, 0x6b, - 0x6e, 0x27, 0x4b, 0x5f, 0x3c, 0x53, 0x1f, 0xb2, 0x5b, 0xad, 0xf1, 0xaf, - 0x0b, 0xf7, 0x48, 0xa5, 0xba, 0xea, 0xc4, 0x27, 0x63, 0x8c, 0xbe, 0xee, - 0x42, 0x0b, 0x61, 0x7b, 0xa7, 0x9b, 0x5b, 0x13, 0xde, 0x44, 0x1f, 0xd2, - 0x8b, 0x20, 0x7d, 0xde, 0x87, 0x56, 0x70, 0xcc, 0xef, 0x1a, 0x59, 0x34, - 0xc2, 0x28, 0xe0, 0xf4, 0x8c, 0xc8, 0x5d, 0xdb, 0x91, 0x98, 0xd1, 0xea, - 0xcc, 0xdf, 0xad, 0x9f, 0x42, 0x6b, 0xd9, 0xcd, 0x6a, 0x99, 0xe0, 0xaa, - 0x06, 0xbc, 0xe1, 0x5b, 0x39, 0x67, 0x59, 0xeb, 0x09, 0x72, 0x44, 0xf6, - 0x30, 0xa7, 0x59, 0xd9, 0x89, 0x1a, 0x69, 0x4b, 0xef, 0xc5, 0x33, 0xcc, - 0x79, 0x34, 0x0a, 0xd3, 0x2e, 0x71, 0xcd, 0x80, 0xa2, 0x80, 0x35, 0x56, - 0xa2, 0x69, 0x54, 0x75, 0x49, 0xbb, 0xb0, 0xf0, 0x9f, 0xe1, 0x86, 0x5c, - 0x31, 0x91, 0x0d, 0xa4, 0xde, 0xba, 0x6b, 0xf4, 0x43, 0xf5, 0x83, 0x2a, - 0xe6, 0xc0, 0xab, 0x85, 0x2e, 0x8f, 0xbd, 0x46, 0x15, 0x6a, 0xc6, 0x33, - 0xb9, 0x9a, 0x9a, 0xce, 0x8a, 0x58, 0xed, 0x8d, 0x76, 0xc5, 0xa6, 0x8b, - 0x96, 0x36, 0x41, 0xbf, 0x12, 0x3f, 0x6a, 0x15, 0x29, 0x92, 0x86, 0x86, - 0xe2, 0x36, 0xca, 0x88, 0x2e, 0xb6, 0x8f, 0xf0, 0xbf, 0x8b, 0x46, 0x58, - 0xc8, 0xb3, 0x9d, 0x7c, 0xc3, 0x74, 0x89, 0x78, 0x7e, 0x09, 0x54, 0x8c, - 0x04, 0xee, 0x49, 0x81, 0x4c, 0xa2, 0xf1, 0x39, 0xcb, 0x9d, 0x10, 0xf3, - 0x84, 0x68, 0x07, 0x62, 0x70, 0x4e, 0xd7, 0xe4, 0x08, 0x02, 0x42, 0x57, - 0xb8, 0x65, 0x93, 0x65, 0x6a, 0x0e, 0x46, 0x92, 0xb9, 0x65, 0x19, 0xcf, - 0xc3, 0x85, 0x37, 0x4b, 0xfc, 0x80, 0x22, 0x70, 0x20, 0x2f, 0x16, 0x01, - 0xcc, 0x90, 0xa1, 0x8c, 0x89, 0x71, 0x28, 0x1c, 0xa1, 0xd9, 0x3b, 0x19, - 0x56, 0x0c, 0xc3, 0x26, 0xc5, 0x14, 0xe8, 0xf7, 0x49, 0x9d, 0xf6, 0x16, - 0xbc, 0xb7, 0xd4, 0xd7, 0xa1, 0xa1, 0x0e, 0x6d, 0x85, 0x86, 0xd5, 0x2a, - 0xe5, 0x11, 0x8e, 0xe0, 0xa5, 0x65, 0x0c, 0x36, 0x2b, 0xd1, 0x93, 0x15, - 0x94, 0x47, 0xd4, 0x74, 0x77, 0xa8, 0xaf, 0x4f, 0x4f, 0xfa, 0x1b, 0x24, - 0x20, 0x48, 0x9f, 0xd5, 0x64, 0x1b, 0x0c, 0xfa, 0x1d, 0x6b, 0xff, 0xcd, - 0x0d, 0xce, 0x6b, 0xad, 0x18, 0x62, 0x8e, 0xaf, 0xd5, 0x2c, 0x3c, 0xed, - 0xbe, 0x56, 0x09, 0x42, 0x8c, 0x4c, 0x0b, 0x55, 0x9c, 0x04, 0x17, 0x99, - 0xdd, 0x22, 0x40, 0x93, 0x64, 0xe1, 0x39, 0x27, 0x67, 0x75, 0x6e, 0xc2, - 0xd8, 0xea, 0xe5, 0x93, 0xde, 0xba, 0x23, 0xec, 0x44, 0xf3, 0x7e, 0xab, - 0x50, 0xac, 0xac, 0xb5, 0x9e, 0xcd, 0x73, 0xd1, 0x41, 0x57, 0xa6, 0x87, - 0xe3, 0xf5, 0xa3, 0x82, 0x8e, 0x1c, 0xe1, 0xc0, 0xac, 0x20, 0xcd, 0x0d, - 0xae, 0xf2, 0x50, 0x4b, 0x12, 0x39, 0xa8, 0x85, 0xe9, 0x90, 0x05, 0xe1, - 0x68, 0x5e, 0xe6, 0x1f, 0x49, 0x03, 0xeb, 0xd1, 0x1b, 0x11, 0x74, 0xb7, - 0x04, 0x78, 0xea, 0xfb, 0xbc, 0x53, 0x37, 0x60, 0xcb, 0xaa, 0xef, 0xb4, - 0x70, 0x07, 0xaa, 0x9d, 0x03, 0x7c, 0x76, 0x94, 0x78, 0x1a, 0xda, 0x70, - 0x5a, 0x61, 0xcd, 0x30, 0x33, 0x8d, 0x4a, 0x1a, 0xab, 0x07, 0x30, 0xc5, - 0x73, 0xcc, 0x56, 0x27, 0x18, 0xb4, 0x1f, 0x58, 0x5b, 0xb7, 0x8c, 0x54, - 0x57, 0x16, 0x0f, 0x94, 0x35, 0x7c, 0x8c, 0x83, 0x47, 0x03, 0x14, 0xec, - 0x61, 0x5c, 0xc8, 0xa1, 0xc2, 0xcc, 0xc3, 0xb8, 0xea, 0xb7, 0x12, 0x2d, - 0x05, 0xce, 0xaa, 0x49, 0xce, 0x55, 0xe3, 0x1b, 0xc7, 0x7f, 0x3f, 0xb5, - 0xe7, 0x4a, 0xe0, 0x31, 0xc8, 0x11, 0x0f, 0x1c, 0x59, 0x9a, 0x30, 0x2c, - 0x07, 0xa0, 0xcb, 0x17, 0x62, 0x51, 0x27, 0xec, 0x12, 0x7f, 0xce, 0x35, - 0x09, 0x44, 0x2a, 0x65, 0xc6, 0x2d, 0x14, 0xa1, 0x29, 0xcf, 0x41, 0x50, - 0x74, 0xf8, 0xef, 0x9a, 0x88, 0x8b, 0x1e, 0xbd, 0x6a, 0x72, 0x29, 0x77, - 0xfe, 0xbb, 0x59, 0x92, 0x1a, 0x11, 0x52, 0xd0, 0x1f, 0x6c, 0xe3, 0x58, - 0xa6, 0x34, 0xb4, 0x23, 0x78, 0xd4, 0xf0, 0xc2, 0x4d, 0x90, 0xc1, 0xce, - 0x93, 0x0f, 0x55, 0xcf, 0xef, 0x60, 0xff, 0x69, 0x9f, 0x1b, 0x54, 0x67, - 0x4a, 0xd4, 0x4e, 0xd8, 0x6e, 0xaf, 0x70, 0x9c, 0x1f, 0xa5, 0x75, 0x51, - 0x1b, 0x7d, 0x46, 0x12, 0x4f, 0x4e, 0xf1, 0x5a, 0x79, 0xbf, 0x03, 0x37, - 0x89, 0xaa, 0x76, 0x8f, 0x8c, 0xc6, 0xf6, 0xc3, 0x0f, 0x44, 0x41, 0x61, - 0x1a, 0x5c, 0x49, 0x37, 0xee, 0x0e, 0x24, 0x71, 0x6c, 0xd4, 0xfc, 0x15, - 0x6a, 0x05, 0xe5, 0xe5, 0x49, 0xed, 0xb3, 0x90, 0x3c, 0xd5, 0xf7, 0x47, - 0xbd, 0x2f, 0xd1, 0xbd, 0x91, 0xe0, 0x6b, 0x99, 0x8d, 0xb3, 0x65, 0x87, - 0xd4, 0xfd, 0x86, 0xb4, 0x28, 0xbb, 0x39, 0x50, 0x6c, 0xf8, 0x4e, 0x41, - 0x2c, 0x8c, 0x3d, 0x09, 0x50, 0x84, 0x14, 0x8d, 0x39, 0xec, 0x07, 0xf6, - 0x00, 0x78, 0x71, 0xc8, 0x07, 0xae, 0xd0, 0x45, 0xb1, 0xc1, 0x41, 0x08, - 0x83, 0x96, 0xdc, 0x05, 0x82, 0xbc, 0x18, 0x30, 0x2c, 0xdf, 0x01, 0xc7, - 0x1a, 0xa5, 0x43, 0x02, 0x0c, 0xcc, 0xe3, 0x19, 0xf9, 0xac, 0xb0, 0x80, - 0xea, 0xbc, 0x20, 0xab, 0x2a, 0x33, 0x25, 0x7f, 0x1e, 0x0e, 0x47, 0x0d, - 0xcf, 0x31, 0x93, 0x45, 0x2a, 0xe3, 0x28, 0x9d, 0x54, 0x03, 0x05, 0x0c, - 0x2b, 0x37, 0x95, 0xab, 0xa6, 0x00, 0xc4, 0xdd, 0x26, 0xb4, 0x7b, 0x3e, - 0xa8, 0x8b, 0x03, 0xe4, 0x9c, 0x1b, 0x62, 0x41, 0xb3, 0x74, 0x42, 0x9a, - 0xf4, 0xa7, 0xb5, 0xb9, 0x64, 0x39, 0x2c, 0x58, 0xbd, 0x15, 0x78, 0x74, - 0x4b, 0xa5, 0xff, 0x95, 0xc0, 0x86, 0xf4, 0x4f, 0x84, 0x44, 0x46, 0x56, - 0xec, 0x99, 0x5b, 0xaf, 0x41, 0xec, 0xb4, 0x61, 0xb7, 0xda, 0x59, 0x62, - 0xe4, 0xae, 0x89, 0x90, 0x35, 0xe3, 0x40, 0x9b, 0xb9, 0x06, 0x51, 0x9d, - 0x52, 0x12, 0xa5, 0xdf, 0x7e, 0x42, 0xdd, 0x0b, 0x67, 0x70, 0xa4, 0xed, - 0x1d, 0x74, 0x65, 0x95, 0x6a, 0x6d, 0xf5, 0xca, 0x89, 0x63, 0x76, 0xb9, - 0x2d, 0x81, 0x53, 0x76, 0x7c, 0xda, 0x22, 0xed, 0xb6, 0x4c, 0xbe, 0x40, - 0x5d, 0x76, 0x83, 0x60, 0x03, 0x3a, 0xb3, 0x76, 0x6c, 0x15, 0x66, 0x33, - 0xdd, 0x2f, 0xa5, 0x30, 0xa6, 0xf4, 0x6a, 0xbd, 0xcd, 0x30, 0xac, 0xd9, - 0xff, 0x64, 0x8d, 0xfe, 0x05, 0x42, 0x3f, 0xf3, 0x8e, 0x15, 0xf1, 0xd8, - 0x20, 0x95, 0xce, 0xfb, 0xce, 0xbe, 0xa5, 0xd5, 0x6a, 0x19, 0xad, 0x34, - 0x30, 0x18, 0xd7, 0x87, 0x3f, 0x65, 0x06, 0x85, 0x11, 0x50, 0xc1, 0xdc, - 0x90, 0x95, 0xe3, 0xd4, 0xd8, 0xcb, 0xff, 0x52, 0x80, 0x5f, 0xa7, 0x42, - 0xd7, 0x93, 0x5c, 0xf5, 0x3c, 0xf0, 0x02, 0x66, 0x25, 0xfb, 0x6d, 0xb3, - 0x5a, 0xff, 0xab, 0x3c, 0xb2, 0x9b, 0x8b, 0xc9, 0x17, 0x89, 0x56, 0x2b, - 0xe7, 0x2d, 0x78, 0xa3, 0x96, 0x89, 0x84, 0x6f, 0x98, 0x56, 0x9f, 0x35, - 0xe3, 0x9b, 0xd5, 0x64, 0x37, 0x3f, 0x2e, 0x83, 0xec, 0x5f, 0xaf, 0xcb, - 0x69, 0x00, 0x07, 0x21, 0x60, 0x75, 0x44, 0x76, 0xad, 0x86, 0xfd, 0xee, - 0xa7, 0x70, 0xc4, 0x41, 0x85, 0xe7, 0x3c, 0x46, 0xef, 0xdd, 0xe5, 0xf5, - 0x31, 0x0e, 0xe2, 0x75, 0x63, 0x63, 0xfd, 0xd6, 0xed, 0x6f, 0xfc, 0xb6, - 0xa0, 0xd2, 0x82, 0x78, 0xc2, 0x73, 0x97, 0xb8, 0x30, 0x8d, 0x2c, 0x08, - 0xd0, 0xa9, 0x72, 0x67, 0x4b, 0x7b, 0xc9, 0x1f, 0x28, 0xc0, 0x44, 0x67, - 0xfc, 0xab, 0x9d, 0x0c, 0xe0, 0xc8, 0x69, 0x9d, 0x48, 0x08, 0xe5, 0x9f, - 0x04, 0x47, 0xd4, 0xcf, 0x42, 0xd7, 0x04, 0x02, 0x5a, 0xa1, 0x7c, 0x31, - 0xc5, 0x9c, 0xa3, 0xc3, 0xd5, 0xd5, 0x0f, 0xf8, 0xaf, 0xc9, 0x79, 0x07, - 0xfd, 0xe9, 0x56, 0xf0, 0x8f, 0x20, 0xf4, 0x6a, 0x06, 0x83, 0x73, 0xcd, - 0x44, 0x55, 0x39, 0xbb, 0xda, 0x9e, 0x4d, 0xbd, 0x43, 0x7b, 0x85, 0x7b, - 0xa6, 0x3f, 0x5d, 0xcf, 0x1a, 0xe1, 0xe3, 0x58, 0x84, 0x07, 0xf1, 0xf3, - 0x49, 0x74, 0x81, 0x6b, 0xeb, 0xaf, 0xe4, 0x81, 0x30, 0x1b, 0x5b, 0x17, - 0x76, 0x43, 0x1a, 0x5e, 0xfc, 0xfe, 0xf1, 0x0c, 0x9e, 0xb4, 0x7c, 0x80, - 0xd9, 0x8a, 0x52, 0xff, 0xb1, 0x75, 0x85, 0x0e, 0x66, 0xbb, 0xcf, 0x90, - 0x81, 0xab, 0xb5, 0x56, 0x12, 0x3c, 0xc0, 0x4e, 0xad, 0xba, 0xaf, 0xb9, - 0x53, 0xe6, 0xa6, 0x84, 0xc7, 0xa8, 0x8b, 0x4e, 0xcd, 0x58, 0xc4, 0x3d, - 0x5b, 0xd4, 0xc0, 0xf9, 0x3f, 0xed, 0xde, 0x24, 0xcb, 0x15, 0x67, 0x05, - 0x96, 0xf7, 0xa8, 0xdc, 0xfc, 0x44, 0xc9, 0xe0, 0x20, 0xf4, 0x01, 0x53, - 0x59, 0x25, 0x38, 0x20, 0x46, 0x93, 0xc7, 0x4d, 0xcf, 0x8e, 0x63, 0x95, - 0x58, 0xde, 0x6e, 0x06, 0x3f, 0x0c, 0x36, 0x2a, 0xe7, 0x11, 0xfe, 0x6a, - 0x21, 0x84, 0x37, 0xd9, 0x41, 0x8a, 0x0e, 0x1a, 0x56, 0x0d, 0xd8, 0x09, - 0x2e, 0xe6, 0x26, 0x2b, 0x43, 0xba, 0xe0, 0x9f, 0x67, 0xb3, 0x19, 0xa4, - 0x74, 0xc8, 0x2e, 0xbc, 0xed, 0xff, 0x7f, 0x17, 0xbf, 0xcc, 0xa0, 0x81, - 0x6a, 0x2d, 0x34, 0x27, 0xe2, 0x37, 0xe9, 0x07, 0x1c, 0xc7, 0x36, 0xb6, - 0x3b, 0xbc, 0xc4, 0xca, 0xb4, 0x88, 0x26, 0x42, 0x26, 0x22, 0x7c, 0xea, - 0xef, 0xd0, 0xed, 0x79, 0x5a, 0x51, 0x05, 0x6f, 0x52, 0x1b, 0xfb, 0x81, - 0x02, 0x05, 0xf7, 0xfb, 0xec, 0x6e, 0xdd, 0x5b, 0xb7, 0x7b, 0x27, 0xa5, - 0x66, 0x15, 0xd3, 0xae, 0xc1, 0x46, 0x83, 0x04, 0x99, 0x36, 0x0e, 0xf5, - 0x1b, 0xba, 0x91, 0x74, 0x70, 0xb4, 0x7c, 0x0f, 0x77, 0x6c, 0x7a, 0x18, - 0x5d, 0x2c, 0x56, 0x76, 0x5c, 0xd0, 0xe7, 0xb9, 0x29, 0xff, 0x99, 0x46, - 0xcb, 0x9a, 0x96, 0xc9, 0xa8, 0xfd, 0xa8, 0x4d, 0x3b, 0x8f, 0x02, 0x40, - 0x05, 0x98, 0xee, 0x43, 0xe2, 0x88, 0x2b, 0x91, 0x32, 0x65, 0x27, 0xc3, - 0x57, 0xb8, 0xaf, 0x8c, 0x60, 0xcf, 0x69, 0x5f, 0x7d, 0x78, 0xfc, 0xc6, - 0xd7, 0xdf, 0xaa, 0xf2, 0xf0, 0xa9, 0x56, 0xb1, 0x6e, 0x6e, 0xd3, 0xbd, - 0x73, 0x8c, 0x80, 0x40, 0x3c, 0x4f, 0x3e, 0x55, 0x4b, 0x4c, 0xd6, 0x19, - 0x43, 0x72, 0x45, 0xe5, 0x89, 0xd8, 0xe5, 0xec, 0xe3, 0x63, 0x09, 0xf9, - 0xb5, 0xbe, 0x64, 0x98, 0xa3, 0x1b, 0xba, 0x18, 0x0a, 0xe7, 0xf6, 0x67, - 0x19, 0xe7, 0xf4, 0x0d, 0x9a, 0x9c, 0x73, 0xef, 0x17, 0x92, 0x99, 0x09, - 0x11, 0xad, 0x0d, 0x2b, 0x21, 0x2a, 0xe5, 0x60, 0x1f, 0x0b, 0x75, 0xec, - 0x85, 0xa7, 0x04, 0xb0, 0xfa, 0xb2, 0xd9, 0x5a, 0x33, 0x0e, 0x32, 0x6c, - 0x19, 0xcc, 0x59, 0x65, 0xd7, 0x6d, 0x72, 0x23, 0xeb, 0xcb, 0x86, 0x90, - 0x81, 0x6d, 0xb9, 0x69, 0xc5, 0x7b, 0xa0, 0x09, 0x44, 0xd9, 0x03, 0xab, - 0xc5, 0x68, 0x64, 0xa4, 0x16, 0x01, 0xd3, 0xc4, 0x46, 0x86, 0xbb, 0xd7, - 0xb7, 0x55, 0xbc, 0xf7, 0x9d, 0x9d, 0x84, 0x53, 0xc8, 0x57, 0x2a, 0x9d, - 0x1e, 0xc4, 0x6e, 0x2a, 0x97, 0xca, 0x0d, 0xbe, 0x48, 0x74, 0x55, 0x12, - 0xab, 0x39, 0xb5, 0x45, 0x3b, 0x18, 0xbc, 0x1c, 0xe9, 0x9c, 0xfe, 0x28, - 0x39, 0xda, 0x59, 0x31, 0xf5, 0x84, 0xff, 0x77, 0x3e, 0x8b, 0x64, 0xdd, - 0x71, 0xdf, 0xe6, 0x61, 0x0e, 0x10, 0xc1, 0xa1, 0x10, 0xc7, 0x54, 0x88, - 0x89, 0xee, 0x7e, 0xe1, 0x7b, 0x61, 0x89, 0x4e, 0x2f, 0xbc, 0xef, 0x05, - 0xcc, 0x3e, 0x03, 0xcb, 0x83, 0xd0, 0x55, 0xac, 0xb0, 0xa7, 0x4e, 0x23, - 0x05, 0x93, 0x3b, 0x73, 0x3b, 0xcd, 0x3f, 0xac, 0x5f, 0xb9, 0xa2, 0x74, - 0x65, 0x8a, 0x9c, 0xb8, 0x67, 0xd7, 0xad, 0x55, 0x69, 0x21, 0x7f, 0x5b, - 0x03, 0x1f, 0x0c, 0xd9, 0x59, 0x5b, 0xe3, 0xf1, 0xe4, 0xe9, 0x0c, 0x4b, - 0x3f, 0x99, 0x4a, 0x9c, 0x1e, 0x40, 0xd4, 0x58, 0x31, 0x8a, 0x0c, 0x71, - 0x07, 0xed, 0xbb, 0xf8, 0x66, 0xb1, 0x07, 0xc9, 0xbd, 0x64, 0xdf, 0x59, - 0x89, 0x01, 0x10, 0x7d, 0xd4, 0x12, 0x89, 0x65, 0x0c, 0x9a, 0xf4, 0xb4, - 0x51, 0x6c, 0x77, 0x73, 0x0c, 0xbb, 0x81, 0x32, 0xa6, 0x14, 0x01, 0x77, - 0x2d, 0xa7, 0x09, 0xfd, 0x8f, 0x7b, 0xe7, 0xfd, 0x3c, 0x11, 0xac, 0x52, - 0x91, 0xe4, 0xfc, 0x3e, 0x8c, 0xa0, 0x0e, 0x5e, 0xeb, 0xbd, 0x51, 0x5b, - 0xc5, 0x7f, 0x09, 0x26, 0x87, 0x1d, 0x1c, 0xb0, 0x19, 0xf3, 0x84, 0x6a, - 0xbe, 0x54, 0x0a, 0x87, 0xcb, 0x69, 0xa3, 0x16, 0x19, 0x30, 0x31, 0x61, - 0x7d, 0x6c, 0xf4, 0x52, 0x70, 0x2c, 0xe7, 0x7e, 0x1f, 0x57, 0xef, 0xb5, - 0x0b, 0xde, 0xb4, 0x26, 0x0b, 0xa9, 0x7d, 0x85, 0xe5, 0xcc, 0xe0, 0xcc, - 0xa5, 0xff, 0x05, 0xa6, 0x71, 0x05, 0xef, 0x8f, 0x1a, 0x2d, 0x47, 0xfa, - 0x2e, 0xe7, 0x83, 0x96, 0xc4, 0xa0, 0x70, 0x19, 0x4b, 0xc3, 0xe6, 0x20, - 0x50, 0xf4, 0xba, 0x6d, 0x1a, 0x9c, 0x4a, 0x7b, 0xba, 0x42, 0x06, 0xf8, - 0x84, 0x9e, 0xb8, 0x9f, 0x9c, 0x5a, 0xc0, 0x7e, 0x82, 0x51, 0x79, 0xa5, - 0xb1, 0x87, 0xc9, 0x3f, 0x99, 0x3b, 0x3d, 0xe7, 0x22, 0x13, 0x26, 0xee, - 0xf8, 0x52, 0x17, 0xc2, 0x70, 0x63, 0x27, 0x43, 0xd8, 0x50, 0x3a, 0x08, - 0x0d, 0xe8, 0x4e, 0x51, 0xe9, 0xc2, 0xa5, 0x8f, 0xc4, 0x9f, 0x70, 0xd1, - 0xd1, 0x31, 0x9b, 0xe2, 0xb9, 0xb6, 0xd3, 0xb3, 0x20, 0xb8, 0x05, 0xb7, - 0xcc, 0x76, 0xea, 0xa1, 0x16, 0x46, 0x06, 0xd0, 0xf4, 0x53, 0x06, 0x0d, - 0xcc, 0x77, 0x90, 0x92, 0xfb, 0x3c, 0xaf, 0xed, 0xa5, 0xc7, 0xf0, 0x91, - 0x65, 0xfb, 0xf3, 0x40, 0x61, 0x10, 0x61, 0x33, 0xb5, 0x2e, 0x02, 0xaa, - 0xf2, 0xcb, 0x1e, 0x05, 0xbd, 0xd9, 0xa1, 0xdf, 0x57, 0x03, 0x4b, 0xa7, - 0xe8, 0x68, 0xbe, 0xd6, 0x70, 0x84, 0x97, 0xc5, 0xa2, 0x62, 0x7b, 0xb6, - 0x5f, 0xe3, 0x83, 0x6d, 0xe8, 0x4d, 0xfe, 0xd5, 0x23, 0x25, 0xcc, 0x2f, - 0xb4, 0x27, 0xce, 0xd8, 0x44, 0xd4, 0x3f, 0x11, 0x4b, 0x76, 0xa3, 0xcd, - 0xf8, 0x14, 0x1c, 0x06, 0x46, 0x3d, 0xb9, 0x1e, 0xc8, 0x6f, 0xc9, 0x6b, - 0xaf, 0x58, 0x79, 0x46, 0x79, 0x9f, 0x54, 0x35, 0xd0, 0x56, 0x69, 0x5d, - 0x4e, 0xd1, 0x54, 0x4c, 0xaf, 0x2f, 0x24, 0x60, 0x30, 0xbc, 0x9e, 0x77, - 0x4a, 0x8c, 0xb5, 0xb6, 0x80, 0xb2, 0x80, 0xf9, 0x5b, 0xc8, 0x5d, 0xca, - 0xfe, 0xba, 0xdc, 0xcb, 0x0e, 0x2f, 0x3b, 0x40, 0x3b, 0x4e, 0x63, 0x99, - 0x88, 0xf9, 0xe4, 0x28, 0xbe, 0x1c, 0x7f, 0x94, 0xf2, 0x9c, 0x1c, 0x6b, - 0xc9, 0x08, 0x40, 0x6f, 0x5e, 0x71, 0x4d, 0xac, 0x86, 0x19, 0x5a, 0xc3, - 0xa9, 0x55, 0xae, 0xaf, 0x24, 0x2b, 0xea, 0x4d, 0x6c, 0x0c, 0x98, 0x67, - 0xd6, 0xa8, 0x1f, 0xd7, 0xa6, 0x3e, 0x10, 0x2d, 0x13, 0x6f, 0x45, 0xcb, - 0xa0, 0x6e, 0x36, 0xd8, 0xf2, 0x7b, 0x29, 0xbe, 0xb1, 0xc7, 0xd8, 0xe1, - 0xf9, 0x0a, 0xe5, 0x59, 0x65, 0x34, 0xba, 0xd7, 0x37, 0x38, 0x04, 0xe7, - 0xae, 0x38, 0x33, 0x14, 0x40, 0x4e, 0x6f, 0x23, 0x54, 0x0a, 0x99, 0x0e, - 0xef, 0x11, 0xa9, 0x8e, 0xed, 0xf1, 0xac, 0x1e, 0x12, 0xbb, 0xb4, 0x92, - 0x0f, 0xb1, 0xb6, 0x08, 0x6a, 0x6c, 0xb0, 0x5f, 0xf4, 0xd7, 0xf1, 0x3c, - 0xa3, 0x37, 0xbd, 0xb4, 0x67, 0xbe, 0x3d, 0xbd, 0x59, 0x63, 0x4f, 0x20, - 0x28, 0x9a, 0x9a, 0x29, 0xae, 0x8b, 0xad, 0xfe, 0x5f, 0x1d, 0xfa, 0x09, - 0x92, 0x81, 0x2b, 0x8c, 0xeb, 0x19, 0x77, 0x93, 0x43, 0x5a, 0xdd, 0xed, - 0x39, 0xaa, 0x83, 0xaf, 0xa6, 0xbd, 0x7d, 0xd5, 0xa1, 0x63, 0x08, 0xb1, - 0x7d, 0x2f, 0xcf, 0x48, 0x25, 0x0e, 0x28, 0x84, 0x3f, 0xc0, 0xc1, 0x94, - 0x5d, 0x18, 0x31, 0xd2, 0x34, 0x0c, 0x59, 0x01, 0xa4, 0x87, 0xc7, 0xf7, - 0x81, 0xeb, 0x32, 0xa3, 0xc5, 0x69, 0x2c, 0x9e, 0x0b, 0xd6, 0x2b, 0x1f, - 0xe3, 0x24, 0x7a, 0xe4, 0x3f, 0x49, 0x3f, 0x92, 0x0b, 0x1d, 0x44, 0x7a, - 0xae, 0x60, 0x89, 0x29, 0x99, 0xd1, 0xc4, 0x74, 0x50, 0x80, 0x53, 0xc7, - 0x7c, 0x8f, 0x9a, 0x5e, 0xc0, 0x4e, 0x96, 0x0c, 0xee, 0x0a, 0x35, 0x5f, - 0x63, 0x5b, 0x73, 0x6f, 0x6d, 0x54, 0x31, 0xba, 0x35, 0x61, 0x54, 0x51, - 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x01, 0x00, 0x08, 0x00, 0xf7, 0x89, - 0x59, 0x3d, 0x09, 0x33, 0x35, 0x25, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x54, 0x31, 0x41, 0x3a, 0x58, 0x33, - 0x5f, 0x31, 0x30, 0x31, 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, 0x38, 0x5f, - 0x31, 0x5f, 0x65, 0x78, 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, 0x57, 0x5f, - 0x75, 0x6e, 0x69, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x65, 0x65, 0x70, 0x72, 0x6f, 0x6d, 0x30, 0x2e, 0x62, 0x69, 0x6e, - 0x69, 0x51, 0x01, 0xe6, 0xb1, 0xf3, 0xe6, 0x0a, 0x5d, 0x59, 0x0a, 0x29, - 0x3b, 0xdb, 0xab, 0xa8, 0x14, 0x25, 0xb9, 0x39, 0x25, 0x94, 0x4f, 0xfb, - 0x45, 0xd1, 0x2f, 0x97, 0x1b, 0xa1, 0xc3, 0x53, 0x27, 0x5d, 0xd1, 0x23, - 0x43, 0x7b, 0x46, 0x4c, 0x6d, 0xeb, 0x13, 0x91, 0xa3, 0x1a, 0x09, 0x18, - 0x10, 0xf1, 0xaf, 0xf4, 0x59, 0xea, 0xf8, 0x3f, 0x1c, 0x7b, 0x6d, 0xed, - 0xed, 0x04, 0x2d, 0x9e, 0x8c, 0xdc, 0xa8, 0xfc, 0x1d, 0x66, 0x0d, 0x03, - 0xac, 0xcf, 0xb5, 0xd8, 0x0b, 0x0b, 0x66, 0x71, 0x28, 0x3a, 0x09, 0xe5, - 0xe6, 0x79, 0xe8, 0xea, 0x72, 0xfc, 0xc6, 0x2e, 0x3c, 0x3f, 0xe5, 0xf5, - 0x86, 0xa6, 0x12, 0x54, 0x28, 0x4c, 0xa2, 0xca, 0x66, 0x91, 0xa2, 0x46, - 0x54, 0x29, 0xa0, 0xb8, 0x9c, 0x40, 0xd6, 0xbe, 0x36, 0xfd, 0xca, 0xae, - 0x66, 0x3d, 0x43, 0xd1, 0xd8, 0x07, 0x04, 0x95, 0xd5, 0x79, 0xbd, 0x0f, - 0xfe, 0xeb, 0x45, 0x7c, 0x52, 0x75, 0x6f, 0xab, 0x7b, 0xa0, 0xef, 0x18, - 0x3f, 0x92, 0x38, 0x32, 0x79, 0x3d, 0x5b, 0x41, 0xe5, 0x15, 0x5c, 0x37, - 0x42, 0x48, 0xe8, 0x50, 0x4b, 0x01, 0x02, 0x00, 0x00, 0x14, 0x00, 0x01, - 0x00, 0x08, 0x00, 0xf7, 0x89, 0x59, 0x3d, 0xec, 0x91, 0x1c, 0xcd, 0x21, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x31, 0x3a, 0x58, 0x33, 0x5f, 0x31, 0x30, 0x31, 0x30, 0x32, - 0x35, 0x5f, 0x31, 0x5f, 0x38, 0x5f, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x52, - 0x4f, 0x4d, 0x5f, 0x46, 0x57, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6d, 0x74, 0x5f, 0x63, - 0x6d, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x74, 0x78, 0x74, 0x50, - 0x4b, 0x01, 0x02, 0x00, 0x00, 0x14, 0x00, 0x01, 0x00, 0x08, 0x00, 0xf7, - 0x89, 0x59, 0x3d, 0xa2, 0xcb, 0x96, 0x76, 0x4c, 0xba, 0x02, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x54, 0x31, 0x3a, - 0x58, 0x33, 0x5f, 0x31, 0x30, 0x31, 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, - 0x38, 0x5f, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, - 0x57, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x30, 0x2e, 0x62, 0x69, - 0x6e, 0x50, 0x4b, 0x01, 0x02, 0x00, 0x00, 0x14, 0x00, 0x01, 0x00, 0x08, - 0x00, 0xf7, 0x89, 0x59, 0x3d, 0x49, 0x55, 0xd3, 0xe3, 0x9e, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xbb, 0x02, 0x00, 0x54, - 0x31, 0x3a, 0x58, 0x33, 0x5f, 0x31, 0x30, 0x31, 0x30, 0x32, 0x35, 0x5f, - 0x31, 0x5f, 0x38, 0x5f, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x52, 0x4f, 0x4d, - 0x5f, 0x46, 0x57, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x65, 0x70, 0x72, 0x6f, 0x6d, 0x30, - 0x2e, 0x62, 0x69, 0x6e, 0x50, 0x4b, 0x01, 0x02, 0x00, 0x00, 0x14, 0x00, - 0x01, 0x00, 0x08, 0x00, 0xf7, 0x89, 0x59, 0x3d, 0xec, 0x91, 0x1c, 0xcd, - 0x21, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xbc, - 0x02, 0x00, 0x54, 0x31, 0x41, 0x3a, 0x58, 0x33, 0x5f, 0x31, 0x30, 0x31, - 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, 0x38, 0x5f, 0x31, 0x5f, 0x65, 0x78, - 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, 0x57, 0x5f, 0x75, 0x6e, 0x69, 0x5f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6d, 0x74, - 0x5f, 0x63, 0x6d, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x74, 0x78, - 0x74, 0x50, 0x4b, 0x01, 0x02, 0x00, 0x00, 0x14, 0x00, 0x01, 0x00, 0x08, - 0x00, 0xf7, 0x89, 0x59, 0x3d, 0x83, 0xee, 0x9e, 0xbf, 0x4b, 0xba, 0x02, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xbc, 0x02, 0x00, 0x54, - 0x31, 0x41, 0x3a, 0x58, 0x33, 0x5f, 0x31, 0x30, 0x31, 0x30, 0x32, 0x35, - 0x5f, 0x31, 0x5f, 0x38, 0x5f, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x52, 0x4f, - 0x4d, 0x5f, 0x46, 0x57, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x30, - 0x2e, 0x62, 0x69, 0x6e, 0x50, 0x4b, 0x01, 0x02, 0x00, 0x00, 0x14, 0x00, - 0x01, 0x00, 0x08, 0x00, 0xf7, 0x89, 0x59, 0x3d, 0x09, 0x33, 0x35, 0x25, - 0x9f, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x77, - 0x05, 0x00, 0x54, 0x31, 0x41, 0x3a, 0x58, 0x33, 0x5f, 0x31, 0x30, 0x31, - 0x30, 0x32, 0x35, 0x5f, 0x31, 0x5f, 0x38, 0x5f, 0x31, 0x5f, 0x65, 0x78, - 0x70, 0x52, 0x4f, 0x4d, 0x5f, 0x46, 0x57, 0x5f, 0x75, 0x6e, 0x69, 0x5f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x65, 0x70, - 0x72, 0x6f, 0x6d, 0x30, 0x2e, 0x62, 0x69, 0x6e, 0x50, 0x4b, 0x05, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x5d, 0x02, 0x00, 0x00, - 0x13, 0x78, 0x05, 0x00, 0x00, 0x00 -}; -unsigned int X3fw_ncf_len = 359046; Index: sys/dev/vxge/vxge-osdep.h =================================================================== --- sys/dev/vxge/vxge-osdep.h +++ sys/dev/vxge/vxge-osdep.h @@ -1,700 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -/* LINTLIBRARY */ - -#ifndef _VXGE_OSDEP_H_ -#define _VXGE_OSDEP_H_ - -#include -#include - -#if __FreeBSD_version >= 800000 -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include - -/* - * ------------------------- includes and defines ------------------------- - */ - -#if BYTE_ORDER == BIG_ENDIAN -#define VXGE_OS_HOST_BIG_ENDIAN -#else -#define VXGE_OS_HOST_LITTLE_ENDIAN -#endif - -#if __LONG_BIT == 64 -#define VXGE_OS_PLATFORM_64BIT -#else -#define VXGE_OS_PLATFORM_32BIT -#endif - -#define VXGE_OS_PCI_CONFIG_SIZE 256 -#define VXGE_OS_HOST_PAGE_SIZE 4096 -#define VXGE_LL_IP_FAST_CSUM(hdr, len) 0 - -#ifndef __DECONST -#define __DECONST(type, var) ((type)(uintrptr_t)(const void *)(var)) -#endif - -typedef struct ifnet *ifnet_t; -typedef struct mbuf *mbuf_t; -typedef struct mbuf *OS_NETSTACK_BUF; - -typedef struct _vxge_bus_res_t { - - u_long bus_res_len; - bus_space_tag_t bus_space_tag; /* DMA Tag */ - bus_space_handle_t bus_space_handle; /* Bus handle */ - struct resource *bar_start_addr; /* BAR address */ - -} vxge_bus_res_t; - -typedef struct _vxge_dma_alloc_t { - - bus_addr_t dma_paddr; /* Physical Address */ - caddr_t dma_vaddr; /* Virtual Address */ - bus_dma_tag_t dma_tag; /* DMA Tag */ - bus_dmamap_t dma_map; /* DMA Map */ - bus_dma_segment_t dma_segment; /* DMA Segment */ - bus_size_t dma_size; /* Size */ - int dma_nseg; /* scatter-gather */ - -} vxge_dma_alloc_t; - -typedef struct _vxge_pci_info { - - device_t ndev; /* Device */ - void *reg_map[3]; /* BAR Resource */ - struct resource *bar_info[3]; /* BAR tag and handle */ - -} vxge_pci_info_t; - -/* - * ---------------------- fixed size primitive types ----------------------- - */ -typedef size_t ptr_t; -typedef int8_t s8; -typedef uint8_t u8; -typedef uint16_t u16; -typedef int32_t s32; -typedef uint32_t u32; -typedef unsigned long long int u64; -#ifndef __bool_true_false_are_defined -typedef boolean_t bool; -#endif -typedef bus_addr_t dma_addr_t; -typedef struct mtx spinlock_t; -typedef struct resource *pci_irq_h; -typedef vxge_pci_info_t *pci_dev_h; -typedef vxge_pci_info_t *pci_cfg_h; -typedef vxge_bus_res_t *pci_reg_h; -typedef vxge_dma_alloc_t pci_dma_h; -typedef vxge_dma_alloc_t pci_dma_acc_h; - -/* - * -------------------------- "libc" functionality ------------------------- - */ -#define vxge_os_curr_time systime -#define vxge_os_strcpy strcpy -#define vxge_os_strlcpy strlcpy -#define vxge_os_strlen strlen -#define vxge_os_sprintf sprintf -#define vxge_os_snprintf snprintf -#define vxge_os_println(buf) printf("%s\n", buf) -#define vxge_os_memzero bzero -#define vxge_os_memcmp memcmp -#define vxge_os_memcpy(dst, src, size) bcopy(src, dst, size) - -#define vxge_os_timestamp(buff) { \ - struct timeval cur_time; \ - gettimeofday(&cur_time, 0); \ - snprintf(buff, sizeof(buff), "%08li.%08li: ", \ - cur_time.tv_sec, cur_time.tv_usec); \ -} - -#define vxge_os_printf(fmt...) { \ - printf(fmt); \ - printf("\n"); \ -} - -#define vxge_os_vaprintf(fmt...) \ - vxge_os_printf(fmt); - -#define vxge_os_vasprintf(fmt...) { \ - vxge_os_printf(fmt); \ -} - -#define vxge_trace(trace, fmt, args...) \ - vxge_debug_uld(VXGE_COMPONENT_ULD, \ - trace, hldev, vpid, fmt, ## args) - -/* - * -------------------- synchronization primitives ------------------------- - */ -/* Initialize the spin lock */ -#define vxge_os_spin_lock_init(lockp, ctxh) { \ - if (mtx_initialized(lockp) == 0) \ - mtx_init((lockp), "vxge", NULL, MTX_DEF); \ -} - -/* Initialize the spin lock (IRQ version) */ -#define vxge_os_spin_lock_init_irq(lockp, ctxh) { \ - if (mtx_initialized(lockp) == 0) \ - mtx_init((lockp), "vxge", NULL, MTX_DEF); \ -} - -/* Destroy the lock */ -#define vxge_os_spin_lock_destroy(lockp, ctxh) { \ - if (mtx_initialized(lockp) != 0) \ - mtx_destroy(lockp); \ -} - -/* Destroy the lock (IRQ version) */ -#define vxge_os_spin_lock_destroy_irq(lockp, ctxh) { \ - if (mtx_initialized(lockp) != 0) \ - mtx_destroy(lockp); \ -} - -/* Acquire the lock */ -#define vxge_os_spin_lock(lockp) { \ - if (mtx_owned(lockp) == 0) \ - mtx_lock(lockp); \ -} - -/* Release the lock */ -#define vxge_os_spin_unlock(lockp) mtx_unlock(lockp) - -/* Acquire the lock (IRQ version) */ -#define vxge_os_spin_lock_irq(lockp, flags) { \ - flags = MTX_QUIET; \ - if (mtx_owned(lockp) == 0) \ - mtx_lock_flags(lockp, flags); \ -} - -/* Release the lock (IRQ version) */ -#define vxge_os_spin_unlock_irq(lockp, flags) { \ - flags = MTX_QUIET; \ - mtx_unlock_flags(lockp, flags); \ -} - -/* Write memory barrier */ -#if __FreeBSD_version < 800000 -#if defined(__i386__) || defined(__amd64__) -#define mb() __asm volatile("mfence" ::: "memory") -#define wmb() __asm volatile("sfence" ::: "memory") -#define rmb() __asm volatile("lfence" ::: "memory") -#else -#define mb() -#define rmb() -#define wmb() -#endif -#endif - -#define vxge_os_wmb() wmb() -#define vxge_os_udelay(x) DELAY(x) -#define vxge_os_stall(x) DELAY(x) -#define vxge_os_mdelay(x) DELAY(x * 1000) -#define vxge_os_xchg (targetp, newval) - -/* - * ------------------------- misc primitives ------------------------------- - */ -#define vxge_os_be32 u32 -#define vxge_os_unlikely(x) (x) -#define vxge_os_prefetch(x) (x = x) -#define vxge_os_prefetchw(x) (x = x) -#define vxge_os_bug vxge_os_printf - -#define vxge_os_ntohs ntohs -#define vxge_os_ntohl ntohl -#define vxge_os_ntohll be64toh - -#define vxge_os_htons htons -#define vxge_os_htonl htonl -#define vxge_os_htonll htobe64 - -#define vxge_os_in_multicast IN_MULTICAST -#define VXGE_OS_INADDR_BROADCAST INADDR_BROADCAST -/* - * -------------------------- compiler stuff ------------------------------ - */ -#define __vxge_os_cacheline_size CACHE_LINE_SIZE -#define __vxge_os_attr_cacheline_aligned __aligned(__vxge_os_cacheline_size) - -/* - * ---------------------- memory primitives -------------------------------- - */ -#if defined(VXGE_OS_MEMORY_CHECK) - -typedef struct _vxge_os_malloc_t { - - u_long line; - u_long size; - void *ptr; - const char *file; - -} vxge_os_malloc_t; - -#define VXGE_OS_MALLOC_CNT_MAX 64*1024 - -extern u32 g_malloc_cnt; -extern vxge_os_malloc_t g_malloc_arr[VXGE_OS_MALLOC_CNT_MAX]; - -#define VXGE_OS_MEMORY_CHECK_MALLOC(_vaddr, _size, _file, _line) { \ - if (_vaddr) { \ - u32 i; \ - for (i = 0; i < g_malloc_cnt; i++) { \ - if (g_malloc_arr[i].ptr == NULL) \ - break; \ - } \ - if (i == g_malloc_cnt) { \ - g_malloc_cnt++; \ - if (g_malloc_cnt >= VXGE_OS_MALLOC_CNT_MAX) { \ - vxge_os_bug("g_malloc_cnt exceed %d\n", \ - VXGE_OS_MALLOC_CNT_MAX); \ - } else { \ - g_malloc_arr[i].ptr = _vaddr; \ - g_malloc_arr[i].size = _size; \ - g_malloc_arr[i].file = _file; \ - g_malloc_arr[i].line = _line; \ - } \ - } \ - } \ -} - -#define VXGE_OS_MEMORY_CHECK_FREE(_vaddr, _size, _file, _line) { \ - u32 i; \ - for (i = 0; i < VXGE_OS_MALLOC_CNT_MAX; i++) { \ - if (g_malloc_arr[i].ptr == _vaddr) { \ - g_malloc_arr[i].ptr = NULL; \ - if (_size && g_malloc_arr[i].size != _size) { \ - vxge_os_printf("freeing wrong size " \ - "%lu allocated %s:%lu:" \ - VXGE_OS_LLXFMT":%lu\n", \ - _size, \ - g_malloc_arr[i].file, \ - g_malloc_arr[i].line, \ - (u64)(u_long) g_malloc_arr[i].ptr, \ - g_malloc_arr[i].size); \ - } \ - break; \ - } \ - } \ -} - -#else -#define VXGE_OS_MEMORY_CHECK_MALLOC(prt, size, file, line) -#define VXGE_OS_MEMORY_CHECK_FREE(vaddr, size, file, line) -#endif - -static inline void * -vxge_mem_alloc_ex(u_long size, const char *file, int line) -{ - void *vaddr = NULL; - vaddr = malloc(size, M_DEVBUF, M_ZERO | M_NOWAIT); - if (NULL != vaddr) { - VXGE_OS_MEMORY_CHECK_MALLOC((void *)vaddr, size, file, line) - vxge_os_memzero(vaddr, size); - } - - return (vaddr); -} - -static inline void -vxge_mem_free_ex(const void *vaddr, u_long size, const char *file, int line) -{ - if (NULL != vaddr) { - VXGE_OS_MEMORY_CHECK_FREE(vaddr, size, file, line) - free(__DECONST(void *, vaddr), M_DEVBUF); - } -} - -#define vxge_os_malloc(pdev, size) \ - vxge_mem_alloc_ex(size, __FILE__, __LINE__) - -#define vxge_os_free(pdev, vaddr, size) \ - vxge_mem_free_ex(vaddr, size, __FILE__, __LINE__) - -#define vxge_mem_alloc(size) \ - vxge_mem_alloc_ex(size, __FILE__, __LINE__) - -#define vxge_mem_free(vaddr, size) \ - vxge_mem_free_ex(vaddr, size, __FILE__, __LINE__) - -#define vxge_free_packet(x) \ - if (NULL != x) { m_freem(x); x = NULL; } - -/* - * --------------------------- pci primitives ------------------------------ - */ -#define vxge_os_pci_read8(pdev, cfgh, where, val) \ - (*(val) = pci_read_config(pdev->ndev, where, 1)) - -#define vxge_os_pci_write8(pdev, cfgh, where, val) \ - pci_write_config(pdev->ndev, where, val, 1) - -#define vxge_os_pci_read16(pdev, cfgh, where, val) \ - (*(val) = pci_read_config(pdev->ndev, where, 2)) - -#define vxge_os_pci_write16(pdev, cfgh, where, val) \ - pci_write_config(pdev->ndev, where, val, 2) - -#define vxge_os_pci_read32(pdev, cfgh, where, val) \ - (*(val) = pci_read_config(pdev->ndev, where, 4)) - -#define vxge_os_pci_write32(pdev, cfgh, where, val) \ - pci_write_config(pdev->ndev, where, val, 4) - -static inline u32 -vxge_os_pci_res_len(pci_dev_h pdev, pci_reg_h regh) -{ - return (((vxge_bus_res_t *) regh)->bus_res_len); -} - -static inline u8 -vxge_os_pio_mem_read8(pci_dev_h pdev, pci_reg_h regh, void *addr) -{ - caddr_t vaddr = - (caddr_t) (((vxge_bus_res_t *) (regh))->bar_start_addr); - - return bus_space_read_1(((vxge_bus_res_t *) regh)->bus_space_tag, - ((vxge_bus_res_t *) regh)->bus_space_handle, - (bus_size_t) ((caddr_t) (addr) - vaddr)); -} - -static inline u16 -vxge_os_pio_mem_read16(pci_dev_h pdev, pci_reg_h regh, void *addr) -{ - caddr_t vaddr = - (caddr_t) (((vxge_bus_res_t *) (regh))->bar_start_addr); - - return bus_space_read_2(((vxge_bus_res_t *) regh)->bus_space_tag, - ((vxge_bus_res_t *) regh)->bus_space_handle, - (bus_size_t) ((caddr_t) (addr) - vaddr)); -} - -static inline u32 -vxge_os_pio_mem_read32(pci_dev_h pdev, pci_reg_h regh, void *addr) -{ - caddr_t vaddr = - (caddr_t) (((vxge_bus_res_t *) (regh))->bar_start_addr); - - return bus_space_read_4(((vxge_bus_res_t *) regh)->bus_space_tag, - ((vxge_bus_res_t *) regh)->bus_space_handle, - (bus_size_t) ((caddr_t) (addr) - vaddr)); -} - -static inline u64 -vxge_os_pio_mem_read64(pci_dev_h pdev, pci_reg_h regh, void *addr) -{ - u64 val, val_l, val_u; - - caddr_t vaddr = - (caddr_t) (((vxge_bus_res_t *) (regh))->bar_start_addr); - - val_l = bus_space_read_4(((vxge_bus_res_t *) regh)->bus_space_tag, - ((vxge_bus_res_t *) regh)->bus_space_handle, - (bus_size_t) (((caddr_t) addr) + 4 - vaddr)); - - val_u = bus_space_read_4(((vxge_bus_res_t *) regh)->bus_space_tag, - ((vxge_bus_res_t *) regh)->bus_space_handle, - (bus_size_t) ((caddr_t) (addr) - vaddr)); - - val = ((val_l << 32) | val_u); - return (val); -} - -static inline void -vxge_os_pio_mem_write8(pci_dev_h pdev, pci_reg_h regh, u8 val, void *addr) -{ - caddr_t vaddr = - (caddr_t) (((vxge_bus_res_t *) regh)->bar_start_addr); - - bus_space_write_1(((vxge_bus_res_t *) regh)->bus_space_tag, - ((vxge_bus_res_t *) regh)->bus_space_handle, - (bus_size_t) ((caddr_t) (addr) - vaddr), val); -} - -static inline void -vxge_os_pio_mem_write16(pci_dev_h pdev, pci_reg_h regh, u16 val, void *addr) -{ - caddr_t vaddr = - (caddr_t) (((vxge_bus_res_t *) (regh))->bar_start_addr); - - bus_space_write_2(((vxge_bus_res_t *) regh)->bus_space_tag, - ((vxge_bus_res_t *) regh)->bus_space_handle, - (bus_size_t) ((caddr_t) (addr) - vaddr), val); -} - -static inline void -vxge_os_pio_mem_write32(pci_dev_h pdev, pci_reg_h regh, u32 val, void *addr) -{ - caddr_t vaddr = - (caddr_t) (((vxge_bus_res_t *) (regh))->bar_start_addr); - - bus_space_write_4(((vxge_bus_res_t *) regh)->bus_space_tag, - ((vxge_bus_res_t *) regh)->bus_space_handle, - (bus_size_t) ((caddr_t) (addr) - vaddr), val); -} - -static inline void -vxge_os_pio_mem_write64(pci_dev_h pdev, pci_reg_h regh, u64 val, void *addr) -{ - u32 val_l = (u32) (val & 0xffffffff); - u32 val_u = (u32) (val >> 32); - - vxge_os_pio_mem_write32(pdev, regh, val_l, addr); - vxge_os_pio_mem_write32(pdev, regh, val_u, (caddr_t) addr + 4); -} - -#define vxge_os_flush_bridge vxge_os_pio_mem_read64 - -/* - * --------------------------- dma primitives ----------------------------- - */ -#define VXGE_OS_DMA_DIR_TODEVICE 0 -#define VXGE_OS_DMA_DIR_FROMDEVICE 1 -#define VXGE_OS_DMA_DIR_BIDIRECTIONAL 2 -#define VXGE_OS_INVALID_DMA_ADDR ((bus_addr_t)0) - -static void -vxge_dmamap_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error) -{ - if (error) - return; - - *(bus_addr_t *) arg = segs->ds_addr; -} - -static inline void * -vxge_os_dma_malloc(pci_dev_h pdev, u_long bytes, int dma_flags, - pci_dma_h * p_dmah, pci_dma_acc_h * p_dma_acch) -{ - int error = 0; - bus_addr_t bus_addr = BUS_SPACE_MAXADDR; - bus_size_t boundary, max_size, alignment = PAGE_SIZE; - - if (bytes > PAGE_SIZE) { - boundary = 0; - max_size = bytes; - } else { - boundary = PAGE_SIZE; - max_size = PAGE_SIZE; - } - - error = bus_dma_tag_create( - bus_get_dma_tag(pdev->ndev), /* Parent */ - alignment, /* Alignment */ - boundary, /* Bounds */ - bus_addr, /* Low Address */ - bus_addr, /* High Address */ - NULL, /* Filter Func */ - NULL, /* Filter Func Argument */ - bytes, /* Maximum Size */ - 1, /* Number of Segments */ - max_size, /* Maximum Segment Size */ - BUS_DMA_ALLOCNOW, /* Flags */ - NULL, /* Lock Func */ - NULL, /* Lock Func Arguments */ - &(p_dmah->dma_tag)); /* DMA Tag */ - - if (error != 0) { - device_printf(pdev->ndev, "bus_dma_tag_create failed\n"); - goto _exit0; - } - - p_dmah->dma_size = bytes; - error = bus_dmamem_alloc(p_dmah->dma_tag, (void **)&p_dmah->dma_vaddr, - (BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT), - &p_dmah->dma_map); - if (error != 0) { - device_printf(pdev->ndev, "bus_dmamem_alloc failed\n"); - goto _exit1; - } - - VXGE_OS_MEMORY_CHECK_MALLOC(p_dmah->dma_vaddr, p_dmah->dma_size, - __FILE__, __LINE__); - - return (p_dmah->dma_vaddr); - -_exit1: - bus_dma_tag_destroy(p_dmah->dma_tag); -_exit0: - return (NULL); -} - -static inline void -vxge_dma_free(pci_dev_h pdev, const void *vaddr, u_long size, - pci_dma_h *p_dmah, pci_dma_acc_h *p_dma_acch, - const char *file, int line) -{ - VXGE_OS_MEMORY_CHECK_FREE(p_dmah->dma_vaddr, size, file, line) - - bus_dmamem_free(p_dmah->dma_tag, p_dmah->dma_vaddr, p_dmah->dma_map); - bus_dma_tag_destroy(p_dmah->dma_tag); - - p_dmah->dma_tag = NULL; - p_dmah->dma_vaddr = NULL; -} - -extern void -vxge_hal_blockpool_block_add(void *, void *, u32, pci_dma_h *, pci_dma_acc_h *); - -static inline void -vxge_os_dma_malloc_async(pci_dev_h pdev, void *devh, - u_long size, int dma_flags) -{ - pci_dma_h dma_h; - pci_dma_acc_h acc_handle; - - void *block_addr = NULL; - - block_addr = vxge_os_dma_malloc(pdev, size, dma_flags, - &dma_h, &acc_handle); - - vxge_hal_blockpool_block_add(devh, block_addr, size, - &dma_h, &acc_handle); -} - -static inline void -vxge_os_dma_sync(pci_dev_h pdev, pci_dma_h dmah, dma_addr_t dma_paddr, - u64 dma_offset, size_t length, int dir) -{ - bus_dmasync_op_t dmasync_op; - - switch (dir) { - case VXGE_OS_DMA_DIR_TODEVICE: - dmasync_op = BUS_DMASYNC_PREWRITE | BUS_DMASYNC_POSTWRITE; - break; - - case VXGE_OS_DMA_DIR_FROMDEVICE: - dmasync_op = BUS_DMASYNC_PREREAD | BUS_DMASYNC_POSTREAD; - break; - - default: - case VXGE_OS_DMA_DIR_BIDIRECTIONAL: - dmasync_op = BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE; - break; - } - - bus_dmamap_sync(dmah.dma_tag, dmah.dma_map, dmasync_op); -} - -static inline dma_addr_t -vxge_os_dma_map(pci_dev_h pdev, pci_dma_h dmah, void *vaddr, u_long size, - int dir, int dma_flags) -{ - int error; - - error = bus_dmamap_load(dmah.dma_tag, dmah.dma_map, dmah.dma_vaddr, - dmah.dma_size, vxge_dmamap_cb, &(dmah.dma_paddr), BUS_DMA_NOWAIT); - - if (error != 0) - return (VXGE_OS_INVALID_DMA_ADDR); - - dmah.dma_size = size; - return (dmah.dma_paddr); -} - -static inline void -vxge_os_dma_unmap(pci_dev_h pdev, pci_dma_h dmah, dma_addr_t dma_paddr, - u32 size, int dir) -{ - bus_dmamap_unload(dmah.dma_tag, dmah.dma_map); -} - -#define vxge_os_dma_free(pdev, vaddr, size, dma_flags, p_dma_acch, p_dmah) \ - vxge_dma_free(pdev, vaddr, size, p_dma_acch, p_dmah, \ - __FILE__, __LINE__) - -static inline int -vxge_os_is_my_packet(void *pdev, unsigned long addr) -{ - return (0); -} - -#endif /* _VXGE_OSDEP_H_ */ Index: sys/dev/vxge/vxge.h =================================================================== --- sys/dev/vxge/vxge.h +++ sys/dev/vxge/vxge.h @@ -1,621 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef _VXGE_H_ -#define _VXGE_H_ - -#include -#include -#include "vxge-firmware.h" - -#define VXGE_GET_PARAM(str_kenv, to, param, hardcode) { \ - static int __CONCAT(param, __LINE__); \ - if (testenv(str_kenv) == 1) \ - TUNABLE_INT_FETCH(str_kenv, \ - &__CONCAT(param, __LINE__)); \ - else \ - __CONCAT(param, __LINE__) = hardcode; \ - \ - to.param = __CONCAT(param, __LINE__); \ -} - -#define VXGE_BUFFER_ALIGN(buffer_length, to) { \ - if (buffer_length % to) \ - buffer_length += \ - (to - (buffer_length % to)); \ -} - -#define VXGE_HAL_VPATH_MSIX_ACTIVE 4 -#define VXGE_HAL_VPATH_MSIX_ALARM_ID 2 -#define VXGE_MSIX_ALARM_ID(hldev, i) \ - ((__hal_device_t *) hldev)->first_vp_id * \ - VXGE_HAL_VPATH_MSIX_ACTIVE + i; - -#define VXGE_DUAL_PORT_MODE 2 -#define VXGE_DUAL_PORT_MAP 0xAAAAULL -#define VXGE_BAUDRATE 1000000000 -#define VXGE_MAX_SEGS VXGE_HAL_MAX_FIFO_FRAGS -#define VXGE_TSO_SIZE 65600 -#define VXGE_STATS_BUFFER_SIZE 65536 -#define VXGE_PRINT_BUF_SIZE 128 -#define VXGE_PMD_INFO_LEN 24 -#define VXGE_RXD_REPLENISH_COUNT 4 -#define VXGE_TX_LOW_THRESHOLD 32 - -/* Default configuration parameters */ -#define VXGE_DEFAULT_USER_HARDCODED -1 -#define VXGE_DEFAULT_CONFIG_VALUE 0xFF -#define VXGE_DEFAULT_CONFIG_ENABLE 1 -#define VXGE_DEFAULT_CONFIG_DISABLE 0 - -#if __FreeBSD_version >= 800000 -#define VXGE_DEFAULT_CONFIG_MQ_ENABLE 1 -#else -#define VXGE_DEFAULT_CONFIG_MQ_ENABLE 0 -#endif - -#define VXGE_DEFAULT_CONFIG_IFQ_MAXLEN 1024 - -#define VXGE_DEFAULT_BR_SIZE 4096 -#define VXGE_DEFAULT_RTH_BUCKET_SIZE 8 -#define VXGE_DEFAULT_RING_BLOCK 2 -#define VXGE_DEFAULT_SUPPORTED_DEVICES 1 -#define VXGE_DEFAULT_DEVICE_POLL_MILLIS 2000 -#define VXGE_DEFAULT_FIFO_ALIGNED_FRAGS 1 -#define VXGE_DEFAULT_VPATH_PRIORITY_LOW 3 -#define VXGE_DEFAULT_VPATH_PRIORITY_HIGH 0 -#define VXGE_DEFAULT_ALL_VID_ENABLE \ - VXGE_HAL_VPATH_RPA_ALL_VID_ENABLE - -#define VXGE_DEFAULT_STRIP_VLAN_TAG \ - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_ENABLE - -#define VXGE_DEFAULT_TTI_BTIMER_VAL 250000 -#define VXGE_DEFAULT_TTI_LTIMER_VAL 80 -#define VXGE_DEFAULT_TTI_RTIMER_VAL 0 - -#define VXGE_DEFAULT_RTI_BTIMER_VAL 250 -#define VXGE_DEFAULT_RTI_LTIMER_VAL 100 -#define VXGE_DEFAULT_RTI_RTIMER_VAL 0 - -#define VXGE_TTI_RTIMER_ADAPT_VAL 10 -#define VXGE_RTI_RTIMER_ADAPT_VAL 15 - -#define VXGE_DEFAULT_TTI_TX_URANGE_A 5 -#define VXGE_DEFAULT_TTI_TX_URANGE_B 15 -#define VXGE_DEFAULT_TTI_TX_URANGE_C 40 - -#define VXGE_DEFAULT_RTI_RX_URANGE_A 5 -#define VXGE_DEFAULT_RTI_RX_URANGE_B 15 -#define VXGE_DEFAULT_RTI_RX_URANGE_C 40 - -#define VXGE_DEFAULT_TTI_TX_UFC_A 1 -#define VXGE_DEFAULT_TTI_TX_UFC_B 5 -#define VXGE_DEFAULT_TTI_TX_UFC_C 15 -#define VXGE_DEFAULT_TTI_TX_UFC_D 40 - -#define VXGE_DEFAULT_RTI_RX_UFC_A 1 -#define VXGE_DEFAULT_RTI_RX_UFC_B 20 -#define VXGE_DEFAULT_RTI_RX_UFC_C 40 -#define VXGE_DEFAULT_RTI_RX_UFC_D 100 - -#define VXGE_MAX_RX_INTERRUPT_COUNT 100 -#define VXGE_MAX_TX_INTERRUPT_COUNT 200 - -#define is_multi_func(func_mode) \ - ((func_mode == VXGE_HAL_PCIE_FUNC_MODE_MF8_VP2) || \ - (func_mode == VXGE_HAL_PCIE_FUNC_MODE_MF2_VP8) || \ - (func_mode == VXGE_HAL_PCIE_FUNC_MODE_MF4_VP4) || \ - (func_mode == VXGE_HAL_PCIE_FUNC_MODE_MF8P_VP2)) - -#define is_single_func(func_mode) \ - (func_mode == VXGE_HAL_PCIE_FUNC_MODE_SF1_VP17) - -#define VXGE_DRV_STATS(v, x) v->driver_stats.x++ -#define VXGE_MAX_MSIX_MESSAGES (VXGE_HAL_MAX_VIRTUAL_PATHS * 2 + 2) - -#define VXGE_DRV_LOCK(x) mtx_lock(&(x)->mtx_drv) -#define VXGE_DRV_UNLOCK(x) mtx_unlock(&(x)->mtx_drv) -#define VXGE_DRV_LOCK_DESTROY(x) mtx_destroy(&(x)->mtx_drv) -#define VXGE_DRV_LOCK_ASSERT(x) mtx_assert(&(x)->mtx_drv, MA_OWNED) - -#define VXGE_TX_LOCK(x) mtx_lock(&(x)->mtx_tx) -#define VXGE_TX_TRYLOCK(x) mtx_trylock(&(x)->mtx_tx) -#define VXGE_TX_UNLOCK(x) mtx_unlock(&(x)->mtx_tx) -#define VXGE_TX_LOCK_DESTROY(x) mtx_destroy(&(x)->mtx_tx) -#define VXGE_TX_LOCK_ASSERT(x) mtx_assert(&(x)->mtx_tx, MA_OWNED) - -const char * -vxge_port_mode[6] = -{ - "Default", - "Reserved", - "Active/Passive", - "Single Port", - "Dual Port", - "Disabled" -}; - -const char * -vxge_port_failure[3] = -{ - "No Failover", - "Failover only", - "Failover & Failback" -}; - -/* IOCTLs to identify vxge-manage requests */ -typedef enum _vxge_query_device_info_e { - - VXGE_GET_PCI_CONF = 100, - VXGE_GET_MRPCIM_STATS = 101, - VXGE_GET_DEVICE_STATS = 102, - VXGE_GET_DEVICE_HWINFO = 103, - VXGE_GET_DRIVER_STATS = 104, - VXGE_GET_INTR_STATS = 105, - VXGE_GET_VERSION = 106, - VXGE_GET_TCODE = 107, - VXGE_GET_VPATH_COUNT = 108, - VXGE_GET_BANDWIDTH = 109, - VXGE_SET_BANDWIDTH = 110, - VXGE_GET_PORT_MODE = 111, - VXGE_SET_PORT_MODE = 112 - -} vxge_query_device_info_e; - -typedef enum _vxge_firmware_upgrade_e { - - VXGE_FW_UPGRADE_NONE = 0, - VXGE_FW_UPGRADE_ALL = 1, - VXGE_FW_UPGRADE_FORCE = 2 - -} vxge_firmware_upgrade_e; - -typedef enum _vxge_free_resources_e { - - VXGE_FREE_NONE = 0, - VXGE_FREE_MUTEX = 1, - VXGE_FREE_PCI_INFO = 2, - VXGE_FREE_BAR0 = 3, - VXGE_FREE_BAR1 = 4, - VXGE_FREE_BAR2 = 5, - VXGE_FREE_ISR_RESOURCE = 6, - VXGE_FREE_MEDIA = 7, - VXGE_FREE_INTERFACE = 8, - VXGE_FREE_DEVICE_CONFIG = 9, - VXGE_FREE_TERMINATE_DEVICE = 10, - VXGE_FREE_TERMINATE_DRIVER = 11, - VXGE_DISABLE_PCI_BUSMASTER = 12, - VXGE_FREE_VPATH = 13, - VXGE_FREE_ALL = 14 - -} vxge_free_resources_e; - -typedef enum _vxge_device_attributes_e { - - VXGE_PRINT_DRV_VERSION = 0, - VXGE_PRINT_PCIE_INFO = 1, - VXGE_PRINT_SERIAL_NO = 2, - VXGE_PRINT_PART_NO = 3, - VXGE_PRINT_FW_VERSION = 4, - VXGE_PRINT_FW_DATE = 5, - VXGE_PRINT_FUNC_MODE = 6, - VXGE_PRINT_INTR_MODE = 7, - VXGE_PRINT_VPATH_COUNT = 8, - VXGE_PRINT_MTU_SIZE = 9, - VXGE_PRINT_LRO_MODE = 10, - VXGE_PRINT_RTH_MODE = 11, - VXGE_PRINT_TSO_MODE = 12, - VXGE_PRINT_PMD_PORTS_0 = 13, - VXGE_PRINT_PMD_PORTS_1 = 14, - VXGE_PRINT_ADAPTER_TYPE = 15, - VXGE_PRINT_PORT_MODE = 16, - VXGE_PRINT_PORT_FAILURE = 17, - VXGE_PRINT_ACTIVE_PORT = 18, - VXGE_PRINT_L2SWITCH_MODE = 19 - -} vxge_device_attribute_e; - -typedef struct _vxge_isr_info_t { - - int irq_rid; - void *irq_handle; - struct resource *irq_res; - -} vxge_isr_info_t; - -typedef struct _vxge_drv_stats_t { - - u64 isr_msix; - - u64 tx_xmit; - u64 tx_posted; - u64 tx_compl; - u64 tx_tso; - u64 tx_tcode; - u64 tx_low_dtr_cnt; - u64 tx_reserve_failed; - u64 tx_no_dma_setup; - u64 tx_max_frags; - u64 tx_again; - - u64 rx_compl; - u64 rx_tcode; - u64 rx_no_buf; - u64 rx_map_fail; - u64 rx_lro_queued; - u64 rx_lro_flushed; - -} vxge_drv_stats_t; - -typedef struct vxge_dev_t vxge_dev_t; - -/* Rx descriptor private structure */ -typedef struct _vxge_rxd_priv_t { - - mbuf_t mbuf_pkt; - bus_size_t dma_sizes[1]; - bus_addr_t dma_addr[1]; - bus_dmamap_t dma_map; - -} vxge_rxd_priv_t; - -/* Tx descriptor private structure */ -typedef struct _vxge_txdl_priv_t { - - mbuf_t mbuf_pkt; - bus_dmamap_t dma_map; - bus_dma_segment_t dma_buffers[VXGE_MAX_SEGS]; - -} vxge_txdl_priv_t; - -typedef struct _vxge_vpath_t { - - u32 vp_id; - u32 vp_index; - u32 is_open; - u32 lro_enable; - int msix_vec; - - int msix_vec_alarm; - u32 is_configured; - u64 rxd_posted; - macaddr_t mac_addr; - macaddr_t mac_mask; - - int tx_ticks; - int rx_ticks; - - u32 tti_rtimer_val; - u32 rti_rtimer_val; - - u64 tx_interrupts; - u64 rx_interrupts; - - int tx_intr_coalesce; - int rx_intr_coalesce; - - vxge_dev_t *vdev; - vxge_hal_vpath_h handle; - char mtx_tx_name[16]; - - bus_dma_tag_t dma_tag_tx; - bus_dma_tag_t dma_tag_rx; - bus_dmamap_t extra_dma_map; - - vxge_drv_stats_t driver_stats; - struct mtx mtx_tx; - struct lro_ctrl lro; - -#if __FreeBSD_version >= 800000 - struct buf_ring *br; -#endif - -} vxge_vpath_t; - -typedef struct _vxge_bw_info_t { - - char query; - u64 func_id; - int priority; - int bandwidth; - -} vxge_bw_info_t; - -typedef struct _vxge_port_info_t { - - char query; - int port_mode; - int port_failure; - -} vxge_port_info_t; - -typedef struct _vxge_device_hw_info_t { - - vxge_hal_device_hw_info_t hw_info; - vxge_hal_xmac_nwif_dp_mode port_mode; - vxge_hal_xmac_nwif_behavior_on_failure port_failure; - -} vxge_device_hw_info_t; - -typedef struct _vxge_config_t { - - u32 intr_mode; - int lro_enable; - int rth_enable; - int tso_enable; - int tx_steering; - int rth_bkt_sz; - int ifq_maxlen; - int no_of_vpath; - int ifq_multi; - int intr_coalesce; - int low_latency; - int l2_switch; - int port_mode; - int function_mode; - char nic_attr[20][128]; - - vxge_hal_device_hw_info_t hw_info; - vxge_firmware_upgrade_e fw_option; - vxge_hal_xmac_nwif_behavior_on_failure port_failure; - - vxge_bw_info_t bw_info[VXGE_HAL_MAX_FUNCTIONS]; - vxge_isr_info_t isr_info[VXGE_MAX_MSIX_MESSAGES]; - -} vxge_config_t; - -struct vxge_dev_t { - - device_t ndev; - - bool is_privilaged; - bool is_initialized; - bool is_active; - int intr_count; - bool fw_upgrade; - int no_of_vpath; - u64 active_port; - u32 no_of_func; - u32 hw_fw_version; - u32 max_supported_vpath; - int rx_mbuf_sz; - int if_flags; - int ifm_optics; - ifnet_t ifp; - - vxge_hal_xmac_nwif_dp_mode port_mode; - vxge_hal_xmac_nwif_l2_switch_status l2_switch; - vxge_hal_xmac_nwif_behavior_on_failure port_failure; - - char ndev_name[16]; - char mtx_drv_name[16]; - - struct mtx mtx_drv; - struct ifmedia media; - - vxge_pci_info_t *pdev; - vxge_hal_device_t *devh; - vxge_vpath_t *vpaths; - vxge_config_t config; - vxge_hal_device_config_t *device_config; - vxge_hal_vpath_h vpath_handles[VXGE_HAL_MAX_VIRTUAL_PATHS]; -}; - -int vxge_probe(device_t); -int vxge_attach(device_t); -int vxge_detach(device_t); -int vxge_shutdown(device_t); - -int vxge_alloc_resources(vxge_dev_t *); -int vxge_alloc_isr_resources(vxge_dev_t *); -int vxge_alloc_bar_resources(vxge_dev_t *, int); -void vxge_free_resources(device_t, vxge_free_resources_e); -void vxge_free_isr_resources(vxge_dev_t *); -void vxge_free_bar_resources(vxge_dev_t *, int); - -int vxge_device_hw_info_get(vxge_dev_t *); -int vxge_firmware_verify(vxge_dev_t *); - -vxge_hal_status_e -vxge_driver_init(vxge_dev_t *); - -vxge_hal_status_e -vxge_firmware_upgrade(vxge_dev_t *); - -vxge_hal_status_e -vxge_func_mode_set(vxge_dev_t *); - -vxge_hal_status_e -vxge_port_mode_set(vxge_dev_t *); - -vxge_hal_status_e -vxge_port_behavior_on_failure_set(vxge_dev_t *); - -vxge_hal_status_e -vxge_l2switch_mode_set(vxge_dev_t *); - -void vxge_init(void *); -void vxge_init_locked(vxge_dev_t *); - -void vxge_stop(vxge_dev_t *); -void vxge_stop_locked(vxge_dev_t *); - -void vxge_reset(vxge_dev_t *); -int vxge_ifp_setup(device_t); -int vxge_isr_setup(vxge_dev_t *); - -void vxge_media_init(vxge_dev_t *); -int vxge_media_change(ifnet_t); -void vxge_media_status(ifnet_t, struct ifmediareq *); - -void vxge_mutex_init(vxge_dev_t *); -void vxge_mutex_destroy(vxge_dev_t *); -void vxge_link_up(vxge_hal_device_h, void *); -void vxge_link_down(vxge_hal_device_h, void *); -void vxge_crit_error(vxge_hal_device_h, void *, vxge_hal_event_e, u64); - -int vxge_ioctl(ifnet_t, u_long, caddr_t); -int vxge_ioctl_regs(vxge_dev_t *, struct ifreq *); -int vxge_ioctl_stats(vxge_dev_t *, struct ifreq *); -void vxge_promisc_set(vxge_dev_t *); - -void vxge_vpath_config(vxge_dev_t *); -int vxge_vpath_open(vxge_dev_t *); -void vxge_vpath_close(vxge_dev_t *); -void vxge_vpath_reset(vxge_dev_t *); - -int vxge_change_mtu(vxge_dev_t *, unsigned long); - -u32 vxge_ring_length_get(u32); - -void vxge_isr_line(void *); -int vxge_isr_filter(void *); -void vxge_isr_msix(void *); -void vxge_isr_msix_alarm(void *); - -void -vxge_intr_coalesce_tx(vxge_vpath_t *); - -void -vxge_intr_coalesce_rx(vxge_vpath_t *); - -vxge_hal_status_e -vxge_msix_enable(vxge_dev_t *); - -vxge_hal_status_e -vxge_rth_config(vxge_dev_t *); - -int vxge_dma_tags_create(vxge_vpath_t *); -void vxge_device_hw_info_print(vxge_dev_t *); -int vxge_driver_config(vxge_dev_t *); - -#if __FreeBSD_version >= 800000 - -int -vxge_mq_send(ifnet_t, mbuf_t); - -static inline int -vxge_mq_send_locked(ifnet_t, vxge_vpath_t *, mbuf_t); - -void -vxge_mq_qflush(ifnet_t); - -#endif - -void -vxge_send(ifnet_t); - -static inline void -vxge_send_locked(ifnet_t, vxge_vpath_t *); - -static inline int -vxge_xmit(ifnet_t, vxge_vpath_t *, mbuf_t *); - -static inline int -vxge_dma_mbuf_coalesce(bus_dma_tag_t, bus_dmamap_t, - mbuf_t *, bus_dma_segment_t *, int *); - -static inline void -vxge_rx_checksum(vxge_hal_ring_rxd_info_t, mbuf_t); - -static inline void -vxge_rx_input(ifnet_t, mbuf_t, vxge_vpath_t *); - -static inline vxge_hal_vpath_h -vxge_vpath_handle_get(vxge_dev_t *, int); - -static inline int -vxge_vpath_get(vxge_dev_t *, mbuf_t); - -void -vxge_tso_config(vxge_dev_t *); - -vxge_hal_status_e -vxge_tx_replenish(vxge_hal_vpath_h, vxge_hal_txdl_h, void *, - u32, void *, vxge_hal_reopen_e); - -vxge_hal_status_e -vxge_tx_compl(vxge_hal_vpath_h, vxge_hal_txdl_h, void *, - vxge_hal_fifo_tcode_e, void *); - -void -vxge_tx_term(vxge_hal_vpath_h, vxge_hal_txdl_h, void *, - vxge_hal_txdl_state_e, void *, vxge_hal_reopen_e); - -vxge_hal_status_e -vxge_rx_replenish(vxge_hal_vpath_h, vxge_hal_rxd_h, void *, - u32, void *, vxge_hal_reopen_e); - -vxge_hal_status_e -vxge_rx_compl(vxge_hal_vpath_h, vxge_hal_rxd_h, void *, u8, void *); - -void -vxge_rx_term(vxge_hal_vpath_h, vxge_hal_rxd_h, void *, - vxge_hal_rxd_state_e, void *, vxge_hal_reopen_e); - -void -vxge_rx_rxd_1b_get(vxge_vpath_t *, vxge_hal_rxd_h, void *); - -int -vxge_rx_rxd_1b_set(vxge_vpath_t *, vxge_hal_rxd_h, void *); - -int -vxge_bw_priority_config(vxge_dev_t *); - -vxge_hal_status_e -vxge_bw_priority_get(vxge_dev_t *, vxge_bw_info_t *); - -int -vxge_bw_priority_set(vxge_dev_t *, struct ifreq *); - -int -vxge_bw_priority_update(vxge_dev_t *, u32, bool); - -int -vxge_port_mode_update(vxge_dev_t *); - -vxge_hal_status_e -vxge_port_mode_get(vxge_dev_t *, vxge_port_info_t *); - -void -vxge_pmd_port_type_get(vxge_dev_t *, u32, char *, u8); - -void -vxge_active_port_update(vxge_dev_t *); - -static inline void -vxge_null_terminate(char *, size_t); - -#endif /* _VXGE_H_ */ Index: sys/dev/vxge/vxge.c =================================================================== --- sys/dev/vxge/vxge.c +++ sys/dev/vxge/vxge.c @@ -1,4198 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -static int vxge_pci_bd_no = -1; -static u32 vxge_drv_copyright = 0; -static u32 vxge_dev_ref_count = 0; -static u32 vxge_dev_req_reboot = 0; - -static int vpath_selector[VXGE_HAL_MAX_VIRTUAL_PATHS] = \ -{0, 1, 3, 3, 7, 7, 7, 7, 15, 15, 15, 15, 15, 15, 15, 15, 31}; - -/* - * vxge_probe - * Probes for x3100 devices - */ -int -vxge_probe(device_t ndev) -{ - int err = ENXIO; - - u16 pci_bd_no = 0; - u16 pci_vendor_id = 0; - u16 pci_device_id = 0; - - char adapter_name[64]; - - pci_vendor_id = pci_get_vendor(ndev); - if (pci_vendor_id != VXGE_PCI_VENDOR_ID) - goto _exit0; - - pci_device_id = pci_get_device(ndev); - - if (pci_device_id == VXGE_PCI_DEVICE_ID_TITAN_1) { - - pci_bd_no = (pci_get_bus(ndev) | pci_get_slot(ndev)); - - snprintf(adapter_name, sizeof(adapter_name), - VXGE_ADAPTER_NAME, pci_get_revid(ndev)); - device_set_desc_copy(ndev, adapter_name); - - if (!vxge_drv_copyright) { - device_printf(ndev, VXGE_COPYRIGHT); - vxge_drv_copyright = 1; - } - - if (vxge_dev_req_reboot == 0) { - vxge_pci_bd_no = pci_bd_no; - err = BUS_PROBE_DEFAULT; - } else { - if (pci_bd_no != vxge_pci_bd_no) { - vxge_pci_bd_no = pci_bd_no; - err = BUS_PROBE_DEFAULT; - } - } - } - -_exit0: - return (err); -} - -/* - * vxge_attach - * Connects driver to the system if probe was success @ndev handle - */ -int -vxge_attach(device_t ndev) -{ - int err = 0; - vxge_dev_t *vdev; - vxge_hal_device_t *hldev = NULL; - vxge_hal_device_attr_t device_attr; - vxge_free_resources_e error_level = VXGE_FREE_NONE; - - vxge_hal_status_e status = VXGE_HAL_OK; - - /* Get per-ndev buffer */ - vdev = (vxge_dev_t *) device_get_softc(ndev); - if (!vdev) - goto _exit0; - - bzero(vdev, sizeof(vxge_dev_t)); - - vdev->ndev = ndev; - strlcpy(vdev->ndev_name, "vxge", sizeof(vdev->ndev_name)); - - err = vxge_driver_config(vdev); - if (err != 0) - goto _exit0; - - /* Initialize HAL driver */ - status = vxge_driver_init(vdev); - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, "Failed to initialize driver\n"); - goto _exit0; - } - /* Enable PCI bus-master */ - pci_enable_busmaster(ndev); - - /* Allocate resources */ - err = vxge_alloc_resources(vdev); - if (err != 0) { - device_printf(vdev->ndev, "resource allocation failed\n"); - goto _exit0; - } - - err = vxge_device_hw_info_get(vdev); - if (err != 0) { - error_level = VXGE_FREE_BAR2; - goto _exit0; - } - - /* Get firmware default values for Device Configuration */ - vxge_hal_device_config_default_get(vdev->device_config); - - /* Customize Device Configuration based on User request */ - vxge_vpath_config(vdev); - - /* Allocate ISR resources */ - err = vxge_alloc_isr_resources(vdev); - if (err != 0) { - error_level = VXGE_FREE_ISR_RESOURCE; - device_printf(vdev->ndev, "isr resource allocation failed\n"); - goto _exit0; - } - - /* HAL attributes */ - device_attr.bar0 = (u8 *) vdev->pdev->bar_info[0]; - device_attr.bar1 = (u8 *) vdev->pdev->bar_info[1]; - device_attr.bar2 = (u8 *) vdev->pdev->bar_info[2]; - device_attr.regh0 = (vxge_bus_res_t *) vdev->pdev->reg_map[0]; - device_attr.regh1 = (vxge_bus_res_t *) vdev->pdev->reg_map[1]; - device_attr.regh2 = (vxge_bus_res_t *) vdev->pdev->reg_map[2]; - device_attr.irqh = (pci_irq_h) vdev->config.isr_info[0].irq_handle; - device_attr.cfgh = vdev->pdev; - device_attr.pdev = vdev->pdev; - - /* Initialize HAL Device */ - status = vxge_hal_device_initialize((vxge_hal_device_h *) &hldev, - &device_attr, vdev->device_config); - if (status != VXGE_HAL_OK) { - error_level = VXGE_FREE_ISR_RESOURCE; - device_printf(vdev->ndev, "hal device initialization failed\n"); - goto _exit0; - } - - vdev->devh = hldev; - vxge_hal_device_private_set(hldev, vdev); - - if (vdev->is_privilaged) { - err = vxge_firmware_verify(vdev); - if (err != 0) { - vxge_dev_req_reboot = 1; - error_level = VXGE_FREE_TERMINATE_DEVICE; - goto _exit0; - } - } - - /* Allocate memory for vpath */ - vdev->vpaths = (vxge_vpath_t *) - vxge_mem_alloc(vdev->no_of_vpath * sizeof(vxge_vpath_t)); - - if (vdev->vpaths == NULL) { - error_level = VXGE_FREE_TERMINATE_DEVICE; - device_printf(vdev->ndev, "vpath memory allocation failed\n"); - goto _exit0; - } - - vdev->no_of_func = 1; - if (vdev->is_privilaged) { - - vxge_hal_func_mode_count(vdev->devh, - vdev->config.hw_info.function_mode, &vdev->no_of_func); - - vxge_bw_priority_config(vdev); - } - - /* Initialize mutexes */ - vxge_mutex_init(vdev); - - /* Initialize Media */ - vxge_media_init(vdev); - - err = vxge_ifp_setup(ndev); - if (err != 0) { - error_level = VXGE_FREE_MEDIA; - device_printf(vdev->ndev, "setting up interface failed\n"); - goto _exit0; - } - - err = vxge_isr_setup(vdev); - if (err != 0) { - error_level = VXGE_FREE_INTERFACE; - device_printf(vdev->ndev, - "failed to associate interrupt handler with device\n"); - goto _exit0; - } - vxge_device_hw_info_print(vdev); - vdev->is_active = TRUE; - -_exit0: - if (error_level) { - vxge_free_resources(ndev, error_level); - err = ENXIO; - } - - gone_in_dev(ndev, 12, "vxge(4) driver"); - return (err); -} - -/* - * vxge_detach - * Detaches driver from the Kernel subsystem - */ -int -vxge_detach(device_t ndev) -{ - vxge_dev_t *vdev; - - vdev = (vxge_dev_t *) device_get_softc(ndev); - if (vdev->is_active) { - vdev->is_active = FALSE; - vxge_stop(vdev); - vxge_free_resources(ndev, VXGE_FREE_ALL); - } - - return (0); -} - -/* - * vxge_shutdown - * To shutdown device before system shutdown - */ -int -vxge_shutdown(device_t ndev) -{ - vxge_dev_t *vdev = (vxge_dev_t *) device_get_softc(ndev); - vxge_stop(vdev); - return (0); -} - -/* - * vxge_init - * Initialize the interface - */ -void -vxge_init(void *vdev_ptr) -{ - vxge_dev_t *vdev = (vxge_dev_t *) vdev_ptr; - - VXGE_DRV_LOCK(vdev); - vxge_init_locked(vdev); - VXGE_DRV_UNLOCK(vdev); -} - -/* - * vxge_init_locked - * Initialize the interface - */ -void -vxge_init_locked(vxge_dev_t *vdev) -{ - int i, err = EINVAL; - vxge_hal_device_t *hldev = vdev->devh; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_vpath_h vpath_handle; - - ifnet_t ifp = vdev->ifp; - - /* If device is in running state, initializing is not required */ - if (ifp->if_drv_flags & IFF_DRV_RUNNING) - goto _exit0; - - VXGE_DRV_LOCK_ASSERT(vdev); - - /* Opening vpaths */ - err = vxge_vpath_open(vdev); - if (err != 0) - goto _exit1; - - if (vdev->config.rth_enable) { - status = vxge_rth_config(vdev); - if (status != VXGE_HAL_OK) - goto _exit1; - } - - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath_handle = vxge_vpath_handle_get(vdev, i); - if (!vpath_handle) - continue; - - /* check initial mtu before enabling the device */ - status = vxge_hal_device_mtu_check(vpath_handle, ifp->if_mtu); - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, - "invalid mtu size %u specified\n", ifp->if_mtu); - goto _exit1; - } - - status = vxge_hal_vpath_mtu_set(vpath_handle, ifp->if_mtu); - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, - "setting mtu in device failed\n"); - goto _exit1; - } - } - - /* Enable HAL device */ - status = vxge_hal_device_enable(hldev); - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, "failed to enable device\n"); - goto _exit1; - } - - if (vdev->config.intr_mode == VXGE_HAL_INTR_MODE_MSIX) - vxge_msix_enable(vdev); - - /* Checksum capability */ - ifp->if_hwassist = 0; - if (ifp->if_capenable & IFCAP_TXCSUM) - ifp->if_hwassist |= (CSUM_TCP | CSUM_UDP); - - if (ifp->if_capenable & IFCAP_TSO4) - ifp->if_hwassist |= CSUM_TSO; - - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath_handle = vxge_vpath_handle_get(vdev, i); - if (!vpath_handle) - continue; - - /* Enabling mcast for all vpath */ - vxge_hal_vpath_mcast_enable(vpath_handle); - - /* Enabling bcast for all vpath */ - status = vxge_hal_vpath_bcast_enable(vpath_handle); - if (status != VXGE_HAL_OK) - device_printf(vdev->ndev, - "can't enable bcast on vpath (%d)\n", i); - } - - /* Enable interrupts */ - vxge_hal_device_intr_enable(vdev->devh); - - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath_handle = vxge_vpath_handle_get(vdev, i); - if (!vpath_handle) - continue; - - bzero(&(vdev->vpaths[i].driver_stats), - sizeof(vxge_drv_stats_t)); - status = vxge_hal_vpath_enable(vpath_handle); - if (status != VXGE_HAL_OK) - goto _exit2; - } - - vxge_os_mdelay(1000); - - /* Device is initialized */ - vdev->is_initialized = TRUE; - - /* Now inform the stack we're ready */ - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; - ifp->if_drv_flags |= IFF_DRV_RUNNING; - - goto _exit0; - -_exit2: - vxge_hal_device_intr_disable(vdev->devh); - vxge_hal_device_disable(hldev); - -_exit1: - vxge_vpath_close(vdev); - -_exit0: - return; -} - -/* - * vxge_driver_init - * Initializes HAL driver - */ -vxge_hal_status_e -vxge_driver_init(vxge_dev_t *vdev) -{ - vxge_hal_uld_cbs_t uld_callbacks; - vxge_hal_driver_config_t driver_config; - vxge_hal_status_e status = VXGE_HAL_OK; - - /* Initialize HAL driver */ - if (!vxge_dev_ref_count) { - bzero(&uld_callbacks, sizeof(vxge_hal_uld_cbs_t)); - bzero(&driver_config, sizeof(vxge_hal_driver_config_t)); - - uld_callbacks.link_up = vxge_link_up; - uld_callbacks.link_down = vxge_link_down; - uld_callbacks.crit_err = vxge_crit_error; - uld_callbacks.sched_timer = NULL; - uld_callbacks.xpak_alarm_log = NULL; - - status = vxge_hal_driver_initialize(&driver_config, - &uld_callbacks); - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, - "failed to initialize driver\n"); - goto _exit0; - } - } - vxge_hal_driver_debug_set(VXGE_TRACE); - vxge_dev_ref_count++; - -_exit0: - return (status); -} - -/* - * vxge_driver_config - */ -int -vxge_driver_config(vxge_dev_t *vdev) -{ - int i, err = 0; - char temp_buffer[30]; - - vxge_bw_info_t bw_info; - - VXGE_GET_PARAM("hint.vxge.0.no_of_vpath", vdev->config, - no_of_vpath, VXGE_DEFAULT_USER_HARDCODED); - - if (vdev->config.no_of_vpath == VXGE_DEFAULT_USER_HARDCODED) - vdev->config.no_of_vpath = mp_ncpus; - - if (vdev->config.no_of_vpath <= 0) { - err = EINVAL; - device_printf(vdev->ndev, - "Failed to load driver, \ - invalid config : \'no_of_vpath\'\n"); - goto _exit0; - } - - VXGE_GET_PARAM("hint.vxge.0.intr_coalesce", vdev->config, - intr_coalesce, VXGE_DEFAULT_CONFIG_DISABLE); - - VXGE_GET_PARAM("hint.vxge.0.rth_enable", vdev->config, - rth_enable, VXGE_DEFAULT_CONFIG_ENABLE); - - VXGE_GET_PARAM("hint.vxge.0.rth_bkt_sz", vdev->config, - rth_bkt_sz, VXGE_DEFAULT_RTH_BUCKET_SIZE); - - VXGE_GET_PARAM("hint.vxge.0.lro_enable", vdev->config, - lro_enable, VXGE_DEFAULT_CONFIG_ENABLE); - - VXGE_GET_PARAM("hint.vxge.0.tso_enable", vdev->config, - tso_enable, VXGE_DEFAULT_CONFIG_ENABLE); - - VXGE_GET_PARAM("hint.vxge.0.tx_steering", vdev->config, - tx_steering, VXGE_DEFAULT_CONFIG_DISABLE); - - VXGE_GET_PARAM("hint.vxge.0.msix_enable", vdev->config, - intr_mode, VXGE_HAL_INTR_MODE_MSIX); - - VXGE_GET_PARAM("hint.vxge.0.ifqmaxlen", vdev->config, - ifq_maxlen, VXGE_DEFAULT_CONFIG_IFQ_MAXLEN); - - VXGE_GET_PARAM("hint.vxge.0.port_mode", vdev->config, - port_mode, VXGE_DEFAULT_CONFIG_VALUE); - - if (vdev->config.port_mode == VXGE_DEFAULT_USER_HARDCODED) - vdev->config.port_mode = VXGE_DEFAULT_CONFIG_VALUE; - - VXGE_GET_PARAM("hint.vxge.0.l2_switch", vdev->config, - l2_switch, VXGE_DEFAULT_CONFIG_VALUE); - - if (vdev->config.l2_switch == VXGE_DEFAULT_USER_HARDCODED) - vdev->config.l2_switch = VXGE_DEFAULT_CONFIG_VALUE; - - VXGE_GET_PARAM("hint.vxge.0.fw_upgrade", vdev->config, - fw_option, VXGE_FW_UPGRADE_ALL); - - VXGE_GET_PARAM("hint.vxge.0.low_latency", vdev->config, - low_latency, VXGE_DEFAULT_CONFIG_DISABLE); - - VXGE_GET_PARAM("hint.vxge.0.func_mode", vdev->config, - function_mode, VXGE_DEFAULT_CONFIG_VALUE); - - if (vdev->config.function_mode == VXGE_DEFAULT_USER_HARDCODED) - vdev->config.function_mode = VXGE_DEFAULT_CONFIG_VALUE; - - if (!(is_multi_func(vdev->config.function_mode) || - is_single_func(vdev->config.function_mode))) - vdev->config.function_mode = VXGE_DEFAULT_CONFIG_VALUE; - - for (i = 0; i < VXGE_HAL_MAX_FUNCTIONS; i++) { - - bw_info.func_id = i; - - sprintf(temp_buffer, "hint.vxge.0.bandwidth_%d", i); - VXGE_GET_PARAM(temp_buffer, bw_info, - bandwidth, VXGE_DEFAULT_USER_HARDCODED); - - if (bw_info.bandwidth == VXGE_DEFAULT_USER_HARDCODED) - bw_info.bandwidth = VXGE_HAL_VPATH_BW_LIMIT_DEFAULT; - - sprintf(temp_buffer, "hint.vxge.0.priority_%d", i); - VXGE_GET_PARAM(temp_buffer, bw_info, - priority, VXGE_DEFAULT_USER_HARDCODED); - - if (bw_info.priority == VXGE_DEFAULT_USER_HARDCODED) - bw_info.priority = VXGE_HAL_VPATH_PRIORITY_DEFAULT; - - vxge_os_memcpy(&vdev->config.bw_info[i], &bw_info, - sizeof(vxge_bw_info_t)); - } - -_exit0: - return (err); -} - -/* - * vxge_stop - */ -void -vxge_stop(vxge_dev_t *vdev) -{ - VXGE_DRV_LOCK(vdev); - vxge_stop_locked(vdev); - VXGE_DRV_UNLOCK(vdev); -} - -/* - * vxge_stop_locked - * Common code for both stop and part of reset. - * disables device, interrupts and closes vpaths handle - */ -void -vxge_stop_locked(vxge_dev_t *vdev) -{ - u64 adapter_status = 0; - vxge_hal_status_e status; - vxge_hal_device_t *hldev = vdev->devh; - ifnet_t ifp = vdev->ifp; - - VXGE_DRV_LOCK_ASSERT(vdev); - - /* If device is not in "Running" state, return */ - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) - return; - - /* Set appropriate flags */ - vdev->is_initialized = FALSE; - hldev->link_state = VXGE_HAL_LINK_NONE; - ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); - if_link_state_change(ifp, LINK_STATE_DOWN); - - /* Disable interrupts */ - vxge_hal_device_intr_disable(hldev); - - /* Disable HAL device */ - status = vxge_hal_device_disable(hldev); - if (status != VXGE_HAL_OK) { - vxge_hal_device_status(hldev, &adapter_status); - device_printf(vdev->ndev, - "adapter status: 0x%llx\n", adapter_status); - } - - /* reset vpaths */ - vxge_vpath_reset(vdev); - - vxge_os_mdelay(1000); - - /* Close Vpaths */ - vxge_vpath_close(vdev); -} - -void -vxge_send(ifnet_t ifp) -{ - vxge_vpath_t *vpath; - vxge_dev_t *vdev = (vxge_dev_t *) ifp->if_softc; - - vpath = &(vdev->vpaths[0]); - - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { - if (VXGE_TX_TRYLOCK(vpath)) { - vxge_send_locked(ifp, vpath); - VXGE_TX_UNLOCK(vpath); - } - } -} - -static inline void -vxge_send_locked(ifnet_t ifp, vxge_vpath_t *vpath) -{ - mbuf_t m_head = NULL; - vxge_dev_t *vdev = vpath->vdev; - - VXGE_TX_LOCK_ASSERT(vpath); - - if ((!vdev->is_initialized) || - ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != - IFF_DRV_RUNNING)) - return; - - while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { - IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); - if (m_head == NULL) - break; - - if (vxge_xmit(ifp, vpath, &m_head)) { - if (m_head == NULL) - break; - - ifp->if_drv_flags |= IFF_DRV_OACTIVE; - IFQ_DRV_PREPEND(&ifp->if_snd, m_head); - VXGE_DRV_STATS(vpath, tx_again); - break; - } - /* Send a copy of the frame to the BPF listener */ - ETHER_BPF_MTAP(ifp, m_head); - } -} - -#if __FreeBSD_version >= 800000 - -int -vxge_mq_send(ifnet_t ifp, mbuf_t m_head) -{ - int i = 0, err = 0; - - vxge_vpath_t *vpath; - vxge_dev_t *vdev = (vxge_dev_t *) ifp->if_softc; - - if (vdev->config.tx_steering) { - i = vxge_vpath_get(vdev, m_head); - } else if (M_HASHTYPE_GET(m_head) != M_HASHTYPE_NONE) { - i = m_head->m_pkthdr.flowid % vdev->no_of_vpath; - } - - vpath = &(vdev->vpaths[i]); - if (VXGE_TX_TRYLOCK(vpath)) { - err = vxge_mq_send_locked(ifp, vpath, m_head); - VXGE_TX_UNLOCK(vpath); - } else - err = drbr_enqueue(ifp, vpath->br, m_head); - - return (err); -} - -static inline int -vxge_mq_send_locked(ifnet_t ifp, vxge_vpath_t *vpath, mbuf_t m_head) -{ - int err = 0; - mbuf_t next = NULL; - vxge_dev_t *vdev = vpath->vdev; - - VXGE_TX_LOCK_ASSERT(vpath); - - if ((!vdev->is_initialized) || - ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != - IFF_DRV_RUNNING)) { - err = drbr_enqueue(ifp, vpath->br, m_head); - goto _exit0; - } - if (m_head == NULL) { - next = drbr_dequeue(ifp, vpath->br); - } else if (drbr_needs_enqueue(ifp, vpath->br)) { - if ((err = drbr_enqueue(ifp, vpath->br, m_head)) != 0) - goto _exit0; - next = drbr_dequeue(ifp, vpath->br); - } else - next = m_head; - - /* Process the queue */ - while (next != NULL) { - if ((err = vxge_xmit(ifp, vpath, &next)) != 0) { - if (next == NULL) - break; - - ifp->if_drv_flags |= IFF_DRV_OACTIVE; - err = drbr_enqueue(ifp, vpath->br, next); - VXGE_DRV_STATS(vpath, tx_again); - break; - } - if_inc_counter(ifp, IFCOUNTER_OBYTES, next->m_pkthdr.len); - if (next->m_flags & M_MCAST) - if_inc_counter(ifp, IFCOUNTER_OMCASTS, 1); - - /* Send a copy of the frame to the BPF listener */ - ETHER_BPF_MTAP(ifp, next); - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) - break; - - next = drbr_dequeue(ifp, vpath->br); - } - -_exit0: - return (err); -} - -void -vxge_mq_qflush(ifnet_t ifp) -{ - int i; - mbuf_t m_head; - vxge_vpath_t *vpath; - - vxge_dev_t *vdev = (vxge_dev_t *) ifp->if_softc; - - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath = &(vdev->vpaths[i]); - if (!vpath->handle) - continue; - - VXGE_TX_LOCK(vpath); - while ((m_head = buf_ring_dequeue_sc(vpath->br)) != NULL) - vxge_free_packet(m_head); - - VXGE_TX_UNLOCK(vpath); - } - if_qflush(ifp); -} -#endif - -static inline int -vxge_xmit(ifnet_t ifp, vxge_vpath_t *vpath, mbuf_t *m_headp) -{ - int err, num_segs = 0; - u32 txdl_avail, dma_index, tagged = 0; - - dma_addr_t dma_addr; - bus_size_t dma_sizes; - - void *dtr_priv; - vxge_txdl_priv_t *txdl_priv; - vxge_hal_txdl_h txdlh; - vxge_hal_status_e status; - vxge_dev_t *vdev = vpath->vdev; - - VXGE_DRV_STATS(vpath, tx_xmit); - - txdl_avail = vxge_hal_fifo_free_txdl_count_get(vpath->handle); - if (txdl_avail < VXGE_TX_LOW_THRESHOLD) { - - VXGE_DRV_STATS(vpath, tx_low_dtr_cnt); - err = ENOBUFS; - goto _exit0; - } - - /* Reserve descriptors */ - status = vxge_hal_fifo_txdl_reserve(vpath->handle, &txdlh, &dtr_priv); - if (status != VXGE_HAL_OK) { - VXGE_DRV_STATS(vpath, tx_reserve_failed); - err = ENOBUFS; - goto _exit0; - } - - /* Update Tx private structure for this descriptor */ - txdl_priv = (vxge_txdl_priv_t *) dtr_priv; - - /* - * Map the packet for DMA. - * Returns number of segments through num_segs. - */ - err = vxge_dma_mbuf_coalesce(vpath->dma_tag_tx, txdl_priv->dma_map, - m_headp, txdl_priv->dma_buffers, &num_segs); - - if (vpath->driver_stats.tx_max_frags < num_segs) - vpath->driver_stats.tx_max_frags = num_segs; - - if (err == ENOMEM) { - VXGE_DRV_STATS(vpath, tx_no_dma_setup); - vxge_hal_fifo_txdl_free(vpath->handle, txdlh); - goto _exit0; - } else if (err != 0) { - vxge_free_packet(*m_headp); - VXGE_DRV_STATS(vpath, tx_no_dma_setup); - vxge_hal_fifo_txdl_free(vpath->handle, txdlh); - goto _exit0; - } - - txdl_priv->mbuf_pkt = *m_headp; - - /* Set VLAN tag in descriptor only if this packet has it */ - if ((*m_headp)->m_flags & M_VLANTAG) - vxge_hal_fifo_txdl_vlan_set(txdlh, - (*m_headp)->m_pkthdr.ether_vtag); - - /* Set descriptor buffer for header and each fragment/segment */ - for (dma_index = 0; dma_index < num_segs; dma_index++) { - - dma_sizes = txdl_priv->dma_buffers[dma_index].ds_len; - dma_addr = htole64(txdl_priv->dma_buffers[dma_index].ds_addr); - - vxge_hal_fifo_txdl_buffer_set(vpath->handle, txdlh, dma_index, - dma_addr, dma_sizes); - } - - /* Pre-write Sync of mapping */ - bus_dmamap_sync(vpath->dma_tag_tx, txdl_priv->dma_map, - BUS_DMASYNC_PREWRITE); - - if ((*m_headp)->m_pkthdr.csum_flags & CSUM_TSO) { - if ((*m_headp)->m_pkthdr.tso_segsz) { - VXGE_DRV_STATS(vpath, tx_tso); - vxge_hal_fifo_txdl_lso_set(txdlh, - VXGE_HAL_FIFO_LSO_FRM_ENCAP_AUTO, - (*m_headp)->m_pkthdr.tso_segsz); - } - } - - /* Checksum */ - if (ifp->if_hwassist > 0) { - vxge_hal_fifo_txdl_cksum_set_bits(txdlh, - VXGE_HAL_FIFO_TXD_TX_CKO_IPV4_EN | - VXGE_HAL_FIFO_TXD_TX_CKO_TCP_EN | - VXGE_HAL_FIFO_TXD_TX_CKO_UDP_EN); - } - - if ((vxge_hal_device_check_id(vdev->devh) == VXGE_HAL_CARD_TITAN_1A) && - (vdev->hw_fw_version >= VXGE_FW_VERSION(1, 8, 0))) - tagged = 1; - - vxge_hal_fifo_txdl_post(vpath->handle, txdlh, tagged); - VXGE_DRV_STATS(vpath, tx_posted); - -_exit0: - return (err); -} - -/* - * vxge_tx_replenish - * Allocate buffers and set them into descriptors for later use - */ -/* ARGSUSED */ -vxge_hal_status_e -vxge_tx_replenish(vxge_hal_vpath_h vpath_handle, vxge_hal_txdl_h txdlh, - void *dtr_priv, u32 dtr_index, void *userdata, vxge_hal_reopen_e reopen) -{ - int err = 0; - - vxge_vpath_t *vpath = (vxge_vpath_t *) userdata; - vxge_txdl_priv_t *txdl_priv = (vxge_txdl_priv_t *) dtr_priv; - - err = bus_dmamap_create(vpath->dma_tag_tx, BUS_DMA_NOWAIT, - &txdl_priv->dma_map); - - return ((err == 0) ? VXGE_HAL_OK : VXGE_HAL_FAIL); -} - -/* - * vxge_tx_compl - * If the interrupt is due to Tx completion, free the sent buffer - */ -vxge_hal_status_e -vxge_tx_compl(vxge_hal_vpath_h vpath_handle, vxge_hal_txdl_h txdlh, - void *dtr_priv, vxge_hal_fifo_tcode_e t_code, void *userdata) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_txdl_priv_t *txdl_priv; - vxge_vpath_t *vpath = (vxge_vpath_t *) userdata; - vxge_dev_t *vdev = vpath->vdev; - - ifnet_t ifp = vdev->ifp; - - VXGE_TX_LOCK(vpath); - - /* - * For each completed descriptor - * Get private structure, free buffer, do unmapping, and free descriptor - */ - - do { - VXGE_DRV_STATS(vpath, tx_compl); - if (t_code != VXGE_HAL_FIFO_T_CODE_OK) { - device_printf(vdev->ndev, "tx transfer code %d\n", - t_code); - - if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); - VXGE_DRV_STATS(vpath, tx_tcode); - vxge_hal_fifo_handle_tcode(vpath_handle, txdlh, t_code); - } - if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1); - txdl_priv = (vxge_txdl_priv_t *) dtr_priv; - - bus_dmamap_unload(vpath->dma_tag_tx, txdl_priv->dma_map); - - vxge_free_packet(txdl_priv->mbuf_pkt); - vxge_hal_fifo_txdl_free(vpath->handle, txdlh); - - } while (vxge_hal_fifo_txdl_next_completed(vpath_handle, &txdlh, - &dtr_priv, &t_code) == VXGE_HAL_OK); - - - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; - VXGE_TX_UNLOCK(vpath); - - return (status); -} - -/* ARGSUSED */ -void -vxge_tx_term(vxge_hal_vpath_h vpath_handle, vxge_hal_txdl_h txdlh, - void *dtr_priv, vxge_hal_txdl_state_e state, - void *userdata, vxge_hal_reopen_e reopen) -{ - vxge_vpath_t *vpath = (vxge_vpath_t *) userdata; - vxge_txdl_priv_t *txdl_priv = (vxge_txdl_priv_t *) dtr_priv; - - if (state != VXGE_HAL_TXDL_STATE_POSTED) - return; - - if (txdl_priv != NULL) { - bus_dmamap_sync(vpath->dma_tag_tx, txdl_priv->dma_map, - BUS_DMASYNC_POSTWRITE); - - bus_dmamap_unload(vpath->dma_tag_tx, txdl_priv->dma_map); - bus_dmamap_destroy(vpath->dma_tag_tx, txdl_priv->dma_map); - vxge_free_packet(txdl_priv->mbuf_pkt); - } - - /* Free the descriptor */ - vxge_hal_fifo_txdl_free(vpath->handle, txdlh); -} - -/* - * vxge_rx_replenish - * Allocate buffers and set them into descriptors for later use - */ -/* ARGSUSED */ -vxge_hal_status_e -vxge_rx_replenish(vxge_hal_vpath_h vpath_handle, vxge_hal_rxd_h rxdh, - void *dtr_priv, u32 dtr_index, void *userdata, vxge_hal_reopen_e reopen) -{ - int err = 0; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_vpath_t *vpath = (vxge_vpath_t *) userdata; - vxge_rxd_priv_t *rxd_priv = (vxge_rxd_priv_t *) dtr_priv; - - /* Create DMA map for these descriptors */ - err = bus_dmamap_create(vpath->dma_tag_rx, BUS_DMA_NOWAIT, - &rxd_priv->dma_map); - if (err == 0) { - if (vxge_rx_rxd_1b_set(vpath, rxdh, dtr_priv)) { - bus_dmamap_destroy(vpath->dma_tag_rx, - rxd_priv->dma_map); - status = VXGE_HAL_FAIL; - } - } - - return (status); -} - -/* - * vxge_rx_compl - */ -vxge_hal_status_e -vxge_rx_compl(vxge_hal_vpath_h vpath_handle, vxge_hal_rxd_h rxdh, - void *dtr_priv, u8 t_code, void *userdata) -{ - mbuf_t mbuf_up; - - vxge_rxd_priv_t *rxd_priv; - vxge_hal_ring_rxd_info_t ext_info; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_vpath_t *vpath = (vxge_vpath_t *) userdata; - vxge_dev_t *vdev = vpath->vdev; - - struct lro_ctrl *lro = &vpath->lro; - - /* get the interface pointer */ - ifnet_t ifp = vdev->ifp; - - do { - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { - vxge_hal_ring_rxd_post(vpath_handle, rxdh); - status = VXGE_HAL_FAIL; - break; - } - - VXGE_DRV_STATS(vpath, rx_compl); - rxd_priv = (vxge_rxd_priv_t *) dtr_priv; - - /* Gets details of mbuf i.e., packet length */ - vxge_rx_rxd_1b_get(vpath, rxdh, dtr_priv); - - /* - * Prepare one buffer to send it to upper layer Since upper - * layer frees the buffer do not use rxd_priv->mbuf_pkt. - * Meanwhile prepare a new buffer, do mapping, use with the - * current descriptor and post descriptor back to ring vpath - */ - mbuf_up = rxd_priv->mbuf_pkt; - if (t_code != VXGE_HAL_RING_RXD_T_CODE_OK) { - - if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); - VXGE_DRV_STATS(vpath, rx_tcode); - status = vxge_hal_ring_handle_tcode(vpath_handle, - rxdh, t_code); - - /* - * If transfer code is not for unknown protocols and - * vxge_hal_device_handle_tcode is NOT returned - * VXGE_HAL_OK - * drop this packet and increment rx_tcode stats - */ - if ((status != VXGE_HAL_OK) && - (t_code != VXGE_HAL_RING_T_CODE_L3_PKT_ERR)) { - - vxge_free_packet(mbuf_up); - vxge_hal_ring_rxd_post(vpath_handle, rxdh); - continue; - } - } - - if (vxge_rx_rxd_1b_set(vpath, rxdh, dtr_priv)) { - /* - * If unable to allocate buffer, post descriptor back - * to vpath for future processing of same packet. - */ - vxge_hal_ring_rxd_post(vpath_handle, rxdh); - continue; - } - - /* Get the extended information */ - vxge_hal_ring_rxd_1b_info_get(vpath_handle, rxdh, &ext_info); - - /* post descriptor with newly allocated mbuf back to vpath */ - vxge_hal_ring_rxd_post(vpath_handle, rxdh); - vpath->rxd_posted++; - - if (vpath->rxd_posted % VXGE_RXD_REPLENISH_COUNT == 0) - vxge_hal_ring_rxd_post_post_db(vpath_handle); - - /* - * Set successfully computed checksums in the mbuf. - * Leave the rest to the stack to be reverified. - */ - vxge_rx_checksum(ext_info, mbuf_up); - -#if __FreeBSD_version >= 800000 - M_HASHTYPE_SET(mbuf_up, M_HASHTYPE_OPAQUE); - mbuf_up->m_pkthdr.flowid = vpath->vp_index; -#endif - /* Post-Read sync for buffers */ - bus_dmamap_sync(vpath->dma_tag_rx, rxd_priv->dma_map, - BUS_DMASYNC_POSTREAD); - - vxge_rx_input(ifp, mbuf_up, vpath); - - } while (vxge_hal_ring_rxd_next_completed(vpath_handle, &rxdh, - &dtr_priv, &t_code) == VXGE_HAL_OK); - - /* Flush any outstanding LRO work */ - if (vpath->lro_enable && vpath->lro.lro_cnt) - tcp_lro_flush_all(lro); - - return (status); -} - -static inline void -vxge_rx_input(ifnet_t ifp, mbuf_t mbuf_up, vxge_vpath_t *vpath) -{ - if (vpath->lro_enable && vpath->lro.lro_cnt) { - if (tcp_lro_rx(&vpath->lro, mbuf_up, 0) == 0) - return; - } - (*ifp->if_input) (ifp, mbuf_up); -} - -static inline void -vxge_rx_checksum(vxge_hal_ring_rxd_info_t ext_info, mbuf_t mbuf_up) -{ - - if (!(ext_info.proto & VXGE_HAL_FRAME_PROTO_IP_FRAG) && - (ext_info.proto & VXGE_HAL_FRAME_PROTO_TCP_OR_UDP) && - ext_info.l3_cksum_valid && ext_info.l4_cksum_valid) { - - mbuf_up->m_pkthdr.csum_data = htons(0xffff); - - mbuf_up->m_pkthdr.csum_flags = CSUM_IP_CHECKED; - mbuf_up->m_pkthdr.csum_flags |= CSUM_IP_VALID; - mbuf_up->m_pkthdr.csum_flags |= - (CSUM_DATA_VALID | CSUM_PSEUDO_HDR); - - } else { - - if (ext_info.vlan) { - mbuf_up->m_pkthdr.ether_vtag = ext_info.vlan; - mbuf_up->m_flags |= M_VLANTAG; - } - } -} - -/* - * vxge_rx_term During unload terminate and free all descriptors - * @vpath_handle Rx vpath Handle @rxdh Rx Descriptor Handle @state Descriptor - * State @userdata Per-adapter Data @reopen vpath open/reopen option - */ -/* ARGSUSED */ -void -vxge_rx_term(vxge_hal_vpath_h vpath_handle, vxge_hal_rxd_h rxdh, - void *dtr_priv, vxge_hal_rxd_state_e state, void *userdata, - vxge_hal_reopen_e reopen) -{ - vxge_vpath_t *vpath = (vxge_vpath_t *) userdata; - vxge_rxd_priv_t *rxd_priv = (vxge_rxd_priv_t *) dtr_priv; - - if (state != VXGE_HAL_RXD_STATE_POSTED) - return; - - if (rxd_priv != NULL) { - bus_dmamap_sync(vpath->dma_tag_rx, rxd_priv->dma_map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(vpath->dma_tag_rx, rxd_priv->dma_map); - bus_dmamap_destroy(vpath->dma_tag_rx, rxd_priv->dma_map); - - vxge_free_packet(rxd_priv->mbuf_pkt); - } - /* Free the descriptor */ - vxge_hal_ring_rxd_free(vpath_handle, rxdh); -} - -/* - * vxge_rx_rxd_1b_get - * Get descriptors of packet to send up - */ -void -vxge_rx_rxd_1b_get(vxge_vpath_t *vpath, vxge_hal_rxd_h rxdh, void *dtr_priv) -{ - vxge_rxd_priv_t *rxd_priv = (vxge_rxd_priv_t *) dtr_priv; - mbuf_t mbuf_up = rxd_priv->mbuf_pkt; - - /* Retrieve data from completed descriptor */ - vxge_hal_ring_rxd_1b_get(vpath->handle, rxdh, &rxd_priv->dma_addr[0], - (u32 *) &rxd_priv->dma_sizes[0]); - - /* Update newly created buffer to be sent up with packet length */ - mbuf_up->m_len = rxd_priv->dma_sizes[0]; - mbuf_up->m_pkthdr.len = rxd_priv->dma_sizes[0]; - mbuf_up->m_next = NULL; -} - -/* - * vxge_rx_rxd_1b_set - * Allocates new mbufs to be placed into descriptors - */ -int -vxge_rx_rxd_1b_set(vxge_vpath_t *vpath, vxge_hal_rxd_h rxdh, void *dtr_priv) -{ - int num_segs, err = 0; - - mbuf_t mbuf_pkt; - bus_dmamap_t dma_map; - bus_dma_segment_t dma_buffers[1]; - vxge_rxd_priv_t *rxd_priv = (vxge_rxd_priv_t *) dtr_priv; - - vxge_dev_t *vdev = vpath->vdev; - - mbuf_pkt = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, vdev->rx_mbuf_sz); - if (!mbuf_pkt) { - err = ENOBUFS; - VXGE_DRV_STATS(vpath, rx_no_buf); - device_printf(vdev->ndev, "out of memory to allocate mbuf\n"); - goto _exit0; - } - - /* Update mbuf's length, packet length and receive interface */ - mbuf_pkt->m_len = vdev->rx_mbuf_sz; - mbuf_pkt->m_pkthdr.len = vdev->rx_mbuf_sz; - mbuf_pkt->m_pkthdr.rcvif = vdev->ifp; - - /* Load DMA map */ - err = vxge_dma_mbuf_coalesce(vpath->dma_tag_rx, vpath->extra_dma_map, - &mbuf_pkt, dma_buffers, &num_segs); - if (err != 0) { - VXGE_DRV_STATS(vpath, rx_map_fail); - vxge_free_packet(mbuf_pkt); - goto _exit0; - } - - /* Unload DMA map of mbuf in current descriptor */ - bus_dmamap_sync(vpath->dma_tag_rx, rxd_priv->dma_map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(vpath->dma_tag_rx, rxd_priv->dma_map); - - /* Update descriptor private data */ - dma_map = rxd_priv->dma_map; - rxd_priv->mbuf_pkt = mbuf_pkt; - rxd_priv->dma_addr[0] = htole64(dma_buffers->ds_addr); - rxd_priv->dma_map = vpath->extra_dma_map; - vpath->extra_dma_map = dma_map; - - /* Pre-Read/Write sync */ - bus_dmamap_sync(vpath->dma_tag_rx, rxd_priv->dma_map, - BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); - - /* Set descriptor buffer */ - vxge_hal_ring_rxd_1b_set(rxdh, rxd_priv->dma_addr[0], vdev->rx_mbuf_sz); - -_exit0: - return (err); -} - -/* - * vxge_link_up - * Callback for Link-up indication from HAL - */ -/* ARGSUSED */ -void -vxge_link_up(vxge_hal_device_h devh, void *userdata) -{ - int i; - vxge_vpath_t *vpath; - vxge_hal_device_hw_info_t *hw_info; - - vxge_dev_t *vdev = (vxge_dev_t *) userdata; - hw_info = &vdev->config.hw_info; - - ifnet_t ifp = vdev->ifp; - - if (vdev->config.intr_mode == VXGE_HAL_INTR_MODE_MSIX) { - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath = &(vdev->vpaths[i]); - vxge_hal_vpath_tti_ci_set(vpath->handle); - vxge_hal_vpath_rti_ci_set(vpath->handle); - } - } - - if (vdev->is_privilaged && (hw_info->ports > 1)) { - vxge_active_port_update(vdev); - device_printf(vdev->ndev, - "Active Port : %lld\n", vdev->active_port); - } - - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; - if_link_state_change(ifp, LINK_STATE_UP); -} - -/* - * vxge_link_down - * Callback for Link-down indication from HAL - */ -/* ARGSUSED */ -void -vxge_link_down(vxge_hal_device_h devh, void *userdata) -{ - int i; - vxge_vpath_t *vpath; - vxge_dev_t *vdev = (vxge_dev_t *) userdata; - - ifnet_t ifp = vdev->ifp; - - if (vdev->config.intr_mode == VXGE_HAL_INTR_MODE_MSIX) { - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath = &(vdev->vpaths[i]); - vxge_hal_vpath_tti_ci_reset(vpath->handle); - vxge_hal_vpath_rti_ci_reset(vpath->handle); - } - } - - ifp->if_drv_flags |= IFF_DRV_OACTIVE; - if_link_state_change(ifp, LINK_STATE_DOWN); -} - -/* - * vxge_reset - */ -void -vxge_reset(vxge_dev_t *vdev) -{ - if (!vdev->is_initialized) - return; - - VXGE_DRV_LOCK(vdev); - vxge_stop_locked(vdev); - vxge_init_locked(vdev); - VXGE_DRV_UNLOCK(vdev); -} - -/* - * vxge_crit_error - * Callback for Critical error indication from HAL - */ -/* ARGSUSED */ -void -vxge_crit_error(vxge_hal_device_h devh, void *userdata, - vxge_hal_event_e type, u64 serr_data) -{ - vxge_dev_t *vdev = (vxge_dev_t *) userdata; - ifnet_t ifp = vdev->ifp; - - switch (type) { - case VXGE_HAL_EVENT_SERR: - case VXGE_HAL_EVENT_KDFCCTL: - case VXGE_HAL_EVENT_CRITICAL: - vxge_hal_device_intr_disable(vdev->devh); - ifp->if_drv_flags |= IFF_DRV_OACTIVE; - if_link_state_change(ifp, LINK_STATE_DOWN); - break; - default: - break; - } -} - -/* - * vxge_ifp_setup - */ -int -vxge_ifp_setup(device_t ndev) -{ - ifnet_t ifp; - int i, j, err = 0; - - vxge_dev_t *vdev = (vxge_dev_t *) device_get_softc(ndev); - - for (i = 0, j = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - if (!bVAL1(vdev->config.hw_info.vpath_mask, i)) - continue; - - if (j >= vdev->no_of_vpath) - break; - - vdev->vpaths[j].vp_id = i; - vdev->vpaths[j].vp_index = j; - vdev->vpaths[j].vdev = vdev; - vdev->vpaths[j].is_configured = TRUE; - - vxge_os_memcpy((u8 *) vdev->vpaths[j].mac_addr, - (u8 *) (vdev->config.hw_info.mac_addrs[i]), - (size_t) ETHER_ADDR_LEN); - j++; - } - - /* Get interface ifnet structure for this Ether device */ - ifp = if_alloc(IFT_ETHER); - if (ifp == NULL) { - device_printf(vdev->ndev, - "memory allocation for ifnet failed\n"); - err = ENXIO; - goto _exit0; - } - vdev->ifp = ifp; - - /* Initialize interface ifnet structure */ - if_initname(ifp, device_get_name(ndev), device_get_unit(ndev)); - - ifp->if_baudrate = VXGE_BAUDRATE; - ifp->if_init = vxge_init; - ifp->if_softc = vdev; - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; - ifp->if_ioctl = vxge_ioctl; - ifp->if_start = vxge_send; - -#if __FreeBSD_version >= 800000 - ifp->if_transmit = vxge_mq_send; - ifp->if_qflush = vxge_mq_qflush; -#endif - ifp->if_snd.ifq_drv_maxlen = max(vdev->config.ifq_maxlen, ifqmaxlen); - IFQ_SET_MAXLEN(&ifp->if_snd, ifp->if_snd.ifq_drv_maxlen); - /* IFQ_SET_READY(&ifp->if_snd); */ - - ifp->if_hdrlen = sizeof(struct ether_vlan_header); - - ifp->if_capabilities |= IFCAP_HWCSUM | IFCAP_VLAN_HWCSUM; - ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU; - ifp->if_capabilities |= IFCAP_JUMBO_MTU; - - if (vdev->config.tso_enable) - vxge_tso_config(vdev); - - if (vdev->config.lro_enable) - ifp->if_capabilities |= IFCAP_LRO; - - ifp->if_capenable = ifp->if_capabilities; - - strlcpy(vdev->ndev_name, device_get_nameunit(ndev), - sizeof(vdev->ndev_name)); - - /* Attach the interface */ - ether_ifattach(ifp, vdev->vpaths[0].mac_addr); - -_exit0: - return (err); -} - -/* - * vxge_isr_setup - * Register isr functions - */ -int -vxge_isr_setup(vxge_dev_t *vdev) -{ - int i, irq_rid, err = 0; - vxge_vpath_t *vpath; - - void *isr_func_arg; - void (*isr_func_ptr) (void *); - - switch (vdev->config.intr_mode) { - case VXGE_HAL_INTR_MODE_IRQLINE: - err = bus_setup_intr(vdev->ndev, - vdev->config.isr_info[0].irq_res, - (INTR_TYPE_NET | INTR_MPSAFE), - vxge_isr_filter, vxge_isr_line, vdev, - &vdev->config.isr_info[0].irq_handle); - break; - - case VXGE_HAL_INTR_MODE_MSIX: - for (i = 0; i < vdev->intr_count; i++) { - - irq_rid = vdev->config.isr_info[i].irq_rid; - vpath = &vdev->vpaths[irq_rid / 4]; - - if ((irq_rid % 4) == 2) { - isr_func_ptr = vxge_isr_msix; - isr_func_arg = (void *) vpath; - } else if ((irq_rid % 4) == 3) { - isr_func_ptr = vxge_isr_msix_alarm; - isr_func_arg = (void *) vpath; - } else - break; - - err = bus_setup_intr(vdev->ndev, - vdev->config.isr_info[i].irq_res, - (INTR_TYPE_NET | INTR_MPSAFE), NULL, - (void *) isr_func_ptr, (void *) isr_func_arg, - &vdev->config.isr_info[i].irq_handle); - if (err != 0) - break; - } - - if (err != 0) { - /* Teardown interrupt handler */ - while (--i > 0) - bus_teardown_intr(vdev->ndev, - vdev->config.isr_info[i].irq_res, - vdev->config.isr_info[i].irq_handle); - } - break; - } - - return (err); -} - -/* - * vxge_isr_filter - * ISR filter function - filter interrupts from other shared devices - */ -int -vxge_isr_filter(void *handle) -{ - u64 val64 = 0; - vxge_dev_t *vdev = (vxge_dev_t *) handle; - __hal_device_t *hldev = (__hal_device_t *) vdev->devh; - - vxge_hal_common_reg_t *common_reg = - (vxge_hal_common_reg_t *) (hldev->common_reg); - - val64 = vxge_os_pio_mem_read64(vdev->pdev, (vdev->devh)->regh0, - &common_reg->titan_general_int_status); - - return ((val64) ? FILTER_SCHEDULE_THREAD : FILTER_STRAY); -} - -/* - * vxge_isr_line - * Interrupt service routine for Line interrupts - */ -void -vxge_isr_line(void *vdev_ptr) -{ - vxge_dev_t *vdev = (vxge_dev_t *) vdev_ptr; - - vxge_hal_device_handle_irq(vdev->devh, 0); -} - -void -vxge_isr_msix(void *vpath_ptr) -{ - u32 got_rx = 0; - u32 got_tx = 0; - - __hal_virtualpath_t *hal_vpath; - vxge_vpath_t *vpath = (vxge_vpath_t *) vpath_ptr; - vxge_dev_t *vdev = vpath->vdev; - hal_vpath = ((__hal_vpath_handle_t *) vpath->handle)->vpath; - - VXGE_DRV_STATS(vpath, isr_msix); - VXGE_HAL_DEVICE_STATS_SW_INFO_TRAFFIC_INTR(vdev->devh); - - vxge_hal_vpath_mf_msix_mask(vpath->handle, vpath->msix_vec); - - /* processing rx */ - vxge_hal_vpath_poll_rx(vpath->handle, &got_rx); - - /* processing tx */ - if (hal_vpath->vp_config->fifo.enable) { - vxge_intr_coalesce_tx(vpath); - vxge_hal_vpath_poll_tx(vpath->handle, &got_tx); - } - - vxge_hal_vpath_mf_msix_unmask(vpath->handle, vpath->msix_vec); -} - -void -vxge_isr_msix_alarm(void *vpath_ptr) -{ - int i; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_vpath_t *vpath = (vxge_vpath_t *) vpath_ptr; - vxge_dev_t *vdev = vpath->vdev; - - VXGE_HAL_DEVICE_STATS_SW_INFO_NOT_TRAFFIC_INTR(vdev->devh); - - /* Process alarms in each vpath */ - for (i = 0; i < vdev->no_of_vpath; i++) { - - vpath = &(vdev->vpaths[i]); - vxge_hal_vpath_mf_msix_mask(vpath->handle, - vpath->msix_vec_alarm); - status = vxge_hal_vpath_alarm_process(vpath->handle, 0); - if ((status == VXGE_HAL_ERR_EVENT_SLOT_FREEZE) || - (status == VXGE_HAL_ERR_EVENT_SERR)) { - device_printf(vdev->ndev, - "processing alarms urecoverable error %x\n", - status); - - /* Stop the driver */ - vdev->is_initialized = FALSE; - break; - } - vxge_hal_vpath_mf_msix_unmask(vpath->handle, - vpath->msix_vec_alarm); - } -} - -/* - * vxge_msix_enable - */ -vxge_hal_status_e -vxge_msix_enable(vxge_dev_t *vdev) -{ - int i, first_vp_id, msix_id; - - vxge_vpath_t *vpath; - vxge_hal_status_e status = VXGE_HAL_OK; - - /* - * Unmasking and Setting MSIX vectors before enabling interrupts - * tim[] : 0 - Tx ## 1 - Rx ## 2 - UMQ-DMQ ## 0 - BITMAP - */ - int tim[4] = {0, 1, 0, 0}; - - for (i = 0; i < vdev->no_of_vpath; i++) { - - vpath = vdev->vpaths + i; - first_vp_id = vdev->vpaths[0].vp_id; - - msix_id = vpath->vp_id * VXGE_HAL_VPATH_MSIX_ACTIVE; - tim[1] = vpath->msix_vec = msix_id + 1; - - vpath->msix_vec_alarm = first_vp_id * - VXGE_HAL_VPATH_MSIX_ACTIVE + VXGE_HAL_VPATH_MSIX_ALARM_ID; - - status = vxge_hal_vpath_mf_msix_set(vpath->handle, - tim, VXGE_HAL_VPATH_MSIX_ALARM_ID); - - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, - "failed to set msix vectors to vpath\n"); - break; - } - - vxge_hal_vpath_mf_msix_unmask(vpath->handle, vpath->msix_vec); - vxge_hal_vpath_mf_msix_unmask(vpath->handle, - vpath->msix_vec_alarm); - } - - return (status); -} - -/* - * vxge_media_init - * Initializes, adds and sets media - */ -void -vxge_media_init(vxge_dev_t *vdev) -{ - ifmedia_init(&vdev->media, - IFM_IMASK, vxge_media_change, vxge_media_status); - - /* Add supported media */ - ifmedia_add(&vdev->media, - IFM_ETHER | vdev->ifm_optics | IFM_FDX, - 0, NULL); - - /* Set media */ - ifmedia_add(&vdev->media, IFM_ETHER | IFM_AUTO, 0, NULL); - ifmedia_set(&vdev->media, IFM_ETHER | IFM_AUTO); -} - -/* - * vxge_media_status - * Callback for interface media settings - */ -void -vxge_media_status(ifnet_t ifp, struct ifmediareq *ifmr) -{ - vxge_dev_t *vdev = (vxge_dev_t *) ifp->if_softc; - vxge_hal_device_t *hldev = vdev->devh; - - ifmr->ifm_status = IFM_AVALID; - ifmr->ifm_active = IFM_ETHER; - - /* set link state */ - if (vxge_hal_device_link_state_get(hldev) == VXGE_HAL_LINK_UP) { - ifmr->ifm_status |= IFM_ACTIVE; - ifmr->ifm_active |= vdev->ifm_optics | IFM_FDX; - if_link_state_change(ifp, LINK_STATE_UP); - } -} - -/* - * vxge_media_change - * Media change driver callback - */ -int -vxge_media_change(ifnet_t ifp) -{ - vxge_dev_t *vdev = (vxge_dev_t *) ifp->if_softc; - struct ifmedia *ifmediap = &vdev->media; - - return (IFM_TYPE(ifmediap->ifm_media) != IFM_ETHER ? EINVAL : 0); -} - -/* - * Allocate PCI resources - */ -int -vxge_alloc_resources(vxge_dev_t *vdev) -{ - int err = 0; - vxge_pci_info_t *pci_info = NULL; - vxge_free_resources_e error_level = VXGE_FREE_NONE; - - device_t ndev = vdev->ndev; - - /* Allocate Buffer for HAL Device Configuration */ - vdev->device_config = (vxge_hal_device_config_t *) - vxge_mem_alloc(sizeof(vxge_hal_device_config_t)); - - if (!vdev->device_config) { - err = ENOMEM; - error_level = VXGE_DISABLE_PCI_BUSMASTER; - device_printf(vdev->ndev, - "failed to allocate memory for device config\n"); - goto _exit0; - } - - - pci_info = (vxge_pci_info_t *) vxge_mem_alloc(sizeof(vxge_pci_info_t)); - if (!pci_info) { - error_level = VXGE_FREE_DEVICE_CONFIG; - err = ENOMEM; - device_printf(vdev->ndev, - "failed to allocate memory for pci info\n"); - goto _exit0; - } - pci_info->ndev = ndev; - vdev->pdev = pci_info; - - err = vxge_alloc_bar_resources(vdev, 0); - if (err != 0) { - error_level = VXGE_FREE_BAR0; - goto _exit0; - } - - err = vxge_alloc_bar_resources(vdev, 1); - if (err != 0) { - error_level = VXGE_FREE_BAR1; - goto _exit0; - } - - err = vxge_alloc_bar_resources(vdev, 2); - if (err != 0) - error_level = VXGE_FREE_BAR2; - -_exit0: - if (error_level) - vxge_free_resources(ndev, error_level); - - return (err); -} - -/* - * vxge_alloc_bar_resources - * Allocates BAR resources - */ -int -vxge_alloc_bar_resources(vxge_dev_t *vdev, int i) -{ - int err = 0; - int res_id = 0; - vxge_pci_info_t *pci_info = vdev->pdev; - - res_id = PCIR_BAR((i == 0) ? 0 : (i * 2)); - - pci_info->bar_info[i] = - bus_alloc_resource_any(vdev->ndev, - SYS_RES_MEMORY, &res_id, RF_ACTIVE); - - if (pci_info->bar_info[i] == NULL) { - device_printf(vdev->ndev, - "failed to allocate memory for bus resources\n"); - err = ENOMEM; - goto _exit0; - } - - pci_info->reg_map[i] = - (vxge_bus_res_t *) vxge_mem_alloc(sizeof(vxge_bus_res_t)); - - if (pci_info->reg_map[i] == NULL) { - device_printf(vdev->ndev, - "failed to allocate memory bar resources\n"); - err = ENOMEM; - goto _exit0; - } - - ((vxge_bus_res_t *) (pci_info->reg_map[i]))->bus_space_tag = - rman_get_bustag(pci_info->bar_info[i]); - - ((vxge_bus_res_t *) (pci_info->reg_map[i]))->bus_space_handle = - rman_get_bushandle(pci_info->bar_info[i]); - - ((vxge_bus_res_t *) (pci_info->reg_map[i]))->bar_start_addr = - pci_info->bar_info[i]; - - ((vxge_bus_res_t *) (pci_info->reg_map[i]))->bus_res_len = - rman_get_size(pci_info->bar_info[i]); - -_exit0: - return (err); -} - -/* - * vxge_alloc_isr_resources - */ -int -vxge_alloc_isr_resources(vxge_dev_t *vdev) -{ - int i, err = 0, irq_rid; - int msix_vec_reqd, intr_count, msix_count; - - int intr_mode = VXGE_HAL_INTR_MODE_IRQLINE; - - if (vdev->config.intr_mode == VXGE_HAL_INTR_MODE_MSIX) { - /* MSI-X messages supported by device */ - intr_count = pci_msix_count(vdev->ndev); - if (intr_count) { - - msix_vec_reqd = 4 * vdev->no_of_vpath; - if (intr_count >= msix_vec_reqd) { - intr_count = msix_vec_reqd; - - err = pci_alloc_msix(vdev->ndev, &intr_count); - if (err == 0) - intr_mode = VXGE_HAL_INTR_MODE_MSIX; - } - - if ((err != 0) || (intr_count < msix_vec_reqd)) { - device_printf(vdev->ndev, "Unable to allocate " - "msi/x vectors switching to INTA mode\n"); - } - } - } - - err = 0; - vdev->intr_count = 0; - vdev->config.intr_mode = intr_mode; - - switch (vdev->config.intr_mode) { - case VXGE_HAL_INTR_MODE_IRQLINE: - vdev->config.isr_info[0].irq_rid = 0; - vdev->config.isr_info[0].irq_res = - bus_alloc_resource_any(vdev->ndev, SYS_RES_IRQ, - &vdev->config.isr_info[0].irq_rid, - (RF_SHAREABLE | RF_ACTIVE)); - - if (vdev->config.isr_info[0].irq_res == NULL) { - device_printf(vdev->ndev, - "failed to allocate line interrupt resource\n"); - err = ENOMEM; - goto _exit0; - } - vdev->intr_count++; - break; - - case VXGE_HAL_INTR_MODE_MSIX: - msix_count = 0; - for (i = 0; i < vdev->no_of_vpath; i++) { - irq_rid = i * 4; - - vdev->config.isr_info[msix_count].irq_rid = irq_rid + 2; - vdev->config.isr_info[msix_count].irq_res = - bus_alloc_resource_any(vdev->ndev, SYS_RES_IRQ, - &vdev->config.isr_info[msix_count].irq_rid, - (RF_SHAREABLE | RF_ACTIVE)); - - if (vdev->config.isr_info[msix_count].irq_res == NULL) { - device_printf(vdev->ndev, - "allocating bus resource (rid %d) failed\n", - vdev->config.isr_info[msix_count].irq_rid); - err = ENOMEM; - goto _exit0; - } - - vdev->intr_count++; - err = bus_bind_intr(vdev->ndev, - vdev->config.isr_info[msix_count].irq_res, - (i % mp_ncpus)); - if (err != 0) - break; - - msix_count++; - } - - vdev->config.isr_info[msix_count].irq_rid = 3; - vdev->config.isr_info[msix_count].irq_res = - bus_alloc_resource_any(vdev->ndev, SYS_RES_IRQ, - &vdev->config.isr_info[msix_count].irq_rid, - (RF_SHAREABLE | RF_ACTIVE)); - - if (vdev->config.isr_info[msix_count].irq_res == NULL) { - device_printf(vdev->ndev, - "allocating bus resource (rid %d) failed\n", - vdev->config.isr_info[msix_count].irq_rid); - err = ENOMEM; - goto _exit0; - } - - vdev->intr_count++; - err = bus_bind_intr(vdev->ndev, - vdev->config.isr_info[msix_count].irq_res, (i % mp_ncpus)); - - break; - } - - vdev->device_config->intr_mode = vdev->config.intr_mode; - -_exit0: - return (err); -} - -/* - * vxge_free_resources - * Undo what-all we did during load/attach - */ -void -vxge_free_resources(device_t ndev, vxge_free_resources_e vxge_free_resource) -{ - int i; - vxge_dev_t *vdev; - - vdev = (vxge_dev_t *) device_get_softc(ndev); - - switch (vxge_free_resource) { - case VXGE_FREE_ALL: - for (i = 0; i < vdev->intr_count; i++) { - bus_teardown_intr(ndev, - vdev->config.isr_info[i].irq_res, - vdev->config.isr_info[i].irq_handle); - } - /* FALLTHROUGH */ - - case VXGE_FREE_INTERFACE: - ether_ifdetach(vdev->ifp); - bus_generic_detach(ndev); - if_free(vdev->ifp); - /* FALLTHROUGH */ - - case VXGE_FREE_MEDIA: - ifmedia_removeall(&vdev->media); - /* FALLTHROUGH */ - - case VXGE_FREE_MUTEX: - vxge_mutex_destroy(vdev); - /* FALLTHROUGH */ - - case VXGE_FREE_VPATH: - vxge_mem_free(vdev->vpaths, - vdev->no_of_vpath * sizeof(vxge_vpath_t)); - /* FALLTHROUGH */ - - case VXGE_FREE_TERMINATE_DEVICE: - if (vdev->devh != NULL) { - vxge_hal_device_private_set(vdev->devh, 0); - vxge_hal_device_terminate(vdev->devh); - } - /* FALLTHROUGH */ - - case VXGE_FREE_ISR_RESOURCE: - vxge_free_isr_resources(vdev); - /* FALLTHROUGH */ - - case VXGE_FREE_BAR2: - vxge_free_bar_resources(vdev, 2); - /* FALLTHROUGH */ - - case VXGE_FREE_BAR1: - vxge_free_bar_resources(vdev, 1); - /* FALLTHROUGH */ - - case VXGE_FREE_BAR0: - vxge_free_bar_resources(vdev, 0); - /* FALLTHROUGH */ - - case VXGE_FREE_PCI_INFO: - vxge_mem_free(vdev->pdev, sizeof(vxge_pci_info_t)); - /* FALLTHROUGH */ - - case VXGE_FREE_DEVICE_CONFIG: - vxge_mem_free(vdev->device_config, - sizeof(vxge_hal_device_config_t)); - /* FALLTHROUGH */ - - case VXGE_DISABLE_PCI_BUSMASTER: - pci_disable_busmaster(ndev); - /* FALLTHROUGH */ - - case VXGE_FREE_TERMINATE_DRIVER: - if (vxge_dev_ref_count) { - --vxge_dev_ref_count; - if (0 == vxge_dev_ref_count) - vxge_hal_driver_terminate(); - } - /* FALLTHROUGH */ - - default: - case VXGE_FREE_NONE: - break; - /* NOTREACHED */ - } -} - -void -vxge_free_isr_resources(vxge_dev_t *vdev) -{ - int i; - - switch (vdev->config.intr_mode) { - case VXGE_HAL_INTR_MODE_IRQLINE: - if (vdev->config.isr_info[0].irq_res) { - bus_release_resource(vdev->ndev, SYS_RES_IRQ, - vdev->config.isr_info[0].irq_rid, - vdev->config.isr_info[0].irq_res); - - vdev->config.isr_info[0].irq_res = NULL; - } - break; - - case VXGE_HAL_INTR_MODE_MSIX: - for (i = 0; i < vdev->intr_count; i++) { - if (vdev->config.isr_info[i].irq_res) { - bus_release_resource(vdev->ndev, SYS_RES_IRQ, - vdev->config.isr_info[i].irq_rid, - vdev->config.isr_info[i].irq_res); - - vdev->config.isr_info[i].irq_res = NULL; - } - } - - if (vdev->intr_count) - pci_release_msi(vdev->ndev); - - break; - } -} - -void -vxge_free_bar_resources(vxge_dev_t *vdev, int i) -{ - int res_id = 0; - vxge_pci_info_t *pci_info = vdev->pdev; - - res_id = PCIR_BAR((i == 0) ? 0 : (i * 2)); - - if (pci_info->bar_info[i]) - bus_release_resource(vdev->ndev, SYS_RES_MEMORY, - res_id, pci_info->bar_info[i]); - - vxge_mem_free(pci_info->reg_map[i], sizeof(vxge_bus_res_t)); -} - -/* - * vxge_init_mutex - * Initializes mutexes used in driver - */ -void -vxge_mutex_init(vxge_dev_t *vdev) -{ - int i; - - snprintf(vdev->mtx_drv_name, sizeof(vdev->mtx_drv_name), - "%s_drv", vdev->ndev_name); - - mtx_init(&vdev->mtx_drv, vdev->mtx_drv_name, - MTX_NETWORK_LOCK, MTX_DEF); - - for (i = 0; i < vdev->no_of_vpath; i++) { - snprintf(vdev->vpaths[i].mtx_tx_name, - sizeof(vdev->vpaths[i].mtx_tx_name), "%s_tx_%d", - vdev->ndev_name, i); - - mtx_init(&vdev->vpaths[i].mtx_tx, - vdev->vpaths[i].mtx_tx_name, NULL, MTX_DEF); - } -} - -/* - * vxge_mutex_destroy - * Destroys mutexes used in driver - */ -void -vxge_mutex_destroy(vxge_dev_t *vdev) -{ - int i; - - for (i = 0; i < vdev->no_of_vpath; i++) - VXGE_TX_LOCK_DESTROY(&(vdev->vpaths[i])); - - VXGE_DRV_LOCK_DESTROY(vdev); -} - -/* - * vxge_rth_config - */ -vxge_hal_status_e -vxge_rth_config(vxge_dev_t *vdev) -{ - int i; - vxge_hal_vpath_h vpath_handle; - vxge_hal_rth_hash_types_t hash_types; - vxge_hal_status_e status = VXGE_HAL_OK; - u8 mtable[256] = {0}; - - /* Filling matable with bucket-to-vpath mapping */ - vdev->config.rth_bkt_sz = VXGE_DEFAULT_RTH_BUCKET_SIZE; - - for (i = 0; i < (1 << vdev->config.rth_bkt_sz); i++) - mtable[i] = i % vdev->no_of_vpath; - - /* Fill RTH hash types */ - hash_types.hash_type_tcpipv4_en = VXGE_HAL_RING_HASH_TYPE_TCP_IPV4; - hash_types.hash_type_tcpipv6_en = VXGE_HAL_RING_HASH_TYPE_TCP_IPV6; - hash_types.hash_type_tcpipv6ex_en = VXGE_HAL_RING_HASH_TYPE_TCP_IPV6_EX; - hash_types.hash_type_ipv4_en = VXGE_HAL_RING_HASH_TYPE_IPV4; - hash_types.hash_type_ipv6_en = VXGE_HAL_RING_HASH_TYPE_IPV6; - hash_types.hash_type_ipv6ex_en = VXGE_HAL_RING_HASH_TYPE_IPV6_EX; - - /* set indirection table, bucket-to-vpath mapping */ - status = vxge_hal_vpath_rts_rth_itable_set(vdev->vpath_handles, - vdev->no_of_vpath, mtable, - ((u32) (1 << vdev->config.rth_bkt_sz))); - - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, "rth configuration failed\n"); - goto _exit0; - } - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath_handle = vxge_vpath_handle_get(vdev, i); - if (!vpath_handle) - continue; - - status = vxge_hal_vpath_rts_rth_set(vpath_handle, - RTH_ALG_JENKINS, - &hash_types, vdev->config.rth_bkt_sz, TRUE); - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, - "rth configuration failed for vpath (%d)\n", - vdev->vpaths[i].vp_id); - break; - } - } - -_exit0: - return (status); -} - -/* - * vxge_vpath_config - * Sets HAL parameter values from kenv - */ -void -vxge_vpath_config(vxge_dev_t *vdev) -{ - int i; - u32 no_of_vpath = 0; - vxge_hal_vp_config_t *vp_config; - vxge_hal_device_config_t *device_config = vdev->device_config; - - device_config->debug_level = VXGE_TRACE; - device_config->debug_mask = VXGE_COMPONENT_ALL; - device_config->device_poll_millis = VXGE_DEFAULT_DEVICE_POLL_MILLIS; - - vdev->config.no_of_vpath = - min(vdev->config.no_of_vpath, vdev->max_supported_vpath); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - vp_config = &(device_config->vp_config[i]); - vp_config->fifo.enable = VXGE_HAL_FIFO_DISABLE; - vp_config->ring.enable = VXGE_HAL_RING_DISABLE; - } - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - if (no_of_vpath >= vdev->config.no_of_vpath) - break; - - if (!bVAL1(vdev->config.hw_info.vpath_mask, i)) - continue; - - no_of_vpath++; - vp_config = &(device_config->vp_config[i]); - vp_config->mtu = VXGE_HAL_DEFAULT_MTU; - vp_config->ring.enable = VXGE_HAL_RING_ENABLE; - vp_config->ring.post_mode = VXGE_HAL_RING_POST_MODE_DOORBELL; - vp_config->ring.buffer_mode = VXGE_HAL_RING_RXD_BUFFER_MODE_1; - vp_config->ring.ring_length = - vxge_ring_length_get(VXGE_HAL_RING_RXD_BUFFER_MODE_1); - vp_config->ring.scatter_mode = VXGE_HAL_RING_SCATTER_MODE_A; - vp_config->rpa_all_vid_en = VXGE_DEFAULT_ALL_VID_ENABLE; - vp_config->rpa_strip_vlan_tag = VXGE_DEFAULT_STRIP_VLAN_TAG; - vp_config->rpa_ucast_all_addr_en = - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_DISABLE; - - vp_config->rti.intr_enable = VXGE_HAL_TIM_INTR_ENABLE; - vp_config->rti.txfrm_cnt_en = VXGE_HAL_TXFRM_CNT_EN_ENABLE; - vp_config->rti.util_sel = - VXGE_HAL_TIM_UTIL_SEL_LEGACY_RX_NET_UTIL; - - vp_config->rti.uec_a = VXGE_DEFAULT_RTI_RX_UFC_A; - vp_config->rti.uec_b = VXGE_DEFAULT_RTI_RX_UFC_B; - vp_config->rti.uec_c = VXGE_DEFAULT_RTI_RX_UFC_C; - vp_config->rti.uec_d = VXGE_DEFAULT_RTI_RX_UFC_D; - - vp_config->rti.urange_a = VXGE_DEFAULT_RTI_RX_URANGE_A; - vp_config->rti.urange_b = VXGE_DEFAULT_RTI_RX_URANGE_B; - vp_config->rti.urange_c = VXGE_DEFAULT_RTI_RX_URANGE_C; - - vp_config->rti.timer_ac_en = VXGE_HAL_TIM_TIMER_AC_ENABLE; - vp_config->rti.timer_ci_en = VXGE_HAL_TIM_TIMER_CI_ENABLE; - - vp_config->rti.btimer_val = - (VXGE_DEFAULT_RTI_BTIMER_VAL * 1000) / 272; - vp_config->rti.rtimer_val = - (VXGE_DEFAULT_RTI_RTIMER_VAL * 1000) / 272; - vp_config->rti.ltimer_val = - (VXGE_DEFAULT_RTI_LTIMER_VAL * 1000) / 272; - - if ((no_of_vpath > 1) && (VXGE_DEFAULT_CONFIG_MQ_ENABLE == 0)) - continue; - - vp_config->fifo.enable = VXGE_HAL_FIFO_ENABLE; - vp_config->fifo.max_aligned_frags = - VXGE_DEFAULT_FIFO_ALIGNED_FRAGS; - - vp_config->tti.intr_enable = VXGE_HAL_TIM_INTR_ENABLE; - vp_config->tti.txfrm_cnt_en = VXGE_HAL_TXFRM_CNT_EN_ENABLE; - vp_config->tti.util_sel = - VXGE_HAL_TIM_UTIL_SEL_LEGACY_TX_NET_UTIL; - - vp_config->tti.uec_a = VXGE_DEFAULT_TTI_TX_UFC_A; - vp_config->tti.uec_b = VXGE_DEFAULT_TTI_TX_UFC_B; - vp_config->tti.uec_c = VXGE_DEFAULT_TTI_TX_UFC_C; - vp_config->tti.uec_d = VXGE_DEFAULT_TTI_TX_UFC_D; - - vp_config->tti.urange_a = VXGE_DEFAULT_TTI_TX_URANGE_A; - vp_config->tti.urange_b = VXGE_DEFAULT_TTI_TX_URANGE_B; - vp_config->tti.urange_c = VXGE_DEFAULT_TTI_TX_URANGE_C; - - vp_config->tti.timer_ac_en = VXGE_HAL_TIM_TIMER_AC_ENABLE; - vp_config->tti.timer_ci_en = VXGE_HAL_TIM_TIMER_CI_ENABLE; - - vp_config->tti.btimer_val = - (VXGE_DEFAULT_TTI_BTIMER_VAL * 1000) / 272; - vp_config->tti.rtimer_val = - (VXGE_DEFAULT_TTI_RTIMER_VAL * 1000) / 272; - vp_config->tti.ltimer_val = - (VXGE_DEFAULT_TTI_LTIMER_VAL * 1000) / 272; - } - - vdev->no_of_vpath = no_of_vpath; - - if (vdev->no_of_vpath == 1) - vdev->config.tx_steering = 0; - - if (vdev->config.rth_enable && (vdev->no_of_vpath > 1)) { - device_config->rth_en = VXGE_HAL_RTH_ENABLE; - device_config->rth_it_type = VXGE_HAL_RTH_IT_TYPE_MULTI_IT; - } - - vdev->config.rth_enable = device_config->rth_en; -} - -/* - * vxge_vpath_cb_fn - * Virtual path Callback function - */ -/* ARGSUSED */ -static vxge_hal_status_e -vxge_vpath_cb_fn(vxge_hal_client_h client_handle, vxge_hal_up_msg_h msgh, - vxge_hal_message_type_e msg_type, vxge_hal_obj_id_t obj_id, - vxge_hal_result_e result, vxge_hal_opaque_handle_t *opaque_handle) -{ - return (VXGE_HAL_OK); -} - -/* - * vxge_vpath_open - */ -int -vxge_vpath_open(vxge_dev_t *vdev) -{ - int i, err = EINVAL; - u64 func_id; - - vxge_vpath_t *vpath; - vxge_hal_vpath_attr_t vpath_attr; - vxge_hal_status_e status = VXGE_HAL_OK; - struct lro_ctrl *lro = NULL; - - bzero(&vpath_attr, sizeof(vxge_hal_vpath_attr_t)); - - for (i = 0; i < vdev->no_of_vpath; i++) { - - vpath = &(vdev->vpaths[i]); - lro = &vpath->lro; - - /* Vpath vpath_attr: FIFO */ - vpath_attr.vp_id = vpath->vp_id; - vpath_attr.fifo_attr.callback = vxge_tx_compl; - vpath_attr.fifo_attr.txdl_init = vxge_tx_replenish; - vpath_attr.fifo_attr.txdl_term = vxge_tx_term; - vpath_attr.fifo_attr.userdata = vpath; - vpath_attr.fifo_attr.per_txdl_space = sizeof(vxge_txdl_priv_t); - - /* Vpath vpath_attr: Ring */ - vpath_attr.ring_attr.callback = vxge_rx_compl; - vpath_attr.ring_attr.rxd_init = vxge_rx_replenish; - vpath_attr.ring_attr.rxd_term = vxge_rx_term; - vpath_attr.ring_attr.userdata = vpath; - vpath_attr.ring_attr.per_rxd_space = sizeof(vxge_rxd_priv_t); - - err = vxge_dma_tags_create(vpath); - if (err != 0) { - device_printf(vdev->ndev, - "failed to create dma tags\n"); - break; - } -#if __FreeBSD_version >= 800000 - vpath->br = buf_ring_alloc(VXGE_DEFAULT_BR_SIZE, M_DEVBUF, - M_WAITOK, &vpath->mtx_tx); - if (vpath->br == NULL) { - err = ENOMEM; - break; - } -#endif - status = vxge_hal_vpath_open(vdev->devh, &vpath_attr, - (vxge_hal_vpath_callback_f) vxge_vpath_cb_fn, - NULL, &vpath->handle); - if (status != VXGE_HAL_OK) { - device_printf(vdev->ndev, - "failed to open vpath (%d)\n", vpath->vp_id); - err = EPERM; - break; - } - vpath->is_open = TRUE; - vdev->vpath_handles[i] = vpath->handle; - - vpath->tx_ticks = ticks; - vpath->rx_ticks = ticks; - - vpath->tti_rtimer_val = VXGE_DEFAULT_TTI_RTIMER_VAL; - vpath->rti_rtimer_val = VXGE_DEFAULT_RTI_RTIMER_VAL; - - vpath->tx_intr_coalesce = vdev->config.intr_coalesce; - vpath->rx_intr_coalesce = vdev->config.intr_coalesce; - - func_id = vdev->config.hw_info.func_id; - - if (vdev->config.low_latency && - (vdev->config.bw_info[func_id].priority == - VXGE_DEFAULT_VPATH_PRIORITY_HIGH)) { - vpath->tx_intr_coalesce = 0; - } - - if (vdev->ifp->if_capenable & IFCAP_LRO) { - err = tcp_lro_init(lro); - if (err != 0) { - device_printf(vdev->ndev, - "LRO Initialization failed!\n"); - break; - } - vpath->lro_enable = TRUE; - lro->ifp = vdev->ifp; - } - } - - return (err); -} - -void -vxge_tso_config(vxge_dev_t *vdev) -{ - u32 func_id, priority; - vxge_hal_status_e status = VXGE_HAL_OK; - - vdev->ifp->if_capabilities |= IFCAP_TSO4; - - status = vxge_bw_priority_get(vdev, NULL); - if (status == VXGE_HAL_OK) { - - func_id = vdev->config.hw_info.func_id; - priority = vdev->config.bw_info[func_id].priority; - - if (priority != VXGE_DEFAULT_VPATH_PRIORITY_HIGH) - vdev->ifp->if_capabilities &= ~IFCAP_TSO4; - } - -#if __FreeBSD_version >= 800000 - if (vdev->ifp->if_capabilities & IFCAP_TSO4) - vdev->ifp->if_capabilities |= IFCAP_VLAN_HWTSO; -#endif - -} - -vxge_hal_status_e -vxge_bw_priority_get(vxge_dev_t *vdev, vxge_bw_info_t *bw_info) -{ - u32 priority, bandwidth; - u32 vpath_count; - - u64 func_id, func_mode, vpath_list[VXGE_HAL_MAX_VIRTUAL_PATHS]; - vxge_hal_status_e status = VXGE_HAL_OK; - - func_id = vdev->config.hw_info.func_id; - if (bw_info) { - func_id = bw_info->func_id; - func_mode = vdev->config.hw_info.function_mode; - if ((is_single_func(func_mode)) && (func_id > 0)) - return (VXGE_HAL_FAIL); - } - - if (vdev->hw_fw_version >= VXGE_FW_VERSION(1, 8, 0)) { - - status = vxge_hal_vf_rx_bw_get(vdev->devh, - func_id, &bandwidth, &priority); - - } else { - - status = vxge_hal_get_vpath_list(vdev->devh, - func_id, vpath_list, &vpath_count); - - if (status == VXGE_HAL_OK) { - status = vxge_hal_bw_priority_get(vdev->devh, - vpath_list[0], &bandwidth, &priority); - } - } - - if (status == VXGE_HAL_OK) { - if (bw_info) { - bw_info->priority = priority; - bw_info->bandwidth = bandwidth; - } else { - vdev->config.bw_info[func_id].priority = priority; - vdev->config.bw_info[func_id].bandwidth = bandwidth; - } - } - - return (status); -} - -/* - * close vpaths - */ -void -vxge_vpath_close(vxge_dev_t *vdev) -{ - int i; - vxge_vpath_t *vpath; - - for (i = 0; i < vdev->no_of_vpath; i++) { - - vpath = &(vdev->vpaths[i]); - if (vpath->handle) - vxge_hal_vpath_close(vpath->handle); - -#if __FreeBSD_version >= 800000 - if (vpath->br != NULL) - buf_ring_free(vpath->br, M_DEVBUF); -#endif - /* Free LRO memory */ - if (vpath->lro_enable) - tcp_lro_free(&vpath->lro); - - if (vpath->dma_tag_rx) { - bus_dmamap_destroy(vpath->dma_tag_rx, - vpath->extra_dma_map); - bus_dma_tag_destroy(vpath->dma_tag_rx); - } - - if (vpath->dma_tag_tx) - bus_dma_tag_destroy(vpath->dma_tag_tx); - - vpath->handle = NULL; - vpath->is_open = FALSE; - } -} - -/* - * reset vpaths - */ -void -vxge_vpath_reset(vxge_dev_t *vdev) -{ - int i; - vxge_hal_vpath_h vpath_handle; - vxge_hal_status_e status = VXGE_HAL_OK; - - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath_handle = vxge_vpath_handle_get(vdev, i); - if (!vpath_handle) - continue; - - status = vxge_hal_vpath_reset(vpath_handle); - if (status != VXGE_HAL_OK) - device_printf(vdev->ndev, - "failed to reset vpath :%d\n", i); - } -} - -static inline int -vxge_vpath_get(vxge_dev_t *vdev, mbuf_t mhead) -{ - struct tcphdr *th = NULL; - struct udphdr *uh = NULL; - struct ip *ip = NULL; - struct ip6_hdr *ip6 = NULL; - struct ether_vlan_header *eth = NULL; - void *ulp = NULL; - - int ehdrlen, iphlen = 0; - u8 ipproto = 0; - u16 etype, src_port, dst_port; - u16 queue_len, counter = 0; - - src_port = dst_port = 0; - queue_len = vdev->no_of_vpath; - - eth = mtod(mhead, struct ether_vlan_header *); - if (eth->evl_encap_proto == htons(ETHERTYPE_VLAN)) { - etype = ntohs(eth->evl_proto); - ehdrlen = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN; - } else { - etype = ntohs(eth->evl_encap_proto); - ehdrlen = ETHER_HDR_LEN; - } - - switch (etype) { - case ETHERTYPE_IP: - ip = (struct ip *) (mhead->m_data + ehdrlen); - iphlen = ip->ip_hl << 2; - ipproto = ip->ip_p; - th = (struct tcphdr *) ((caddr_t)ip + iphlen); - uh = (struct udphdr *) ((caddr_t)ip + iphlen); - break; - - case ETHERTYPE_IPV6: - ip6 = (struct ip6_hdr *) (mhead->m_data + ehdrlen); - iphlen = sizeof(struct ip6_hdr); - ipproto = ip6->ip6_nxt; - - ulp = mtod(mhead, char *) + iphlen; - th = ((struct tcphdr *) (ulp)); - uh = ((struct udphdr *) (ulp)); - break; - - default: - break; - } - - switch (ipproto) { - case IPPROTO_TCP: - src_port = th->th_sport; - dst_port = th->th_dport; - break; - - case IPPROTO_UDP: - src_port = uh->uh_sport; - dst_port = uh->uh_dport; - break; - - default: - break; - } - - counter = (ntohs(src_port) + ntohs(dst_port)) & - vpath_selector[queue_len - 1]; - - if (counter >= queue_len) - counter = queue_len - 1; - - return (counter); -} - -static inline vxge_hal_vpath_h -vxge_vpath_handle_get(vxge_dev_t *vdev, int i) -{ - return (vdev->vpaths[i].is_open ? vdev->vpaths[i].handle : NULL); -} - -int -vxge_firmware_verify(vxge_dev_t *vdev) -{ - int err = 0; - u64 active_config; - vxge_hal_status_e status = VXGE_HAL_FAIL; - - if (vdev->fw_upgrade) { - status = vxge_firmware_upgrade(vdev); - if (status == VXGE_HAL_OK) { - err = ENXIO; - goto _exit0; - } - } - - if ((vdev->config.function_mode != VXGE_DEFAULT_CONFIG_VALUE) && - (vdev->config.hw_info.function_mode != - (u64) vdev->config.function_mode)) { - - status = vxge_func_mode_set(vdev); - if (status == VXGE_HAL_OK) - err = ENXIO; - } - - /* l2_switch configuration */ - active_config = VXGE_DEFAULT_CONFIG_VALUE; - status = vxge_hal_get_active_config(vdev->devh, - VXGE_HAL_XMAC_NWIF_ActConfig_L2SwitchEnabled, - &active_config); - - if (status == VXGE_HAL_OK) { - vdev->l2_switch = active_config; - if (vdev->config.l2_switch != VXGE_DEFAULT_CONFIG_VALUE) { - if (vdev->config.l2_switch != active_config) { - status = vxge_l2switch_mode_set(vdev); - if (status == VXGE_HAL_OK) - err = ENXIO; - } - } - } - - if (vdev->config.hw_info.ports == VXGE_DUAL_PORT_MODE) { - if (vxge_port_mode_update(vdev) == ENXIO) - err = ENXIO; - } - -_exit0: - if (err == ENXIO) - device_printf(vdev->ndev, "PLEASE POWER CYCLE THE SYSTEM\n"); - - return (err); -} - -vxge_hal_status_e -vxge_firmware_upgrade(vxge_dev_t *vdev) -{ - u8 *fw_buffer; - u32 fw_size; - vxge_hal_device_hw_info_t *hw_info; - vxge_hal_status_e status = VXGE_HAL_OK; - - hw_info = &vdev->config.hw_info; - - fw_size = sizeof(VXGE_FW_ARRAY_NAME); - fw_buffer = (u8 *) VXGE_FW_ARRAY_NAME; - - device_printf(vdev->ndev, "Current firmware version : %s (%s)\n", - hw_info->fw_version.version, hw_info->fw_date.date); - - device_printf(vdev->ndev, "Upgrading firmware to %d.%d.%d\n", - VXGE_MIN_FW_MAJOR_VERSION, VXGE_MIN_FW_MINOR_VERSION, - VXGE_MIN_FW_BUILD_NUMBER); - - /* Call HAL API to upgrade firmware */ - status = vxge_hal_mrpcim_fw_upgrade(vdev->pdev, - (pci_reg_h) vdev->pdev->reg_map[0], - (u8 *) vdev->pdev->bar_info[0], - fw_buffer, fw_size); - - device_printf(vdev->ndev, "firmware upgrade %s\n", - (status == VXGE_HAL_OK) ? "successful" : "failed"); - - return (status); -} - -vxge_hal_status_e -vxge_func_mode_set(vxge_dev_t *vdev) -{ - u64 active_config; - vxge_hal_status_e status = VXGE_HAL_FAIL; - - status = vxge_hal_mrpcim_pcie_func_mode_set(vdev->devh, - vdev->config.function_mode); - device_printf(vdev->ndev, - "function mode change %s\n", - (status == VXGE_HAL_OK) ? "successful" : "failed"); - - if (status == VXGE_HAL_OK) { - vxge_hal_set_fw_api(vdev->devh, 0ULL, - VXGE_HAL_API_FUNC_MODE_COMMIT, - 0, 0ULL, 0ULL); - - vxge_hal_get_active_config(vdev->devh, - VXGE_HAL_XMAC_NWIF_ActConfig_NWPortMode, - &active_config); - - /* - * If in MF + DP mode - * if user changes to SF, change port_mode to single port mode - */ - if (((is_multi_func(vdev->config.hw_info.function_mode)) && - is_single_func(vdev->config.function_mode)) && - (active_config == VXGE_HAL_DP_NP_MODE_DUAL_PORT)) { - vdev->config.port_mode = - VXGE_HAL_DP_NP_MODE_SINGLE_PORT; - - status = vxge_port_mode_set(vdev); - } - } - return (status); -} - -vxge_hal_status_e -vxge_port_mode_set(vxge_dev_t *vdev) -{ - vxge_hal_status_e status = VXGE_HAL_FAIL; - - status = vxge_hal_set_port_mode(vdev->devh, vdev->config.port_mode); - device_printf(vdev->ndev, - "port mode change %s\n", - (status == VXGE_HAL_OK) ? "successful" : "failed"); - - if (status == VXGE_HAL_OK) { - vxge_hal_set_fw_api(vdev->devh, 0ULL, - VXGE_HAL_API_FUNC_MODE_COMMIT, - 0, 0ULL, 0ULL); - - /* Configure vpath_mapping for active-active mode only */ - if (vdev->config.port_mode == VXGE_HAL_DP_NP_MODE_DUAL_PORT) { - - status = vxge_hal_config_vpath_map(vdev->devh, - VXGE_DUAL_PORT_MAP); - - device_printf(vdev->ndev, "dual port map change %s\n", - (status == VXGE_HAL_OK) ? "successful" : "failed"); - } - } - return (status); -} - -int -vxge_port_mode_update(vxge_dev_t *vdev) -{ - int err = 0; - u64 active_config; - vxge_hal_status_e status = VXGE_HAL_FAIL; - - if ((vdev->config.port_mode == VXGE_HAL_DP_NP_MODE_DUAL_PORT) && - is_single_func(vdev->config.hw_info.function_mode)) { - - device_printf(vdev->ndev, - "Adapter in SF mode, dual port mode is not allowed\n"); - err = EPERM; - goto _exit0; - } - - active_config = VXGE_DEFAULT_CONFIG_VALUE; - status = vxge_hal_get_active_config(vdev->devh, - VXGE_HAL_XMAC_NWIF_ActConfig_NWPortMode, - &active_config); - if (status != VXGE_HAL_OK) { - err = EINVAL; - goto _exit0; - } - - vdev->port_mode = active_config; - if (vdev->config.port_mode != VXGE_DEFAULT_CONFIG_VALUE) { - if (vdev->config.port_mode != vdev->port_mode) { - status = vxge_port_mode_set(vdev); - if (status != VXGE_HAL_OK) { - err = EINVAL; - goto _exit0; - } - err = ENXIO; - vdev->port_mode = vdev->config.port_mode; - } - } - - active_config = VXGE_DEFAULT_CONFIG_VALUE; - status = vxge_hal_get_active_config(vdev->devh, - VXGE_HAL_XMAC_NWIF_ActConfig_BehaviourOnFail, - &active_config); - if (status != VXGE_HAL_OK) { - err = EINVAL; - goto _exit0; - } - - vdev->port_failure = active_config; - - /* - * active/active mode : set to NoMove - * active/passive mode: set to Failover-Failback - */ - if (vdev->port_mode == VXGE_HAL_DP_NP_MODE_DUAL_PORT) - vdev->config.port_failure = - VXGE_HAL_XMAC_NWIF_OnFailure_NoMove; - - else if (vdev->port_mode == VXGE_HAL_DP_NP_MODE_ACTIVE_PASSIVE) - vdev->config.port_failure = - VXGE_HAL_XMAC_NWIF_OnFailure_OtherPortBackOnRestore; - - if ((vdev->port_mode != VXGE_HAL_DP_NP_MODE_SINGLE_PORT) && - (vdev->config.port_failure != vdev->port_failure)) { - status = vxge_port_behavior_on_failure_set(vdev); - if (status == VXGE_HAL_OK) - err = ENXIO; - } - -_exit0: - return (err); -} - -vxge_hal_status_e -vxge_port_mode_get(vxge_dev_t *vdev, vxge_port_info_t *port_info) -{ - int err = 0; - u64 active_config; - vxge_hal_status_e status = VXGE_HAL_FAIL; - - active_config = VXGE_DEFAULT_CONFIG_VALUE; - status = vxge_hal_get_active_config(vdev->devh, - VXGE_HAL_XMAC_NWIF_ActConfig_NWPortMode, - &active_config); - - if (status != VXGE_HAL_OK) { - err = ENXIO; - goto _exit0; - } - - port_info->port_mode = active_config; - - active_config = VXGE_DEFAULT_CONFIG_VALUE; - status = vxge_hal_get_active_config(vdev->devh, - VXGE_HAL_XMAC_NWIF_ActConfig_BehaviourOnFail, - &active_config); - if (status != VXGE_HAL_OK) { - err = ENXIO; - goto _exit0; - } - - port_info->port_failure = active_config; - -_exit0: - return (err); -} - -vxge_hal_status_e -vxge_port_behavior_on_failure_set(vxge_dev_t *vdev) -{ - vxge_hal_status_e status = VXGE_HAL_FAIL; - - status = vxge_hal_set_behavior_on_failure(vdev->devh, - vdev->config.port_failure); - - device_printf(vdev->ndev, - "port behaviour on failure change %s\n", - (status == VXGE_HAL_OK) ? "successful" : "failed"); - - if (status == VXGE_HAL_OK) - vxge_hal_set_fw_api(vdev->devh, 0ULL, - VXGE_HAL_API_FUNC_MODE_COMMIT, - 0, 0ULL, 0ULL); - - return (status); -} - -void -vxge_active_port_update(vxge_dev_t *vdev) -{ - u64 active_config; - vxge_hal_status_e status = VXGE_HAL_FAIL; - - active_config = VXGE_DEFAULT_CONFIG_VALUE; - status = vxge_hal_get_active_config(vdev->devh, - VXGE_HAL_XMAC_NWIF_ActConfig_ActivePort, - &active_config); - - if (status == VXGE_HAL_OK) - vdev->active_port = active_config; -} - -vxge_hal_status_e -vxge_l2switch_mode_set(vxge_dev_t *vdev) -{ - vxge_hal_status_e status = VXGE_HAL_FAIL; - - status = vxge_hal_set_l2switch_mode(vdev->devh, - vdev->config.l2_switch); - - device_printf(vdev->ndev, "L2 switch %s\n", - (status == VXGE_HAL_OK) ? - (vdev->config.l2_switch) ? "enable" : "disable" : - "change failed"); - - if (status == VXGE_HAL_OK) - vxge_hal_set_fw_api(vdev->devh, 0ULL, - VXGE_HAL_API_FUNC_MODE_COMMIT, - 0, 0ULL, 0ULL); - - return (status); -} - -/* - * vxge_promisc_set - * Enable Promiscuous Mode - */ -void -vxge_promisc_set(vxge_dev_t *vdev) -{ - int i; - ifnet_t ifp; - vxge_hal_vpath_h vpath_handle; - - if (!vdev->is_initialized) - return; - - ifp = vdev->ifp; - - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath_handle = vxge_vpath_handle_get(vdev, i); - if (!vpath_handle) - continue; - - if (ifp->if_flags & IFF_PROMISC) - vxge_hal_vpath_promisc_enable(vpath_handle); - else - vxge_hal_vpath_promisc_disable(vpath_handle); - } -} - -/* - * vxge_change_mtu - * Change interface MTU to a requested valid size - */ -int -vxge_change_mtu(vxge_dev_t *vdev, unsigned long new_mtu) -{ - int err = EINVAL; - - if ((new_mtu < VXGE_HAL_MIN_MTU) || (new_mtu > VXGE_HAL_MAX_MTU)) - goto _exit0; - - (vdev->ifp)->if_mtu = new_mtu; - device_printf(vdev->ndev, "MTU changed to %u\n", (vdev->ifp)->if_mtu); - - if (vdev->is_initialized) { - if_down(vdev->ifp); - vxge_reset(vdev); - if_up(vdev->ifp); - } - err = 0; - -_exit0: - return (err); -} - -/* - * Creates DMA tags for both Tx and Rx - */ -int -vxge_dma_tags_create(vxge_vpath_t *vpath) -{ - int err = 0; - bus_size_t max_size, boundary; - vxge_dev_t *vdev = vpath->vdev; - ifnet_t ifp = vdev->ifp; - - max_size = ifp->if_mtu + - VXGE_HAL_MAC_HEADER_MAX_SIZE + - VXGE_HAL_HEADER_ETHERNET_II_802_3_ALIGN; - - VXGE_BUFFER_ALIGN(max_size, 128) - if (max_size <= MCLBYTES) - vdev->rx_mbuf_sz = MCLBYTES; - else - vdev->rx_mbuf_sz = - (max_size > MJUMPAGESIZE) ? MJUM9BYTES : MJUMPAGESIZE; - - boundary = (max_size > PAGE_SIZE) ? 0 : PAGE_SIZE; - - /* DMA tag for Tx */ - err = bus_dma_tag_create( - bus_get_dma_tag(vdev->ndev), - 1, - PAGE_SIZE, - BUS_SPACE_MAXADDR, - BUS_SPACE_MAXADDR, - NULL, - NULL, - VXGE_TSO_SIZE, - VXGE_MAX_SEGS, - PAGE_SIZE, - BUS_DMA_ALLOCNOW, - NULL, - NULL, - &(vpath->dma_tag_tx)); - if (err != 0) - goto _exit0; - - /* DMA tag for Rx */ - err = bus_dma_tag_create( - bus_get_dma_tag(vdev->ndev), - 1, - boundary, - BUS_SPACE_MAXADDR, - BUS_SPACE_MAXADDR, - NULL, - NULL, - vdev->rx_mbuf_sz, - 1, - vdev->rx_mbuf_sz, - BUS_DMA_ALLOCNOW, - NULL, - NULL, - &(vpath->dma_tag_rx)); - if (err != 0) - goto _exit1; - - /* Create DMA map for this descriptor */ - err = bus_dmamap_create(vpath->dma_tag_rx, BUS_DMA_NOWAIT, - &vpath->extra_dma_map); - if (err == 0) - goto _exit0; - - bus_dma_tag_destroy(vpath->dma_tag_rx); - -_exit1: - bus_dma_tag_destroy(vpath->dma_tag_tx); - -_exit0: - return (err); -} - -static inline int -vxge_dma_mbuf_coalesce(bus_dma_tag_t dma_tag_tx, bus_dmamap_t dma_map, - mbuf_t * m_headp, bus_dma_segment_t * dma_buffers, - int *num_segs) -{ - int err = 0; - mbuf_t mbuf_pkt = NULL; - -retry: - err = bus_dmamap_load_mbuf_sg(dma_tag_tx, dma_map, *m_headp, - dma_buffers, num_segs, BUS_DMA_NOWAIT); - if (err == EFBIG) { - /* try to defrag, too many segments */ - mbuf_pkt = m_defrag(*m_headp, M_NOWAIT); - if (mbuf_pkt == NULL) { - err = ENOBUFS; - goto _exit0; - } - *m_headp = mbuf_pkt; - goto retry; - } - -_exit0: - return (err); -} - -int -vxge_device_hw_info_get(vxge_dev_t *vdev) -{ - int i, err = ENXIO; - u64 vpath_mask = 0; - u32 max_supported_vpath = 0; - u32 fw_ver_maj_min; - vxge_firmware_upgrade_e fw_option; - - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_device_hw_info_t *hw_info; - - status = vxge_hal_device_hw_info_get(vdev->pdev, - (pci_reg_h) vdev->pdev->reg_map[0], - (u8 *) vdev->pdev->bar_info[0], - &vdev->config.hw_info); - - if (status != VXGE_HAL_OK) - goto _exit0; - - hw_info = &vdev->config.hw_info; - - vpath_mask = hw_info->vpath_mask; - if (vpath_mask == 0) { - device_printf(vdev->ndev, "No vpaths available in device\n"); - goto _exit0; - } - - fw_option = vdev->config.fw_option; - - /* Check how many vpaths are available */ - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - if (!((vpath_mask) & mBIT(i))) - continue; - max_supported_vpath++; - } - - vdev->max_supported_vpath = max_supported_vpath; - status = vxge_hal_device_is_privileged(hw_info->host_type, - hw_info->func_id); - vdev->is_privilaged = (status == VXGE_HAL_OK) ? TRUE : FALSE; - - vdev->hw_fw_version = VXGE_FW_VERSION( - hw_info->fw_version.major, - hw_info->fw_version.minor, - hw_info->fw_version.build); - - fw_ver_maj_min = - VXGE_FW_MAJ_MIN_VERSION(hw_info->fw_version.major, - hw_info->fw_version.minor); - - if ((fw_option >= VXGE_FW_UPGRADE_FORCE) || - (vdev->hw_fw_version != VXGE_DRV_FW_VERSION)) { - - /* For fw_ver 1.8.1 and above ignore build number. */ - if ((fw_option == VXGE_FW_UPGRADE_ALL) && - ((vdev->hw_fw_version >= VXGE_FW_VERSION(1, 8, 1)) && - (fw_ver_maj_min == VXGE_DRV_FW_MAJ_MIN_VERSION))) { - goto _exit1; - } - - if (vdev->hw_fw_version < VXGE_BASE_FW_VERSION) { - device_printf(vdev->ndev, - "Upgrade driver through vxge_update, " - "Unable to load the driver.\n"); - goto _exit0; - } - vdev->fw_upgrade = TRUE; - } - -_exit1: - err = 0; - -_exit0: - return (err); -} - -/* - * vxge_device_hw_info_print - * Print device and driver information - */ -void -vxge_device_hw_info_print(vxge_dev_t *vdev) -{ - u32 i; - device_t ndev; - struct sysctl_ctx_list *ctx; - struct sysctl_oid_list *children; - char pmd_type[2][VXGE_PMD_INFO_LEN]; - - vxge_hal_device_t *hldev; - vxge_hal_device_hw_info_t *hw_info; - vxge_hal_device_pmd_info_t *pmd_port; - - hldev = vdev->devh; - ndev = vdev->ndev; - - ctx = device_get_sysctl_ctx(ndev); - children = SYSCTL_CHILDREN(device_get_sysctl_tree(ndev)); - - hw_info = &(vdev->config.hw_info); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_DRV_VERSION], - sizeof(vdev->config.nic_attr[VXGE_PRINT_DRV_VERSION]), - "%d.%d.%d.%d", XGELL_VERSION_MAJOR, XGELL_VERSION_MINOR, - XGELL_VERSION_FIX, XGELL_VERSION_BUILD); - - /* Print PCI-e bus type/speed/width info */ - snprintf(vdev->config.nic_attr[VXGE_PRINT_PCIE_INFO], - sizeof(vdev->config.nic_attr[VXGE_PRINT_PCIE_INFO]), - "x%d", hldev->link_width); - - if (hldev->link_width <= VXGE_HAL_PCI_E_LINK_WIDTH_X4) - device_printf(ndev, "For optimal performance a x8 " - "PCI-Express slot is required.\n"); - - vxge_null_terminate((char *) hw_info->serial_number, - sizeof(hw_info->serial_number)); - - vxge_null_terminate((char *) hw_info->part_number, - sizeof(hw_info->part_number)); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_SERIAL_NO], - sizeof(vdev->config.nic_attr[VXGE_PRINT_SERIAL_NO]), - "%s", hw_info->serial_number); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_PART_NO], - sizeof(vdev->config.nic_attr[VXGE_PRINT_PART_NO]), - "%s", hw_info->part_number); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_FW_VERSION], - sizeof(vdev->config.nic_attr[VXGE_PRINT_FW_VERSION]), - "%s", hw_info->fw_version.version); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_FW_DATE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_FW_DATE]), - "%s", hw_info->fw_date.date); - - pmd_port = &(hw_info->pmd_port0); - for (i = 0; i < hw_info->ports; i++) { - - vxge_pmd_port_type_get(vdev, pmd_port->type, - pmd_type[i], sizeof(pmd_type[i])); - - strncpy(vdev->config.nic_attr[VXGE_PRINT_PMD_PORTS_0 + i], - "vendor=??, sn=??, pn=??, type=??", - sizeof(vdev->config.nic_attr[VXGE_PRINT_PMD_PORTS_0 + i])); - - vxge_null_terminate(pmd_port->vendor, sizeof(pmd_port->vendor)); - if (strlen(pmd_port->vendor) == 0) { - pmd_port = &(hw_info->pmd_port1); - continue; - } - - vxge_null_terminate(pmd_port->ser_num, - sizeof(pmd_port->ser_num)); - - vxge_null_terminate(pmd_port->part_num, - sizeof(pmd_port->part_num)); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_PMD_PORTS_0 + i], - sizeof(vdev->config.nic_attr[VXGE_PRINT_PMD_PORTS_0 + i]), - "vendor=%s, sn=%s, pn=%s, type=%s", - pmd_port->vendor, pmd_port->ser_num, - pmd_port->part_num, pmd_type[i]); - - pmd_port = &(hw_info->pmd_port1); - } - - switch (hw_info->function_mode) { - case VXGE_HAL_PCIE_FUNC_MODE_SF1_VP17: - snprintf(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE]), - "%s %d %s", "Single Function - 1 function(s)", - vdev->max_supported_vpath, "VPath(s)/function"); - break; - - case VXGE_HAL_PCIE_FUNC_MODE_MF2_VP8: - snprintf(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE]), - "%s %d %s", "Multi Function - 2 function(s)", - vdev->max_supported_vpath, "VPath(s)/function"); - break; - - case VXGE_HAL_PCIE_FUNC_MODE_MF4_VP4: - snprintf(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE]), - "%s %d %s", "Multi Function - 4 function(s)", - vdev->max_supported_vpath, "VPath(s)/function"); - break; - - case VXGE_HAL_PCIE_FUNC_MODE_MF8_VP2: - snprintf(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE]), - "%s %d %s", "Multi Function - 8 function(s)", - vdev->max_supported_vpath, "VPath(s)/function"); - break; - - case VXGE_HAL_PCIE_FUNC_MODE_MF8P_VP2: - snprintf(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE]), - "%s %d %s", "Multi Function (DirectIO) - 8 function(s)", - vdev->max_supported_vpath, "VPath(s)/function"); - break; - } - - snprintf(vdev->config.nic_attr[VXGE_PRINT_INTR_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_INTR_MODE]), - "%s", ((vdev->config.intr_mode == VXGE_HAL_INTR_MODE_MSIX) ? - "MSI-X" : "INTA")); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_VPATH_COUNT], - sizeof(vdev->config.nic_attr[VXGE_PRINT_VPATH_COUNT]), - "%d", vdev->no_of_vpath); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_MTU_SIZE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_MTU_SIZE]), - "%u", vdev->ifp->if_mtu); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_LRO_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_LRO_MODE]), - "%s", ((vdev->config.lro_enable) ? "Enabled" : "Disabled")); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_RTH_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_RTH_MODE]), - "%s", ((vdev->config.rth_enable) ? "Enabled" : "Disabled")); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_TSO_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_TSO_MODE]), - "%s", ((vdev->ifp->if_capenable & IFCAP_TSO4) ? - "Enabled" : "Disabled")); - - snprintf(vdev->config.nic_attr[VXGE_PRINT_ADAPTER_TYPE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_ADAPTER_TYPE]), - "%s", ((hw_info->ports == 1) ? "Single Port" : "Dual Port")); - - if (vdev->is_privilaged) { - - if (hw_info->ports > 1) { - - snprintf(vdev->config.nic_attr[VXGE_PRINT_PORT_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_PORT_MODE]), - "%s", vxge_port_mode[vdev->port_mode]); - - if (vdev->port_mode != VXGE_HAL_DP_NP_MODE_SINGLE_PORT) - snprintf(vdev->config.nic_attr[VXGE_PRINT_PORT_FAILURE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_PORT_FAILURE]), - "%s", vxge_port_failure[vdev->port_failure]); - - vxge_active_port_update(vdev); - snprintf(vdev->config.nic_attr[VXGE_PRINT_ACTIVE_PORT], - sizeof(vdev->config.nic_attr[VXGE_PRINT_ACTIVE_PORT]), - "%lld", vdev->active_port); - } - - if (!is_single_func(hw_info->function_mode)) { - snprintf(vdev->config.nic_attr[VXGE_PRINT_L2SWITCH_MODE], - sizeof(vdev->config.nic_attr[VXGE_PRINT_L2SWITCH_MODE]), - "%s", ((vdev->l2_switch) ? "Enabled" : "Disabled")); - } - } - - device_printf(ndev, "Driver version\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_DRV_VERSION]); - - device_printf(ndev, "Serial number\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_SERIAL_NO]); - - device_printf(ndev, "Part number\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_PART_NO]); - - device_printf(ndev, "Firmware version\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_FW_VERSION]); - - device_printf(ndev, "Firmware date\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_FW_DATE]); - - device_printf(ndev, "Link width\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_PCIE_INFO]); - - if (vdev->is_privilaged) { - device_printf(ndev, "Function mode\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE]); - } - - device_printf(ndev, "Interrupt type\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_INTR_MODE]); - - device_printf(ndev, "VPath(s) opened\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_VPATH_COUNT]); - - device_printf(ndev, "Adapter Type\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_ADAPTER_TYPE]); - - device_printf(ndev, "PMD Port 0\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_PMD_PORTS_0]); - - if (hw_info->ports > 1) { - device_printf(ndev, "PMD Port 1\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_PMD_PORTS_1]); - - if (vdev->is_privilaged) { - device_printf(ndev, "Port Mode\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_PORT_MODE]); - - if (vdev->port_mode != VXGE_HAL_DP_NP_MODE_SINGLE_PORT) - device_printf(ndev, "Port Failure\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_PORT_FAILURE]); - - device_printf(vdev->ndev, "Active Port\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_ACTIVE_PORT]); - } - } - - if (vdev->is_privilaged && !is_single_func(hw_info->function_mode)) { - device_printf(vdev->ndev, "L2 Switch\t: %s\n", - vdev->config.nic_attr[VXGE_PRINT_L2SWITCH_MODE]); - } - - device_printf(ndev, "MTU is %s\n", - vdev->config.nic_attr[VXGE_PRINT_MTU_SIZE]); - - device_printf(ndev, "LRO %s\n", - vdev->config.nic_attr[VXGE_PRINT_LRO_MODE]); - - device_printf(ndev, "RTH %s\n", - vdev->config.nic_attr[VXGE_PRINT_RTH_MODE]); - - device_printf(ndev, "TSO %s\n", - vdev->config.nic_attr[VXGE_PRINT_TSO_MODE]); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Driver version", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_DRV_VERSION], - 0, "Driver version"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Serial number", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_SERIAL_NO], - 0, "Serial number"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Part number", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_PART_NO], - 0, "Part number"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Firmware version", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_FW_VERSION], - 0, "Firmware version"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Firmware date", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_FW_DATE], - 0, "Firmware date"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Link width", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_PCIE_INFO], - 0, "Link width"); - - if (vdev->is_privilaged) { - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Function mode", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_FUNC_MODE], - 0, "Function mode"); - } - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Interrupt type", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_INTR_MODE], - 0, "Interrupt type"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "VPath(s) opened", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_VPATH_COUNT], - 0, "VPath(s) opened"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Adapter Type", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_ADAPTER_TYPE], - 0, "Adapter Type"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "pmd port 0", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_PMD_PORTS_0], - 0, "pmd port"); - - if (hw_info->ports > 1) { - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "pmd port 1", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_PMD_PORTS_1], - 0, "pmd port"); - - if (vdev->is_privilaged) { - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Port Mode", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_PORT_MODE], - 0, "Port Mode"); - - if (vdev->port_mode != VXGE_HAL_DP_NP_MODE_SINGLE_PORT) - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "Port Failure", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_PORT_FAILURE], - 0, "Port Failure"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "L2 Switch", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_L2SWITCH_MODE], - 0, "L2 Switch"); - } - } - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "LRO mode", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_LRO_MODE], - 0, "LRO mode"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "RTH mode", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_RTH_MODE], - 0, "RTH mode"); - - SYSCTL_ADD_STRING(ctx, children, - OID_AUTO, "TSO mode", CTLFLAG_RD, - vdev->config.nic_attr[VXGE_PRINT_TSO_MODE], - 0, "TSO mode"); -} - -void -vxge_pmd_port_type_get(vxge_dev_t *vdev, u32 port_type, - char *ifm_name, u8 ifm_len) -{ - - vdev->ifm_optics = IFM_UNKNOWN; - - switch (port_type) { - case VXGE_HAL_DEVICE_PMD_TYPE_10G_SR: - vdev->ifm_optics = IFM_10G_SR; - strlcpy(ifm_name, "10GbE SR", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_10G_LR: - vdev->ifm_optics = IFM_10G_LR; - strlcpy(ifm_name, "10GbE LR", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_10G_LRM: - vdev->ifm_optics = IFM_10G_LRM; - strlcpy(ifm_name, "10GbE LRM", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_10G_DIRECT: - vdev->ifm_optics = IFM_10G_TWINAX; - strlcpy(ifm_name, "10GbE DA (Direct Attached)", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_10G_CX4: - vdev->ifm_optics = IFM_10G_CX4; - strlcpy(ifm_name, "10GbE CX4", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_10G_BASE_T: -#if __FreeBSD_version >= 800000 - vdev->ifm_optics = IFM_10G_T; -#endif - strlcpy(ifm_name, "10GbE baseT", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_10G_OTHER: - strlcpy(ifm_name, "10GbE Other", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_1G_SX: - vdev->ifm_optics = IFM_1000_SX; - strlcpy(ifm_name, "1GbE SX", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_1G_LX: - vdev->ifm_optics = IFM_1000_LX; - strlcpy(ifm_name, "1GbE LX", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_1G_CX: - vdev->ifm_optics = IFM_1000_CX; - strlcpy(ifm_name, "1GbE CX", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_1G_BASE_T: - vdev->ifm_optics = IFM_1000_T; - strlcpy(ifm_name, "1GbE baseT", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_1G_DIRECT: - strlcpy(ifm_name, "1GbE DA (Direct Attached)", - ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_1G_CX4: - strlcpy(ifm_name, "1GbE CX4", ifm_len); - break; - - case VXGE_HAL_DEVICE_PMD_TYPE_1G_OTHER: - strlcpy(ifm_name, "1GbE Other", ifm_len); - break; - - default: - case VXGE_HAL_DEVICE_PMD_TYPE_UNKNOWN: - strlcpy(ifm_name, "UNSUP", ifm_len); - break; - } -} - -u32 -vxge_ring_length_get(u32 buffer_mode) -{ - return (VXGE_DEFAULT_RING_BLOCK * - vxge_hal_ring_rxds_per_block_get(buffer_mode)); -} - -/* - * Removes trailing spaces padded - * and NULL terminates strings - */ -static inline void -vxge_null_terminate(char *str, size_t len) -{ - len--; - while (*str && (*str != ' ') && (len != 0)) - ++str; - - --len; - if (*str) - *str = '\0'; -} - -/* - * vxge_ioctl - * Callback to control the device - */ -int -vxge_ioctl(ifnet_t ifp, u_long command, caddr_t data) -{ - int mask, err = 0; - vxge_dev_t *vdev = (vxge_dev_t *) ifp->if_softc; - struct ifreq *ifr = (struct ifreq *) data; - - if (!vdev->is_active) - return (EBUSY); - - switch (command) { - /* Set Interface MTU */ - case SIOCSIFMTU: - err = vxge_change_mtu(vdev, (unsigned long)ifr->ifr_mtu); - break; - - /* Set Interface Flags */ - case SIOCSIFFLAGS: - VXGE_DRV_LOCK(vdev); - if (ifp->if_flags & IFF_UP) { - if ((ifp->if_drv_flags & IFF_DRV_RUNNING)) { - if ((ifp->if_flags ^ vdev->if_flags) & - (IFF_PROMISC | IFF_ALLMULTI)) - vxge_promisc_set(vdev); - } else { - vxge_init_locked(vdev); - } - } else { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) - vxge_stop_locked(vdev); - } - vdev->if_flags = ifp->if_flags; - VXGE_DRV_UNLOCK(vdev); - break; - - /* Add/delete multicast address */ - case SIOCADDMULTI: - case SIOCDELMULTI: - break; - - /* Get/Set Interface Media */ - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - err = ifmedia_ioctl(ifp, ifr, &vdev->media, command); - break; - - /* Set Capabilities */ - case SIOCSIFCAP: - VXGE_DRV_LOCK(vdev); - mask = ifr->ifr_reqcap ^ ifp->if_capenable; - - if (mask & IFCAP_TXCSUM) { - ifp->if_capenable ^= IFCAP_TXCSUM; - ifp->if_hwassist ^= (CSUM_TCP | CSUM_UDP | CSUM_IP); - - if ((ifp->if_capenable & IFCAP_TSO) && - !(ifp->if_capenable & IFCAP_TXCSUM)) { - - ifp->if_capenable &= ~IFCAP_TSO; - ifp->if_hwassist &= ~CSUM_TSO; - if_printf(ifp, "TSO Disabled\n"); - } - } - if (mask & IFCAP_RXCSUM) - ifp->if_capenable ^= IFCAP_RXCSUM; - - if (mask & IFCAP_TSO4) { - ifp->if_capenable ^= IFCAP_TSO4; - - if (ifp->if_capenable & IFCAP_TSO) { - if (ifp->if_capenable & IFCAP_TXCSUM) { - ifp->if_hwassist |= CSUM_TSO; - if_printf(ifp, "TSO Enabled\n"); - } else { - ifp->if_capenable &= ~IFCAP_TSO; - ifp->if_hwassist &= ~CSUM_TSO; - if_printf(ifp, - "Enable tx checksum offload \ - first.\n"); - err = EAGAIN; - } - } else { - ifp->if_hwassist &= ~CSUM_TSO; - if_printf(ifp, "TSO Disabled\n"); - } - } - if (mask & IFCAP_LRO) - ifp->if_capenable ^= IFCAP_LRO; - - if (mask & IFCAP_VLAN_HWTAGGING) - ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; - - if (mask & IFCAP_VLAN_MTU) - ifp->if_capenable ^= IFCAP_VLAN_MTU; - - if (mask & IFCAP_VLAN_HWCSUM) - ifp->if_capenable ^= IFCAP_VLAN_HWCSUM; - -#if __FreeBSD_version >= 800000 - if (mask & IFCAP_VLAN_HWTSO) - ifp->if_capenable ^= IFCAP_VLAN_HWTSO; -#endif - -#if defined(VLAN_CAPABILITIES) - VLAN_CAPABILITIES(ifp); -#endif - - VXGE_DRV_UNLOCK(vdev); - break; - - case SIOCGPRIVATE_0: - VXGE_DRV_LOCK(vdev); - err = vxge_ioctl_stats(vdev, ifr); - VXGE_DRV_UNLOCK(vdev); - break; - - case SIOCGPRIVATE_1: - VXGE_DRV_LOCK(vdev); - err = vxge_ioctl_regs(vdev, ifr); - VXGE_DRV_UNLOCK(vdev); - break; - - default: - err = ether_ioctl(ifp, command, data); - break; - } - - return (err); -} - -/* - * vxge_ioctl_regs - * IOCTL to get registers - */ -int -vxge_ioctl_regs(vxge_dev_t *vdev, struct ifreq *ifr) -{ - u64 value = 0x0; - u32 vp_id = 0; - u32 offset, reqd_size = 0; - int i, err = EINVAL; - - char *command = ifr_data_get_ptr(ifr); - void *reg_info = ifr_data_get_ptr(ifr); - - vxge_vpath_t *vpath; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_mgmt_reg_type_e regs_type; - - switch (*command) { - case vxge_hal_mgmt_reg_type_pcicfgmgmt: - if (vdev->is_privilaged) { - reqd_size = sizeof(vxge_hal_pcicfgmgmt_reg_t); - regs_type = vxge_hal_mgmt_reg_type_pcicfgmgmt; - } - break; - - case vxge_hal_mgmt_reg_type_mrpcim: - if (vdev->is_privilaged) { - reqd_size = sizeof(vxge_hal_mrpcim_reg_t); - regs_type = vxge_hal_mgmt_reg_type_mrpcim; - } - break; - - case vxge_hal_mgmt_reg_type_srpcim: - if (vdev->is_privilaged) { - reqd_size = sizeof(vxge_hal_srpcim_reg_t); - regs_type = vxge_hal_mgmt_reg_type_srpcim; - } - break; - - case vxge_hal_mgmt_reg_type_memrepair: - if (vdev->is_privilaged) { - /* reqd_size = sizeof(vxge_hal_memrepair_reg_t); */ - regs_type = vxge_hal_mgmt_reg_type_memrepair; - } - break; - - case vxge_hal_mgmt_reg_type_legacy: - reqd_size = sizeof(vxge_hal_legacy_reg_t); - regs_type = vxge_hal_mgmt_reg_type_legacy; - break; - - case vxge_hal_mgmt_reg_type_toc: - reqd_size = sizeof(vxge_hal_toc_reg_t); - regs_type = vxge_hal_mgmt_reg_type_toc; - break; - - case vxge_hal_mgmt_reg_type_common: - reqd_size = sizeof(vxge_hal_common_reg_t); - regs_type = vxge_hal_mgmt_reg_type_common; - break; - - case vxge_hal_mgmt_reg_type_vpmgmt: - reqd_size = sizeof(vxge_hal_vpmgmt_reg_t); - regs_type = vxge_hal_mgmt_reg_type_vpmgmt; - vpath = &(vdev->vpaths[*((u32 *) reg_info + 1)]); - vp_id = vpath->vp_id; - break; - - case vxge_hal_mgmt_reg_type_vpath: - reqd_size = sizeof(vxge_hal_vpath_reg_t); - regs_type = vxge_hal_mgmt_reg_type_vpath; - vpath = &(vdev->vpaths[*((u32 *) reg_info + 1)]); - vp_id = vpath->vp_id; - break; - - case VXGE_GET_VPATH_COUNT: - *((u32 *) reg_info) = vdev->no_of_vpath; - err = 0; - break; - - default: - reqd_size = 0; - break; - } - - if (reqd_size) { - for (i = 0, offset = 0; offset < reqd_size; - i++, offset += 0x0008) { - value = 0x0; - status = vxge_hal_mgmt_reg_read(vdev->devh, regs_type, - vp_id, offset, &value); - - err = (status != VXGE_HAL_OK) ? EINVAL : 0; - if (err == EINVAL) - break; - - *((u64 *) ((u64 *) reg_info + i)) = value; - } - } - return (err); -} - -/* - * vxge_ioctl_stats - * IOCTL to get statistics - */ -int -vxge_ioctl_stats(vxge_dev_t *vdev, struct ifreq *ifr) -{ - int i, retsize, err = EINVAL; - u32 bufsize; - - vxge_vpath_t *vpath; - vxge_bw_info_t *bw_info; - vxge_port_info_t *port_info; - vxge_drv_stats_t *drv_stat; - - char *buffer = NULL; - char *command = ifr_data_get_ptr(ifr); - vxge_hal_status_e status = VXGE_HAL_OK; - - switch (*command) { - case VXGE_GET_PCI_CONF: - bufsize = VXGE_STATS_BUFFER_SIZE; - buffer = (char *) vxge_mem_alloc(bufsize); - if (buffer != NULL) { - status = vxge_hal_aux_pci_config_read(vdev->devh, - bufsize, buffer, &retsize); - if (status == VXGE_HAL_OK) - err = copyout(buffer, ifr_data_get_ptr(ifr), - retsize); - else - device_printf(vdev->ndev, - "failed pciconfig statistics query\n"); - - vxge_mem_free(buffer, bufsize); - } - break; - - case VXGE_GET_MRPCIM_STATS: - if (!vdev->is_privilaged) - break; - - bufsize = VXGE_STATS_BUFFER_SIZE; - buffer = (char *) vxge_mem_alloc(bufsize); - if (buffer != NULL) { - status = vxge_hal_aux_stats_mrpcim_read(vdev->devh, - bufsize, buffer, &retsize); - if (status == VXGE_HAL_OK) - err = copyout(buffer, ifr_data_get_ptr(ifr), - retsize); - else - device_printf(vdev->ndev, - "failed mrpcim statistics query\n"); - - vxge_mem_free(buffer, bufsize); - } - break; - - case VXGE_GET_DEVICE_STATS: - bufsize = VXGE_STATS_BUFFER_SIZE; - buffer = (char *) vxge_mem_alloc(bufsize); - if (buffer != NULL) { - status = vxge_hal_aux_stats_device_read(vdev->devh, - bufsize, buffer, &retsize); - if (status == VXGE_HAL_OK) - err = copyout(buffer, ifr_data_get_ptr(ifr), - retsize); - else - device_printf(vdev->ndev, - "failed device statistics query\n"); - - vxge_mem_free(buffer, bufsize); - } - break; - - case VXGE_GET_DEVICE_HWINFO: - bufsize = sizeof(vxge_device_hw_info_t); - buffer = (char *) vxge_mem_alloc(bufsize); - if (buffer != NULL) { - vxge_os_memcpy( - &(((vxge_device_hw_info_t *) buffer)->hw_info), - &vdev->config.hw_info, - sizeof(vxge_hal_device_hw_info_t)); - - ((vxge_device_hw_info_t *) buffer)->port_mode = - vdev->port_mode; - - ((vxge_device_hw_info_t *) buffer)->port_failure = - vdev->port_failure; - - err = copyout(buffer, ifr_data_get_ptr(ifr), bufsize); - if (err != 0) - device_printf(vdev->ndev, - "failed device hardware info query\n"); - - vxge_mem_free(buffer, bufsize); - } - break; - - case VXGE_GET_DRIVER_STATS: - bufsize = sizeof(vxge_drv_stats_t) * vdev->no_of_vpath; - drv_stat = (vxge_drv_stats_t *) vxge_mem_alloc(bufsize); - if (drv_stat != NULL) { - for (i = 0; i < vdev->no_of_vpath; i++) { - vpath = &(vdev->vpaths[i]); - - vpath->driver_stats.rx_lro_queued += - vpath->lro.lro_queued; - - vpath->driver_stats.rx_lro_flushed += - vpath->lro.lro_flushed; - - vxge_os_memcpy(&drv_stat[i], - &(vpath->driver_stats), - sizeof(vxge_drv_stats_t)); - } - - err = copyout(drv_stat, ifr_data_get_ptr(ifr), bufsize); - if (err != 0) - device_printf(vdev->ndev, - "failed driver statistics query\n"); - - vxge_mem_free(drv_stat, bufsize); - } - break; - - case VXGE_GET_BANDWIDTH: - bw_info = ifr_data_get_ptr(ifr); - - if ((vdev->config.hw_info.func_id != 0) && - (vdev->hw_fw_version < VXGE_FW_VERSION(1, 8, 0))) - break; - - if (vdev->config.hw_info.func_id != 0) - bw_info->func_id = vdev->config.hw_info.func_id; - - status = vxge_bw_priority_get(vdev, bw_info); - if (status != VXGE_HAL_OK) - break; - - err = copyout(bw_info, ifr_data_get_ptr(ifr), - sizeof(vxge_bw_info_t)); - break; - - case VXGE_SET_BANDWIDTH: - if (vdev->is_privilaged) - err = vxge_bw_priority_set(vdev, ifr); - break; - - case VXGE_SET_PORT_MODE: - if (vdev->is_privilaged) { - if (vdev->config.hw_info.ports == VXGE_DUAL_PORT_MODE) { - port_info = ifr_data_get_ptr(ifr); - vdev->config.port_mode = port_info->port_mode; - err = vxge_port_mode_update(vdev); - if (err != ENXIO) - err = VXGE_HAL_FAIL; - else { - err = VXGE_HAL_OK; - device_printf(vdev->ndev, - "PLEASE POWER CYCLE THE SYSTEM\n"); - } - } - } - break; - - case VXGE_GET_PORT_MODE: - if (vdev->is_privilaged) { - if (vdev->config.hw_info.ports == VXGE_DUAL_PORT_MODE) { - port_info = ifr_data_get_ptr(ifr); - err = vxge_port_mode_get(vdev, port_info); - if (err == VXGE_HAL_OK) { - err = copyout(port_info, - ifr_data_get_ptr(ifr), - sizeof(vxge_port_info_t)); - } - } - } - break; - - default: - break; - } - - return (err); -} - -int -vxge_bw_priority_config(vxge_dev_t *vdev) -{ - u32 i; - int err = EINVAL; - - for (i = 0; i < vdev->no_of_func; i++) { - err = vxge_bw_priority_update(vdev, i, TRUE); - if (err != 0) - break; - } - - return (err); -} - -int -vxge_bw_priority_set(vxge_dev_t *vdev, struct ifreq *ifr) -{ - int err; - u32 func_id; - vxge_bw_info_t *bw_info; - - bw_info = ifr_data_get_ptr(ifr); - func_id = bw_info->func_id; - - vdev->config.bw_info[func_id].priority = bw_info->priority; - vdev->config.bw_info[func_id].bandwidth = bw_info->bandwidth; - - err = vxge_bw_priority_update(vdev, func_id, FALSE); - - return (err); -} - -int -vxge_bw_priority_update(vxge_dev_t *vdev, u32 func_id, bool binit) -{ - u32 i, set = 0; - u32 bandwidth, priority, vpath_count; - u64 vpath_list[VXGE_HAL_MAX_VIRTUAL_PATHS]; - - vxge_hal_device_t *hldev; - vxge_hal_vp_config_t *vp_config; - vxge_hal_status_e status = VXGE_HAL_OK; - - hldev = vdev->devh; - - status = vxge_hal_get_vpath_list(vdev->devh, func_id, - vpath_list, &vpath_count); - - if (status != VXGE_HAL_OK) - return (status); - - for (i = 0; i < vpath_count; i++) { - vp_config = &(hldev->config.vp_config[vpath_list[i]]); - - /* Configure Bandwidth */ - if (vdev->config.bw_info[func_id].bandwidth != - VXGE_HAL_VPATH_BW_LIMIT_DEFAULT) { - - set = 1; - bandwidth = vdev->config.bw_info[func_id].bandwidth; - if (bandwidth < VXGE_HAL_VPATH_BW_LIMIT_MIN || - bandwidth > VXGE_HAL_VPATH_BW_LIMIT_MAX) { - - bandwidth = VXGE_HAL_VPATH_BW_LIMIT_DEFAULT; - } - vp_config->bandwidth = bandwidth; - } - - /* - * If b/w limiting is enabled on any of the - * VFs, then for remaining VFs set the priority to 3 - * and b/w limiting to max i.e 10 Gb) - */ - if (vp_config->bandwidth == VXGE_HAL_VPATH_BW_LIMIT_DEFAULT) - vp_config->bandwidth = VXGE_HAL_VPATH_BW_LIMIT_MAX; - - if (binit && vdev->config.low_latency) { - if (func_id == 0) - vdev->config.bw_info[func_id].priority = - VXGE_DEFAULT_VPATH_PRIORITY_HIGH; - } - - /* Configure Priority */ - if (vdev->config.bw_info[func_id].priority != - VXGE_HAL_VPATH_PRIORITY_DEFAULT) { - - set = 1; - priority = vdev->config.bw_info[func_id].priority; - if (priority < VXGE_HAL_VPATH_PRIORITY_MIN || - priority > VXGE_HAL_VPATH_PRIORITY_MAX) { - - priority = VXGE_HAL_VPATH_PRIORITY_DEFAULT; - } - vp_config->priority = priority; - - } else if (vdev->config.low_latency) { - set = 1; - vp_config->priority = VXGE_DEFAULT_VPATH_PRIORITY_LOW; - } - - if (set == 1) { - status = vxge_hal_rx_bw_priority_set(vdev->devh, - vpath_list[i]); - if (status != VXGE_HAL_OK) - break; - - if (vpath_list[i] < VXGE_HAL_TX_BW_VPATH_LIMIT) { - status = vxge_hal_tx_bw_priority_set( - vdev->devh, vpath_list[i]); - if (status != VXGE_HAL_OK) - break; - } - } - } - - return ((status == VXGE_HAL_OK) ? 0 : EINVAL); -} - -/* - * vxge_intr_coalesce_tx - * Changes interrupt coalescing if the interrupts are not within a range - * Return Value: Nothing - */ -void -vxge_intr_coalesce_tx(vxge_vpath_t *vpath) -{ - u32 timer; - - if (!vpath->tx_intr_coalesce) - return; - - vpath->tx_interrupts++; - if (ticks > vpath->tx_ticks + hz/100) { - - vpath->tx_ticks = ticks; - timer = vpath->tti_rtimer_val; - if (vpath->tx_interrupts > VXGE_MAX_TX_INTERRUPT_COUNT) { - if (timer != VXGE_TTI_RTIMER_ADAPT_VAL) { - vpath->tti_rtimer_val = - VXGE_TTI_RTIMER_ADAPT_VAL; - - vxge_hal_vpath_dynamic_tti_rtimer_set( - vpath->handle, vpath->tti_rtimer_val); - } - } else { - if (timer != 0) { - vpath->tti_rtimer_val = 0; - vxge_hal_vpath_dynamic_tti_rtimer_set( - vpath->handle, vpath->tti_rtimer_val); - } - } - vpath->tx_interrupts = 0; - } -} - -/* - * vxge_intr_coalesce_rx - * Changes interrupt coalescing if the interrupts are not within a range - * Return Value: Nothing - */ -void -vxge_intr_coalesce_rx(vxge_vpath_t *vpath) -{ - u32 timer; - - if (!vpath->rx_intr_coalesce) - return; - - vpath->rx_interrupts++; - if (ticks > vpath->rx_ticks + hz/100) { - - vpath->rx_ticks = ticks; - timer = vpath->rti_rtimer_val; - - if (vpath->rx_interrupts > VXGE_MAX_RX_INTERRUPT_COUNT) { - if (timer != VXGE_RTI_RTIMER_ADAPT_VAL) { - vpath->rti_rtimer_val = - VXGE_RTI_RTIMER_ADAPT_VAL; - - vxge_hal_vpath_dynamic_rti_rtimer_set( - vpath->handle, vpath->rti_rtimer_val); - } - } else { - if (timer != 0) { - vpath->rti_rtimer_val = 0; - vxge_hal_vpath_dynamic_rti_rtimer_set( - vpath->handle, vpath->rti_rtimer_val); - } - } - vpath->rx_interrupts = 0; - } -} - -/* - * vxge_methods FreeBSD device interface entry points - */ -static device_method_t vxge_methods[] = { - DEVMETHOD(device_probe, vxge_probe), - DEVMETHOD(device_attach, vxge_attach), - DEVMETHOD(device_detach, vxge_detach), - DEVMETHOD(device_shutdown, vxge_shutdown), - - DEVMETHOD_END -}; - -static driver_t vxge_driver = { - "vxge", vxge_methods, sizeof(vxge_dev_t), -}; - -static devclass_t vxge_devclass; - -DRIVER_MODULE(vxge, pci, vxge_driver, vxge_devclass, 0, 0); Index: sys/dev/vxge/vxgehal/vxge-queue.c =================================================================== --- sys/dev/vxge/vxgehal/vxge-queue.c +++ sys/dev/vxge/vxgehal/vxge-queue.c @@ -1,600 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * vxge_queue_item_data - Get item's data. - * @item: Queue item. - * - * Returns: item data(variable size). Note that vxge_queue_t - * contains items comprized of a fixed vxge_queue_item_t "header" - * and a variable size data. This function returns the variable - * user-defined portion of the queue item. - */ -void * -vxge_queue_item_data(vxge_queue_item_t *item) -{ - return (char *) item + sizeof(vxge_queue_item_t); -} - -/* - * __queue_consume - (Lockless) dequeue an item from the specified queue. - * - * @queue: Event queue. - * @data_max_size: Maximum size of the data - * @item: Queue item - * See vxge_queue_consume(). - */ -static vxge_queue_status_e -__queue_consume(vxge_queue_t *queue, - u32 data_max_size, - vxge_queue_item_t *item) -{ - int real_size; - vxge_queue_item_t *elem; - __hal_device_t *hldev; - - vxge_assert(queue != NULL); - - hldev = (__hal_device_t *) queue->hldev; - - vxge_hal_trace_log_queue("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_queue( - "queue = 0x"VXGE_OS_STXFMT", size = %d, item = 0x"VXGE_OS_STXFMT, - (ptr_t) queue, data_max_size, (ptr_t) item); - - if (vxge_list_is_empty(&queue->list_head)) { - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_QUEUE_IS_EMPTY); - return (VXGE_QUEUE_IS_EMPTY); - } - - elem = (vxge_queue_item_t *) queue->list_head.next; - if (elem->data_size > data_max_size) { - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_QUEUE_NOT_ENOUGH_SPACE); - return (VXGE_QUEUE_NOT_ENOUGH_SPACE); - } - - vxge_list_remove(&elem->item); - real_size = elem->data_size + sizeof(vxge_queue_item_t); - if (queue->head_ptr == elem) { - queue->head_ptr = (char *) queue->head_ptr + real_size; - vxge_hal_info_log_queue("event_type: %d \ - removing from the head: " - "0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT - ":0x0x"VXGE_OS_STXFMT" elem 0x0x"VXGE_OS_STXFMT" length %d", - elem->event_type, (ptr_t) queue->start_ptr, - (ptr_t) queue->head_ptr, (ptr_t) queue->tail_ptr, - (ptr_t) queue->end_ptr, (ptr_t) elem, real_size); - } else if ((char *) queue->tail_ptr - real_size == (char *) elem) { - queue->tail_ptr = (char *) queue->tail_ptr - real_size; - vxge_hal_info_log_queue("event_type: %d \ - removing from the tail: " - "0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT - ":0x"VXGE_OS_STXFMT" elem 0x"VXGE_OS_STXFMT" length %d", - elem->event_type, (ptr_t) queue->start_ptr, - (ptr_t) queue->head_ptr, (ptr_t) queue->tail_ptr, - (ptr_t) queue->end_ptr, (ptr_t) elem, real_size); - } else { - vxge_hal_info_log_queue("event_type: %d \ - removing from the list: " - "0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT - ":0x"VXGE_OS_STXFMT" elem 0x"VXGE_OS_STXFMT" length %d", - elem->event_type, (ptr_t) queue->start_ptr, - (ptr_t) queue->head_ptr, (ptr_t) queue->tail_ptr, - (ptr_t) queue->end_ptr, (ptr_t) elem, real_size); - } - vxge_assert(queue->tail_ptr >= queue->head_ptr); - vxge_assert(queue->tail_ptr >= queue->start_ptr && - queue->tail_ptr <= queue->end_ptr); - vxge_assert(queue->head_ptr >= queue->start_ptr && - queue->head_ptr < queue->end_ptr); - vxge_os_memcpy(item, elem, sizeof(vxge_queue_item_t)); - vxge_os_memcpy(vxge_queue_item_data(item), vxge_queue_item_data(elem), - elem->data_size); - - if (vxge_list_is_empty(&queue->list_head)) { - /* reset buffer pointers just to be clean */ - queue->head_ptr = queue->tail_ptr = queue->start_ptr; - } - - vxge_hal_trace_log_queue("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_QUEUE_OK); -} - -/* - * vxge_queue_produce - Enqueue an item (see vxge_queue_item_t {}) - * into the specified queue. - * @queueh: Queue handle. - * @event_type: Event type. One of the enumerated event types - * that both consumer and producer "understand". - * For an example, please refer to vxge_hal_event_e. - * @context: Opaque (void *) "context", for instance event producer object. - * @is_critical: For critical event, e.g. ECC. - * @data_size: Size of the @data. - * @data: User data of variable @data_size that is _copied_ into - * the new queue item (see vxge_queue_item_t {}). Upon return - * from the call the @data memory can be re-used or released. - * - * Enqueue a new item. - * - * Returns: VXGE_QUEUE_OK - success. - * VXGE_QUEUE_IS_FULL - Queue is full. - * VXGE_QUEUE_OUT_OF_MEMORY - Memory allocation failed. - * - * See also: vxge_queue_item_t {}, vxge_queue_consume(). - */ -vxge_queue_status_e -vxge_queue_produce(vxge_queue_h queueh, - u32 event_type, - void *context, - u32 is_critical, - const u32 data_size, - void *data) -{ - vxge_queue_t *queue = (vxge_queue_t *) queueh; - int real_size = data_size + sizeof(vxge_queue_item_t); - __hal_device_t *hldev; - vxge_queue_item_t *elem; - unsigned long flags = 0; - - vxge_assert(queueh != NULL); - - hldev = (__hal_device_t *) queue->hldev; - - vxge_hal_trace_log_queue("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_queue( - "queueh = 0x"VXGE_OS_STXFMT", event_type = %d, " - "context = 0x"VXGE_OS_STXFMT", is_critical = %d, " - "data_size = %d, data = 0x"VXGE_OS_STXFMT, - (ptr_t) queueh, event_type, (ptr_t) context, - is_critical, data_size, (ptr_t) data); - - vxge_assert(real_size <= VXGE_QUEUE_BUF_SIZE); - - vxge_os_spin_lock_irq(&queue->lock, flags); - - if (is_critical && !queue->has_critical_event) { - unsigned char item_buf[sizeof(vxge_queue_item_t) + - VXGE_DEFAULT_EVENT_MAX_DATA_SIZE]; - vxge_queue_item_t *item = - (vxge_queue_item_t *) (void *)item_buf; - - while (__queue_consume(queue, VXGE_DEFAULT_EVENT_MAX_DATA_SIZE, - item) != VXGE_QUEUE_IS_EMPTY) { - } /* do nothing */ - } - -try_again: - if ((char *) queue->tail_ptr + real_size <= (char *) queue->end_ptr) { - elem = (vxge_queue_item_t *) queue->tail_ptr; - queue->tail_ptr = (void *)((char *) queue->tail_ptr + real_size); - vxge_hal_info_log_queue("event_type: %d adding to the tail: " - "0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT - ":0x"VXGE_OS_STXFMT" elem 0x"VXGE_OS_STXFMT" length %d", - event_type, (ptr_t) queue->start_ptr, - (ptr_t) queue->head_ptr, (ptr_t) queue->tail_ptr, - (ptr_t) queue->end_ptr, (ptr_t) elem, real_size); - } else if ((char *) queue->head_ptr - real_size >= - (char *) queue->start_ptr) { - elem = (vxge_queue_item_t *) - ((void *)((char *) queue->head_ptr - real_size)); - queue->head_ptr = elem; - vxge_hal_info_log_queue("event_type: %d adding to the head: " - "0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT":" - "0x"VXGE_OS_STXFMT":0x"VXGE_OS_STXFMT" length %d", - event_type, (ptr_t) queue->start_ptr, - (ptr_t) queue->head_ptr, (ptr_t) queue->tail_ptr, - (ptr_t) queue->end_ptr, real_size); - } else { - vxge_queue_status_e status; - - if (queue->pages_current >= queue->pages_max) { - vxge_os_spin_unlock_irq(&queue->lock, flags); - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_QUEUE_IS_FULL); - return (VXGE_QUEUE_IS_FULL); - } - - if (queue->has_critical_event) { - vxge_os_spin_unlock_irq(&queue->lock, flags); - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_QUEUE_IS_FULL); - return (VXGE_QUEUE_IS_FULL); - } - - /* grow */ - status = vxge_io_queue_grow(queueh); - if (status != VXGE_QUEUE_OK) { - vxge_os_spin_unlock_irq(&queue->lock, flags); - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - goto try_again; - } - vxge_assert(queue->tail_ptr >= queue->head_ptr); - vxge_assert(queue->tail_ptr >= queue->start_ptr && - queue->tail_ptr <= queue->end_ptr); - vxge_assert(queue->head_ptr >= queue->start_ptr && - queue->head_ptr < queue->end_ptr); - elem->data_size = data_size; - elem->event_type = (vxge_hal_event_e) event_type; - elem->is_critical = is_critical; - if (is_critical) - queue->has_critical_event = 1; - elem->context = context; - vxge_os_memcpy(vxge_queue_item_data(elem), data, data_size); - vxge_list_insert_before(&elem->item, &queue->list_head); - vxge_os_spin_unlock_irq(&queue->lock, flags); - - /* no lock taken! */ - queue->queued_func(queue->queued_data, event_type); - - vxge_hal_trace_log_queue("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_QUEUE_OK); -} - - -/* - * vxge_queue_create - Create protected first-in-first-out queue. - * @devh: HAL device handle. - * @pages_initial: Number of pages to be initially allocated at the - * time of queue creation. - * @pages_max: Max number of pages that can be allocated in the queue. - * @queued_func: Optional callback function to be called each time a new item is - * added to the queue. - * @queued_data: Argument to the callback function. - * - * Create protected (fifo) queue. - * - * Returns: Pointer to vxge_queue_t structure, - * NULL - on failure. - * - * See also: vxge_queue_item_t {}, vxge_queue_destroy(). - */ -vxge_queue_h -vxge_queue_create(vxge_hal_device_h devh, - u32 pages_initial, - u32 pages_max, - vxge_queued_f queued_func, - void *queued_data) -{ - vxge_queue_t *queue; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_queue("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_queue( - "devh = 0x"VXGE_OS_STXFMT", pages_initial = %d, " - "pages_max = %d, queued_func = 0x"VXGE_OS_STXFMT", " - "queued_data = 0x"VXGE_OS_STXFMT, (ptr_t) devh, pages_initial, - pages_max, (ptr_t) queued_func, (ptr_t) queued_data); - - if ((queue = (vxge_queue_t *) vxge_os_malloc(hldev->header.pdev, - sizeof(vxge_queue_t))) == NULL) { - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_QUEUE_OUT_OF_MEMORY); - return (NULL); - } - - queue->queued_func = queued_func; - queue->queued_data = queued_data; - queue->hldev = devh; - queue->pdev = hldev->header.pdev; - queue->irqh = hldev->header.irqh; - queue->pages_current = pages_initial; - queue->start_ptr = vxge_os_malloc(hldev->header.pdev, - queue->pages_current * VXGE_QUEUE_BUF_SIZE); - if (queue->start_ptr == NULL) { - vxge_os_free(hldev->header.pdev, queue, sizeof(vxge_queue_t)); - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_QUEUE_OUT_OF_MEMORY); - return (NULL); - } - queue->head_ptr = queue->tail_ptr = queue->start_ptr; - queue->end_ptr = (char *) queue->start_ptr + - queue->pages_current * VXGE_QUEUE_BUF_SIZE; - vxge_os_spin_lock_init_irq(&queue->lock, queue->irqh); - queue->pages_initial = pages_initial; - queue->pages_max = pages_max; - vxge_list_init(&queue->list_head); - - vxge_hal_trace_log_queue("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (queue); -} - -/* - * vxge_queue_destroy - Destroy vxge_queue_t object. - * @queueh: Queue handle. - * - * Destroy the specified vxge_queue_t object. - * - * See also: vxge_queue_item_t {}, vxge_queue_create(). - */ -void -vxge_queue_destroy(vxge_queue_h queueh) -{ - vxge_queue_t *queue = (vxge_queue_t *) queueh; - __hal_device_t *hldev; - - vxge_assert(queueh != NULL); - - hldev = (__hal_device_t *) queue->hldev; - - vxge_hal_trace_log_queue("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_queue("queueh = 0x"VXGE_OS_STXFMT, - (ptr_t) queueh); - - vxge_os_spin_lock_destroy_irq(&queue->lock, queue->irqh); - if (!vxge_list_is_empty(&queue->list_head)) { - vxge_hal_trace_log_queue("destroying non-empty queue 0x" - VXGE_OS_STXFMT, (ptr_t) queue); - } - vxge_os_free(queue->pdev, queue->start_ptr, queue->pages_current * - VXGE_QUEUE_BUF_SIZE); - - vxge_os_free(queue->pdev, queue, sizeof(vxge_queue_t)); - - vxge_hal_trace_log_queue("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_io_queue_grow - Dynamically increases the size of the queue. - * @queueh: Queue handle. - * - * This function is called in the case of no slot avaialble in the queue - * to accommodate the newly received event. - * Note that queue cannot grow beyond the max size specified for the - * queue. - * - * Returns VXGE_QUEUE_OK: On success. - * VXGE_QUEUE_OUT_OF_MEMORY : No memory is available. - */ -vxge_queue_status_e -vxge_io_queue_grow(vxge_queue_h queueh) -{ - vxge_queue_t *queue = (vxge_queue_t *) queueh; - __hal_device_t *hldev; - void *newbuf, *oldbuf; - vxge_list_t *item; - vxge_queue_item_t *elem; - - vxge_assert(queueh != NULL); - - hldev = (__hal_device_t *) queue->hldev; - - vxge_hal_trace_log_queue("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_queue("queueh = 0x"VXGE_OS_STXFMT, - (ptr_t) queueh); - - vxge_hal_info_log_queue("queue 0x"VXGE_OS_STXFMT":%d is growing", - (ptr_t) queue, queue->pages_current); - - newbuf = vxge_os_malloc(queue->pdev, - (queue->pages_current + 1) * VXGE_QUEUE_BUF_SIZE); - if (newbuf == NULL) { - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_QUEUE_OUT_OF_MEMORY); - return (VXGE_QUEUE_OUT_OF_MEMORY); - } - - vxge_os_memcpy(newbuf, queue->start_ptr, - queue->pages_current * VXGE_QUEUE_BUF_SIZE); - oldbuf = queue->start_ptr; - - /* adjust queue sizes */ - queue->start_ptr = newbuf; - queue->end_ptr = (char *) newbuf + - (queue->pages_current + 1) * VXGE_QUEUE_BUF_SIZE; - queue->tail_ptr = (char *) newbuf + - /* LINTED */ - ((char *) queue->tail_ptr - (char *) oldbuf); - queue->head_ptr = (char *) newbuf + - /* LINTED */ - ((char *) queue->head_ptr - (char *) oldbuf); - vxge_assert(!vxge_list_is_empty(&queue->list_head)); - queue->list_head.next = (vxge_list_t *) (void *)((char *) newbuf + - /* LINTED */ - ((char *) queue->list_head.next - (char *) oldbuf)); - queue->list_head.prev = (vxge_list_t *) (void *)((char *) newbuf + - /* LINTED */ - ((char *) queue->list_head.prev - (char *) oldbuf)); - /* adjust queue list */ - vxge_list_for_each(item, &queue->list_head) { - elem = vxge_container_of(item, vxge_queue_item_t, item); - if (elem->item.next != &queue->list_head) { - elem->item.next = - (vxge_list_t *) (void *)((char *) newbuf + - /* LINTED */ - ((char *) elem->item.next - (char *) oldbuf)); - } - if (elem->item.prev != &queue->list_head) { - elem->item.prev = - (vxge_list_t *) (void *)((char *) newbuf + - /* LINTED */ - ((char *) elem->item.prev - (char *) oldbuf)); - } - } - vxge_os_free(queue->pdev, oldbuf, - queue->pages_current * VXGE_QUEUE_BUF_SIZE); - queue->pages_current++; - - vxge_hal_trace_log_queue("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_QUEUE_OK); -} - -/* - * vxge_queue_consume - Dequeue an item from the specified queue. - * @queueh: Queue handle. - * @data_max_size: Maximum expected size of the item. - * @item: Memory area into which the item is _copied_ upon return - * from the function. - * - * Dequeue an item from the queue. The caller is required to provide - * enough space for the item. - * - * Returns: VXGE_QUEUE_OK - success. - * VXGE_QUEUE_IS_EMPTY - Queue is empty. - * VXGE_QUEUE_NOT_ENOUGH_SPACE - Requested item size(@data_max_size) - * is too small to accommodate an item from the queue. - * - * See also: vxge_queue_item_t {}, vxge_queue_produce(). - */ -vxge_queue_status_e -vxge_queue_consume(vxge_queue_h queueh, - u32 data_max_size, - vxge_queue_item_t *item) -{ - vxge_queue_t *queue = (vxge_queue_t *) queueh; - __hal_device_t *hldev; - unsigned long flags = 0; - vxge_queue_status_e status; - - vxge_assert(queueh != NULL); - - hldev = (__hal_device_t *) queue->hldev; - - vxge_hal_trace_log_queue("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_queue( - "queueh = 0x"VXGE_OS_STXFMT", data_max_size = %d, " - "item = 0x"VXGE_OS_STXFMT, (ptr_t) queueh, - data_max_size, (ptr_t) item); - - vxge_os_spin_lock_irq(&queue->lock, flags); - status = __queue_consume(queue, data_max_size, item); - vxge_os_spin_unlock_irq(&queue->lock, flags); - - vxge_hal_trace_log_queue("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - - -/* - * vxge_queue_flush - Flush, or empty, the queue. - * @queueh: Queue handle. - * - * Flush the queue, i.e. make it empty by consuming all events - * without invoking the event processing logic (callbacks, etc.) - */ -void -vxge_queue_flush(vxge_queue_h queueh) -{ - unsigned char item_buf[sizeof(vxge_queue_item_t) + - VXGE_DEFAULT_EVENT_MAX_DATA_SIZE]; - vxge_queue_item_t *item = (vxge_queue_item_t *) (void *)item_buf; - vxge_queue_t *queue = (vxge_queue_t *) queueh; - __hal_device_t *hldev; - - vxge_assert(queueh != NULL); - - hldev = (__hal_device_t *) queue->hldev; - - vxge_hal_trace_log_queue("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_queue("queueh = 0x"VXGE_OS_STXFMT, - (ptr_t) queueh); - - /* flush queue by consuming all enqueued items */ - while (vxge_queue_consume(queueh, VXGE_DEFAULT_EVENT_MAX_DATA_SIZE, - item) != VXGE_QUEUE_IS_EMPTY) { - /* do nothing */ - vxge_hal_trace_log_queue("item 0x"VXGE_OS_STXFMT"(%d) flushed", - (ptr_t) item, item->event_type); - } - - (void) vxge_queue_get_reset_critical(queueh); - - vxge_hal_trace_log_queue("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_queue_get_reset_critical - Check for critical events in the queue, - * @queueh: Queue handle. - * - * Check for critical event(s) in the queue, and reset the - * "has-critical-event" flag upon return. - * Returns: 1 - if the queue contains atleast one critical event. - * 0 - If there are no critical events in the queue. - */ -u32 -vxge_queue_get_reset_critical(vxge_queue_h queueh) -{ - vxge_queue_t *queue = (vxge_queue_t *) queueh; - int c = queue->has_critical_event; - __hal_device_t *hldev; - - vxge_assert(queueh != NULL); - - hldev = (__hal_device_t *) queue->hldev; - - vxge_hal_trace_log_queue("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_queue("queueh = 0x"VXGE_OS_STXFMT, - (ptr_t) queueh); - - queue->has_critical_event = 0; - - vxge_hal_trace_log_queue("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (c); -} Index: sys/dev/vxge/vxgehal/vxgehal-blockpool.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-blockpool.h +++ sys/dev/vxge/vxgehal/vxgehal-blockpool.h @@ -1,139 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_BLOCKPOOL_H -#define VXGE_HAL_BLOCKPOOL_H - -__EXTERN_BEGIN_DECLS - -/* - * struct __hal_blockpool_entry_t - Block private data structure - * @item: List header used to link. - * @length: Length of the block - * @memblock: Virtual address block - * @dma_addr: DMA Address of the block. - * @dma_handle: DMA handle of the block. - * @acc_handle: DMA acc handle - * - * Block is allocated with a header to put the blocks into list. - * - */ -typedef struct __hal_blockpool_entry_t { - vxge_list_t item; - u32 length; - void *memblock; - dma_addr_t dma_addr; - pci_dma_h dma_handle; - pci_dma_acc_h acc_handle; -} __hal_blockpool_entry_t; - -/* - * struct __hal_blockpool_t - Block Pool - * @hldev: HAL device - * @block_size: size of each block. - * @Pool_size: Number of blocks in the pool - * @pool_incr: Number of blocks to be requested/freed at a time from OS - * @pool_min: Minimum number of block below which to request additional blocks - * @pool_max: Maximum number of blocks above which to free additional blocks - * @req_out: Number of block requests with OS out standing - * @dma_flags: DMA flags - * @free_block_list: List of free blocks - * @pool_lock: Spin lock for the pool - * - * Block pool contains the DMA blocks preallocated. - * - */ -typedef struct __hal_blockpool_t { - vxge_hal_device_h hldev; - u32 block_size; - u32 pool_size; - u32 pool_incr; - u32 pool_min; - u32 pool_max; - u32 req_out; - u32 dma_flags; - vxge_list_t free_block_list; - vxge_list_t free_entry_list; - -#if defined(VXGE_HAL_BP_POST) || defined(VXGE_HAL_BP_POST_IRQ) - spinlock_t pool_lock; -#endif - -} __hal_blockpool_t; - -vxge_hal_status_e -__hal_blockpool_create(vxge_hal_device_h hldev, - __hal_blockpool_t *blockpool, - u32 pool_size, - u32 pool_incr, - u32 pool_min, - u32 pool_max); - -void -__hal_blockpool_destroy(__hal_blockpool_t *blockpool); - -__hal_blockpool_entry_t * -__hal_blockpool_block_allocate(vxge_hal_device_h hldev, - u32 size); - -void -__hal_blockpool_block_free(vxge_hal_device_h hldev, - __hal_blockpool_entry_t *entry); - -void * -__hal_blockpool_malloc(vxge_hal_device_h hldev, - u32 size, - dma_addr_t *dma_addr, - pci_dma_h *dma_handle, - pci_dma_acc_h *acc_handle); - -void -__hal_blockpool_free(vxge_hal_device_h hldev, - void *memblock, - u32 size, - dma_addr_t *dma_addr, - pci_dma_h *dma_handle, - pci_dma_acc_h *acc_handle); - -vxge_hal_status_e -__hal_blockpool_list_allocate(vxge_hal_device_h hldev, - vxge_list_t *blocklist, u32 count); - -void -__hal_blockpool_list_free(vxge_hal_device_h hldev, - vxge_list_t *blocklist); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_BLOCKPOOL_H */ Index: sys/dev/vxge/vxgehal/vxgehal-blockpool.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-blockpool.c +++ sys/dev/vxge/vxgehal/vxgehal-blockpool.c @@ -1,1033 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * __hal_blockpool_create - Create block pool - * @devh: Pointer to HAL Device object. - * @blockpool: Block pool to be created. - * @pool_size: Number of blocks in the pool. - * @pool_incr: Number of blocks to be request from OS at a time - * @pool_min: Number of blocks below which new blocks to be requested. - * @pool_max: Number of blocks above which block to be freed. - * - * This function creates block pool - */ - -vxge_hal_status_e -__hal_blockpool_create(vxge_hal_device_h devh, - __hal_blockpool_t *blockpool, - u32 pool_size, - u32 pool_incr, - u32 pool_min, - u32 pool_max) -{ - u32 i; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_blockpool_entry_t *entry; - void *memblock; - dma_addr_t dma_addr; - pci_dma_h dma_handle; - pci_dma_acc_h acc_handle; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(devh != NULL); - vxge_os_memzero(&dma_handle, sizeof(pci_dma_h)); - vxge_os_memzero(&acc_handle, sizeof(pci_dma_acc_h)); - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("devh = 0x"VXGE_OS_STXFMT", " - "blockpool = 0x"VXGE_OS_STXFMT", pool_size = %d, pool_incr = %d, " - "pool_min = %d, pool_max = %d", (ptr_t) devh, (ptr_t) blockpool, - pool_size, pool_incr, pool_min, pool_max); - - if (blockpool == NULL) { - vxge_hal_err_log_pool( - "%s:%d null pointer passed. blockpool is null", - __FILE__, __LINE__); - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - blockpool->hldev = devh; - blockpool->block_size = VXGE_OS_HOST_PAGE_SIZE; - blockpool->pool_size = 0; - blockpool->pool_incr = pool_incr; - blockpool->pool_min = pool_min; - blockpool->pool_max = pool_max; - blockpool->req_out = 0; - -#if defined(VXGE_HAL_DMA_CONSISTENT) - blockpool->dma_flags = VXGE_OS_DMA_CONSISTENT; -#else - blockpool->dma_flags = VXGE_OS_DMA_STREAMING; -#endif - - vxge_list_init(&blockpool->free_block_list); - - vxge_list_init(&blockpool->free_entry_list); - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock_init(&blockpool->pool_lock, hldev->header.pdev); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_init_irq(&blockpool->pool_lock, hldev->header.irqh); -#endif - - for (i = 0; i < pool_size + pool_max; i++) { - - entry = (__hal_blockpool_entry_t *) vxge_os_malloc( - hldev->header.pdev, - sizeof(__hal_blockpool_entry_t)); - if (entry == NULL) { - __hal_blockpool_destroy(blockpool); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - vxge_list_insert(&entry->item, &blockpool->free_entry_list); - } - - for (i = 0; i < pool_size; i++) { - - memblock = vxge_os_dma_malloc( - hldev->header.pdev, - VXGE_OS_HOST_PAGE_SIZE, - blockpool->dma_flags, - &dma_handle, - &acc_handle); - - if (memblock == NULL) { - __hal_blockpool_destroy(blockpool); - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - dma_addr = vxge_os_dma_map( - hldev->header.pdev, - dma_handle, - memblock, - VXGE_OS_HOST_PAGE_SIZE, - VXGE_OS_DMA_DIR_BIDIRECTIONAL, - blockpool->dma_flags); - - if (dma_addr == VXGE_OS_INVALID_DMA_ADDR) { - vxge_os_dma_free(hldev->header.pdev, - memblock, - VXGE_OS_HOST_PAGE_SIZE, - blockpool->dma_flags, - &dma_handle, - &acc_handle); - __hal_blockpool_destroy(blockpool); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - entry = (__hal_blockpool_entry_t *) - vxge_list_first_get(&blockpool->free_entry_list); - - if (entry == NULL) { - entry = (__hal_blockpool_entry_t *) vxge_os_malloc( - hldev->header.pdev, - sizeof(__hal_blockpool_entry_t)); - } - - if (entry != NULL) { - vxge_list_remove(&entry->item); - entry->length = VXGE_OS_HOST_PAGE_SIZE; - entry->memblock = memblock; - entry->dma_addr = dma_addr; - entry->acc_handle = acc_handle; - entry->dma_handle = dma_handle; - vxge_list_insert(&entry->item, - &blockpool->free_block_list); - blockpool->pool_size++; - } else { - __hal_blockpool_destroy(blockpool); - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - } - - vxge_hal_info_log_pool( - "Blockpool block size:%d block pool size: %d", - blockpool->block_size, blockpool->pool_size); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_blockpool_destroy - Deallocates the block pool - * @blockpool: blockpool to be deallocated - * - * This function freeup the memory pool and removes the - * block pool. - */ - -void -__hal_blockpool_destroy( - __hal_blockpool_t *blockpool) -{ - __hal_device_t *hldev; - vxge_list_t *p, *n; - - vxge_assert(blockpool != NULL); - - hldev = (__hal_device_t *) blockpool->hldev; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("blockpool = 0x"VXGE_OS_STXFMT, - (ptr_t) blockpool); - - if (blockpool == NULL) { - vxge_hal_err_log_pool( - "%s:%d null pointer passed blockpool = null", - __FILE__, __LINE__); - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 1", - __FILE__, __func__, __LINE__); - return; - } - - vxge_list_for_each_safe(p, n, &blockpool->free_block_list) { - - vxge_os_dma_unmap(hldev->header.pdev, - ((__hal_blockpool_entry_t *) p)->dma_handle, - ((__hal_blockpool_entry_t *) p)->dma_addr, - ((__hal_blockpool_entry_t *) p)->length, - VXGE_OS_DMA_DIR_BIDIRECTIONAL); - - vxge_os_dma_free(hldev->header.pdev, - ((__hal_blockpool_entry_t *) p)->memblock, - ((__hal_blockpool_entry_t *) p)->length, - blockpool->dma_flags, - &((__hal_blockpool_entry_t *) p)->dma_handle, - &((__hal_blockpool_entry_t *) p)->acc_handle); - - vxge_list_remove(&((__hal_blockpool_entry_t *) p)->item); - - vxge_os_free(hldev->header.pdev, - (void *)p, sizeof(__hal_blockpool_entry_t)); - - blockpool->pool_size--; - } - - vxge_list_for_each_safe(p, n, &blockpool->free_entry_list) { - - vxge_list_remove(&((__hal_blockpool_entry_t *) p)->item); - - vxge_os_free(hldev->header.pdev, - (void *)p, sizeof(__hal_blockpool_entry_t)); - - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock_destroy(&blockpool->pool_lock, - hldev->header.pdev); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_destroy_irq(&blockpool->pool_lock, - hldev->header.pdev); -#endif - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_blockpool_blocks_add - Request additional blocks - * @blockpool: Block pool. - * - * Requests additional blocks to block pool - */ -static inline void -__hal_blockpool_blocks_add( - __hal_blockpool_t * blockpool) -{ - u32 nreq = 0, i; - __hal_device_t *hldev; - - vxge_assert(blockpool != NULL); - - hldev = (__hal_device_t *) blockpool->hldev; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("blockpool = 0x"VXGE_OS_STXFMT, - (ptr_t) blockpool); - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - if ((blockpool->pool_size + blockpool->req_out) < - blockpool->pool_min) { - nreq = blockpool->pool_incr; - blockpool->req_out += nreq; - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - - for (i = 0; i < nreq; i++) { - vxge_os_dma_malloc_async( - ((__hal_device_t *) blockpool->hldev)->header.pdev, - blockpool->hldev, - VXGE_OS_HOST_PAGE_SIZE, - blockpool->dma_flags); - } - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_blockpool_blocks_remove - Free additional blocks - * @blockpool: Block pool. - * - * Frees additional blocks over maximum from the block pool - */ -static inline void -__hal_blockpool_blocks_remove( - __hal_blockpool_t * blockpool) -{ - vxge_list_t *p, *n; - __hal_device_t *hldev; - - vxge_assert(blockpool != NULL); - - hldev = (__hal_device_t *) blockpool->hldev; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("blockpool = 0x"VXGE_OS_STXFMT, - (ptr_t) blockpool); - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - vxge_list_for_each_safe(p, n, &blockpool->free_block_list) { - - if (blockpool->pool_size < blockpool->pool_max) - break; - - vxge_os_dma_unmap( - ((__hal_device_t *) blockpool->hldev)->header.pdev, - ((__hal_blockpool_entry_t *) p)->dma_handle, - ((__hal_blockpool_entry_t *) p)->dma_addr, - ((__hal_blockpool_entry_t *) p)->length, - VXGE_OS_DMA_DIR_BIDIRECTIONAL); - - vxge_os_dma_free( - ((__hal_device_t *) blockpool->hldev)->header.pdev, - ((__hal_blockpool_entry_t *) p)->memblock, - ((__hal_blockpool_entry_t *) p)->length, - blockpool->dma_flags, - &((__hal_blockpool_entry_t *) p)->dma_handle, - &((__hal_blockpool_entry_t *) p)->acc_handle); - - vxge_list_remove(&((__hal_blockpool_entry_t *) p)->item); - - vxge_list_insert(p, &blockpool->free_entry_list); - - blockpool->pool_size--; - - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_blockpool_block_add - callback for vxge_os_dma_malloc_async - * @devh: HAL device handle. - * @block_addr: Virtual address of the block - * @length: Length of the block. - * @p_dma_h: Physical address of the block - * @acc_handle: DMA acc handle - * - * Adds a block to block pool - */ -void -vxge_hal_blockpool_block_add( - vxge_hal_device_h devh, - void *block_addr, - u32 length, - pci_dma_h * dma_h, - pci_dma_acc_h * acc_handle) -{ - __hal_blockpool_t *blockpool; - __hal_blockpool_entry_t *entry; - __hal_device_t *hldev; - dma_addr_t dma_addr; - vxge_hal_status_e status; - u32 req_out; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("devh = 0x"VXGE_OS_STXFMT", length = %d, " - "block_addr = 0x"VXGE_OS_STXFMT", dma_h = 0x"VXGE_OS_STXFMT", " - "acc_handle = 0x"VXGE_OS_STXFMT, (ptr_t) devh, length, - (ptr_t) block_addr, (ptr_t) dma_h, (ptr_t) acc_handle); - - blockpool = &hldev->block_pool; - - if (block_addr == NULL) { -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - blockpool->req_out--; - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 1", - __FILE__, __func__, __LINE__); - return; - } - - dma_addr = vxge_os_dma_map(hldev->header.pdev, - *dma_h, - block_addr, - length, - VXGE_OS_DMA_DIR_BIDIRECTIONAL, - blockpool->dma_flags); - - if (dma_addr == VXGE_OS_INVALID_DMA_ADDR) { - vxge_os_dma_free(hldev->header.pdev, - block_addr, - length, - blockpool->dma_flags, - dma_h, - acc_handle); -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - blockpool->req_out--; - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 1", - __FILE__, __func__, __LINE__); - return; - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - - entry = (__hal_blockpool_entry_t *) - vxge_list_first_get(&blockpool->free_entry_list); - - if (entry == NULL) { - entry = (__hal_blockpool_entry_t *) vxge_os_malloc( - hldev->header.pdev, - sizeof(__hal_blockpool_entry_t)); - } else { - vxge_list_remove(&entry->item); - } - - if (entry != NULL) { - entry->length = length; - entry->memblock = block_addr; - entry->dma_addr = dma_addr; - entry->acc_handle = *acc_handle; - entry->dma_handle = *dma_h; - vxge_list_insert(&entry->item, &blockpool->free_block_list); - blockpool->pool_size++; - status = VXGE_HAL_OK; - } else { - status = VXGE_HAL_ERR_OUT_OF_MEMORY; - } - - blockpool->req_out--; - - req_out = blockpool->req_out; - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - - if (req_out == 0) - __hal_channel_process_pending_list(devh); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); -} - -/* - * __hal_blockpool_malloc - Allocate a memory block from pool - * @devh: HAL device handle. - * @size: Length of the block. - * @dma_addr: Buffer to return DMA Address of the block. - * @dma_handle: Buffer to return DMA handle of the block. - * @acc_handle: Buffer to return DMA acc handle - * - * - * Allocates a block of memory of given size, either from block pool - * or by calling vxge_os_dma_malloc() - */ -void * -__hal_blockpool_malloc(vxge_hal_device_h devh, - u32 size, - dma_addr_t *dma_addr, - pci_dma_h *dma_handle, - pci_dma_acc_h *acc_handle) -{ - __hal_blockpool_entry_t *entry; - __hal_blockpool_t *blockpool; - __hal_device_t *hldev; - void *memblock = NULL; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool( - "devh = 0x"VXGE_OS_STXFMT", size = %d, " - "dma_addr = 0x"VXGE_OS_STXFMT", dma_handle = 0x"VXGE_OS_STXFMT", " - "acc_handle = 0x"VXGE_OS_STXFMT, (ptr_t) devh, size, - (ptr_t) dma_addr, (ptr_t) dma_handle, (ptr_t) acc_handle); - - blockpool = &((__hal_device_t *) devh)->block_pool; - - if (size != blockpool->block_size) { - - memblock = vxge_os_dma_malloc( - ((__hal_device_t *) devh)->header.pdev, - size, - blockpool->dma_flags | - VXGE_OS_DMA_CACHELINE_ALIGNED, - dma_handle, - acc_handle); - - if (memblock == NULL) { - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - - *dma_addr = vxge_os_dma_map( - ((__hal_device_t *) devh)->header.pdev, - *dma_handle, - memblock, - size, - VXGE_OS_DMA_DIR_BIDIRECTIONAL, - blockpool->dma_flags); - - if (*dma_addr == VXGE_OS_INVALID_DMA_ADDR) { - vxge_os_dma_free(((__hal_device_t *) devh)->header.pdev, - memblock, - size, - blockpool->dma_flags | - VXGE_OS_DMA_CACHELINE_ALIGNED, - dma_handle, - acc_handle); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - - return (NULL); - } - - } else { - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - - entry = (__hal_blockpool_entry_t *) - vxge_list_first_get(&blockpool->free_block_list); - - if (entry != NULL) { - vxge_list_remove(&entry->item); - *dma_addr = entry->dma_addr; - *dma_handle = entry->dma_handle; - *acc_handle = entry->acc_handle; - memblock = entry->memblock; - - vxge_list_insert(&entry->item, - &blockpool->free_entry_list); - blockpool->pool_size--; - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - - if (memblock != NULL) - __hal_blockpool_blocks_add(blockpool); - - } - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, !memblock); - - return (memblock); - -} - -/* - * __hal_blockpool_free - Frees the memory allcoated with __hal_blockpool_malloc - * @devh: HAL device handle. - * @memblock: Virtual address block - * @size: Length of the block. - * @dma_addr: DMA Address of the block. - * @dma_handle: DMA handle of the block. - * @acc_handle: DMA acc handle - * - * - * Frees the memory allocated with __hal_blockpool_malloc to blockpool or system - */ -void -__hal_blockpool_free(vxge_hal_device_h devh, - void *memblock, - u32 size, - dma_addr_t *dma_addr, - pci_dma_h *dma_handle, - pci_dma_acc_h *acc_handle) -{ - __hal_blockpool_entry_t *entry; - __hal_blockpool_t *blockpool; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("devh = 0x"VXGE_OS_STXFMT", size = %d, " - "dma_addr = 0x"VXGE_OS_STXFMT", dma_handle = 0x"VXGE_OS_STXFMT", " - "acc_handle = 0x"VXGE_OS_STXFMT, (ptr_t) devh, size, - (ptr_t) dma_addr, (ptr_t) dma_handle, (ptr_t) acc_handle); - - blockpool = &((__hal_device_t *) devh)->block_pool; - - if (size != blockpool->block_size) { - - vxge_os_dma_unmap(((__hal_device_t *) devh)->header.pdev, - *dma_handle, - *dma_addr, - size, - VXGE_OS_DMA_DIR_BIDIRECTIONAL); - - vxge_os_dma_free(((__hal_device_t *) devh)->header.pdev, - memblock, - size, - blockpool->dma_flags | - VXGE_OS_DMA_CACHELINE_ALIGNED, - dma_handle, - acc_handle); - } else { -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - - entry = (__hal_blockpool_entry_t *) - vxge_list_first_get(&blockpool->free_entry_list); - - if (entry == NULL) { - entry = (__hal_blockpool_entry_t *) vxge_os_malloc( - ((__hal_device_t *) devh)->header.pdev, - sizeof(__hal_blockpool_entry_t)); - } else { - vxge_list_remove(&entry->item); - } - - if (entry != NULL) { - entry->length = size; - entry->memblock = memblock; - entry->dma_addr = *dma_addr; - entry->acc_handle = *acc_handle; - entry->dma_handle = *dma_handle; - vxge_list_insert(&entry->item, - &blockpool->free_block_list); - blockpool->pool_size++; - status = VXGE_HAL_OK; - } else { - status = VXGE_HAL_ERR_OUT_OF_MEMORY; - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - if (status == VXGE_HAL_OK) - __hal_blockpool_blocks_remove(blockpool); - - } - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); -} - -/* - * __hal_blockpool_block_allocate - Allocates a block from block pool - * @hldev: Hal device - * @size: Size of the block to be allocated - * - * This function allocates a block from block pool or from the system - */ -__hal_blockpool_entry_t * -__hal_blockpool_block_allocate(vxge_hal_device_h devh, - u32 size) -{ - __hal_blockpool_entry_t *entry = NULL; - __hal_device_t *hldev; - __hal_blockpool_t *blockpool; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("devh = 0x"VXGE_OS_STXFMT", size = %d", - (ptr_t) devh, size); - - blockpool = &((__hal_device_t *) devh)->block_pool; - - if (size == blockpool->block_size) { -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - - entry = (__hal_blockpool_entry_t *) - vxge_list_first_get(&blockpool->free_block_list); - - if (entry != NULL) { - vxge_list_remove(&entry->item); - blockpool->pool_size--; - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - } - - if (entry != NULL) - __hal_blockpool_blocks_add(blockpool); - - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, !entry); - - return (entry); -} - -/* - * __hal_blockpool_block_free - Frees a block from block pool - * @devh: Hal device - * @entry: Entry of block to be freed - * - * This function frees a block from block pool - */ -void -__hal_blockpool_block_free(vxge_hal_device_h devh, - __hal_blockpool_entry_t *entry) -{ - __hal_device_t *hldev; - __hal_blockpool_t *blockpool; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool( - "devh = 0x"VXGE_OS_STXFMT", entry = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) entry); - - blockpool = &((__hal_device_t *) devh)->block_pool; - - if (entry->length == blockpool->block_size) { -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - - vxge_list_insert(&entry->item, &blockpool->free_block_list); - blockpool->pool_size++; - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - } - - __hal_blockpool_blocks_remove(blockpool); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - - -/* - * __hal_blockpool_list_allocate - Allocate blocks from block pool - * @devh: Hal device - * @blocklist: List into which the allocated blocks to be inserted - * @count: Number of blocks to be allocated - * - * This function allocates a register from the register pool - */ -vxge_hal_status_e -__hal_blockpool_list_allocate( - vxge_hal_device_h devh, - vxge_list_t *blocklist, - u32 count) -{ - u32 i; - __hal_device_t *hldev; - __hal_blockpool_t *blockpool; - __hal_blockpool_entry_t *block_entry; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("devh = 0x"VXGE_OS_STXFMT", blocklist = " - "0x"VXGE_OS_STXFMT", count = %d", (ptr_t) devh, - (ptr_t) blocklist, count); - - blockpool = &((__hal_device_t *) devh)->block_pool; - - if (blocklist == NULL) { - vxge_hal_err_log_pool( - "null pointer passed blockpool = 0x"VXGE_OS_STXFMT", " - "blocklist = 0x"VXGE_OS_STXFMT, (ptr_t) blockpool, - (ptr_t) blocklist); - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 1", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_FAIL); - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - - vxge_list_init(blocklist); - - for (i = 0; i < count; i++) { - - block_entry = (__hal_blockpool_entry_t *) - vxge_list_first_get(&blockpool->free_block_list); - - if (block_entry == NULL) - break; - - vxge_list_remove(&block_entry->item); - - vxge_os_memzero(block_entry->memblock, blockpool->block_size); - - vxge_list_insert(&block_entry->item, blocklist); - - blockpool->pool_size++; - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - - if (i < count) { - - vxge_hal_err_log_pool("%s:%d Blockpool out of blocks", - __FILE__, __LINE__); - - vxge_assert(FALSE); - - __hal_blockpool_list_free(blockpool, blocklist); - - status = VXGE_HAL_ERR_OUT_OF_MEMORY; - - } - - __hal_blockpool_blocks_add(blockpool); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_blockpool_list_free - Free a list of blocks from block pool - * @devh: Hal device - * @blocklist: List of blocks to be freed - * - * This function frees a list of blocks to the block pool - */ -void -__hal_blockpool_list_free( - vxge_hal_device_h devh, - vxge_list_t *blocklist) -{ - __hal_device_t *hldev; - __hal_blockpool_t *blockpool; - __hal_blockpool_entry_t *block_entry; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool( - "devh = 0x"VXGE_OS_STXFMT", blocklist = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) blocklist); - - blockpool = &((__hal_device_t *) devh)->block_pool; - - if (blocklist == NULL) { - vxge_hal_err_log_pool( - "null pointer passed blockpool = 0x"VXGE_OS_STXFMT", " - "blocklist = 0x"VXGE_OS_STXFMT, (ptr_t) blockpool, - (ptr_t) blocklist); - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 1", - __FILE__, __func__, __LINE__); - return; - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_lock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_lock_irq(&blockpool->pool_lock, flags); -#endif - - while ((block_entry = (__hal_blockpool_entry_t *) - vxge_list_first_get(blocklist)) != NULL) { - - vxge_list_remove(&block_entry->item); - - vxge_list_insert(&block_entry->item, - &blockpool->free_block_list); - - blockpool->pool_size++; - } - -#if defined(VXGE_HAL_BP_POST) - vxge_os_spin_unlock(&blockpool->pool_lock); -#elif defined(VXGE_HAL_BP_POST_IRQ) - vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags); -#endif - - __hal_blockpool_blocks_remove(blockpool); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} Index: sys/dev/vxge/vxgehal/vxgehal-channel.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-channel.h +++ sys/dev/vxge/vxgehal/vxgehal-channel.h @@ -1,388 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_CHANNEL_H -#define VXGE_HAL_CHANNEL_H - -__EXTERN_BEGIN_DECLS - -/* - * __hal_dtr_h - Handle to the desriptor object used for nonoffload - * send or receive. Generic handle which can be with txd or rxd - */ -typedef void *__hal_dtr_h; - -/* - * enum __hal_channel_type_e - Enumerated channel types. - * @VXGE_HAL_CHANNEL_TYPE_UNKNOWN: Unknown channel. - * @VXGE_HAL_CHANNEL_TYPE_FIFO: fifo. - * @VXGE_HAL_CHANNEL_TYPE_RING: ring. - * @VXGE_HAL_CHANNEL_TYPE_SQ: Send Queue - * @VXGE_HAL_CHANNEL_TYPE_SRQ: Receive Queue - * @VXGE_HAL_CHANNEL_TYPE_CQRQ: Receive queue completion queue - * @VXGE_HAL_CHANNEL_TYPE_UMQ: Up message queue - * @VXGE_HAL_CHANNEL_TYPE_DMQ: Down message queue - * @VXGE_HAL_CHANNEL_TYPE_MAX: Maximum number of HAL-supported - * (and recognized) channel types. Currently: 7. - * - * Enumerated channel types. Currently there are only two link-layer - * channels - X3100 fifo and X3100 ring. In the future the list will grow. - */ -typedef enum __hal_channel_type_e { - VXGE_HAL_CHANNEL_TYPE_UNKNOWN = 0, - VXGE_HAL_CHANNEL_TYPE_FIFO = 1, - VXGE_HAL_CHANNEL_TYPE_RING = 2, - VXGE_HAL_CHANNEL_TYPE_SEND_QUEUE = 3, - VXGE_HAL_CHANNEL_TYPE_RECEIVE_QUEUE = 4, - VXGE_HAL_CHANNEL_TYPE_COMPLETION_QUEUE = 5, - VXGE_HAL_CHANNEL_TYPE_UP_MESSAGE_QUEUE = 6, - VXGE_HAL_CHANNEL_TYPE_DOWN_MESSAGE_QUEUE = 7, - VXGE_HAL_CHANNEL_TYPE_MAX = 8 -} __hal_channel_type_e; - -/* - * __hal_dtr_item_t - * @dtr: Pointer to the descriptors that contains the dma data - * to/from the device. - * @hal_priv: HAL Private data related to the dtr. - * @uld_priv: ULD Private data related to the dtr. - */ -typedef struct __hal_dtr_item_t { - void *dtr; - void *hal_priv; - void *uld_priv; - u32 state; -#define VXGE_HAL_CHANNEL_DTR_FREE 0 -#define VXGE_HAL_CHANNEL_DTR_RESERVED 1 -#define VXGE_HAL_CHANNEL_DTR_POSTED 2 -#define VXGE_HAL_CHANNEL_DTR_COMPLETED 3 -} __hal_dtr_item_t; - -/* - * __hal_channel_t - * @item: List item; used to maintain a list of open channels. - * @type: Channel type. See vxge_hal_channel_type_e {}. - * @devh: Device handle. HAL device object that contains _this_ channel. - * @pdev: PCI Device object - * @vph: Virtual path handle. Virtual Path Object that contains _this_ channel. - * @length: Channel length. Currently allocated number of descriptors. - * The channel length "grows" when more descriptors get allocated. - * See _hal_mempool_grow. - * @dtr_arr: Dtr array. Contains descriptors posted to the channel and their - * private data. - * Note that at any point in time @dtr_arr contains 3 types of - * descriptors: - * 1) posted but not yet consumed by X3100 device; - * 2) consumed but not yet completed; - * 3) completed. - * @post_index: Post index. At any point in time points on the - * position in the channel, which'll contain next to-be-posted - * descriptor. - * @compl_index: Completion index. At any point in time points on the - * position in the channel, which will contain next - * to-be-completed descriptor. - * @reserve_index: Reserve index. At any point in time points on the - * position in the channel, which will contain next - * to-be-reserved descriptor. - * @free_dtr_count: Number of dtrs free. - * @posted_dtr_count: Number of dtrs posted - * @post_lock: Lock to serialize multiple concurrent "posters" of descriptors - * on the given channel. - * @poll_bytes: Poll bytes. - * @per_dtr_space: Per-descriptor space (in bytes) that channel user can utilize - * to store per-operation control information. - * @stats: Pointer to common statistics - * @userdata: Per-channel opaque (void *) user-defined context, which may be - * upper-layer driver object, ULP connection, etc. - * Once channel is open, @userdata is passed back to user via - * vxge_hal_channel_callback_f. - * - * HAL channel object. - * - * See also: vxge_hal_channel_type_e {}, vxge_hal_channel_flag_e - */ -typedef struct __hal_channel_t { - vxge_list_t item; - __hal_channel_type_e type; - vxge_hal_device_h devh; - pci_dev_h pdev; - vxge_hal_vpath_h vph; - u32 length; - u32 is_initd; - __hal_dtr_item_t *dtr_arr; - u32 compl_index __vxge_os_attr_cacheline_aligned; - u32 reserve_index __vxge_os_attr_cacheline_aligned; - spinlock_t post_lock; - u32 poll_bytes; - u32 per_dtr_space; - vxge_hal_vpath_stats_sw_common_info_t *stats; - void *userdata; -} __hal_channel_t __vxge_os_attr_cacheline_aligned; - -#define __hal_channel_is_posted_dtr(channel, index) \ - ((channel)->dtr_arr[index].state == VXGE_HAL_CHANNEL_DTR_POSTED) - -#define __hal_channel_for_each_posted_dtr(channel, dtrh, index) \ - for (index = (channel)->compl_index,\ - dtrh = (channel)->dtr_arr[index].dtr; \ - (index < (channel)->reserve_index) && \ - ((channel)->dtr_arr[index].state == VXGE_HAL_CHANNEL_DTR_POSTED); \ - index = (++index == (channel)->length)? 0 : index, \ - dtrh = (channel)->dtr_arr[index].dtr) - -#define __hal_channel_for_each_dtr(channel, dtrh, index) \ - for (index = 0, dtrh = (channel)->dtr_arr[index].dtr; \ - index < (channel)->length; \ - dtrh = ((++index == (channel)->length)? 0 : \ - (channel)->dtr_arr[index].dtr)) - -#define __hal_channel_free_dtr_count(channel) \ - (((channel)->reserve_index < (channel)->compl_index) ? \ - ((channel)->compl_index - (channel)->reserve_index) : \ - (((channel)->length - (channel)->reserve_index) + \ - (channel)->reserve_index)) - -/* ========================== CHANNEL PRIVATE API ========================= */ - -__hal_channel_t * -vxge_hal_channel_allocate( - vxge_hal_device_h devh, - vxge_hal_vpath_h vph, - __hal_channel_type_e type, - u32 length, - u32 per_dtr_space, - void *userdata); - -void -vxge_hal_channel_free( - __hal_channel_t *channel); - -vxge_hal_status_e -vxge_hal_channel_initialize( - __hal_channel_t *channel); - -vxge_hal_status_e -__hal_channel_reset( - __hal_channel_t *channel); - -void -vxge_hal_channel_terminate( - __hal_channel_t *channel); - -void -__hal_channel_init_pending_list( - vxge_hal_device_h devh); - -void -__hal_channel_insert_pending_list( - __hal_channel_t * channel); - -void -__hal_channel_process_pending_list( - vxge_hal_device_h devhv); - -void -__hal_channel_destroy_pending_list( - vxge_hal_device_h devh); - -#if defined(VXGE_DEBUG_FP) && (VXGE_DEBUG_FP & VXGE_DEBUG_FP_CHANNEL) -#define __HAL_STATIC_CHANNEL -#define __HAL_INLINE_CHANNEL -#else /* VXGE_FASTPATH_EXTERN */ -#define __HAL_STATIC_CHANNEL static -#define __HAL_INLINE_CHANNEL inline -#endif /* VXGE_FASTPATH_INLINE */ - -/* ========================== CHANNEL Fast Path API ========================= */ -/* - * __hal_channel_dtr_reserve- Reserve a dtr from the channel - * @channelh: Channel - * @dtrh: Buffer to return the DTR pointer - * - * Reserve a dtr from the reserve array. - * - */ -__HAL_STATIC_CHANNEL __HAL_INLINE_CHANNEL vxge_hal_status_e -/* LINTED */ -__hal_channel_dtr_reserve(__hal_channel_t *channel, __hal_dtr_h *dtrh) -{ - vxge_hal_status_e status = VXGE_HAL_INF_OUT_OF_DESCRIPTORS; - - *dtrh = NULL; - - if (channel->dtr_arr[channel->reserve_index].state == - VXGE_HAL_CHANNEL_DTR_FREE) { - - *dtrh = channel->dtr_arr[channel->reserve_index].dtr; - - channel->dtr_arr[channel->reserve_index].state = - VXGE_HAL_CHANNEL_DTR_RESERVED; - - if (++channel->reserve_index == channel->length) - channel->reserve_index = 0; - - status = VXGE_HAL_OK; - - } else { - -#if (VXGE_COMPONENT_HAL_CHANNEL & VXGE_DEBUG_MODULE_MASK) - __hal_device_t *hldev = (__hal_device_t *) channel->devh; - - vxge_hal_info_log_channel("channel %d is full!", channel->type); -#endif - - channel->stats->full_cnt++; - } - - return (status); -} - -/* - * __hal_channel_dtr_restore - Restores a dtr to the channel - * @channelh: Channel - * @dtr: DTR pointer - * - * Returns a dtr back to reserve array. - * - */ -__HAL_STATIC_CHANNEL __HAL_INLINE_CHANNEL void -/* LINTED */ -__hal_channel_dtr_restore(__hal_channel_t *channel, __hal_dtr_h dtrh) -{ - u32 dtr_index; - - /* - * restore a previously allocated dtrh at current offset and update - * the available reserve length accordingly. If dtrh is null just - * update the reserve length, only - */ - - if (channel->reserve_index == 0) - dtr_index = channel->length; - else - dtr_index = channel->reserve_index - 1; - - if ((channel->dtr_arr[dtr_index].dtr = dtrh) != NULL) { - - channel->reserve_index = dtr_index; - channel->dtr_arr[dtr_index].state = VXGE_HAL_CHANNEL_DTR_FREE; - -#if (VXGE_COMPONENT_HAL_CHANNEL & VXGE_DEBUG_MODULE_MASK) - - __hal_device_t *hldev = (__hal_device_t *) channel->devh; - vxge_hal_info_log_channel("dtrh 0x"VXGE_OS_STXFMT" \ - restored for " "channel %d at reserve index %d, ", - (ptr_t) dtrh, channel->type, - channel->reserve_index); -#endif - } -} - -/* - * __hal_channel_dtr_post - Post a dtr to the channel - * @channelh: Channel - * @dtr: DTR pointer - * - * Posts a dtr to work array. - * - */ -__HAL_STATIC_CHANNEL __HAL_INLINE_CHANNEL void -/* LINTED */ -__hal_channel_dtr_post(__hal_channel_t *channel, u32 dtr_index) -{ - channel->dtr_arr[dtr_index].state = - VXGE_HAL_CHANNEL_DTR_POSTED; -} - -/* - * __hal_channel_dtr_try_complete - Returns next completed dtr - * @channelh: Channel - * @dtr: Buffer to return the next completed DTR pointer - * - * Returns the next completed dtr with out removing it from work array - * - */ -__HAL_STATIC_CHANNEL __HAL_INLINE_CHANNEL void -/* LINTED */ -__hal_channel_dtr_try_complete(__hal_channel_t *channel, __hal_dtr_h *dtrh) -{ - vxge_assert(channel->dtr_arr); - vxge_assert(channel->compl_index < channel->length); - - if (channel->dtr_arr[channel->compl_index].state == - VXGE_HAL_CHANNEL_DTR_POSTED) - *dtrh = channel->dtr_arr[channel->compl_index].dtr; - else - *dtrh = NULL; -} - -/* - * __hal_channel_dtr_complete - Removes next completed dtr from the work array - * @channelh: Channel - * - * Removes the next completed dtr from work array - * - */ -__HAL_STATIC_CHANNEL __HAL_INLINE_CHANNEL void -/* LINTED */ -__hal_channel_dtr_complete(__hal_channel_t *channel) -{ - channel->dtr_arr[channel->compl_index].state = - VXGE_HAL_CHANNEL_DTR_COMPLETED; - - if (++channel->compl_index == channel->length) - channel->compl_index = 0; - - channel->stats->total_compl_cnt++; -} - -/* - * __hal_channel_dtr_free - Frees a dtr - * @channelh: Channel - * @index: Index of DTR - * - * Returns the dtr to free array - * - */ -__HAL_STATIC_CHANNEL __HAL_INLINE_CHANNEL void -/* LINTED */ -__hal_channel_dtr_free(__hal_channel_t *channel, u32 dtr_index) -{ - channel->dtr_arr[dtr_index].state = - VXGE_HAL_CHANNEL_DTR_FREE; -} - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_CHANNEL_H */ Index: sys/dev/vxge/vxgehal/vxgehal-channel.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-channel.c +++ sys/dev/vxge/vxgehal/vxgehal-channel.c @@ -1,495 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - - -/* - * vxge_hal_channel_allocate - Allocate memory for channel - * @devh: Handle to the device object - * @vph: Handle to Virtual Path - * @type: Type of channel - * @length: Lengths of arrays - * @per_dtr_space: ULD requested per dtr space to be allocated in priv - * @userdata: User data to be passed back in the callback - * - * This function allocates required memory for the channel and various arrays - * in the channel - */ -__hal_channel_t * -vxge_hal_channel_allocate( - vxge_hal_device_h devh, - vxge_hal_vpath_h vph, - __hal_channel_type_e type, - u32 length, - u32 per_dtr_space, - void *userdata) -{ - vxge_hal_device_t *hldev = (vxge_hal_device_t *) devh; - __hal_channel_t *channel; - u32 i, size = 0; - - vxge_assert((devh != NULL) && (vph != NULL)); - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("devh = 0x"VXGE_OS_STXFMT", vph = " - "0x"VXGE_OS_STXFMT", type = %d, length = %d, " - "per_dtr_space = %d, userdata = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) vph, type, length, per_dtr_space, - (ptr_t) userdata); - - switch (type) { - case VXGE_HAL_CHANNEL_TYPE_FIFO: - size = sizeof(__hal_fifo_t); - break; - case VXGE_HAL_CHANNEL_TYPE_RING: - size = sizeof(__hal_ring_t); - break; - - - default: - vxge_assert(size); - break; - - } - - channel = (__hal_channel_t *) vxge_os_malloc(hldev->pdev, size); - if (channel == NULL) { - vxge_hal_trace_log_channel("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - - vxge_os_memzero(channel, size); - vxge_list_init(&channel->item); - - channel->pdev = hldev->pdev; - channel->type = type; - channel->devh = devh; - channel->vph = vph; - - channel->userdata = userdata; - channel->per_dtr_space = per_dtr_space; - - channel->length = length; - - channel->dtr_arr = (__hal_dtr_item_t *) vxge_os_malloc(hldev->pdev, - sizeof(__hal_dtr_item_t)*length); - if (channel->dtr_arr == NULL) { - vxge_hal_channel_free(channel); - vxge_hal_trace_log_channel("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - - vxge_os_memzero(channel->dtr_arr, sizeof(__hal_dtr_item_t)*length); - - channel->compl_index = 0; - channel->reserve_index = 0; - - for (i = 0; i < length; i++) - channel->dtr_arr[i].state = VXGE_HAL_CHANNEL_DTR_FREE; - - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (channel); -} - -/* - * __hal_channel_free - Free memory allocated for channel - * @channel: channel to be freed - * - * This function deallocates memory from the channel and various arrays - * in the channel - */ -void -vxge_hal_channel_free( - __hal_channel_t *channel) -{ - int size = 0; - vxge_hal_device_t *hldev; - - vxge_assert(channel != NULL); - - hldev = (vxge_hal_device_t *) channel->devh; - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("channel = 0x"VXGE_OS_STXFMT, - (ptr_t) channel); - - vxge_assert(channel->pdev); - - if (channel->dtr_arr) { - vxge_os_free(channel->pdev, channel->dtr_arr, - sizeof(__hal_dtr_item_t)*channel->length); - channel->dtr_arr = NULL; - } - - switch (channel->type) { - case VXGE_HAL_CHANNEL_TYPE_FIFO: - size = sizeof(__hal_fifo_t); - break; - case VXGE_HAL_CHANNEL_TYPE_RING: - size = sizeof(__hal_ring_t); - break; - default: - break; - } - - vxge_os_free(channel->pdev, channel, size); - - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_channel_initialize - Initialize a channel - * @channel: channel to be initialized - * - * This function initializes a channel by properly - * setting the various references - */ -vxge_hal_status_e -vxge_hal_channel_initialize( - __hal_channel_t *channel) -{ - vxge_hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(channel != NULL); - - hldev = (vxge_hal_device_t *) channel->devh; - vpath = (__hal_virtualpath_t *) - ((__hal_vpath_handle_t *) channel->vph)->vpath; - - vxge_assert(vpath != NULL); - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("channel = 0x"VXGE_OS_STXFMT, - (ptr_t) channel); - - switch (channel->type) { - case VXGE_HAL_CHANNEL_TYPE_FIFO: - vpath->fifoh = (vxge_hal_fifo_h) channel; - channel->stats = - &((__hal_fifo_t *) channel)->stats->common_stats; - break; - case VXGE_HAL_CHANNEL_TYPE_RING: - vpath->ringh = (vxge_hal_ring_h) channel; - channel->stats = - &((__hal_ring_t *) channel)->stats->common_stats; - break; - - - default: - break; - } - - channel->is_initd = 1; - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * __hal_channel_reset - Resets a channel - * @channel: channel to be reset - * - * This function resets a channel by properly setting the various references - */ -vxge_hal_status_e -__hal_channel_reset( - __hal_channel_t *channel) -{ - u32 i; - __hal_device_t *hldev; - - vxge_assert(channel != NULL); - - hldev = (__hal_device_t *) channel->devh; - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("channel = 0x"VXGE_OS_STXFMT, - (ptr_t) channel); - - vxge_assert(channel->pdev); - - channel->compl_index = 0; - channel->reserve_index = 0; - - for (i = 0; i < channel->length; i++) { - channel->dtr_arr[i].state = - VXGE_HAL_CHANNEL_DTR_FREE; - } - - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_channel_terminate - Deinitializes a channel - * @channel: channel to be deinitialized - * - * This function deinitializes a channel by properly - * setting the various references - */ -void -vxge_hal_channel_terminate( - __hal_channel_t *channel) -{ - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(channel != NULL); - - if (!channel || !channel->is_initd) - return; - - hldev = (__hal_device_t *) channel->devh; - vpath = (__hal_virtualpath_t *) - ((__hal_vpath_handle_t *) channel->vph)->vpath; - - vxge_assert(vpath != NULL); - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("channel = 0x"VXGE_OS_STXFMT, - (ptr_t) channel); - - switch (channel->type) { - case VXGE_HAL_CHANNEL_TYPE_FIFO: - vpath->fifoh = 0; - break; - case VXGE_HAL_CHANNEL_TYPE_RING: - vpath->ringh = 0; - break; - case VXGE_HAL_CHANNEL_TYPE_SEND_QUEUE: - vxge_list_remove(&channel->item); - vpath->sw_stats->obj_counts.no_sqs--; - break; - case VXGE_HAL_CHANNEL_TYPE_RECEIVE_QUEUE: - vxge_list_remove(&channel->item); - vpath->sw_stats->obj_counts.no_srqs--; - break; - case VXGE_HAL_CHANNEL_TYPE_COMPLETION_QUEUE: - vxge_list_remove(&channel->item); - vpath->sw_stats->obj_counts.no_cqrqs--; - break; - default: - break; - } - - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -void -__hal_channel_init_pending_list( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - vxge_list_init(&hldev->pending_channel_list); - -#if defined(VXGE_HAL_VP_CHANNELS) - vxge_os_spin_lock_init(&hldev->pending_channel_lock, hldev->pdev); -#elif defined(VXGE_HAL_VP_CHANNELS_IRQ) - vxge_os_spin_lock_init_irq(&hldev->pending_channel_lock, hldev->irqh); -#endif - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -void -__hal_channel_insert_pending_list( - __hal_channel_t * channel) -{ - __hal_device_t *hldev = (__hal_device_t *) channel->devh; - - vxge_assert(channel != NULL); - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("channel = 0x"VXGE_OS_STXFMT, - (ptr_t) channel); - -#if defined(VXGE_HAL_PENDING_CHANNELS) - vxge_os_spin_lock(&hldev->pending_channel_lock); -#elif defined(VXGE_HAL_PENDING_CHANNELS_IRQ) - vxge_os_spin_lock_irq(&hldev->pending_channel_lock, flags); -#endif - - vxge_list_insert_before(&channel->item, &hldev->pending_channel_list); - -#if defined(VXGE_HAL_PENDING_CHANNELS) - vxge_os_spin_unlock(&hldev->pending_channel_lock); -#elif defined(VXGE_HAL_PENDING_CHANNELS_IRQ) - vxge_os_spin_unlock_irq(&hldev->pending_channel_lock, flags); -#endif - - __hal_channel_process_pending_list(channel->devh); - - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -void -__hal_channel_process_pending_list( - vxge_hal_device_h devh) -{ - vxge_hal_status_e status; - __hal_channel_t *channel; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - for (;;) { -#if defined(VXGE_HAL_PENDING_CHANNELS) - vxge_os_spin_lock(&hldev->pending_channel_lock); -#elif defined(VXGE_HAL_PENDING_CHANNELS_IRQ) - vxge_os_spin_lock_irq(&hldev->pending_channel_lock, flags); -#endif - - channel = (__hal_channel_t *) - vxge_list_first_get(&hldev->pending_channel_list); - - if (channel != NULL) - vxge_list_remove(&channel->item); - -#if defined(VXGE_HAL_PENDING_CHANNELS) - vxge_os_spin_unlock(&hldev->pending_channel_lock); -#elif defined(VXGE_HAL_PENDING_CHANNELS_IRQ) - vxge_os_spin_unlock_irq(&hldev->pending_channel_lock, flags); -#endif - - if (channel == NULL) { - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return; - } - - switch (channel->type) { - default: - status = VXGE_HAL_OK; - break; - } - - if (status == VXGE_HAL_ERR_OUT_OF_MEMORY) { -#if defined(VXGE_HAL_PENDING_CHANNELS) - vxge_os_spin_lock(&hldev->pending_channel_lock); -#elif defined(VXGE_HAL_PENDING_CHANNELS_IRQ) - vxge_os_spin_lock_irq(&hldev->pending_channel_lock, - flags); -#endif - - vxge_list_insert(&channel->item, - &hldev->pending_channel_list); - -#if defined(VXGE_HAL_PENDING_CHANNELS) - vxge_os_spin_unlock(&hldev->pending_channel_lock); -#elif defined(VXGE_HAL_PENDING_CHANNELS_IRQ) - vxge_os_spin_unlock_irq(&hldev->pending_channel_lock, - flags); -#endif - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return; - } - - } -} - -void -__hal_channel_destroy_pending_list( - vxge_hal_device_h devh) -{ - vxge_list_t *p, *n; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_channel("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_channel("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - vxge_list_for_each_safe(p, n, &hldev->pending_channel_list) { - - vxge_list_remove(p); - - switch (((__hal_channel_t *) p)->type) { - default: - break; - } - - } - -#if defined(VXGE_HAL_PENDING_CHANNELS) - vxge_os_spin_lock_destroy(&hldev->pending_channel_lock, - hldev->header.pdev); -#elif defined(VXGE_HAL_PENDING_CHANNELS_IRQ) - vxge_os_spin_lock_destroy_irq(&hldev->pending_channel_lock, - hldev->header.pdev); -#endif - vxge_hal_trace_log_channel("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} Index: sys/dev/vxge/vxgehal/vxgehal-common-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-common-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-common-reg.h @@ -1,258 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_COMMON_REGS_H -#define VXGE_HAL_COMMON_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_common_reg_t { - - u8 unused00a00[0x00a00]; - -/* 0x00a00 */ u64 prc_status1; -#define VXGE_HAL_PRC_STATUS1_PRC_VP_QUIESCENT(n) mBIT(n) -/* 0x00a08 */ u64 rxdcm_reset_in_progress; -#define VXGE_HAL_RXDCM_RESET_IN_PROGRESS_PRC_VP(n) mBIT(n) -/* 0x00a10 */ u64 replicq_flush_in_progress; -#define VXGE_HAL_REPLICQ_FLUSH_IN_PROGRESS_NOA_VP(n) mBIT(n) -/* 0x00a18 */ u64 rxpe_cmds_reset_in_progress; -#define VXGE_HAL_RXPE_CMDS_RESET_IN_PROGRESS_NOA_VP(n) mBIT(n) -/* 0x00a20 */ u64 mxp_cmds_reset_in_progress; -#define VXGE_HAL_MXP_CMDS_RESET_IN_PROGRESS_NOA_VP(n) mBIT(n) -/* 0x00a28 */ u64 noffload_reset_in_progress; -#define VXGE_HAL_NOFFLOAD_RESET_IN_PROGRESS_PRC_VP(n) mBIT(n) -/* 0x00a30 */ u64 rd_req_in_progress; -#define VXGE_HAL_RD_REQ_IN_PROGRESS_VP(n) mBIT(n) -/* 0x00a38 */ u64 rd_req_outstanding; -#define VXGE_HAL_RD_REQ_OUTSTANDING_VP(n) mBIT(n) -/* 0x00a40 */ u64 kdfc_reset_in_progress; -#define VXGE_HAL_KDFC_RESET_IN_PROGRESS_NOA_VP(n) mBIT(n) - u8 unused00b00[0x00b00 - 0x00a48]; - -/* 0x00b00 */ u64 one_cfg_vp; -#define VXGE_HAL_ONE_CFG_VP_RDY(n) mBIT(n) -/* 0x00b08 */ u64 one_common; -#define VXGE_HAL_ONE_COMMON_PET_VPATH_RESET_IN_PROGRESS(n) mBIT(n) - u8 unused00b80[0x00b80 - 0x00b10]; - -/* 0x00b80 */ u64 tim_int_en; -#define VXGE_HAL_TIM_INT_EN_TIM_VP(n) mBIT(n) -/* 0x00b88 */ u64 tim_set_int_en; -#define VXGE_HAL_TIM_SET_INT_EN_VP(n) mBIT(n) -/* 0x00b90 */ u64 tim_clr_int_en; -#define VXGE_HAL_TIM_CLR_INT_EN_VP(n) mBIT(n) -/* 0x00b98 */ u64 tim_mask_int_during_reset; -#define VXGE_HAL_TIM_MASK_INT_DURING_RESET_VPATH(n) mBIT(n) -/* 0x00ba0 */ u64 tim_reset_in_progress; -#define VXGE_HAL_TIM_RESET_IN_PROGRESS_TIM_VPATH(n) mBIT(n) -/* 0x00ba8 */ u64 tim_outstanding_bmap; -#define VXGE_HAL_TIM_OUTSTANDING_BMAP_TIM_VPATH(n) mBIT(n) - u8 unused00c00[0x00c00 - 0x00bb0]; - -/* 0x00c00 */ u64 msg_reset_in_progress; -#define VXGE_HAL_MSG_RESET_IN_PROGRESS_MSG_COMPOSITE(val) vBIT(val, 0, 17) -/* 0x00c08 */ u64 msg_mxp_mr_ready; -#define VXGE_HAL_MSG_MXP_MR_READY_MP_BOOTED(n) mBIT(n) -/* 0x00c10 */ u64 msg_uxp_mr_ready; -#define VXGE_HAL_MSG_UXP_MR_READY_UP_BOOTED(n) mBIT(n) -/* 0x00c18 */ u64 msg_dmq_noni_rtl_prefetch; -#define VXGE_HAL_MSG_DMQ_NONI_RTL_PREFETCH_BYPASS_ENABLE(n) mBIT(n) -/* 0x00c20 */ u64 msg_umq_rtl_bwr; -#define VXGE_HAL_MSG_UMQ_RTL_BWR_PREFETCH_DISABLE(n) mBIT(n) - u8 unused00d00[0x00d00 - 0x00c28]; - -/* 0x00d00 */ u64 cmn_rsthdlr_cfg0; -#define VXGE_HAL_CMN_RSTHDLR_CFG0_SW_RESET_VPATH(val) vBIT(val, 0, 17) -/* 0x00d08 */ u64 cmn_rsthdlr_cfg1; -#define VXGE_HAL_CMN_RSTHDLR_CFG1_CLR_VPATH_RESET(val) vBIT(val, 0, 17) -/* 0x00d10 */ u64 cmn_rsthdlr_cfg2; -#define VXGE_HAL_CMN_RSTHDLR_CFG2_SW_RESET_FIFO0(val) vBIT(val, 0, 17) -/* 0x00d18 */ u64 cmn_rsthdlr_cfg3; -#define VXGE_HAL_CMN_RSTHDLR_CFG3_SW_RESET_FIFO1(val) vBIT(val, 0, 17) -/* 0x00d20 */ u64 cmn_rsthdlr_cfg4; -#define VXGE_HAL_CMN_RSTHDLR_CFG4_SW_RESET_FIFO2(val) vBIT(val, 0, 17) - u8 unused00d40[0x00d40 - 0x00d28]; - -/* 0x00d40 */ u64 cmn_rsthdlr_cfg8; -#define VXGE_HAL_CMN_RSTHDLR_CFG8_INCR_VPATH_INST_NUM(val) vBIT(val, 0, 17) -/* 0x00d48 */ u64 stats_cfg0; -#define VXGE_HAL_STATS_CFG0_STATS_ENABLE(val) vBIT(val, 0, 17) - u8 unused00da8[0x00da8 - 0x00d50]; - -/* 0x00da8 */ u64 clear_msix_mask_vect[4]; -#define VXGE_HAL_CLEAR_MSIX_MASK_VECT_CLEAR_MSIX_MASK_VECT(val) vBIT(val, 0, 17) -/* 0x00dc8 */ u64 set_msix_mask_vect[4]; -#define VXGE_HAL_SET_MSIX_MASK_VECT_SET_MSIX_MASK_VECT(val) vBIT(val, 0, 17) -/* 0x00de8 */ u64 clear_msix_mask_all_vect; -#define VXGE_HAL_CLEAR_MSIX_MASK_ALL_VECT_CLEAR_MSIX_MASK_ALL_VECT(val)\ - vBIT(val, 0, 17) -/* 0x00df0 */ u64 set_msix_mask_all_vect; -#define VXGE_HAL_SET_MSIX_MASK_ALL_VECT_SET_MSIX_MASK_ALL_VECT(val)\ - vBIT(val, 0, 17) -/* 0x00df8 */ u64 mask_vector[4]; -#define VXGE_HAL_MASK_VECTOR_MASK_VECTOR(val) vBIT(val, 0, 17) -/* 0x00e18 */ u64 msix_pending_vector[4]; -#define VXGE_HAL_MSIX_PENDING_VECTOR_MSIX_PENDING_VECTOR(val) vBIT(val, 0, 17) -/* 0x00e38 */ u64 clr_msix_one_shot_vec[4]; -#define VXGE_HAL_CLR_MSIX_ONE_SHOT_VEC_CLR_MSIX_ONE_SHOT_VEC(val)\ - vBIT(val, 0, 17) -/* 0x00e58 */ u64 titan_asic_id; -#define VXGE_HAL_TITAN_ASIC_ID_INITIAL_DEVICE_ID(val) vBIT(val, 0, 16) -#define VXGE_HAL_TITAN_ASIC_ID_INITIAL_MAJOR_REVISION(val) vBIT(val, 48, 8) -#define VXGE_HAL_TITAN_ASIC_ID_INITIAL_MINOR_REVISION(val) vBIT(val, 56, 8) -/* 0x00e60 */ u64 titan_general_int_status; -#define VXGE_HAL_TITAN_GENERAL_INT_STATUS_MRPCIM_ALARM_INT mBIT(0) -#define VXGE_HAL_TITAN_GENERAL_INT_STATUS_SRPCIM_ALARM_INT mBIT(1) -#define VXGE_HAL_TITAN_GENERAL_INT_STATUS_VPATH_ALARM_INT mBIT(2) -#define VXGE_HAL_TITAN_GENERAL_INT_STATUS_VPATH_TRAFFIC_INT(val)\ - vBIT(val, 3, 17) - u8 unused00e70[0x00e70 - 0x00e68]; - -/* 0x00e70 */ u64 titan_mask_all_int; -#define VXGE_HAL_TITAN_MASK_ALL_INT_ALARM mBIT(7) -#define VXGE_HAL_TITAN_MASK_ALL_INT_TRAFFIC mBIT(15) - u8 unused00e80[0x00e80 - 0x00e78]; - -/* 0x00e80 */ u64 tim_int_status0; -#define VXGE_HAL_TIM_INT_STATUS0_TIM_INT_STATUS0(val) vBIT(val, 0, 64) -/* 0x00e88 */ u64 tim_int_mask0; -#define VXGE_HAL_TIM_INT_MASK0_TIM_INT_MASK0(val) vBIT(val, 0, 64) -/* 0x00e90 */ u64 tim_int_status1; -#define VXGE_HAL_TIM_INT_STATUS1_TIM_INT_STATUS1(val) vBIT(val, 0, 4) -/* 0x00e98 */ u64 tim_int_mask1; -#define VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1(val) vBIT(val, 0, 4) -/* 0x00ea0 */ u64 rti_int_status; -#define VXGE_HAL_RTI_INT_STATUS_RTI_INT_STATUS(val) vBIT(val, 0, 17) -/* 0x00ea8 */ u64 rti_int_mask; -#define VXGE_HAL_RTI_INT_MASK_RTI_INT_MASK(val) vBIT(val, 0, 17) -/* 0x00eb0 */ u64 adapter_status; -#define VXGE_HAL_ADAPTER_STATUS_RTDMA_RTDMA_READY mBIT(0) -#define VXGE_HAL_ADAPTER_STATUS_WRDMA_WRDMA_READY mBIT(1) -#define VXGE_HAL_ADAPTER_STATUS_KDFC_KDFC_READY mBIT(2) -#define VXGE_HAL_ADAPTER_STATUS_TPA_TMAC_BUF_EMPTY mBIT(3) -#define VXGE_HAL_ADAPTER_STATUS_RDCTL_PIC_QUIESCENT mBIT(4) -#define VXGE_HAL_ADAPTER_STATUS_XGMAC_NETWORK_FAULT mBIT(5) -#define VXGE_HAL_ADAPTER_STATUS_ROCRC_OFFLOAD_QUIESCENT mBIT(6) -#define VXGE_HAL_ADAPTER_STATUS_G3IF_FB_G3IF_FB_GDDR3_READY mBIT(7) -#define VXGE_HAL_ADAPTER_STATUS_G3IF_CM_G3IF_CM_GDDR3_READY mBIT(8) -#define VXGE_HAL_ADAPTER_STATUS_RIC_RIC_RUNNING mBIT(9) -#define VXGE_HAL_ADAPTER_STATUS_CMG_C_PLL_IN_LOCK mBIT(10) -#define VXGE_HAL_ADAPTER_STATUS_XGMAC_X_PLL_IN_LOCK mBIT(11) -#define VXGE_HAL_ADAPTER_STATUS_FBIF_M_PLL_IN_LOCK mBIT(12) -#define VXGE_HAL_ADAPTER_STATUS_PCC_PCC_IDLE(val) vBIT(val, 24, 8) -#define VXGE_HAL_ADAPTER_STATUS_ROCRC_RC_PRC_QUIESCENT(val) vBIT(val, 44, 8) -/* 0x00eb8 */ u64 gen_ctrl; -#define VXGE_HAL_GEN_CTRL_SPI_MRPCIM_WR_DIS mBIT(0) -#define VXGE_HAL_GEN_CTRL_SPI_MRPCIM_RD_DIS mBIT(1) -#define VXGE_HAL_GEN_CTRL_SPI_SRPCIM_WR_DIS mBIT(2) -#define VXGE_HAL_GEN_CTRL_SPI_SRPCIM_RD_DIS mBIT(3) -#define VXGE_HAL_GEN_CTRL_SPI_DEBUG_DIS mBIT(4) -#define VXGE_HAL_GEN_CTRL_SPI_APP_LTSSM_TIMER_DIS mBIT(5) -#define VXGE_HAL_GEN_CTRL_SPI_NOT_USED(val) vBIT(val, 6, 4) - u8 unused00ed0[0x00ed0 - 0x00ec0]; - -/* 0x00ed0 */ u64 adapter_ready; -#define VXGE_HAL_ADAPTER_READY_ADAPTER_READY mBIT(63) -/* 0x00ed8 */ u64 outstanding_read; -#define VXGE_HAL_OUTSTANDING_READ_OUTSTANDING_READ(val) vBIT(val, 0, 17) -/* 0x00ee0 */ u64 vpath_rst_in_prog; -#define VXGE_HAL_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG(val) vBIT(val, 0, 17) -/* 0x00ee8 */ u64 vpath_reg_modified; -#define VXGE_HAL_VPATH_REG_MODIFIED_VPATH_REG_MODIFIED(val) vBIT(val, 0, 17) - u8 unused00f40[0x00f40 - 0x00ef0]; - -/* 0x00f40 */ u64 qcc_reset_in_progress; -#define VXGE_HAL_QCC_RESET_IN_PROGRESS_QCC_VPATH(n) mBIT(n) - u8 unused00fc0[0x00fc0 - 0x00f48]; - -/* 0x00fc0 */ u64 cp_reset_in_progress; -#define VXGE_HAL_CP_RESET_IN_PROGRESS_CP_VPATH(n) mBIT(n) - u8 unused01000[0x01000 - 0x00fc8]; - -/* 0x01000 */ u64 h2l_reset_in_progress; -#define VXGE_HAL_H2L_RESET_IN_PROGRESS_H2L_VPATH(n) mBIT(n) - u8 unused01080[0x01080 - 0x01008]; - -/* 0x01080 */ u64 xgmac_ready; -#define VXGE_HAL_XGMAC_READY_XMACJ_READY(val) vBIT(val, 0, 17) - u8 unused010c0[0x010c0 - 0x01088]; - -/* 0x010c0 */ u64 fbif_ready; -#define VXGE_HAL_FBIF_READY_FAU_READY(val) vBIT(val, 0, 17) - u8 unused01100[0x01100 - 0x010c8]; - -/* 0x01100 */ u64 vplane_assignments; -#define VXGE_HAL_VPLANE_ASSIGNMENTS_VPLANE_ASSIGNMENTS(val) vBIT(val, 3, 5) -/* 0x01108 */ u64 vpath_assignments; -#define VXGE_HAL_VPATH_ASSIGNMENTS_VPATH_ASSIGNMENTS(val) vBIT(val, 0, 17) -/* 0x01110 */ u64 resource_assignments; -#define VXGE_HAL_RESOURCE_ASSIGNMENTS_RESOURCE_ASSIGNMENTS(val) vBIT(val, 0, 17) -/* 0x01118 */ u64 host_type_assignments; -#define VXGE_HAL_HOST_TYPE_ASSIGNMENTS_HOST_TYPE_ASSIGNMENTS(val)\ - vBIT(val, 5, 3) -/* 0x01120 */ u64 debug_assignments; -#define VXGE_HAL_DEBUG_ASSIGNMENTS_VHLABEL(val) vBIT(val, 3, 5) -#define VXGE_HAL_DEBUG_ASSIGNMENTS_VPLANE(val) vBIT(val, 11, 5) -#define VXGE_HAL_DEBUG_ASSIGNMENTS_FUNC(val) vBIT(val, 19, 5) - -/* 0x01128 */ u64 max_resource_assignments; -#define VXGE_HAL_MAX_RESOURCE_ASSIGNMENTS_PCI_MAX_VPLANE(val) vBIT(val, 3, 5) -#define VXGE_HAL_MAX_RESOURCE_ASSIGNMENTS_PCI_MAX_VPATHS(val) vBIT(val, 11, 5) -/* 0x01130 */ u64 pf_vpath_assignments; -#define VXGE_HAL_PF_VPATH_ASSIGNMENTS_PF_VPATH_ASSIGNMENTS(val) vBIT(val, 0, 17) - u8 unused01200[0x01200 - 0x01138]; - -/* 0x01200 */ u64 rts_access_icmp; -#define VXGE_HAL_RTS_ACCESS_ICMP_EN(val) vBIT(val, 0, 17) -/* 0x01208 */ u64 rts_access_tcpsyn; -#define VXGE_HAL_RTS_ACCESS_TCPSYN_EN(val) vBIT(val, 0, 17) -/* 0x01210 */ u64 rts_access_zl4pyld; -#define VXGE_HAL_RTS_ACCESS_ZL4PYLD_EN(val) vBIT(val, 0, 17) -/* 0x01218 */ u64 rts_access_l4prtcl_tcp; -#define VXGE_HAL_RTS_ACCESS_L4PRTCL_TCP_EN(val) vBIT(val, 0, 17) -/* 0x01220 */ u64 rts_access_l4prtcl_udp; -#define VXGE_HAL_RTS_ACCESS_L4PRTCL_UDP_EN(val) vBIT(val, 0, 17) -/* 0x01228 */ u64 rts_access_l4prtcl_flex; -#define VXGE_HAL_RTS_ACCESS_L4PRTCL_FLEX_EN(val) vBIT(val, 0, 17) -/* 0x01230 */ u64 rts_access_ipfrag; -#define VXGE_HAL_RTS_ACCESS_IPFRAG_EN(val) vBIT(val, 0, 17) - - u8 unused01238[0x01248 - 0x01238]; - -} vxge_hal_common_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_COMMON_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-config-priv.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-config-priv.h +++ sys/dev/vxge/vxgehal/vxgehal-config-priv.h @@ -1,98 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef XGEHAL_CONFIG_PRIV_H -#define XGEHAL_CONFIG_PRIV_H - -__EXTERN_BEGIN_DECLS - -vxge_hal_status_e -vxge_hal_driver_config_check(vxge_hal_driver_config_t *config); - -vxge_hal_status_e -__hal_device_mac_config_check(vxge_hal_mac_config_t *mac_config); - -vxge_hal_status_e -__hal_vpath_qos_config_check(vxge_hal_vpath_qos_config_t *config); - -vxge_hal_status_e -__hal_mrpcim_config_check(vxge_hal_mrpcim_config_t *config); - -vxge_hal_status_e -__hal_device_ring_config_check(vxge_hal_ring_config_t *ring_config); - -vxge_hal_status_e -__hal_device_fifo_config_check(vxge_hal_fifo_config_t *fifo_config); - -vxge_hal_status_e -__hal_device_lag_config_check(vxge_hal_lag_config_t *lag_config); - -vxge_hal_status_e -__hal_device_lag_port_config_check(vxge_hal_lag_port_config_t *port_config); - -vxge_hal_status_e -__hal_device_lag_aggr_config_check(vxge_hal_lag_aggr_config_t *aggr_config); - -vxge_hal_status_e -__hal_device_lag_la_config_check(vxge_hal_lag_la_config_t *la_config); - -vxge_hal_status_e -__hal_device_lag_ap_config_check(vxge_hal_lag_ap_config_t *ap_config); - -vxge_hal_status_e -__hal_device_lag_sl_config_check(vxge_hal_lag_sl_config_t *sl_config); - -vxge_hal_status_e -__hal_device_lag_lacp_config_check(vxge_hal_lag_lacp_config_t *lacp_config); - -vxge_hal_status_e -__hal_device_wire_port_config_check(vxge_hal_wire_port_config_t *port_config); - -vxge_hal_status_e -__hal_device_switch_port_config_check( - vxge_hal_switch_port_config_t *port_config); - - -vxge_hal_status_e -__hal_device_tim_intr_config_check(vxge_hal_tim_intr_config_t *tim_intr_config); - -vxge_hal_status_e -__hal_device_vpath_config_check(vxge_hal_vp_config_t *vp_config); - -vxge_hal_status_e -__hal_device_config_check(vxge_hal_device_config_t *new_config); - -__EXTERN_END_DECLS - -#endif /* XGEHAL_CONFIG_PRIV_H */ Index: sys/dev/vxge/vxgehal/vxgehal-config.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-config.c +++ sys/dev/vxge/vxgehal/vxgehal-config.c @@ -1,2925 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * vxge_hal_driver_config_check - Check driver configuration. - * @config: Driver configuration information - * - * Check the driver configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e {} enumerated error codes. - * - */ -vxge_hal_status_e -vxge_hal_driver_config_check(vxge_hal_driver_config_t *config) -{ - if (config->level > VXGE_TRACE) - return (VXGE_HAL_BADCFG_LOG_LEVEL); - return (VXGE_HAL_OK); -} - -/* - * __hal_device_wire_port_config_check - Check wire port configuration. - * @port_config: Port configuration information - * - * Check wire port configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_wire_port_config_check(vxge_hal_wire_port_config_t *port_config) -{ - if (port_config->port_id > VXGE_HAL_WIRE_PORT_MAX_PORTS) - return (VXGE_HAL_BADCFG_WIRE_PORT_PORT_ID); - - if ((port_config->media > VXGE_HAL_WIRE_PORT_MAX_MEDIA) && - (port_config->media != VXGE_HAL_WIRE_PORT_MEDIA_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_MAX_MEDIA); - - if (((port_config->mtu < VXGE_HAL_WIRE_PORT_MIN_INITIAL_MTU) || - (port_config->mtu > VXGE_HAL_WIRE_PORT_MAX_INITIAL_MTU)) && - (port_config->mtu != VXGE_HAL_WIRE_PORT_DEF_INITIAL_MTU)) - return (VXGE_HAL_BADCFG_WIRE_PORT_MAX_INITIAL_MTU); - - if ((port_config->autoneg_mode > - VXGE_HAL_WIRE_PORT_AUTONEG_MODE_RESERVED) && - (port_config->autoneg_mode != - VXGE_HAL_WIRE_PORT_AUTONEG_MODE_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_AUTONEG_MODE); - - if ((port_config->autoneg_rate > - VXGE_HAL_WIRE_PORT_AUTONEG_RATE_10G) && - (port_config->autoneg_rate != - VXGE_HAL_WIRE_PORT_AUTONEG_RATE_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_AUTONEG_RATE); - - if ((port_config->fixed_use_fsm != - VXGE_HAL_WIRE_PORT_FIXED_USE_FSM_PROCESSOR) && - (port_config->fixed_use_fsm != - VXGE_HAL_WIRE_PORT_FIXED_USE_FSM_HW) && - (port_config->fixed_use_fsm != - VXGE_HAL_WIRE_PORT_FIXED_USE_FSM_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_FIXED_USE_FSM); - - if ((port_config->antp_use_fsm != - VXGE_HAL_WIRE_PORT_ANTP_USE_FSM_PROCESSOR) && - (port_config->antp_use_fsm != - VXGE_HAL_WIRE_PORT_ANTP_USE_FSM_HW) && - (port_config->antp_use_fsm != - VXGE_HAL_WIRE_PORT_ANTP_USE_FSM_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_ANTP_USE_FSM); - - if ((port_config->anbe_use_fsm != - VXGE_HAL_WIRE_PORT_ANBE_USE_FSM_PROCESSOR) && - (port_config->anbe_use_fsm != - VXGE_HAL_WIRE_PORT_ANBE_USE_FSM_HW) && - (port_config->anbe_use_fsm != - VXGE_HAL_WIRE_PORT_ANBE_USE_FSM_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_ANBE_USE_FSM); - - if ((port_config->link_stability_period > - VXGE_HAL_WIRE_PORT_MAX_LINK_STABILITY_PERIOD) && - (port_config->link_stability_period != - VXGE_HAL_WIRE_PORT_DEF_LINK_STABILITY_PERIOD)) - return (VXGE_HAL_BADCFG_WIRE_PORT_LINK_STABILITY_PERIOD); - - if ((port_config->port_stability_period > - VXGE_HAL_WIRE_PORT_MAX_PORT_STABILITY_PERIOD) && - (port_config->port_stability_period != - VXGE_HAL_WIRE_PORT_DEF_PORT_STABILITY_PERIOD)) - return (VXGE_HAL_BADCFG_WIRE_PORT_PORT_STABILITY_PERIOD); - - if ((port_config->tmac_en != VXGE_HAL_WIRE_PORT_TMAC_ENABLE) && - (port_config->tmac_en != VXGE_HAL_WIRE_PORT_TMAC_DISABLE) && - (port_config->tmac_en != VXGE_HAL_WIRE_PORT_TMAC_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_TMAC_EN); - - if ((port_config->rmac_en != VXGE_HAL_WIRE_PORT_RMAC_ENABLE) && - (port_config->rmac_en != VXGE_HAL_WIRE_PORT_RMAC_DISABLE) && - (port_config->rmac_en != VXGE_HAL_WIRE_PORT_RMAC_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_EN); - - if ((port_config->tmac_pad != VXGE_HAL_WIRE_PORT_TMAC_NO_PAD) && - (port_config->tmac_pad != VXGE_HAL_WIRE_PORT_TMAC_64B_PAD) && - (port_config->tmac_pad != VXGE_HAL_WIRE_PORT_TMAC_PAD_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_TMAC_PAD); - - if ((port_config->tmac_pad_byte > - VXGE_HAL_WIRE_PORT_MAX_TMAC_PAD_BYTE) && - (port_config->tmac_pad_byte != - VXGE_HAL_WIRE_PORT_DEF_TMAC_PAD_BYTE)) - return (VXGE_HAL_BADCFG_WIRE_PORT_TMAC_PAD_BYTE); - - if ((port_config->tmac_util_period > - VXGE_HAL_WIRE_PORT_MAX_TMAC_UTIL_PERIOD) && - (port_config->tmac_util_period != - VXGE_HAL_WIRE_PORT_DEF_TMAC_UTIL_PERIOD)) - return (VXGE_HAL_BADCFG_WIRE_PORT_TMAC_UTIL_PERIOD); - - if ((port_config->rmac_strip_fcs != - VXGE_HAL_WIRE_PORT_RMAC_STRIP_FCS) && - (port_config->rmac_strip_fcs != - VXGE_HAL_WIRE_PORT_RMAC_SEND_FCS_TO_HOST) && - (port_config->rmac_strip_fcs != - VXGE_HAL_WIRE_PORT_RMAC_STRIP_FCS_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_STRIP_FCS); - - if ((port_config->rmac_prom_en != - VXGE_HAL_WIRE_PORT_RMAC_PROM_EN_ENABLE) && - (port_config->rmac_prom_en != - VXGE_HAL_WIRE_PORT_RMAC_PROM_EN_DISABLE) && - (port_config->rmac_prom_en != - VXGE_HAL_WIRE_PORT_RMAC_PROM_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PROM_EN); - - if ((port_config->rmac_discard_pfrm != - VXGE_HAL_WIRE_PORT_RMAC_DISCARD_PFRM) && - (port_config->rmac_discard_pfrm != - VXGE_HAL_WIRE_PORT_RMAC_SEND_PFRM_TO_HOST) && - (port_config->rmac_discard_pfrm != - VXGE_HAL_WIRE_PORT_RMAC_DISCARD_PFRM_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_DISCARD_PFRM); - - if ((port_config->rmac_util_period > - VXGE_HAL_WIRE_PORT_MAX_RMAC_UTIL_PERIOD) && - (port_config->rmac_util_period != - VXGE_HAL_WIRE_PORT_DEF_RMAC_UTIL_PERIOD)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_UTIL_PERIOD); - - if ((port_config->rmac_pause_gen_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_GEN_EN_ENABLE) && - (port_config->rmac_pause_gen_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_GEN_EN_DISABLE) && - (port_config->rmac_pause_gen_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_GEN_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_GEN_EN); - - if ((port_config->rmac_pause_rcv_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_RCV_EN_ENABLE) && - (port_config->rmac_pause_rcv_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_RCV_EN_DISABLE) && - (port_config->rmac_pause_rcv_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_RCV_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_RCV_EN); - - if (((port_config->rmac_pause_time < - VXGE_HAL_WIRE_PORT_MIN_RMAC_HIGH_PTIME) || - (port_config->rmac_pause_time > - VXGE_HAL_WIRE_PORT_MAX_RMAC_HIGH_PTIME)) && - (port_config->rmac_pause_time != - VXGE_HAL_WIRE_PORT_DEF_RMAC_HIGH_PTIME)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_HIGH_PTIME); - - if ((port_config->limiter_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_LIMITER_ENABLE) && - (port_config->limiter_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_LIMITER_DISABLE) && - (port_config->limiter_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_LIMITER_DEFAULT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_PAUSE_LIMITER_EN); - - if ((port_config->max_limit > VXGE_HAL_WIRE_PORT_MAX_RMAC_MAX_LIMIT) && - (port_config->max_limit != VXGE_HAL_WIRE_PORT_DEF_RMAC_MAX_LIMIT)) - return (VXGE_HAL_BADCFG_WIRE_PORT_RMAC_MAX_LIMIT); - - return (VXGE_HAL_OK); -} - - -/* - * __hal_device_switch_port_config_check - Check switch port configuration. - * @port_config: Port configuration information - * - * Check switch port configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_switch_port_config_check( - vxge_hal_switch_port_config_t *port_config) -{ - if (((port_config->mtu < VXGE_HAL_SWITCH_PORT_MIN_INITIAL_MTU) || - (port_config->mtu > VXGE_HAL_SWITCH_PORT_MAX_INITIAL_MTU)) && - (port_config->mtu != VXGE_HAL_SWITCH_PORT_DEF_INITIAL_MTU)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_MAX_INITIAL_MTU); - - if ((port_config->tmac_en != VXGE_HAL_SWITCH_PORT_TMAC_ENABLE) && - (port_config->tmac_en != VXGE_HAL_SWITCH_PORT_TMAC_DISABLE) && - (port_config->tmac_en != VXGE_HAL_SWITCH_PORT_TMAC_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_EN); - - if ((port_config->rmac_en != VXGE_HAL_SWITCH_PORT_RMAC_ENABLE) && - (port_config->rmac_en != VXGE_HAL_SWITCH_PORT_RMAC_DISABLE) && - (port_config->rmac_en != VXGE_HAL_SWITCH_PORT_RMAC_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_EN); - - if ((port_config->tmac_pad != VXGE_HAL_SWITCH_PORT_TMAC_NO_PAD) && - (port_config->tmac_pad != VXGE_HAL_SWITCH_PORT_TMAC_64B_PAD) && - (port_config->tmac_pad != VXGE_HAL_SWITCH_PORT_TMAC_PAD_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_PAD); - - if ((port_config->tmac_pad_byte > - VXGE_HAL_SWITCH_PORT_MAX_TMAC_PAD_BYTE) && - (port_config->tmac_pad_byte != - VXGE_HAL_SWITCH_PORT_DEF_TMAC_PAD_BYTE)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_PAD_BYTE); - - if ((port_config->tmac_util_period > - VXGE_HAL_SWITCH_PORT_MAX_TMAC_UTIL_PERIOD) && - (port_config->tmac_util_period != - VXGE_HAL_SWITCH_PORT_DEF_TMAC_UTIL_PERIOD)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_TMAC_UTIL_PERIOD); - - if ((port_config->rmac_strip_fcs != - VXGE_HAL_SWITCH_PORT_RMAC_STRIP_FCS) && - (port_config->rmac_strip_fcs != - VXGE_HAL_SWITCH_PORT_RMAC_SEND_FCS_TO_HOST) && - (port_config->rmac_strip_fcs != - VXGE_HAL_SWITCH_PORT_RMAC_STRIP_FCS_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_STRIP_FCS); - - if ((port_config->rmac_prom_en != - VXGE_HAL_SWITCH_PORT_RMAC_PROM_EN_ENABLE) && - (port_config->rmac_prom_en != - VXGE_HAL_SWITCH_PORT_RMAC_PROM_EN_DISABLE) && - (port_config->rmac_prom_en != - VXGE_HAL_SWITCH_PORT_RMAC_PROM_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PROM_EN); - - if ((port_config->rmac_discard_pfrm != - VXGE_HAL_SWITCH_PORT_RMAC_DISCARD_PFRM) && - (port_config->rmac_discard_pfrm != - VXGE_HAL_SWITCH_PORT_RMAC_SEND_PFRM_TO_HOST) && - (port_config->rmac_discard_pfrm != - VXGE_HAL_SWITCH_PORT_RMAC_DISCARD_PFRM_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_DISCARD_PFRM); - - if ((port_config->rmac_util_period > - VXGE_HAL_SWITCH_PORT_MAX_RMAC_UTIL_PERIOD) && - (port_config->rmac_util_period != - VXGE_HAL_SWITCH_PORT_DEF_RMAC_UTIL_PERIOD)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_UTIL_PERIOD); - - if ((port_config->rmac_pause_gen_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_GEN_EN_ENABLE) && - (port_config->rmac_pause_gen_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_GEN_EN_DISABLE) && - (port_config->rmac_pause_gen_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_GEN_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_GEN_EN); - - if ((port_config->rmac_pause_rcv_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_RCV_EN_ENABLE) && - (port_config->rmac_pause_rcv_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_RCV_EN_DISABLE) && - (port_config->rmac_pause_rcv_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_RCV_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_RCV_EN); - - if (((port_config->rmac_pause_time < - VXGE_HAL_SWITCH_PORT_MIN_RMAC_HIGH_PTIME) || - (port_config->rmac_pause_time > - VXGE_HAL_SWITCH_PORT_MAX_RMAC_HIGH_PTIME)) && - (port_config->rmac_pause_time != - VXGE_HAL_SWITCH_PORT_DEF_RMAC_HIGH_PTIME)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_HIGH_PTIME); - - if ((port_config->limiter_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_LIMITER_ENABLE) && - (port_config->limiter_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_LIMITER_DISABLE) && - (port_config->limiter_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_LIMITER_DEFAULT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_PAUSE_LIMITER_EN); - - if ((port_config->max_limit > - VXGE_HAL_SWITCH_PORT_MAX_RMAC_MAX_LIMIT) && - (port_config->max_limit != - VXGE_HAL_SWITCH_PORT_DEF_RMAC_MAX_LIMIT)) - return (VXGE_HAL_BADCFG_SWITCH_PORT_RMAC_MAX_LIMIT); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_mac_config_check - Check mac port configuration. - * @mac_config: MAC configuration information - * - * Check mac port configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_mac_config_check(vxge_hal_mac_config_t *mac_config) -{ - u32 i; - vxge_hal_status_e status; - - status = __hal_device_wire_port_config_check( - &mac_config->wire_port_config[0]); - - if (status != VXGE_HAL_OK) - return (status); - - status = __hal_device_wire_port_config_check( - &mac_config->wire_port_config[1]); - - if (status != VXGE_HAL_OK) - return (status); - - status = __hal_device_switch_port_config_check( - &mac_config->switch_port_config); - - if (status != VXGE_HAL_OK) - return (status); - - if ((mac_config->network_stability_period > - VXGE_HAL_MAC_MAX_NETWORK_STABILITY_PERIOD) && - (mac_config->network_stability_period != - VXGE_HAL_MAC_DEF_NETWORK_STABILITY_PERIOD)) - return (VXGE_HAL_BADCFG_MAC_NETWORK_STABILITY_PERIOD); - - for (i = 0; i < 16; i++) { - - if ((mac_config->mc_pause_threshold[i] > - VXGE_HAL_MAC_MAX_MC_PAUSE_THRESHOLD) && - (mac_config->mc_pause_threshold[i] != - VXGE_HAL_MAC_DEF_MC_PAUSE_THRESHOLD)) - return (VXGE_HAL_BADCFG_MAC_MC_PAUSE_THRESHOLD); - - } - - if ((mac_config->tmac_perma_stop_en != - VXGE_HAL_MAC_TMAC_PERMA_STOP_ENABLE) && - (mac_config->tmac_perma_stop_en != - VXGE_HAL_MAC_TMAC_PERMA_STOP_DISABLE) && - (mac_config->tmac_perma_stop_en != - VXGE_HAL_MAC_TMAC_PERMA_STOP_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_PERMA_STOP_EN); - - if ((mac_config->tmac_tx_switch_dis != - VXGE_HAL_MAC_TMAC_TX_SWITCH_ENABLE) && - (mac_config->tmac_tx_switch_dis != - VXGE_HAL_MAC_TMAC_TX_SWITCH_DISABLE) && - (mac_config->tmac_tx_switch_dis != - VXGE_HAL_MAC_TMAC_TX_SWITCH_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_TMAC_TX_SWITCH_DIS); - - if ((mac_config->tmac_lossy_switch_en != - VXGE_HAL_MAC_TMAC_LOSSY_SWITCH_ENABLE) && - (mac_config->tmac_lossy_switch_en != - VXGE_HAL_MAC_TMAC_LOSSY_SWITCH_DISABLE) && - (mac_config->tmac_lossy_switch_en != - VXGE_HAL_MAC_TMAC_LOSSY_SWITCH_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_TMAC_LOSSY_SWITCH_EN); - - if ((mac_config->tmac_lossy_wire_en != - VXGE_HAL_MAC_TMAC_LOSSY_WIRE_ENABLE) && - (mac_config->tmac_lossy_wire_en != - VXGE_HAL_MAC_TMAC_LOSSY_WIRE_DISABLE) && - (mac_config->tmac_lossy_wire_en != - VXGE_HAL_MAC_TMAC_LOSSY_WIRE_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_TMAC_LOSSY_WIRE_EN); - - if ((mac_config->tmac_bcast_to_wire_dis != - VXGE_HAL_MAC_TMAC_BCAST_TO_WIRE_DISABLE) && - (mac_config->tmac_bcast_to_wire_dis != - VXGE_HAL_MAC_TMAC_BCAST_TO_WIRE_ENABLE) && - (mac_config->tmac_bcast_to_wire_dis != - VXGE_HAL_MAC_TMAC_BCAST_TO_WIRE_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_TMAC_BCAST_TO_WIRE_DIS); - - if ((mac_config->tmac_bcast_to_switch_dis != - VXGE_HAL_MAC_TMAC_BCAST_TO_SWITCH_DISABLE) && - (mac_config->tmac_bcast_to_switch_dis != - VXGE_HAL_MAC_TMAC_BCAST_TO_SWITCH_ENABLE) && - (mac_config->tmac_bcast_to_switch_dis != - VXGE_HAL_MAC_TMAC_BCAST_TO_SWITCH_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_TMAC_BCAST_TO_SWITCH_DIS); - - if ((mac_config->tmac_host_append_fcs_en != - VXGE_HAL_MAC_TMAC_HOST_APPEND_FCS_ENABLE) && - (mac_config->tmac_host_append_fcs_en != - VXGE_HAL_MAC_TMAC_HOST_APPEND_FCS_DISABLE) && - (mac_config->tmac_host_append_fcs_en != - VXGE_HAL_MAC_TMAC_HOST_APPEND_FCS_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_TMAC_HOST_APPEND_FCS_EN); - - if ((mac_config->tpa_support_snap_ab_n != - VXGE_HAL_MAC_TPA_SUPPORT_SNAP_AB_N_LLC_SAP_AB) && - (mac_config->tpa_support_snap_ab_n != - VXGE_HAL_MAC_TPA_SUPPORT_SNAP_AB_N_LLC_SAP_AA) && - (mac_config->tpa_support_snap_ab_n != - VXGE_HAL_MAC_TPA_SUPPORT_SNAP_AB_N_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_TPA_SUPPORT_SNAP_AB_N); - - if ((mac_config->tpa_ecc_enable_n != - VXGE_HAL_MAC_TPA_ECC_ENABLE_N_ENABLE) && - (mac_config->tpa_ecc_enable_n != - VXGE_HAL_MAC_TPA_ECC_ENABLE_N_DISABLE) && - (mac_config->tpa_ecc_enable_n != - VXGE_HAL_MAC_TPA_ECC_ENABLE_N_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_TPA_ECC_ENABLE_N); - - if ((mac_config->rpa_ignore_frame_err != - VXGE_HAL_MAC_RPA_IGNORE_FRAME_ERR_ENABLE) && - (mac_config->rpa_ignore_frame_err != - VXGE_HAL_MAC_RPA_IGNORE_FRAME_ERR_DISABLE) && - (mac_config->rpa_ignore_frame_err != - VXGE_HAL_MAC_RPA_IGNORE_FRAME_ERR_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_IGNORE_FRAME_ERR); - - if ((mac_config->rpa_support_snap_ab_n != - VXGE_HAL_MAC_RPA_SUPPORT_SNAP_AB_N_ENABLE) && - (mac_config->rpa_support_snap_ab_n != - VXGE_HAL_MAC_RPA_SUPPORT_SNAP_AB_N_DISABLE) && - (mac_config->rpa_support_snap_ab_n != - VXGE_HAL_MAC_RPA_SUPPORT_SNAP_AB_N_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_SNAP_AB_N); - - if ((mac_config->rpa_search_for_hao != - VXGE_HAL_MAC_RPA_SEARCH_FOR_HAO_ENABLE) && - (mac_config->rpa_search_for_hao != - VXGE_HAL_MAC_RPA_SEARCH_FOR_HAO_DISABLE) && - (mac_config->rpa_search_for_hao != - VXGE_HAL_MAC_RPA_SEARCH_FOR_HAO_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_SEARCH_FOR_HAO); - - if ((mac_config->rpa_support_ipv6_mobile_hdrs != - VXGE_HAL_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS_ENABLE) && - (mac_config->rpa_support_ipv6_mobile_hdrs != - VXGE_HAL_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS_DISABLE) && - (mac_config->rpa_support_ipv6_mobile_hdrs != - VXGE_HAL_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS); - - if ((mac_config->rpa_ipv6_stop_searching != - VXGE_HAL_MAC_RPA_IPV6_STOP_SEARCHING) && - (mac_config->rpa_ipv6_stop_searching != - VXGE_HAL_MAC_RPA_IPV6_DONT_STOP_SEARCHING) && - (mac_config->rpa_ipv6_stop_searching != - VXGE_HAL_MAC_RPA_IPV6_STOP_SEARCHING_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_IPV6_STOP_SEARCHING); - - if ((mac_config->rpa_no_ps_if_unknown != - VXGE_HAL_MAC_RPA_NO_PS_IF_UNKNOWN_ENABLE) && - (mac_config->rpa_no_ps_if_unknown != - VXGE_HAL_MAC_RPA_NO_PS_IF_UNKNOWN_DISABLE) && - (mac_config->rpa_no_ps_if_unknown != - VXGE_HAL_MAC_RPA_NO_PS_IF_UNKNOWN_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_NO_PS_IF_UNKNOWN); - - if ((mac_config->rpa_search_for_etype != - VXGE_HAL_MAC_RPA_SEARCH_FOR_ETYPE_ENABLE) && - (mac_config->rpa_search_for_etype != - VXGE_HAL_MAC_RPA_SEARCH_FOR_ETYPE_DISABLE) && - (mac_config->rpa_search_for_etype != - VXGE_HAL_MAC_RPA_SEARCH_FOR_ETYPE_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_SEARCH_FOR_ETYPE); - - if ((mac_config->rpa_repl_l4_comp_csum != - VXGE_HAL_MAC_RPA_REPL_L4_COMP_CSUM_ENABLE) && - (mac_config->rpa_repl_l4_comp_csum != - VXGE_HAL_MAC_RPA_REPL_L4_COMP_CSUM_DISABLE) && - (mac_config->rpa_repl_l4_comp_csum != - VXGE_HAL_MAC_RPA_REPL_l4_COMP_CSUM_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_L4_COMP_CSUM); - - if ((mac_config->rpa_repl_l3_incl_cf != - VXGE_HAL_MAC_RPA_REPL_L3_INCL_CF_ENABLE) && - (mac_config->rpa_repl_l3_incl_cf != - VXGE_HAL_MAC_RPA_REPL_L3_INCL_CF_DISABLE) && - (mac_config->rpa_repl_l3_incl_cf != - VXGE_HAL_MAC_RPA_REPL_L3_INCL_CF_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_L3_INCL_CF); - - if ((mac_config->rpa_repl_l3_comp_csum != - VXGE_HAL_MAC_RPA_REPL_L3_COMP_CSUM_ENABLE) && - (mac_config->rpa_repl_l3_comp_csum != - VXGE_HAL_MAC_RPA_REPL_L3_COMP_CSUM_DISABLE) && - (mac_config->rpa_repl_l3_comp_csum != - VXGE_HAL_MAC_RPA_REPL_l3_COMP_CSUM_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_L3_COMP_CSUM); - - if ((mac_config->rpa_repl_ipv4_tcp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV4_TCP_INCL_PH_ENABLE) && - (mac_config->rpa_repl_ipv4_tcp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV4_TCP_INCL_PH_DISABLE) && - (mac_config->rpa_repl_ipv4_tcp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV4_TCP_INCL_PH_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV4_TCP_INCL_PH); - - if ((mac_config->rpa_repl_ipv6_tcp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV6_TCP_INCL_PH_ENABLE) && - (mac_config->rpa_repl_ipv6_tcp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV6_TCP_INCL_PH_DISABLE) && - (mac_config->rpa_repl_ipv6_tcp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV6_TCP_INCL_PH_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV6_TCP_INCL_PH); - - if ((mac_config->rpa_repl_ipv4_udp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV4_UDP_INCL_PH_ENABLE) && - (mac_config->rpa_repl_ipv4_udp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV4_UDP_INCL_PH_DISABLE) && - (mac_config->rpa_repl_ipv4_udp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV4_UDP_INCL_PH_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV4_UDP_INCL_PH); - - if ((mac_config->rpa_repl_ipv6_udp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV6_UDP_INCL_PH_ENABLE) && - (mac_config->rpa_repl_ipv6_udp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV6_UDP_INCL_PH_DISABLE) && - (mac_config->rpa_repl_ipv6_udp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV6_UDP_INCL_PH_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_IPV6_UDP_INCL_PH); - - if ((mac_config->rpa_repl_l4_incl_cf != - VXGE_HAL_MAC_RPA_REPL_L4_INCL_CF_ENABLE) && - (mac_config->rpa_repl_l4_incl_cf != - VXGE_HAL_MAC_RPA_REPL_L4_INCL_CF_DISABLE) && - (mac_config->rpa_repl_l4_incl_cf != - VXGE_HAL_MAC_RPA_REPL_L4_INCL_CF_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_L4_INCL_CF); - - if ((mac_config->rpa_repl_strip_vlan_tag != - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_ENABLE) && - (mac_config->rpa_repl_strip_vlan_tag != - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_DISABLE) && - (mac_config->rpa_repl_strip_vlan_tag != - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_DEFAULT)) - return (VXGE_HAL_BADCFG_MAC_RPA_REPL_STRIP_VLAN_TAG); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_lag_port_config_check - Check LAG port configuration. - * @aggr_config: LAG port configuration information - * - * Check LAG port configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_lag_port_config_check(vxge_hal_lag_port_config_t *port_config) -{ - if ((port_config->port_id != VXGE_HAL_LAG_PORT_PORT_ID_0) && - (port_config->port_id != VXGE_HAL_LAG_PORT_PORT_ID_1)) - return (VXGE_HAL_BADCFG_LAG_PORT_PORT_ID); - - if ((port_config->lag_en != - VXGE_HAL_LAG_PORT_LAG_EN_DISABLE) && - (port_config->lag_en != - VXGE_HAL_LAG_PORT_LAG_EN_ENABLE) && - (port_config->lag_en != - VXGE_HAL_LAG_PORT_LAG_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_LAG_EN); - - if ((port_config->discard_slow_proto != - VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_DISABLE) && - (port_config->discard_slow_proto != - VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_ENABLE) && - (port_config->discard_slow_proto != - VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_DISCARD_SLOW_PROTO); - - if ((port_config->host_chosen_aggr != - VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_0) && - (port_config->host_chosen_aggr != - VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_1) && - (port_config->host_chosen_aggr != - VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_HOST_CHOSEN_AGGR); - - if ((port_config->discard_unknown_slow_proto != - VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_DISABLE) && - (port_config->discard_unknown_slow_proto != - VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_ENABLE) && - (port_config->discard_unknown_slow_proto != - VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO); - - if ((port_config->actor_port_num > - VXGE_HAL_LAG_PORT_MAX_ACTOR_PORT_NUM) && - (port_config->actor_port_num != - VXGE_HAL_LAG_PORT_DEF_ACTOR_PORT_NUM)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_PORT_NUM); - - if ((port_config->actor_port_priority > - VXGE_HAL_LAG_PORT_MAX_ACTOR_PORT_PRIORITY) && - (port_config->actor_port_priority != - VXGE_HAL_LAG_PORT_DEF_ACTOR_PORT_PRIORITY)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_PORT_PRIORITY); - - if ((port_config->actor_key_10g > - VXGE_HAL_LAG_PORT_MAX_ACTOR_KEY_10G) && - (port_config->actor_key_10g != - VXGE_HAL_LAG_PORT_DEF_ACTOR_KEY_10G)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_KEY_10G); - - if ((port_config->actor_key_1g > VXGE_HAL_LAG_PORT_MAX_ACTOR_KEY_1G) && - (port_config->actor_key_1g != VXGE_HAL_LAG_PORT_DEF_ACTOR_KEY_1G)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_KEY_1G); - - if ((port_config->actor_lacp_activity != - VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_PASSIVE) && - (port_config->actor_lacp_activity != - VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_ACTIVE) && - (port_config->actor_lacp_activity != - VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_LACP_ACTIVITY); - - if ((port_config->actor_lacp_timeout != - VXGE_HAL_LAG_PORT_ACTOR_LACP_TIMEOUT_LONG) && - (port_config->actor_lacp_timeout != - VXGE_HAL_LAG_PORT_ACTOR_LACP_TIMEOUT_SHORT) && - (port_config->actor_lacp_timeout != - VXGE_HAL_LAG_PORT_ACTOR_LACP_TIMEOUT_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_LACP_TIMEOUT); - - if ((port_config->actor_aggregation != - VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_INDIVIDUAL) && - (port_config->actor_aggregation != - VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_AGGREGATEABLE) && - (port_config->actor_aggregation != - VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_AGGREGATION); - - if ((port_config->actor_synchronization != - VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_OUT_OF_SYNC) && - (port_config->actor_synchronization != - VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_IN_SYNC) && - (port_config->actor_synchronization != - VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_SYNCHRONIZATION); - - if ((port_config->actor_collecting != - VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_DISABLE) && - (port_config->actor_collecting != - VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_ENABLE) && - (port_config->actor_collecting != - VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_COLLECTING); - - if ((port_config->actor_distributing != - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_DISABLE) && - (port_config->actor_distributing != - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_ENABLE) && - (port_config->actor_distributing != - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_DISTRIBUTING); - - if ((port_config->actor_distributing != - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_DISABLE) && - (port_config->actor_distributing != - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_ENABLE) && - (port_config->actor_distributing != - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_DISTRIBUTING); - - if ((port_config->actor_defaulted != - VXGE_HAL_LAG_PORT_ACTOR_DEFAULTED) && - (port_config->actor_defaulted != - VXGE_HAL_LAG_PORT_ACTOR_NOT_DEFAULTED) && - (port_config->actor_defaulted != - VXGE_HAL_LAG_PORT_ACTOR_DEFAULTED_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_DEFAULTED); - - if ((port_config->actor_expired != - VXGE_HAL_LAG_PORT_ACTOR_EXPIRED) && - (port_config->actor_expired != - VXGE_HAL_LAG_PORT_ACTOR_NOT_EXPIRED) && - (port_config->actor_expired != - VXGE_HAL_LAG_PORT_ACTOR_EXPIRED_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_ACTOR_EXPIRED); - - if ((port_config->partner_sys_pri > - VXGE_HAL_LAG_PORT_MAX_PARTNER_SYS_PRI) && - (port_config->partner_sys_pri != - VXGE_HAL_LAG_PORT_DEF_PARTNER_SYS_PRI)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_SYS_PRI); - - if ((port_config->partner_key > VXGE_HAL_LAG_PORT_MAX_PARTNER_KEY) && - (port_config->partner_key != VXGE_HAL_LAG_PORT_DEF_PARTNER_KEY)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_KEY); - - if ((port_config->partner_port_num > - VXGE_HAL_LAG_PORT_MAX_PARTNER_PORT_NUM) && - (port_config->partner_port_num != - VXGE_HAL_LAG_PORT_DEF_PARTNER_PORT_NUM)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_NUM); - - if ((port_config->partner_port_priority > - VXGE_HAL_LAG_PORT_MAX_PARTNER_PORT_PRIORITY) && - (port_config->partner_port_priority != - VXGE_HAL_LAG_PORT_DEF_PARTNER_PORT_PRIORITY)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_PORT_PRIORITY); - - if ((port_config->partner_lacp_activity != - VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_PASSIVE) && - (port_config->partner_lacp_activity != - VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_ACTIVE) && - (port_config->partner_lacp_activity != - VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_LACP_ACTIVITY); - - if ((port_config->partner_lacp_timeout != - VXGE_HAL_LAG_PORT_PARTNER_LACP_TIMEOUT_LONG) && - (port_config->partner_lacp_timeout != - VXGE_HAL_LAG_PORT_PARTNER_LACP_TIMEOUT_SHORT) && - (port_config->partner_lacp_timeout != - VXGE_HAL_LAG_PORT_PARTNER_LACP_TIMEOUT_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_LACP_TIMEOUT); - - if ((port_config->partner_aggregation != - VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_INDIVIDUAL) && - (port_config->partner_aggregation != - VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_AGGREGATEABLE) && - (port_config->partner_aggregation != - VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_AGGREGATION); - - if ((port_config->partner_synchronization != - VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_OUT_OF_SYNC) && - (port_config->partner_synchronization != - VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_IN_SYNC) && - (port_config->partner_synchronization != - VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_SYNCHRONIZATION); - - if ((port_config->partner_collecting != - VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_DISABLE) && - (port_config->partner_collecting != - VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_ENABLE) && - (port_config->partner_collecting != - VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_COLLECTING); - - if ((port_config->partner_distributing != - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_DISABLE) && - (port_config->partner_distributing != - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_ENABLE) && - (port_config->partner_distributing != - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_DISTRIBUTING); - - if ((port_config->partner_distributing != - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_DISABLE) && - (port_config->partner_distributing != - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_ENABLE) && - (port_config->partner_distributing != - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_DISTRIBUTING); - - if ((port_config->partner_defaulted != - VXGE_HAL_LAG_PORT_PARTNER_DEFAULTED) && - (port_config->partner_defaulted != - VXGE_HAL_LAG_PORT_PARTNER_NOT_DEFAULTED) && - (port_config->partner_defaulted != - VXGE_HAL_LAG_PORT_PARTNER_DEFAULTED_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_DEFAULTED); - - if ((port_config->partner_expired != - VXGE_HAL_LAG_PORT_PARTNER_EXPIRED) && - (port_config->partner_expired != - VXGE_HAL_LAG_PORT_PARTNER_NOT_EXPIRED) && - (port_config->partner_expired != - VXGE_HAL_LAG_PORT_PARTNER_EXPIRED_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PORT_PARTNER_EXPIRED); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_lag_aggr_config_check - Check aggregator configuration. - * @aggr_config: Aggregator configuration information - * - * Check aggregator configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_lag_aggr_config_check(vxge_hal_lag_aggr_config_t *aggr_config) -{ - if ((aggr_config->aggr_id != VXGE_HAL_LAG_AGGR_AGGR_ID_1) && - (aggr_config->aggr_id != VXGE_HAL_LAG_AGGR_AGGR_ID_2)) - return (VXGE_HAL_BADCFG_LAG_AGGR_AGGR_ID); - - if ((aggr_config->use_port_mac_addr != - VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_DISBALE) && - (aggr_config->use_port_mac_addr != - VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_ENABLE) && - (aggr_config->use_port_mac_addr != - VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_AGGR_USE_PORT_MAC_ADDR); - - if ((aggr_config->mac_addr_sel != - VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_PORT_0) && - (aggr_config->mac_addr_sel != - VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_PORT_1) && - (aggr_config->mac_addr_sel != - VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_AGGR_MAC_ADDR_SEL); - - if ((aggr_config->admin_key > VXGE_HAL_LAG_AGGR_MAX_ADMIN_KEY) && - (aggr_config->admin_key != VXGE_HAL_LAG_AGGR_DEF_ADMIN_KEY)) - return (VXGE_HAL_BADCFG_LAG_AGGR_ADMIN_KEY); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_lag_la_config_check - * Check LAG link aggregation mode configuration. - * @la_config: LAG configuration information - * - * Check LAG link aggregation mode configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_lag_la_config_check(vxge_hal_lag_la_config_t *la_config) -{ - if ((la_config->tx_discard != VXGE_HAL_LAG_TX_DISCARD_DISBALE) && - (la_config->tx_discard != VXGE_HAL_LAG_TX_DISCARD_ENABLE) && - (la_config->tx_discard != VXGE_HAL_LAG_TX_DISCARD_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_TX_DISCARD); - - if ((la_config->distrib_alg_sel != - VXGE_HAL_LAG_DISTRIB_ALG_SEL_SRC_VPATH) && - (la_config->distrib_alg_sel != - VXGE_HAL_LAG_DISTRIB_ALG_SEL_DEST_MAC_ADDR) && - (la_config->distrib_alg_sel != - VXGE_HAL_LAG_DISTRIB_ALG_SEL_SRC_MAC_ADDR) && - (la_config->distrib_alg_sel != - VXGE_HAL_LAG_DISTRIB_ALG_SEL_BOTH_MAC_ADDR) && - (la_config->distrib_alg_sel != - VXGE_HAL_LAG_DISTRIB_ALG_SEL_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_DISTRIB_ALG_SEL); - - if ((la_config->distrib_remap_if_fail != - VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_DISBALE) && - (la_config->distrib_remap_if_fail != - VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_ENABLE) && - (la_config->distrib_remap_if_fail != - VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_DISTRIB_REMAP_IF_FAIL); - - if ((la_config->coll_max_delay > VXGE_HAL_LAG_MAX_COLL_MAX_DELAY) && - (la_config->coll_max_delay != VXGE_HAL_LAG_DEF_COLL_MAX_DELAY)) - return (VXGE_HAL_BADCFG_LAG_COLL_MAX_DELAY); - - if ((la_config->rx_discard != VXGE_HAL_LAG_RX_DISCARD_DISBALE) && - (la_config->rx_discard != VXGE_HAL_LAG_RX_DISCARD_ENABLE) && - (la_config->rx_discard != VXGE_HAL_LAG_RX_DISCARD_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_RX_DISCARD); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_lag_ap_config_check - Check LAG a/p mode configuration. - * @ap_config: LAG configuration information - * - * Check LAG a/p mode configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_lag_ap_config_check(vxge_hal_lag_ap_config_t *ap_config) -{ - if ((ap_config->hot_standby != - VXGE_HAL_LAG_HOT_STANDBY_DISBALE_PORT) && - (ap_config->hot_standby != - VXGE_HAL_LAG_HOT_STANDBY_KEEP_UP_PORT) && - (ap_config->hot_standby != - VXGE_HAL_LAG_HOT_STANDBY_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_HOT_STANDBY); - - if ((ap_config->lacp_decides != VXGE_HAL_LAG_LACP_DECIDES_DISBALE) && - (ap_config->lacp_decides != VXGE_HAL_LAG_LACP_DECIDES_ENBALE) && - (ap_config->lacp_decides != VXGE_HAL_LAG_LACP_DECIDES_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_LACP_DECIDES); - - if ((ap_config->pref_active_port != - VXGE_HAL_LAG_PREF_ACTIVE_PORT_0) && - (ap_config->pref_active_port != - VXGE_HAL_LAG_PREF_ACTIVE_PORT_1) && - (ap_config->pref_active_port != - VXGE_HAL_LAG_PREF_ACTIVE_PORT_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PREF_ACTIVE_PORT); - - if ((ap_config->auto_failback != VXGE_HAL_LAG_AUTO_FAILBACK_DISBALE) && - (ap_config->auto_failback != VXGE_HAL_LAG_AUTO_FAILBACK_ENBALE) && - (ap_config->auto_failback != VXGE_HAL_LAG_AUTO_FAILBACK_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_AUTO_FAILBACK); - - if ((ap_config->failback_en != VXGE_HAL_LAG_FAILBACK_EN_DISBALE) && - (ap_config->failback_en != VXGE_HAL_LAG_FAILBACK_EN_ENBALE) && - (ap_config->failback_en != VXGE_HAL_LAG_FAILBACK_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_FAILBACK_EN); - - if ((ap_config->cold_failover_timeout != - VXGE_HAL_LAG_MIN_COLD_FAILOVER_TIMEOUT) && - (ap_config->cold_failover_timeout != - VXGE_HAL_LAG_MAX_COLD_FAILOVER_TIMEOUT) && - (ap_config->cold_failover_timeout != - VXGE_HAL_LAG_DEF_COLD_FAILOVER_TIMEOUT)) - return (VXGE_HAL_BADCFG_LAG_COLD_FAILOVER_TIMEOUT); - - if ((ap_config->alt_admin_key != - VXGE_HAL_LAG_MIN_ALT_ADMIN_KEY) && - (ap_config->alt_admin_key != - VXGE_HAL_LAG_MAX_ALT_ADMIN_KEY) && - (ap_config->alt_admin_key != - VXGE_HAL_LAG_DEF_ALT_ADMIN_KEY)) - return (VXGE_HAL_BADCFG_LAG_ALT_ADMIN_KEY); - - if ((ap_config->alt_aggr != - VXGE_HAL_LAG_ALT_AGGR_0) && - (ap_config->alt_aggr != - VXGE_HAL_LAG_ALT_AGGR_1) && - (ap_config->alt_aggr != - VXGE_HAL_LAG_ALT_AGGR_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_ALT_AGGR); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_lag_sl_config_check - Check LAG Single Link mode configuration. - * @sl_config: LAG configuration information - * - * Check LAG Single link mode configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_lag_sl_config_check(vxge_hal_lag_sl_config_t *sl_config) -{ - if ((sl_config->pref_indiv_port != - VXGE_HAL_LAG_PREF_INDIV_PORT_0) && - (sl_config->pref_indiv_port != - VXGE_HAL_LAG_PREF_INDIV_PORT_1) && - (sl_config->pref_indiv_port != - VXGE_HAL_LAG_PREF_INDIV_PORT_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_PREF_INDIV_PORT); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_lag_lacp_config_check - Check LACP configuration. - * @lacp_config: LAG configuration information - * - * Check LACP configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_lag_lacp_config_check(vxge_hal_lag_lacp_config_t *lacp_config) -{ - if ((lacp_config->lacp_en != VXGE_HAL_LAG_LACP_EN_DISBALE) && - (lacp_config->lacp_en != VXGE_HAL_LAG_LACP_EN_ENABLE) && - (lacp_config->lacp_en != VXGE_HAL_LAG_LACP_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_LACP_EN); - - if ((lacp_config->lacp_begin != VXGE_HAL_LAG_LACP_BEGIN_NORMAL) && - (lacp_config->lacp_begin != VXGE_HAL_LAG_LACP_BEGIN_RESET) && - (lacp_config->lacp_begin != VXGE_HAL_LAG_LACP_BEGIN_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_LACP_BEGIN); - - if ((lacp_config->discard_lacp != VXGE_HAL_LAG_DISCARD_LACP_DISBALE) && - (lacp_config->discard_lacp != VXGE_HAL_LAG_DISCARD_LACP_ENABLE) && - (lacp_config->discard_lacp != VXGE_HAL_LAG_DISCARD_LACP_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_DISCARD_LACP); - - if ((lacp_config->liberal_len_chk != - VXGE_HAL_LAG_LIBERAL_LEN_CHK_DISBALE) && - (lacp_config->liberal_len_chk != - VXGE_HAL_LAG_LIBERAL_LEN_CHK_ENABLE) && - (lacp_config->liberal_len_chk != - VXGE_HAL_LAG_LIBERAL_LEN_CHK_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_LIBERAL_LEN_CHK); - - if ((lacp_config->marker_gen_recv_en != - VXGE_HAL_LAG_MARKER_GEN_RECV_EN_DISBALE) && - (lacp_config->marker_gen_recv_en != - VXGE_HAL_LAG_MARKER_GEN_RECV_EN_ENABLE) && - (lacp_config->marker_gen_recv_en != - VXGE_HAL_LAG_MARKER_GEN_RECV_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_MARKER_GEN_RECV_EN); - - if ((lacp_config->marker_resp_en != - VXGE_HAL_LAG_MARKER_RESP_EN_DISBALE) && - (lacp_config->marker_resp_en != - VXGE_HAL_LAG_MARKER_RESP_EN_ENABLE) && - (lacp_config->marker_resp_en != - VXGE_HAL_LAG_MARKER_RESP_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_MARKER_RESP_EN); - - if ((lacp_config->marker_resp_timeout != - VXGE_HAL_LAG_MIN_MARKER_RESP_TIMEOUT) && - (lacp_config->marker_resp_timeout != - VXGE_HAL_LAG_MAX_MARKER_RESP_TIMEOUT) && - (lacp_config->marker_resp_timeout != - VXGE_HAL_LAG_DEF_MARKER_RESP_TIMEOUT)) - return (VXGE_HAL_BADCFG_LAG_MARKER_RESP_TIMEOUT); - - if ((lacp_config->slow_proto_mrkr_min_interval != - VXGE_HAL_LAG_MIN_SLOW_PROTO_MRKR_MIN_INTERVAL) && - (lacp_config->slow_proto_mrkr_min_interval != - VXGE_HAL_LAG_MAX_SLOW_PROTO_MRKR_MIN_INTERVAL) && - (lacp_config->slow_proto_mrkr_min_interval != - VXGE_HAL_LAG_DEF_SLOW_PROTO_MRKR_MIN_INTERVAL)) - return (VXGE_HAL_BADCFG_LAG_SLOW_PROTO_MRKR_MIN_INTERVAL); - - if ((lacp_config->throttle_mrkr_resp != - VXGE_HAL_LAG_THROTTLE_MRKR_RESP_DISBALE) && - (lacp_config->throttle_mrkr_resp != - VXGE_HAL_LAG_THROTTLE_MRKR_RESP_ENABLE) && - (lacp_config->throttle_mrkr_resp != - VXGE_HAL_LAG_THROTTLE_MRKR_RESP_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_THROTTLE_MRKR_RESP); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_lag_config_check - Check link aggregation configuration. - * @lag_config: LAG configuration information - * - * Check link aggregation configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_lag_config_check(vxge_hal_lag_config_t *lag_config) -{ - u32 i; - vxge_hal_status_e status; - - if ((lag_config->lag_en != VXGE_HAL_LAG_LAG_EN_DISABLE) && - (lag_config->lag_en != VXGE_HAL_LAG_LAG_EN_ENABLE) && - (lag_config->lag_en != VXGE_HAL_LAG_LAG_EN_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_LAG_EN); - - if ((lag_config->lag_mode != VXGE_HAL_LAG_LAG_MODE_LAG) && - (lag_config->lag_mode != - VXGE_HAL_LAG_LAG_MODE_ACTIVE_PASSIVE_FAILOVER) && - (lag_config->lag_mode != VXGE_HAL_LAG_LAG_MODE_SINGLE_LINK) && - (lag_config->lag_mode != VXGE_HAL_LAG_LAG_MODE_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_LAG_MODE); - - status = __hal_device_lag_la_config_check(&lag_config->la_mode_config); - if (status == VXGE_HAL_OK) - return (status); - - status = __hal_device_lag_ap_config_check(&lag_config->ap_mode_config); - if (status == VXGE_HAL_OK) - return (status); - - status = __hal_device_lag_sl_config_check(&lag_config->sl_mode_config); - if (status == VXGE_HAL_OK) - return (status); - - status = __hal_device_lag_lacp_config_check(&lag_config->lacp_config); - if (status == VXGE_HAL_OK) - return (status); - - if ((lag_config->incr_tx_aggr_stats != - VXGE_HAL_LAG_INCR_TX_AGGR_STATS_DISBALE) && - (lag_config->incr_tx_aggr_stats != - VXGE_HAL_LAG_INCR_TX_AGGR_STATS_ENABLE) && - (lag_config->incr_tx_aggr_stats != - VXGE_HAL_LAG_INCR_TX_AGGR_STATS_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_TX_AGGR_STATS); - - for (i = 0; i < VXGE_HAL_LAG_PORT_MAX_PORTS; i++) { - - if ((status = __hal_device_lag_port_config_check( - &lag_config->port_config[i])) != VXGE_HAL_OK) - return (status); - - } - - for (i = 0; i < VXGE_HAL_LAG_AGGR_MAX_PORTS; i++) { - - if ((status = __hal_device_lag_aggr_config_check( - &lag_config->aggr_config[i])) != VXGE_HAL_OK) - return (status); - - } - - if ((lag_config->sys_pri > VXGE_HAL_LAG_MAX_SYS_PRI) && - (lag_config->sys_pri != VXGE_HAL_LAG_DEF_SYS_PRI)) - return (VXGE_HAL_BADCFG_LAG_SYS_PRI); - - if ((lag_config->use_port_mac_addr != - VXGE_HAL_LAG_USE_PORT_MAC_ADDR_DISBALE) && - (lag_config->use_port_mac_addr != - VXGE_HAL_LAG_USE_PORT_MAC_ADDR_ENABLE) && - (lag_config->use_port_mac_addr != - VXGE_HAL_LAG_USE_PORT_MAC_ADDR_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_USE_PORT_MAC_ADDR); - - if ((lag_config->mac_addr_sel != - VXGE_HAL_LAG_MAC_ADDR_SEL_PORT_0) && - (lag_config->mac_addr_sel != - VXGE_HAL_LAG_MAC_ADDR_SEL_PORT_1) && - (lag_config->mac_addr_sel != - VXGE_HAL_LAG_MAC_ADDR_SEL_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_MAC_ADDR_SEL); - - if ((lag_config->fast_per_time > VXGE_HAL_LAG_MAX_FAST_PER_TIME) && - (lag_config->fast_per_time != VXGE_HAL_LAG_DEF_FAST_PER_TIME)) - return (VXGE_HAL_BADCFG_LAG_FAST_PER_TIME); - - if ((lag_config->slow_per_time > VXGE_HAL_LAG_MAX_SLOW_PER_TIME) && - (lag_config->slow_per_time != VXGE_HAL_LAG_DEF_SLOW_PER_TIME)) - return (VXGE_HAL_BADCFG_LAG_SLOW_PER_TIME); - - if ((lag_config->short_timeout > VXGE_HAL_LAG_MAX_SHORT_TIMEOUT) && - (lag_config->short_timeout != VXGE_HAL_LAG_DEF_SHORT_TIMEOUT)) - return (VXGE_HAL_BADCFG_LAG_SHORT_TIMEOUT); - - if ((lag_config->long_timeout > VXGE_HAL_LAG_MAX_LONG_TIMEOUT) && - (lag_config->long_timeout != VXGE_HAL_LAG_DEF_LONG_TIMEOUT)) - return (VXGE_HAL_BADCFG_LAG_LONG_TIMEOUT); - - if ((lag_config->churn_det_time > VXGE_HAL_LAG_MAX_CHURN_DET_TIME) && - (lag_config->churn_det_time != VXGE_HAL_LAG_DEF_CHURN_DET_TIME)) - return (VXGE_HAL_BADCFG_LAG_CHURN_DET_TIME); - - if ((lag_config->aggr_wait_time > VXGE_HAL_LAG_MAX_AGGR_WAIT_TIME) && - (lag_config->aggr_wait_time != VXGE_HAL_LAG_DEF_AGGR_WAIT_TIME)) - return (VXGE_HAL_BADCFG_LAG_AGGR_WAIT_TIME); - - if ((lag_config->short_timer_scale != - VXGE_HAL_LAG_SHORT_TIMER_SCALE_1X) && - (lag_config->short_timer_scale != - VXGE_HAL_LAG_SHORT_TIMER_SCALE_10X) && - (lag_config->short_timer_scale != - VXGE_HAL_LAG_SHORT_TIMER_SCALE_100X) && - (lag_config->short_timer_scale != - VXGE_HAL_LAG_SHORT_TIMER_SCALE_1000X) && - (lag_config->short_timer_scale != - VXGE_HAL_LAG_SHORT_TIMER_SCALE_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_SHORT_TIMER_SCALE); - - if ((lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_1X) && - (lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_10X) && - (lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_100X) && - (lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_1000X) && - (lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_10000X) && - (lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_100000X) && - (lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_1000000X) && - (lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_DEFAULT)) - return (VXGE_HAL_BADCFG_LAG_LONG_TIMER_SCALE); - - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_qos_config_check - Check vpath QOS configuration. - * @config: Vpath QOS configuration information - * - * Check the vpath QOS configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e {} enumerated error codes. - * - */ -vxge_hal_status_e -__hal_vpath_qos_config_check(vxge_hal_vpath_qos_config_t *config) -{ - if ((config->priority > VXGE_HAL_VPATH_QOS_PRIORITY_MAX) && - (config->priority != VXGE_HAL_VPATH_QOS_PRIORITY_DEFAULT)) - return (VXGE_HAL_BADCFG_VPATH_QOS_PRIORITY); - - if ((config->min_bandwidth > - VXGE_HAL_VPATH_QOS_MIN_BANDWIDTH_MAX) && - (config->min_bandwidth != - VXGE_HAL_VPATH_QOS_MIN_BANDWIDTH_DEFAULT)) - return (VXGE_HAL_BADCFG_VPATH_QOS_MIN_BANDWIDTH); - - if ((config->max_bandwidth > - VXGE_HAL_VPATH_QOS_MAX_BANDWIDTH_MAX) && - (config->max_bandwidth != - VXGE_HAL_VPATH_QOS_MAX_BANDWIDTH_DEFAULT)) - return (VXGE_HAL_BADCFG_VPATH_QOS_MAX_BANDWIDTH); - - return (VXGE_HAL_OK); -} - -/* - * __hal_mrpcim_config_check - Check mrpcim configuration. - * @config: mrpcim configuration information - * - * Check the mrpcim configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e {} enumerated error codes. - * - */ -vxge_hal_status_e -__hal_mrpcim_config_check(vxge_hal_mrpcim_config_t *config) -{ - u32 i; - vxge_hal_status_e status = VXGE_HAL_OK; - - if ((status = __hal_device_mac_config_check(&config->mac_config)) != - VXGE_HAL_OK) - return (status); - - if ((status = __hal_device_lag_config_check(&config->lag_config)) != - VXGE_HAL_OK) - return (status); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if ((status = __hal_vpath_qos_config_check( - &config->vp_qos[i])) != VXGE_HAL_OK) - return (status); - - } - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_ring_config_check - Check ring configuration. - * @ring_config: Device configuration information - * - * Check the ring configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e {} enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_ring_config_check(vxge_hal_ring_config_t *ring_config) -{ - if ((ring_config->enable != VXGE_HAL_RING_ENABLE) && - (ring_config->enable != VXGE_HAL_RING_DISABLE)) - return (VXGE_HAL_BADCFG_RING_ENABLE); - - if ((ring_config->ring_length < VXGE_HAL_MIN_RING_LENGTH) || - (ring_config->ring_length > VXGE_HAL_MAX_RING_LENGTH)) - return (VXGE_HAL_BADCFG_RING_LENGTH); - - if ((ring_config->buffer_mode < VXGE_HAL_RING_RXD_BUFFER_MODE_1) || - (ring_config->buffer_mode > VXGE_HAL_RING_RXD_BUFFER_MODE_5)) - return (VXGE_HAL_BADCFG_RING_RXD_BUFFER_MODE); - - if ((ring_config->scatter_mode != VXGE_HAL_RING_SCATTER_MODE_A) && - (ring_config->scatter_mode != VXGE_HAL_RING_SCATTER_MODE_B) && - (ring_config->scatter_mode != VXGE_HAL_RING_SCATTER_MODE_C) && - (ring_config->scatter_mode != - VXGE_HAL_RING_SCATTER_MODE_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_RING_SCATTER_MODE); - - if ((ring_config->post_mode != VXGE_HAL_RING_POST_MODE_LEGACY) && - (ring_config->post_mode != VXGE_HAL_RING_POST_MODE_DOORBELL) && - (ring_config->post_mode != - VXGE_HAL_RING_POST_MODE_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_RING_POST_MODE); - - if ((ring_config->max_frm_len > VXGE_HAL_MAX_RING_MAX_FRM_LEN) && - (ring_config->max_frm_len != VXGE_HAL_MAX_RING_FRM_LEN_USE_MTU)) - return (VXGE_HAL_BADCFG_RING_MAX_FRM_LEN); - - if ((ring_config->no_snoop_bits > VXGE_HAL_RING_NO_SNOOP_ALL) && - (ring_config->no_snoop_bits != - VXGE_HAL_RING_NO_SNOOP_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_RING_NO_SNOOP_ALL); - - if ((ring_config->rx_timer_val > VXGE_HAL_RING_MAX_RX_TIMER_VAL) && - (ring_config->rx_timer_val != - VXGE_HAL_RING_USE_FLASH_DEFAULT_RX_TIMER_VAL)) - return (VXGE_HAL_BADCFG_RING_TIMER_VAL); - - if ((ring_config->greedy_return != - VXGE_HAL_RING_GREEDY_RETURN_ENABLE) && - (ring_config->greedy_return != - VXGE_HAL_RING_GREEDY_RETURN_DISABLE) && - (ring_config->greedy_return != - VXGE_HAL_RING_GREEDY_RETURN_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_RING_GREEDY_RETURN); - - if ((ring_config->rx_timer_ci != - VXGE_HAL_RING_RX_TIMER_CI_ENABLE) && - (ring_config->rx_timer_ci != - VXGE_HAL_RING_RX_TIMER_CI_DISABLE) && - (ring_config->rx_timer_ci != - VXGE_HAL_RING_RX_TIMER_CI_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_RING_TIMER_CI); - - if (((ring_config->backoff_interval_us < - VXGE_HAL_MIN_BACKOFF_INTERVAL_US) || - (ring_config->backoff_interval_us > - VXGE_HAL_MAX_BACKOFF_INTERVAL_US)) && - (ring_config->backoff_interval_us != - VXGE_HAL_USE_FLASH_DEFAULT_BACKOFF_INTERVAL_US)) - return (VXGE_HAL_BADCFG_RING_BACKOFF_INTERVAL_US); - - if ((ring_config->indicate_max_pkts < - VXGE_HAL_MIN_RING_INDICATE_MAX_PKTS) || - (ring_config->indicate_max_pkts > - VXGE_HAL_MAX_RING_INDICATE_MAX_PKTS)) - return (VXGE_HAL_BADCFG_RING_INDICATE_MAX_PKTS); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_fifo_config_check - Check fifo configuration. - * @fifo_config: Fifo configuration information - * - * Check the fifo configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e {} enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_fifo_config_check(vxge_hal_fifo_config_t *fifo_config) -{ - if ((fifo_config->enable != VXGE_HAL_FIFO_ENABLE) && - (fifo_config->enable != VXGE_HAL_FIFO_DISABLE)) - return (VXGE_HAL_BADCFG_FIFO_ENABLE); - - if ((fifo_config->fifo_length < VXGE_HAL_MIN_FIFO_LENGTH) || - (fifo_config->fifo_length > VXGE_HAL_MAX_FIFO_LENGTH)) - return (VXGE_HAL_BADCFG_FIFO_LENGTH); - - if ((fifo_config->max_frags < VXGE_HAL_MIN_FIFO_FRAGS) || - (fifo_config->max_frags > VXGE_HAL_MAX_FIFO_FRAGS)) - return (VXGE_HAL_BADCFG_FIFO_FRAGS); - - if (fifo_config->alignment_size > VXGE_HAL_MAX_FIFO_ALIGNMENT_SIZE) - return (VXGE_HAL_BADCFG_FIFO_ALIGNMENT_SIZE); - - if (fifo_config->max_aligned_frags > fifo_config->max_frags) - return (VXGE_HAL_BADCFG_FIFO_MAX_FRAGS); - - if ((fifo_config->intr != VXGE_HAL_FIFO_QUEUE_INTR_ENABLE) && - (fifo_config->intr != VXGE_HAL_FIFO_QUEUE_INTR_DISABLE)) - return (VXGE_HAL_BADCFG_FIFO_QUEUE_INTR); - - if (fifo_config->no_snoop_bits > VXGE_HAL_FIFO_NO_SNOOP_ALL) - return (VXGE_HAL_BADCFG_FIFO_NO_SNOOP_ALL); - - return (VXGE_HAL_OK); -} - - -/* - * __hal_device_tim_intr_config_check - Check tim intr configuration. - * @tim_intr_config: tim intr configuration information - * - * Check the tim intr configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e {} enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_tim_intr_config_check(vxge_hal_tim_intr_config_t *tim_intr_config) -{ - if ((tim_intr_config->intr_enable != VXGE_HAL_TIM_INTR_ENABLE) && - (tim_intr_config->intr_enable != VXGE_HAL_TIM_INTR_DISABLE)) - return (VXGE_HAL_BADCFG_TIM_INTR_ENABLE); - - if ((tim_intr_config->btimer_val > - VXGE_HAL_MAX_TIM_BTIMER_VAL) && - (tim_intr_config->btimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_BTIMER_VAL)) - return (VXGE_HAL_BADCFG_TIM_BTIMER_VAL); - - if ((tim_intr_config->timer_ac_en != - VXGE_HAL_TIM_TIMER_AC_ENABLE) && - (tim_intr_config->timer_ac_en != - VXGE_HAL_TIM_TIMER_AC_DISABLE) && - (tim_intr_config->timer_ac_en != - VXGE_HAL_TIM_TIMER_AC_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_TIM_TIMER_AC_EN); - - if ((tim_intr_config->timer_ci_en != - VXGE_HAL_TIM_TIMER_CI_ENABLE) && - (tim_intr_config->timer_ci_en != - VXGE_HAL_TIM_TIMER_CI_DISABLE) && - (tim_intr_config->timer_ci_en != - VXGE_HAL_TIM_TIMER_CI_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_TIM_TIMER_CI_EN); - - if ((tim_intr_config->timer_ri_en != - VXGE_HAL_TIM_TIMER_RI_ENABLE) && - (tim_intr_config->timer_ri_en != - VXGE_HAL_TIM_TIMER_RI_DISABLE) && - (tim_intr_config->timer_ri_en != - VXGE_HAL_TIM_TIMER_RI_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_TIM_TIMER_RI_EN); - - if ((tim_intr_config->rtimer_event_sf > - VXGE_HAL_MAX_TIM_RTIMER_EVENT_SF) && - (tim_intr_config->rtimer_event_sf != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_EVENT_SF)) - return (VXGE_HAL_BADCFG_TIM_BTIMER_EVENT_SF); - - if ((tim_intr_config->rtimer_val > - VXGE_HAL_MAX_TIM_RTIMER_VAL) && - (tim_intr_config->rtimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_VAL)) - return (VXGE_HAL_BADCFG_TIM_RTIMER_VAL); - - if ((((tim_intr_config->util_sel > 19) && - (tim_intr_config->util_sel < 32)) || - ((tim_intr_config->util_sel > 48) && - (tim_intr_config->util_sel < 63))) && - (tim_intr_config->util_sel != - VXGE_HAL_TIM_UTIL_SEL_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_TIM_UTIL_SEL); - - if ((tim_intr_config->ltimer_val > - VXGE_HAL_MAX_TIM_LTIMER_VAL) && - (tim_intr_config->ltimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_LTIMER_VAL)) - return (VXGE_HAL_BADCFG_TIM_LTIMER_VAL); - - if ((tim_intr_config->txfrm_cnt_en != - VXGE_HAL_TXFRM_CNT_EN_ENABLE) && - (tim_intr_config->txfrm_cnt_en != - VXGE_HAL_TXFRM_CNT_EN_DISABLE) && - (tim_intr_config->txfrm_cnt_en != - VXGE_HAL_TXFRM_CNT_EN_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_TXFRM_CNT_EN); - - if ((tim_intr_config->txd_cnt_en != - VXGE_HAL_TXD_CNT_EN_ENABLE) && - (tim_intr_config->txd_cnt_en != - VXGE_HAL_TXD_CNT_EN_DISABLE) && - (tim_intr_config->txd_cnt_en != - VXGE_HAL_TXD_CNT_EN_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_TXD_CNT_EN); - - if ((tim_intr_config->urange_a > - VXGE_HAL_MAX_TIM_URANGE_A) && - (tim_intr_config->urange_a != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_A)) - return (VXGE_HAL_BADCFG_TIM_URANGE_A); - - if ((tim_intr_config->uec_a > - VXGE_HAL_MAX_TIM_UEC_A) && - (tim_intr_config->uec_a != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_A)) - return (VXGE_HAL_BADCFG_TIM_UEC_A); - - if ((tim_intr_config->urange_b > - VXGE_HAL_MAX_TIM_URANGE_B) && - (tim_intr_config->urange_b != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_B)) - return (VXGE_HAL_BADCFG_TIM_URANGE_B); - - if ((tim_intr_config->uec_b > - VXGE_HAL_MAX_TIM_UEC_B) && - (tim_intr_config->uec_b != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_B)) - return (VXGE_HAL_BADCFG_TIM_UEC_B); - - if ((tim_intr_config->urange_c > - VXGE_HAL_MAX_TIM_URANGE_C) && - (tim_intr_config->urange_c != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_C)) - return (VXGE_HAL_BADCFG_TIM_URANGE_C); - - if ((tim_intr_config->uec_c > - VXGE_HAL_MAX_TIM_UEC_C) && - (tim_intr_config->uec_c != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_C)) - return (VXGE_HAL_BADCFG_TIM_UEC_C); - - if ((tim_intr_config->uec_d > - VXGE_HAL_MAX_TIM_UEC_D) && - (tim_intr_config->uec_d != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_D)) - return (VXGE_HAL_BADCFG_TIM_UEC_D); - - if (((tim_intr_config->ufca_intr_thres < - VXGE_HAL_MIN_UFCA_INTR_THRES) || - (tim_intr_config->ufca_intr_thres > - VXGE_HAL_MAX_UFCA_INTR_THRES)) && - (tim_intr_config->ufca_intr_thres != - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_INTR_THRES)) - return (VXGE_HAL_BADCFG_UFCA_INTR_THRES); - - if (((tim_intr_config->ufca_lo_lim < - VXGE_HAL_MIN_UFCA_LO_LIM) || - (tim_intr_config->ufca_lo_lim > - VXGE_HAL_MAX_UFCA_LO_LIM)) && - (tim_intr_config->ufca_lo_lim != - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_LO_LIM)) - return (VXGE_HAL_BADCFG_UFCA_LO_LIM); - - if (((tim_intr_config->ufca_hi_lim < - VXGE_HAL_MIN_UFCA_HI_LIM) || - (tim_intr_config->ufca_hi_lim > - VXGE_HAL_MAX_UFCA_HI_LIM)) && - (tim_intr_config->ufca_hi_lim != - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_HI_LIM)) - return (VXGE_HAL_BADCFG_UFCA_HI_LIM); - - if (((tim_intr_config->ufca_lbolt_period < - VXGE_HAL_MIN_UFCA_LBOLT_PERIOD) || - (tim_intr_config->ufca_lbolt_period > - VXGE_HAL_MAX_UFCA_LBOLT_PERIOD)) && - (tim_intr_config->ufca_lbolt_period != - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_LBOLT_PERIOD)) - return (VXGE_HAL_BADCFG_UFCA_LBOLT_PERIOD); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_vpath_config_check - Check vpath configuration. - * @vp_config: Vpath configuration information - * - * Check the vpath configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e {} enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_vpath_config_check(vxge_hal_vp_config_t *vp_config) -{ - vxge_hal_status_e status; - - if (vp_config->vp_id > VXGE_HAL_MAX_VIRTUAL_PATHS) - return (VXGE_HAL_BADCFG_VPATH_ID); - - if ((vp_config->wire_port != VXGE_HAL_VPATH_USE_PORT0) && - (vp_config->wire_port != VXGE_HAL_VPATH_USE_PORT1) && - (vp_config->wire_port != VXGE_HAL_VPATH_USE_BOTH) && - (vp_config->wire_port != VXGE_HAL_VPATH_USE_DEFAULT_PORT)) - return (VXGE_HAL_BADCFG_VPATH_WIRE_PORT); - - if ((vp_config->priority != VXGE_HAL_VPATH_PRIORITY_DEFAULT) && - (((int)vp_config->priority < VXGE_HAL_VPATH_PRIORITY_MIN) || - (vp_config->priority > VXGE_HAL_VPATH_PRIORITY_MAX))) - return (VXGE_HAL_BADCFG_VPATH_PRIORITY); - - if ((vp_config->bandwidth != VXGE_HAL_VPATH_BW_LIMIT_DEFAULT) && - ((vp_config->bandwidth < VXGE_HAL_VPATH_BW_LIMIT_MIN) || - (vp_config->bandwidth > VXGE_HAL_VPATH_BW_LIMIT_MAX))) - return (VXGE_HAL_BADCFG_VPATH_BANDWIDTH_LIMIT); - - if ((vp_config->no_snoop != VXGE_HAL_VPATH_NO_SNOOP_ENABLE) && - (vp_config->no_snoop != VXGE_HAL_VPATH_NO_SNOOP_DISABLE) && - (vp_config->no_snoop != VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_VPATH_NO_SNOOP); - - status = __hal_device_ring_config_check(&vp_config->ring); - if (status != VXGE_HAL_OK) - return (status); - - status = __hal_device_fifo_config_check(&vp_config->fifo); - if (status != VXGE_HAL_OK) - return (status); - - - status = __hal_device_tim_intr_config_check(&vp_config->tti); - if (status != VXGE_HAL_OK) - return (status); - - status = __hal_device_tim_intr_config_check(&vp_config->rti); - if (status != VXGE_HAL_OK) - return (status); - - if ((vp_config->mtu != VXGE_HAL_VPATH_USE_FLASH_DEFAULT_INITIAL_MTU) && - ((vp_config->mtu < VXGE_HAL_VPATH_MIN_INITIAL_MTU) || - (vp_config->mtu > VXGE_HAL_VPATH_MAX_INITIAL_MTU))) - return (VXGE_HAL_BADCFG_VPATH_MTU); - - if ((vp_config->tpa_lsov2_en != - VXGE_HAL_VPATH_TPA_LSOV2_EN_USE_FLASH_DEFAULT) && - (vp_config->tpa_lsov2_en != - VXGE_HAL_VPATH_TPA_LSOV2_EN_ENABLE) && - (vp_config->tpa_lsov2_en != - VXGE_HAL_VPATH_TPA_LSOV2_EN_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_TPA_LSOV2_EN); - - if ((vp_config->tpa_ignore_frame_error != - VXGE_HAL_VPATH_TPA_IGNORE_FRAME_ERROR_USE_FLASH_DEFAULT) && - (vp_config->tpa_ignore_frame_error != - VXGE_HAL_VPATH_TPA_IGNORE_FRAME_ERROR_ENABLE) && - (vp_config->tpa_ignore_frame_error != - VXGE_HAL_VPATH_TPA_IGNORE_FRAME_ERROR_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_TPA_IGNORE_FRAME_ERROR); - - if ((vp_config->tpa_ipv6_keep_searching != - VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_USE_FLASH_DEFAULT) && - (vp_config->tpa_ipv6_keep_searching != - VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_ENABLE) && - (vp_config->tpa_ipv6_keep_searching != - VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_TPA_IPV6_KEEP_SEARCHING); - - if ((vp_config->tpa_l4_pshdr_present != - VXGE_HAL_VPATH_TPA_L4_PSHDR_PRESENT_USE_FLASH_DEFAULT) && - (vp_config->tpa_l4_pshdr_present != - VXGE_HAL_VPATH_TPA_L4_PSHDR_PRESENT_ENABLE) && - (vp_config->tpa_l4_pshdr_present != - VXGE_HAL_VPATH_TPA_L4_PSHDR_PRESENT_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_TPA_L4_PSHDR_PRESENT); - - if ((vp_config->tpa_support_mobile_ipv6_hdrs != - VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_USE_FLASH_DEFAULT) && - (vp_config->tpa_support_mobile_ipv6_hdrs != - VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_ENABLE) && - (vp_config->tpa_support_mobile_ipv6_hdrs != - VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS); - - if ((vp_config->rpa_ipv4_tcp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV4_TCP_INCL_PH_USE_FLASH_DEFAULT) && - (vp_config->rpa_ipv4_tcp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV4_TCP_INCL_PH_ENABLE) && - (vp_config->rpa_ipv4_tcp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV4_TCP_INCL_PH_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_IPV4_TCP_INCL_PH); - - if ((vp_config->rpa_ipv6_tcp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV6_TCP_INCL_PH_USE_FLASH_DEFAULT) && - (vp_config->rpa_ipv6_tcp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV6_TCP_INCL_PH_ENABLE) && - (vp_config->rpa_ipv6_tcp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV6_TCP_INCL_PH_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_IPV6_TCP_INCL_PH); - - if ((vp_config->rpa_ipv4_udp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV4_UDP_INCL_PH_USE_FLASH_DEFAULT) && - (vp_config->rpa_ipv4_udp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV4_UDP_INCL_PH_ENABLE) && - (vp_config->rpa_ipv4_udp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV4_UDP_INCL_PH_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_IPV4_UDP_INCL_PH); - - if ((vp_config->rpa_ipv6_udp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV6_UDP_INCL_PH_USE_FLASH_DEFAULT) && - (vp_config->rpa_ipv6_udp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV6_UDP_INCL_PH_ENABLE) && - (vp_config->rpa_ipv6_udp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV6_UDP_INCL_PH_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_IPV4_UDP_INCL_PH); - - if ((vp_config->rpa_l4_incl_cf != - VXGE_HAL_VPATH_RPA_L4_INCL_CF_USE_FLASH_DEFAULT) && - (vp_config->rpa_l4_incl_cf != - VXGE_HAL_VPATH_RPA_L4_INCL_CF_ENABLE) && - (vp_config->rpa_l4_incl_cf != - VXGE_HAL_VPATH_RPA_L4_INCL_CF_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_L4_INCL_CF); - - if ((vp_config->rpa_strip_vlan_tag != - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_USE_FLASH_DEFAULT) && - (vp_config->rpa_strip_vlan_tag != - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_ENABLE) && - (vp_config->rpa_strip_vlan_tag != - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_STRIP_VLAN_TAG); - - if ((vp_config->rpa_l4_comp_csum != - VXGE_HAL_VPATH_RPA_L4_COMP_CSUM_USE_FLASH_DEFAULT) && - (vp_config->rpa_l4_comp_csum != - VXGE_HAL_VPATH_RPA_L4_COMP_CSUM_ENABLE) && - (vp_config->rpa_l4_comp_csum != - VXGE_HAL_VPATH_RPA_L4_COMP_CSUM_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_L4_COMP_CSUM); - - if ((vp_config->rpa_l3_incl_cf != - VXGE_HAL_VPATH_RPA_L3_INCL_CF_USE_FLASH_DEFAULT) && - (vp_config->rpa_l3_incl_cf != - VXGE_HAL_VPATH_RPA_L3_INCL_CF_ENABLE) && - (vp_config->rpa_l3_incl_cf != - VXGE_HAL_VPATH_RPA_L3_INCL_CF_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_L3_INCL_CF); - - if ((vp_config->rpa_l3_comp_csum != - VXGE_HAL_VPATH_RPA_L3_COMP_CSUM_USE_FLASH_DEFAULT) && - (vp_config->rpa_l3_comp_csum != - VXGE_HAL_VPATH_RPA_L3_COMP_CSUM_ENABLE) && - (vp_config->rpa_l3_comp_csum != - VXGE_HAL_VPATH_RPA_L3_COMP_CSUM_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_L3_COMP_CSUM); - - if ((vp_config->rpa_ucast_all_addr_en != - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_USE_FLASH_DEFAULT) && - (vp_config->rpa_ucast_all_addr_en != - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_ENABLE) && - (vp_config->rpa_ucast_all_addr_en != - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_UCAST_ALL_ADDR_EN); - - if ((vp_config->rpa_mcast_all_addr_en != - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_USE_FLASH_DEFAULT) && - (vp_config->rpa_mcast_all_addr_en != - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_ENABLE) && - (vp_config->rpa_mcast_all_addr_en != - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_MCAST_ALL_ADDR_EN); - - if ((vp_config->rpa_bcast_en != - VXGE_HAL_VPATH_RPA_BCAST_USE_FLASH_DEFAULT) && - (vp_config->rpa_bcast_en != - VXGE_HAL_VPATH_RPA_BCAST_ENABLE) && - (vp_config->rpa_bcast_en != - VXGE_HAL_VPATH_RPA_BCAST_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_CAST_EN); - - if ((vp_config->rpa_all_vid_en != - VXGE_HAL_VPATH_RPA_ALL_VID_USE_FLASH_DEFAULT) && - (vp_config->rpa_all_vid_en != - VXGE_HAL_VPATH_RPA_ALL_VID_ENABLE) && - (vp_config->rpa_all_vid_en != - VXGE_HAL_VPATH_RPA_ALL_VID_DISABLE)) - return (VXGE_HAL_BADCFG_VPATH_RPA_ALL_VID_EN); - - if ((vp_config->vp_queue_l2_flow != - VXGE_HAL_VPATH_VP_Q_L2_FLOW_ENABLE) && - (vp_config->vp_queue_l2_flow != - VXGE_HAL_VPATH_VP_Q_L2_FLOW_DISABLE) && - (vp_config->vp_queue_l2_flow != - VXGE_HAL_VPATH_VP_Q_L2_FLOW_USE_FLASH_DEFAULT)) - return (VXGE_HAL_BADCFG_VPATH_VP_Q_L2_FLOW); - - return (VXGE_HAL_OK); -} - -/* - * __hal_device_config_check - Check device configuration. - * @new_config: Device configuration information - * - * Check the device configuration - * - * Returns: VXGE_HAL_OK - success, - * otherwise one of the vxge_hal_status_e {} enumerated error codes. - * - */ -vxge_hal_status_e -__hal_device_config_check(vxge_hal_device_config_t *new_config) -{ - u32 i; - vxge_hal_status_e status; - - if (new_config->dma_blockpool_incr < - VXGE_HAL_INCR_DMA_BLOCK_POOL_SIZE) - return (VXGE_HAL_BADCFG_BLOCKPOOL_INCR); - - if (new_config->dma_blockpool_max < - VXGE_HAL_MAX_DMA_BLOCK_POOL_SIZE) - return (VXGE_HAL_BADCFG_BLOCKPOOL_MAX); - - if ((status = __hal_mrpcim_config_check(&new_config->mrpcim_config)) != - VXGE_HAL_OK) - return (status); - - if (new_config->isr_polling_cnt > VXGE_HAL_MAX_ISR_POLLING_CNT) - return (VXGE_HAL_BADCFG_ISR_POLLING_CNT); - - if ((new_config->max_payload_size > - VXGE_HAL_MAX_PAYLOAD_SIZE_4096) && - (new_config->max_payload_size != - VXGE_HAL_USE_BIOS_DEFAULT_PAYLOAD_SIZE)) - return (VXGE_HAL_BADCFG_MAX_PAYLOAD_SIZE); - - if ((new_config->mmrb_count > VXGE_HAL_MMRB_COUNT_4096) && - (new_config->mmrb_count != VXGE_HAL_USE_BIOS_DEFAULT_MMRB_COUNT)) - return (VXGE_HAL_BADCFG_MAX_PAYLOAD_SIZE); - - if (((new_config->stats_refresh_time_sec < - VXGE_HAL_MIN_STATS_REFRESH_TIME) || - (new_config->stats_refresh_time_sec > - VXGE_HAL_MAX_STATS_REFRESH_TIME)) && - (new_config->stats_refresh_time_sec != - VXGE_HAL_STATS_REFRESH_DISABLE)) - return (VXGE_HAL_BADCFG_STATS_REFRESH_TIME); - - if ((new_config->intr_mode != VXGE_HAL_INTR_MODE_IRQLINE) && - (new_config->intr_mode != VXGE_HAL_INTR_MODE_MSIX) && - (new_config->intr_mode != VXGE_HAL_INTR_MODE_MSIX_ONE_SHOT) && - (new_config->intr_mode != VXGE_HAL_INTR_MODE_EMULATED_INTA) && - (new_config->intr_mode != VXGE_HAL_INTR_MODE_DEF)) - return (VXGE_HAL_BADCFG_INTR_MODE); - - if ((new_config->dump_on_unknown != - VXGE_HAL_DUMP_ON_UNKNOWN_DISABLE) && - (new_config->dump_on_unknown != - VXGE_HAL_DUMP_ON_UNKNOWN_ENABLE)) - return (VXGE_HAL_BADCFG_DUMP_ON_UNKNOWN); - - if ((new_config->dump_on_serr != VXGE_HAL_DUMP_ON_SERR_DISABLE) && - (new_config->dump_on_serr != VXGE_HAL_DUMP_ON_SERR_ENABLE)) - return (VXGE_HAL_BADCFG_DUMP_ON_SERR); - - if ((new_config->dump_on_critical != - VXGE_HAL_DUMP_ON_CRITICAL_DISABLE) && - (new_config->dump_on_critical != - VXGE_HAL_DUMP_ON_CRITICAL_ENABLE)) - return (VXGE_HAL_BADCFG_DUMP_ON_CRITICAL); - - if ((new_config->dump_on_eccerr != VXGE_HAL_DUMP_ON_ECCERR_DISABLE) && - (new_config->dump_on_eccerr != VXGE_HAL_DUMP_ON_ECCERR_ENABLE)) - return (VXGE_HAL_BADCFG_DUMP_ON_ECCERR); - - if ((new_config->rth_en != VXGE_HAL_RTH_DISABLE) && - (new_config->rth_en != VXGE_HAL_RTH_ENABLE)) - return (VXGE_HAL_BADCFG_RTH_EN); - - if ((new_config->rth_it_type != VXGE_HAL_RTH_IT_TYPE_SOLO_IT) && - (new_config->rth_it_type != VXGE_HAL_RTH_IT_TYPE_MULTI_IT)) - return (VXGE_HAL_BADCFG_RTH_IT_TYPE); - - if ((new_config->rts_mac_en != VXGE_HAL_RTS_MAC_DISABLE) && - (new_config->rts_mac_en != VXGE_HAL_RTS_MAC_ENABLE)) - return (VXGE_HAL_BADCFG_RTS_MAC_EN); - - if ((new_config->rts_qos_en != VXGE_HAL_RTS_QOS_DISABLE) && - (new_config->rts_qos_en != VXGE_HAL_RTS_QOS_ENABLE)) - return (VXGE_HAL_BADCFG_RTS_QOS_EN); - - if ((new_config->rts_port_en != VXGE_HAL_RTS_PORT_DISABLE) && - (new_config->rts_port_en != VXGE_HAL_RTS_PORT_ENABLE)) - return (VXGE_HAL_BADCFG_RTS_PORT_EN); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - if ((status = __hal_device_vpath_config_check( - &new_config->vp_config[i])) != VXGE_HAL_OK) - return (status); - } - - if ((new_config->max_cqe_groups < VXGE_HAL_MIN_MAX_CQE_GROUPS) || - (new_config->max_cqe_groups > VXGE_HAL_MAX_MAX_CQE_GROUPS)) - return (VXGE_HAL_BADCFG_MAX_CQE_GROUPS); - - if ((new_config->max_num_wqe_od_groups < - VXGE_HAL_MIN_MAX_NUM_OD_GROUPS) || - (new_config->max_num_wqe_od_groups > - VXGE_HAL_MAX_MAX_NUM_OD_GROUPS)) - return (VXGE_HAL_BADCFG_MAX_NUM_OD_GROUPS); - - if ((new_config->no_wqe_threshold < VXGE_HAL_MIN_NO_WQE_THRESHOLD) || - (new_config->no_wqe_threshold > VXGE_HAL_MAX_NO_WQE_THRESHOLD)) - return (VXGE_HAL_BADCFG_NO_WQE_THRESHOLD); - - if ((new_config->refill_threshold_high < - VXGE_HAL_MIN_REFILL_THRESHOLD_HIGH) || - (new_config->refill_threshold_high > - VXGE_HAL_MAX_REFILL_THRESHOLD_HIGH)) - return (VXGE_HAL_BADCFG_REFILL_THRESHOLD_HIGH); - - if ((new_config->refill_threshold_low < - VXGE_HAL_MIN_REFILL_THRESHOLD_LOW) || - (new_config->refill_threshold_low > - VXGE_HAL_MAX_REFILL_THRESHOLD_LOW)) - return (VXGE_HAL_BADCFG_REFILL_THRESHOLD_LOW); - - if ((new_config->ack_blk_limit < VXGE_HAL_MIN_ACK_BLOCK_LIMIT) || - (new_config->ack_blk_limit > VXGE_HAL_MAX_ACK_BLOCK_LIMIT)) - return (VXGE_HAL_BADCFG_ACK_BLOCK_LIMIT); - - if ((new_config->stats_read_method != - VXGE_HAL_STATS_READ_METHOD_DMA) && - (new_config->stats_read_method != - VXGE_HAL_STATS_READ_METHOD_PIO)) - return (VXGE_HAL_BADCFG_STATS_READ_METHOD); - - if ((new_config->poll_or_doorbell != - VXGE_HAL_POLL_OR_DOORBELL_POLL) && - (new_config->poll_or_doorbell != - VXGE_HAL_POLL_OR_DOORBELL_DOORBELL)) - return (VXGE_HAL_BADCFG_POLL_OR_DOOR_BELL); - - if ((new_config->device_poll_millis < - VXGE_HAL_MIN_DEVICE_POLL_MILLIS) || - (new_config->device_poll_millis > - VXGE_HAL_MAX_DEVICE_POLL_MILLIS)) - return (VXGE_HAL_BADCFG_DEVICE_POLL_MILLIS); - - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_device_config_default_get - Initialize device config with defaults. - * @device_config: Configuration structure to be initialized, - * For the X3100 configuration "knobs" please - * refer to vxge_hal_device_config_t and X3100 - * User Guide. - * - * Initialize X3100 device config with default values. - * - * See also: vxge_hal_device_initialize(), vxge_hal_device_terminate(), - * vxge_hal_status_e {} vxge_hal_device_attr_t {}. - */ -vxge_hal_status_e -vxge_hal_device_config_default_get( - vxge_hal_device_config_t *device_config) -{ - u32 i; - vxge_hal_mac_config_t *mac_config; - vxge_hal_wire_port_config_t *wire_port_config; - vxge_hal_switch_port_config_t *switch_port_config; - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver("device_config = 0x"VXGE_OS_STXFMT, - (ptr_t) device_config); - - device_config->dma_blockpool_min = VXGE_HAL_MIN_DMA_BLOCK_POOL_SIZE; - device_config->dma_blockpool_initial = - VXGE_HAL_INITIAL_DMA_BLOCK_POOL_SIZE; - device_config->dma_blockpool_incr = VXGE_HAL_INCR_DMA_BLOCK_POOL_SIZE; - device_config->dma_blockpool_max = VXGE_HAL_MAX_DMA_BLOCK_POOL_SIZE; - - mac_config = &device_config->mrpcim_config.mac_config; - - for (i = 0; i < VXGE_HAL_MAC_MAX_WIRE_PORTS; i++) { - - wire_port_config = &mac_config->wire_port_config[i]; - - wire_port_config->port_id = i; - - wire_port_config->media = VXGE_HAL_WIRE_PORT_MEDIA_DEFAULT; - - wire_port_config->mtu = VXGE_HAL_WIRE_PORT_DEF_INITIAL_MTU; - - wire_port_config->autoneg_mode = - VXGE_HAL_WIRE_PORT_AUTONEG_MODE_DEFAULT; - - wire_port_config->autoneg_rate = - VXGE_HAL_WIRE_PORT_AUTONEG_RATE_DEFAULT; - - wire_port_config->fixed_use_fsm = - VXGE_HAL_WIRE_PORT_FIXED_USE_FSM_DEFAULT; - - wire_port_config->antp_use_fsm = - VXGE_HAL_WIRE_PORT_ANTP_USE_FSM_DEFAULT; - - wire_port_config->anbe_use_fsm = - VXGE_HAL_WIRE_PORT_ANBE_USE_FSM_DEFAULT; - - wire_port_config->link_stability_period = - VXGE_HAL_WIRE_PORT_DEF_LINK_STABILITY_PERIOD; - - wire_port_config->port_stability_period = - VXGE_HAL_WIRE_PORT_DEF_PORT_STABILITY_PERIOD; - - wire_port_config->tmac_en = - VXGE_HAL_WIRE_PORT_TMAC_DEFAULT; - - wire_port_config->rmac_en = - VXGE_HAL_WIRE_PORT_RMAC_DEFAULT; - - wire_port_config->tmac_pad = - VXGE_HAL_WIRE_PORT_TMAC_PAD_DEFAULT; - - wire_port_config->tmac_pad_byte = - VXGE_HAL_WIRE_PORT_DEF_TMAC_PAD_BYTE; - - wire_port_config->tmac_util_period = - VXGE_HAL_WIRE_PORT_DEF_TMAC_UTIL_PERIOD; - - wire_port_config->rmac_strip_fcs = - VXGE_HAL_WIRE_PORT_RMAC_STRIP_FCS_DEFAULT; - - wire_port_config->rmac_prom_en = - VXGE_HAL_WIRE_PORT_RMAC_PROM_EN_DEFAULT; - - wire_port_config->rmac_discard_pfrm = - VXGE_HAL_WIRE_PORT_RMAC_DISCARD_PFRM_DEFAULT; - - wire_port_config->rmac_util_period = - VXGE_HAL_WIRE_PORT_DEF_RMAC_UTIL_PERIOD; - - wire_port_config->rmac_pause_gen_en = - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_GEN_EN_DEFAULT; - - wire_port_config->rmac_pause_rcv_en = - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_RCV_EN_DEFAULT; - - wire_port_config->rmac_pause_time = - VXGE_HAL_WIRE_PORT_DEF_RMAC_HIGH_PTIME; - - wire_port_config->limiter_en = - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_LIMITER_DEFAULT; - - wire_port_config->max_limit = - VXGE_HAL_WIRE_PORT_DEF_RMAC_MAX_LIMIT; - } - - switch_port_config = &mac_config->switch_port_config; - - switch_port_config->mtu = - VXGE_HAL_SWITCH_PORT_DEF_INITIAL_MTU; - - switch_port_config->tmac_en = - VXGE_HAL_SWITCH_PORT_TMAC_DEFAULT; - - switch_port_config->rmac_en = - VXGE_HAL_SWITCH_PORT_RMAC_DEFAULT; - - switch_port_config->tmac_pad = - VXGE_HAL_SWITCH_PORT_TMAC_PAD_DEFAULT; - - switch_port_config->tmac_pad_byte = - VXGE_HAL_SWITCH_PORT_DEF_TMAC_PAD_BYTE; - - switch_port_config->tmac_util_period = - VXGE_HAL_SWITCH_PORT_DEF_TMAC_UTIL_PERIOD; - - switch_port_config->rmac_strip_fcs = - VXGE_HAL_SWITCH_PORT_RMAC_STRIP_FCS_DEFAULT; - - switch_port_config->rmac_prom_en = - VXGE_HAL_SWITCH_PORT_RMAC_PROM_EN_DEFAULT; - - switch_port_config->rmac_discard_pfrm = - VXGE_HAL_SWITCH_PORT_RMAC_DISCARD_PFRM_DEFAULT; - - switch_port_config->rmac_util_period = - VXGE_HAL_SWITCH_PORT_DEF_RMAC_UTIL_PERIOD; - - switch_port_config->rmac_pause_gen_en = - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_GEN_EN_DEFAULT; - - switch_port_config->rmac_pause_rcv_en = - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_RCV_EN_DEFAULT; - - switch_port_config->rmac_pause_time = - VXGE_HAL_SWITCH_PORT_DEF_RMAC_HIGH_PTIME; - - switch_port_config->limiter_en = - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_LIMITER_DEFAULT; - - switch_port_config->max_limit = - VXGE_HAL_SWITCH_PORT_DEF_RMAC_MAX_LIMIT; - - mac_config->network_stability_period = - VXGE_HAL_MAC_DEF_NETWORK_STABILITY_PERIOD; - - for (i = 0; i < 16; i++) { - - mac_config->mc_pause_threshold[i] = - VXGE_HAL_MAC_DEF_MC_PAUSE_THRESHOLD; - - } - - mac_config->tmac_perma_stop_en = - VXGE_HAL_MAC_TMAC_PERMA_STOP_DEFAULT; - - mac_config->tmac_tx_switch_dis = - VXGE_HAL_MAC_TMAC_TX_SWITCH_DEFAULT; - - mac_config->tmac_lossy_switch_en = - VXGE_HAL_MAC_TMAC_LOSSY_SWITCH_DEFAULT; - - mac_config->tmac_lossy_wire_en = - VXGE_HAL_MAC_TMAC_LOSSY_WIRE_DEFAULT; - - mac_config->tmac_bcast_to_wire_dis = - VXGE_HAL_MAC_TMAC_BCAST_TO_WIRE_DEFAULT; - - mac_config->tmac_bcast_to_switch_dis = - VXGE_HAL_MAC_TMAC_BCAST_TO_SWITCH_DEFAULT; - - mac_config->tmac_host_append_fcs_en = - VXGE_HAL_MAC_TMAC_HOST_APPEND_FCS_DEFAULT; - - mac_config->tpa_support_snap_ab_n = - VXGE_HAL_MAC_TPA_SUPPORT_SNAP_AB_N_DEFAULT; - - mac_config->tpa_ecc_enable_n = - VXGE_HAL_MAC_TPA_ECC_ENABLE_N_DEFAULT; - - mac_config->rpa_ignore_frame_err = - VXGE_HAL_MAC_RPA_IGNORE_FRAME_ERR_DEFAULT; - - mac_config->rpa_support_snap_ab_n = - VXGE_HAL_MAC_RPA_SUPPORT_SNAP_AB_N_DEFAULT; - - mac_config->rpa_search_for_hao = - VXGE_HAL_MAC_RPA_SEARCH_FOR_HAO_DEFAULT; - - mac_config->rpa_support_ipv6_mobile_hdrs = - VXGE_HAL_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS_DEFAULT; - - mac_config->rpa_ipv6_stop_searching = - VXGE_HAL_MAC_RPA_IPV6_STOP_SEARCHING_DEFAULT; - - mac_config->rpa_no_ps_if_unknown = - VXGE_HAL_MAC_RPA_NO_PS_IF_UNKNOWN_DEFAULT; - - mac_config->rpa_search_for_etype = - VXGE_HAL_MAC_RPA_SEARCH_FOR_ETYPE_DEFAULT; - - mac_config->rpa_repl_l4_comp_csum = - VXGE_HAL_MAC_RPA_REPL_l4_COMP_CSUM_DEFAULT; - - mac_config->rpa_repl_l3_incl_cf = - VXGE_HAL_MAC_RPA_REPL_L3_INCL_CF_DEFAULT; - - mac_config->rpa_repl_l3_comp_csum = - VXGE_HAL_MAC_RPA_REPL_l3_COMP_CSUM_DEFAULT; - - mac_config->rpa_repl_ipv4_tcp_incl_ph = - VXGE_HAL_MAC_RPA_REPL_IPV4_TCP_INCL_PH_DEFAULT; - - mac_config->rpa_repl_ipv6_tcp_incl_ph = - VXGE_HAL_MAC_RPA_REPL_IPV6_TCP_INCL_PH_DEFAULT; - - mac_config->rpa_repl_ipv4_udp_incl_ph = - VXGE_HAL_MAC_RPA_REPL_IPV4_UDP_INCL_PH_DEFAULT; - - mac_config->rpa_repl_ipv6_udp_incl_ph = - VXGE_HAL_MAC_RPA_REPL_IPV6_UDP_INCL_PH_DEFAULT; - - mac_config->rpa_repl_l4_incl_cf = - VXGE_HAL_MAC_RPA_REPL_L4_INCL_CF_DEFAULT; - - mac_config->rpa_repl_strip_vlan_tag = - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_DEFAULT; - - device_config->mrpcim_config.lag_config.lag_en = - VXGE_HAL_LAG_LAG_EN_DEFAULT; - - device_config->mrpcim_config.lag_config.lag_mode = - VXGE_HAL_LAG_LAG_MODE_DEFAULT; - - device_config->mrpcim_config.lag_config.la_mode_config.tx_discard = - VXGE_HAL_LAG_TX_DISCARD_DEFAULT; - - device_config->mrpcim_config.lag_config.la_mode_config.distrib_alg_sel = - VXGE_HAL_LAG_DISTRIB_ALG_SEL_DEFAULT; - - device_config->mrpcim_config.lag_config.la_mode_config.distrib_dest = - VXGE_HAL_LAG_DISTRIB_DEST_DEFAULT; - - device_config-> - mrpcim_config.lag_config.la_mode_config.distrib_remap_if_fail = - VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_DEFAULT; - - device_config->mrpcim_config.lag_config.la_mode_config.coll_max_delay = - VXGE_HAL_LAG_DEF_COLL_MAX_DELAY; - - device_config->mrpcim_config.lag_config.la_mode_config.rx_discard = - VXGE_HAL_LAG_RX_DISCARD_DEFAULT; - - device_config->mrpcim_config.lag_config.ap_mode_config.hot_standby = - VXGE_HAL_LAG_HOT_STANDBY_DEFAULT; - - device_config->mrpcim_config.lag_config.ap_mode_config.lacp_decides = - VXGE_HAL_LAG_LACP_DECIDES_DEFAULT; - - device_config-> - mrpcim_config.lag_config.ap_mode_config.pref_active_port = - VXGE_HAL_LAG_PREF_ACTIVE_PORT_DEFAULT; - - device_config->mrpcim_config.lag_config.ap_mode_config.auto_failback = - VXGE_HAL_LAG_AUTO_FAILBACK_DEFAULT; - - device_config->mrpcim_config.lag_config.ap_mode_config.failback_en = - VXGE_HAL_LAG_FAILBACK_EN_DEFAULT; - - device_config-> - mrpcim_config.lag_config.ap_mode_config.cold_failover_timeout = - VXGE_HAL_LAG_DEF_COLD_FAILOVER_TIMEOUT; - - device_config->mrpcim_config.lag_config.ap_mode_config.alt_admin_key = - VXGE_HAL_LAG_DEF_ALT_ADMIN_KEY; - - device_config->mrpcim_config.lag_config.ap_mode_config.alt_aggr = - VXGE_HAL_LAG_ALT_AGGR_DEFAULT; - - device_config->mrpcim_config.lag_config.sl_mode_config.pref_indiv_port = - VXGE_HAL_LAG_PREF_INDIV_PORT_DEFAULT; - - device_config->mrpcim_config.lag_config.lacp_config.lacp_en = - VXGE_HAL_LAG_LACP_EN_DEFAULT; - - device_config->mrpcim_config.lag_config.lacp_config.lacp_begin = - VXGE_HAL_LAG_LACP_BEGIN_DEFAULT; - - device_config->mrpcim_config.lag_config.lacp_config.discard_lacp = - VXGE_HAL_LAG_DISCARD_LACP_DEFAULT; - - device_config->mrpcim_config.lag_config.lacp_config.liberal_len_chk = - VXGE_HAL_LAG_LIBERAL_LEN_CHK_DEFAULT; - - device_config->mrpcim_config.lag_config.lacp_config.marker_gen_recv_en = - VXGE_HAL_LAG_MARKER_GEN_RECV_EN_DEFAULT; - - device_config->mrpcim_config.lag_config.lacp_config.marker_resp_en = - VXGE_HAL_LAG_MARKER_RESP_EN_DEFAULT; - - device_config-> - mrpcim_config.lag_config.lacp_config.marker_resp_timeout = - VXGE_HAL_LAG_DEF_MARKER_RESP_TIMEOUT; - - device_config-> - mrpcim_config.lag_config.lacp_config.slow_proto_mrkr_min_interval = - VXGE_HAL_LAG_DEF_SLOW_PROTO_MRKR_MIN_INTERVAL; - - device_config->mrpcim_config.lag_config.lacp_config.throttle_mrkr_resp = - VXGE_HAL_LAG_THROTTLE_MRKR_RESP_DEFAULT; - - device_config->mrpcim_config.lag_config.incr_tx_aggr_stats = - VXGE_HAL_LAG_INCR_TX_AGGR_STATS_DEFAULT; - - for (i = 0; i < VXGE_HAL_LAG_PORT_MAX_PORTS; i++) { - - vxge_hal_lag_port_config_t *port_config = - &device_config->mrpcim_config.lag_config.port_config[i]; - - port_config->port_id = i; - - port_config->lag_en = VXGE_HAL_LAG_PORT_LAG_EN_DEFAULT; - - port_config->discard_slow_proto = - VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_DEFAULT; - - port_config->host_chosen_aggr = - VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_DEFAULT; - - port_config->discard_unknown_slow_proto = - VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_DEFAULT; - - port_config->actor_port_num = - VXGE_HAL_LAG_PORT_DEF_ACTOR_PORT_NUM; - - port_config->actor_port_priority = - VXGE_HAL_LAG_PORT_DEF_ACTOR_PORT_PRIORITY; - - port_config->actor_key_10g = - VXGE_HAL_LAG_PORT_DEF_ACTOR_KEY_10G; - - port_config->actor_key_1g = - VXGE_HAL_LAG_PORT_DEF_ACTOR_KEY_1G; - - port_config->actor_lacp_activity = - VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_DEFAULT; - - port_config->actor_lacp_timeout = - VXGE_HAL_LAG_PORT_ACTOR_LACP_TIMEOUT_DEFAULT; - - port_config->actor_aggregation = - VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_DEFAULT; - - port_config->actor_synchronization = - VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_DEFAULT; - - port_config->actor_collecting = - VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_DEFAULT; - - port_config->actor_distributing = - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_DEFAULT; - - port_config->actor_defaulted = - VXGE_HAL_LAG_PORT_ACTOR_DEFAULTED_DEFAULT; - - port_config->actor_expired = - VXGE_HAL_LAG_PORT_ACTOR_EXPIRED_DEFAULT; - - port_config->partner_sys_pri = - VXGE_HAL_LAG_PORT_DEF_PARTNER_SYS_PRI; - - port_config->partner_key = - VXGE_HAL_LAG_PORT_DEF_PARTNER_KEY; - - port_config->partner_port_num = - VXGE_HAL_LAG_PORT_DEF_PARTNER_PORT_NUM; - - port_config->partner_port_priority = - VXGE_HAL_LAG_PORT_DEF_PARTNER_PORT_PRIORITY; - - port_config->partner_lacp_activity = - VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_DEFAULT; - - port_config->partner_lacp_timeout = - VXGE_HAL_LAG_PORT_PARTNER_LACP_TIMEOUT_DEFAULT; - - port_config->partner_aggregation = - VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_DEFAULT; - - port_config->partner_synchronization = - VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_DEFAULT; - - port_config->partner_collecting = - VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_DEFAULT; - - port_config->partner_distributing = - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_DEFAULT; - - port_config->partner_defaulted = - VXGE_HAL_LAG_PORT_PARTNER_DEFAULTED_DEFAULT; - - port_config->partner_expired = - VXGE_HAL_LAG_PORT_PARTNER_EXPIRED_DEFAULT; - - } - - for (i = 0; i < VXGE_HAL_LAG_AGGR_MAX_PORTS; i++) { - - device_config-> - mrpcim_config.lag_config.aggr_config[i].aggr_id = i + 1; - - device_config-> - mrpcim_config.lag_config.aggr_config[i].use_port_mac_addr = - VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_DEFAULT; - - device_config-> - mrpcim_config.lag_config.aggr_config[i].mac_addr_sel = - VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_DEFAULT; - - device_config-> - mrpcim_config.lag_config.aggr_config[i].admin_key = - VXGE_HAL_LAG_AGGR_DEF_ADMIN_KEY; - - } - - device_config->mrpcim_config.lag_config.sys_pri = - VXGE_HAL_LAG_DEF_SYS_PRI; - - device_config->mrpcim_config.lag_config.use_port_mac_addr = - VXGE_HAL_LAG_USE_PORT_MAC_ADDR_DEFAULT; - - device_config->mrpcim_config.lag_config.mac_addr_sel = - VXGE_HAL_LAG_MAC_ADDR_SEL_DEFAULT; - - device_config->mrpcim_config.lag_config.fast_per_time = - VXGE_HAL_LAG_DEF_FAST_PER_TIME; - - device_config->mrpcim_config.lag_config.slow_per_time = - VXGE_HAL_LAG_DEF_SLOW_PER_TIME; - - device_config->mrpcim_config.lag_config.short_timeout = - VXGE_HAL_LAG_DEF_SHORT_TIMEOUT; - - device_config->mrpcim_config.lag_config.long_timeout = - VXGE_HAL_LAG_DEF_LONG_TIMEOUT; - - device_config->mrpcim_config.lag_config.churn_det_time = - VXGE_HAL_LAG_DEF_CHURN_DET_TIME; - - device_config->mrpcim_config.lag_config.aggr_wait_time = - VXGE_HAL_LAG_DEF_AGGR_WAIT_TIME; - - device_config->mrpcim_config.lag_config.short_timer_scale = - VXGE_HAL_LAG_SHORT_TIMER_SCALE_DEFAULT; - - device_config->mrpcim_config.lag_config.long_timer_scale = - VXGE_HAL_LAG_LONG_TIMER_SCALE_DEFAULT; - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - device_config->mrpcim_config.vp_qos[i].priority = - VXGE_HAL_VPATH_QOS_PRIORITY_DEFAULT; - - device_config->mrpcim_config.vp_qos[i].min_bandwidth = - VXGE_HAL_VPATH_QOS_MIN_BANDWIDTH_DEFAULT; - - device_config->mrpcim_config.vp_qos[i].max_bandwidth = - VXGE_HAL_VPATH_QOS_MAX_BANDWIDTH_DEFAULT; - - } - - device_config->isr_polling_cnt = VXGE_HAL_DEF_ISR_POLLING_CNT; - - device_config->max_payload_size = - VXGE_HAL_USE_BIOS_DEFAULT_PAYLOAD_SIZE; - - device_config->mmrb_count = VXGE_HAL_USE_BIOS_DEFAULT_MMRB_COUNT; - - device_config->stats_refresh_time_sec = - VXGE_HAL_USE_FLASH_DEFAULT_STATS_REFRESH_TIME; - - device_config->intr_mode = VXGE_HAL_INTR_MODE_DEF; - - device_config->dump_on_unknown = VXGE_HAL_DUMP_ON_UNKNOWN_DEFAULT; - - device_config->dump_on_serr = VXGE_HAL_DUMP_ON_SERR_DEFAULT; - - device_config->dump_on_critical = VXGE_HAL_DUMP_ON_CRITICAL_DEFAULT; - - device_config->dump_on_eccerr = VXGE_HAL_DUMP_ON_ECCERR_DEFAULT; - - device_config->rth_en = VXGE_HAL_RTH_DEFAULT; - - device_config->rth_it_type = VXGE_HAL_RTH_IT_TYPE_DEFAULT; - - device_config->device_poll_millis = VXGE_HAL_DEF_DEVICE_POLL_MILLIS; - - device_config->rts_mac_en = VXGE_HAL_RTS_MAC_DEFAULT; - - device_config->rts_qos_en = VXGE_HAL_RTS_QOS_DEFAULT; - - device_config->rts_port_en = VXGE_HAL_RTS_PORT_DEFAULT; - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - device_config->vp_config[i].vp_id = i; - - device_config->vp_config[i].wire_port = - VXGE_HAL_VPATH_USE_DEFAULT_PORT; - - device_config->vp_config[i].priority = - VXGE_HAL_VPATH_PRIORITY_DEFAULT; - - device_config->vp_config[i].bandwidth = - VXGE_HAL_VPATH_BW_LIMIT_DEFAULT; - - device_config->vp_config[i].no_snoop = - VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT; - - device_config->vp_config[i].ring.enable = - VXGE_HAL_RING_DEFAULT; - - device_config->vp_config[i].ring.ring_length = - VXGE_HAL_DEF_RING_LENGTH; - - device_config->vp_config[i].ring.buffer_mode = - VXGE_HAL_RING_RXD_BUFFER_MODE_DEFAULT; - - device_config->vp_config[i].ring.scatter_mode = - VXGE_HAL_RING_SCATTER_MODE_USE_FLASH_DEFAULT; - - device_config->vp_config[i].ring.post_mode = - VXGE_HAL_RING_POST_MODE_USE_FLASH_DEFAULT; - - device_config->vp_config[i].ring.max_frm_len = - VXGE_HAL_MAX_RING_FRM_LEN_USE_MTU; - - device_config->vp_config[i].ring.no_snoop_bits = - VXGE_HAL_RING_NO_SNOOP_USE_FLASH_DEFAULT; - - device_config->vp_config[i].ring.rx_timer_val = - VXGE_HAL_RING_USE_FLASH_DEFAULT_RX_TIMER_VAL; - - device_config->vp_config[i].ring.greedy_return = - VXGE_HAL_RING_GREEDY_RETURN_USE_FLASH_DEFAULT; - - device_config->vp_config[i].ring.rx_timer_ci = - VXGE_HAL_RING_RX_TIMER_CI_USE_FLASH_DEFAULT; - - device_config->vp_config[i].ring.backoff_interval_us = - VXGE_HAL_USE_FLASH_DEFAULT_BACKOFF_INTERVAL_US; - - device_config->vp_config[i].ring.indicate_max_pkts = - VXGE_HAL_DEF_RING_INDICATE_MAX_PKTS; - - - device_config->vp_config[i].fifo.enable = - VXGE_HAL_FIFO_DEFAULT; - - device_config->vp_config[i].fifo.fifo_length = - VXGE_HAL_DEF_FIFO_LENGTH; - - device_config->vp_config[i].fifo.max_frags = - VXGE_HAL_DEF_FIFO_FRAGS; - - device_config->vp_config[i].fifo.alignment_size = - VXGE_HAL_DEF_FIFO_ALIGNMENT_SIZE; - - device_config->vp_config[i].fifo.max_aligned_frags = 0; - - device_config->vp_config[i].fifo.intr = - VXGE_HAL_FIFO_QUEUE_INTR_DEFAULT; - - device_config->vp_config[i].fifo.no_snoop_bits = - VXGE_HAL_FIFO_NO_SNOOP_DEFAULT; - - - device_config->vp_config[i].tti.intr_enable = - VXGE_HAL_TIM_INTR_DEFAULT; - - device_config->vp_config[i].tti.btimer_val = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_BTIMER_VAL; - - device_config->vp_config[i].tti.timer_ac_en = - VXGE_HAL_TIM_TIMER_AC_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tti.timer_ci_en = - VXGE_HAL_TIM_TIMER_CI_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tti.timer_ri_en = - VXGE_HAL_TIM_TIMER_RI_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tti.rtimer_event_sf = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_EVENT_SF; - - device_config->vp_config[i].tti.rtimer_val = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_VAL; - - device_config->vp_config[i].tti.util_sel = - VXGE_HAL_TIM_UTIL_SEL_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tti.ltimer_val = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_LTIMER_VAL; - - device_config->vp_config[i].tti.txfrm_cnt_en = - VXGE_HAL_TXFRM_CNT_EN_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tti.txd_cnt_en = - VXGE_HAL_TXD_CNT_EN_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tti.urange_a = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_A; - - device_config->vp_config[i].tti.uec_a = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_A; - - device_config->vp_config[i].tti.urange_b = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_B; - - device_config->vp_config[i].tti.uec_b = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_B; - - device_config->vp_config[i].tti.urange_c = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_C; - - device_config->vp_config[i].tti.uec_c = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_C; - - device_config->vp_config[i].tti.uec_d = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_D; - - device_config->vp_config[i].tti.ufca_intr_thres = - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_INTR_THRES; - - device_config->vp_config[i].tti.ufca_lo_lim = - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_LO_LIM; - - device_config->vp_config[i].tti.ufca_hi_lim = - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_HI_LIM; - - device_config->vp_config[i].tti.ufca_lbolt_period = - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_LBOLT_PERIOD; - - device_config->vp_config[i].rti.intr_enable = - VXGE_HAL_TIM_INTR_DEFAULT; - - device_config->vp_config[i].rti.btimer_val = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_BTIMER_VAL; - - device_config->vp_config[i].rti.timer_ac_en = - VXGE_HAL_TIM_TIMER_AC_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rti.timer_ci_en = - VXGE_HAL_TIM_TIMER_CI_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rti.timer_ri_en = - VXGE_HAL_TIM_TIMER_RI_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rti.rtimer_event_sf = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_EVENT_SF; - - device_config->vp_config[i].rti.rtimer_val = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_VAL; - - device_config->vp_config[i].rti.util_sel = - VXGE_HAL_TIM_UTIL_SEL_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rti.ltimer_val = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_LTIMER_VAL; - - device_config->vp_config[i].rti.txfrm_cnt_en = - VXGE_HAL_TXFRM_CNT_EN_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rti.txd_cnt_en = - VXGE_HAL_TXD_CNT_EN_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rti.urange_a = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_A; - - device_config->vp_config[i].rti.uec_a = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_A; - - device_config->vp_config[i].rti.urange_b = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_B; - - device_config->vp_config[i].rti.uec_b = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_B; - - device_config->vp_config[i].rti.urange_c = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_C; - - device_config->vp_config[i].rti.uec_c = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_C; - - device_config->vp_config[i].rti.uec_d = - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_D; - - device_config->vp_config[i].rti.ufca_intr_thres = - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_INTR_THRES; - - device_config->vp_config[i].rti.ufca_lo_lim = - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_LO_LIM; - - device_config->vp_config[i].rti.ufca_hi_lim = - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_HI_LIM; - - device_config->vp_config[i].rti.ufca_lbolt_period = - VXGE_HAL_USE_FLASH_DEFAULT_UFCA_LBOLT_PERIOD; - - device_config->vp_config[i].mtu = - VXGE_HAL_VPATH_USE_FLASH_DEFAULT_INITIAL_MTU; - - device_config->vp_config[i].tpa_lsov2_en = - VXGE_HAL_VPATH_TPA_LSOV2_EN_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tpa_ignore_frame_error = - VXGE_HAL_VPATH_TPA_IGNORE_FRAME_ERROR_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tpa_ipv6_keep_searching = - VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tpa_l4_pshdr_present = - VXGE_HAL_VPATH_TPA_L4_PSHDR_PRESENT_USE_FLASH_DEFAULT; - - device_config->vp_config[i].tpa_support_mobile_ipv6_hdrs = - VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_DEFAULT; - - device_config->vp_config[i].rpa_ipv4_tcp_incl_ph = - VXGE_HAL_VPATH_RPA_IPV4_TCP_INCL_PH_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_ipv6_tcp_incl_ph = - VXGE_HAL_VPATH_RPA_IPV6_TCP_INCL_PH_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_ipv4_udp_incl_ph = - VXGE_HAL_VPATH_RPA_IPV4_UDP_INCL_PH_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_ipv6_udp_incl_ph = - VXGE_HAL_VPATH_RPA_IPV6_UDP_INCL_PH_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_l4_incl_cf = - VXGE_HAL_VPATH_RPA_L4_INCL_CF_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_strip_vlan_tag = - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_l4_comp_csum = - VXGE_HAL_VPATH_RPA_L4_COMP_CSUM_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_l3_incl_cf = - VXGE_HAL_VPATH_RPA_L3_INCL_CF_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_l3_comp_csum = - VXGE_HAL_VPATH_RPA_L3_COMP_CSUM_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_ucast_all_addr_en = - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_mcast_all_addr_en = - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_bcast_en = - VXGE_HAL_VPATH_RPA_BCAST_USE_FLASH_DEFAULT; - - device_config->vp_config[i].rpa_all_vid_en = - VXGE_HAL_VPATH_RPA_ALL_VID_USE_FLASH_DEFAULT; - - device_config->vp_config[i].vp_queue_l2_flow = - VXGE_HAL_VPATH_VP_Q_L2_FLOW_USE_FLASH_DEFAULT; - - } - - device_config->max_cqe_groups = VXGE_HAL_DEF_MAX_CQE_GROUPS; - - device_config->max_num_wqe_od_groups = VXGE_HAL_DEF_MAX_NUM_OD_GROUPS; - - device_config->no_wqe_threshold = VXGE_HAL_DEF_NO_WQE_THRESHOLD; - - device_config->refill_threshold_high = - VXGE_HAL_DEF_REFILL_THRESHOLD_HIGH; - - device_config->refill_threshold_low = VXGE_HAL_DEF_REFILL_THRESHOLD_LOW; - - device_config->ack_blk_limit = VXGE_HAL_DEF_ACK_BLOCK_LIMIT; - - device_config->poll_or_doorbell = VXGE_HAL_POLL_OR_DOORBELL_DEFAULT; - - device_config->stats_read_method = VXGE_HAL_STATS_READ_METHOD_DEFAULT; - - device_config->debug_level = VXGE_DEBUG_LEVEL_DEF; - - device_config->debug_mask = VXGE_DEBUG_MODULE_MASK_DEF; - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - device_config->tracebuf_size = VXGE_HAL_DEF_CIRCULAR_ARR; -#endif - vxge_hal_trace_log_driver("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -void -vxge_hw_vpath_set_zero_rx_frm_len(vxge_hal_device_h devh, u32 vp_id) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - - vxge_assert(devh != NULL); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - val64 = vxge_os_pio_mem_read64(vpath->hldev->header.pdev, - vpath->hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 &= ~VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN(0x3fff); - - vxge_os_pio_mem_write64(vpath->hldev->header.pdev, - vpath->hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - vxge_os_pio_mem_read64(vpath->hldev->header.pdev, - vpath->hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); -} - -/* - * vxge_hw_vpath_wait_receive_idle - Wait for Rx to become idle - * - * Bug: Receive path stuck during small frames blast test after numerous vpath - * reset cycle - * - * Fix: Driver work-around is to ensure that the vpath queue in the FB(frame - * buffer) is empty before reset is asserted. In order to do this driver needs - * to stop RxMAC from sending frames to the queue, e.g., by configuring the - * max frame length for the vpath to 0 or some small value. Driver then polls - * WRDMA registers to check that the ring controller for the vpath is not - * processing frames for a period of time(while having enough RxDs to do so). - * - * Poll 2 registers in the WRDMA, namely the FRM_IN_PROGRESS_CNT_VPn register - * and the PRC_RXD_DOORBELL_VPn register. There is no per-vpath register in - * the frame buffer that indicates if the vpath queue is empty, so determine - * the empty state with 2 conditions: - * 1. There are no frames currently being processed in the WRDMA for - * the vpath, and - * 2. The ring controller for the vpath is not being starved of RxDs - * (otherwise it will not be able to process frames even though the FB vpath - * queue is not empty). - * - * For the second condition, compare the read value of PRC_RXD_DOORBELL_VPn - * register against the RXD_SPAT value for the vpath. - * The ring controller will not attempt to fetch RxDs until it has at least - * RXD_SPAT qwords in the doorbell. A factor of 2 is used just to be safe. - * Additionally, it is also possible that the ring controller is not - * processing frames because of arbitration. The chance of this is very small, - * and we try to reduce it even further by checking that the 2 conditions above - * hold in 3 successive polls. This bug does not occur when frames from the - * reset vpath are not selected back-to-back due to arbitration. - * @hldev: HW device handle. - * @vp_id: Vpath ID. - * Returns: void - */ -void -vxge_hw_vpath_wait_receive_idle(vxge_hal_device_h devh, u32 vp_id, - u32 *count, u32 *total_count) -{ - u64 val64; - u32 new_qw_count, rxd_spat; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - - vpath = &hldev->virtual_paths[vp_id]; - - vxge_assert(vpath != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (vpath->vp_config->ring.enable == VXGE_HAL_RING_DISABLE) { - vxge_hal_trace_log_vpath("<== %s:%s:%d ", - __FILE__, __func__, __LINE__); - return; - } - - do { - vxge_os_mdelay(10); - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->prc_rxd_doorbell); - - new_qw_count = - (u32) VXGE_HAL_PRC_RXD_DOORBELL_GET_NEW_QW_CNT(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->prc_cfg6); - - rxd_spat = (u32) VXGE_HAL_PRC_CFG6_GET_RXD_SPAT(val64) + 1; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->frm_in_progress_cnt); - - /* - * Check if there is enough RxDs with HW AND - * it is not processing any frames. - */ - - if ((new_qw_count <= 2 * rxd_spat) || (val64 > 0)) - *count = 0; - else - (*count)++; - (*total_count)++; - - } while ((*count < VXGE_HW_MIN_SUCCESSIVE_IDLE_COUNT) && - (*total_count < VXGE_HW_MAX_POLLING_COUNT)); - - vxge_hal_trace_log_vpath("<== %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_assert(*total_count < VXGE_HW_MAX_POLLING_COUNT); -} Index: sys/dev/vxge/vxgehal/vxgehal-debug.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-debug.h +++ sys/dev/vxge/vxgehal/vxgehal-debug.h @@ -1,440 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_DEBUG_H -#define VXGE_HAL_DEBUG_H - -__EXTERN_BEGIN_DECLS - -#define D_ERR_MASK ((__hal_device_t *)hldev)->d_err_mask -#define D_INFO_MASK ((__hal_device_t *)hldev)->d_info_mask -#define D_TRACE_MASK ((__hal_device_t *)hldev)->d_trace_mask - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) -#define vxge_hal_debug_printf vxge_os_vasprintf -#else -#define vxge_hal_debug_printf vxge_os_vaprintf -#endif - -#ifndef VXGE_DEBUG_INLINE_FUNCTIONS -#define vxge_hal_debug_noop(fmt, ...) -#else -static inline void -vxge_hal_debug_noop( - char *fmt, ...) -{ - -} -#endif - -#if (VXGE_COMPONENT_HAL_DRIVER & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_driver \ - if (g_debug_level & VXGE_ERR) vxge_hal_debug_printf -#define vxge_hal_info_log_driver \ - if (g_debug_level & VXGE_INFO) vxge_hal_debug_printf -#define vxge_hal_trace_log_driver \ - if (g_debug_level & VXGE_TRACE) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_driver vxge_hal_debug_noop -#define vxge_hal_info_log_driver vxge_hal_debug_noop -#define vxge_hal_trace_log_driver vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_DEVICE & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_device \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_DEVICE) vxge_hal_debug_printf -#define vxge_hal_info_log_device \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_DEVICE) vxge_hal_debug_printf -#define vxge_hal_trace_log_device \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_DEVICE) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_device vxge_hal_debug_noop -#define vxge_hal_info_log_device vxge_hal_debug_noop -#define vxge_hal_trace_log_device vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_DEVICE_IRQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_device_irq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_DEVICE_IRQ) vxge_hal_debug_printf -#define vxge_hal_info_log_device_irq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_DEVICE_IRQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_device_irq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_DEVICE_IRQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_device_irq vxge_hal_debug_noop -#define vxge_hal_info_log_device_irq vxge_hal_debug_noop -#define vxge_hal_trace_log_device_irq vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_VPATH & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_vpath \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_VPATH) vxge_hal_debug_printf -#define vxge_hal_info_log_vpath \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_VPATH) vxge_hal_debug_printf -#define vxge_hal_trace_log_vpath \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_VPATH) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_vpath vxge_hal_debug_noop -#define vxge_hal_info_log_vpath vxge_hal_debug_noop -#define vxge_hal_trace_log_vpath vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_VPATH_IRQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_vpath_irq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_VPATH_IRQ) vxge_hal_debug_printf -#define vxge_hal_info_log_vpath_irq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_VPATH_IRQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_vpath_irq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_VPATH_IRQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_vpath_irq vxge_hal_debug_noop -#define vxge_hal_info_log_vpath_irq vxge_hal_debug_noop -#define vxge_hal_trace_log_vpath_irq vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_CONFIG & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_config \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_CONFIG) vxge_hal_debug_printf -#define vxge_hal_info_log_config \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_CONFIG) vxge_hal_debug_printf -#define vxge_hal_trace_log_config \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_CONFIG) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_config vxge_hal_debug_noop -#define vxge_hal_info_log_config vxge_hal_debug_noop -#define vxge_hal_trace_log_config vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_MM & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_mm \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_MM) vxge_hal_debug_printf -#define vxge_hal_info_log_mm \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_MM) vxge_hal_debug_printf -#define vxge_hal_trace_log_mm \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_MM) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_mm vxge_hal_debug_noop -#define vxge_hal_info_log_mm vxge_hal_debug_noop -#define vxge_hal_trace_log_mm vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_POOL & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_pool \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_POOL) vxge_hal_debug_printf -#define vxge_hal_info_log_pool \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_POOL) vxge_hal_debug_printf -#define vxge_hal_trace_log_pool \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_POOL) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_pool vxge_hal_debug_noop -#define vxge_hal_info_log_pool vxge_hal_debug_noop -#define vxge_hal_trace_log_pool vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_QUEUE & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_queue \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_QUEUE) vxge_hal_debug_printf -#define vxge_hal_info_log_queue \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_QUEUE) vxge_hal_debug_printf -#define vxge_hal_trace_log_queue \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_QUEUE) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_queue vxge_hal_debug_noop -#define vxge_hal_info_log_queue vxge_hal_debug_noop -#define vxge_hal_trace_log_queue vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_BITMAP & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_bitmap \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_BITMAP) vxge_hal_debug_printf -#define vxge_hal_info_log_bitmap \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_BITMAP) vxge_hal_debug_printf -#define vxge_hal_trace_log_bitmap \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_BITMAP) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_bitmap vxge_hal_debug_noop -#define vxge_hal_info_log_bitmap vxge_hal_debug_noop -#define vxge_hal_trace_log_bitmap vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_CHANNEL & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_channel \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_CHANNEL) vxge_hal_debug_printf -#define vxge_hal_info_log_channel \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_CHANNEL) vxge_hal_debug_printf -#define vxge_hal_trace_log_channel \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_CHANNEL) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_channel vxge_hal_debug_noop -#define vxge_hal_info_log_channel vxge_hal_debug_noop -#define vxge_hal_trace_log_channel vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_FIFO & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_fifo \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_FIFO) vxge_hal_debug_printf -#define vxge_hal_info_log_fifo \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_FIFO) vxge_hal_debug_printf -#define vxge_hal_trace_log_fifo \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_FIFO) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_fifo vxge_hal_debug_noop -#define vxge_hal_info_log_fifo vxge_hal_debug_noop -#define vxge_hal_trace_log_fifo vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_RING & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_ring \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_RING) vxge_hal_debug_printf -#define vxge_hal_info_log_ring \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_RING) vxge_hal_debug_printf -#define vxge_hal_trace_log_ring \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_RING) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_ring vxge_hal_debug_noop -#define vxge_hal_info_log_ring vxge_hal_debug_noop -#define vxge_hal_trace_log_ring vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_DMQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_dmq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_DMQ) vxge_hal_debug_printf -#define vxge_hal_info_log_dmq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_DMQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_dmq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_DMQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_dmq vxge_hal_debug_noop -#define vxge_hal_info_log_dmq vxge_hal_debug_noop -#define vxge_hal_trace_log_dmq vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_UMQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_umq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_UMQ) vxge_hal_debug_printf -#define vxge_hal_info_log_umq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_UMQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_umq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_UMQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_umq vxge_hal_debug_noop -#define vxge_hal_info_log_umq vxge_hal_debug_noop -#define vxge_hal_trace_log_umq vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_SQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_sq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_SQ) vxge_hal_debug_printf -#define vxge_hal_info_log_sq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_SQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_sq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_SQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_sq vxge_hal_debug_noop -#define vxge_hal_info_log_sq vxge_hal_debug_noop -#define vxge_hal_trace_log_sq vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_SRQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_srq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_SRQ) vxge_hal_debug_printf -#define vxge_hal_info_log_srq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_SRQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_srq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_SRQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_srq vxge_hal_debug_noop -#define vxge_hal_info_log_srq vxge_hal_debug_noop -#define vxge_hal_trace_log_srq vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_CQRQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_cqrq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_CQRQ) vxge_hal_debug_printf -#define vxge_hal_info_log_cqrq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_CQRQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_cqrq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_CQRQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_cqrq vxge_hal_debug_noop -#define vxge_hal_info_log_cqrq vxge_hal_debug_noop -#define vxge_hal_trace_log_cqrq vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_NCE & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_nce \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_NCE) vxge_hal_debug_printf -#define vxge_hal_info_log_nce \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_NCE) vxge_hal_debug_printf -#define vxge_hal_trace_log_nce \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_NCE) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_nce vxge_hal_debug_noop -#define vxge_hal_info_log_nce vxge_hal_debug_noop -#define vxge_hal_trace_log_nce vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_STAG & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_stag \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_STAG) vxge_hal_debug_printf -#define vxge_hal_info_log_stag \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_STAG) vxge_hal_debug_printf -#define vxge_hal_trace_log_stag \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_STAG) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_stag vxge_hal_debug_noop -#define vxge_hal_info_log_stag vxge_hal_debug_noop -#define vxge_hal_trace_log_stag vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_TCP & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_tcp \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_TCP) vxge_hal_debug_printf -#define vxge_hal_info_log_tcp \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_TCP) vxge_hal_debug_printf -#define vxge_hal_trace_log_tcp \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_TCP) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_tcp vxge_hal_debug_noop -#define vxge_hal_info_log_tcp vxge_hal_debug_noop -#define vxge_hal_trace_log_tcp vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_LRO & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_lro \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_LRO) vxge_hal_debug_printf -#define vxge_hal_info_log_lro \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_LRO) vxge_hal_debug_printf -#define vxge_hal_trace_log_lro \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_LRO) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_lro vxge_hal_debug_noop -#define vxge_hal_info_log_lro vxge_hal_debug_noop -#define vxge_hal_trace_log_lro vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_SPDM & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_spdm \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_SPDM) vxge_hal_debug_printf -#define vxge_hal_info_log_spdm \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_SPDM) vxge_hal_debug_printf -#define vxge_hal_trace_log_spdm \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_SPDM) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_spdm vxge_hal_debug_noop -#define vxge_hal_info_log_spdm vxge_hal_debug_noop -#define vxge_hal_trace_log_spdm vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_SESSION & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_session \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_SESSION) vxge_hal_debug_printf -#define vxge_hal_info_log_session \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_SESSION) vxge_hal_debug_printf -#define vxge_hal_trace_log_session \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_SESSION) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_session vxge_hal_debug_noop -#define vxge_hal_info_log_session vxge_hal_debug_noop -#define vxge_hal_trace_log_session vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_STATS & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_stats \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_STATS) vxge_hal_debug_printf -#define vxge_hal_info_log_stats \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_STATS) vxge_hal_debug_printf -#define vxge_hal_trace_log_stats \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_STATS) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_stats vxge_hal_debug_noop -#define vxge_hal_info_log_stats vxge_hal_debug_noop -#define vxge_hal_trace_log_stats vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_MRPCIM & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_mrpcim \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_MRPCIM) vxge_hal_debug_printf -#define vxge_hal_info_log_mrpcim \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_MRPCIM) vxge_hal_debug_printf -#define vxge_hal_trace_log_mrpcim \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_MRPCIM) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_mrpcim vxge_hal_debug_noop -#define vxge_hal_info_log_mrpcim vxge_hal_debug_noop -#define vxge_hal_trace_log_mrpcim vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_MRPCIM_IRQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_mrpcim_irq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_MRPCIM_IRQ) vxge_hal_debug_printf -#define vxge_hal_info_log_mrpcim_irq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_MRPCIM_IRQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_mrpcim_irq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_MRPCIM_IRQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_mrpcim_irq vxge_hal_debug_noop -#define vxge_hal_info_log_mrpcim_irq vxge_hal_debug_noop -#define vxge_hal_trace_log_mrpcim_irq vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_SRPCIM & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_srpcim \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_SRPCIM) vxge_hal_debug_printf -#define vxge_hal_info_log_srpcim \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_SRPCIM) vxge_hal_debug_printf -#define vxge_hal_trace_log_srpcim \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_SRPCIM) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_srpcim vxge_hal_debug_noop -#define vxge_hal_info_log_srpcim vxge_hal_debug_noop -#define vxge_hal_trace_log_srpcim vxge_hal_debug_noop -#endif - -#if (VXGE_COMPONENT_HAL_SRPCIM_IRQ & VXGE_DEBUG_MODULE_MASK) -#define vxge_hal_err_log_srpcim_irq \ - if (D_ERR_MASK & VXGE_COMPONENT_HAL_SRPCIM_IRQ) vxge_hal_debug_printf -#define vxge_hal_info_log_srpcim_irq \ - if (D_INFO_MASK & VXGE_COMPONENT_HAL_SRPCIM_IRQ) vxge_hal_debug_printf -#define vxge_hal_trace_log_srpcim_irq \ - if (D_TRACE_MASK & VXGE_COMPONENT_HAL_SRPCIM_IRQ) vxge_hal_debug_printf -#else -#define vxge_hal_err_log_srpcim_irq vxge_hal_debug_noop -#define vxge_hal_info_log_srpcim_irq vxge_hal_debug_noop -#define vxge_hal_trace_log_srpcim_irq vxge_hal_debug_noop -#endif - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_DEBUG_H */ Index: sys/dev/vxge/vxgehal/vxgehal-device.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-device.h +++ sys/dev/vxge/vxgehal/vxgehal-device.h @@ -1,267 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_DEVICE_H -#define VXGE_HAL_DEVICE_H - -__EXTERN_BEGIN_DECLS - -struct __hal_mrpcim_t; -struct __hal_srpcim_t; - -/* - * vxge_hal_vpd_data_t - * - * Represents vpd capabilty structure - */ -typedef struct vxge_hal_vpd_data_t { - u8 product_name[VXGE_HAL_VPD_LEN]; - u8 serial_num[VXGE_HAL_VPD_LEN]; -} vxge_hal_vpd_data_t; - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) -/* - * __hal_tracebuf_t - * - * HAL trace buffer object. - */ -typedef struct __hal_tracebuf_t { - u8 *data; - u64 wrapped_count; - volatile u32 offset; - u32 size; -} __hal_tracebuf_t; -#endif - -/* - * __hal_msix_map_t - * - * HAL msix to vpath map. - */ -typedef struct __hal_msix_map_t { - u32 vp_id; - u32 int_num; -} __hal_msix_map_t; - -/* - * __hal_device_t - * - * HAL device object. Represents X3100. - */ -typedef struct __hal_device_t { - vxge_hal_device_t header; - u32 host_type; - u32 vh_id; - u32 func_id; - u32 srpcim_id; - u32 access_rights; -#define VXGE_HAL_DEVICE_ACCESS_RIGHT_VPATH 0x1 -#define VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM 0x2 -#define VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM 0x4 - u32 ifmsg_seqno; - u32 manager_up; - vxge_hal_pci_config_t pci_config_space; - vxge_hal_pci_config_t pci_config_space_bios; - vxge_hal_pci_caps_offset_t pci_caps; - vxge_hal_pci_e_caps_offset_t pci_e_caps; - vxge_hal_pci_e_ext_caps_offset_t pci_e_ext_caps; - vxge_hal_legacy_reg_t *legacy_reg; - vxge_hal_toc_reg_t *toc_reg; - vxge_hal_common_reg_t *common_reg; - vxge_hal_memrepair_reg_t *memrepair_reg; - vxge_hal_pcicfgmgmt_reg_t - *pcicfgmgmt_reg[VXGE_HAL_TITAN_PCICFGMGMT_REG_SPACES]; - vxge_hal_mrpcim_reg_t *mrpcim_reg; - vxge_hal_srpcim_reg_t - *srpcim_reg[VXGE_HAL_TITAN_SRPCIM_REG_SPACES]; - vxge_hal_vpmgmt_reg_t - *vpmgmt_reg[VXGE_HAL_TITAN_VPMGMT_REG_SPACES]; - vxge_hal_vpath_reg_t - *vpath_reg[VXGE_HAL_TITAN_VPATH_REG_SPACES]; - u8 *kdfc; - u8 *usdc; - __hal_virtualpath_t - virtual_paths[VXGE_HAL_MAX_VIRTUAL_PATHS]; - u64 vpath_assignments; - u64 vpaths_deployed; - u32 first_vp_id; - u64 tim_int_mask0[4]; - u32 tim_int_mask1[4]; - __hal_msix_map_t - msix_map[VXGE_HAL_MAX_VIRTUAL_PATHS * VXGE_HAL_VPATH_MSIX_MAX]; - struct __hal_srpcim_t *srpcim; - struct __hal_mrpcim_t *mrpcim; - __hal_blockpool_t block_pool; - vxge_list_t pending_channel_list; - spinlock_t pending_channel_lock; - vxge_hal_device_stats_t stats; - volatile u32 msix_enabled; - volatile u32 hw_is_initialized; - volatile int device_resetting; - volatile int is_promisc; - int tti_enabled; - spinlock_t titan_post_lock; - u32 mtu_first_time_set; - char *dump_buf; -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - __hal_tracebuf_t trace_buf; -#endif - volatile u32 in_poll; - u32 d_err_mask; - u32 d_info_mask; - u32 d_trace_mask; -} __hal_device_t; - -/* - * I2C device id. Used in I2C control register for accessing EEPROM device - * memory. - */ -#define VXGE_DEV_ID 5 - -#define VXGE_HAL_DEVICE_MANAGER_STATE_SET(hldev, wmsg) { \ - ((__hal_device_t *)hldev)->manager_up = \ - __hal_ifmsg_is_manager_up(wmsg); \ -} - -#define VXGE_HAL_DEVICE_LINK_STATE_SET(hldev, ls) { \ - ((vxge_hal_device_t *)hldev)->link_state = ls; \ -} - -#define VXGE_HAL_DEVICE_DATA_RATE_SET(hldev, dr) { \ - ((vxge_hal_device_t *)hldev)->data_rate = dr; \ -} - -#define VXGE_HAL_DEVICE_TIM_INT_MASK_SET(hldev, i) { \ - if (i < 16) { \ - ((__hal_device_t *)hldev)->tim_int_mask0[0] |= \ - vBIT(0x8, (i*4), 4); \ - ((__hal_device_t *)hldev)->tim_int_mask0[1] |= \ - vBIT(0x4, (i*4), 4); \ - ((__hal_device_t *)hldev)->tim_int_mask0[3] |= \ - vBIT(0x1, (i*4), 4); \ - } else { \ - ((__hal_device_t *)hldev)->tim_int_mask1[0] = 0x80000000; \ - ((__hal_device_t *)hldev)->tim_int_mask1[1] = 0x40000000; \ - ((__hal_device_t *)hldev)->tim_int_mask1[3] = 0x10000000; \ - } \ -} - -#define VXGE_HAL_DEVICE_TIM_INT_MASK_RESET(hldev, i) { \ - if (i < 16) { \ - ((__hal_device_t *)hldev)->tim_int_mask0[0] &= \ - ~vBIT(0x8, (i*4), 4); \ - ((__hal_device_t *)hldev)->tim_int_mask0[1] &= \ - ~vBIT(0x4, (i*4), 4); \ - ((__hal_device_t *)hldev)->tim_int_mask0[3] &= \ - ~vBIT(0x1, (i*4), 4); \ - } else { \ - ((__hal_device_t *)hldev)->tim_int_mask1[0] = 0; \ - ((__hal_device_t *)hldev)->tim_int_mask1[1] = 0; \ - ((__hal_device_t *)hldev)->tim_int_mask1[3] = 0; \ - } \ -} - -/* ========================== PRIVATE API ================================= */ - -void -vxge_hal_pio_mem_write32_upper(pci_dev_h pdev, - pci_reg_h regh, - u32 val, - void *addr); - -void -vxge_hal_pio_mem_write32_lower(pci_dev_h pdev, - pci_reg_h regh, - u32 val, - void *addr); - -void -__hal_device_event_queued(void *data, - u32 event_type); - -void -__hal_device_pci_caps_list_process(__hal_device_t *hldev); - -void -__hal_device_pci_e_init(__hal_device_t *hldev); - -vxge_hal_status_e -vxge_hal_device_register_poll(pci_dev_h pdev, - pci_reg_h regh, - u64 *reg, - u32 op, - u64 mask, - u32 max_millis); - -vxge_hal_status_e -__hal_device_register_stall(pci_dev_h pdev, - pci_reg_h regh, - u64 *reg, - u32 op, - u64 mask, - u32 max_millis); - -vxge_hal_status_e -__hal_device_reg_addr_get(__hal_device_t *hldev); - -void -__hal_device_id_get(__hal_device_t *hldev); - -u32 -__hal_device_access_rights_get(u32 host_type, u32 func_id); - -void -__hal_device_host_info_get(__hal_device_t *hldev); - -vxge_hal_status_e -__hal_device_hw_initialize(__hal_device_t *hldev); - -vxge_hal_status_e -__hal_device_reset(__hal_device_t *hldev); - -vxge_hal_status_e -__hal_device_handle_link_up_ind(__hal_device_t *hldev); - -vxge_hal_status_e -__hal_device_handle_link_down_ind(__hal_device_t *hldev); - -void -__hal_device_handle_error( - __hal_device_t *hldev, - u32 vp_id, - vxge_hal_event_e type); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_DEVICE_H */ Index: sys/dev/vxge/vxgehal/vxgehal-device.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-device.c +++ sys/dev/vxge/vxgehal/vxgehal-device.c @@ -1,3622 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * vxge_hal_pio_mem_write32_upper - * - * Endiann-aware implementation of vxge_os_pio_mem_write32(). - * Since X3100 has 64bit registers, we differintiate uppper and lower - * parts. - */ -void -vxge_hal_pio_mem_write32_upper(pci_dev_h pdev, pci_reg_h regh, u32 val, void *addr) -{ -#if defined(VXGE_OS_HOST_BIG_ENDIAN) && !defined(VXGE_OS_PIO_LITTLE_ENDIAN) - vxge_os_pio_mem_write32(pdev, regh, val, addr); -#else - vxge_os_pio_mem_write32(pdev, regh, val, (void *) ((char *) addr + 4)); -#endif -} - -/* - * vxge_hal_pio_mem_write32_lower - * - * Endiann-aware implementation of vxge_os_pio_mem_write32(). - * Since X3100 has 64bit registers, we differintiate uppper and lower - * parts. - */ -void -vxge_hal_pio_mem_write32_lower(pci_dev_h pdev, pci_reg_h regh, u32 val, - void *addr) -{ -#if defined(VXGE_OS_HOST_BIG_ENDIAN) && !defined(VXGE_OS_PIO_LITTLE_ENDIAN) - vxge_os_pio_mem_write32(pdev, regh, val, - (void *) ((char *) addr + 4)); -#else - vxge_os_pio_mem_write32(pdev, regh, val, addr); -#endif -} - -/* - * vxge_hal_device_pciconfig_get - Read the content of given address - * in pci config space. - * @devh: Device handle. - * @offset: Configuration address(offset)to read from - * @length: Length of the data (1, 2 or 4 bytes) - * @val: Pointer to a buffer to return the content of the address - * - * Read from the pci config space. - * - */ -vxge_hal_status_e -vxge_hal_device_pciconfig_get( - vxge_hal_device_h devh, - u32 offset, - u32 length, - void *val) -{ - u32 i; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (val != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpath_assignments & mBIT(i))) - continue; - - status = __hal_vpath_pci_read(hldev, i, - offset, length, val); - - if (status == VXGE_HAL_OK) - break; - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - -} - -/* - * __hal_device_pci_caps_list_process - * @hldev: HAL device handle. - * - * Process PCI capabilities and initialize the offsets - */ -void -__hal_device_pci_caps_list_process(__hal_device_t *hldev) -{ - u8 cap_id; - u16 ext_cap_id; - u16 next_ptr; - u32 *ptr_32; - vxge_hal_pci_config_t *pci_config = &hldev->pci_config_space_bios; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - next_ptr = pci_config->capabilities_pointer; - - while (next_ptr != 0) { - - cap_id = VXGE_HAL_PCI_CAP_ID((((u8 *) pci_config) + next_ptr)); - - switch (cap_id) { - - case VXGE_HAL_PCI_CAP_ID_PM: - hldev->pci_caps.pm_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_CAP_ID_VPD: - hldev->pci_caps.vpd_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_CAP_ID_SLOTID: - hldev->pci_caps.sid_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_CAP_ID_MSI: - hldev->pci_caps.msi_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_CAP_ID_VS: - hldev->pci_caps.vs_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_CAP_ID_SHPC: - hldev->pci_caps.shpc_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_CAP_ID_PCIE: - hldev->pci_e_caps = next_ptr; - break; - case VXGE_HAL_PCI_CAP_ID_MSIX: - hldev->pci_caps.msix_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_CAP_ID_AGP: - case VXGE_HAL_PCI_CAP_ID_CHSWP: - case VXGE_HAL_PCI_CAP_ID_PCIX: - case VXGE_HAL_PCI_CAP_ID_HT: - case VXGE_HAL_PCI_CAP_ID_DBGPORT: - case VXGE_HAL_PCI_CAP_ID_CPCICSR: - case VXGE_HAL_PCI_CAP_ID_PCIBSVID: - case VXGE_HAL_PCI_CAP_ID_AGP8X: - case VXGE_HAL_PCI_CAP_ID_SECDEV: - vxge_hal_info_log_device("Unexpected Capability = %d", - cap_id); - break; - default: - vxge_hal_info_log_device("Unknown capability = %d", - cap_id); - break; - } - - next_ptr = - VXGE_HAL_PCI_CAP_NEXT((((u8 *) pci_config) + next_ptr)); - - } - - /* CONSTCOND */ - if (VXGE_HAL_PCI_CONFIG_SPACE_SIZE <= 0x100) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return; - } - - next_ptr = 0x100; - while (next_ptr != 0) { - - ptr_32 = (u32 *) ((void *) (((u8 *) pci_config) + next_ptr)); - ext_cap_id = (u16) (VXGE_HAL_PCI_EXT_CAP_ID(*ptr_32)); - - switch (ext_cap_id) { - - case VXGE_HAL_PCI_EXT_CAP_ID_ERR: - hldev->pci_e_ext_caps.err_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_EXT_CAP_ID_VC: - hldev->pci_e_ext_caps.vc_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_EXT_CAP_ID_DSN: - hldev->pci_e_ext_caps.dsn_cap_offset = next_ptr; - break; - case VXGE_HAL_PCI_EXT_CAP_ID_PWR: - hldev->pci_e_ext_caps.pwr_budget_cap_offset = next_ptr; - break; - - default: - vxge_hal_info_log_device("Unknown capability = %d", - ext_cap_id); - break; - } - - next_ptr = (u16) VXGE_HAL_PCI_EXT_CAP_NEXT(*ptr_32); - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_device_pci_e_init - * @hldev: HAL device handle. - * - * Initialize certain PCI/PCI-X configuration registers - * with recommended values. Save config space for future hw resets. - */ -void -__hal_device_pci_e_init(__hal_device_t *hldev) -{ - int i; - u16 cmd; - u32 *ptr_32; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - /* save original PCI config space to restore it on device_terminate() */ - ptr_32 = (u32 *) ((void *) &hldev->pci_config_space_bios); - for (i = 0; i < VXGE_HAL_PCI_CONFIG_SPACE_SIZE / 4; i++) { - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - i * 4, - 4, - ptr_32 + i); - } - - __hal_device_pci_caps_list_process(hldev); - - /* Set the PErr Repconse bit and SERR in PCI command register. */ - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - vxge_offsetof(vxge_hal_pci_config_le_t, command), - 2, - &cmd); - cmd |= 0x140; - vxge_os_pci_write16(hldev->header.pdev, hldev->header.cfgh, - vxge_offsetof(vxge_hal_pci_config_le_t, command), cmd); - - /* save PCI config space for future resets */ - ptr_32 = (u32 *) ((void *) &hldev->pci_config_space); - for (i = 0; i < VXGE_HAL_PCI_CONFIG_SPACE_SIZE / 4; i++) { - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - i * 4, - 4, - ptr_32 + i); - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_device_bus_master_enable - * @hldev: HAL device handle. - * - * Enable bus mastership. - */ -static void -__hal_device_bus_master_enable(__hal_device_t *hldev) -{ - u16 cmd; - u16 bus_master = 4; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - vxge_offsetof(vxge_hal_pci_config_le_t, command), - 2, - &cmd); - /* already enabled? do nothing */ - if (cmd & bus_master) - return; - - cmd |= bus_master; - vxge_os_pci_write16(hldev->header.pdev, hldev->header.cfgh, - vxge_offsetof(vxge_hal_pci_config_le_t, command), cmd); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_register_poll - * @pdev: PCI device object. - * @regh: BAR mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @reg: register to poll for - * @op: 0 - bit reset, 1 - bit set - * @mask: mask for logical "and" condition based on %op - * @max_millis: maximum time to try to poll in milliseconds - * - * Will poll certain register for specified amount of time. - * Will poll until masked bit is not cleared. - */ -vxge_hal_status_e -vxge_hal_device_register_poll( - pci_dev_h pdev, - pci_reg_h regh, - u64 *reg, - u32 op, - u64 mask, - u32 max_millis) -{ - u64 val64; - u32 i = 0; - vxge_hal_status_e ret = VXGE_HAL_FAIL; - - vxge_os_udelay(10); - - do { - val64 = vxge_os_pio_mem_read64(pdev, regh, reg); - if (op == 0 && !(val64 & mask)) { - return (VXGE_HAL_OK); - } else if (op == 1 && (val64 & mask) == mask) - return (VXGE_HAL_OK); - vxge_os_udelay(100); - } while (++i <= 9); - - do { - val64 = vxge_os_pio_mem_read64(pdev, regh, reg); - if (op == 0 && !(val64 & mask)) { - return (VXGE_HAL_OK); - } else if (op == 1 && (val64 & mask) == mask) { - return (VXGE_HAL_OK); - } - vxge_os_udelay(1000); - } while (++i < max_millis); - - return (ret); -} - -/* - * __hal_device_register_stall - * @pdev: PCI device object. - * @regh: BAR mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @reg: register to poll for - * @op: 0 - bit reset, 1 - bit set - * @mask: mask for logical "and" condition based on %op - * @max_millis: maximum time to try to poll in milliseconds - * - * Will poll certain register for specified amount of time. - * Will poll until masked bit is not cleared. - */ -vxge_hal_status_e -__hal_device_register_stall( - pci_dev_h pdev, - pci_reg_h regh, - u64 *reg, - u32 op, - u64 mask, - u32 max_millis) -{ - u64 val64; - u32 i = 0; - vxge_hal_status_e ret = VXGE_HAL_FAIL; - - vxge_os_stall(10); - - do { - val64 = vxge_os_pio_mem_read64(pdev, regh, reg); - if (op == 0 && !(val64 & mask)) { - return (VXGE_HAL_OK); - } else if (op == 1 && (val64 & mask) == mask) - return (VXGE_HAL_OK); - vxge_os_stall(100); - } while (++i <= 9); - - do { - val64 = vxge_os_pio_mem_read64(pdev, regh, reg); - if (op == 0 && !(val64 & mask)) { - return (VXGE_HAL_OK); - } else if (op == 1 && (val64 & mask) == mask) { - return (VXGE_HAL_OK); - } - vxge_os_stall(1000); - } while (++i < max_millis); - - return (ret); -} - -void* -vxge_hal_device_get_legacy_reg(pci_dev_h pdev, pci_reg_h regh, u8 *bar0) -{ - vxge_hal_legacy_reg_t *legacy_reg = NULL; - - /* - * If length of Bar0 is 16MB, then assume we are configured - * in MF8P_VP2 mode and add 8MB to get legacy_reg offsets - */ - if (vxge_os_pci_res_len(pdev, regh) == 0x1000000) - legacy_reg = (vxge_hal_legacy_reg_t *) - ((void *) (bar0 + 0x800000)); - else - legacy_reg = (vxge_hal_legacy_reg_t *) - ((void *) bar0); - - return (legacy_reg); -} - -/* - * __hal_device_reg_addr_get - * @hldev: HAL Device object. - * - * This routine sets the swapper and reads the toc pointer and initializes the - * register location pointers in the device object. It waits until the ric is - * completed initializing registers. - */ -vxge_hal_status_e -__hal_device_reg_addr_get(__hal_device_t *hldev) -{ - u64 val64; - u32 i; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(hldev); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - hldev->legacy_reg = (vxge_hal_legacy_reg_t *) - vxge_hal_device_get_legacy_reg(hldev->header.pdev, - hldev->header.regh0, hldev->header.bar0); - - status = __hal_legacy_swapper_set(hldev->header.pdev, - hldev->header.regh0, - hldev->legacy_reg); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->legacy_reg->toc_first_pointer); - - hldev->toc_reg = (vxge_hal_toc_reg_t *) - ((void *) (hldev->header.bar0 + val64)); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_common_pointer); - - hldev->common_reg = (vxge_hal_common_reg_t *) - ((void *) (hldev->header.bar0 + val64)); - - vxge_hal_info_log_device("COMMON = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev->common_reg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_memrepair_pointer); - - hldev->memrepair_reg = (vxge_hal_memrepair_reg_t *) - ((void *) (hldev->header.bar0 + val64)); - - vxge_hal_info_log_device("MEM REPAIR = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev->memrepair_reg); - - for (i = 0; i < VXGE_HAL_TITAN_PCICFGMGMT_REG_SPACES; i++) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_pcicfgmgmt_pointer[i]); - - hldev->pcicfgmgmt_reg[i] = (vxge_hal_pcicfgmgmt_reg_t *) - ((void *) (hldev->header.bar0 + val64)); - vxge_hal_info_log_device("PCICFG_MGMT[%d] = " - "0x"VXGE_OS_STXFMT, i, (ptr_t) hldev->pcicfgmgmt_reg[i]); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_mrpcim_pointer); - - hldev->mrpcim_reg = (vxge_hal_mrpcim_reg_t *) - ((void *) (hldev->header.bar0 + val64)); - - vxge_hal_info_log_device("MEM REPAIR = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev->mrpcim_reg); - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_srpcim_pointer[i]); - - hldev->srpcim_reg[i] = (vxge_hal_srpcim_reg_t *) - ((void *) (hldev->header.bar0 + val64)); - vxge_hal_info_log_device("SRPCIM[%d] =0x"VXGE_OS_STXFMT, i, - (ptr_t) hldev->srpcim_reg[i]); - } - - for (i = 0; i < VXGE_HAL_TITAN_VPMGMT_REG_SPACES; i++) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_vpmgmt_pointer[i]); - - hldev->vpmgmt_reg[i] = (vxge_hal_vpmgmt_reg_t *) - ((void *) (hldev->header.bar0 + val64)); - - vxge_hal_info_log_device("VPMGMT[%d] = 0x"VXGE_OS_STXFMT, i, - (ptr_t) hldev->vpmgmt_reg[i]); - } - - for (i = 0; i < VXGE_HAL_TITAN_VPATH_REG_SPACES; i++) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_vpath_pointer[i]); - - hldev->vpath_reg[i] = (vxge_hal_vpath_reg_t *) - ((void *) (hldev->header.bar0 + val64)); - - vxge_hal_info_log_device("VPATH[%d] = 0x"VXGE_OS_STXFMT, i, - (ptr_t) hldev->vpath_reg[i]); - - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_kdfc); - - switch (VXGE_HAL_TOC_GET_KDFC_INITIAL_BIR(val64)) { - case 0: - hldev->kdfc = hldev->header.bar0 + - VXGE_HAL_TOC_GET_KDFC_INITIAL_OFFSET(val64); - break; - case 2: - hldev->kdfc = hldev->header.bar1 + - VXGE_HAL_TOC_GET_KDFC_INITIAL_OFFSET(val64); - break; - case 4: - hldev->kdfc = hldev->header.bar2 + - VXGE_HAL_TOC_GET_KDFC_INITIAL_OFFSET(val64); - break; - default: - vxge_hal_info_log_device("Invalid BIR = 0x"VXGE_OS_STXFMT, - (ptr_t) VXGE_HAL_TOC_GET_KDFC_INITIAL_BIR(val64)); - break; - } - - vxge_hal_info_log_device("KDFC = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev->kdfc); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_usdc); - - switch (VXGE_HAL_TOC_GET_USDC_INITIAL_BIR(val64)) { - case 0: - hldev->usdc = hldev->header.bar0 + - VXGE_HAL_TOC_GET_USDC_INITIAL_OFFSET(val64); - break; - case 2: - hldev->usdc = hldev->header.bar1 + - VXGE_HAL_TOC_GET_USDC_INITIAL_OFFSET(val64); - break; - case 4: - hldev->usdc = hldev->header.bar2 + - VXGE_HAL_TOC_GET_USDC_INITIAL_OFFSET(val64); - break; - default: - vxge_hal_info_log_device("Invalid BIR = 0x"VXGE_OS_STXFMT, - (ptr_t) VXGE_HAL_TOC_GET_USDC_INITIAL_BIR(val64)); - break; - } - - vxge_hal_info_log_device("USDC = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev->usdc); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->vpath_rst_in_prog, 0, - VXGE_HAL_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG(0x1ffff), - VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - - if (status != VXGE_HAL_OK) { - vxge_hal_err_log_device("%s:vpath_rst_in_prog is not cleared", - __func__); - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_device_id_get - * @hldev: HAL Device object. - * - * This routine returns sets the device id and revision numbers into the device - * structure - */ -void -__hal_device_id_get(__hal_device_t *hldev) -{ - vxge_assert(hldev); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - vxge_offsetof(vxge_hal_pci_config_le_t, device_id), - 2, - &hldev->header.device_id); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - vxge_offsetof(vxge_hal_pci_config_le_t, revision), - 2, - &hldev->header.revision); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_device_access_rights_get: Get Access Rights of the driver - * @host_type: Host type. - * @func_id: Function Id - * - * This routine returns the Access Rights of the driver - */ -u32 -__hal_device_access_rights_get(u32 host_type, u32 func_id) -{ - u32 access_rights = VXGE_HAL_DEVICE_ACCESS_RIGHT_VPATH; - - switch (host_type) { - case VXGE_HAL_NO_MR_NO_SR_NORMAL_FUNCTION: - if (func_id == 0) { - access_rights |= - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM | - VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM; - } - break; - case VXGE_HAL_MR_NO_SR_VH0_BASE_FUNCTION: - access_rights |= VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM | - VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM; - break; - case VXGE_HAL_NO_MR_SR_VH0_FUNCTION0: - access_rights |= VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM | - VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM; - break; - case VXGE_HAL_NO_MR_SR_VH0_VIRTUAL_FUNCTION: - case VXGE_HAL_SR_VH_VIRTUAL_FUNCTION: - break; - case VXGE_HAL_MR_SR_VH0_INVALID_CONFIG: - break; - case VXGE_HAL_SR_VH_FUNCTION0: - case VXGE_HAL_VH_NORMAL_FUNCTION: - access_rights |= VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM; - break; - } - - return (access_rights); -} - -/* - * __hal_device_host_info_get - * @hldev: HAL Device object. - * - * This routine returns the host type assignments - */ -void -__hal_device_host_info_get(__hal_device_t *hldev) -{ - u64 val64; - u32 i; - - vxge_assert(hldev); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->host_type_assignments); - - hldev->host_type = (u32) - VXGE_HAL_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->vplane_assignments); - - hldev->srpcim_id = (u32) - VXGE_HAL_VPLANE_ASSIGNMENTS_GET_VPLANE_ASSIGNMENTS(val64); - - hldev->vpath_assignments = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->vpath_assignments); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpath_assignments & mBIT(i))) - continue; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->debug_assignments); - hldev->vh_id = - (u32) VXGE_HAL_DEBUG_ASSIGNMENTS_GET_VHLABEL(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->vpmgmt_reg[i]->vpath_to_func_map_cfg1); - hldev->func_id = - (u32) VXGE_HAL_VPATH_TO_FUNC_MAP_CFG1_GET_CFG1(val64); - - hldev->access_rights = __hal_device_access_rights_get( - hldev->host_type, hldev->func_id); - - if (hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - hldev->manager_up = TRUE; - } else { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->vpmgmt_reg[i]->srpcim_to_vpath_wmsg); - - hldev->manager_up = __hal_ifmsg_is_manager_up(val64); - } - - hldev->first_vp_id = i; - - break; - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_device_pci_e_info_get - Get PCI_E bus informations such as link_width - * and signalling rate - * @hldev: HAL device. - * @signalling_rate: pointer to a variable of enumerated type - * vxge_hal_pci_e_signalling_rate_e {}. - * @link_width: pointer to a variable of enumerated type - * vxge_hal_pci_e_link_width_e {}. - * - * Get pci-e signalling rate and link width. - * - * Returns: one of the vxge_hal_status_e {} enumerated types. - * VXGE_HAL_OK - for success. - * VXGE_HAL_ERR_INVALID_PCI_INFO - for invalid PCI information from the card. - * VXGE_HAL_ERR_BAD_DEVICE_ID - for invalid card. - * - */ -static vxge_hal_status_e -__hal_device_pci_e_info_get( - __hal_device_t *hldev, - vxge_hal_pci_e_signalling_rate_e *signalling_rate, - vxge_hal_pci_e_link_width_e *link_width) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_pci_e_capability_t *pci_e_caps; - - vxge_assert((hldev != NULL) && (signalling_rate != NULL) && - (link_width != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT - ", signalling_rate = 0x"VXGE_OS_STXFMT", " - "link_width = 0x"VXGE_OS_STXFMT, (ptr_t) hldev, - (ptr_t) signalling_rate, (ptr_t) link_width); - - pci_e_caps = (vxge_hal_pci_e_capability_t *) - (((u8 *) &hldev->pci_config_space_bios) + hldev->pci_e_caps); - - switch (pci_e_caps->pci_e_lnkcap & VXGE_HAL_PCI_EXP_LNKCAP_LNK_SPEED) { - case VXGE_HAL_PCI_EXP_LNKCAP_LS_2_5: - *signalling_rate = VXGE_HAL_PCI_E_SIGNALLING_RATE_2_5GB; - break; - case VXGE_HAL_PCI_EXP_LNKCAP_LS_5: - *signalling_rate = VXGE_HAL_PCI_E_SIGNALLING_RATE_5GB; - break; - default: - *signalling_rate = - VXGE_HAL_PCI_E_SIGNALLING_RATE_UNKNOWN; - break; - } - - switch ((pci_e_caps->pci_e_lnksta & - VXGE_HAL_PCI_EXP_LNKCAP_LNK_WIDTH) >> 4) { - case VXGE_HAL_PCI_EXP_LNKCAP_LW_X1: - *link_width = VXGE_HAL_PCI_E_LINK_WIDTH_X1; - break; - case VXGE_HAL_PCI_EXP_LNKCAP_LW_X2: - *link_width = VXGE_HAL_PCI_E_LINK_WIDTH_X2; - break; - case VXGE_HAL_PCI_EXP_LNKCAP_LW_X4: - *link_width = VXGE_HAL_PCI_E_LINK_WIDTH_X4; - break; - case VXGE_HAL_PCI_EXP_LNKCAP_LW_X8: - *link_width = VXGE_HAL_PCI_E_LINK_WIDTH_X8; - break; - case VXGE_HAL_PCI_EXP_LNKCAP_LW_X12: - *link_width = VXGE_HAL_PCI_E_LINK_WIDTH_X12; - break; - case VXGE_HAL_PCI_EXP_LNKCAP_LW_X16: - *link_width = VXGE_HAL_PCI_E_LINK_WIDTH_X16; - break; - case VXGE_HAL_PCI_EXP_LNKCAP_LW_X32: - *link_width = VXGE_HAL_PCI_E_LINK_WIDTH_X32; - break; - case VXGE_HAL_PCI_EXP_LNKCAP_LW_RES: - default: - *link_width = VXGE_HAL_PCI_E_LINK_WIDTH_UNKNOWN; - break; - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (status); -} - -/* - * __hal_device_hw_initialize - * @hldev: HAL device handle. - * - * Initialize X3100-V hardware. - */ -vxge_hal_status_e -__hal_device_hw_initialize(__hal_device_t *hldev) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(hldev); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - __hal_device_pci_e_init(hldev); - - /* update the pci mode, frequency, and width */ - if (__hal_device_pci_e_info_get(hldev, &hldev->header.signalling_rate, - &hldev->header.link_width) != VXGE_HAL_OK) { - hldev->header.signalling_rate = - VXGE_HAL_PCI_E_SIGNALLING_RATE_UNKNOWN; - hldev->header.link_width = VXGE_HAL_PCI_E_LINK_WIDTH_UNKNOWN; - /* - * FIXME: this cannot happen. - * But if it happens we cannot continue just like that - */ - vxge_hal_err_log_device("unable to get pci info == > %s : %d", - __func__, __LINE__); - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM) { - status = __hal_srpcim_initialize(hldev); - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - status = __hal_mrpcim_initialize(hldev); - } - - if (status == VXGE_HAL_OK) { - hldev->hw_is_initialized = 1; - hldev->header.terminating = 0; - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_reset - Reset device. - * @devh: HAL device handle. - * - * Soft-reset the device, reset the device stats except reset_cnt. - * - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_device_reset(vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!hldev->header.is_initialized) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - return (VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - } - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - status = vxge_hal_vpath_reset( - VXGE_HAL_VIRTUAL_PATH_HANDLE(&hldev->virtual_paths[i])); - - if (status != VXGE_HAL_OK) { - vxge_hal_err_log_device("vpath %d Reset Failed", i); - } - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_reset_poll - Poll the device for reset complete. - * @devh: HAL device handle. - * - * Poll the device for reset complete - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_device_reset_poll(vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!hldev->header.is_initialized) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - return (VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - } - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - status = vxge_hal_vpath_reset_poll( - VXGE_HAL_VIRTUAL_PATH_HANDLE(&hldev->virtual_paths[i])); - - if (status != VXGE_HAL_OK) { - vxge_hal_err_log_device("vpath %d Reset Poll Failed", - i); - } - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_device_mrpcim_reset_poll - Poll the device for mrpcim reset complete - * @devh: HAL device handle. - * - * Poll the device for mrpcim reset complete - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * VXGE_HAL_ERR_MANAGER_NOT_FOUND - MRPCIM/SRPCIM manager not found - * VXGE_HAL_ERR_TIME_OUT - Device Reset timed out - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_device_mrpcim_reset_poll(vxge_hal_device_h devh) -{ - u32 i = 0; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!hldev->header.is_initialized) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - return (VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - } - - if (!hldev->manager_up) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_MANAGER_NOT_FOUND); - return (VXGE_HAL_ERR_MANAGER_NOT_FOUND); - } - - status = __hal_ifmsg_device_reset_end_poll( - hldev, hldev->first_vp_id); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_TIME_OUT); - return (VXGE_HAL_ERR_TIME_OUT); - } - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - status = vxge_hal_vpath_reset_poll( - VXGE_HAL_VIRTUAL_PATH_HANDLE(&hldev->virtual_paths[i])); - - if (status != VXGE_HAL_OK) { - vxge_hal_err_log_device("vpath %d Reset Poll Failed", - i); - } - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_device_status - Check whether X3100 hardware is ready for - * operation. - * @devh: HAL device handle. - * @hw_status: X3100 status register. Returned by HAL. - * - * Check whether X3100 hardware is ready for operation. - * The checking includes TDMA, RDMA, PFC, PIC, MC_DRAM, and the rest - * hardware functional blocks. - * - * Returns: VXGE_HAL_OK if the device is ready for operation. Otherwise - * returns VXGE_HAL_FAIL. Also, fills in adapter status (in @hw_status). - * - * See also: vxge_hal_status_e {}. - * Usage: See ex_open {}. - */ -vxge_hal_status_e -vxge_hal_device_status(vxge_hal_device_h devh, u64 *hw_status) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (hw_status != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - *hw_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->adapter_status); - - vxge_hal_trace_log_device("Adapter_Status = 0x"VXGE_OS_LLXFMT, - *hw_status); - - if (!(*hw_status & VXGE_HAL_ADAPTER_STATUS_RTDMA_RTDMA_READY)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_RTDMA_RTDMA_READY); - return (VXGE_HAL_ERR_RTDMA_RTDMA_READY); - } - - if (!(*hw_status & VXGE_HAL_ADAPTER_STATUS_WRDMA_WRDMA_READY)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_WRDMA_WRDMA_READY); - return (VXGE_HAL_ERR_WRDMA_WRDMA_READY); - } - - if (!(*hw_status & VXGE_HAL_ADAPTER_STATUS_KDFC_KDFC_READY)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_KDFC_KDFC_READY); - return (VXGE_HAL_ERR_KDFC_KDFC_READY); - } - - if (!(*hw_status & VXGE_HAL_ADAPTER_STATUS_TPA_TMAC_BUF_EMPTY)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_TPA_TMAC_BUF_EMPTY); - return (VXGE_HAL_ERR_TPA_TMAC_BUF_EMPTY); - } - - if (!(*hw_status & VXGE_HAL_ADAPTER_STATUS_RDCTL_PIC_QUIESCENT)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_RDCTL_PIC_QUIESCENT); - return (VXGE_HAL_ERR_RDCTL_PIC_QUIESCENT); - } - - if (*hw_status & VXGE_HAL_ADAPTER_STATUS_XGMAC_NETWORK_FAULT) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_XGMAC_NETWORK_FAULT); - return (VXGE_HAL_ERR_XGMAC_NETWORK_FAULT); - } - - if (!(*hw_status & VXGE_HAL_ADAPTER_STATUS_ROCRC_OFFLOAD_QUIESCENT)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_ROCRC_OFFLOAD_QUIESCENT); - return (VXGE_HAL_ERR_ROCRC_OFFLOAD_QUIESCENT); - } - - if (!(*hw_status & - VXGE_HAL_ADAPTER_STATUS_G3IF_FB_G3IF_FB_GDDR3_READY)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_G3IF_FB_G3IF_FB_GDDR3_READY); - return (VXGE_HAL_ERR_G3IF_FB_G3IF_FB_GDDR3_READY); - } - - if (!(*hw_status & - VXGE_HAL_ADAPTER_STATUS_G3IF_CM_G3IF_CM_GDDR3_READY)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_G3IF_CM_G3IF_CM_GDDR3_READY); - return (VXGE_HAL_ERR_G3IF_CM_G3IF_CM_GDDR3_READY); - } - -#ifndef VXGE_HAL_TITAN_EMULATION - if (*hw_status & VXGE_HAL_ADAPTER_STATUS_RIC_RIC_RUNNING) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_RIC_RIC_RUNNING); - return (VXGE_HAL_ERR_RIC_RIC_RUNNING); - } -#endif - - if (*hw_status & VXGE_HAL_ADAPTER_STATUS_CMG_C_PLL_IN_LOCK) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_CMG_C_PLL_IN_LOCK); - return (VXGE_HAL_ERR_CMG_C_PLL_IN_LOCK); - } - - if (*hw_status & VXGE_HAL_ADAPTER_STATUS_XGMAC_X_PLL_IN_LOCK) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_XGMAC_X_PLL_IN_LOCK); - return (VXGE_HAL_ERR_XGMAC_X_PLL_IN_LOCK); - } - - if (*hw_status & VXGE_HAL_ADAPTER_STATUS_FBIF_M_PLL_IN_LOCK) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_FBIF_M_PLL_IN_LOCK); - return (VXGE_HAL_ERR_FBIF_M_PLL_IN_LOCK); - } - - if (!(*hw_status & VXGE_HAL_ADAPTER_STATUS_PCC_PCC_IDLE(0xFF))) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PCC_PCC_IDLE); - return (VXGE_HAL_ERR_PCC_PCC_IDLE); - } - - if (!(*hw_status & - VXGE_HAL_ADAPTER_STATUS_ROCRC_RC_PRC_QUIESCENT(0xFF))) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_ROCRC_RC_PRC_QUIESCENT); - return (VXGE_HAL_ERR_ROCRC_RC_PRC_QUIESCENT); - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0x"VXGE_OS_STXFMT, - __FILE__, __func__, __LINE__, (ptr_t) *hw_status); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_device_is_slot_freeze - * @devh: the device - * - * Returns non-zero if the slot is freezed. - * The determination is made based on the adapter_status - * register which will never give all FFs, unless PCI read - * cannot go through. - */ -int -vxge_hal_device_is_slot_freeze(vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - u16 device_id; - u64 adapter_status; - - vxge_assert(devh); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - adapter_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->adapter_status); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - vxge_offsetof(vxge_hal_pci_config_le_t, device_id), - 2, - &device_id); - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - (adapter_status == VXGE_HAL_ALL_FOXES) || (device_id == 0xffff)); - - return ((adapter_status == VXGE_HAL_ALL_FOXES) || - (device_id == 0xffff)); -} - -/* - * vxge_hal_device_intr_enable - Enable interrupts. - * @devh: HAL device handle. - * @op: One of the vxge_hal_device_intr_e enumerated values specifying - * the type(s) of interrupts to enable. - * - * Enable X3100 interrupts. The function is to be executed the last in - * X3100 initialization sequence. - * - * See also: vxge_hal_device_intr_disable() - */ -void -vxge_hal_device_intr_enable( - vxge_hal_device_h devh) -{ - u32 i; - u64 val64; - u32 val32; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - vxge_hal_device_mask_all(hldev); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - (void) __hal_vpath_intr_enable(&hldev->virtual_paths[i]); - } - - if ((hldev->header.config.intr_mode == VXGE_HAL_INTR_MODE_IRQLINE) || - (hldev->header.config.intr_mode == VXGE_HAL_INTR_MODE_EMULATED_INTA)) { - - val64 = hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX] | - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_BMAP]; - - if (val64 != 0) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_status0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - ~val64, - &hldev->common_reg->tim_int_mask0); - } - - val32 = hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX] | - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_BMAP]; - - if (val32 != 0) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - val32, - &hldev->common_reg->tim_int_status1); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - ~val32, - &hldev->common_reg->tim_int_mask1); - } - } - - vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->titan_general_int_status); - - vxge_hal_device_unmask_all(hldev); - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_intr_disable - Disable X3100 interrupts. - * @devh: HAL device handle. - * @op: One of the vxge_hal_device_intr_e enumerated values specifying - * the type(s) of interrupts to disable. - * - * Disable X3100 interrupts. - * - * See also: vxge_hal_device_intr_enable() - */ -void -vxge_hal_device_intr_disable( - vxge_hal_device_h devh) -{ - u32 i; - u64 val64; - u32 val32; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - vxge_hal_device_mask_all(hldev); - - if ((hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_IRQLINE) || - (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA)) { - - val64 = hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX] | - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_BMAP]; - - if (val64 != 0) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - } - - val32 = hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX] | - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_BMAP]; - - if (val32 != 0) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - val32, - &hldev->common_reg->tim_int_mask1); - } - } - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - (void) __hal_vpath_intr_disable(&hldev->virtual_paths[i]); - } - - vxge_hal_device_unmask_all(hldev); - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_mask_all - Mask all device interrupts. - * @devh: HAL device handle. - * - * Mask all device interrupts. - * - * See also: vxge_hal_device_unmask_all() - */ -void -vxge_hal_device_mask_all( - vxge_hal_device_h devh) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - val64 = VXGE_HAL_TITAN_MASK_ALL_INT_ALARM | - VXGE_HAL_TITAN_MASK_ALL_INT_TRAFFIC; - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->titan_mask_all_int); - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_unmask_all - Unmask all device interrupts. - * @devh: HAL device handle. - * - * Unmask all device interrupts. - * - * See also: vxge_hal_device_mask_all() - */ -void -vxge_hal_device_unmask_all( - vxge_hal_device_h devh) -{ - u64 val64 = 0; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (hldev->header.config.intr_mode == VXGE_HAL_INTR_MODE_IRQLINE) - val64 = VXGE_HAL_TITAN_MASK_ALL_INT_TRAFFIC; - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->titan_mask_all_int); - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_begin_irq - Begin IRQ processing. - * @devh: HAL device handle. - * @skip_alarms: Do not clear the alarms - * @reason: "Reason" for the interrupt, the value of X3100's - * general_int_status register. - * - * The function performs two actions, It first checks whether (shared IRQ) the - * interrupt was raised by the device. Next, it masks the device interrupts. - * - * Note: - * vxge_hal_device_begin_irq() does not flush MMIO writes through the - * bridge. Therefore, two back-to-back interrupts are potentially possible. - * It is the responsibility of the ULD to make sure that only one - * vxge_hal_device_continue_irq() runs at a time. - * - * Returns: 0, if the interrupt is not "ours" (note that in this case the - * device remain enabled). - * Otherwise, vxge_hal_device_begin_irq() returns 64bit general adapter - * status. - * See also: vxge_hal_device_handle_irq() - */ -vxge_hal_status_e -vxge_hal_device_begin_irq( - vxge_hal_device_h devh, - u32 skip_alarms, - u64 *reason) -{ - u32 i; - u64 val64; - u64 adapter_status; - u64 vpath_mask; - __hal_device_t *hldev = (__hal_device_t *) devh; - vxge_hal_status_e ret = VXGE_HAL_ERR_WRONG_IRQ; - vxge_hal_status_e status; - - vxge_assert((hldev != NULL) && (reason != NULL)); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq( - "devh = 0x"VXGE_OS_STXFMT", skip_alarms = %d, " - "reason = 0x"VXGE_OS_STXFMT, (ptr_t) devh, - skip_alarms, (ptr_t) reason); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->titan_general_int_status); - - if (vxge_os_unlikely(!val64)) { - /* not Titan interrupt */ - *reason = 0; - ret = VXGE_HAL_ERR_WRONG_IRQ; - vxge_hal_info_log_device_irq("wrong_isr general_int_status = \ - 0x%llx", val64); - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, ret); - return (ret); - } - - if (vxge_os_unlikely(val64 == VXGE_HAL_ALL_FOXES)) { - - adapter_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->adapter_status); - - if (adapter_status == VXGE_HAL_ALL_FOXES) { - vxge_hal_info_log_device_irq("%s:Slot is frozen", - __func__); - __hal_device_handle_error(hldev, - NULL_VPID, VXGE_HAL_EVENT_SLOT_FREEZE); - *reason = 0; - ret = VXGE_HAL_ERR_SLOT_FREEZE; - goto exit; - - } - } - - *reason = val64; - - vpath_mask = hldev->vpaths_deployed >> - (64 - VXGE_HAL_MAX_VIRTUAL_PATHS); - - if (val64 & - VXGE_HAL_TITAN_GENERAL_INT_STATUS_VPATH_TRAFFIC_INT(vpath_mask)) { - hldev->header.traffic_intr_cnt++; - ret = VXGE_HAL_TRAFFIC_INTERRUPT; - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, ret); - return (ret); - } - - hldev->header.not_traffic_intr_cnt++; - - if (vxge_os_unlikely(val64 & - VXGE_HAL_TITAN_GENERAL_INT_STATUS_VPATH_ALARM_INT)) { - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - status = __hal_vpath_alarm_process( - &hldev->virtual_paths[i], - skip_alarms); - - if (status != VXGE_HAL_ERR_WRONG_IRQ) - ret = status; - - } - - } -exit: - vxge_hal_trace_log_device_irq( - "<==Error in %s:%s:%d result = 0x%x general_int_status= 0x%llx", - __FILE__, __func__, __LINE__, ret, val64); - return (ret); -} - -/* - * vxge_hal_device_continue_irq - Continue handling IRQ: process all - * completed descriptors. - * @devh: HAL device handle. - * - * Process completed descriptors and unmask the device interrupts. - * - * The vxge_hal_device_continue_irq() walks all open virtual paths - * and calls upper-layer driver (ULD) via supplied completion - * callback. - * - * Note that the vxge_hal_device_continue_irq is part of the _fast_ path. - * To optimize the processing, the function does _not_ check for - * errors and alarms. - * - * Returns: VXGE_HAL_OK. - * - * See also: vxge_hal_device_handle_irq() - * vxge_hal_ring_rxd_next_completed(), - * vxge_hal_fifo_txdl_next_completed(), vxge_hal_ring_callback_f {}, - * vxge_hal_fifo_callback_f {}. - */ -vxge_hal_status_e -vxge_hal_device_continue_irq( - vxge_hal_device_h devh) -{ - u32 i; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", __FILE__, - __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - (void) vxge_hal_vpath_continue_irq( - VXGE_HAL_VIRTUAL_PATH_HANDLE(&hldev->virtual_paths[i])); - - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_device_handle_irq - Handle device IRQ. - * @devh: HAL device handle. - * @skip_alarms: Do not clear the alarms - * - * Perform the complete handling of the line interrupt. The function - * performs two calls. - * First it uses vxge_hal_device_begin_irq() to check the reason for - * the interrupt and mask the device interrupts. - * Second, it calls vxge_hal_device_continue_irq() to process all - * completed descriptors and re-enable the interrupts. - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_ERR_WRONG_IRQ - (shared) IRQ produced by other device. - * - * See also: vxge_hal_device_begin_irq(), vxge_hal_device_continue_irq(). - */ -vxge_hal_status_e -vxge_hal_device_handle_irq( - vxge_hal_device_h devh, - u32 skip_alarms) -{ - u64 reason; - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT", \ - skip_alarms = %d", - (ptr_t) devh, skip_alarms); - - vxge_hal_device_mask_all(hldev); - - status = vxge_hal_device_begin_irq(hldev, skip_alarms, &reason); - if (vxge_os_unlikely(status == VXGE_HAL_ERR_WRONG_IRQ)) { - vxge_hal_device_unmask_all(hldev); - goto exit; - } - if (status == VXGE_HAL_TRAFFIC_INTERRUPT) { - - vxge_hal_device_clear_rx(hldev); - - status = vxge_hal_device_continue_irq(hldev); - - vxge_hal_device_clear_tx(hldev); - - } - - if (vxge_os_unlikely((status == VXGE_HAL_ERR_CRITICAL) && skip_alarms)) - /* ULD needs to unmask explicitely */ - goto exit; - - vxge_hal_device_unmask_all(hldev); - -exit: - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_device_handle_link_up_ind - * @hldev: HAL device handle. - * - * Link up indication handler. The function is invoked by HAL when - * X3100 indicates that the link is up for programmable amount of time. - */ -vxge_hal_status_e -__hal_device_handle_link_up_ind(__hal_device_t *hldev) -{ - vxge_assert(hldev); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - /* - * If the previous link state is not down, return. - */ - if (hldev->header.link_state == VXGE_HAL_LINK_UP) { - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - hldev->header.link_state = VXGE_HAL_LINK_UP; - - /* notify ULD */ - if (g_vxge_hal_driver->uld_callbacks.link_up) { - g_vxge_hal_driver->uld_callbacks.link_up( - hldev, - hldev->header.upper_layer_data); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * __hal_device_handle_link_down_ind - * @hldev: HAL device handle. - * - * Link down indication handler. The function is invoked by HAL when - * X3100 indicates that the link is down. - */ -vxge_hal_status_e -__hal_device_handle_link_down_ind(__hal_device_t *hldev) -{ - vxge_assert(hldev); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - /* - * If the previous link state is not down, return. - */ - if (hldev->header.link_state == VXGE_HAL_LINK_DOWN) { - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - hldev->header.link_state = VXGE_HAL_LINK_DOWN; - - /* notify ULD */ - if (g_vxge_hal_driver->uld_callbacks.link_down) { - g_vxge_hal_driver->uld_callbacks.link_down( - hldev, - hldev->header.upper_layer_data); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_device_link_state_test - Test the link state. - * @devh: HAL device handle. - * - * Test link state. - * Returns: link state. - */ -vxge_hal_device_link_state_e -vxge_hal_device_link_state_test( - vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_device_link_state_e status = VXGE_HAL_LINK_NONE; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpath_assignments & mBIT(i))) - continue; - - status = - __hal_vpath_link_state_test(&hldev->virtual_paths[i]); - - break; - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_link_state_poll - Poll for the link state. - * @devh: HAL device handle. - * - * Get link state. - * Returns: link state. - */ -vxge_hal_device_link_state_e -vxge_hal_device_link_state_poll( - vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_device_link_state_e link_state = VXGE_HAL_LINK_NONE; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpath_assignments & mBIT(i))) - continue; - - hldev->header.link_state = VXGE_HAL_LINK_NONE; - - link_state = - __hal_vpath_link_state_poll(&hldev->virtual_paths[i]); - - break; - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, link_state); - return (link_state); -} - -/* - * vxge_hal_device_data_rate_poll - Poll for the data rate. - * @devh: HAL device handle. - * - * Get data rate. - * Returns: data rate. - */ -vxge_hal_device_data_rate_e -vxge_hal_device_data_rate_poll( - vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_device_data_rate_e data_rate = VXGE_HAL_DATA_RATE_UNKNOWN; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - data_rate = - __hal_vpath_data_rate_poll(&hldev->virtual_paths[i]); - - break; - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, data_rate); - return (data_rate); -} - -/* - * vxge_hal_device_lag_mode_get - Get Current LAG Mode - * @devh: HAL device handle. - * - * Get Current LAG Mode - */ -vxge_hal_device_lag_mode_e -vxge_hal_device_lag_mode_get( - vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_device_lag_mode_e lag_mode = VXGE_HAL_DEVICE_LAG_MODE_UNKNOWN; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - lag_mode = - __hal_vpath_lag_mode_get(&hldev->virtual_paths[i]); - - break; - - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, lag_mode); - return (lag_mode); -} - - -/* - * __hal_device_handle_error - Handle error - * @hldev: HAL device - * @vp_id: Vpath Id - * @type: Error type. Please see vxge_hal_event_e {} - * - * Handle error. - */ -void -__hal_device_handle_error( - __hal_device_t *hldev, - u32 vp_id, - vxge_hal_event_e type) -{ - vxge_assert(hldev); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq( - "hldev = 0x"VXGE_OS_STXFMT", vp_id = %d, type = %d", - (ptr_t) hldev, vp_id, type); - - switch (type) { - default: - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_TYPE); - return; - case VXGE_HAL_EVENT_UNKNOWN: - if (hldev->header.config.dump_on_unknown) { - (void) vxge_hal_aux_device_dump(hldev); - } - break; - case VXGE_HAL_EVENT_SERR: - if (hldev->header.config.dump_on_serr) { - (void) vxge_hal_aux_device_dump(hldev); - } - break; - case VXGE_HAL_EVENT_CRITICAL: - case VXGE_HAL_EVENT_SRPCIM_CRITICAL: - case VXGE_HAL_EVENT_MRPCIM_CRITICAL: - if (hldev->header.config.dump_on_critical) { - (void) vxge_hal_aux_device_dump(hldev); - } - break; - case VXGE_HAL_EVENT_ECCERR: - if (hldev->header.config.dump_on_eccerr) { - (void) vxge_hal_aux_device_dump(hldev); - } - break; - case VXGE_HAL_EVENT_KDFCCTL: - break; - case VXGE_HAL_EVENT_DEVICE_RESET_START: - break; - case VXGE_HAL_EVENT_DEVICE_RESET_COMPLETE: - break; - case VXGE_HAL_EVENT_VPATH_RESET_START: - break; - case VXGE_HAL_EVENT_VPATH_RESET_COMPLETE: - break; - case VXGE_HAL_EVENT_SLOT_FREEZE: - break; - } - - - /* notify ULD */ - if (g_vxge_hal_driver->uld_callbacks.crit_err) { - g_vxge_hal_driver->uld_callbacks.crit_err( - (vxge_hal_device_h) hldev, - hldev->header.upper_layer_data, - type, - vp_id); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_mask_tx - Mask Tx interrupts. - * @devh: HAL device. - * - * Mask Tx device interrupts. - * - * See also: vxge_hal_device_unmask_tx(), vxge_hal_device_mask_rx(), - * vxge_hal_device_clear_tx(). - */ -void -vxge_hal_device_mask_tx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] != 0) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX], - &hldev->common_reg->tim_int_mask0); - } - - if (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] != 0) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX], - &hldev->common_reg->tim_int_mask1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_clear_tx - Acknowledge (that is, clear) the - * condition that has caused the TX interrupt. - * @devh: HAL device. - * - * Acknowledge (that is, clear) the condition that has caused - * the Tx interrupt. - * See also: vxge_hal_device_begin_irq(), vxge_hal_device_continue_irq(), - * vxge_hal_device_clear_rx(), vxge_hal_device_mask_tx(). - */ -void -vxge_hal_device_clear_tx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] != 0) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX], - &hldev->common_reg->tim_int_status0); - } - - if (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] != 0) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX], - &hldev->common_reg->tim_int_status1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_unmask_tx - Unmask Tx interrupts. - * @devh: HAL device. - * - * Unmask Tx device interrupts. - * - * See also: vxge_hal_device_mask_tx(), vxge_hal_device_clear_tx(). - */ -void -vxge_hal_device_unmask_tx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] != 0) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - ~(hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX]), - &hldev->common_reg->tim_int_mask0); - } - - if (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] != 0) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - ~(hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX]), - &hldev->common_reg->tim_int_mask1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_mask_rx - Mask Rx interrupts. - * @devh: HAL device. - * - * Mask Rx device interrupts. - * - * See also: vxge_hal_device_unmask_rx(), vxge_hal_device_mask_tx(), - * vxge_hal_device_clear_rx(). - */ -void -vxge_hal_device_mask_rx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX] != 0) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX], - &hldev->common_reg->tim_int_mask0); - } - - if (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX] != 0) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX], - &hldev->common_reg->tim_int_mask1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_clear_rx - Acknowledge (that is, clear) the - * condition that has caused the RX interrupt. - * @devh: HAL device. - * - * Acknowledge (that is, clear) the condition that has caused - * the Rx interrupt. - * See also: vxge_hal_device_begin_irq(), vxge_hal_device_continue_irq(), - * vxge_hal_device_clear_tx(), vxge_hal_device_mask_rx(). - */ -void -vxge_hal_device_clear_rx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX] != 0) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX], - &hldev->common_reg->tim_int_status0); - } - - if (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX] != 0) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX], - &hldev->common_reg->tim_int_status1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_unmask_rx - Unmask Rx interrupts. - * @devh: HAL device. - * - * Unmask Rx device interrupts. - * - * See also: vxge_hal_device_mask_rx(), vxge_hal_device_clear_rx(). - */ -void -vxge_hal_device_unmask_rx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX] != 0) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - ~(hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX]), - &hldev->common_reg->tim_int_mask0); - } - - if (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX] != 0) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - ~(hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX]), - &hldev->common_reg->tim_int_mask1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_mask_tx_rx - Mask Tx and Rx interrupts. - * @devh: HAL device. - * - * Mask Tx and Rx device interrupts. - * - * See also: vxge_hal_device_unmask_tx_rx(), vxge_hal_device_clear_tx_rx(). - */ -void -vxge_hal_device_mask_tx_rx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if ((hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] != 0) || - (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX] != 0)) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX]), - &hldev->common_reg->tim_int_mask0); - } - - if ((hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] != 0) || - (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX] != 0)) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX]), - &hldev->common_reg->tim_int_mask1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_clear_tx_rx - Acknowledge (that is, clear) the - * condition that has caused the Tx and RX interrupt. - * @devh: HAL device. - * - * Acknowledge (that is, clear) the condition that has caused - * the Tx and Rx interrupt. - * See also: vxge_hal_device_begin_irq(), vxge_hal_device_continue_irq(), - * vxge_hal_device_mask_tx_rx(), vxge_hal_device_unmask_tx_rx(). - */ -void -vxge_hal_device_clear_tx_rx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if ((hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] != 0) || - (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX] != 0)) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX]), - &hldev->common_reg->tim_int_status0); - } - - if ((hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] != 0) || - (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX] != 0)) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX]), - &hldev->common_reg->tim_int_status1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_unmask_tx_rx - Unmask Tx and Rx interrupts. - * @devh: HAL device. - * - * Unmask Rx device interrupts. - * - * See also: vxge_hal_device_mask_tx_rx(), vxge_hal_device_clear_tx_rx(). - */ -void -vxge_hal_device_unmask_tx_rx( - vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_device_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if ((hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] != 0) || - (hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX] != 0)) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - ~(hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask0[VXGE_HAL_VPATH_INTR_RX]), - &hldev->common_reg->tim_int_mask0); - } - - if ((hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] != 0) || - (hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX] != 0)) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - ~(hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_TX] | - hldev->tim_int_mask1[VXGE_HAL_VPATH_INTR_RX]), - &hldev->common_reg->tim_int_mask1); - } - - vxge_hal_trace_log_device_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_hw_info_get - Get the hw information - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @bar0: Address of BAR0 in PCI config - * @hw_info: Buffer to return vxge_hal_device_hw_info_t {} structure - * - * Returns the vpath mask that has the bits set for each vpath allocated - * for the driver, FW version information and the first mac addresse for - * each vpath - */ -vxge_hal_status_e -vxge_hal_device_hw_info_get( - pci_dev_h pdev, - pci_reg_h regh0, - u8 *bar0, - vxge_hal_device_hw_info_t *hw_info) -{ - u32 i; - u64 val64; - vxge_hal_legacy_reg_t *legacy_reg; - vxge_hal_toc_reg_t *toc_reg; - vxge_hal_mrpcim_reg_t *mrpcim_reg; - vxge_hal_common_reg_t *common_reg; - vxge_hal_vpath_reg_t *vpath_reg; - vxge_hal_vpmgmt_reg_t *vpmgmt_reg; - vxge_hal_status_e status; - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "bar0 = 0x"VXGE_OS_STXFMT", hw_info = 0x"VXGE_OS_STXFMT, - (ptr_t) pdev, (ptr_t) regh0, (ptr_t) bar0, (ptr_t) hw_info); - - vxge_assert((bar0 != NULL) && (hw_info != NULL)); - - vxge_os_memzero(hw_info, sizeof(vxge_hal_device_hw_info_t)); - - legacy_reg = (vxge_hal_legacy_reg_t *) - vxge_hal_device_get_legacy_reg(pdev, regh0, bar0); - - status = __hal_legacy_swapper_set(pdev, regh0, legacy_reg); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &legacy_reg->toc_first_pointer); - - toc_reg = (vxge_hal_toc_reg_t *) ((void *) (bar0 + val64)); - - val64 = - vxge_os_pio_mem_read64(pdev, regh0, &toc_reg->toc_common_pointer); - - common_reg = (vxge_hal_common_reg_t *) ((void *) (bar0 + val64)); - - status = vxge_hal_device_register_poll(pdev, regh0, - &common_reg->vpath_rst_in_prog, 0, - VXGE_HAL_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG(0x1ffff), - VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - hw_info->vpath_mask = vxge_os_pio_mem_read64(pdev, regh0, - &common_reg->vpath_assignments); - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &common_reg->host_type_assignments); - - hw_info->host_type = (u32) - VXGE_HAL_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS(val64); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!((hw_info->vpath_mask) & mBIT(i))) - continue; - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &toc_reg->toc_vpmgmt_pointer[i]); - - vpmgmt_reg = (vxge_hal_vpmgmt_reg_t *) - ((void *) (bar0 + val64)); - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &vpmgmt_reg->vpath_to_func_map_cfg1); - hw_info->func_id = (u32) - VXGE_HAL_VPATH_TO_FUNC_MAP_CFG1_GET_CFG1( - val64); - - if (__hal_device_access_rights_get(hw_info->host_type, - hw_info->func_id) & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &toc_reg->toc_mrpcim_pointer); - - mrpcim_reg = (vxge_hal_mrpcim_reg_t *) - ((void *) (bar0 + val64)); - - vxge_os_pio_mem_write64(pdev, regh0, - 0, - &mrpcim_reg->xgmac_gen_fw_memo_mask); - vxge_os_wmb(); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &toc_reg->toc_vpath_pointer[i]); - - vpath_reg = (vxge_hal_vpath_reg_t *) ((void *) (bar0 + val64)); - - (void) __hal_vpath_fw_flash_ver_get(pdev, regh0, i, vpath_reg, - &hw_info->fw_version, - &hw_info->fw_date, - &hw_info->flash_version, - &hw_info->flash_date); - - (void) __hal_vpath_card_info_get(pdev, regh0, i, vpath_reg, - hw_info->serial_number, - hw_info->part_number, - hw_info->product_description); - - (void) __hal_vpath_pmd_info_get(pdev, regh0, i, vpath_reg, - &hw_info->ports, - &hw_info->pmd_port0, - &hw_info->pmd_port1); - - hw_info->function_mode = - __hal_vpath_pci_func_mode_get(pdev, regh0, i, vpath_reg); - - break; - } - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!((hw_info->vpath_mask) & mBIT(i))) - continue; - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &toc_reg->toc_vpath_pointer[i]); - - vpath_reg = (vxge_hal_vpath_reg_t *) ((void *) (bar0 + val64)); - - status = __hal_vpath_hw_addr_get(pdev, regh0, i, vpath_reg, - hw_info->mac_addrs[i], hw_info->mac_addr_masks[i]); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - - } - - } - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_device_initialize - Initialize X3100 device. - * @hldev: HAL device handle. - * @attr: pointer to vxge_hal_device_attr_t structure - * @device_config: Configuration to be _applied_ to the device, - * For the X3100 configuration "knobs" please - * refer to vxge_hal_device_config_t and X3100 - * User Guide. - * - * Initialize X3100 device. Note that all the arguments of this public API - * are 'IN', including @hldev. Upper-layer driver (ULD) cooperates with - * OS to find new X3100 device, locate its PCI and memory spaces. - * - * When done, the ULD allocates sizeof(__hal_device_t) bytes for HAL - * to enable the latter to perform X3100 hardware initialization. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED - Driver is not initialized. - * VXGE_HAL_ERR_BAD_DEVICE_CONFIG - Device configuration params are not - * valid. - * VXGE_HAL_ERR_OUT_OF_MEMORY - Memory allocation failed. - * VXGE_HAL_ERR_BAD_SUBSYSTEM_ID - Device subsystem id is invalid. - * VXGE_HAL_ERR_INVALID_MAC_ADDRESS - Device mac address in not valid. - * VXGE_HAL_INF_MEM_STROBE_CMD_EXECUTING - Failed to retrieve the mac - * address within the time(timeout) or TTI/RTI initialization failed. - * VXGE_HAL_ERR_SWAPPER_CTRL - Failed to configure swapper control. - * - * See also: __hal_device_terminate(), vxge_hal_status_e {} - * vxge_hal_device_attr_t {}. - */ -vxge_hal_status_e -vxge_hal_device_initialize( - vxge_hal_device_h *devh, - vxge_hal_device_attr_t *attr, - vxge_hal_device_config_t *device_config) -{ - u32 i; - u32 nblocks = 0; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert((devh != NULL) && - (attr != NULL) && (device_config != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "devh = 0x"VXGE_OS_STXFMT", attr = 0x"VXGE_OS_STXFMT", " - "device_config = 0x"VXGE_OS_STXFMT, (ptr_t) devh, (ptr_t) attr, - (ptr_t) device_config); - - /* sanity check */ - if (g_vxge_hal_driver == NULL || - !g_vxge_hal_driver->is_initialized) { - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED); - return (VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED); - } - - status = __hal_device_config_check(device_config); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - hldev = (__hal_device_t *) vxge_os_malloc(attr->pdev, - sizeof(__hal_device_t)); - - if (hldev == NULL) { - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - vxge_os_memzero(hldev, sizeof(__hal_device_t)); - - hldev->header.magic = VXGE_HAL_DEVICE_MAGIC; - - __hal_channel_init_pending_list(hldev); - - vxge_hal_device_debug_set(hldev, - device_config->debug_level, - device_config->debug_mask); - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - hldev->trace_buf.size = device_config->tracebuf_size; - hldev->trace_buf.data = - (u8 *) vxge_os_malloc(attr->pdev, hldev->trace_buf.size); - if (hldev->trace_buf.data == NULL) { - vxge_os_printf("cannot allocate trace buffer!\n"); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - hldev->trace_buf.offset = 0; - hldev->trace_buf.wrapped_count = 0; - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); -#endif - - vxge_hal_info_log_device("device 0x"VXGE_OS_STXFMT" is initializing", - (ptr_t) hldev); - - /* apply config */ - vxge_os_memcpy(&hldev->header.config, device_config, - sizeof(vxge_hal_device_config_t)); - - hldev->header.regh0 = attr->regh0; - hldev->header.regh1 = attr->regh1; - hldev->header.regh2 = attr->regh2; - hldev->header.bar0 = attr->bar0; - hldev->header.bar1 = attr->bar1; - hldev->header.bar2 = attr->bar2; - hldev->header.pdev = attr->pdev; - hldev->header.irqh = attr->irqh; - hldev->header.cfgh = attr->cfgh; - - if ((status = __hal_device_reg_addr_get(hldev)) != VXGE_HAL_OK) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - vxge_hal_device_terminate(hldev); - return (status); - } - - __hal_device_id_get(hldev); - - __hal_device_host_info_get(hldev); - - - nblocks += 1; /* For MRPCIM stats */ - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpath_assignments & mBIT(i))) - continue; - - if (device_config->vp_config[i].ring.enable == - VXGE_HAL_RING_ENABLE) { - nblocks += - (device_config->vp_config[i].ring.ring_length + - vxge_hal_ring_rxds_per_block_get( - device_config->vp_config[i].ring.buffer_mode) - 1) / - vxge_hal_ring_rxds_per_block_get( - device_config->vp_config[i].ring.buffer_mode); - } - - if ((device_config->vp_config[i].fifo.enable == - VXGE_HAL_FIFO_ENABLE) && - ((device_config->vp_config[i].fifo.max_frags * - sizeof(vxge_hal_fifo_txd_t)) <= - VXGE_OS_HOST_PAGE_SIZE)) { - nblocks += - ((device_config->vp_config[i].fifo.fifo_length * - sizeof(vxge_hal_fifo_txd_t) * - device_config->vp_config[i].fifo.max_frags) + - VXGE_OS_HOST_PAGE_SIZE - 1) / - VXGE_OS_HOST_PAGE_SIZE; - } - - - nblocks += 1; /* For vpath stats */ - - } - - if (__hal_blockpool_create(hldev, - &hldev->block_pool, - device_config->dma_blockpool_initial + nblocks, - device_config->dma_blockpool_incr, - device_config->dma_blockpool_min, - device_config->dma_blockpool_max + nblocks) != VXGE_HAL_OK) { - vxge_hal_info_log_device("%s:__hal_blockpool_create failed", - __func__); - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - vxge_hal_device_terminate(hldev); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - - status = __hal_device_hw_initialize(hldev); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - vxge_hal_device_terminate(hldev); - return (status); - } - - hldev->dump_buf = (char *) vxge_os_malloc(hldev->header.pdev, - VXGE_HAL_DUMP_BUF_SIZE); - if (hldev->dump_buf == NULL) { - vxge_hal_info_log_device("%s:vxge_os_malloc failed ", - __func__); - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - vxge_hal_device_terminate(hldev); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - hldev->header.is_initialized = 1; - - *devh = hldev; - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_device_terminate - Terminate X3100 device. - * @devh: HAL device handle. - * - * Terminate HAL device. - * - * See also: vxge_hal_device_initialize(). - */ -void -vxge_hal_device_terminate(vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(g_vxge_hal_driver != NULL); - vxge_assert(hldev != NULL); - vxge_assert(hldev->header.magic == VXGE_HAL_DEVICE_MAGIC); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - hldev->header.terminating = 1; - hldev->header.is_initialized = 0; - hldev->in_poll = 0; - hldev->header.magic = VXGE_HAL_DEVICE_DEAD; - - if (hldev->dump_buf) { - vxge_os_free(hldev->header.pdev, hldev->dump_buf, - VXGE_HAL_DUMP_BUF_SIZE); - hldev->dump_buf = NULL; - } - - if (hldev->srpcim != NULL) - (void) __hal_srpcim_terminate(hldev); - - if (hldev->mrpcim != NULL) - (void) __hal_mrpcim_terminate(hldev); - - __hal_channel_destroy_pending_list(hldev); - - - __hal_blockpool_destroy(&hldev->block_pool); - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - if (hldev->trace_buf.size) { - vxge_os_free(NULL, - hldev->trace_buf.data, - hldev->trace_buf.size); - } -#endif - - vxge_os_free(hldev->header.pdev, hldev, sizeof(__hal_device_t)); - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_device_enable - Enable device. - * @devh: HAL device handle. - * - * Enable the specified device: bring up the link/interface. - * - */ -vxge_hal_status_e -vxge_hal_device_enable( - vxge_hal_device_h devh) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!hldev->hw_is_initialized) { - - status = __hal_device_hw_initialize(hldev); - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - } - - __hal_device_bus_master_enable(hldev); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_disable - Disable X3100 adapter. - * @devh: HAL device handle. - * - * Disable this device. To gracefully reset the adapter, the host should: - * - * - call vxge_hal_device_disable(); - * - * - call vxge_hal_device_intr_disable(); - * - * - do some work (error recovery, change mtu, reset, etc); - * - * - call vxge_hal_device_enable(); - * - * - call vxge_hal_device_intr_enable(). - * - * Note: Disabling the device does _not_ include disabling of interrupts. - * After disabling the device stops receiving new frames but those frames - * that were already in the pipe will keep coming for some few milliseconds. - * - * - */ -vxge_hal_status_e -vxge_hal_device_disable( - vxge_hal_device_h devh) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(devh != NULL); - -#if (VXGE_COMPONENT_HAL_DEVICE & VXGE_DEBUG_MODULE_MASK) - - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); -#endif - - return (status); -} - -/* - * vxge_hal_device_hw_stats_enable - Enable device h/w statistics. - * @devh: HAL Device. - * - * Enable the DMA vpath statistics for the device. The function is to be called - * to re-enable the adapter to update stats into the host memory - * - * See also: vxge_hal_device_hw_stats_disable() - */ -vxge_hal_status_e -vxge_hal_device_hw_stats_enable( - vxge_hal_device_h devh) -{ - u32 i; - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->stats_cfg0); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - vxge_os_memcpy(hldev->virtual_paths[i].hw_stats_sav, - hldev->virtual_paths[i].hw_stats, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - if (hldev->header.config.stats_read_method == - VXGE_HAL_STATS_READ_METHOD_DMA) { - val64 |= - VXGE_HAL_STATS_CFG0_STATS_ENABLE((1 << (16 - i))); - } else { - status = __hal_vpath_hw_stats_get( - &hldev->virtual_paths[i], - hldev->virtual_paths[i].hw_stats); - } - - } - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->stats_cfg0); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_hw_stats_disable - Disable device h/w statistics. - * @devh: HAL Device. - * - * Enable the DMA vpath statistics for the device. The function is to be called - * to disable the adapter to update stats into the host memory. This function - * is not needed to be called, normally. - * - * See also: vxge_hal_device_hw_stats_enable() - */ -vxge_hal_status_e -vxge_hal_device_hw_stats_disable( - vxge_hal_device_h devh) -{ - u32 i; - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->stats_cfg0); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - val64 &= ~VXGE_HAL_STATS_CFG0_STATS_ENABLE((1 << (16 - i))); - - } - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->stats_cfg0); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_hw_stats_get - Get the device hw statistics. - * @devh: HAL Device. - * @hw_stats: Hardware stats - * - * Returns the vpath h/w stats for the device. - * - * See also: vxge_hal_device_hw_stats_enable(), - * vxge_hal_device_hw_stats_disable() - */ -vxge_hal_status_e -vxge_hal_device_hw_stats_get( - vxge_hal_device_h devh, - vxge_hal_device_stats_hw_info_t *hw_stats) -{ - u32 i; - u64 val64 = 0; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (hw_stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "devh = 0x"VXGE_OS_STXFMT", hw_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) hw_stats); - - if (hldev->header.config.stats_read_method == - VXGE_HAL_STATS_READ_METHOD_DMA) { - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - val64 |= - VXGE_HAL_STATS_CFG0_STATS_ENABLE((1 << (16 - i))); - - } - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->stats_cfg0, - 0, - val64, - hldev->header.config.device_poll_millis); - - } - - if (status == VXGE_HAL_OK) { - vxge_os_memcpy(hw_stats, - &hldev->stats.hw_dev_info_stats, - sizeof(vxge_hal_device_stats_hw_info_t)); - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_sw_stats_get - Get the device sw statistics. - * @devh: HAL Device. - * @sw_stats: Software stats - * - * Returns the vpath s/w stats for the device. - * - * See also: vxge_hal_device_hw_stats_get() - */ -vxge_hal_status_e -vxge_hal_device_sw_stats_get( - vxge_hal_device_h devh, - vxge_hal_device_stats_sw_info_t *sw_stats) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (sw_stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "devh = 0x"VXGE_OS_STXFMT", sw_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) sw_stats); - - vxge_os_memcpy(sw_stats, - &hldev->stats.sw_dev_info_stats, - sizeof(vxge_hal_device_stats_sw_info_t)); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_stats_get - Get the device statistics. - * @devh: HAL Device. - * @stats: Device stats - * - * Returns the device stats for the device. - * - * See also: vxge_hal_device_hw_stats_get(), vxge_hal_device_sw_stats_get() - */ -vxge_hal_status_e -vxge_hal_device_stats_get( - vxge_hal_device_h devh, - vxge_hal_device_stats_t *stats) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "devh = 0x"VXGE_OS_STXFMT", stats = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) stats); - - vxge_os_memcpy(stats, - &hldev->stats, - sizeof(vxge_hal_device_stats_t)); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_device_xmac_stats_get - Get the Device XMAC Statistics - * @devh: HAL device handle. - * @xmac_stats: Buffer to return XMAC Statistics. - * - * Get the XMAC Statistics - * - */ -vxge_hal_status_e -vxge_hal_device_xmac_stats_get(vxge_hal_device_h devh, - vxge_hal_device_xmac_stats_t *xmac_stats) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - u32 i; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (xmac_stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "devh = 0x"VXGE_OS_STXFMT", xmac_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) xmac_stats); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - status = __hal_vpath_xmac_tx_stats_get(&hldev->virtual_paths[i], - &xmac_stats->vpath_tx_stats[i]); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_vpath_xmac_rx_stats_get(&hldev->virtual_paths[i], - &xmac_stats->vpath_rx_stats[i]); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - -/* - * vxge_hal_device_trace_write - Write the trace from the given buffer into - * circular trace buffer - * @devh: HAL device handle. - * @trace_buf: Buffer containing the trace. - * @trace_len: Length of the trace in the buffer - * - * Writes the trace from the given buffer into the circular trace buffer - * - */ -void -vxge_hal_device_trace_write(vxge_hal_device_h devh, - u8 *trace_buf, - u32 trace_len) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - u32 offset; - - if (hldev == NULL) - return; - - offset = hldev->trace_buf.offset; - - if (trace_len > 1) { - - u32 leftsize = hldev->trace_buf.size - offset; - - if (trace_len > leftsize) { - vxge_os_memzero(hldev->trace_buf.data + offset, - leftsize); - offset = 0; - hldev->trace_buf.wrapped_count++; - } - - vxge_os_memcpy(hldev->trace_buf.data + offset, - trace_buf, trace_len); - offset += trace_len; - hldev->trace_buf.offset = offset; - - } -} - -/* - * vxge_hal_device_trace_dump - Dump the trace buffer. - * @devh: HAL device handle. - * - * Dump the trace buffer contents. - */ -void -vxge_hal_device_trace_dump(vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - u32 offset, i = 0; - - if (hldev == NULL) - return; - - offset = hldev->trace_buf.offset; - - vxge_os_printf("################ Trace dump Begin ###############\n"); - - if (hldev->trace_buf.wrapped_count) { - for (i = hldev->trace_buf.offset; - i < hldev->trace_buf.size; i += offset) { - if (*(hldev->trace_buf.data + i)) - vxge_os_printf(hldev->trace_buf.data + i); - offset = vxge_os_strlen(hldev->trace_buf.data + i) + 1; - } - } - - for (i = 0; i < hldev->trace_buf.offset; i += offset) { - if (*(hldev->trace_buf.data + i)) - vxge_os_printf(hldev->trace_buf.data + i); - offset = vxge_os_strlen(hldev->trace_buf.data + i) + 1; - } - - vxge_os_printf("################ Trace dump End ###############\n"); - -} - -/* - * vxge_hal_device_trace_read - Read trace buffer contents. - * @devh: HAL device handle. - * @buffer: Buffer to store the trace buffer contents. - * @buf_size: Size of the buffer. - * @read_length: Size of the valid data in the buffer. - * - * Read HAL trace buffer contents starting from the offset - * up to the size of the buffer or till EOF is reached. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_EOF_TRACE_BUF - No more data in the trace buffer. - * - */ -vxge_hal_status_e -vxge_hal_device_trace_read(vxge_hal_device_h devh, - char *buffer, - unsigned buf_size, - unsigned *read_length) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - u32 offset, i = 0, buf_off = 0; - - *read_length = 0; - *buffer = 0; - - if (hldev == NULL) - return (VXGE_HAL_FAIL); - - offset = hldev->trace_buf.offset; - - if (hldev->trace_buf.wrapped_count) { - for (i = hldev->trace_buf.offset; - i < hldev->trace_buf.size; i += offset) { - if (*(hldev->trace_buf.data + i)) { - vxge_os_sprintf(buffer + buf_off, "%s\n", - hldev->trace_buf.data + i); - buf_off += vxge_os_strlen( - hldev->trace_buf.data + i) + 1; - if (buf_off > buf_size) - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - offset = vxge_os_strlen(hldev->trace_buf.data + i) + 1; - } - } - - for (i = 0; i < hldev->trace_buf.offset; i += offset) { - if (*(hldev->trace_buf.data + i)) { - vxge_os_sprintf(buffer + buf_off, "%s\n", - hldev->trace_buf.data + i); - buf_off += vxge_os_strlen( - hldev->trace_buf.data + i) + 1; - if (buf_off > buf_size) - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - offset = vxge_os_strlen(hldev->trace_buf.data + i) + 1; - } - - *read_length = buf_off; - *(buffer + buf_off + 1) = 0; - - return (VXGE_HAL_OK); -} - -#endif - -/* - * vxge_hal_device_debug_set - Set the debug module, level and timestamp - * @devh: Hal device object - * @level: Debug level as defined in enum vxge_debug_level_e - * @module masks: An or value of component masks as defined in vxge_debug.h - * - * This routine is used to dynamically change the debug output - */ -void -vxge_hal_device_debug_set( - vxge_hal_device_h devh, - vxge_debug_level_e level, - u32 mask) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - hldev->header.debug_module_mask = mask; - hldev->header.debug_level = level; - - hldev->d_trace_mask = 0; - hldev->d_info_mask = 0; - hldev->d_err_mask = 0; - - switch (level) { - case VXGE_TRACE: - hldev->d_trace_mask = mask; - /* FALLTHROUGH */ - - case VXGE_INFO: - hldev->d_info_mask = mask; - /* FALLTHROUGH */ - - case VXGE_ERR: - hldev->d_err_mask = mask; - /* FALLTHROUGH */ - - default: - break; - } -} - -/* - * vxge_hal_device_flick_link_led - Flick (blink) link LED. - * @devh: HAL device handle. - * @port : Port number 0, or 1 - * @on_off: TRUE if flickering to be on, FALSE to be off - * - * Flicker the link LED. - */ -vxge_hal_status_e -vxge_hal_device_flick_link_led(vxge_hal_device_h devh, u32 port, u32 on_off) -{ - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT - ", port = %d, on_off = %d", (ptr_t) devh, port, on_off); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - status = __hal_vpath_flick_link_led(hldev, - hldev->first_vp_id, port, on_off); - - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_device_getpause_data -Pause frame frame generation and reception. - * @devh: HAL device handle. - * @port : Port number 0, 1, or 2 - * @tx : A field to return the pause generation capability of the NIC. - * @rx : A field to return the pause reception capability of the NIC. - * - * Returns the Pause frame generation and reception capability of the NIC. - * Return value: - * status - */ -vxge_hal_status_e -vxge_hal_device_getpause_data( - vxge_hal_device_h devh, - u32 port, - u32 *tx, - u32 *rx) -{ - u32 i; - u64 val64; - vxge_hal_status_e status = VXGE_HAL_ERR_VPATH_NOT_AVAILABLE; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("devh = 0x"VXGE_OS_STXFMT", " - "port = %d, tx = 0x"VXGE_OS_STXFMT", " - "rx = 0x"VXGE_OS_STXFMT, (ptr_t) devh, port, (ptr_t) tx, - (ptr_t) rx); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (port >= VXGE_HAL_MAC_MAX_PORTS) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_PORT); - return (VXGE_HAL_ERR_INVALID_PORT); - } - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpath_assignments & mBIT(i))) - continue; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->vpmgmt_reg[i]-> - rxmac_pause_cfg_port_vpmgmt_clone[port]); - - if (val64 & VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_GEN_EN) - *tx = 1; - - if (val64 & VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_RCV_EN) - *rx = 1; - - status = VXGE_HAL_OK; - - break; - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -vxge_hal_status_e -vxge_hal_device_is_privileged(u32 host_type, u32 func_id) -{ - u32 access_rights; - vxge_hal_status_e status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - - access_rights = __hal_device_access_rights_get(host_type, func_id); - - if (access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) - status = VXGE_HAL_OK; - - return (status); -} Index: sys/dev/vxge/vxgehal/vxgehal-doorbells.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-doorbells.h +++ sys/dev/vxge/vxgehal/vxgehal-doorbells.h @@ -1,220 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_DOOR_BELLS_H -#define VXGE_HAL_DOOR_BELLS_H - -__EXTERN_BEGIN_DECLS - -/* - * struct __hal_non_offload_db_wrapper_t - Non-offload Doorbell Wrapper - * @control_0: Bits 0 to 7 - Doorbell type. - * Bits 8 to 31 - Reserved. - * Bits 32 to 39 - The highest TxD in this TxDL. - * Bits 40 to 47 - Reserved. - * Bits 48 to 55 - Reserved. - * Bits 56 to 63 - No snoop flags. - * @txdl_ptr: The starting location of the TxDL in host memory. - * - * Created by the host and written to the adapter via PIO to a Kernel Doorbell - * FIFO. All non-offload doorbell wrapper fields must be written by the host as - * part of a doorbell write. Consumed by the adapter but is not written by the - * adapter. - */ -typedef __vxge_os_attr_cacheline_aligned struct __hal_non_offload_db_wrapper_t { - u64 control_0; -#define VXGE_HAL_NODBW_GET_TYPE(ctrl0) bVAL8(ctrl0, 0) -#define VXGE_HAL_NODBW_TYPE(val) vBIT(val, 0, 8) -#define VXGE_HAL_NODBW_TYPE_NODBW 0 - -#define VXGE_HAL_NODBW_GET_LAST_TXD_NUMBER(ctrl0) bVAL8(ctrl0, 32) -#define VXGE_HAL_NODBW_LAST_TXD_NUMBER(val) vBIT(val, 32, 8) - -#define VXGE_HAL_NODBW_GET_NO_SNOOP(ctrl0) bVAL8(ctrl0, 56) -#define VXGE_HAL_NODBW_LIST_NO_SNOOP(val) vBIT(val, 56, 8) -#define VXGE_HAL_NODBW_LIST_NO_SNOOP_TXD_READ_TXD0_WRITE 0x2 -#define VXGE_HAL_NODBW_LIST_NO_SNOOP_TX_FRAME_DATA_READ 0x1 - - u64 txdl_ptr; -} __hal_non_offload_db_wrapper_t; - -/* - * struct __hal_offload_db_wrapper_t - Tx-Offload Doorbell Wrapper - * @control_0: Bits 0 to 7 - Doorbell type. - * Bits 8 to 31 - Identifies the session to which this Tx - * offload doorbell applies. - * Bits 32 to 40 - Identifies the incarnation of this Session - * Number. The adapter assigns a Session Instance - * Number of 0 to a session when that Session Number - * is first used. Each subsequent assignment of that - * Session Number from the free pool causes this - * number to be incremented, with wrap eventually - * occurring from 255 back to 0. - * Bits 40 to 63 - Identifies the end of the TOWI list for - * this session to the adapter. - * @control_1: Bits 0 to 7 - Identifies what is included in this doorbell - * Bits 8 to 15 - The number of Immediate data bytes included in - * this doorbell. - * Bits 16 to 63 - Reserved. - * - * Created by the host and written to the adapter via PIO to a Kernel Doorbell - * FIFO. All Tx Offload doorbell wrapper fields must be written by the host as - * part of a doorbell write. Consumed by the adapter but is never written by the - * adapter. - */ -typedef __vxge_os_attr_cacheline_aligned struct __hal_offload_db_wrapper_t { - u64 control_0; -#define VXGE_HAL_ODBW_GET_TYPE(ctrl0) bVAL8(ctrl0, 0) -#define VXGE_HAL_ODBW_TYPE(val) vBIT(val, 0, 8) -#define VXGE_HAL_ODBW_TYPE_ODBW 1 - -#define VXGE_HAL_ODBW_GET_SESSION_NUMBER(ctrl0) bVAL24(ctrl0, 8) -#define VXGE_HAL_ODBW_SESSION_NUMBER(val) vBIT(val, 8, 24) - -#define VXGE_HAL_ODBW_GET_SESSION_INST_NUMBER(ctrl0) bVAL8(ctrl0, 32) -#define VXGE_HAL_ODBW_SESSION_INST_NUMBER(val) vBIT(val, 32, 8) - -#define VXGE_HAL_ODBW_GET_HIGH_TOWI_NUMBER(ctrl0) bVAL24(ctrl0, 40) -#define VXGE_HAL_ODBW_HIGH_TOWI_NUMBER(val) vBIT(val, 40, 24) - - u64 control_1; -#define VXGE_HAL_ODBW_GET_ENTRY_TYPE(ctrl1) bVAL8(ctrl1, 0) -#define VXGE_HAL_ODBW_ENTRY_TYPE(val) vBIT(val, 0, 8) -#define VXGE_HAL_ODBW_ENTRY_TYPE_WRAPPER_ONLY 0x0 -#define VXGE_HAL_ODBW_ENTRY_TYPE_WRAPPER_TOWI 0x1 -#define VXGE_HAL_ODBW_ENTRY_TYPE_WRAPPER_TOWI_DATA 0x2 - -#define VXGE_HAL_ODBW_GET_IMMEDIATE_BYTE_COUNT(ctrl1) bVAL8(ctrl1, 8) -#define VXGE_HAL_ODBW_IMMEDIATE_BYTE_COUNT(val) vBIT(val, 8, 8) - -} __hal_offload_db_wrapper_t; - -/* - * struct __hal_offload_atomic_db_wrapper_t - Atomic Tx-Offload Doorbell - * Wrapper - * @control_0: Bits 0 to 7 - Doorbell type. - * Bits 8 to 31 - Identifies the session to which this Tx - * offload doorbell applies. - * Bits 32 to 40 - Identifies the incarnation of this Session - * Number. The adapter assigns a Session Instance - * Number of 0 to a session when that Session Number - * is first used. Each subsequent assignment of that - * Session Number from the free pool causes this - * number to be incremented, with wrap eventually - * occurring from 255 back to 0. - * Bits 40 to 63 - Identifies the end of the TOWI list for - * this session to the adapter. - * - * Created by the host and written to the adapter via PIO to a Kernel Doorbell - * FIFO. All Tx Offload doorbell wrapper fields must be written by the host as - * part of a doorbell write. Consumed by the adapter but is never written by the - * adapter. - */ -typedef __vxge_os_attr_cacheline_aligned -struct __hal_offload_atomic_db_wrapper_t { - u64 control_0; -#define VXGE_HAL_ODBW_GET_TYPE(ctrl0) bVAL8(ctrl0, 0) -#define VXGE_HAL_ODBW_TYPE(val) vBIT(val, 0, 8) -#define VXGE_HAL_ODBW_TYPE_ATOMIC 2 - -#define VXGE_HAL_ODBW_GET_SESSION_NUMBER(ctrl0) bVAL24(ctrl0, 8) -#define VXGE_HAL_ODBW_SESSION_NUMBER(val) vBIT(val, 8, 24) - -#define VXGE_HAL_ODBW_GET_SESSION_INST_NUMBER(ctrl0) bVAL8(ctrl0, 32) -#define VXGE_HAL_ODBW_SESSION_INST_NUMBER(val) vBIT(val, 32, 8) - -#define VXGE_HAL_ODBW_GET_HIGH_TOWI_NUMBER(ctrl0) bVAL24(ctrl0, 40) -#define VXGE_HAL_ODBW_HIGH_TOWI_NUMBER(val) vBIT(val, 40, 24) - -} __hal_offload_atomic_db_wrapper_t; - - - -/* - * struct __hal_messaging_db_wrapper_t - Messaging Doorbell Wrapper - * @control_0: Bits 0 to 7 - Doorbell type. - * Bits 8 to 31 - Reserved. - * Bits 32 to 63 - The number of new message bytes made available - * by this doorbell entry. - * @control_1: Bits 0 to 7 - Reserved. - * Bits 8 to 15 - The number of Immediate messaging bytes included - * in this doorbell. - * Bits 16 to 63 - Reserved. - * - * Created by the host and written to the adapter via PIO to a Kernel Doorbell - * FIFO. All message doorbell wrapper fields must be written by the host as - * part of a doorbell write. Consumed by the adapter but not written by adapter. - */ -typedef __vxge_os_attr_cacheline_aligned struct __hal_messaging_db_wrapper_t { - u64 control_0; -#define VXGE_HAL_MDBW_GET_TYPE(ctrl0) bVAL8(ctrl0, 0) -#define VXGE_HAL_MDBW_TYPE(val) vBIT(val, 0, 8) -#define VXGE_HAL_MDBW_TYPE_MDBW 3 - -#define VXGE_HAL_MDBW_GET_MESSAGE_BYTE_COUNT(ctrl0) bVAL32(ctrl0, 32) -#define VXGE_HAL_MDBW_MESSAGE_BYTE_COUNT(val) vBIT(val, 32, 32) - - u64 control_1; -#define VXGE_HAL_MDBW_GET_IMMEDIATE_BYTE_COUNT(ctrl1) bVAL8(ctrl1, 8) -#define VXGE_HAL_MDBW_IMMEDIATE_BYTE_COUNT(val) vBIT(val, 8, 8) - -} __hal_messaging_db_wrapper_t; - - -void -__hal_non_offload_db_post(vxge_hal_vpath_h vpath_handle, - u64 txdl_ptr, - u32 num_txds, - u32 no_snoop); - -void -__hal_rxd_db_post(vxge_hal_vpath_h vpath_handle, - u32 num_bytes); - -vxge_hal_status_e -__hal_non_offload_db_reset(vxge_hal_vpath_h vpath_handle); - - -void -__hal_message_db_post(vxge_hal_vpath_h vpath_handle, - u32 num_msg_bytes, - u8 *immed_msg, - u32 immed_msg_len); - -vxge_hal_status_e -__hal_message_db_reset(vxge_hal_vpath_h vpath_handle); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_DOOR_BELLS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-doorbells.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-doorbells.c +++ sys/dev/vxge/vxgehal/vxgehal-doorbells.c @@ -1,274 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ -#include - - -/* - * __hal_non_offload_db_post - Post non offload doorbell - * - * @vpath_handle: vpath handle - * @txdl_ptr: The starting location of the TxDL in host memory - * @num_txds: The highest TxD in this TxDL (0 to 255 means 1 to 256) - * @no_snoop: No snoop flags - * - * This function posts a non-offload doorbell to doorbell FIFO - * - */ -void -__hal_non_offload_db_post(vxge_hal_vpath_h vpath_handle, - u64 txdl_ptr, - u32 num_txds, - u32 no_snoop) -{ - u64 *db_ptr; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (txdl_ptr != 0)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "vpath_handle = 0x"VXGE_OS_STXFMT", txdl_ptr = 0x"VXGE_OS_STXFMT - ", num_txds = %d, no_snoop = %d", (ptr_t) vpath_handle, - (ptr_t) txdl_ptr, num_txds, no_snoop); - - db_ptr = &vp->vpath->nofl_db->control_0; - - vxge_os_pio_mem_write64(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - VXGE_HAL_NODBW_TYPE(VXGE_HAL_NODBW_TYPE_NODBW) | - VXGE_HAL_NODBW_LAST_TXD_NUMBER(num_txds) | - VXGE_HAL_NODBW_GET_NO_SNOOP(no_snoop), - db_ptr++); - - vxge_os_pio_mem_write64(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - txdl_ptr, - db_ptr); - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_non_offload_db_reset - Reset non offload doorbell fifo - * - * @vpath_handle: vpath handle - * - * This function resets non-offload doorbell FIFO - * - */ -vxge_hal_status_e -__hal_non_offload_db_reset(vxge_hal_vpath_h vpath_handle) -{ - vxge_hal_status_e status; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "vpath_handle = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle); - - vxge_os_pio_mem_write64(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - VXGE_HAL_CMN_RSTHDLR_CFG2_SW_RESET_FIFO0( - 1 << (16 - vp->vpath->vp_id)), - &vp->vpath->hldev->common_reg->cmn_rsthdlr_cfg2); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - &vp->vpath->hldev->common_reg->cmn_rsthdlr_cfg2, 0, - (u64) VXGE_HAL_CMN_RSTHDLR_CFG2_SW_RESET_FIFO0( - 1 << (16 - vp->vpath->vp_id)), - VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (status); -} - -/* - * __hal_rxd_db_post - Post rxd doorbell - * - * @vpath_handle: vpath handle - * @num_bytes: The number of bytes - * - * This function posts a rxd doorbell - * - */ -void -__hal_rxd_db_post(vxge_hal_vpath_h vpath_handle, - u32 num_bytes) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "vpath_handle = 0x"VXGE_OS_STXFMT", num_bytes = %d", - (ptr_t) vpath_handle, num_bytes); - - vxge_os_pio_mem_write64(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - VXGE_HAL_PRC_RXD_DOORBELL_NEW_QW_CNT((num_bytes >> 3)), - &vp->vpath->vp_reg->prc_rxd_doorbell); - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - - -/* - * __hal_message_db_post - Post message doorbell - * - * @vpath_handle: VPATH handle - * @num_msg_bytes: The number of new message bytes made available - * by this doorbell entry. - * @immed_msg: Immediate message to be sent - * @immed_msg_len: Immediate message length - * - * This function posts a message doorbell to doorbell FIFO - * - */ -void -__hal_message_db_post(vxge_hal_vpath_h vpath_handle, - u32 num_msg_bytes, - u8 *immed_msg, - u32 immed_msg_len) -{ - u32 i; - u64 *db_ptr; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (num_msg_bytes != 0)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_dmq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_dmq("vpath_handle = 0x"VXGE_OS_STXFMT", " - "num_msg_bytes = %d, immed_msg = 0x"VXGE_OS_STXFMT", " - "immed_msg_len = %d", (ptr_t) vpath_handle, num_msg_bytes, - (ptr_t) immed_msg, immed_msg_len); - - db_ptr = &vp->vpath->msg_db->control_0; - - vxge_os_pio_mem_write64(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - VXGE_HAL_MDBW_TYPE(VXGE_HAL_MDBW_TYPE_MDBW) | - VXGE_HAL_MDBW_MESSAGE_BYTE_COUNT(num_msg_bytes), - db_ptr++); - - vxge_os_pio_mem_write64(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - VXGE_HAL_MDBW_IMMEDIATE_BYTE_COUNT(immed_msg_len), - db_ptr++); - - for (i = 0; i < immed_msg_len / 8; i++) { - vxge_os_pio_mem_write64(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - *((u64 *) ((void *)&immed_msg[i * 8])), - db_ptr++); - } - - vxge_hal_trace_log_dmq("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_message_db_reset - Reset message doorbell fifo - * - * @vpath_handle: vpath handle - * - * This function resets message doorbell FIFO - * - */ -vxge_hal_status_e -__hal_message_db_reset(vxge_hal_vpath_h vpath_handle) -{ - vxge_hal_status_e status; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_dmq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_dmq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - vxge_os_pio_mem_write64(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - VXGE_HAL_CMN_RSTHDLR_CFG3_SW_RESET_FIFO1( - 1 << (16 - vp->vpath->vp_id)), - &vp->vpath->hldev->common_reg->cmn_rsthdlr_cfg3); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - &vp->vpath->hldev->common_reg->cmn_rsthdlr_cfg3, 0, - (u64) VXGE_HAL_CMN_RSTHDLR_CFG3_SW_RESET_FIFO1( - 1 << (16 - vp->vpath->vp_id)), - VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - - vxge_hal_trace_log_dmq("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (status); -} Index: sys/dev/vxge/vxgehal/vxgehal-driver.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-driver.h +++ sys/dev/vxge/vxgehal/vxgehal-driver.h @@ -1,70 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_DRIVER_H -#define VXGE_HAL_DRIVER_H - -__EXTERN_BEGIN_DECLS - -/* maximum number of events consumed in a syncle poll() cycle */ -#define VXGE_HAL_DRIVER_QUEUE_CONSUME_MAX 5 - -/* - * struct __hal_driver_t - Represents HAL object for driver. - * @config: HAL configuration. - * @devices: List of all PCI-enumerated X3100 devices in the system. - * A single vxge_hal_driver_t instance contains zero or more - * X3100 devices. - * @devices_lock: Lock to protect %devices when inserting/removing. - * @is_initialized: True if HAL is initialized; false otherwise. - * @uld_callbacks: Upper-layer driver callbacks. See vxge_hal_uld_cbs_t {}. - * @debug_module_mask: 32bit mask that defines which components of the - * driver are to be traced. The trace-able components are listed in - * xgehal_debug.h: - * @debug_level: See vxge_debug_level_e {}. - * - * HAL (driver) object. There is a single instance of this structure per HAL. - */ -typedef struct __hal_driver_t { - vxge_hal_driver_config_t config; - int is_initialized; - vxge_hal_uld_cbs_t uld_callbacks; - u32 debug_level; -} __hal_driver_t; - -extern __hal_driver_t *g_vxge_hal_driver; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_DRIVER_H */ Index: sys/dev/vxge/vxgehal/vxgehal-driver.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-driver.c +++ sys/dev/vxge/vxgehal/vxgehal-driver.c @@ -1,175 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -static __hal_driver_t g_driver; -__hal_driver_t *g_vxge_hal_driver; - -#if defined(VXGE_OS_MEMORY_CHECK) -vxge_os_malloc_t g_malloc_arr[VXGE_OS_MALLOC_CNT_MAX]; -u32 g_malloc_cnt; - -#endif - -/* - * Runtime tracing support - */ -u32 g_debug_level; - -/* - * vxge_hal_driver_initialize - Initialize HAL. - * @config: HAL configuration, see vxge_hal_driver_config_t {}. - * @uld_callbacks: Upper-layer driver callbacks, e.g. link-up. - * - * HAL initialization entry point. Not to confuse with device initialization - * (note that HAL "contains" zero or more X3100 devices). - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_ERR_BAD_DRIVER_CONFIG - Driver configuration params invalid. - * - * See also: vxge_hal_device_initialize(), vxge_hal_status_e {}, - * vxge_hal_uld_cbs_t {}. - */ -vxge_hal_status_e -vxge_hal_driver_initialize( - vxge_hal_driver_config_t *config, - vxge_hal_uld_cbs_t *uld_callbacks) -{ - vxge_hal_status_e status; - g_vxge_hal_driver = &g_driver; - - if ((status = vxge_hal_driver_config_check(config)) != VXGE_HAL_OK) - return (status); - - vxge_os_memzero(g_vxge_hal_driver, sizeof(__hal_driver_t)); - - /* apply config */ - vxge_os_memcpy(&g_vxge_hal_driver->config, config, - sizeof(vxge_hal_driver_config_t)); - - /* apply ULD callbacks */ - vxge_os_memcpy(&g_vxge_hal_driver->uld_callbacks, uld_callbacks, - sizeof(vxge_hal_uld_cbs_t)); - - vxge_hal_driver_debug_set(config->level); - - g_vxge_hal_driver->is_initialized = 1; - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_driver_terminate - Terminate HAL. - * - * HAL termination entry point. - * - * See also: vxge_hal_device_terminate(). - */ -void -vxge_hal_driver_terminate(void) -{ - g_vxge_hal_driver->is_initialized = 0; - - g_vxge_hal_driver = NULL; - -#if defined(VXGE_OS_MEMORY_CHECK) - if (TRUE) { - u32 i, leaks = 0; - - vxge_os_printf("OSPAL: max g_malloc_cnt %d\n", g_malloc_cnt); - for (i = 0; i < g_malloc_cnt; i++) { - if (g_malloc_arr[i].ptr != NULL) { - vxge_os_printf("OSPAL: memory leak detected at " - "%s:%lu:"VXGE_OS_LLXFMT":%lu\n", - g_malloc_arr[i].file, - g_malloc_arr[i].line, - (u64) (ptr_t) g_malloc_arr[i].ptr, - g_malloc_arr[i].size); - leaks++; - } - } - if (leaks) { - vxge_os_printf("OSPAL: %d memory leaks detected\n", - leaks); - } else { - vxge_os_println("OSPAL: no memory leaks detected\n"); - } - } -#endif -} - -/* - * vxge_hal_driver_debug_set - Set the debug module, level and timestamp - * @level: Debug level as defined in enum vxge_debug_level_e - * - * This routine is used to dynamically change the debug output - */ -void -vxge_hal_driver_debug_set( - vxge_debug_level_e level) -{ - g_vxge_hal_driver->debug_level = level; - g_debug_level = 0; - - switch (level) { - /* FALLTHRU */ - - case VXGE_TRACE: - g_debug_level |= VXGE_TRACE; - /* FALLTHRU */ - - case VXGE_INFO: - g_debug_level |= VXGE_INFO; - /* FALLTHRU */ - - case VXGE_ERR: - g_debug_level |= VXGE_ERR; - /* FALLTHRU */ - - default: - break; - } -} - -/* - * vxge_hal_driver_debug_get - Get the debug level - * - * This routine returns the current debug level set - */ -u32 -vxge_hal_driver_debug_get(void) -{ - return (g_vxge_hal_driver->debug_level); -} Index: sys/dev/vxge/vxgehal/vxgehal-fifo.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-fifo.h +++ sys/dev/vxge/vxgehal/vxgehal-fifo.h @@ -1,225 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_FIFO_H -#define VXGE_HAL_FIFO_H - -__EXTERN_BEGIN_DECLS - -/* - * struct __hal_fifo_t - Fifo. - * @channel: Channel "base" of this fifo, the common part of all HAL - * channels. - * @mempool: Memory pool, from which descriptors get allocated. - * @config: Fifo configuration, part of device configuration - * (see vxge_hal_device_config_t {}). - * @interrupt_type: Interrupt type to be used - * @no_snoop_bits: See vxge_hal_fifo_config_t {}. - * @memblock_size: Fifo descriptors are allocated in blocks of @mem_block_size - * bytes. Setting @memblock_size to page size ensures - * by-page allocation of descriptors. 128K bytes is the - * maximum supported block size. - * @txdl_per_memblock: Number of TxDLs (TxD lists) per memblock. - * on TxDL please refer to X3100 UG. - * @txdl_size: Configured TxDL size (i.e., number of TxDs in a list), plus - * per-TxDL HAL private space (__hal_fifo_txdl_priv_t). - * @txdl_priv_size: Per-TxDL space reserved for HAL and ULD - * @per_txdl_space: Per txdl private space for the ULD - * @txdlblock_priv_size: Total private space per TXDL memory block - * @align_size: Cache alignment size - * @callback: Fifo completion callback. HAL invokes the callback when there - * are new completions on that fifo. In many implementations - * the @callback executes in the hw interrupt context. - * @txdl_init: Fifo's descriptor-initialize callback. - * See vxge_hal_fifo_txdl_init_f {}. - * If not NULL, HAL invokes the callback when opening - * the fifo via vxge_hal_vpath_open(). - * @txdl_term: Fifo's descriptor-terminate callback. If not NULL, - * HAL invokes the callback when closing the corresponding fifo. - * See also vxge_hal_fifo_txdl_term_f {}. - * @stats: Statistics of this fifo - * - * Fifo channel. - * Note: The structure is cache line aligned. - */ -typedef struct __hal_fifo_t { - __hal_channel_t channel; - vxge_hal_mempool_t *mempool; - vxge_hal_fifo_config_t *config; - u64 interrupt_type; - u32 no_snoop_bits; - u32 memblock_size; - u32 txdl_per_memblock; - u32 txdl_size; - u32 txdl_priv_size; - u32 per_txdl_space; - u32 txdlblock_priv_size; - u32 align_size; - vxge_hal_fifo_callback_f callback; - vxge_hal_fifo_txdl_init_f txdl_init; - vxge_hal_fifo_txdl_term_f txdl_term; - vxge_hal_vpath_stats_sw_fifo_info_t *stats; -} __vxge_os_attr_cacheline_aligned __hal_fifo_t; - -/* - * struct __hal_fifo_txdl_priv_t - Transmit descriptor HAL-private data. - * @dma_addr: DMA (mapped) address of _this_ descriptor. - * @dma_handle: DMA handle used to map the descriptor onto device. - * @dma_offset: Descriptor's offset in the memory block. HAL allocates - * descriptors in memory blocks (see vxge_hal_fifo_config_t {}) - * Each memblock is a contiguous block of DMA-able memory. - * @frags: Total number of fragments (that is, contiguous data buffers) - * carried by this TxDL. - * @align_vaddr_start: Aligned virtual address start - * @align_vaddr: Virtual address of the per-TxDL area in memory used for - * alignement. Used to place one or more mis-aligned fragments - * (the maximum defined by configration variable - * @max_aligned_frags). - * @align_dma_addr: DMA address translated from the @align_vaddr. - * @align_dma_handle: DMA handle that corresponds to @align_dma_addr. - * @align_dma_acch: DMA access handle corresponds to @align_dma_addr. - * @align_dma_offset: The current offset into the @align_vaddr area. - * Grows while filling the descriptor, gets reset. - * @align_used_frags: Number of fragments used. - * @alloc_frags: Total number of fragments allocated. - * @dang_frags: Number of fragments kept from release until this TxDL is freed. - * @bytes_sent: - * @unused: - * @dang_txdl: - * @next_txdl_priv: - * @first_txdp: - * @dang_txdlh: Pointer to TxDL (list) kept from release until this TxDL - * is freed. - * @linked_txdl_priv: Pointer to any linked TxDL for creating contiguous - * TxDL list. - * @txdlh: Corresponding txdlh to this TxDL. - * @memblock: Pointer to the TxDL memory block or memory page. - * on the next send operation. - * @dma_object: DMA address and handle of the memory block that contains - * the descriptor. This member is used only in the "checked" - * version of the HAL (to enforce certain assertions); - * otherwise it gets compiled out. - * @allocated: True if the descriptor is reserved, 0 otherwise. Internal usage. - * - * Per-transmit decsriptor HAL-private data. HAL uses the space to keep DMA - * information associated with the descriptor. Note that ULD can ask HAL - * to allocate additional per-descriptor space for its own (ULD-specific) - * purposes. - * - * See also: vxge_hal_ring_rxd_priv_t {}. - */ -typedef struct __hal_fifo_txdl_priv_t { - dma_addr_t dma_addr; - pci_dma_h dma_handle; - ptrdiff_t dma_offset; - u32 frags; - u8 *align_vaddr_start; - u8 *align_vaddr; - dma_addr_t align_dma_addr; - pci_dma_h align_dma_handle; - pci_dma_acc_h align_dma_acch; - ptrdiff_t align_dma_offset; - u32 align_used_frags; - u32 alloc_frags; - u32 dang_frags; - u32 bytes_sent; - u32 unused; - vxge_hal_fifo_txd_t *dang_txdl; - struct __hal_fifo_txdl_priv_t *next_txdl_priv; - vxge_hal_fifo_txd_t *first_txdp; - void *memblock; -#if defined(VXGE_DEBUG_ASSERT) - vxge_hal_mempool_dma_t *dma_object; -#endif -#if defined(VXGE_OS_MEMORY_CHECK) - u32 allocated; -#endif -} __hal_fifo_txdl_priv_t; - -#define VXGE_HAL_FIFO_ULD_PRIV(fifo, txdh) \ - fifo->channel.dtr_arr[ \ - ((vxge_hal_fifo_txd_t *)(txdh))->host_control].uld_priv - -#define VXGE_HAL_FIFO_HAL_PRIV(fifo, txdh) \ - ((__hal_fifo_txdl_priv_t *)(fifo->channel.dtr_arr[ \ - ((vxge_hal_fifo_txd_t *)(txdh))->host_control].hal_priv)) - -#define VXGE_HAL_FIFO_MAX_FRAG_CNT(fifo) fifo->config->max_frags - -#define VXGE_HAL_FIFO_TXDL_INDEX(txdp) \ - (u32)((vxge_hal_fifo_txd_t *)txdp)->host_control - -/* ========================= FIFO PRIVATE API ============================= */ - -vxge_hal_status_e -__hal_fifo_create( - vxge_hal_vpath_h vpath_handle, - vxge_hal_fifo_attr_t *attr); - -void -__hal_fifo_abort( - vxge_hal_fifo_h fifoh, - vxge_hal_reopen_e reopen); - -vxge_hal_status_e -__hal_fifo_reset( - vxge_hal_fifo_h ringh); - -void -__hal_fifo_delete( - vxge_hal_vpath_h vpath_handle); - -void -__hal_fifo_txdl_free_many( - __hal_fifo_t *fifo, - vxge_hal_fifo_txd_t *txdp, - u32 list_size, - u32 frags); - -#if defined(VXGE_HAL_ALIGN_XMIT) -void -__hal_fifo_txdl_align_free_unmap( - __hal_fifo_t *fifo, - vxge_hal_fifo_txd_t *txdp); - -vxge_hal_status_e -__hal_fifo_txdl_align_alloc_map( - __hal_fifo_t *fifo, - vxge_hal_fifo_txd_t *txdp); - -#endif - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_FIFO_H */ Index: sys/dev/vxge/vxgehal/vxgehal-fifo.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-fifo.c +++ sys/dev/vxge/vxgehal/vxgehal-fifo.c @@ -1,1898 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * __hal_fifo_mempool_item_alloc - Allocate List blocks for TxD list callback - * @mempoolh: Handle to memory pool - * @memblock: Address of this memory block - * @memblock_index: Index of this memory block - * @dma_object: dma object for this block - * @item: Pointer to this item - * @index: Index of this item in memory block - * @is_last: If this is last item in the block - * @userdata: Specific data of user - * - * This function is callback passed to __hal_mempool_create to create memory - * pool for TxD list - */ -static vxge_hal_status_e -__hal_fifo_mempool_item_alloc( - vxge_hal_mempool_h mempoolh, - void *memblock, - u32 memblock_index, - vxge_hal_mempool_dma_t *dma_object, - void *item, - u32 item_index, - u32 is_last, - void *userdata) -{ - u32 i; - void *block_priv; - u32 memblock_item_idx; - - __hal_fifo_t *fifo = (__hal_fifo_t *) userdata; - - vxge_assert(fifo != NULL); - vxge_assert(item); - -#if (VXGE_COMPONENT_HAL_POOL & VXGE_DEBUG_MODULE_MASK) - { - __hal_device_t *hldev = (__hal_device_t *) fifo->channel.devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool( - "mempoolh = 0x"VXGE_OS_STXFMT", " - "memblock = 0x"VXGE_OS_STXFMT", memblock_index = %d, " - "dma_object = 0x"VXGE_OS_STXFMT", \ - item = 0x"VXGE_OS_STXFMT", " - "item_index = %d, is_last = %d, userdata = 0x"VXGE_OS_STXFMT, - (ptr_t) mempoolh, (ptr_t) memblock, memblock_index, - (ptr_t) dma_object, (ptr_t) item, item_index, is_last, - (ptr_t) userdata); - } -#endif - - block_priv = __hal_mempool_item_priv((vxge_hal_mempool_t *) mempoolh, - memblock_index, item, &memblock_item_idx); - - vxge_assert(block_priv != NULL); - - for (i = 0; i < fifo->txdl_per_memblock; i++) { - - __hal_fifo_txdl_priv_t *txdl_priv; - vxge_hal_fifo_txd_t *txdp; - - int dtr_index = item_index * fifo->txdl_per_memblock + i; - - txdp = (vxge_hal_fifo_txd_t *) ((void *) - ((char *) item + i * fifo->txdl_size)); - - txdp->host_control = dtr_index; - - fifo->channel.dtr_arr[dtr_index].dtr = txdp; - - fifo->channel.dtr_arr[dtr_index].uld_priv = (void *) - ((char *) block_priv + fifo->txdl_priv_size * i); - - fifo->channel.dtr_arr[dtr_index].hal_priv = (void *) - (((char *) fifo->channel.dtr_arr[dtr_index].uld_priv) + - fifo->per_txdl_space); - - txdl_priv = (__hal_fifo_txdl_priv_t *) - fifo->channel.dtr_arr[dtr_index].hal_priv; - - vxge_assert(txdl_priv); - - /* pre-format HAL's TxDL's private */ - /* LINTED */ - txdl_priv->dma_offset = (char *) txdp - (char *) memblock; - txdl_priv->dma_addr = dma_object->addr + txdl_priv->dma_offset; - txdl_priv->dma_handle = dma_object->handle; - txdl_priv->memblock = memblock; - txdl_priv->first_txdp = (vxge_hal_fifo_txd_t *) txdp; - txdl_priv->next_txdl_priv = NULL; - txdl_priv->dang_txdl = NULL; - txdl_priv->dang_frags = 0; - txdl_priv->alloc_frags = 0; - -#if defined(VXGE_DEBUG_ASSERT) - txdl_priv->dma_object = dma_object; -#endif - -#if defined(VXGE_HAL_ALIGN_XMIT) - txdl_priv->align_vaddr = NULL; - txdl_priv->align_dma_addr = (dma_addr_t) 0; - -#ifndef VXGE_HAL_ALIGN_XMIT_ALLOC_RT - /* CONSTCOND */ - if (TRUE) { - vxge_hal_status_e status; - - if (fifo->config->alignment_size) { - status = __hal_fifo_txdl_align_alloc_map(fifo, - txdp); - if (status != VXGE_HAL_OK) { - -#if (VXGE_COMPONENT_HAL_POOL & VXGE_DEBUG_MODULE_MASK) - __hal_device_t *hldev; - hldev = (__hal_device_t *) - fifo->channel.devh; - - vxge_hal_err_log_pool( - "align buffer[%d] %d bytes, \ - status %d", - (item_index * fifo->txdl_per_memblock + i), - fifo->align_size, status); - - vxge_hal_trace_log_pool( - "<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -#endif - return (status); - } - } - } -#endif -#endif - if (fifo->txdl_init) { - fifo->txdl_init(fifo->channel.vph, - (vxge_hal_txdl_h) txdp, - VXGE_HAL_FIFO_ULD_PRIV(fifo, txdp), - VXGE_HAL_FIFO_TXDL_INDEX(txdp), - fifo->channel.userdata, VXGE_HAL_OPEN_NORMAL); - } - } - -#if (VXGE_COMPONENT_HAL_POOL & VXGE_DEBUG_MODULE_MASK) - { - __hal_device_t *hldev = (__hal_device_t *) fifo->channel.devh; - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - } -#endif - - return (VXGE_HAL_OK); -} - - -/* - * __hal_fifo_mempool_item_free - Free List blocks for TxD list callback - * @mempoolh: Handle to memory pool - * @memblock: Address of this memory block - * @memblock_index: Index of this memory block - * @dma_object: dma object for this block - * @item: Pointer to this item - * @index: Index of this item in memory block - * @is_last: If this is last item in the block - * @userdata: Specific data of user - * - * This function is callback passed to __hal_mempool_free to destroy memory - * pool for TxD list - */ -static vxge_hal_status_e -__hal_fifo_mempool_item_free( - vxge_hal_mempool_h mempoolh, - void *memblock, - u32 memblock_index, - vxge_hal_mempool_dma_t *dma_object, - void *item, - u32 item_index, - u32 is_last, - void *userdata) -{ - vxge_assert(item); - -#if (VXGE_COMPONENT_HAL_POOL & VXGE_DEBUG_MODULE_MASK) - { - __hal_fifo_t *fifo = (__hal_fifo_t *) userdata; - - vxge_assert(fifo != NULL); - - __hal_device_t *hldev = (__hal_device_t *) fifo->channel.devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool("mempoolh = 0x"VXGE_OS_STXFMT", " - "memblock = 0x"VXGE_OS_STXFMT", memblock_index = %d, " - "dma_object = 0x"VXGE_OS_STXFMT", \ - item = 0x"VXGE_OS_STXFMT", " - "item_index = %d, is_last = %d, userdata = 0x"VXGE_OS_STXFMT, - (ptr_t) mempoolh, (ptr_t) memblock, memblock_index, - (ptr_t) dma_object, (ptr_t) item, item_index, is_last, - (ptr_t) userdata); - } -#endif - -#if defined(VXGE_HAL_ALIGN_XMIT) - { - __hal_fifo_t *fifo = (__hal_fifo_t *) userdata; - - vxge_assert(fifo != NULL); - if (fifo->config->alignment_size) { - - int i; - vxge_hal_fifo_txd_t *txdp; - - for (i = 0; i < fifo->txdl_per_memblock; i++) { - txdp = (void *) - ((char *) item + i * fifo->txdl_size); - __hal_fifo_txdl_align_free_unmap(fifo, txdp); - } - } - } -#endif - -#if (VXGE_COMPONENT_HAL_POOL & VXGE_DEBUG_MODULE_MASK) - { - __hal_fifo_t *fifo = (__hal_fifo_t *) userdata; - - vxge_assert(fifo != NULL); - - __hal_device_t *hldev = (__hal_device_t *) fifo->channel.devh; - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - } -#endif - - return (VXGE_HAL_OK); -} - -/* - * __hal_fifo_create - Create a FIFO - * @vpath_handle: Handle returned by virtual path open - * @attr: FIFO configuration parameters structure - * - * This function creates FIFO and initializes it. - * - */ -vxge_hal_status_e -__hal_fifo_create( - vxge_hal_vpath_h vpath_handle, - vxge_hal_fifo_attr_t *attr) -{ - vxge_hal_status_e status; - __hal_fifo_t *fifo; - vxge_hal_fifo_config_t *config; - u32 txdl_size, memblock_size, txdl_per_memblock; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - - vxge_assert((vpath_handle != NULL) && (attr != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "vpath_handle = 0x"VXGE_OS_STXFMT", attr = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) attr); - - if ((vpath_handle == NULL) || (attr == NULL)) { - vxge_hal_err_log_fifo("null pointer passed == > %s : %d", - __func__, __LINE__); - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - config = - &vp->vpath->hldev->header.config.vp_config[vp->vpath->vp_id].fifo; - - txdl_size = config->max_frags * sizeof(vxge_hal_fifo_txd_t); - - if (txdl_size <= VXGE_OS_HOST_PAGE_SIZE) - memblock_size = VXGE_OS_HOST_PAGE_SIZE; - else - memblock_size = txdl_size; - - txdl_per_memblock = memblock_size / txdl_size; - - config->fifo_length = ((config->fifo_length + txdl_per_memblock - 1) / - txdl_per_memblock) * txdl_per_memblock; - - fifo = (__hal_fifo_t *) vxge_hal_channel_allocate( - (vxge_hal_device_h) vp->vpath->hldev, - vpath_handle, - VXGE_HAL_CHANNEL_TYPE_FIFO, - config->fifo_length, - attr->per_txdl_space, - attr->userdata); - - if (fifo == NULL) { - vxge_hal_err_log_fifo("Memory allocation failed == > %s : %d", - __func__, __LINE__); - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - vp->vpath->fifoh = fifo; - - fifo->stats = &vp->vpath->sw_stats->fifo_stats; - - fifo->config = config; - - fifo->memblock_size = memblock_size; - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_lock_init(&fifo->channel.post_lock, - vp->vpath->hldev->header.pdev); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_lock_init_irq(&fifo->channel.post_lock, - vp->vpath->hldev->header.irqh); -#endif - - fifo->align_size = - fifo->config->alignment_size * fifo->config->max_aligned_frags; - - /* apply "interrupts per txdl" attribute */ - fifo->interrupt_type = VXGE_HAL_FIFO_TXD_INT_TYPE_UTILZ; - if (fifo->config->intr) { - fifo->interrupt_type = VXGE_HAL_FIFO_TXD_INT_TYPE_PER_LIST; - } - - fifo->no_snoop_bits = config->no_snoop_bits; - - /* - * FIFO memory management strategy: - * - * TxDL splitted into three independent parts: - * - set of TxD's - * - TxD HAL private part - * - upper layer private part - * - * Adaptative memory allocation used. i.e. Memory allocated on - * demand with the size which will fit into one memory block. - * One memory block may contain more than one TxDL. In simple case - * memory block size can be equal to CPU page size. On more - * sophisticated OS's memory block can be contiguous across - * several pages. - * - * During "reserve" operations more memory can be allocated on demand - * for example due to FIFO full condition. - * - * Pool of memory memblocks never shrinks except __hal_fifo_close - * routine which will essentially stop channel and free the resources. - */ - - /* TxDL common private size == TxDL private + ULD private */ - fifo->txdl_priv_size = - sizeof(__hal_fifo_txdl_priv_t) + attr->per_txdl_space; - fifo->txdl_priv_size = - ((fifo->txdl_priv_size + __vxge_os_cacheline_size - 1) / - __vxge_os_cacheline_size) * __vxge_os_cacheline_size; - - fifo->per_txdl_space = attr->per_txdl_space; - - /* recompute txdl size to be cacheline aligned */ - fifo->txdl_size = txdl_size; - fifo->txdl_per_memblock = txdl_per_memblock; - - /* - * since txdl_init() callback will be called from item_alloc(), - * the same way channels userdata might be used prior to - * channel_initialize() - */ - fifo->txdl_init = attr->txdl_init; - fifo->txdl_term = attr->txdl_term; - fifo->callback = attr->callback; - - if (fifo->txdl_per_memblock == 0) { - __hal_fifo_delete(vpath_handle); - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_BLOCK_SIZE); - return (VXGE_HAL_ERR_INVALID_BLOCK_SIZE); - } - - /* calculate actual TxDL block private size */ - fifo->txdlblock_priv_size = - fifo->txdl_priv_size * fifo->txdl_per_memblock; - - fifo->mempool = - vxge_hal_mempool_create((vxge_hal_device_h) vp->vpath->hldev, - fifo->memblock_size, - fifo->memblock_size, - fifo->txdlblock_priv_size, - fifo->config->fifo_length / - fifo->txdl_per_memblock, - fifo->config->fifo_length / - fifo->txdl_per_memblock, - __hal_fifo_mempool_item_alloc, - __hal_fifo_mempool_item_free, - fifo); - - if (fifo->mempool == NULL) { - __hal_fifo_delete(vpath_handle); - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - status = vxge_hal_channel_initialize(&fifo->channel); - if (status != VXGE_HAL_OK) { - __hal_fifo_delete(vpath_handle); - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * __hal_fifo_abort - Returns the TxD - * @fifoh: Fifo to be reset - * @reopen: See vxge_hal_reopen_e {}. - * - * This function terminates the TxDs of fifo - */ -void -__hal_fifo_abort( - vxge_hal_fifo_h fifoh, - vxge_hal_reopen_e reopen) -{ - u32 i = 0; - __hal_fifo_t *fifo = (__hal_fifo_t *) fifoh; - __hal_device_t *hldev; - vxge_hal_txdl_h txdlh; - - vxge_assert(fifoh != NULL); - - hldev = (__hal_device_t *) fifo->channel.devh; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("fifo = 0x"VXGE_OS_STXFMT", reopen = %d", - (ptr_t) fifoh, reopen); - - if (fifo->txdl_term) { - __hal_channel_for_each_dtr(&fifo->channel, txdlh, i) { - if (!__hal_channel_is_posted_dtr(&fifo->channel, - i)) { - fifo->txdl_term(fifo->channel.vph, txdlh, - VXGE_HAL_FIFO_ULD_PRIV(fifo, txdlh), - VXGE_HAL_TXDL_STATE_FREED, - fifo->channel.userdata, - reopen); - } - } - } - - for (;;) { - __hal_channel_dtr_try_complete(&fifo->channel, &txdlh); - - if (txdlh == NULL) - break; - - __hal_channel_dtr_complete(&fifo->channel); - - if (fifo->txdl_term) { - fifo->txdl_term(fifo->channel.vph, txdlh, - VXGE_HAL_FIFO_ULD_PRIV(fifo, txdlh), - VXGE_HAL_TXDL_STATE_POSTED, - fifo->channel.userdata, - reopen); - } - - __hal_channel_dtr_free(&fifo->channel, - VXGE_HAL_FIFO_TXDL_INDEX(txdlh)); - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_fifo_reset - Resets the fifo - * @fifoh: Fifo to be reset - * - * This function resets the fifo during vpath reset operation - */ -vxge_hal_status_e -__hal_fifo_reset( - vxge_hal_fifo_h fifoh) -{ - vxge_hal_status_e status; - __hal_device_t *hldev; - __hal_fifo_t *fifo = (__hal_fifo_t *) fifoh; - - vxge_assert(fifoh != NULL); - - hldev = (__hal_device_t *) fifo->channel.devh; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("fifo = 0x"VXGE_OS_STXFMT, - (ptr_t) fifoh); - - __hal_fifo_abort(fifoh, VXGE_HAL_RESET_ONLY); - - status = __hal_channel_reset(&fifo->channel); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_fifo_doorbell_reset - Resets the doorbell fifo - * @vapth_handle: Vpath Handle - * - * This function resets the doorbell fifo during if fifo error occurs - */ -vxge_hal_status_e -vxge_hal_fifo_doorbell_reset( - vxge_hal_vpath_h vpath_handle) -{ - u32 i; - vxge_hal_txdl_h txdlh; - __hal_fifo_t *fifo; - __hal_virtualpath_t *vpath; - __hal_fifo_txdl_priv_t *txdl_priv; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vpath = ((__hal_vpath_handle_t *) fifo->channel.vph)->vpath; - - status = __hal_non_offload_db_reset(fifo->channel.vph); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (status); - } - - __hal_channel_for_each_posted_dtr(&fifo->channel, txdlh, i) { - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - - __hal_non_offload_db_post(fifo->channel.vph, - ((VXGE_HAL_FIFO_TXD_NO_BW_LIMIT_GET( - ((vxge_hal_fifo_txd_t *) txdlh)->control_1)) ? - (((u64) txdl_priv->dma_addr) | 0x1) : - (u64) txdl_priv->dma_addr), - txdl_priv->frags - 1, - vpath->vp_config->fifo.no_snoop_bits); - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (status); -} - -/* - * __hal_fifo_delete - Removes the FIFO - * @vpath_handle: Virtual path handle to which this queue belongs - * - * This function freeup the memory pool and removes the FIFO - */ -void -__hal_fifo_delete( - vxge_hal_vpath_h vpath_handle) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - if (fifo->mempool) { - __hal_fifo_abort(vp->vpath->fifoh, VXGE_HAL_OPEN_NORMAL); - vxge_hal_mempool_destroy(fifo->mempool); - } - - vxge_hal_channel_terminate(&fifo->channel); - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_lock_destroy(&fifo->channel.post_lock, - vp->vpath->hldev->header.pdev); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_lock_destroy_irq(&fifo->channel.post_lock, - vp->vpath->hldev->header.pdev); -#endif - - vxge_hal_channel_free(&fifo->channel); - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -#if defined(VXGE_HAL_ALIGN_XMIT) -/* - * __hal_fifo_txdl_align_free_unmap - Unmap the alignement buffers - * @fifo: Fifo - * @txdp: txdl - * - * This function unmaps dma memory for the alignment buffers - */ -void -__hal_fifo_txdl_align_free_unmap( - __hal_fifo_t *fifo, - vxge_hal_fifo_txd_t *txdp) -{ - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - - vxge_assert((fifo != NULL) && (txdp != NULL)); - - hldev = (__hal_device_t *) fifo->channel.devh; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "fifo = 0x"VXGE_OS_STXFMT", txdp = 0x"VXGE_OS_STXFMT, - (ptr_t) fifo, (ptr_t) txdp); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdp); - - if (txdl_priv->align_vaddr != NULL) { - __hal_blockpool_free(fifo->channel.devh, - txdl_priv->align_vaddr, - fifo->align_size, - &txdl_priv->align_dma_addr, - &txdl_priv->align_dma_handle, - &txdl_priv->align_dma_acch); - - txdl_priv->align_vaddr = NULL; - txdl_priv->align_dma_addr = 0; - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_fifo_txdl_align_alloc_map - Maps the alignement buffers - * @fifo: Fifo - * @txdp: txdl - * - * This function maps dma memory for the alignment buffers - */ -vxge_hal_status_e -__hal_fifo_txdl_align_alloc_map( - __hal_fifo_t *fifo, - vxge_hal_fifo_txd_t *txdp) -{ - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - - vxge_assert((fifo != NULL) && (txdp != NULL)); - - hldev = (__hal_device_t *) fifo->channel.devh; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "fifo = 0x"VXGE_OS_STXFMT", txdp = 0x"VXGE_OS_STXFMT, - (ptr_t) fifo, (ptr_t) txdp); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdp); - - /* allocate alignment DMA-buffer */ - txdl_priv->align_vaddr = - (u8 *) __hal_blockpool_malloc(fifo->channel.devh, - fifo->align_size, - &txdl_priv->align_dma_addr, - &txdl_priv->align_dma_handle, - &txdl_priv->align_dma_acch); - if (txdl_priv->align_vaddr == NULL) { - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} -#endif -/* - * vxge_hal_fifo_free_txdl_count_get - returns the number of txdls - * available in the fifo - * @vpath_handle: Virtual path handle. - */ -u32 -vxge_hal_fifo_free_txdl_count_get(vxge_hal_vpath_h vpath_handle) -{ - return __hal_channel_free_dtr_count(&((__hal_fifo_t *) - ((__hal_vpath_handle_t *) vpath_handle)->vpath->fifoh)->channel); -} - -/* - * vxge_hal_fifo_txdl_private_get - Retrieve per-descriptor private data. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * - * Retrieve per-descriptor private data. - * Note that ULD requests per-descriptor space via - * vxge_hal_fifo_attr_t passed to - * vxge_hal_vpath_open(). - * - * Returns: private ULD data associated with the descriptor. - */ -void * -vxge_hal_fifo_txdl_private_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh) -{ - return (VXGE_HAL_FIFO_ULD_PRIV(((__hal_fifo_t *) - ((__hal_vpath_handle_t *) vpath_handle)->vpath->fifoh), txdlh)); -} - -/* - * vxge_hal_fifo_txdl_reserve - Reserve fifo descriptor. - * @vapth_handle: virtual path handle. - * @txdlh: Reserved descriptor. On success HAL fills this "out" parameter - * with a valid handle. - * @txdl_priv: Buffer to return the pointer to per txdl space - * - * Reserve a single TxDL (that is, fifo descriptor) - * for the subsequent filling-in by upper layerdriver (ULD)) - * and posting on the corresponding channel (@channelh) - * via vxge_hal_fifo_txdl_post(). - * - * Note: it is the responsibility of ULD to reserve multiple descriptors - * for lengthy (e.g., LSO) transmit operation. A single fifo descriptor - * carries up to configured number (fifo.max_frags) of contiguous buffers. - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_INF_OUT_OF_DESCRIPTORS - Currently no descriptors available - * - */ -vxge_hal_status_e -vxge_hal_fifo_txdl_reserve( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h *txdlh, - void **txdl_priv) -{ - u32 i; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - __hal_fifo_t *fifo; - vxge_hal_status_e status; - -#if defined(VXGE_HAL_TX_MULTI_POST_IRQ) - unsigned long flags = 0; - -#endif - - vxge_assert((vpath_handle != NULL) && (txdlh != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "vpath_handle = 0x"VXGE_OS_STXFMT", txdlh = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) txdlh); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_lock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&fifo->channel.post_lock, flags); -#endif - - status = __hal_channel_dtr_reserve(&fifo->channel, txdlh); - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_unlock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&fifo->channel.post_lock, flags); -#endif - - if (status == VXGE_HAL_OK) { - vxge_hal_fifo_txd_t *txdp = (vxge_hal_fifo_txd_t *)*txdlh; - __hal_fifo_txdl_priv_t *priv; - - priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdp); - - /* reset the TxDL's private */ - priv->align_dma_offset = 0; - priv->align_vaddr_start = priv->align_vaddr; - priv->align_used_frags = 0; - priv->frags = 0; - priv->alloc_frags = fifo->config->max_frags; - priv->dang_txdl = NULL; - priv->dang_frags = 0; - priv->next_txdl_priv = NULL; - priv->bytes_sent = 0; - - *txdl_priv = VXGE_HAL_FIFO_ULD_PRIV(fifo, txdp); - - for (i = 0; i < fifo->config->max_frags; i++) { - txdp = ((vxge_hal_fifo_txd_t *)*txdlh) + i; - txdp->control_0 = txdp->control_1 = 0; - } - -#if defined(VXGE_OS_MEMORY_CHECK) - priv->allocated = 1; -#endif - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (status); -} - -/* - * vxge_hal_fifo_txdl_buffer_set - Set transmit buffer pointer in the - * descriptor. - * @vpath_handle: virtual path handle. - * @txdlh: Descriptor handle. - * @frag_idx: Index of the data buffer in the caller's scatter-gather list - * (of buffers). - * @dma_pointer: DMA address of the data buffer referenced by @frag_idx. - * @size: Size of the data buffer (in bytes). - * - * This API is part of the preparation of the transmit descriptor for posting - * (via vxge_hal_fifo_txdl_post()). The related "preparation" APIs include - * vxge_hal_fifo_txdl_mss_set() and vxge_hal_fifo_txdl_cksum_set_bits(). - * All three APIs fill in the fields of the fifo descriptor, - * in accordance with the X3100 specification. - * - */ -void -vxge_hal_fifo_txdl_buffer_set( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 frag_idx, - dma_addr_t dma_pointer, - unsigned long size) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - vxge_hal_fifo_txd_t *txdp; - - vxge_assert((vpath_handle != NULL) && (txdlh != NULL) && - (dma_pointer != 0) && (size != 0)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT", " - "txdlh = 0x"VXGE_OS_STXFMT", frag_idx = %d, " - "dma_pointer = 0x"VXGE_OS_LLXFMT", size = %lu", - (ptr_t) vpath_handle, (ptr_t) txdlh, - frag_idx, (u64) dma_pointer, size); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - - txdp = (vxge_hal_fifo_txd_t *) txdlh + txdl_priv->frags; - - /* - * Note: - * it is the responsibility of upper layers and not HAL - * detect it and skip zero-size fragment - */ - vxge_assert(size > 0); - vxge_assert(frag_idx < txdl_priv->alloc_frags); - - txdp->buffer_pointer = (u64) dma_pointer; - txdp->control_0 |= VXGE_HAL_FIFO_TXD_BUFFER_SIZE(size); - txdl_priv->bytes_sent += size; - fifo->stats->total_buffers++; - txdl_priv->frags++; - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_fifo_txdl_buffer_set_aligned - Align transmit buffer and fill - * in fifo descriptor. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * @frag_idx: Index of the data buffer in the caller's scatter-gather list - * (of buffers). - * @vaddr: Virtual address of the data buffer. - * @dma_pointer: DMA address of the data buffer referenced by @frag_idx. - * @size: Size of the data buffer (in bytes). - * @misaligned_size: Size (in bytes) of the misaligned portion of the - * data buffer. Calculated by the caller, based on the platform/OS/other - * specific criteria, which is outside of HAL's domain. See notes below. - * - * This API is part of the transmit descriptor preparation for posting - * (via vxge_hal_fifo_txdl_post()). The related "preparation" APIs include - * vxge_hal_fifo_txdl_mss_set() and vxge_hal_fifo_txdl_cksum_set_bits(). - * All three APIs fill in the fields of the fifo descriptor, - * in accordance with the X3100 specification. - * On the PCI-X based systems aligning transmit data typically provides better - * transmit performance. The typical alignment granularity: L2 cacheline size. - * However, HAL does not make assumptions in terms of the alignment granularity; - * this is specified via additional @misaligned_size parameter described above. - * Prior to calling vxge_hal_fifo_txdl_buffer_set_aligned(), - * ULD is supposed to check alignment of a given fragment/buffer. For this HAL - * provides a separate vxge_hal_check_alignment() API sufficient to cover - * most (but not all) possible alignment criteria. - * If the buffer appears to be aligned, the ULD calls - * vxge_hal_fifo_txdl_buffer_set(). - * Otherwise, ULD calls vxge_hal_fifo_txdl_buffer_set_aligned(). - * - * Note; This API is a "superset" of vxge_hal_fifo_txdl_buffer_set(). In - * addition to filling in the specified descriptor it aligns transmit data on - * the specified boundary. - * Note: Decision on whether to align or not to align a given contiguous - * transmit buffer is outside of HAL's domain. To this end ULD can use any - * programmable criteria, which can help to 1) boost transmit performance, - * and/or 2) provide a workaround for PCI bridge bugs, if any. - * - */ -vxge_hal_status_e -vxge_hal_fifo_txdl_buffer_set_aligned( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 frag_idx, - void *vaddr, - dma_addr_t dma_pointer, - u32 size, - u32 misaligned_size) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - vxge_hal_fifo_txd_t *txdp; - int remaining_size; - ptrdiff_t prev_boff; - - vxge_assert((vpath_handle != NULL) && (txdlh != NULL) && - (vaddr != NULL) && (dma_pointer != 0) && - (size != 0) && (misaligned_size != 0)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "vpath_handle = 0x"VXGE_OS_STXFMT", txdlh = 0x"VXGE_OS_STXFMT", " - "frag_idx = %d, vaddr = 0x"VXGE_OS_STXFMT", " - "dma_pointer = 0x"VXGE_OS_LLXFMT", size = %d, " - "misaligned_size = %d", (ptr_t) vpath_handle, - (ptr_t) txdlh, frag_idx, (ptr_t) vaddr, (u64) dma_pointer, size, - misaligned_size); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - - txdp = (vxge_hal_fifo_txd_t *) txdlh + txdl_priv->frags; - - /* - * On some systems buffer size could be zero. - * It is the responsibility of ULD and *not HAL* to - * detect it and skip it. - */ - vxge_assert(size > 0); - vxge_assert(frag_idx < txdl_priv->alloc_frags); - vxge_assert(misaligned_size != 0 && - misaligned_size <= fifo->config->alignment_size); - - remaining_size = size - misaligned_size; - vxge_assert(remaining_size >= 0); - - vxge_os_memcpy((char *) txdl_priv->align_vaddr_start, - vaddr, misaligned_size); - - if (txdl_priv->align_used_frags >= fifo->config->max_aligned_frags) { - return (VXGE_HAL_ERR_OUT_ALIGNED_FRAGS); - } - - /* setup new buffer */ - /* LINTED */ - prev_boff = txdl_priv->align_vaddr_start - txdl_priv->align_vaddr; - txdp->buffer_pointer = (u64) txdl_priv->align_dma_addr + prev_boff; - txdp->control_0 |= VXGE_HAL_FIFO_TXD_BUFFER_SIZE(misaligned_size); - txdl_priv->bytes_sent += misaligned_size; - fifo->stats->total_buffers++; - txdl_priv->frags++; - txdl_priv->align_used_frags++; - txdl_priv->align_vaddr_start += fifo->config->alignment_size; - txdl_priv->align_dma_offset = 0; - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) - /* sync new buffer */ - vxge_os_dma_sync(fifo->channel.pdev, - txdl_priv->align_dma_handle, - txdp->buffer_pointer, - 0, - misaligned_size, - VXGE_OS_DMA_DIR_TODEVICE); -#endif - - if (remaining_size) { - vxge_assert(frag_idx < txdl_priv->alloc_frags); - txdp++; - txdp->buffer_pointer = (u64) dma_pointer + misaligned_size; - txdp->control_0 |= - VXGE_HAL_FIFO_TXD_BUFFER_SIZE(remaining_size); - txdl_priv->bytes_sent += remaining_size; - fifo->stats->total_buffers++; - txdl_priv->frags++; - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_fifo_txdl_buffer_append - Append the contents of virtually - * contiguous data buffer to a single physically contiguous buffer. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * @vaddr: Virtual address of the data buffer. - * @size: Size of the data buffer (in bytes). - * - * This API is part of the transmit descriptor preparation for posting - * (via vxge_hal_fifo_txdl_post()). - * The main difference of this API wrt to the APIs - * vxge_hal_fifo_txdl_buffer_set_aligned() is that this API appends the - * contents of virtually contiguous data buffers received from - * upper layer into a single physically contiguous data buffer and the - * device will do a DMA from this buffer. - * - * See Also: vxge_hal_fifo_txdl_buffer_finalize(), - * vxge_hal_fifo_txdl_buffer_set(), - * vxge_hal_fifo_txdl_buffer_set_aligned(). - */ -vxge_hal_status_e -vxge_hal_fifo_txdl_buffer_append( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - void *vaddr, - u32 size) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - ptrdiff_t used; - - vxge_assert((vpath_handle != NULL) && (txdlh != NULL) && - (vaddr != NULL) && (size == 0)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT", " - "txdlh = 0x"VXGE_OS_STXFMT", vaddr = 0x"VXGE_OS_STXFMT", " - "size = %d", (ptr_t) vpath_handle, (ptr_t) txdlh, - (ptr_t) vaddr, size); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - - /* LINTED */ - used = txdl_priv->align_vaddr_start - txdl_priv->align_vaddr; - used += txdl_priv->align_dma_offset; - - if (used + (unsigned int)size > (unsigned int)fifo->align_size) - return (VXGE_HAL_ERR_OUT_ALIGNED_FRAGS); - - vxge_os_memcpy((char *) txdl_priv->align_vaddr_start + - txdl_priv->align_dma_offset, vaddr, size); - - fifo->stats->copied_frags++; - - txdl_priv->align_dma_offset += size; - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_fifo_txdl_buffer_finalize - Prepares a descriptor that contains the - * single physically contiguous buffer. - * - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * @frag_idx: Index of the data buffer in the Txdl list. - * - * This API in conjunction with vxge_hal_fifo_txdl_buffer_append() prepares - * a descriptor that consists of a single physically contiguous buffer - * which inturn contains the contents of one or more virtually contiguous - * buffers received from the upper layer. - * - * See Also: vxge_hal_fifo_txdl_buffer_append(). - */ -void -vxge_hal_fifo_txdl_buffer_finalize( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 frag_idx) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - vxge_hal_fifo_txd_t *txdp; - ptrdiff_t prev_boff; - - vxge_assert((vpath_handle != NULL) && - (txdlh != NULL) && (frag_idx != 0)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT", " - "txdlh = 0x"VXGE_OS_STXFMT", frag_idx = %d", (ptr_t) vpath_handle, - (ptr_t) txdlh, frag_idx); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - txdp = (vxge_hal_fifo_txd_t *) txdlh + txdl_priv->frags; - - /* LINTED */ - prev_boff = txdl_priv->align_vaddr_start - txdl_priv->align_vaddr; - txdp->buffer_pointer = (u64) txdl_priv->align_dma_addr + prev_boff; - txdp->control_0 |= - VXGE_HAL_FIFO_TXD_BUFFER_SIZE(txdl_priv->align_dma_offset); - txdl_priv->bytes_sent += (unsigned int)txdl_priv->align_dma_offset; - fifo->stats->total_buffers++; - fifo->stats->copied_buffers++; - txdl_priv->frags++; - txdl_priv->align_used_frags++; - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) - /* sync pre-mapped buffer */ - vxge_os_dma_sync(fifo->channel.pdev, - txdl_priv->align_dma_handle, - txdp->buffer_pointer, - 0, - txdl_priv->align_dma_offset, - VXGE_OS_DMA_DIR_TODEVICE); -#endif - - /* increment vaddr_start for the next buffer_append() iteration */ - txdl_priv->align_vaddr_start += txdl_priv->align_dma_offset; - txdl_priv->align_dma_offset = 0; - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_fifo_txdl_new_frame_set - Start the new packet by setting TXDL flags - * @vpath_handle: virtual path handle. - * @txdlh: Descriptor handle. - * @tagged: Is the frame tagged - * - * This API is part of the preparation of the transmit descriptor for posting - * (via vxge_hal_fifo_txdl_post()). This api is used to mark the end of previous - * frame and start of a new frame. - * - */ -void -vxge_hal_fifo_txdl_new_frame_set( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 tagged) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - vxge_hal_fifo_txd_t *txdp; - - vxge_assert((vpath_handle != NULL) && (txdlh != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT", " - "txdlh = 0x"VXGE_OS_STXFMT", tagged = %d", - (ptr_t) vpath_handle, (ptr_t) txdlh, tagged); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - - txdp = (vxge_hal_fifo_txd_t *) txdlh + txdl_priv->frags; - - txdp->control_0 |= - VXGE_HAL_FIFO_TXD_HOST_STEER(vp->vpath->vp_config->wire_port); - txdp->control_0 |= VXGE_HAL_FIFO_TXD_GATHER_CODE( - VXGE_HAL_FIFO_TXD_GATHER_CODE_FIRST); - txdp->control_1 |= fifo->interrupt_type; - txdp->control_1 |= VXGE_HAL_FIFO_TXD_INT_NUMBER( - vp->vpath->tx_intr_num); - if (tagged) - txdp->control_1 |= VXGE_HAL_FIFO_TXD_NO_BW_LIMIT; - if (txdl_priv->frags) { - - txdp = (vxge_hal_fifo_txd_t *) txdlh + (txdl_priv->frags - 1); - - txdp->control_0 |= VXGE_HAL_FIFO_TXD_GATHER_CODE( - VXGE_HAL_FIFO_TXD_GATHER_CODE_LAST); - - } - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_fifo_txdl_post - Post descriptor on the fifo channel. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor obtained via vxge_hal_fifo_txdl_reserve() - * @tagged: Is the frame tagged - * - * Post descriptor on the 'fifo' type channel for transmission. - * Prior to posting the descriptor should be filled in accordance with - * Host/X3100 interface specification for a given service (LL, etc.). - * - */ -void -vxge_hal_fifo_txdl_post( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - u32 tagged) -{ - u64 list_ptr; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - vxge_hal_fifo_txd_t *txdp_last; - vxge_hal_fifo_txd_t *txdp_first; - -#if defined(VXGE_HAL_TX_MULTI_POST_IRQ) - unsigned long flags = 0; - -#endif - - vxge_assert((vpath_handle != NULL) && (txdlh != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT", " - "txdlh = 0x"VXGE_OS_STXFMT", tagged = %d", - (ptr_t) vpath_handle, (ptr_t) txdlh, tagged); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - - txdp_first = (vxge_hal_fifo_txd_t *) txdlh; - txdp_first->control_0 |= - VXGE_HAL_FIFO_TXD_HOST_STEER(vp->vpath->vp_config->wire_port); - txdp_first->control_0 |= - VXGE_HAL_FIFO_TXD_GATHER_CODE(VXGE_HAL_FIFO_TXD_GATHER_CODE_FIRST); - txdp_first->control_1 |= - VXGE_HAL_FIFO_TXD_INT_NUMBER(vp->vpath->tx_intr_num); - txdp_first->control_1 |= fifo->interrupt_type; - list_ptr = (u64) txdl_priv->dma_addr; - if (tagged) { - txdp_first->control_1 |= VXGE_HAL_FIFO_TXD_NO_BW_LIMIT; - list_ptr |= 0x1; - } - - txdp_last = - (vxge_hal_fifo_txd_t *) txdlh + (txdl_priv->frags - 1); - txdp_last->control_0 |= - VXGE_HAL_FIFO_TXD_GATHER_CODE(VXGE_HAL_FIFO_TXD_GATHER_CODE_LAST); - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_lock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&fifo->channel.post_lock, flags); -#endif - - txdp_first->control_0 |= VXGE_HAL_FIFO_TXD_LIST_OWN_ADAPTER; - -#if defined(VXGE_DEBUG_ASSERT) - /* make sure device overwrites the t_code value on completion */ - txdp_first->control_0 |= - VXGE_HAL_FIFO_TXD_T_CODE(VXGE_HAL_FIFO_TXD_T_CODE_UNUSED); -#endif - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_TXDL_STREAMING) - /* sync the TxDL to device */ - vxge_os_dma_sync(fifo->channel.pdev, - txdl_priv->dma_handle, - txdl_priv->dma_addr, - txdl_priv->dma_offset, - txdl_priv->frags << 5, /* sizeof(vxge_hal_fifo_txd_t) */ - VXGE_OS_DMA_DIR_TODEVICE); -#endif - /* - * we want touch dtr_arr in order with ownership bit set to HW - */ - __hal_channel_dtr_post(&fifo->channel, VXGE_HAL_FIFO_TXDL_INDEX(txdlh)); - - __hal_non_offload_db_post(vpath_handle, - list_ptr, - txdl_priv->frags - 1, - vp->vpath->vp_config->fifo.no_snoop_bits); - -#if defined(VXGE_HAL_FIFO_DUMP_TXD) - vxge_hal_info_log_fifo( - ""VXGE_OS_LLXFMT":"VXGE_OS_LLXFMT":"VXGE_OS_LLXFMT":" - VXGE_OS_LLXFMT" dma "VXGE_OS_LLXFMT, - txdp_first->control_0, txdp_first->control_1, - txdp_first->buffer_pointer, VXGE_HAL_FIFO_TXDL_INDEX(txdp_first), - txdl_priv->dma_addr); -#endif - - fifo->stats->total_posts++; - fifo->stats->common_stats.usage_cnt++; - if (fifo->stats->common_stats.usage_max < - fifo->stats->common_stats.usage_cnt) - fifo->stats->common_stats.usage_max = - fifo->stats->common_stats.usage_cnt; - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_unlock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&fifo->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_fifo_is_next_txdl_completed - Checks if the next txdl is completed - * @vpath_handle: Virtual path handle. - */ -vxge_hal_status_e -vxge_hal_fifo_is_next_txdl_completed(vxge_hal_vpath_h vpath_handle) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - vxge_hal_fifo_txd_t *txdp; - vxge_hal_txdl_h txdlh; - vxge_hal_status_e status = VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS; - -#if defined(VXGE_HAL_TX_MULTI_POST_IRQ) - unsigned long flags = 0; - -#endif - - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_lock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&fifo->channel.post_lock, flags); -#endif - - __hal_channel_dtr_try_complete(&fifo->channel, &txdlh); - - txdp = (vxge_hal_fifo_txd_t *) txdlh; - if ((txdp != NULL) && - (!(txdp->control_0 & VXGE_HAL_FIFO_TXD_LIST_OWN_ADAPTER))) { - status = VXGE_HAL_OK; - } - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_unlock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&fifo->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - /* no more completions */ - return (status); -} - -/* - * vxge_hal_fifo_txdl_next_completed - Retrieve next completed descriptor. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. Returned by HAL. - * @txdl_priv: Buffer to return the pointer to per txdl space - * @t_code: Transfer code, as per X3100 User Guide, - * Transmit Descriptor Format. - * Returned by HAL. - * - * Retrieve the _next_ completed descriptor. - * HAL uses channel callback (*vxge_hal_channel_callback_f) to notifiy - * upper-layer driver (ULD) of new completed descriptors. After that - * the ULD can use vxge_hal_fifo_txdl_next_completed to retrieve the rest - * completions (the very first completion is passed by HAL via - * vxge_hal_channel_callback_f). - * - * Implementation-wise, the upper-layer driver is free to call - * vxge_hal_fifo_txdl_next_completed either immediately from inside the - * channel callback, or in a deferred fashion and separate (from HAL) - * context. - * - * Non-zero @t_code means failure to process the descriptor. - * The failure could happen, for instance, when the link is - * down, in which case X3100 completes the descriptor because it - * is not able to send the data out. - * - * For details please refer to X3100 User Guide. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS - No completed descriptors - * are currently available for processing. - * - */ -vxge_hal_status_e -vxge_hal_fifo_txdl_next_completed( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h * txdlh, - void **txdl_priv, - vxge_hal_fifo_tcode_e * t_code) -{ - __hal_fifo_t *fifo; - __hal_device_t *hldev; - vxge_hal_fifo_txd_t *txdp; - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_TXDL_STREAMING) - __hal_fifo_txdl_priv_t *priv; - -#endif -#if defined(VXGE_HAL_TX_MULTI_POST_IRQ) - unsigned long flags = 0; - -#endif - - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - vxge_hal_status_e status = VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS; - - vxge_assert((vpath_handle != NULL) && - (txdlh != NULL) && (t_code != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT", " - "txdlh = 0x"VXGE_OS_STXFMT", t_code = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) txdlh, (ptr_t) t_code); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - *txdlh = 0; - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_lock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&fifo->channel.post_lock, flags); -#endif - - __hal_channel_dtr_try_complete(&fifo->channel, txdlh); - - txdp = (vxge_hal_fifo_txd_t *) * txdlh; - if (txdp != NULL) { - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_TXDL_STREAMING) - priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdp); - - /* - * sync TxDL to read the ownership - * - * Note: 16bytes means Control_1 & Control_2 - */ - vxge_os_dma_sync(fifo->channel.pdev, - priv->dma_handle, - priv->dma_addr, - priv->dma_offset, - 16, - VXGE_OS_DMA_DIR_FROMDEVICE); -#endif - - /* check whether host owns it */ - if (!(txdp->control_0 & VXGE_HAL_FIFO_TXD_LIST_OWN_ADAPTER)) { - - __hal_channel_dtr_complete(&fifo->channel); - - *txdl_priv = VXGE_HAL_FIFO_ULD_PRIV(fifo, txdp); - - *t_code = (vxge_hal_fifo_tcode_e) - VXGE_HAL_FIFO_TXD_T_CODE_GET(txdp->control_0); - - if (fifo->stats->common_stats.usage_cnt > 0) - fifo->stats->common_stats.usage_cnt--; - - status = VXGE_HAL_OK; - } - } - - /* no more completions */ -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_unlock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&fifo->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_fifo_handle_tcode - Handle transfer code. - * @vpath_handle: Virtual Path handle. - * @txdlh: Descriptor handle. - * @t_code: One of the enumerated (and documented in the X3100 user guide) - * "transfer codes". - * - * Handle descriptor's transfer code. The latter comes with each completed - * descriptor. - * - * Returns: one of the vxge_hal_status_e {} enumerated types. - * VXGE_HAL_OK - for success. - * VXGE_HAL_ERR_CRITICAL - when encounters critical error. - */ -vxge_hal_status_e -vxge_hal_fifo_handle_tcode( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh, - vxge_hal_fifo_tcode_e t_code) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - - vxge_assert((vpath_handle != NULL) && (txdlh != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT", " - "txdlh = 0x"VXGE_OS_STXFMT", t_code = 0x%d", - (ptr_t) vpath_handle, (ptr_t) txdlh, t_code); - - switch ((t_code & 0x7)) { - case 0: - /* 000: Transfer operation completed successfully. */ - break; - case 1: - /* - * 001: a PCI read transaction (either TxD or frame data) - * returned with corrupt data. - */ - break; - case 2: - /* 010: a PCI read transaction was returned with no data. */ - break; - case 3: - /* - * 011: The host attempted to send either a frame or LSO - * MSS that was too long (>9800B). - */ - break; - case 4: - /* - * 100: Error detected during TCP/UDP Large Send - * Offload operation, due to improper header template, - * unsupported protocol, etc. - */ - break; - default: - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_TCODE); - return (VXGE_HAL_ERR_INVALID_TCODE); - } - - vp->vpath->sw_stats->fifo_stats.txd_t_code_err_cnt[t_code]++; - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_OK); - return (VXGE_HAL_OK); -} - -/* - * __hal_fifo_txdl_free_many - Free the fragments - * @fifo: FIFO - * @txdp: Poniter to a TxD - * @list_size: List size - * @frags: Number of fragments - * - * This routinf frees the fragments in a txdl - */ -void -__hal_fifo_txdl_free_many( - __hal_fifo_t *fifo, - vxge_hal_fifo_txd_t * txdp, - u32 list_size, - u32 frags) -{ - __hal_fifo_txdl_priv_t *current_txdl_priv; - __hal_fifo_txdl_priv_t *next_txdl_priv; - u32 invalid_frags = frags % list_size; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) fifo->channel.vph; - __hal_device_t *hldev; - - vxge_assert((fifo != NULL) && (txdp != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo( - "fifo = 0x"VXGE_OS_STXFMT", txdp = 0x"VXGE_OS_STXFMT", " - "list_size = %d, frags = %d", (ptr_t) fifo, (ptr_t) txdp, - list_size, frags); - - if (invalid_frags) { - vxge_hal_trace_log_fifo( - "freeing corrupt txdlh 0x"VXGE_OS_STXFMT", " - "fragments %d list size %d", - (ptr_t) txdp, frags, list_size); - vxge_assert(invalid_frags == 0); - } - while (txdp) { - vxge_hal_trace_log_fifo("freeing linked txdlh 0x"VXGE_OS_STXFMT - ", " "fragments %d list size %d", - (ptr_t) txdp, frags, list_size); - current_txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdp); -#if defined(VXGE_DEBUG_ASSERT) && defined(VXGE_OS_MEMORY_CHECK) - current_txdl_priv->allocated = 0; -#endif - __hal_channel_dtr_free(&fifo->channel, - VXGE_HAL_FIFO_TXDL_INDEX(txdp)); - next_txdl_priv = current_txdl_priv->next_txdl_priv; - vxge_assert(frags); - frags -= list_size; - if (next_txdl_priv) { - current_txdl_priv->next_txdl_priv = NULL; - txdp = next_txdl_priv->first_txdp; - } else { - vxge_hal_trace_log_fifo( - "freed linked txdlh fragments %d list size %d", - frags, list_size); - break; - } - } - - vxge_assert(frags == 0); - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_fifo_txdl_free - Free descriptor. - * @vpath_handle: Virtual path handle. - * @txdlh: Descriptor handle. - * - * Free the reserved descriptor. This operation is "symmetrical" to - * vxge_hal_fifo_txdl_reserve. The "free-ing" completes the descriptor's - * lifecycle. - * - * After free-ing (see vxge_hal_fifo_txdl_free()) the descriptor again can - * be: - * - * - reserved (vxge_hal_fifo_txdl_reserve); - * - * - posted (vxge_hal_fifo_txdl_post); - * - * - completed (vxge_hal_fifo_txdl_next_completed); - * - * - and recycled again (vxge_hal_fifo_txdl_free). - * - * For alternative state transitions and more details please refer to - * the design doc. - * - */ -void -vxge_hal_fifo_txdl_free( - vxge_hal_vpath_h vpath_handle, - vxge_hal_txdl_h txdlh) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - __hal_fifo_txdl_priv_t *txdl_priv; - u32 max_frags; - -#if defined(VXGE_HAL_TX_MULTI_POST_IRQ) - u32 flags = 0; - -#endif - vxge_assert((vpath_handle != NULL) && (txdlh != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_fifo("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_fifo("vpath_handle = 0x"VXGE_OS_STXFMT", " - "txdlh = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle, (ptr_t) txdlh); - - fifo = (__hal_fifo_t *) vp->vpath->fifoh; - - vxge_assert(fifo != NULL); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - - max_frags = fifo->config->max_frags; - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_lock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&fifo->channel.post_lock, flags); -#endif - - if (txdl_priv->alloc_frags > max_frags) { - vxge_hal_fifo_txd_t *dang_txdp = (vxge_hal_fifo_txd_t *) - txdl_priv->dang_txdl; - u32 dang_frags = txdl_priv->dang_frags; - u32 alloc_frags = txdl_priv->alloc_frags; - txdl_priv->dang_txdl = NULL; - txdl_priv->dang_frags = 0; - txdl_priv->alloc_frags = 0; - /* txdlh must have a linked list of txdlh */ - vxge_assert(txdl_priv->next_txdl_priv); - - /* free any dangling txdlh first */ - if (dang_txdp) { - vxge_hal_info_log_fifo( - "freeing dangled txdlh 0x"VXGE_OS_STXFMT" for %d " - "fragments", (ptr_t) dang_txdp, dang_frags); - __hal_fifo_txdl_free_many(fifo, dang_txdp, - max_frags, dang_frags); - } - - /* now free the reserved txdlh list */ - vxge_hal_info_log_fifo( - "freeing txdlh 0x"VXGE_OS_STXFMT" list of %d fragments", - (ptr_t) txdlh, alloc_frags); - __hal_fifo_txdl_free_many(fifo, - (vxge_hal_fifo_txd_t *) txdlh, max_frags, - alloc_frags); - } else { - __hal_channel_dtr_free(&fifo->channel, - VXGE_HAL_FIFO_TXDL_INDEX(txdlh)); - } - - fifo->channel.poll_bytes += txdl_priv->bytes_sent; - -#if defined(VXGE_DEBUG_ASSERT) && defined(VXGE_OS_MEMORY_CHECK) - txdl_priv->allocated = 0; -#endif - -#if defined(VXGE_HAL_TX_MULTI_POST) - vxge_os_spin_unlock(&fifo->channel.post_lock); -#elif defined(VXGE_HAL_TX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&fifo->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_fifo("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} Index: sys/dev/vxge/vxgehal/vxgehal-ifmsg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-ifmsg.h +++ sys/dev/vxge/vxgehal/vxgehal-ifmsg.h @@ -1,85 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_IFMSG_H -#define VXGE_HAL_IFMSG_H - -__EXTERN_BEGIN_DECLS - - -#define VXGE_HAL_IFMSG_PRIV_DRIVER_UP_MSG \ - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE(VXGE_HAL_IFMSG_MSV_OPCODE_UP) - -#define VXGE_HAL_IFMSG_PRIV_DRIVER_DOWN_MSG \ - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE(VXGE_HAL_IFMSG_MSV_OPCODE_DOWN) - -#define VXGE_HAL_IFMSG_DEVICE_RESET_BEGIN_MSG \ - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE( \ - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_BEGIN) - -#define VXGE_HAL_IFMSG_DEVICE_RESET_END_MSG \ - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE( \ - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_END) - -static inline u32 -/* LINTED */ -__hal_ifmsg_is_manager_up(u64 wmsg) -{ - return (((u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MSG_TYPE(wmsg) == - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_PRIV_DRIVER_UP) || - ((u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MSG_TYPE(wmsg) == - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_END)); -} - -vxge_hal_status_e -__hal_ifmsg_device_reset_end_poll( - __hal_device_t *hldev, - u32 vp_id); - -void -__hal_ifmsg_wmsg_process( - __hal_virtualpath_t *vpath, - u64 wmsg); - -vxge_hal_status_e -__hal_ifmsg_wmsg_post( - __hal_device_t *hldev, - u32 src_vp_id, - u32 dest_vp_id, - u32 msg_type, - u32 msg_data); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_IFMSG_H */ Index: sys/dev/vxge/vxgehal/vxgehal-ifmsg.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-ifmsg.c +++ sys/dev/vxge/vxgehal/vxgehal-ifmsg.c @@ -1,260 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ -#include - -/* - * __hal_ifmsg_wmsg_process - Process the srpcim to vpath wmsg - * @vpath: vpath - * @wmsg: wsmsg - * - * Processes the wmsg and invokes appropriate action - */ -void -__hal_ifmsg_wmsg_process( - __hal_virtualpath_t *vpath, - u64 wmsg) -{ - u32 msg_type; - __hal_device_t *hldev = vpath->hldev; - - vxge_assert(vpath); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath = 0x"VXGE_OS_STXFMT - ",wmsg = 0x"VXGE_OS_LLXFMT"", (ptr_t) vpath, wmsg); - - if ((vpath->vp_id != vpath->hldev->first_vp_id) || - (vpath->hldev->vpath_assignments & - mBIT((u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MSG_SRC(wmsg)))) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return; - } - - msg_type = (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MSG_TYPE(wmsg); - - switch (msg_type) { - default: - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_UNKNOWN: - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_BEGIN: - __hal_device_handle_error(hldev, - vpath->vp_id, - VXGE_HAL_EVENT_DEVICE_RESET_START); - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_END: - vpath->hldev->manager_up = TRUE; - __hal_device_handle_error(hldev, - vpath->vp_id, - VXGE_HAL_EVENT_DEVICE_RESET_COMPLETE); - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_VPATH_RESET_BEGIN: - __hal_device_handle_error(hldev, - vpath->vp_id, - VXGE_HAL_EVENT_VPATH_RESET_START); - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_VPATH_RESET_END: - vpath->hldev->manager_up = TRUE; - __hal_device_handle_error(hldev, - vpath->vp_id, - VXGE_HAL_EVENT_VPATH_RESET_COMPLETE); - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_PRIV_DRIVER_UP: - vpath->hldev->manager_up = TRUE; - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_PRIV_DRIVER_DOWN: - vpath->hldev->manager_up = FALSE; - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_ACK: - break; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_ifmsg_device_reset_end_poll - Polls for the - * srpcim to vpath reset end - * @hldev: HAL Device - * @vp_id: Vpath id - * - * Polls for the srpcim to vpath reset end - */ -vxge_hal_status_e -__hal_ifmsg_device_reset_end_poll( - __hal_device_t *hldev, - u32 vp_id) -{ - vxge_hal_status_e status; - - vxge_assert(hldev); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("hldev = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) hldev, vp_id); - - status = vxge_hal_device_register_poll( - hldev->header.pdev, - hldev->header.regh0, - &hldev->vpmgmt_reg[vp_id]->srpcim_to_vpath_wmsg, 0, - ~((u64) VXGE_HAL_IFMSG_DEVICE_RESET_END_MSG), - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (status); - -} - -/* - * __hal_ifmsg_wmsg_post - Posts the srpcim to vpath req - * @hldev: Hal device - * @src_vp_id: Source vpath id - * @dest_vp_id: Vpath id, VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_MRPCIM, or - * VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST - * @msg_type: wsmsg type - * @msg_data: wsmsg data - * - * Posts the req - */ -vxge_hal_status_e -__hal_ifmsg_wmsg_post( - __hal_device_t *hldev, - u32 src_vp_id, - u32 dest_vp_id, - u32 msg_type, - u32 msg_data) -{ - u64 val64; - vxge_hal_vpath_reg_t *vp_reg; - vxge_hal_status_e status; - - vxge_assert(hldev); - - vp_reg = hldev->vpath_reg[src_vp_id]; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim( - "hldev = 0x"VXGE_OS_STXFMT", src_vp_id = %d, dest_vp_id = %d, " - "msg_type = %d, msg_data = %d", (ptr_t) hldev, src_vp_id, - dest_vp_id, msg_type, msg_data); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_IGNORE_IN_SVC_CHECK | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE(msg_type) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_DEST(dest_vp_id) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_SRC(src_vp_id) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEQ_NUM(++hldev->ifmsg_seqno) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_DATA(msg_data), - &vp_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_SEND_MSG) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(0); - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl); - - if (val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS) { - - vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_data0); - - status = VXGE_HAL_OK; - - } else { - status = VXGE_HAL_FAIL; - } - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} Index: sys/dev/vxge/vxgehal/vxgehal-legacy-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-legacy-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-legacy-reg.h @@ -1,63 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_LEGACY_REGS_H -#define VXGE_HAL_LEGACY_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_legacy_reg_t { - - u8 unused00010[0x00010]; - -/* 0x00010 */ u64 toc_swapper_fb; -#define VXGE_HAL_TOC_SWAPPER_FB_INITIAL_VAL(val) vBIT(val, 0, 64) -/* 0x00018 */ u64 pifm_rd_swap_en; -#define VXGE_HAL_PIFM_RD_SWAP_EN_PIFM_RD_SWAP_EN(val) vBIT(val, 0, 64) -/* 0x00020 */ u64 pifm_rd_flip_en; -#define VXGE_HAL_PIFM_RD_FLIP_EN_PIFM_RD_FLIP_EN(val) vBIT(val, 0, 64) -/* 0x00028 */ u64 pifm_wr_swap_en; -#define VXGE_HAL_PIFM_WR_SWAP_EN_PIFM_WR_SWAP_EN(val) vBIT(val, 0, 64) -/* 0x00030 */ u64 pifm_wr_flip_en; -#define VXGE_HAL_PIFM_WR_FLIP_EN_PIFM_WR_FLIP_EN(val) vBIT(val, 0, 64) -/* 0x00038 */ u64 toc_first_pointer; -#define VXGE_HAL_TOC_FIRST_POINTER_INITIAL_VAL(val) vBIT(val, 0, 64) -/* 0x00040 */ u64 host_access_en; -#define VXGE_HAL_HOST_ACCESS_EN_HOST_ACCESS_EN(val) vBIT(val, 0, 64) - -} vxge_hal_legacy_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_LEGACY_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-memrepair-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-memrepair-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-memrepair-reg.h @@ -1,47 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_MEMREPAIR_REGS_H -#define VXGE_HAL_MEMREPAIR_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_memrepair_reg_t { - u64 unused1; - u64 unused2; -} vxge_hal_memrepair_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_MEMREPAIR_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-mgmt.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-mgmt.c +++ sys/dev/vxge/vxgehal/vxgehal-mgmt.c @@ -1,2113 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * vxge_hal_mgmt_about - Retrieve about info. - * @devh: HAL device handle. - * @about_info: Filled in by HAL. See vxge_hal_mgmt_about_info_t {}. - * @size: Pointer to buffer containing the Size of the @buffer_info. - * HAL will return an error if the size is smaller than - * sizeof(vxge_hal_mgmt_about_info_t) and returns required size in this field - * - * Retrieve information such as PCI device and vendor IDs, board - * revision number, HAL version number, etc. - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * VXGE_HAL_FAIL - Failed to retrieve the information. - * - * See also: vxge_hal_mgmt_about_info_t {}. - */ -vxge_hal_status_e -vxge_hal_mgmt_about(vxge_hal_device_h devh, - vxge_hal_mgmt_about_info_t *about_info, - u32 *size) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (about_info != NULL) && (size != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "hldev = 0x"VXGE_OS_STXFMT", about_info = 0x"VXGE_OS_STXFMT", " - "size = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev, (ptr_t) about_info, (ptr_t) size); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (*size < sizeof(vxge_hal_mgmt_about_info_t)) { - *size = sizeof(vxge_hal_mgmt_about_info_t); - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_SPACE); - return (VXGE_HAL_ERR_OUT_OF_SPACE); - } - - about_info->vendor = hldev->pci_config_space_bios.vendor_id; - about_info->device = hldev->pci_config_space_bios.device_id; - about_info->subsys_vendor = - hldev->pci_config_space_bios.subsystem_vendor_id; - about_info->subsys_device = hldev->pci_config_space_bios.subsystem_id; - about_info->board_rev = hldev->pci_config_space_bios.revision; - - vxge_os_strlcpy(about_info->vendor_name, VXGE_DRIVER_VENDOR, - sizeof(about_info->vendor_name)); - vxge_os_strlcpy(about_info->chip_name, VXGE_CHIP_FAMILY, - sizeof(about_info->chip_name)); - vxge_os_strlcpy(about_info->media, VXGE_SUPPORTED_MEDIA_0, - sizeof(about_info->media)); - - (void) vxge_os_snprintf(about_info->hal_major, - sizeof(about_info->hal_major), "%d", VXGE_HAL_VERSION_MAJOR); - (void) vxge_os_snprintf(about_info->hal_minor, - sizeof(about_info->hal_minor), "%d", VXGE_HAL_VERSION_MINOR); - (void) vxge_os_snprintf(about_info->hal_fix, - sizeof(about_info->hal_fix), "%d", VXGE_HAL_VERSION_FIX); - (void) vxge_os_snprintf(about_info->hal_build, - sizeof(about_info->hal_build), "%d", VXGE_HAL_VERSION_BUILD); - - (void) vxge_os_snprintf(about_info->ll_major, - sizeof(about_info->ll_major), "%d", XGELL_VERSION_MAJOR); - (void) vxge_os_snprintf(about_info->ll_minor, - sizeof(about_info->ll_minor), "%d", XGELL_VERSION_MINOR); - (void) vxge_os_snprintf(about_info->ll_fix, - sizeof(about_info->ll_fix), "%d", XGELL_VERSION_FIX); - (void) vxge_os_snprintf(about_info->ll_build, - sizeof(about_info->ll_build), "%d", XGELL_VERSION_BUILD); - - *size = sizeof(vxge_hal_mgmt_about_info_t); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_pci_config - Retrieve PCI configuration. - * @devh: HAL device handle. - * @buffer: Buffer to return pci config. - * @size: Pointer to buffer containing the Size of the @buffer. - * HAL will return an error if the size is smaller than - * sizeof(vxge_hal_pci_config_t) and returns required size in this field - * - * Get PCI configuration. Permits to retrieve at run-time configuration - * values that were used to configure the device at load-time. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * - */ -vxge_hal_status_e -vxge_hal_mgmt_pci_config(vxge_hal_device_h devh, u8 *buffer, u32 *size) -{ - int i; - vxge_hal_pci_config_t *pci_config = (vxge_hal_pci_config_t *) buffer; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (buffer != NULL) && (size != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT", " - "buffer = 0x"VXGE_OS_STXFMT", " - "size = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev, (ptr_t) buffer, (ptr_t) size); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (*size < sizeof(vxge_hal_pci_config_t)) { - *size = sizeof(vxge_hal_pci_config_t); - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_SPACE); - return (VXGE_HAL_ERR_OUT_OF_SPACE); - } - - /* refresh PCI config space */ - for (i = 0; i < VXGE_HAL_PCI_CONFIG_SPACE_SIZE / 4; i++) { - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - i * 4, - 4, - (u32 *) ((void *)&hldev->pci_config_space) + i); - } - - vxge_os_memcpy(pci_config, &hldev->pci_config_space, - sizeof(vxge_hal_pci_config_t)); - - *size = sizeof(vxge_hal_pci_config_t); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_msi_capabilities_get - Returns the msi capabilities - * @devh: HAL device handle. - * @msi_cap: MSI Capabilities - * - * Return the msi capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_msi_capabilities_get(vxge_hal_device_h devh, - vxge_hal_mgmt_msi_cap_t *msi_cap) -{ - u16 msi_control_reg; - u32 addr32; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (msi_cap != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "hldev = 0x"VXGE_OS_STXFMT", msi_cap = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev, (ptr_t) msi_cap); - - if (hldev->pci_caps.msi_cap_offset == 0) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - vxge_os_memzero(msi_cap, sizeof(vxge_hal_mgmt_msi_cap_t)); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, msi_control), - 2, - &msi_control_reg); - - if (msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_ENABLE) - msi_cap->enable = 1; - - if (msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_PVMASK) - msi_cap->is_pvm_capable = 1; - - if (msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_64BIT) - msi_cap->is_64bit_addr_capable = 1; - - msi_cap->vectors_allocated = - (msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_QSIZE) >> 4; - - msi_cap->max_vectors_capable = - (msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_QMASK) >> 1; - - if (msi_cap->is_64bit_addr_capable) { - if (msi_cap->is_pvm_capable) { - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_addr_hi), - 4, &addr32); - - msi_cap->address = ((u64) addr32) << 32; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_addr_lo), - 4, &addr32); - - msi_cap->address |= (u64) addr32; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_data), - 2, &msi_cap->data); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_mask), - 4, &msi_cap->mask_bits); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_pending), - 4, &msi_cap->pending_bits); - } else { - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_no_pvm.msi_addr_hi), - 4, &addr32); - - msi_cap->address = ((u64) addr32) << 32; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_no_pvm.msi_addr_lo), - 4, &addr32); - - msi_cap->address |= (u64) addr32; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_no_pvm.msi_data), - 2, &msi_cap->data); - - } - } else { - if (msi_cap->is_pvm_capable) { - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_pvm.msi_addr), - 4, &addr32); - - msi_cap->address = (u64) addr32; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_pvm.msi_data), - 2, &msi_cap->data); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_pvm.msi_mask), - 4, &msi_cap->mask_bits); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_pvm.msi_pending), - 4, &msi_cap->pending_bits); - - } else { - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_no_pvm.msi_addr), - 4, &addr32); - - msi_cap->address = (u64) addr32; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_no_pvm.msi_data), - 2, &msi_cap->data); - } - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_msi_capabilities_set - Sets the msi capabilities - * @devh: HAL device handle. - * @msi_cap: MSI Capabilities - * - * Sets the msi capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_msi_capabilities_set(vxge_hal_device_h devh, - vxge_hal_mgmt_msi_cap_t *msi_cap) -{ - u16 msi_control_reg; - u32 addr32; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (msi_cap != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT"," - "msi_cap = 0x"VXGE_OS_STXFMT, (ptr_t) hldev, (ptr_t) msi_cap); - - if (hldev->pci_caps.msi_cap_offset == 0) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, msi_control), - 2, &msi_control_reg); - - if (msi_cap->enable) - msi_control_reg |= VXGE_HAL_PCI_MSI_FLAGS_ENABLE; - else - msi_control_reg &= ~VXGE_HAL_PCI_MSI_FLAGS_ENABLE; - - if (msi_cap->vectors_allocated > - (u32) ((msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_QMASK) >> 1)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - msi_control_reg &= ~VXGE_HAL_PCI_MSI_FLAGS_QSIZE; - - msi_control_reg |= (msi_cap->vectors_allocated & 0x7) << 4; - - if (msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_64BIT) { - if (msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_PVMASK) { - - addr32 = (u32) (msi_cap->address >> 32); - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_addr_hi), addr32); - - addr32 = (u32) msi_cap->address; - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_addr_lo), addr32); - - vxge_os_pci_write16(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_data), msi_cap->data); - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_mask), msi_cap->mask_bits); - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_pvm.msi_pending), msi_cap->pending_bits); - } else { - addr32 = (u32) (msi_cap->address >> 32); - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_no_pvm.msi_addr_hi), addr32); - - addr32 = (u32) msi_cap->address; - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_no_pvm.msi_addr_lo), addr32); - - vxge_os_pci_write16(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma64_no_pvm.msi_data), msi_cap->data); - - } - } else { - if (msi_control_reg & VXGE_HAL_PCI_MSI_FLAGS_PVMASK) { - - addr32 = (u32) msi_cap->address; - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_pvm.msi_addr), addr32); - - vxge_os_pci_write16(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_pvm.msi_data), msi_cap->data); - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_pvm.msi_mask), msi_cap->mask_bits); - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_pvm.msi_pending), msi_cap->pending_bits); - - } else { - addr32 = (u32) msi_cap->address; - - vxge_os_pci_write32(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_no_pvm.msi_addr), addr32); - - vxge_os_pci_write16(hldev->header.pdev, - hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, - au.ma32_no_pvm.msi_data), msi_cap->data); - } - } - - vxge_os_pci_write16(hldev->header.pdev, hldev->header.cfgh, - hldev->pci_caps.msi_cap_offset + - vxge_offsetof(vxge_hal_msi_capability_le_t, msi_control), - msi_control_reg); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_msix_capabilities_get - Returns the msix capabilities - * @devh: HAL device handle. - * @msix_cap: MSIX Capabilities - * - * Return the msix capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_msix_capabilities_get(vxge_hal_device_h devh, - vxge_hal_mgmt_msix_cap_t *msix_cap) -{ - u16 msix_control_reg; - u32 msix_offset; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (msix_cap != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "hldev = 0x"VXGE_OS_STXFMT", msix_cap = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev, (ptr_t) msix_cap); - - if (hldev->pci_caps.msix_cap_offset == 0) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - vxge_os_memzero(msix_cap, sizeof(vxge_hal_mgmt_msix_cap_t)); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msix_cap_offset + - vxge_offsetof(vxge_hal_msix_capability_le_t, msix_control), - 2, &msix_control_reg); - - if (msix_control_reg & VXGE_HAL_PCI_MSIX_FLAGS_ENABLE) - msix_cap->enable = 1; - - if (msix_control_reg & VXGE_HAL_PCI_MSIX_FLAGS_MASK) - msix_cap->mask_all_vect = 1; - - msix_cap->table_size = - (msix_control_reg & VXGE_HAL_PCI_MSIX_FLAGS_TSIZE) + 1; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msix_cap_offset + - vxge_offsetof(vxge_hal_msix_capability_le_t, table_offset), - 4, &msix_offset); - - msix_cap->table_offset = - (msix_offset & VXGE_HAL_PCI_MSIX_TABLE_OFFSET) >> 3; - - msix_cap->table_bir = msix_offset & VXGE_HAL_PCI_MSIX_TABLE_BIR; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.msix_cap_offset + - vxge_offsetof(vxge_hal_msix_capability_le_t, pba_offset), - 4, &msix_offset); - - msix_cap->pba_offset = - (msix_offset & VXGE_HAL_PCI_MSIX_PBA_OFFSET) >> 3; - - msix_cap->pba_bir = msix_offset & VXGE_HAL_PCI_MSIX_PBA_BIR; - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_pm_capabilities_get - Returns the pm capabilities - * @devh: HAL device handle. - * @pm_cap: pm Capabilities - * - * Return the pm capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_pm_capabilities_get(vxge_hal_device_h devh, - vxge_hal_mgmt_pm_cap_t *pm_cap) -{ - u16 pm_cap_reg; - u16 pm_control_reg; - u8 pm_ppb_ext; - u8 pm_data_reg; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (pm_cap != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT", " - "pm_cap = 0x"VXGE_OS_STXFMT, (ptr_t) hldev, (ptr_t) pm_cap); - - if (hldev->pci_caps.pm_cap_offset == 0) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - vxge_os_memzero(pm_cap, sizeof(vxge_hal_mgmt_pm_cap_t)); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.pm_cap_offset + - vxge_offsetof(vxge_hal_pm_capability_le_t, capabilities_reg), - 2, &pm_cap_reg); - - pm_cap->pm_cap_ver = - (u32) (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_VER_MASK); - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_PME_CLOCK) - pm_cap->pm_cap_pme_clock = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_AUX_POWER) - pm_cap->pm_cap_aux_power = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_DSI) - pm_cap->pm_cap_dsi = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_AUX_CURRENT) - pm_cap->pm_cap_aux_current = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_D1) - pm_cap->pm_cap_cap_d0 = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_D2) - pm_cap->pm_cap_cap_d1 = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_PME_D0) - pm_cap->pm_cap_pme_d0 = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_PME_D1) - pm_cap->pm_cap_pme_d1 = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_PME_D2) - pm_cap->pm_cap_pme_d2 = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_PME_D3_HOT) - pm_cap->pm_cap_pme_d3_hot = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CAP_PME_D3_COLD) - pm_cap->pm_cap_pme_d3_cold = 1; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.pm_cap_offset + - vxge_offsetof(vxge_hal_pm_capability_le_t, pm_ctrl), - 2, &pm_control_reg); - - pm_cap->pm_ctrl_state = - pm_control_reg & VXGE_HAL_PCI_PM_CTRL_STATE_MASK; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CTRL_NO_SOFT_RESET) - pm_cap->pm_ctrl_no_soft_reset = 1; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CTRL_PME_ENABLE) - pm_cap->pm_ctrl_pme_enable = 1; - - pm_cap->pm_ctrl_pme_data_sel = - (u32) (pm_control_reg & VXGE_HAL_PCI_PM_CTRL_DATA_SEL_MASK) >> 10; - - pm_cap->pm_ctrl_pme_data_scale = - (u32) (pm_control_reg & VXGE_HAL_PCI_PM_CTRL_DATA_SCALE_MASK) >> 13; - - if (pm_cap_reg & VXGE_HAL_PCI_PM_CTRL_PME_STATUS) - pm_cap->pm_ctrl_pme_status = 1; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.pm_cap_offset + - vxge_offsetof(vxge_hal_pm_capability_le_t, pm_ctrl), - 1, &pm_ppb_ext); - - if (pm_ppb_ext & VXGE_HAL_PCI_PM_PPB_B2_B3) - pm_cap->pm_ppb_ext_b2_b3 = 1; - - if (pm_ppb_ext & VXGE_HAL_PCI_PM_BPCC_ENABLE) - pm_cap->pm_ppb_ext_ecc_en = 1; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.pm_cap_offset + - vxge_offsetof(vxge_hal_pm_capability_le_t, pm_data_reg), - 1, &pm_data_reg); - - pm_cap->pm_data_reg = (u32) pm_data_reg; - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_sid_capabilities_get - Returns the sid capabilities - * @devh: HAL device handle. - * @sid_cap: Slot Id Capabilities - * - * Return the Slot Id capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_sid_capabilities_get(vxge_hal_device_h devh, - vxge_hal_mgmt_sid_cap_t *sid_cap) -{ - u8 chasis_num_reg; - u8 slot_num_reg; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (sid_cap != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT - ", sid_cap = 0x"VXGE_OS_STXFMT, (ptr_t) hldev, (ptr_t) sid_cap); - - if (hldev->pci_caps.sid_cap_offset == 0) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - vxge_os_memzero(sid_cap, sizeof(vxge_hal_mgmt_sid_cap_t)); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.sid_cap_offset + - vxge_offsetof(vxge_hal_sid_capability_le_t, sid_esr), - 1, &slot_num_reg); - - sid_cap->sid_number_of_slots = - (u32) (slot_num_reg & VXGE_HAL_PCI_SID_ESR_NSLOTS); - - if (slot_num_reg & VXGE_HAL_PCI_SID_ESR_FIC) - sid_cap->sid_number_of_slots = 1; - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_caps.sid_cap_offset + - vxge_offsetof(vxge_hal_sid_capability_le_t, sid_chasis_nr), - 1, &chasis_num_reg); - - sid_cap->sid_chasis_number = (u32) chasis_num_reg; - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_pci_err_capabilities_get - Returns the pci error capabilities - * @devh: HAL device handle. - * @err_cap: PCI-E Extended Error Capabilities - * - * Return the PCI-E Extended Error capabilities - */ -vxge_hal_status_e -vxge_hal_mgmt_pci_err_capabilities_get(vxge_hal_device_h devh, - vxge_hal_pci_err_cap_t *err_cap) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (err_cap != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device("hldev = 0x"VXGE_OS_STXFMT - ",sid_cap = 0x"VXGE_OS_STXFMT, (ptr_t) hldev, (ptr_t) err_cap); - - if (hldev->pci_e_ext_caps.err_cap_offset == 0) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - vxge_os_memzero(err_cap, sizeof(vxge_hal_pci_err_cap_t)); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_header), - 4, - &err_cap->pci_err_header); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_uncor_status), - 4, - &err_cap->pci_err_uncor_status); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_uncor_mask), - 4, - &err_cap->pci_err_uncor_mask); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_uncor_server), - 4, - &err_cap->pci_err_uncor_server); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_cor_status), - 4, - &err_cap->pci_err_cor_status); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_cap), - 4, - &err_cap->pci_err_cap); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, err_header_log), - 4, - &err_cap->err_header_log); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_root_command), - 4, - &err_cap->pci_err_root_command); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_root_status), - 4, - &err_cap->pci_err_root_status); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_root_cor_src), - 4, - &err_cap->pci_err_root_cor_src); - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - hldev->pci_e_ext_caps.err_cap_offset + - vxge_offsetof(vxge_hal_err_capability_t, pci_err_root_src), - 4, - &err_cap->pci_err_root_src); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_driver_config - Retrieve driver configuration. - * @drv_config: Device configuration, see vxge_hal_driver_config_t {}. - * @size: Pointer to buffer containing the Size of the @drv_config. - * HAL will return an error if the size is smaller than - * sizeof(vxge_hal_driver_config_t) and returns required size in this field - * - * Get driver configuration. Permits to retrieve at run-time configuration - * values that were used to configure the device at load-time. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED - HAL is not initialized. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version is not matching. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * - * See also: vxge_hal_driver_config_t {}, vxge_hal_mgmt_device_config(). - */ -vxge_hal_status_e -vxge_hal_mgmt_driver_config(vxge_hal_driver_config_t *drv_config, u32 *size) -{ - - vxge_assert((drv_config != NULL) && (size != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "drv_config = 0x"VXGE_OS_STXFMT", size = 0x"VXGE_OS_STXFMT, - (ptr_t) drv_config, (ptr_t) size); - - if (g_vxge_hal_driver == NULL) { - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED); - return (VXGE_HAL_ERR_DRIVER_NOT_INITIALIZED); - } - - if (*size < sizeof(vxge_hal_driver_config_t)) { - *size = sizeof(vxge_hal_driver_config_t); - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_SPACE); - return (VXGE_HAL_ERR_OUT_OF_SPACE); - } - - vxge_os_memcpy(drv_config, &g_vxge_hal_driver->config, - sizeof(vxge_hal_driver_config_t)); - - *size = sizeof(vxge_hal_driver_config_t); - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - - -/* - * vxge_hal_mgmt_device_config - Retrieve device configuration. - * @devh: HAL device handle. - * @dev_config: Device configuration, see vxge_hal_device_config_t {}. - * @size: Pointer to buffer containing the Size of the @dev_config. - * HAL will return an error if the size is smaller than - * sizeof(vxge_hal_device_config_t) and returns required size in this field - * - * Get device configuration. Permits to retrieve at run-time configuration - * values that were used to initialize and configure the device. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * - * See also: vxge_hal_device_config_t {}, vxge_hal_mgmt_driver_config(). - */ -vxge_hal_status_e -vxge_hal_mgmt_device_config(vxge_hal_device_h devh, - vxge_hal_device_config_t *dev_config, u32 *size) -{ - vxge_hal_device_t *hldev = (vxge_hal_device_t *) devh; - - vxge_assert((devh != NULL) && (dev_config != NULL) && (size != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "devh = 0x"VXGE_OS_STXFMT", dev_config = 0x"VXGE_OS_STXFMT", " - "size = 0x"VXGE_OS_STXFMT, (ptr_t) devh, (ptr_t) dev_config, - (ptr_t) size); - - if (hldev->magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (*size < sizeof(vxge_hal_device_config_t)) { - *size = sizeof(vxge_hal_device_config_t); - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_SPACE); - return (VXGE_HAL_ERR_OUT_OF_SPACE); - } - - vxge_os_memcpy(dev_config, &hldev->config, - sizeof(vxge_hal_device_config_t)); - - *size = sizeof(vxge_hal_device_config_t); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_pcireg_read - Read PCI configuration at a specified - * offset. - * @devh: HAL device handle. - * @offset: Offset in the 256 byte PCI configuration space. - * @value_bits: 8, 16, or 32 (bits) to read. - * @value: Value returned by HAL. - * - * Read PCI configuration, given device and offset in the PCI space. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not - * valid. - * VXGE_HAL_ERR_INVALID_VALUE_BIT_SIZE - Invalid bits size. Valid - * values(8/16/32). - * - */ -vxge_hal_status_e -vxge_hal_mgmt_pcireg_read(vxge_hal_device_h devh, unsigned int offset, - int value_bits, u32 *value) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (value != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "devh = 0x"VXGE_OS_STXFMT", offset = %d, value_bits = %d, " - "value = 0x"VXGE_OS_STXFMT, (ptr_t) devh, offset, - value_bits, (ptr_t) value); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (offset > sizeof(vxge_hal_pci_config_t) - value_bits / 8) { - vxge_hal_trace_log_device("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_OFFSET); - } - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - offset, - value_bits / 8, - value); - - vxge_hal_trace_log_device("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_reg_read - Read X3100 register. - * @devh: HAL device handle. - * @type: Register types as defined in enum vxge_hal_mgmt_reg_type_e {} - * @Index: For pcicfgmgmt, srpcim, vpmgmt, vpath this gives the Index - * ignored for others - * @offset: Register offset in the register space qualified by the type and - * index. - * @value: Register value. Returned by HAL. - * Read X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_TYPE - Type is not valid. - * VXGE_HAL_ERR_INVALID_INDEX - Index is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_reg_read(vxge_hal_device_h devh, - vxge_hal_mgmt_reg_type_e type, - u32 vp_id, - u32 offset, - u64 *value) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (value != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "devh = 0x"VXGE_OS_STXFMT", type = %d, " - "vp_id = %d, offset = %d, value = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, type, vp_id, offset, (ptr_t) value); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - switch (type) { - case vxge_hal_mgmt_reg_type_legacy: - if (offset > sizeof(vxge_hal_legacy_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->legacy_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_toc: - if (offset > sizeof(vxge_hal_toc_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->toc_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_common: - if (offset > sizeof(vxge_hal_common_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->common_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_memrepair: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - if (offset > sizeof(vxge_hal_memrepair_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->memrepair_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_pcicfgmgmt: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - if (vp_id > VXGE_HAL_TITAN_PCICFGMGMT_REG_SPACES - 1) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (offset > sizeof(vxge_hal_pcicfgmgmt_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->pcicfgmgmt_reg[vp_id]) + offset)); - break; - case vxge_hal_mgmt_reg_type_mrpcim: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - if (offset > sizeof(vxge_hal_mrpcim_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->mrpcim_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_srpcim: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - if (vp_id > VXGE_HAL_TITAN_SRPCIM_REG_SPACES - 1) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (offset > sizeof(vxge_hal_srpcim_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->srpcim_reg[vp_id]) + offset)); - break; - case vxge_hal_mgmt_reg_type_vpmgmt: - if ((vp_id > VXGE_HAL_TITAN_VPMGMT_REG_SPACES - 1) || - (!(hldev->vpath_assignments & mBIT(vp_id)))) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (offset > sizeof(vxge_hal_vpmgmt_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->vpmgmt_reg[vp_id]) + offset)); - break; - case vxge_hal_mgmt_reg_type_vpath: - if ((vp_id > VXGE_HAL_TITAN_VPATH_REG_SPACES - 1) || - (!(hldev->vpath_assignments & mBIT(vp_id)))) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (vp_id > VXGE_HAL_TITAN_VPATH_REG_SPACES - 1) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (offset > sizeof(vxge_hal_vpath_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->vpath_reg[vp_id]) + offset)); - break; - default: - status = VXGE_HAL_ERR_INVALID_TYPE; - break; - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mgmt_reg_Write - Write X3100 register. - * @devh: HAL device handle. - * @type: Register types as defined in enum vxge_hal_mgmt_reg_type_e {} - * @index: For pcicfgmgmt, srpcim, vpmgmt, vpath this gives the Index - * ignored for others - * @offset: Register offset in the register space qualified by the type and - * index. - * @value: Register value to be written. - * Write X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_TYPE - Type is not valid. - * VXGE_HAL_ERR_INVALID_INDEX - Index is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_reg_write(vxge_hal_device_h devh, - vxge_hal_mgmt_reg_type_e type, - u32 vp_id, - u32 offset, - u64 value) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "devh = 0x"VXGE_OS_STXFMT", type = %d, " - "index = %d, offset = %d, value = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, type, vp_id, offset, (ptr_t) value); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - switch (type) { - case vxge_hal_mgmt_reg_type_legacy: - if (offset > sizeof(vxge_hal_legacy_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->legacy_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_toc: - if (offset > sizeof(vxge_hal_toc_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->toc_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_common: - if (offset > sizeof(vxge_hal_common_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->common_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_memrepair: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - if (offset > sizeof(vxge_hal_memrepair_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->memrepair_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_pcicfgmgmt: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - if (vp_id > VXGE_HAL_TITAN_PCICFGMGMT_REG_SPACES - 1) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (offset > sizeof(vxge_hal_pcicfgmgmt_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->pcicfgmgmt_reg[vp_id]) + offset)); - break; - case vxge_hal_mgmt_reg_type_mrpcim: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - if (offset > sizeof(vxge_hal_mrpcim_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->mrpcim_reg) + offset)); - break; - case vxge_hal_mgmt_reg_type_srpcim: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - if (vp_id > VXGE_HAL_TITAN_SRPCIM_REG_SPACES - 1) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (offset > sizeof(vxge_hal_srpcim_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->srpcim_reg[vp_id]) + offset)); - break; - case vxge_hal_mgmt_reg_type_vpmgmt: - if ((vp_id > VXGE_HAL_TITAN_VPMGMT_REG_SPACES - 1) || - (!(hldev->vpath_assignments & mBIT(vp_id)))) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (offset > sizeof(vxge_hal_vpmgmt_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->vpmgmt_reg[vp_id]) + offset)); - break; - case vxge_hal_mgmt_reg_type_vpath: - if ((vp_id > VXGE_HAL_TITAN_VPATH_REG_SPACES - 1) || - (!(hldev->vpath_assignments & mBIT(vp_id)))) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - if (offset > sizeof(vxge_hal_vpath_reg_t) - 8) { - status = VXGE_HAL_ERR_INVALID_OFFSET; - break; - } - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->vpath_reg[vp_id]) + offset)); - break; - default: - status = VXGE_HAL_ERR_INVALID_TYPE; - break; - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mgmt_bar0_read - Read X3100 register located at the offset - * from bar0. - * @devh: HAL device handle. - * @offset: Register offset from bar0 - * @value: Register value. Returned by HAL. - * Read X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_bar0_read(vxge_hal_device_h devh, - u32 offset, - u64 *value) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "devh = 0x"VXGE_OS_STXFMT", offset = %d, value = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, offset, (ptr_t) value); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (((ptr_t) hldev->header.bar0 + offset) > - ((ptr_t) hldev->vpath_reg[VXGE_HAL_MAX_VIRTUAL_PATHS - 1] + - sizeof(vxge_hal_vpath_reg_t) - 8)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_OFFSET); - return (VXGE_HAL_ERR_INVALID_OFFSET); - } - - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->header.bar0) + offset)); - - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mgmt_bar1_read - Read X3100 register located at the offset - * from bar1. - * @devh: HAL device handle. - * @offset: Register offset from bar1 - * @value: Register value. Returned by HAL. - * Read X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_bar1_read(vxge_hal_device_h devh, - u32 offset, - u64 *value) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "devh = 0x"VXGE_OS_STXFMT", offset = %d, value = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, offset, (ptr_t) value); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - *value = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->header.bar1) + offset)); - - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mgmt_bar0_Write - Write X3100 register located at the offset - * from bar0. - * @devh: HAL device handle. - * @offset: Register offset from bar0 - * @value: Register value to be written. - * Write X3100 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the space is not valid. - * - */ -vxge_hal_status_e -vxge_hal_mgmt_bar0_write(vxge_hal_device_h devh, - u32 offset, - u64 value) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "devh = 0x"VXGE_OS_STXFMT", offset = %d, value = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, offset, (ptr_t) value); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - if (((ptr_t) hldev->header.bar0 + offset) > - ((ptr_t) hldev->vpath_reg[VXGE_HAL_MAX_VIRTUAL_PATHS - 1] + - sizeof(vxge_hal_vpath_reg_t) - 8)) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_OFFSET); - return (VXGE_HAL_ERR_INVALID_OFFSET); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - value, - (void *)(((ptr_t) hldev->header.bar0) + offset)); - - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mgmt_register_config - Retrieve register configuration. - * @devh: HAL device handle. - * @type: Register types as defined in enum vxge_hal_mgmt_reg_type_e {} - * @Index: For pcicfgmgmt, srpcim, vpmgmt, vpath this gives the Index - * ignored for others - * @config: Device configuration, see vxge_hal_device_config_t {}. - * @size: Pointer to buffer containing the Size of the @reg_config. - * HAL will return an error if the size is smaller than - * requested register space and returns required size in this field - * - * Get register configuration. Permits to retrieve register values. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_TYPE - Type is not valid. - * VXGE_HAL_ERR_INVALID_INDEX - Index is not valid. - * VXGE_HAL_ERR_OUT_OF_SPACE - If the buffer is not sufficient - * - */ -vxge_hal_status_e -vxge_hal_mgmt_register_config(vxge_hal_device_h devh, - vxge_hal_mgmt_reg_type_e type, u32 vp_id, u8 *config, u32 *size) -{ - u32 offset; - u64 *reg_config = (u64 *) ((void *)config); - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (reg_config != NULL) && (size != NULL)); - - vxge_hal_trace_log_device("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_device( - "devh = 0x"VXGE_OS_STXFMT", type = %d, index = %d, " - "reg_config = 0x"VXGE_OS_STXFMT", size = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, type, vp_id, (ptr_t) reg_config, (ptr_t) size); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - switch (type) { - case vxge_hal_mgmt_reg_type_legacy: - if (*size < sizeof(vxge_hal_legacy_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_legacy_reg_t); - break; - } - - for (offset = 0; offset < sizeof(vxge_hal_legacy_reg_t); - offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->legacy_reg) + offset)); - } - *size = sizeof(vxge_hal_legacy_reg_t); - break; - - case vxge_hal_mgmt_reg_type_toc: - if (*size < sizeof(vxge_hal_toc_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_toc_reg_t); - break; - } - - for (offset = 0; offset < sizeof(vxge_hal_toc_reg_t); - offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->toc_reg) + offset)); - } - *size = sizeof(vxge_hal_toc_reg_t); - break; - - case vxge_hal_mgmt_reg_type_common: - if (*size < sizeof(vxge_hal_common_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_common_reg_t); - break; - } - - for (offset = 0; offset < sizeof(vxge_hal_common_reg_t); - offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->common_reg) + offset)); - } - *size = sizeof(vxge_hal_common_reg_t); - break; - - case vxge_hal_mgmt_reg_type_memrepair: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - - if (*size < sizeof(vxge_hal_memrepair_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_memrepair_reg_t); - break; - } - - for (offset = 0; - offset < sizeof(vxge_hal_memrepair_reg_t); offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->memrepair_reg) + offset)); - } - *size = sizeof(vxge_hal_memrepair_reg_t); - break; - - case vxge_hal_mgmt_reg_type_pcicfgmgmt: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - - if (vp_id > VXGE_HAL_TITAN_PCICFGMGMT_REG_SPACES - 1) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - - if (*size < sizeof(vxge_hal_pcicfgmgmt_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_pcicfgmgmt_reg_t); - break; - } - - for (offset = 0; offset < sizeof(vxge_hal_pcicfgmgmt_reg_t); - offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->pcicfgmgmt_reg[vp_id]) + offset)); - } - *size = sizeof(vxge_hal_pcicfgmgmt_reg_t); - break; - - case vxge_hal_mgmt_reg_type_mrpcim: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - - if (*size < sizeof(vxge_hal_mrpcim_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_mrpcim_reg_t); - break; - } - - for (offset = 0; offset < sizeof(vxge_hal_mrpcim_reg_t); - offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->mrpcim_reg) + offset)); - } - *size = sizeof(vxge_hal_mrpcim_reg_t); - break; - - case vxge_hal_mgmt_reg_type_srpcim: - if (!(hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - status = VXGE_HAL_ERR_PRIVILAGED_OPEARATION; - break; - } - - if (vp_id > VXGE_HAL_TITAN_SRPCIM_REG_SPACES - 1) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - - if (*size < sizeof(vxge_hal_srpcim_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_srpcim_reg_t); - break; - } - - for (offset = 0; offset < sizeof(vxge_hal_srpcim_reg_t); - offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->srpcim_reg[vp_id]) + offset)); - } - *size = sizeof(vxge_hal_srpcim_reg_t); - break; - - case vxge_hal_mgmt_reg_type_vpmgmt: - if ((vp_id > VXGE_HAL_TITAN_VPMGMT_REG_SPACES - 1) || - (!(hldev->vpath_assignments & mBIT(vp_id)))) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - - if (*size < sizeof(vxge_hal_vpmgmt_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_vpmgmt_reg_t); - break; - } - - for (offset = 0; offset < sizeof(vxge_hal_vpmgmt_reg_t); - offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->vpmgmt_reg[vp_id]) + offset)); - } - *size = sizeof(vxge_hal_vpmgmt_reg_t); - break; - - case vxge_hal_mgmt_reg_type_vpath: - if ((vp_id > VXGE_HAL_TITAN_VPATH_REG_SPACES - 1) || - (!(hldev->vpath_assignments & mBIT(vp_id)))) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - - if (vp_id > VXGE_HAL_TITAN_VPATH_REG_SPACES - 1) { - status = VXGE_HAL_ERR_INVALID_INDEX; - break; - } - - if (*size < sizeof(vxge_hal_vpath_reg_t)) { - status = VXGE_HAL_ERR_OUT_OF_SPACE; - *size = sizeof(vxge_hal_vpath_reg_t); - break; - } - - for (offset = 0; offset < sizeof(vxge_hal_vpath_reg_t); - offset += 8) { - *reg_config++ = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - (void *)(((ptr_t) hldev->vpath_reg[vp_id]) + offset)); - } - *size = sizeof(vxge_hal_vpath_reg_t); - break; - - default: - status = VXGE_HAL_ERR_INVALID_TYPE; - break; - } - - vxge_hal_trace_log_device("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mgmt_read_xfp_current_temp - Read current temparature of given port - * @hldev: HAL device handle. - * @port: Port number - * - * This routine only gets the temperature for XFP modules. Also, updating of the - * NVRAM can sometimes fail and so the reading we might get may not be uptodate. - */ -u32 -vxge_hal_mgmt_read_xfp_current_temp(vxge_hal_device_h devh, u32 port) -{ - u16 val1, val2, count = 0; - u32 actual; - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT", port = %d", - (ptr_t) devh, port); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - val1 = VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_256_BYTES; - - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_WRITE, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL, - &val1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* Now wait for the transfer to complete */ - do { - vxge_os_mdelay(50); /* wait 50 milliseonds */ - - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL, - &val1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (count++ > 10) { - /* waited 500 ms which should be plenty of time */ - break; - } - - } while ((val1 & - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_STAT_MASK) - == VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_PROGRESS); - - if ((val1 & - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_STAT_MASK) == - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_FAILED) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (VXGE_HAL_FAIL); - } - - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_DATA_XFP_TEMP_1, - &val1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_DATA_XFP_TEMP_2, - &val2); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - actual = ((val1 << 8) | val2); - - if (actual >= 32768) - actual = actual - 65536; - - actual = actual / 256; - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (actual); - -} - -/* - * vxge_hal_mgmt_pma_loopback - Enable or disable PMA loopback - * @devh: HAL device handle. - * @port: Port number - * @enable:Boolean set to 1 to enable and 0 to disable. - * - * Enable or disable PMA loopback. - * Return value: - * 0 on success. - */ -vxge_hal_status_e -vxge_hal_mgmt_pma_loopback(vxge_hal_device_h devh, u32 port, u32 enable) -{ - u16 val; - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", port = %d, enable = %d", - (ptr_t) devh, port, enable); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_PMA_CONTROL_1, - &val); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (enable) - val |= - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_PMA_CONTROL_1_LOOPBACK; - else - val &= - ~VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_PMA_CONTROL_1_LOOPBACK; - - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_WRITE, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_PMA_CONTROL_1, - &val); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mgmt_xgmii_loopback - Enable or disable xgmii loopback - * @devh: HAL device handle. - * @port: Port number - * @enable:Boolean set to 1 to enable and 0 to disable. - * - * Enable or disable xgmii loopback. - * Return value: - * 0 on success. - */ -vxge_hal_status_e -vxge_hal_mgmt_xgmii_loopback(vxge_hal_device_h devh, u32 port, u32 enable) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", port = %d, enable = %d", - (ptr_t) devh, port, enable); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xmac_cfg_port[port]); - if (enable) - val64 |= VXGE_HAL_XMAC_CFG_PORT_XGMII_LOOPBACK; - else - val64 &= ~VXGE_HAL_XMAC_CFG_PORT_XGMII_LOOPBACK; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->xmac_cfg_port[port]); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - Index: sys/dev/vxge/vxgehal/vxgehal-mgmtaux.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-mgmtaux.c +++ sys/dev/vxge/vxgehal/vxgehal-mgmtaux.c @@ -1,3186 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -#define VXGE_HAL_AUX_SEPA ' ' - -#define __hal_aux_snprintf(retbuf, bufsize, fmt, key, value, retsize) \ - if (bufsize <= 0) \ - return (VXGE_HAL_ERR_OUT_OF_SPACE); \ - retsize = vxge_os_snprintf(retbuf, bufsize, fmt, key, \ - VXGE_HAL_AUX_SEPA, value); \ - if (retsize < 0 || retsize >= bufsize) \ - return (VXGE_HAL_ERR_OUT_OF_SPACE); - -#define __HAL_AUX_ENTRY_DECLARE(size, buf) \ - int entrysize = 0, leftsize = size; \ - char *ptr; ptr = buf; - -#define __HAL_AUX_ENTRY(key, value, fmt) \ - __hal_aux_snprintf(ptr, leftsize, "%s%c"fmt"\n", key, value, entrysize)\ - ptr += entrysize; leftsize -= entrysize; - -#define __HAL_AUX_CONFIG_ENTRY(key, value, fmt) \ - if (value == VXGE_HAL_USE_FLASH_DEFAULT) { \ - __HAL_AUX_ENTRY(key, "FLASH DEFAULT", "%s"); \ - } else { \ - __HAL_AUX_ENTRY(key, value, fmt); \ - } - -#define __HAL_AUX_ENTRY_END(bufsize, retsize) \ - *retsize = bufsize - leftsize; - -#define __hal_aux_pci_link_info(name, index, var) { \ - __HAL_AUX_ENTRY(name, \ - (u64)pcim.link_info[index].var, "%llu") \ - } - -#define __hal_aux_pci_aggr_info(name, index, var) { \ - __HAL_AUX_ENTRY(name, \ - (u64)pcim.aggr_info[index].var, "%llu") \ - } - -/* - * vxge_hal_aux_about_read - Retrieve and format about info. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Retrieve about info (using vxge_hal_mgmt_about()) and sprintf it - * into the provided @retbuf. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * VXGE_HAL_FAIL - Failed to retrieve the information. - * - * See also: vxge_hal_mgmt_about(), vxge_hal_aux_device_dump(). - */ -vxge_hal_status_e -vxge_hal_aux_about_read(vxge_hal_device_h devh, int bufsize, - char *retbuf, int *retsize) -{ - u32 size = sizeof(vxge_hal_mgmt_about_info_t); - vxge_hal_status_e status; - vxge_hal_mgmt_about_info_t about_info; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - status = vxge_hal_mgmt_about(devh, &about_info, &size); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("vendor", about_info.vendor, "0x%x"); - __HAL_AUX_ENTRY("device", about_info.device, "0x%x"); - __HAL_AUX_ENTRY("subsys_vendor", about_info.subsys_vendor, "0x%x"); - __HAL_AUX_ENTRY("subsys_device", about_info.subsys_device, "0x%x"); - __HAL_AUX_ENTRY("board_rev", about_info.board_rev, "0x%x"); - __HAL_AUX_ENTRY("vendor_name", about_info.vendor_name, "%s"); - __HAL_AUX_ENTRY("chip_name", about_info.chip_name, "%s"); - __HAL_AUX_ENTRY("media", about_info.media, "%s"); - __HAL_AUX_ENTRY("hal_major", about_info.hal_major, "%s"); - __HAL_AUX_ENTRY("hal_minor", about_info.hal_minor, "%s"); - __HAL_AUX_ENTRY("hal_fix", about_info.hal_fix, "%s"); - __HAL_AUX_ENTRY("hal_build", about_info.hal_build, "%s"); - __HAL_AUX_ENTRY("ll_major", about_info.ll_major, "%s"); - __HAL_AUX_ENTRY("ll_minor", about_info.ll_minor, "%s"); - __HAL_AUX_ENTRY("ll_fix", about_info.ll_fix, "%s"); - __HAL_AUX_ENTRY("ll_build", about_info.ll_build, "%s"); - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_driver_config_read - Read Driver configuration. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read driver configuration, - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * - * See also: vxge_hal_aux_device_config_read(). - */ -vxge_hal_status_e -vxge_hal_aux_driver_config_read(int bufsize, char *retbuf, int *retsize) -{ - u32 size = sizeof(vxge_hal_driver_config_t); - vxge_hal_status_e status; - vxge_hal_driver_config_t drv_config; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - status = vxge_hal_mgmt_driver_config(&drv_config, &size); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("Debug Level", - g_vxge_hal_driver->debug_level, "%u"); - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_pci_config_read - Retrieve and format PCI Configuration - * info. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Retrieve about info (using vxge_hal_mgmt_pci_config()) and sprintf it - * into the provided @retbuf. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * - * See also: vxge_hal_mgmt_pci_config(), vxge_hal_aux_device_dump(). - */ -vxge_hal_status_e -vxge_hal_aux_pci_config_read( - vxge_hal_device_h devh, - int bufsize, - char *retbuf, - int *retsize) -{ - u8 cap_id; - u16 ext_cap_id; - u16 next_ptr; - u32 size = sizeof(vxge_hal_pci_config_t); - vxge_hal_status_e status; - vxge_hal_pci_config_t *pci_config = - &((__hal_device_t *) devh)->pci_config_space; - vxge_hal_mgmt_pm_cap_t pm_cap; - vxge_hal_mgmt_sid_cap_t sid_cap; - vxge_hal_mgmt_msi_cap_t msi_cap; - vxge_hal_mgmt_msix_cap_t msix_cap; - vxge_hal_pci_err_cap_t err_cap; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - status = vxge_hal_mgmt_pci_config(devh, (u8 *) pci_config, &size); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("vendor_id", pci_config->vendor_id, "0x%04X"); - __HAL_AUX_ENTRY("device_id", pci_config->device_id, "0x%04X"); - __HAL_AUX_ENTRY("command", pci_config->command, "0x%04X"); - __HAL_AUX_ENTRY("status", pci_config->status, "0x%04X"); - __HAL_AUX_ENTRY("revision", pci_config->revision, "0x%02X"); - __HAL_AUX_ENTRY("pciClass1", pci_config->pciClass[0], "0x%02X"); - __HAL_AUX_ENTRY("pciClass2", pci_config->pciClass[1], "0x%02X"); - __HAL_AUX_ENTRY("pciClass3", pci_config->pciClass[2], "0x%02X"); - __HAL_AUX_ENTRY("cache_line_size", - pci_config->cache_line_size, "0x%02X"); - __HAL_AUX_ENTRY("header_type", pci_config->header_type, "0x%02X"); - __HAL_AUX_ENTRY("bist", pci_config->bist, "0x%02X"); - __HAL_AUX_ENTRY("base_addr0_lo", pci_config->base_addr0_lo, "0x%08X"); - __HAL_AUX_ENTRY("base_addr0_hi", pci_config->base_addr0_hi, "0x%08X"); - __HAL_AUX_ENTRY("base_addr1_lo", pci_config->base_addr1_lo, "0x%08X"); - __HAL_AUX_ENTRY("base_addr1_hi", pci_config->base_addr1_hi, "0x%08X"); - __HAL_AUX_ENTRY("not_Implemented1", - pci_config->not_Implemented1, "0x%08X"); - __HAL_AUX_ENTRY("not_Implemented2", pci_config->not_Implemented2, - "0x%08X"); - __HAL_AUX_ENTRY("cardbus_cis_pointer", pci_config->cardbus_cis_pointer, - "0x%08X"); - __HAL_AUX_ENTRY("subsystem_vendor_id", pci_config->subsystem_vendor_id, - "0x%04X"); - __HAL_AUX_ENTRY("subsystem_id", pci_config->subsystem_id, "0x%04X"); - __HAL_AUX_ENTRY("rom_base", pci_config->rom_base, "0x%08X"); - __HAL_AUX_ENTRY("capabilities_pointer", - pci_config->capabilities_pointer, "0x%02X"); - __HAL_AUX_ENTRY("interrupt_line", pci_config->interrupt_line, "0x%02X"); - __HAL_AUX_ENTRY("interrupt_pin", pci_config->interrupt_pin, "0x%02X"); - __HAL_AUX_ENTRY("min_grant", pci_config->min_grant, "0x%02X"); - __HAL_AUX_ENTRY("max_latency", pci_config->max_latency, "0x%02X"); - - next_ptr = pci_config->capabilities_pointer; - - while (next_ptr != 0) { - - cap_id = VXGE_HAL_PCI_CAP_ID((((u8 *) pci_config) + next_ptr)); - - switch (cap_id) { - - case VXGE_HAL_PCI_CAP_ID_PM: - status = vxge_hal_mgmt_pm_capabilities_get(devh, - &pm_cap); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("PM Capability", - cap_id, "0x%02X"); - __HAL_AUX_ENTRY("pm_cap_ver", - pm_cap.pm_cap_ver, "%u"); - __HAL_AUX_ENTRY("pm_cap_pme_clock", - pm_cap.pm_cap_pme_clock, "%u"); - __HAL_AUX_ENTRY("pm_cap_aux_power", - pm_cap.pm_cap_aux_power, "%u"); - __HAL_AUX_ENTRY("pm_cap_dsi", - pm_cap.pm_cap_dsi, "%u"); - __HAL_AUX_ENTRY("pm_cap_aux_current", - pm_cap.pm_cap_aux_current, "%u"); - __HAL_AUX_ENTRY("pm_cap_cap_d0", - pm_cap.pm_cap_cap_d0, "%u"); - __HAL_AUX_ENTRY("pm_cap_cap_d1", - pm_cap.pm_cap_cap_d1, "%u"); - __HAL_AUX_ENTRY("pm_cap_pme_d0", - pm_cap.pm_cap_pme_d0, "%u"); - __HAL_AUX_ENTRY("pm_cap_pme_d1", - pm_cap.pm_cap_pme_d1, "%u"); - __HAL_AUX_ENTRY("pm_cap_pme_d2", - pm_cap.pm_cap_pme_d2, "%u"); - __HAL_AUX_ENTRY("pm_cap_pme_d3_hot", - pm_cap.pm_cap_pme_d3_hot, "%u"); - __HAL_AUX_ENTRY("pm_cap_pme_d3_cold", - pm_cap.pm_cap_pme_d3_cold, "%u"); - __HAL_AUX_ENTRY("pm_ctrl_state", - pm_cap.pm_ctrl_state, "%u"); - __HAL_AUX_ENTRY("pm_ctrl_no_soft_reset", - pm_cap.pm_ctrl_no_soft_reset, "%u"); - __HAL_AUX_ENTRY("pm_ctrl_pme_enable", - pm_cap.pm_ctrl_pme_enable, "%u"); - __HAL_AUX_ENTRY("pm_ctrl_pme_data_sel", - pm_cap.pm_ctrl_pme_data_sel, "%u"); - __HAL_AUX_ENTRY("pm_ctrl_pme_data_scale", - pm_cap.pm_ctrl_pme_data_scale, "%u"); - __HAL_AUX_ENTRY("pm_ctrl_pme_status", - pm_cap.pm_ctrl_pme_status, "%u"); - __HAL_AUX_ENTRY("pm_ppb_ext_b2_b3", - pm_cap.pm_ppb_ext_b2_b3, "%u"); - __HAL_AUX_ENTRY("pm_ppb_ext_ecc_en", - pm_cap.pm_ppb_ext_ecc_en, "%u"); - __HAL_AUX_ENTRY("pm_data_reg", - pm_cap.pm_data_reg, "%u"); - break; - case VXGE_HAL_PCI_CAP_ID_VPD: - break; - case VXGE_HAL_PCI_CAP_ID_SLOTID: - status = vxge_hal_mgmt_sid_capabilities_get(devh, - &sid_cap); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("SID Capability", cap_id, "0x%02X"); - __HAL_AUX_ENTRY("sid_number_of_slots", - sid_cap.sid_number_of_slots, "%u"); - __HAL_AUX_ENTRY("sid_first_in_chasis", - sid_cap.sid_first_in_chasis, "%u"); - __HAL_AUX_ENTRY("sid_chasis_number", - sid_cap.sid_chasis_number, "0x%u"); - break; - case VXGE_HAL_PCI_CAP_ID_MSI: - status = vxge_hal_mgmt_msi_capabilities_get(devh, - &msi_cap); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("MSI Capability", cap_id, "0x%02X"); - __HAL_AUX_ENTRY("MSI Enable", msi_cap.enable, "%u"); - __HAL_AUX_ENTRY("MSI 64bit Address Capable", - msi_cap.is_64bit_addr_capable, "%u"); - __HAL_AUX_ENTRY("MSI PVM Capable", - msi_cap.is_pvm_capable, "0x%02X"); - __HAL_AUX_ENTRY("MSI Vectors Allocated", - msi_cap.vectors_allocated, "0x%02X"); - __HAL_AUX_ENTRY("MSI Max Vectors", - msi_cap.max_vectors_capable, "0x%02X"); - if (msi_cap.is_64bit_addr_capable) { - __HAL_AUX_ENTRY("MSI address", - msi_cap.address, "0x%016llX"); - } else { - __HAL_AUX_ENTRY("MSI address", - msi_cap.address, "0x%08llX"); - } - __HAL_AUX_ENTRY("MSI Data", msi_cap.data, "0x%04X"); - if (msi_cap.is_pvm_capable) { - __HAL_AUX_ENTRY("MSI Mask bits", - msi_cap.mask_bits, "0x%08X"); - __HAL_AUX_ENTRY("MSI Pending bits", - msi_cap.pending_bits, "0x%08X"); - } - break; - case VXGE_HAL_PCI_CAP_ID_VS: - break; - case VXGE_HAL_PCI_CAP_ID_SHPC: - break; - case VXGE_HAL_PCI_CAP_ID_PCIE: - break; - case VXGE_HAL_PCI_CAP_ID_MSIX: - status = vxge_hal_mgmt_msix_capabilities_get(devh, - &msix_cap); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("MSIX Capability", cap_id, "0x%02X"); - __HAL_AUX_ENTRY("MSIX Enable", msix_cap.enable, "%u"); - __HAL_AUX_ENTRY("MSIX Mask All vectors", - msix_cap.mask_all_vect, "%u"); - __HAL_AUX_ENTRY("MSIX Table Size", - msix_cap.table_size, "%u"); - __HAL_AUX_ENTRY("MSIX Table Offset", - msix_cap.table_offset, "%u"); - __HAL_AUX_ENTRY("MSIX Table BIR", - msix_cap.table_bir, "%u"); - __HAL_AUX_ENTRY("MSIX PBA Offset", - msix_cap.pba_offset, "%u"); - __HAL_AUX_ENTRY("MSIX PBA BIR", msix_cap.pba_bir, "%u"); - break; - case VXGE_HAL_PCI_CAP_ID_AGP: - case VXGE_HAL_PCI_CAP_ID_CHSWP: - case VXGE_HAL_PCI_CAP_ID_PCIX: - case VXGE_HAL_PCI_CAP_ID_HT: - case VXGE_HAL_PCI_CAP_ID_DBGPORT: - case VXGE_HAL_PCI_CAP_ID_CPCICSR: - case VXGE_HAL_PCI_CAP_ID_PCIBSVID: - case VXGE_HAL_PCI_CAP_ID_AGP8X: - case VXGE_HAL_PCI_CAP_ID_SECDEV: - __HAL_AUX_ENTRY("Unexpected Capability", - cap_id, "0x%02X"); - break; - default: - __HAL_AUX_ENTRY("Unknown Capability", - cap_id, "0x%02X"); - break; - } - - next_ptr = - VXGE_HAL_PCI_CAP_NEXT((((u8 *) pci_config) + next_ptr)); - - } - - /* CONSTCOND */ - if (VXGE_HAL_PCI_CONFIG_SPACE_SIZE > 0x100) { - - next_ptr = 0x100; - - while (next_ptr != 0) { - - ext_cap_id = (u16) VXGE_HAL_PCI_EXT_CAP_ID( - *(u32 *)((void *)(((u8 *) pci_config) + next_ptr))); - - switch (ext_cap_id) { - - case VXGE_HAL_PCI_EXT_CAP_ID_ERR: - status = - vxge_hal_mgmt_pci_err_capabilities_get(devh, - &err_cap); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("pci_err_header", - err_cap.pci_err_header, "0x%08X"); - __HAL_AUX_ENTRY("pci_err_uncor_status", - err_cap.pci_err_uncor_status, "0x%08X"); - __HAL_AUX_ENTRY("pci_err_uncor_mask", - err_cap.pci_err_uncor_mask, "0x%08X"); - __HAL_AUX_ENTRY("pci_err_uncor_server", - err_cap.pci_err_uncor_server, "0x%08X"); - __HAL_AUX_ENTRY("pci_err_cor_status", - err_cap.pci_err_cor_status, "0x%08X"); - __HAL_AUX_ENTRY("pci_err_cap", - err_cap.pci_err_cap, "0x%08X"); - __HAL_AUX_ENTRY("err_header_log", - err_cap.err_header_log, "%u"); - __HAL_AUX_ENTRY("pci_err_root_command", - err_cap.pci_err_root_command, "0x%08X"); - __HAL_AUX_ENTRY("pci_err_root_status", - err_cap.pci_err_root_status, "0x%08X"); - __HAL_AUX_ENTRY("pci_err_root_cor_src", - err_cap.pci_err_root_cor_src, "0x%04X"); - __HAL_AUX_ENTRY("pci_err_root_src", - err_cap.pci_err_root_src, "0x%04X"); - break; - case VXGE_HAL_PCI_EXT_CAP_ID_VC: - break; - case VXGE_HAL_PCI_EXT_CAP_ID_DSN: - break; - case VXGE_HAL_PCI_EXT_CAP_ID_PWR: - break; - default: - __HAL_AUX_ENTRY("Unknown Capability", cap_id, - "0x%02X"); - break; - } - next_ptr = (u16) VXGE_HAL_PCI_EXT_CAP_NEXT( - *(u32 *)((void *)(((u8 *) pci_config) + next_ptr))); - - } - - } - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_device_config_read - Read device configuration. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device configuration, - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_VERSION_CONFLICT - Version it not matching. - * - * See also: vxge_hal_aux_driver_config_read(). - */ -vxge_hal_status_e -vxge_hal_aux_device_config_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize) -{ - int i; - u32 size = sizeof(vxge_hal_device_config_t); - vxge_hal_status_e status; - vxge_hal_mac_config_t *mac_config; - vxge_hal_device_config_t *dev_config; - vxge_hal_device_t *hldev = (vxge_hal_device_t *) devh; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - dev_config = (vxge_hal_device_config_t *) vxge_os_malloc(hldev->pdev, - sizeof(vxge_hal_device_config_t)); - if (dev_config == NULL) { - return (VXGE_HAL_FAIL); - } - - status = vxge_hal_mgmt_device_config(devh, dev_config, &size); - if (status != VXGE_HAL_OK) { - vxge_os_free(hldev->pdev, dev_config, - sizeof(vxge_hal_device_config_t)); - return (status); - } - - __HAL_AUX_CONFIG_ENTRY("DMA Block Pool size-Minimum", - dev_config->dma_blockpool_min, "%u"); - __HAL_AUX_CONFIG_ENTRY("DMA Block Pool size-Initial", - dev_config->dma_blockpool_initial, "%u"); - __HAL_AUX_CONFIG_ENTRY("DMA Block Pool size-Increment", - dev_config->dma_blockpool_incr, "%u"); - __HAL_AUX_CONFIG_ENTRY("DMA Block Pool size-Maximum", - dev_config->dma_blockpool_max, "%u"); - for (i = 0; i < VXGE_HAL_MAC_MAX_WIRE_PORTS; i++) { - mac_config = &dev_config->mrpcim_config.mac_config; - __HAL_AUX_CONFIG_ENTRY("port_id", - mac_config->wire_port_config[i].port_id, "%u"); - __HAL_AUX_CONFIG_ENTRY("media", - mac_config->wire_port_config[i].media, "%u"); - __HAL_AUX_CONFIG_ENTRY("mtu", - mac_config->wire_port_config[i].mtu, "%u"); - __HAL_AUX_CONFIG_ENTRY("autoneg_mode", - mac_config->wire_port_config[i].autoneg_mode, "%u"); - __HAL_AUX_CONFIG_ENTRY("fixed_use_fsm", - mac_config->wire_port_config[i].fixed_use_fsm, "%u"); - __HAL_AUX_CONFIG_ENTRY("antp_use_fsm", - mac_config->wire_port_config[i].antp_use_fsm, "%u"); - __HAL_AUX_CONFIG_ENTRY("anbe_use_fsm", - mac_config->wire_port_config[i].anbe_use_fsm, "%u"); - __HAL_AUX_CONFIG_ENTRY("link_stability_period", - mac_config->wire_port_config[i].link_stability_period, - "%u"); - __HAL_AUX_CONFIG_ENTRY("port_stability_period", - mac_config->wire_port_config[i].port_stability_period, - "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_en", - mac_config->wire_port_config[i].tmac_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_en", - mac_config->wire_port_config[i].rmac_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_pad", - mac_config->wire_port_config[i].tmac_pad, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_pad_byte", - mac_config->wire_port_config[i].tmac_pad_byte, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_util_period", - mac_config->wire_port_config[i].tmac_util_period, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_strip_fcs", - mac_config->wire_port_config[i].rmac_strip_fcs, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_prom_en", - mac_config->wire_port_config[i].rmac_prom_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_discard_pfrm", - mac_config->wire_port_config[i].rmac_discard_pfrm, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_util_period", - mac_config->wire_port_config[i].rmac_util_period, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_pause_gen_en", - mac_config->wire_port_config[i].rmac_pause_gen_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_pause_rcv_en", - mac_config->wire_port_config[i].rmac_pause_rcv_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_pause_time", - mac_config->wire_port_config[i].rmac_pause_time, "%u"); - __HAL_AUX_CONFIG_ENTRY("limiter_en", - mac_config->wire_port_config[i].limiter_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("max_limit", - mac_config->wire_port_config[i].max_limit, "%u"); - } - - /* CONSTCOND */ - __HAL_AUX_CONFIG_ENTRY("port_id", - VXGE_HAL_MAC_SWITCH_PORT, "%u"); - __HAL_AUX_CONFIG_ENTRY("mtu", - mac_config->switch_port_config.mtu, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_en", - mac_config->switch_port_config.tmac_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_en", - mac_config->switch_port_config.rmac_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_pad", - mac_config->switch_port_config.tmac_pad, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_pad_byte", - mac_config->switch_port_config.tmac_pad_byte, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_util_period", - mac_config->switch_port_config.tmac_util_period, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_strip_fcs", - mac_config->switch_port_config.rmac_strip_fcs, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_prom_en", - mac_config->switch_port_config.rmac_prom_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_discard_pfrm", - mac_config->switch_port_config.rmac_discard_pfrm, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_util_period", - mac_config->switch_port_config.rmac_util_period, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_pause_gen_en", - mac_config->switch_port_config.rmac_pause_gen_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_pause_rcv_en", - mac_config->switch_port_config.rmac_pause_rcv_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("rmac_pause_time", - mac_config->switch_port_config.rmac_pause_time, "%u"); - __HAL_AUX_CONFIG_ENTRY("limiter_en", - mac_config->switch_port_config.limiter_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("max_limit", - mac_config->switch_port_config.max_limit, "%u"); - - __HAL_AUX_CONFIG_ENTRY("network_stability_period", - mac_config->network_stability_period, "%u"); - for (i = 0; i < 16; i++) { - __HAL_AUX_CONFIG_ENTRY("mc_pause_threshold[i]", - mac_config->mc_pause_threshold[i], "%u"); - } - __HAL_AUX_CONFIG_ENTRY("tmac_perma_stop_en", - mac_config->tmac_perma_stop_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_tx_switch_dis", - mac_config->tmac_tx_switch_dis, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_lossy_switch_en", - mac_config->tmac_lossy_switch_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_lossy_wire_en", - mac_config->tmac_lossy_wire_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_bcast_to_wire_dis", - mac_config->tmac_bcast_to_wire_dis, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_bcast_to_switch_dis", - mac_config->tmac_bcast_to_switch_dis, "%u"); - __HAL_AUX_CONFIG_ENTRY("tmac_host_append_fcs_en", - mac_config->tmac_host_append_fcs_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("tpa_support_snap_ab_n", - mac_config->tpa_support_snap_ab_n, "%u"); - __HAL_AUX_CONFIG_ENTRY("tpa_ecc_enable_n", - mac_config->tpa_ecc_enable_n, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_ignore_frame_err", - mac_config->rpa_ignore_frame_err, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_support_snap_ab_n", - mac_config->rpa_support_snap_ab_n, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_search_for_hao", - mac_config->rpa_search_for_hao, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_support_ipv6_mobile_hdrs", - mac_config->rpa_support_ipv6_mobile_hdrs, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_ipv6_stop_searching", - mac_config->rpa_ipv6_stop_searching, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_no_ps_if_unknown", - mac_config->rpa_no_ps_if_unknown, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_search_for_etype", - mac_config->rpa_search_for_etype, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_l4_comp_csum", - mac_config->rpa_repl_l4_comp_csum, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_l3_incl_cf", - mac_config->rpa_repl_l3_incl_cf, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_l3_comp_csum", - mac_config->rpa_repl_l3_comp_csum, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_ipv4_tcp_incl_ph", - mac_config->rpa_repl_ipv4_tcp_incl_ph, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_ipv6_tcp_incl_ph", - mac_config->rpa_repl_ipv6_tcp_incl_ph, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_ipv4_udp_incl_ph", - mac_config->rpa_repl_ipv4_udp_incl_ph, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_ipv6_udp_incl_ph", - mac_config->rpa_repl_ipv6_udp_incl_ph, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_l4_incl_cf", - mac_config->rpa_repl_l4_incl_cf, "%u"); - __HAL_AUX_CONFIG_ENTRY("rpa_repl_strip_vlan_tag", - mac_config->rpa_repl_strip_vlan_tag, "%u"); - __HAL_AUX_CONFIG_ENTRY("ISR Polling count", - dev_config->isr_polling_cnt, "%u"); - __HAL_AUX_CONFIG_ENTRY("Maximum Payload Size", - dev_config->max_payload_size, "%u"); - __HAL_AUX_CONFIG_ENTRY("MMRB Count", - dev_config->mmrb_count, "%u"); - __HAL_AUX_CONFIG_ENTRY("Statistics Refresh Time", - dev_config->stats_refresh_time_sec, "%u"); - __HAL_AUX_CONFIG_ENTRY("Interrupt Mode", - dev_config->intr_mode, "%u"); - __HAL_AUX_CONFIG_ENTRY("Dump on Unknwon Error", - dev_config->dump_on_unknown, "%u"); - __HAL_AUX_CONFIG_ENTRY("Dump on Serious Error", - dev_config->dump_on_serr, "%u"); - __HAL_AUX_CONFIG_ENTRY("Dump on Critical Error", - dev_config->dump_on_critical, "%u"); - __HAL_AUX_CONFIG_ENTRY("Dump on ECC Error", - dev_config->dump_on_eccerr, "%u"); - __HAL_AUX_CONFIG_ENTRY("RTH Enable", - dev_config->rth_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("RTS MAC Enable", - dev_config->rts_mac_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("RTS QOS Enable", - dev_config->rts_qos_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("RTS Port Enable", - dev_config->rts_port_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Max CQE Groups", - dev_config->max_cqe_groups, "%u"); - __HAL_AUX_CONFIG_ENTRY("Max Number of OD Groups", - dev_config->max_num_wqe_od_groups, "%u"); - __HAL_AUX_CONFIG_ENTRY("No WQE Threshold", - dev_config->no_wqe_threshold, "%u"); - __HAL_AUX_CONFIG_ENTRY("Refill Threshold-High", - dev_config->refill_threshold_high, "%u"); - __HAL_AUX_CONFIG_ENTRY("Refill Threshold-Low", - dev_config->refill_threshold_low, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ack Block Limit", - dev_config->ack_blk_limit, "%u"); - __HAL_AUX_CONFIG_ENTRY("Poll or Doorbell", - dev_config->poll_or_doorbell, "%u"); - __HAL_AUX_CONFIG_ENTRY("stats_read_method", - dev_config->stats_read_method, "%u"); - __HAL_AUX_CONFIG_ENTRY("Device Poll Timeout", - dev_config->device_poll_millis, "%u"); - __HAL_AUX_CONFIG_ENTRY("debug_level", - dev_config->debug_level, "%u"); - __HAL_AUX_CONFIG_ENTRY("debug_mask", - dev_config->debug_mask, "%u"); - -#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR) - __HAL_AUX_CONFIG_ENTRY("Trace buffer size", - dev_config->tracebuf_size, "%u"); -#endif - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - if (!(((__hal_device_t *) hldev)->vpath_assignments & mBIT(i))) - continue; - - __HAL_AUX_CONFIG_ENTRY("Virtual Path id", - dev_config->vp_config[i].vp_id, "%u"); - __HAL_AUX_CONFIG_ENTRY("No Snoop", - dev_config->vp_config[i].no_snoop, "%u"); - __HAL_AUX_CONFIG_ENTRY("mtu", - dev_config->vp_config[i].mtu, "%u"); - __HAL_AUX_CONFIG_ENTRY("TPA LSOv2 Enable", - dev_config->vp_config[i].tpa_lsov2_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("TPA Ignore Frame Error", - dev_config->vp_config[i].tpa_ignore_frame_error, "%u"); - __HAL_AUX_CONFIG_ENTRY("TPA IPv6 Keep Searching", - dev_config->vp_config[i].tpa_ipv6_keep_searching, "%u"); - __HAL_AUX_CONFIG_ENTRY("TPA L4 pseudo header present", - dev_config->vp_config[i].tpa_l4_pshdr_present, "%u"); - __HAL_AUX_CONFIG_ENTRY("TPA support mobile IPv6 Headers", - dev_config->vp_config[i].tpa_support_mobile_ipv6_hdrs, - "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA IPv4 TCP Include pseudo header", - dev_config->vp_config[i].rpa_ipv4_tcp_incl_ph, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA IPv6 TCP Include pseudo header", - dev_config->vp_config[i].rpa_ipv6_tcp_incl_ph, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA IPv4 UDP Include pseudo header", - dev_config->vp_config[i].rpa_ipv4_udp_incl_ph, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA IPv6 UDP Include pseudo header", - dev_config->vp_config[i].rpa_ipv6_udp_incl_ph, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA L4 Include CF", - dev_config->vp_config[i].rpa_l4_incl_cf, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA Strip VLAN Tag", - dev_config->vp_config[i].rpa_strip_vlan_tag, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA L4 Comp Csum Enable", - dev_config->vp_config[i].rpa_l4_comp_csum, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA L3 Include CF Enable", - dev_config->vp_config[i].rpa_l3_incl_cf, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA L3 Comp Csum", - dev_config->vp_config[i].rpa_l3_comp_csum, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA Unicast All Address Enable", - dev_config->vp_config[i].rpa_ucast_all_addr_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA Unicast All Address Enable", - dev_config->vp_config[i].rpa_ucast_all_addr_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA Multicast All Address Enable", - dev_config->vp_config[i].rpa_mcast_all_addr_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA Broadcast Enable", - dev_config->vp_config[i].rpa_bcast_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("RPA All VID Enable", - dev_config->vp_config[i].rpa_all_vid_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("VP Queue L2 Flow", - dev_config->vp_config[i].vp_queue_l2_flow, "%u"); - - __HAL_AUX_CONFIG_ENTRY("Ring blocks", - dev_config->vp_config[i].ring.ring_length, "%u"); - __HAL_AUX_CONFIG_ENTRY("Buffer Mode", - dev_config->vp_config[i].ring.buffer_mode, "%u"); - __HAL_AUX_CONFIG_ENTRY("Scatter Mode", - dev_config->vp_config[i].ring.scatter_mode, "%u"); - __HAL_AUX_CONFIG_ENTRY("Post Mode", - dev_config->vp_config[i].ring.post_mode, "%u"); - __HAL_AUX_CONFIG_ENTRY("Maximum Frame Length", - dev_config->vp_config[i].ring.max_frm_len, "%u"); - __HAL_AUX_CONFIG_ENTRY("No Snoop Bits", - dev_config->vp_config[i].ring.no_snoop_bits, "%u"); - __HAL_AUX_CONFIG_ENTRY("Rx Timer Value", - dev_config->vp_config[i].ring.rx_timer_val, "%u"); - __HAL_AUX_CONFIG_ENTRY("Greedy return", - dev_config->vp_config[i].ring.greedy_return, "%u"); - __HAL_AUX_CONFIG_ENTRY("Rx Timer CI", - dev_config->vp_config[i].ring.rx_timer_ci, "%u"); - __HAL_AUX_CONFIG_ENTRY("Backoff Interval", - dev_config->vp_config[i].ring.backoff_interval_us, "%u"); - __HAL_AUX_CONFIG_ENTRY("Indicate Max Packets", - dev_config->vp_config[i].ring.indicate_max_pkts, "%u"); - - - __HAL_AUX_CONFIG_ENTRY("FIFO Blocks", - dev_config->vp_config[i].fifo.fifo_length, "%u"); - __HAL_AUX_CONFIG_ENTRY("Max Frags", - dev_config->vp_config[i].fifo.max_frags, "%u"); - __HAL_AUX_CONFIG_ENTRY("Alignment Size", - dev_config->vp_config[i].fifo.alignment_size, "%u"); - __HAL_AUX_CONFIG_ENTRY("Maximum Aligned Frags", - dev_config->vp_config[i].fifo.max_aligned_frags, "%u"); - __HAL_AUX_CONFIG_ENTRY("Interrupt Enable", - dev_config->vp_config[i].fifo.intr, "%u"); - __HAL_AUX_CONFIG_ENTRY("No Snoop Bits", - dev_config->vp_config[i].fifo.no_snoop_bits, "%u"); - - - __HAL_AUX_CONFIG_ENTRY("Interrupt Enable", - dev_config->vp_config[i].tti.intr_enable, "%u"); - __HAL_AUX_CONFIG_ENTRY("BTimer Value", - dev_config->vp_config[i].tti.btimer_val, "%u"); - __HAL_AUX_CONFIG_ENTRY("Timer AC Enable", - dev_config->vp_config[i].tti.timer_ac_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Timer CI Enable", - dev_config->vp_config[i].tti.timer_ci_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Timer RI Enable", - dev_config->vp_config[i].tti.timer_ri_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Timer Event SF", - dev_config->vp_config[i].tti.rtimer_event_sf, "%u"); - __HAL_AUX_CONFIG_ENTRY("RTimer Value", - dev_config->vp_config[i].tti.rtimer_val, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Sel", - dev_config->vp_config[i].tti.util_sel, "%u"); - __HAL_AUX_CONFIG_ENTRY("LTimer Value", - dev_config->vp_config[i].tti.ltimer_val, "%u"); - __HAL_AUX_CONFIG_ENTRY("Tx Frame Count Enable", - dev_config->vp_config[i].tti.txfrm_cnt_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Txd Count Enable", - dev_config->vp_config[i].tti.txd_cnt_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Range A", - dev_config->vp_config[i].tti.urange_a, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Event Count A", - dev_config->vp_config[i].tti.uec_a, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Range B", - dev_config->vp_config[i].tti.urange_b, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Event Count B", - dev_config->vp_config[i].tti.uec_b, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Range C", - dev_config->vp_config[i].tti.urange_c, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Event Count C", - dev_config->vp_config[i].tti.uec_c, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Event Count D", - dev_config->vp_config[i].tti.uec_d, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ufca Interrupt Threshold", - dev_config->vp_config[i].tti.ufca_intr_thres, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ufca Low Limit", - dev_config->vp_config[i].tti.ufca_lo_lim, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ufca High Limit", - dev_config->vp_config[i].tti.ufca_hi_lim, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ufca lbolt period", - dev_config->vp_config[i].tti.ufca_lbolt_period, "%u"); - - __HAL_AUX_CONFIG_ENTRY("Interrupt Enable", - dev_config->vp_config[i].rti.intr_enable, "%u"); - __HAL_AUX_CONFIG_ENTRY("BTimer Value", - dev_config->vp_config[i].rti.btimer_val, "%u"); - __HAL_AUX_CONFIG_ENTRY("Timer AC Enable", - dev_config->vp_config[i].rti.timer_ac_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Timer CI Enable", - dev_config->vp_config[i].rti.timer_ci_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Timer RI Enable", - dev_config->vp_config[i].rti.timer_ri_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Timer Event SF", - dev_config->vp_config[i].rti.rtimer_event_sf, "%u"); - __HAL_AUX_CONFIG_ENTRY("RTimer Value", - dev_config->vp_config[i].rti.rtimer_val, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Sel", - dev_config->vp_config[i].rti.util_sel, "%u"); - __HAL_AUX_CONFIG_ENTRY("LTimer Value", - dev_config->vp_config[i].rti.ltimer_val, "%u"); - __HAL_AUX_CONFIG_ENTRY("Tx Frame Count Enable", - dev_config->vp_config[i].rti.txfrm_cnt_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Txd Count Enable", - dev_config->vp_config[i].rti.txd_cnt_en, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Range A", - dev_config->vp_config[i].rti.urange_a, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Event Count A", - dev_config->vp_config[i].rti.uec_a, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Range B", - dev_config->vp_config[i].rti.urange_b, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Event Count B", - dev_config->vp_config[i].rti.uec_b, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Range C", - dev_config->vp_config[i].rti.urange_c, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Event Count C", - dev_config->vp_config[i].rti.uec_c, "%u"); - __HAL_AUX_CONFIG_ENTRY("Util Event Count D", - dev_config->vp_config[i].rti.uec_d, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ufca Interrupt Threshold", - dev_config->vp_config[i].rti.ufca_intr_thres, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ufca Low Limit", - dev_config->vp_config[i].rti.ufca_lo_lim, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ufca High Limit", - dev_config->vp_config[i].rti.ufca_hi_lim, "%u"); - __HAL_AUX_CONFIG_ENTRY("Ufca lbolt period", - dev_config->vp_config[i].rti.ufca_lbolt_period, "%u"); - } - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - vxge_os_free(hldev->pdev, dev_config, - sizeof(vxge_hal_device_config_t)); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_bar0_read - Read and format X3100 BAR0 register. - * @devh: HAL device handle. - * @offset: Register offset in the BAR0 space. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read X3100 register from BAR0 space. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_OUT_OF_SPACE - Buffer size is very small. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not - * valid. - * - * See also: vxge_hal_mgmt_reg_read(). - */ -vxge_hal_status_e -vxge_hal_aux_bar0_read(vxge_hal_device_h devh, - unsigned int offset, int bufsize, char *retbuf, - int *retsize) -{ - vxge_hal_status_e status; - u64 retval; - - status = vxge_hal_mgmt_bar0_read(devh, offset, &retval); - if (status != VXGE_HAL_OK) - return (status); - - if (bufsize < VXGE_OS_SPRINTF_STRLEN) - return (VXGE_HAL_ERR_OUT_OF_SPACE); - - *retsize = vxge_os_snprintf(retbuf, bufsize, - "0x%04X%c0x%08X%08X\n", offset, - VXGE_HAL_AUX_SEPA, (u32) (retval >> 32), (u32) retval); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_bar1_read - Read and format X3100 BAR1 register. - * @devh: HAL device handle. - * @offset: Register offset in the BAR1 space. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read X3100 register from BAR1 space. - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_OUT_OF_SPACE - Buffer size is very small. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not - * valid. - * - * See also: vxge_hal_mgmt_reg_read(). - */ -vxge_hal_status_e -vxge_hal_aux_bar1_read(vxge_hal_device_h devh, - unsigned int offset, int bufsize, char *retbuf, - int *retsize) -{ - vxge_hal_status_e status; - u64 retval; - - status = vxge_hal_mgmt_bar1_read(devh, offset, &retval); - if (status != VXGE_HAL_OK) - return (status); - - if (bufsize < VXGE_OS_SPRINTF_STRLEN) - return (VXGE_HAL_ERR_OUT_OF_SPACE); - - *retsize = vxge_os_snprintf(retbuf, bufsize, "0x%04X%c0x%08X%08X\n", - offset, VXGE_HAL_AUX_SEPA, (u32) (retval >> 32), (u32) retval); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_bar0_write - Write BAR0 register. - * @devh: HAL device handle. - * @offset: Register offset in the BAR0 space. - * @value: Regsister value (to write). - * - * Write BAR0 register. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_DEVICE - Device is not valid. - * VXGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not - * valid. - * - * See also: vxge_hal_mgmt_reg_write(). - */ -vxge_hal_status_e -vxge_hal_aux_bar0_write(vxge_hal_device_h devh, - unsigned int offset, u64 value) -{ - vxge_hal_status_e status; - - status = vxge_hal_mgmt_bar0_write(devh, offset, value); - if (status != VXGE_HAL_OK) - return (status); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_stats_vpath_hw_read - Read vpath hardware statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read vpath hardware statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_hw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_hw_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize) -{ - vxge_hal_status_e status; - vxge_hal_vpath_stats_hw_info_t hw_info; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(vpath_handle != NULL); - - status = vxge_hal_vpath_hw_stats_enable(vpath_handle); - if (status != VXGE_HAL_OK) - return (status); - - status = vxge_hal_vpath_hw_stats_get(vpath_handle, &hw_info); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("ini_num_mwr_sent", - hw_info.ini_num_mwr_sent, "%u"); - __HAL_AUX_ENTRY("ini_num_mrd_sent", - hw_info.ini_num_mrd_sent, "%u"); - __HAL_AUX_ENTRY("ini_num_cpl_rcvd", - hw_info.ini_num_cpl_rcvd, "%u"); - __HAL_AUX_ENTRY("ini_num_mwr_byte_sent", - hw_info.ini_num_mwr_byte_sent, "%llu"); - __HAL_AUX_ENTRY("ini_num_cpl_byte_rcvd", - hw_info.ini_num_cpl_byte_rcvd, "%llu"); - __HAL_AUX_ENTRY("wrcrdtarb_xoff", - hw_info.wrcrdtarb_xoff, "%u"); - __HAL_AUX_ENTRY("rdcrdtarb_xoff", - hw_info.rdcrdtarb_xoff, "%u"); - __HAL_AUX_ENTRY("vpath_genstats_count0", - hw_info.vpath_genstats_count0, "%u"); - __HAL_AUX_ENTRY("vpath_genstats_count1", - hw_info.vpath_genstats_count1, "%u"); - __HAL_AUX_ENTRY("vpath_genstats_count2", - hw_info.vpath_genstats_count2, "%u"); - __HAL_AUX_ENTRY("vpath_genstats_count3", - hw_info.vpath_genstats_count3, "%u"); - __HAL_AUX_ENTRY("vpath_genstats_count4", - hw_info.vpath_genstats_count4, "%u"); - __HAL_AUX_ENTRY("vpath_genstats_count5", - hw_info.vpath_genstats_count5, "%u"); - __HAL_AUX_ENTRY("tx_ttl_eth_frms", - hw_info.tx_stats.tx_ttl_eth_frms, "%llu"); - __HAL_AUX_ENTRY("tx_ttl_eth_octets", - hw_info.tx_stats.tx_ttl_eth_octets, "%llu"); - __HAL_AUX_ENTRY("tx_data_octets", - hw_info.tx_stats.tx_data_octets, "%llu"); - __HAL_AUX_ENTRY("tx_mcast_frms", - hw_info.tx_stats.tx_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_bcast_frms", - hw_info.tx_stats.tx_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_ucast_frms", - hw_info.tx_stats.tx_ucast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_tagged_frms", - hw_info.tx_stats.tx_tagged_frms, "%llu"); - __HAL_AUX_ENTRY("tx_vld_ip", - hw_info.tx_stats.tx_vld_ip, "%llu"); - __HAL_AUX_ENTRY("tx_vld_ip_octets", - hw_info.tx_stats.tx_vld_ip_octets, "%llu"); - __HAL_AUX_ENTRY("tx_icmp", - hw_info.tx_stats.tx_icmp, "%llu"); - __HAL_AUX_ENTRY("tx_tcp", - hw_info.tx_stats.tx_tcp, "%llu"); - __HAL_AUX_ENTRY("tx_rst_tcp", - hw_info.tx_stats.tx_rst_tcp, "%llu"); - __HAL_AUX_ENTRY("tx_udp", - hw_info.tx_stats.tx_udp, "%llu"); - __HAL_AUX_ENTRY("tx_unknown_protocol", - hw_info.tx_stats.tx_unknown_protocol, "%u"); - __HAL_AUX_ENTRY("tx_lost_ip", - hw_info.tx_stats.tx_lost_ip, "%u"); - __HAL_AUX_ENTRY("tx_parse_error", - hw_info.tx_stats.tx_parse_error, "%u"); - __HAL_AUX_ENTRY("tx_tcp_offload", - hw_info.tx_stats.tx_tcp_offload, "%llu"); - __HAL_AUX_ENTRY("tx_retx_tcp_offload", - hw_info.tx_stats.tx_retx_tcp_offload, "%llu"); - __HAL_AUX_ENTRY("tx_lost_ip_offload", - hw_info.tx_stats.tx_lost_ip_offload, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_eth_frms", - hw_info.rx_stats.rx_ttl_eth_frms, "%llu"); - __HAL_AUX_ENTRY("rx_vld_frms", - hw_info.rx_stats.rx_vld_frms, "%llu"); - __HAL_AUX_ENTRY("rx_offload_frms", - hw_info.rx_stats.rx_offload_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_eth_octets", - hw_info.rx_stats.rx_ttl_eth_octets, "%llu"); - __HAL_AUX_ENTRY("rx_data_octets", - hw_info.rx_stats.rx_data_octets, "%llu"); - __HAL_AUX_ENTRY("rx_offload_octets", - hw_info.rx_stats.rx_offload_octets, "%llu"); - __HAL_AUX_ENTRY("rx_vld_mcast_frms", - hw_info.rx_stats.rx_vld_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_vld_bcast_frms", - hw_info.rx_stats.rx_vld_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_ucast_frms", - hw_info.rx_stats.rx_accepted_ucast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_nucast_frms", - hw_info.rx_stats.rx_accepted_nucast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_tagged_frms", - hw_info.rx_stats.rx_tagged_frms, "%llu"); - __HAL_AUX_ENTRY("rx_long_frms", - hw_info.rx_stats.rx_long_frms, "%llu"); - __HAL_AUX_ENTRY("rx_usized_frms", - hw_info.rx_stats.rx_usized_frms, "%llu"); - __HAL_AUX_ENTRY("rx_osized_frms", - hw_info.rx_stats.rx_osized_frms, "%llu"); - __HAL_AUX_ENTRY("rx_frag_frms", - hw_info.rx_stats.rx_frag_frms, "%llu"); - __HAL_AUX_ENTRY("rx_jabber_frms", - hw_info.rx_stats.rx_jabber_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_64_frms", - hw_info.rx_stats.rx_ttl_64_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_65_127_frms", - hw_info.rx_stats.rx_ttl_65_127_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_128_255_frms", - hw_info.rx_stats.rx_ttl_128_255_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_256_511_frms", - hw_info.rx_stats.rx_ttl_256_511_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_512_1023_frms", - hw_info.rx_stats.rx_ttl_512_1023_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_1024_1518_frms", - hw_info.rx_stats.rx_ttl_1024_1518_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_1519_4095_frms", - hw_info.rx_stats.rx_ttl_1519_4095_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_4096_8191_frms", - hw_info.rx_stats.rx_ttl_4096_8191_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_8192_max_frms", - hw_info.rx_stats.rx_ttl_8192_max_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_gt_max_frms", - hw_info.rx_stats.rx_ttl_gt_max_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ip", - hw_info.rx_stats.rx_ip, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_ip", - hw_info.rx_stats.rx_accepted_ip, "%llu"); - __HAL_AUX_ENTRY("rx_ip_octets", - hw_info.rx_stats.rx_ip_octets, "%llu"); - __HAL_AUX_ENTRY("rx_err_ip", - hw_info.rx_stats.rx_err_ip, "%llu"); - __HAL_AUX_ENTRY("rx_icmp", - hw_info.rx_stats.rx_icmp, "%llu"); - __HAL_AUX_ENTRY("rx_tcp", - hw_info.rx_stats.rx_tcp, "%llu"); - __HAL_AUX_ENTRY("rx_udp", - hw_info.rx_stats.rx_udp, "%llu"); - __HAL_AUX_ENTRY("rx_err_tcp", - hw_info.rx_stats.rx_err_tcp, "%llu"); - __HAL_AUX_ENTRY("rx_lost_frms", - hw_info.rx_stats.rx_lost_frms, "%llu"); - __HAL_AUX_ENTRY("rx_lost_ip", - hw_info.rx_stats.rx_lost_ip, "%llu"); - __HAL_AUX_ENTRY("rx_lost_ip_offload", - hw_info.rx_stats.rx_lost_ip_offload, "%llu"); - __HAL_AUX_ENTRY("rx_various_discard", - hw_info.rx_stats.rx_various_discard, "%u"); - __HAL_AUX_ENTRY("rx_sleep_discard", - hw_info.rx_stats.rx_sleep_discard, "%u"); - __HAL_AUX_ENTRY("rx_red_discard", - hw_info.rx_stats.rx_red_discard, "%u"); - __HAL_AUX_ENTRY("rx_queue_full_discard", - hw_info.rx_stats.rx_queue_full_discard, "%u"); - __HAL_AUX_ENTRY("rx_mpa_ok_frms", - hw_info.rx_stats.rx_mpa_ok_frms, "%llu"); - __HAL_AUX_ENTRY("prog_event_vnum1", - hw_info.prog_event_vnum1, "%u"); - __HAL_AUX_ENTRY("prog_event_vnum0", - hw_info.prog_event_vnum0, "%u"); - __HAL_AUX_ENTRY("prog_event_vnum3", - hw_info.prog_event_vnum3, "%u"); - __HAL_AUX_ENTRY("prog_event_vnum2", - hw_info.prog_event_vnum2, "%u"); - __HAL_AUX_ENTRY("rx_multi_cast_frame_discard", - hw_info.rx_multi_cast_frame_discard, "%u"); - __HAL_AUX_ENTRY("rx_frm_transferred", - hw_info.rx_frm_transferred, "%u"); - __HAL_AUX_ENTRY("rxd_returned", - hw_info.rxd_returned, "%u"); - __HAL_AUX_ENTRY("rx_mpa_len_fail_frms", - hw_info.rx_mpa_len_fail_frms, "%u"); - __HAL_AUX_ENTRY("rx_mpa_mrk_fail_frms", - hw_info.rx_mpa_mrk_fail_frms, "%u"); - __HAL_AUX_ENTRY("rx_mpa_crc_fail_frms", - hw_info.rx_mpa_crc_fail_frms, "%u"); - __HAL_AUX_ENTRY("rx_permitted_frms", - hw_info.rx_permitted_frms, "%u"); - __HAL_AUX_ENTRY("rx_vp_reset_discarded_frms", - hw_info.rx_vp_reset_discarded_frms, "%llu"); - __HAL_AUX_ENTRY("rx_wol_frms", - hw_info.rx_wol_frms, "%llu"); - __HAL_AUX_ENTRY("tx_vp_reset_discarded_frms", - hw_info.tx_vp_reset_discarded_frms, "%llu"); - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_stats_device_hw_read - Read device hardware statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device hardware statistics. This is a subset of stats counters - * from vxge_hal_device_stats_hw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_device_hw_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize) -{ - u32 i; - int rsize = 0; - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(devh); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - __HAL_AUX_ENTRY("H/W stats for vpath id", i, "%u"); - - status = vxge_hal_aux_stats_vpath_hw_read( - VXGE_HAL_VIRTUAL_PATH_HANDLE(&hldev->virtual_paths[i]), - leftsize, ptr, &rsize); - - if (status != VXGE_HAL_OK) - return (status); - - ptr += rsize; - leftsize -= rsize; - - } - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -#define __HAL_AUX_VPATH_SW_COMMON_INFO(prefix, common) {\ - __HAL_AUX_ENTRY(prefix"full_cnt", (common)->full_cnt, "%u");\ - __HAL_AUX_ENTRY(prefix"usage_cnt", (common)->usage_cnt, "%u");\ - __HAL_AUX_ENTRY(prefix"usage_max", (common)->usage_max, "%u");\ - __HAL_AUX_ENTRY(prefix"avg_compl_per_intr_cnt",\ - (common)->avg_compl_per_intr_cnt, "%u");\ - __HAL_AUX_ENTRY(prefix"total_compl_cnt",\ - (common)->total_compl_cnt, "%u");\ -} - -/* - * vxge_hal_aux_stats_vpath_sw_fifo_read - Read vpath fifo software statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read vpath fifo software statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_sw_fifo_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_sw_fifo_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize) -{ - u32 i; - u8 strbuf[256]; - vxge_hal_status_e status; - vxge_hal_vpath_stats_sw_fifo_info_t *fifo_info; - vxge_hal_vpath_stats_sw_info_t sw_stats; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(vpath_handle != NULL); - - status = vxge_hal_vpath_sw_stats_get(vpath_handle, &sw_stats); - if (status != VXGE_HAL_OK) - return (status); - - fifo_info = &sw_stats.fifo_stats; - - __HAL_AUX_VPATH_SW_COMMON_INFO("fifo_", - &fifo_info->common_stats); - - __HAL_AUX_ENTRY("total_posts", - fifo_info->total_posts, "%u"); - __HAL_AUX_ENTRY("total_buffers", - fifo_info->total_buffers, "%u"); - __HAL_AUX_ENTRY("avg_buffers_per_post", - fifo_info->avg_buffers_per_post, "%u"); - __HAL_AUX_ENTRY("copied_frags", - fifo_info->copied_frags, "%u"); - __HAL_AUX_ENTRY("copied_buffers", - fifo_info->copied_buffers, "%u"); - __HAL_AUX_ENTRY("avg_buffer_size", - fifo_info->avg_buffer_size, "%u"); - __HAL_AUX_ENTRY("avg_post_size", - fifo_info->avg_post_size, "%u"); - __HAL_AUX_ENTRY("total_frags", - fifo_info->total_frags, "%u"); - __HAL_AUX_ENTRY("copied_frags", - fifo_info->copied_frags, "%u"); - __HAL_AUX_ENTRY("total_posts_dang_dtrs", - fifo_info->total_posts_dang_dtrs, "%u"); - __HAL_AUX_ENTRY("total_posts_dang_frags", - fifo_info->total_posts_dang_frags, "%u"); - - for (i = 0; i < 16; i++) { - (void) vxge_os_snprintf((char *) strbuf, - sizeof(strbuf), "txd_t_code_err_cnt[%d]", i); - __HAL_AUX_ENTRY(strbuf, - fifo_info->txd_t_code_err_cnt[i], "%u"); - } - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_stats_vpath_sw_ring_read - Read vpath ring software statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read vpath ring software statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_sw_ring_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_sw_ring_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize) -{ - u32 i; - u8 strbuf[256]; - vxge_hal_status_e status; - vxge_hal_vpath_stats_sw_ring_info_t *ring_info; - vxge_hal_vpath_stats_sw_info_t sw_stats; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(vpath_handle != NULL); - - status = vxge_hal_vpath_sw_stats_get(vpath_handle, &sw_stats); - if (status != VXGE_HAL_OK) - return (status); - - ring_info = &sw_stats.ring_stats; - - __HAL_AUX_VPATH_SW_COMMON_INFO("ring_", - &ring_info->common_stats); - - for (i = 0; i < 16; i++) { - (void) vxge_os_snprintf((char *) strbuf, - sizeof(strbuf), "rxd_t_code_err_cnt[%d]", i); - __HAL_AUX_ENTRY(strbuf, - ring_info->rxd_t_code_err_cnt[i], "%u"); - } - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - - -/* - * vxge_hal_aux_stats_vpath_sw_err_read - Read vpath err software statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read vpath err software statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_sw_err_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_sw_err_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize) -{ - vxge_hal_vpath_stats_sw_err_t *err_info; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(vpath_handle != NULL); - - err_info = &vp->vpath->sw_stats->error_stats; - - __HAL_AUX_ENTRY("unknown_alarms", - err_info->unknown_alarms, "%u"); - __HAL_AUX_ENTRY("network_sustained_fault", - err_info->network_sustained_fault, "%u"); - __HAL_AUX_ENTRY("network_sustained_ok", - err_info->network_sustained_ok, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo0_overwrite", - err_info->kdfcctl_fifo0_overwrite, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo0_poison", - err_info->kdfcctl_fifo0_poison, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo0_dma_error", - err_info->kdfcctl_fifo0_dma_error, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo1_overwrite", - err_info->kdfcctl_fifo1_overwrite, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo1_poison", - err_info->kdfcctl_fifo1_poison, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo1_dma_error", - err_info->kdfcctl_fifo1_dma_error, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo2_overwrite", - err_info->kdfcctl_fifo2_overwrite, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo2_poison", - err_info->kdfcctl_fifo2_poison, "%u"); - __HAL_AUX_ENTRY("kdfcctl_fifo2_dma_error", - err_info->kdfcctl_fifo2_dma_error, "%u"); - __HAL_AUX_ENTRY("dblgen_fifo0_overflow", - err_info->dblgen_fifo0_overflow, "%u"); - __HAL_AUX_ENTRY("dblgen_fifo1_overflow", - err_info->dblgen_fifo1_overflow, "%u"); - __HAL_AUX_ENTRY("dblgen_fifo2_overflow", - err_info->dblgen_fifo2_overflow, "%u"); - __HAL_AUX_ENTRY("statsb_pif_chain_error", - err_info->statsb_pif_chain_error, "%u"); - __HAL_AUX_ENTRY("statsb_drop_timeout", - err_info->statsb_drop_timeout, "%u"); - __HAL_AUX_ENTRY("target_illegal_access", - err_info->target_illegal_access, "%u"); - __HAL_AUX_ENTRY("ini_serr_det", - err_info->ini_serr_det, "%u"); - __HAL_AUX_ENTRY("pci_config_status_err", - err_info->pci_config_status_err, "%u"); - __HAL_AUX_ENTRY("pci_config_uncor_err", - err_info->pci_config_uncor_err, "%u"); - __HAL_AUX_ENTRY("pci_config_cor_err", - err_info->pci_config_cor_err, "%u"); - __HAL_AUX_ENTRY("mrpcim_to_vpath_alarms", - err_info->mrpcim_to_vpath_alarms, "%u"); - __HAL_AUX_ENTRY("srpcim_to_vpath_alarms", - err_info->srpcim_to_vpath_alarms, "%u"); - __HAL_AUX_ENTRY("srpcim_msg_to_vpath", - err_info->srpcim_msg_to_vpath, "%u"); - __HAL_AUX_ENTRY("prc_ring_bumps", - err_info->prc_ring_bumps, "%u"); - __HAL_AUX_ENTRY("prc_rxdcm_sc_err", - err_info->prc_rxdcm_sc_err, "%u"); - __HAL_AUX_ENTRY("prc_rxdcm_sc_abort", - err_info->prc_rxdcm_sc_abort, "%u"); - __HAL_AUX_ENTRY("prc_quanta_size_err", - err_info->prc_quanta_size_err, "%u"); - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_stats_vpath_sw_read - Read vpath soft statistics. - * @vpath_handle: HAL Vpath handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device hardware statistics. This is a subset of stats counters - * from vxge_hal_vpath_stats_sw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_vpath_sw_read( - vxge_hal_vpath_h vpath_handle, - int bufsize, - char *retbuf, - int *retsize) -{ - int rsize = 0; - vxge_hal_status_e status; - vxge_hal_vpath_stats_sw_info_t *sw_info; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(vpath_handle != NULL); - - sw_info = vp->vpath->sw_stats; - - __HAL_AUX_ENTRY("soft_reset_cnt", sw_info->soft_reset_cnt, "%u"); - - - status = vxge_hal_aux_stats_vpath_sw_err_read(vpath_handle, - leftsize, ptr, &rsize); - if (status != VXGE_HAL_OK) - return (status); - - ptr += rsize; - leftsize -= rsize; - - status = vxge_hal_aux_stats_vpath_sw_ring_read(vpath_handle, - leftsize, ptr, &rsize); - if (status != VXGE_HAL_OK) - return (status); - - ptr += rsize; - leftsize -= rsize; - - status = vxge_hal_aux_stats_vpath_sw_fifo_read(vpath_handle, - leftsize, ptr, &rsize); - if (status != VXGE_HAL_OK) - return (status); - - - leftsize -= rsize; - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_stats_device_sw_read - Read device software statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device software statistics. This is a subset of stats counters - * from vxge_hal_device_stats_sw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_device_sw_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize) -{ - u32 i; - int rsize = 0; - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(devh); - - __HAL_AUX_ENTRY("not_traffic_intr_cnt", - hldev->header.not_traffic_intr_cnt, "%u"); - __HAL_AUX_ENTRY("traffic_intr_cnt", - hldev->header.traffic_intr_cnt, "%u"); - __HAL_AUX_ENTRY("total_intr_cnt", - hldev->header.not_traffic_intr_cnt + - hldev->header.traffic_intr_cnt, "%u"); - __HAL_AUX_ENTRY("soft_reset_cnt", - hldev->stats.sw_dev_info_stats.soft_reset_cnt, "%u"); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - __HAL_AUX_ENTRY("S/W stats for vpath id", i, "%u"); - - status = vxge_hal_aux_stats_vpath_sw_read( - VXGE_HAL_VIRTUAL_PATH_HANDLE(&hldev->virtual_paths[i]), - leftsize, ptr, &rsize); - - if (status != VXGE_HAL_OK) - return (status); - - ptr += rsize; - leftsize -= rsize; - } - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_stats_device_sw_err_read - Read device software error statistics - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device software error statistics. This is a subset of stats counters - * from vxge_hal_device_stats_sw_info_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_device_sw_err_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize) -{ - vxge_hal_device_stats_sw_err_t *sw_err; - __hal_device_t *hldev = (__hal_device_t *) devh; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(devh); - - sw_err = &hldev->stats.sw_dev_err_stats; - - __HAL_AUX_ENTRY("mrpcim_alarms", sw_err->mrpcim_alarms, "%u"); - __HAL_AUX_ENTRY("srpcim_alarms", sw_err->srpcim_alarms, "%u"); - __HAL_AUX_ENTRY("vpath_alarms", sw_err->vpath_alarms, "%u"); - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_stats_device_read - Read device statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device statistics. This is a subset of stats counters - * from vxge_hal_device_stats_t {}. - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_device_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize) -{ - char *ptr = retbuf; - int rsize = 0, leftsize = bufsize; - vxge_hal_status_e status; - - vxge_assert(devh); - - status = vxge_hal_aux_stats_device_hw_read(devh, - leftsize, ptr, &rsize); - if (status != VXGE_HAL_OK) - return (status); - - ptr += rsize; - leftsize -= rsize; - - status = vxge_hal_aux_stats_device_sw_err_read(devh, - leftsize, ptr, &rsize); - if (status != VXGE_HAL_OK) - return (status); - - ptr += rsize; - leftsize -= rsize; - - status = vxge_hal_aux_stats_device_sw_read(devh, - leftsize, ptr, &rsize); - if (status != VXGE_HAL_OK) - return (status); - - leftsize -= rsize; - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_stats_xpak_read - Read device xpak statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device xpak statistics. This is valid for function 0 device only - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_xpak_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize) -{ - u32 i; - vxge_hal_mrpcim_xpak_stats_t *xpak_stats; - __hal_device_t *hldev = (__hal_device_t *) devh; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - for (i = 0; i < VXGE_HAL_MAC_MAX_WIRE_PORTS; i++) { - - xpak_stats = &hldev->mrpcim->xpak_stats[i]; - - __HAL_AUX_ENTRY("Wire Port Id : ", i, "%u"); - __HAL_AUX_ENTRY("alarm_transceiver_temp_high", - xpak_stats->excess_bias_current, "%u"); - __HAL_AUX_ENTRY("alarm_transceiver_temp_high", - xpak_stats->excess_laser_output, "%u"); - __HAL_AUX_ENTRY("alarm_transceiver_temp_high", - xpak_stats->excess_temp, "%u"); - __HAL_AUX_ENTRY("alarm_transceiver_temp_high", - xpak_stats->alarm_transceiver_temp_high, "%u"); - __HAL_AUX_ENTRY("alarm_transceiver_temp_low", - xpak_stats->alarm_transceiver_temp_low, "%u"); - __HAL_AUX_ENTRY("alarm_laser_bias_current_high", - xpak_stats->alarm_laser_bias_current_high, "%u"); - __HAL_AUX_ENTRY("alarm_laser_bias_current_low", - xpak_stats->alarm_laser_bias_current_low, "%u"); - __HAL_AUX_ENTRY("alarm_laser_output_power_high", - xpak_stats->alarm_laser_output_power_high, "%u"); - __HAL_AUX_ENTRY("alarm_laser_output_power_low", - xpak_stats->alarm_laser_output_power_low, "%u"); - __HAL_AUX_ENTRY("warn_transceiver_temp_high", - xpak_stats->warn_transceiver_temp_high, "%u"); - __HAL_AUX_ENTRY("warn_transceiver_temp_low", - xpak_stats->warn_transceiver_temp_low, "%u"); - __HAL_AUX_ENTRY("warn_laser_bias_current_high", - xpak_stats->warn_laser_bias_current_high, "%u"); - __HAL_AUX_ENTRY("warn_laser_bias_current_low", - xpak_stats->warn_laser_bias_current_low, "%u"); - __HAL_AUX_ENTRY("warn_laser_output_power_high", - xpak_stats->warn_laser_output_power_high, "%u"); - __HAL_AUX_ENTRY("warn_laser_output_power_low", - xpak_stats->warn_laser_output_power_low, "%u"); - - } - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} -/* - * vxge_hal_aux_stats_mrpcim_read - Read device mrpcim statistics. - * @devh: HAL device handle. - * @bufsize: Buffer size. - * @retbuf: Buffer pointer. - * @retsize: Size of the result. Cannot be greater than @bufsize. - * - * Read device mrpcim statistics. This is valid for function 0 device only - * - */ -vxge_hal_status_e -vxge_hal_aux_stats_mrpcim_read(vxge_hal_device_h devh, - int bufsize, char *retbuf, int *retsize) -{ - vxge_hal_status_e status; - vxge_hal_mrpcim_stats_hw_info_t mrpcim_info; - __hal_device_t *hldev = (__hal_device_t *) devh; - - __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf); - - vxge_assert(devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - status = vxge_hal_mrpcim_stats_enable(devh); - if (status != VXGE_HAL_OK) - return (status); - - status = vxge_hal_mrpcim_stats_get(devh, &mrpcim_info); - if (status != VXGE_HAL_OK) - return (status); - - __HAL_AUX_ENTRY("pic_ini_rd_drop", mrpcim_info.pic_ini_rd_drop, "%u"); - __HAL_AUX_ENTRY("pic_ini_wr_drop", mrpcim_info.pic_ini_wr_drop, "%u"); - - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane0", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[0]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane1", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[1]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane2", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[2]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane3", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[3]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane4", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[4]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane5", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[5]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane6", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[6]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane7", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[7]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane8", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[8]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane9", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[9]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane10", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[10]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane11", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[11]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane12", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[12]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane13", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[13]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane14", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[14]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane15", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[15]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_ph_crdt_depleted_vplane16", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[16]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane0", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[0]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane1", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[1]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane2", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[2]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane3", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[3]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane4", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[4]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane5", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[5]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane6", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[6]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane7", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[7]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane8", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[8]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane9", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[9]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane10", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[10]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane11", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[11]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane12", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[12]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane13", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[13]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane14", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[14]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane15", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[15]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_wrcrdtarb_pd_crdt_depleted_vplane16", - mrpcim_info.pic_wrcrdtarb_pd_crdt_depleted_vplane[16]. - pic_wrcrdtarb_pd_crdt_depleted, "%u"); - - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane0", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[0]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane1", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[1]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane2", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[2]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane3", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[3]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane4", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[4]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane5", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[5]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane6", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[6]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane7", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[7]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane8", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[8]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane9", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[9]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane10", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[10]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane11", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[11]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane12", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[12]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane13", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[13]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane14", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[14]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane15", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[15]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - __HAL_AUX_ENTRY("pic_rdcrdtarb_nph_crdt_depleted_vplane16", - mrpcim_info.pic_rdcrdtarb_nph_crdt_depleted_vplane[16]. - pic_rdcrdtarb_nph_crdt_depleted, "%u"); - - __HAL_AUX_ENTRY("pic_ini_rd_vpin_drop", - mrpcim_info.pic_ini_rd_vpin_drop, "%u"); - __HAL_AUX_ENTRY("pic_ini_wr_vpin_drop", - mrpcim_info.pic_ini_wr_vpin_drop, "%u"); - __HAL_AUX_ENTRY("pic_genstats_count0", - mrpcim_info.pic_genstats_count0, "%u"); - __HAL_AUX_ENTRY("pic_genstats_count1", - mrpcim_info.pic_genstats_count1, "%u"); - __HAL_AUX_ENTRY("pic_genstats_count2", - mrpcim_info.pic_genstats_count2, "%u"); - __HAL_AUX_ENTRY("pic_genstats_count3", - mrpcim_info.pic_genstats_count3, "%u"); - __HAL_AUX_ENTRY("pic_genstats_count4", - mrpcim_info.pic_genstats_count4, "%u"); - __HAL_AUX_ENTRY("pic_genstats_count5", - mrpcim_info.pic_genstats_count5, "%u"); - __HAL_AUX_ENTRY("pci_rstdrop_cpl", - mrpcim_info.pci_rstdrop_cpl, "%u"); - __HAL_AUX_ENTRY("pci_rstdrop_msg", - mrpcim_info.pci_rstdrop_msg, "%u"); - __HAL_AUX_ENTRY("pci_rstdrop_client1", - mrpcim_info.pci_rstdrop_client1, "%u"); - __HAL_AUX_ENTRY("pci_rstdrop_client0", - mrpcim_info.pci_rstdrop_client0, "%u"); - __HAL_AUX_ENTRY("pci_rstdrop_client2", - mrpcim_info.pci_rstdrop_client2, "%u"); - - __HAL_AUX_ENTRY("pci_depl_cplh_vplane0", - mrpcim_info.pci_depl_h_vplane[0].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane0", - mrpcim_info.pci_depl_h_vplane[0].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane0", - mrpcim_info.pci_depl_h_vplane[0].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane1", - mrpcim_info.pci_depl_h_vplane[1].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane1", - mrpcim_info.pci_depl_h_vplane[1].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane1", - mrpcim_info.pci_depl_h_vplane[1].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane2", - mrpcim_info.pci_depl_h_vplane[2].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane2", - mrpcim_info.pci_depl_h_vplane[2].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane2", - mrpcim_info.pci_depl_h_vplane[2].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane3", - mrpcim_info.pci_depl_h_vplane[3].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane3", - mrpcim_info.pci_depl_h_vplane[3].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane3", - mrpcim_info.pci_depl_h_vplane[3].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane4", - mrpcim_info.pci_depl_h_vplane[4].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane4", - mrpcim_info.pci_depl_h_vplane[4].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane4", - mrpcim_info.pci_depl_h_vplane[4].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane5", - mrpcim_info.pci_depl_h_vplane[5].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane5", - mrpcim_info.pci_depl_h_vplane[5].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane5", - mrpcim_info.pci_depl_h_vplane[5].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane6", - mrpcim_info.pci_depl_h_vplane[6].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane6", - mrpcim_info.pci_depl_h_vplane[6].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane6", - mrpcim_info.pci_depl_h_vplane[6].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane7", - mrpcim_info.pci_depl_h_vplane[7].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane7", - mrpcim_info.pci_depl_h_vplane[7].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane7", - mrpcim_info.pci_depl_h_vplane[7].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane8", - mrpcim_info.pci_depl_h_vplane[8].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane8", - mrpcim_info.pci_depl_h_vplane[8].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane8", - mrpcim_info.pci_depl_h_vplane[8].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane9", - mrpcim_info.pci_depl_h_vplane[9].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane9", - mrpcim_info.pci_depl_h_vplane[9].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane9", - mrpcim_info.pci_depl_h_vplane[9].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane10", - mrpcim_info.pci_depl_h_vplane[10].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane10", - mrpcim_info.pci_depl_h_vplane[10].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane10", - mrpcim_info.pci_depl_h_vplane[10].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane11", - mrpcim_info.pci_depl_h_vplane[11].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane11", - mrpcim_info.pci_depl_h_vplane[11].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane11", - mrpcim_info.pci_depl_h_vplane[11].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane12", - mrpcim_info.pci_depl_h_vplane[12].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane12", - mrpcim_info.pci_depl_h_vplane[12].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane12", - mrpcim_info.pci_depl_h_vplane[12].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane13", - mrpcim_info.pci_depl_h_vplane[13].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane13", - mrpcim_info.pci_depl_h_vplane[13].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane13", - mrpcim_info.pci_depl_h_vplane[13].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane14", - mrpcim_info.pci_depl_h_vplane[14].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane14", - mrpcim_info.pci_depl_h_vplane[14].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane14", - mrpcim_info.pci_depl_h_vplane[14].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane15", - mrpcim_info.pci_depl_h_vplane[15].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane15", - mrpcim_info.pci_depl_h_vplane[15].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane15", - mrpcim_info.pci_depl_h_vplane[15].pci_depl_ph, "%u"); - __HAL_AUX_ENTRY("pci_depl_cplh_vplane16", - mrpcim_info.pci_depl_h_vplane[16].pci_depl_cplh, "%u"); - __HAL_AUX_ENTRY("pci_depl_nph_vplane16", - mrpcim_info.pci_depl_h_vplane[16].pci_depl_nph, "%u"); - __HAL_AUX_ENTRY("pci_depl_ph_vplane16", - mrpcim_info.pci_depl_h_vplane[16].pci_depl_ph, "%u"); - - __HAL_AUX_ENTRY("pci_depl_cpld_vplane0", - mrpcim_info.pci_depl_d_vplane[0].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane0", - mrpcim_info.pci_depl_d_vplane[0].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane0", - mrpcim_info.pci_depl_d_vplane[0].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane1", - mrpcim_info.pci_depl_d_vplane[1].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane1", - mrpcim_info.pci_depl_d_vplane[1].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane1", - mrpcim_info.pci_depl_d_vplane[1].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane2", - mrpcim_info.pci_depl_d_vplane[2].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane2", - mrpcim_info.pci_depl_d_vplane[2].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane2", - mrpcim_info.pci_depl_d_vplane[2].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane3", - mrpcim_info.pci_depl_d_vplane[3].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane3", - mrpcim_info.pci_depl_d_vplane[3].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane3", - mrpcim_info.pci_depl_d_vplane[3].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane4", - mrpcim_info.pci_depl_d_vplane[4].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane4", - mrpcim_info.pci_depl_d_vplane[4].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane4", - mrpcim_info.pci_depl_d_vplane[4].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane5", - mrpcim_info.pci_depl_d_vplane[5].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane5", - mrpcim_info.pci_depl_d_vplane[5].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane5", - mrpcim_info.pci_depl_d_vplane[5].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane6", - mrpcim_info.pci_depl_d_vplane[6].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane6", - mrpcim_info.pci_depl_d_vplane[6].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane6", - mrpcim_info.pci_depl_d_vplane[6].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane7", - mrpcim_info.pci_depl_d_vplane[7].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane7", - mrpcim_info.pci_depl_d_vplane[7].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane7", - mrpcim_info.pci_depl_d_vplane[7].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane8", - mrpcim_info.pci_depl_d_vplane[8].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane8", - mrpcim_info.pci_depl_d_vplane[8].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane8", - mrpcim_info.pci_depl_d_vplane[8].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane9", - mrpcim_info.pci_depl_d_vplane[9].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane9", - mrpcim_info.pci_depl_d_vplane[9].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane9", - mrpcim_info.pci_depl_d_vplane[9].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane10", - mrpcim_info.pci_depl_d_vplane[10].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane10", - mrpcim_info.pci_depl_d_vplane[10].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane10", - mrpcim_info.pci_depl_d_vplane[10].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane11", - mrpcim_info.pci_depl_d_vplane[11].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane11", - mrpcim_info.pci_depl_d_vplane[11].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane11", - mrpcim_info.pci_depl_d_vplane[11].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane12", - mrpcim_info.pci_depl_d_vplane[12].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane12", - mrpcim_info.pci_depl_d_vplane[12].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane12", - mrpcim_info.pci_depl_d_vplane[12].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane13", - mrpcim_info.pci_depl_d_vplane[13].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane13", - mrpcim_info.pci_depl_d_vplane[13].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane13", - mrpcim_info.pci_depl_d_vplane[13].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane14", - mrpcim_info.pci_depl_d_vplane[14].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane14", - mrpcim_info.pci_depl_d_vplane[14].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane14", - mrpcim_info.pci_depl_d_vplane[14].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane15", - mrpcim_info.pci_depl_d_vplane[15].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane15", - mrpcim_info.pci_depl_d_vplane[15].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane15", - mrpcim_info.pci_depl_d_vplane[15].pci_depl_pd, "%u"); - __HAL_AUX_ENTRY("pci_depl_cpld_vplane16", - mrpcim_info.pci_depl_d_vplane[16].pci_depl_cpld, "%u"); - __HAL_AUX_ENTRY("pci_depl_npd_vplane16", - mrpcim_info.pci_depl_d_vplane[16].pci_depl_npd, "%u"); - __HAL_AUX_ENTRY("pci_depl_pd_vplane16", - mrpcim_info.pci_depl_d_vplane[16].pci_depl_pd, "%u"); - - __HAL_AUX_ENTRY("tx_ttl_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_ttl_frms, "%llu"); - __HAL_AUX_ENTRY("tx_ttl_octets_PORT0", - mrpcim_info.xgmac_port[0].tx_ttl_octets, "%llu"); - __HAL_AUX_ENTRY("tx_data_octets_PORT0", - mrpcim_info.xgmac_port[0].tx_data_octets, "%llu"); - __HAL_AUX_ENTRY("tx_mcast_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_bcast_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_ucast_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_ucast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_tagged_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_tagged_frms, "%llu"); - __HAL_AUX_ENTRY("tx_vld_ip_PORT0", - mrpcim_info.xgmac_port[0].tx_vld_ip, "%llu"); - __HAL_AUX_ENTRY("tx_vld_ip_octets_PORT0", - mrpcim_info.xgmac_port[0].tx_vld_ip_octets, "%llu"); - __HAL_AUX_ENTRY("tx_icmp_PORT0", - mrpcim_info.xgmac_port[0].tx_icmp, "%llu"); - __HAL_AUX_ENTRY("tx_tcp_PORT0", - mrpcim_info.xgmac_port[0].tx_tcp, "%llu"); - __HAL_AUX_ENTRY("tx_rst_tcp_PORT0", - mrpcim_info.xgmac_port[0].tx_rst_tcp, "%llu"); - __HAL_AUX_ENTRY("tx_udp_PORT0", - mrpcim_info.xgmac_port[0].tx_udp, "%llu"); - __HAL_AUX_ENTRY("tx_parse_error_PORT0", - mrpcim_info.xgmac_port[0].tx_parse_error, "%u"); - __HAL_AUX_ENTRY("tx_unknown_protocol_PORT0", - mrpcim_info.xgmac_port[0].tx_unknown_protocol, "%u"); - __HAL_AUX_ENTRY("tx_pause_ctrl_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_pause_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("tx_marker_pdu_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_marker_pdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_lacpdu_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_lacpdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_drop_ip_PORT0", - mrpcim_info.xgmac_port[0].tx_drop_ip, "%u"); - __HAL_AUX_ENTRY("tx_marker_resp_pdu_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_marker_resp_pdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_char2_match_PORT0", - mrpcim_info.xgmac_port[0].tx_xgmii_char2_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_char1_match_PORT0", - mrpcim_info.xgmac_port[0].tx_xgmii_char1_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_column2_match_PORT0", - mrpcim_info.xgmac_port[0].tx_xgmii_column2_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_column1_match_PORT0", - mrpcim_info.xgmac_port[0].tx_xgmii_column1_match, "%u"); - __HAL_AUX_ENTRY("tx_any_err_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_any_err_frms, "%u"); - __HAL_AUX_ENTRY("tx_drop_frms_PORT0", - mrpcim_info.xgmac_port[0].tx_drop_frms, "%u"); - __HAL_AUX_ENTRY("rx_ttl_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_vld_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_vld_frms, "%llu"); - __HAL_AUX_ENTRY("rx_offload_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_offload_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_octets_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_octets, "%llu"); - __HAL_AUX_ENTRY("rx_data_octets_PORT0", - mrpcim_info.xgmac_port[0].rx_data_octets, "%llu"); - __HAL_AUX_ENTRY("rx_offload_octets_PORT0", - mrpcim_info.xgmac_port[0].rx_offload_octets, "%llu"); - __HAL_AUX_ENTRY("rx_vld_mcast_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_vld_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_vld_bcast_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_vld_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_ucast_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_accepted_ucast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_nucast_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_accepted_nucast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_tagged_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_tagged_frms, "%llu"); - __HAL_AUX_ENTRY("rx_long_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_long_frms, "%llu"); - __HAL_AUX_ENTRY("rx_usized_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_usized_frms, "%llu"); - __HAL_AUX_ENTRY("rx_osized_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_osized_frms, "%llu"); - __HAL_AUX_ENTRY("rx_frag_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_frag_frms, "%llu"); - __HAL_AUX_ENTRY("rx_jabber_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_jabber_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_64_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_64_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_65_127_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_65_127_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_128_255_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_128_255_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_256_511_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_256_511_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_512_1023_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_512_1023_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_1024_1518_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_1024_1518_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_1519_4095_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_1519_4095_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_4096_8191_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_4096_8191_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_8192_max_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_8192_max_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_gt_max_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_ttl_gt_max_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ip_PORT0", - mrpcim_info.xgmac_port[0].rx_ip, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_ip_PORT0", - mrpcim_info.xgmac_port[0].rx_accepted_ip, "%llu"); - __HAL_AUX_ENTRY("rx_ip_octets_PORT0", - mrpcim_info.xgmac_port[0].rx_ip_octets, "%llu"); - __HAL_AUX_ENTRY("rx_err_ip_PORT0", - mrpcim_info.xgmac_port[0].rx_err_ip, "%llu"); - __HAL_AUX_ENTRY("rx_icmp_PORT0", - mrpcim_info.xgmac_port[0].rx_icmp, "%llu"); - __HAL_AUX_ENTRY("rx_tcp_PORT0", - mrpcim_info.xgmac_port[0].rx_tcp, "%llu"); - __HAL_AUX_ENTRY("rx_udp_PORT0", - mrpcim_info.xgmac_port[0].rx_udp, "%llu"); - __HAL_AUX_ENTRY("rx_err_tcp_PORT0", - mrpcim_info.xgmac_port[0].rx_err_tcp, "%llu"); - __HAL_AUX_ENTRY("rx_pause_cnt_PORT0", - mrpcim_info.xgmac_port[0].rx_pause_count, "%llu"); - __HAL_AUX_ENTRY("rx_pause_ctrl_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_pause_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_unsup_ctrl_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_unsup_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_fcs_err_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_fcs_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_in_rng_len_err_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_in_rng_len_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_out_rng_len_err_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_out_rng_len_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_drop_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_drop_frms, "%llu"); - __HAL_AUX_ENTRY("rx_discarded_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_discarded_frms, "%llu"); - __HAL_AUX_ENTRY("rx_drop_ip_PORT0", - mrpcim_info.xgmac_port[0].rx_drop_ip, "%llu"); - __HAL_AUX_ENTRY("rx_drp_udp_PORT0", - mrpcim_info.xgmac_port[0].rx_drop_udp, "%llu"); - __HAL_AUX_ENTRY("rx_marker_pdu_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_marker_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_lacpdu_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_lacpdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_unknown_pdu_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_unknown_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_marker_resp_pdu_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_marker_resp_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_fcs_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_fcs_discard, "%u"); - __HAL_AUX_ENTRY("rx_illegal_pdu_frms_PORT0", - mrpcim_info.xgmac_port[0].rx_illegal_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_switch_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_switch_discard, "%u"); - __HAL_AUX_ENTRY("rx_len_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_len_discard, "%u"); - __HAL_AUX_ENTRY("rx_rpa_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_rpa_discard, "%u"); - __HAL_AUX_ENTRY("rx_l2_mgmt_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_l2_mgmt_discard, "%u"); - __HAL_AUX_ENTRY("rx_rts_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_rts_discard, "%u"); - __HAL_AUX_ENTRY("rx_trash_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_trash_discard, "%u"); - __HAL_AUX_ENTRY("rx_buff_full_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_buff_full_discard, "%u"); - __HAL_AUX_ENTRY("rx_red_discard_PORT0", - mrpcim_info.xgmac_port[0].rx_red_discard, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_ctrl_err_cnt_PORT0", - mrpcim_info.xgmac_port[0].rx_xgmii_ctrl_err_cnt, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_data_err_cnt_PORT0", - mrpcim_info.xgmac_port[0].rx_xgmii_data_err_cnt, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_char1_match_PORT0", - mrpcim_info.xgmac_port[0].rx_xgmii_char1_match, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_err_sym_PORT0", - mrpcim_info.xgmac_port[0].rx_xgmii_err_sym, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_column1_match_PORT0", - mrpcim_info.xgmac_port[0].rx_xgmii_column1_match, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_char2_match_PORT0", - mrpcim_info.xgmac_port[0].rx_xgmii_char2_match, "%u"); - __HAL_AUX_ENTRY("rx_local_fault_PORT0", - mrpcim_info.xgmac_port[0].rx_local_fault, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_column2_match_PORT0", - mrpcim_info.xgmac_port[0].rx_xgmii_column2_match, "%u"); - __HAL_AUX_ENTRY("rx_jettison_PORT0", - mrpcim_info.xgmac_port[0].rx_jettison, "%u"); - __HAL_AUX_ENTRY("rx_remote_fault_PORT0", - mrpcim_info.xgmac_port[0].rx_remote_fault, "%u"); - - __HAL_AUX_ENTRY("tx_ttl_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_ttl_frms, "%llu"); - __HAL_AUX_ENTRY("tx_ttl_octets_PORT1", - mrpcim_info.xgmac_port[1].tx_ttl_octets, "%llu"); - __HAL_AUX_ENTRY("tx_data_octets_PORT1", - mrpcim_info.xgmac_port[1].tx_data_octets, "%llu"); - __HAL_AUX_ENTRY("tx_mcast_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_bcast_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_ucast_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_ucast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_tagged_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_tagged_frms, "%llu"); - __HAL_AUX_ENTRY("tx_vld_ip_PORT1", - mrpcim_info.xgmac_port[1].tx_vld_ip, "%llu"); - __HAL_AUX_ENTRY("tx_vld_ip_octets_PORT1", - mrpcim_info.xgmac_port[1].tx_vld_ip_octets, "%llu"); - __HAL_AUX_ENTRY("tx_icmp_PORT1", - mrpcim_info.xgmac_port[1].tx_icmp, "%llu"); - __HAL_AUX_ENTRY("tx_tcp_PORT1", - mrpcim_info.xgmac_port[1].tx_tcp, "%llu"); - __HAL_AUX_ENTRY("tx_rst_tcp_PORT1", - mrpcim_info.xgmac_port[1].tx_rst_tcp, "%llu"); - __HAL_AUX_ENTRY("tx_udp_PORT1", - mrpcim_info.xgmac_port[1].tx_udp, "%llu"); - __HAL_AUX_ENTRY("tx_parse_error_PORT1", - mrpcim_info.xgmac_port[1].tx_parse_error, "%u"); - __HAL_AUX_ENTRY("tx_unknown_protocol_PORT1", - mrpcim_info.xgmac_port[1].tx_unknown_protocol, "%u"); - __HAL_AUX_ENTRY("tx_pause_ctrl_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_pause_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("tx_marker_pdu_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_marker_pdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_lacpdu_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_lacpdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_drop_ip_PORT1", - mrpcim_info.xgmac_port[1].tx_drop_ip, "%u"); - __HAL_AUX_ENTRY("tx_marker_resp_pdu_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_marker_resp_pdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_char2_match_PORT1", - mrpcim_info.xgmac_port[1].tx_xgmii_char2_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_char1_match_PORT1", - mrpcim_info.xgmac_port[1].tx_xgmii_char1_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_column2_match_PORT1", - mrpcim_info.xgmac_port[1].tx_xgmii_column2_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_column1_match_PORT1", - mrpcim_info.xgmac_port[1].tx_xgmii_column1_match, "%u"); - __HAL_AUX_ENTRY("tx_any_err_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_any_err_frms, "%u"); - __HAL_AUX_ENTRY("tx_drop_frms_PORT1", - mrpcim_info.xgmac_port[1].tx_drop_frms, "%u"); - __HAL_AUX_ENTRY("rx_ttl_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_vld_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_vld_frms, "%llu"); - __HAL_AUX_ENTRY("rx_offload_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_offload_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_octets_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_octets, "%llu"); - __HAL_AUX_ENTRY("rx_data_octets_PORT1", - mrpcim_info.xgmac_port[1].rx_data_octets, "%llu"); - __HAL_AUX_ENTRY("rx_offload_octets_PORT1", - mrpcim_info.xgmac_port[1].rx_offload_octets, "%llu"); - __HAL_AUX_ENTRY("rx_vld_mcast_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_vld_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_vld_bcast_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_vld_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_ucast_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_accepted_ucast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_nucast_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_accepted_nucast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_tagged_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_tagged_frms, "%llu"); - __HAL_AUX_ENTRY("rx_long_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_long_frms, "%llu"); - __HAL_AUX_ENTRY("rx_usized_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_usized_frms, "%llu"); - __HAL_AUX_ENTRY("rx_osized_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_osized_frms, "%llu"); - __HAL_AUX_ENTRY("rx_frag_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_frag_frms, "%llu"); - __HAL_AUX_ENTRY("rx_jabber_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_jabber_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_64_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_64_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_65_127_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_65_127_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_128_255_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_128_255_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_256_511_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_256_511_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_512_1023_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_512_1023_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_1024_1518_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_1024_1518_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_1519_4095_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_1519_4095_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_4096_8191_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_4096_8191_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_8192_max_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_8192_max_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_gt_max_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_ttl_gt_max_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ip_PORT1", - mrpcim_info.xgmac_port[1].rx_ip, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_ip_PORT1", - mrpcim_info.xgmac_port[1].rx_accepted_ip, "%llu"); - __HAL_AUX_ENTRY("rx_ip_octets_PORT1", - mrpcim_info.xgmac_port[1].rx_ip_octets, "%llu"); - __HAL_AUX_ENTRY("rx_err_ip_PORT1", - mrpcim_info.xgmac_port[1].rx_err_ip, "%llu"); - __HAL_AUX_ENTRY("rx_icmp_PORT1", - mrpcim_info.xgmac_port[1].rx_icmp, "%llu"); - __HAL_AUX_ENTRY("rx_tcp_PORT1", - mrpcim_info.xgmac_port[1].rx_tcp, "%llu"); - __HAL_AUX_ENTRY("rx_udp_PORT1", - mrpcim_info.xgmac_port[1].rx_udp, "%llu"); - __HAL_AUX_ENTRY("rx_err_tcp_PORT1", - mrpcim_info.xgmac_port[1].rx_err_tcp, "%llu"); - __HAL_AUX_ENTRY("rx_pause_count_PORT1", - mrpcim_info.xgmac_port[1].rx_pause_count, "%llu"); - __HAL_AUX_ENTRY("rx_pause_ctrl_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_pause_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_unsup_ctrl_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_unsup_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_fcs_err_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_fcs_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_in_rng_len_err_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_in_rng_len_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_out_rng_len_err_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_out_rng_len_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_drop_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_drop_frms, "%llu"); - __HAL_AUX_ENTRY("rx_discarded_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_discarded_frms, "%llu"); - __HAL_AUX_ENTRY("rx_drop_ip_PORT1", - mrpcim_info.xgmac_port[1].rx_drop_ip, "%llu"); - __HAL_AUX_ENTRY("rx_drop_udp_PORT1", - mrpcim_info.xgmac_port[1].rx_drop_udp, "%llu"); - __HAL_AUX_ENTRY("rx_marker_pdu_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_marker_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_lacpdu_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_lacpdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_unknown_pdu_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_unknown_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_marker_resp_pdu_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_marker_resp_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_fcs_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_fcs_discard, "%u"); - __HAL_AUX_ENTRY("rx_illegal_pdu_frms_PORT1", - mrpcim_info.xgmac_port[1].rx_illegal_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_switch_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_switch_discard, "%u"); - __HAL_AUX_ENTRY("rx_len_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_len_discard, "%u"); - __HAL_AUX_ENTRY("rx_rpa_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_rpa_discard, "%u"); - __HAL_AUX_ENTRY("rx_l2_mgmt_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_l2_mgmt_discard, "%u"); - __HAL_AUX_ENTRY("rx_rts_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_rts_discard, "%u"); - __HAL_AUX_ENTRY("rx_trash_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_trash_discard, "%u"); - __HAL_AUX_ENTRY("rx_buff_full_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_buff_full_discard, "%u"); - __HAL_AUX_ENTRY("rx_red_discard_PORT1", - mrpcim_info.xgmac_port[1].rx_red_discard, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_ctrl_err_cnt_PORT1", - mrpcim_info.xgmac_port[1].rx_xgmii_ctrl_err_cnt, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_data_err_cnt_PORT1", - mrpcim_info.xgmac_port[1].rx_xgmii_data_err_cnt, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_char1_match_PORT1", - mrpcim_info.xgmac_port[1].rx_xgmii_char1_match, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_err_sym_PORT1", - mrpcim_info.xgmac_port[1].rx_xgmii_err_sym, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_column1_match_PORT1", - mrpcim_info.xgmac_port[1].rx_xgmii_column1_match, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_char2_match_PORT1", - mrpcim_info.xgmac_port[1].rx_xgmii_char2_match, "%u"); - __HAL_AUX_ENTRY("rx_local_fault_PORT1", - mrpcim_info.xgmac_port[1].rx_local_fault, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_column2_match_PORT1", - mrpcim_info.xgmac_port[1].rx_xgmii_column2_match, "%u"); - __HAL_AUX_ENTRY("rx_jettison_PORT1", - mrpcim_info.xgmac_port[1].rx_jettison, "%u"); - __HAL_AUX_ENTRY("rx_remote_fault_PORT1", - mrpcim_info.xgmac_port[1].rx_remote_fault, "%u"); - - __HAL_AUX_ENTRY("tx_ttl_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_ttl_frms, "%llu"); - __HAL_AUX_ENTRY("tx_ttl_octets_PORT2", - mrpcim_info.xgmac_port[2].tx_ttl_octets, "%llu"); - __HAL_AUX_ENTRY("tx_data_octets_PORT2", - mrpcim_info.xgmac_port[2].tx_data_octets, "%llu"); - __HAL_AUX_ENTRY("tx_mcast_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_bcast_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_ucast_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_ucast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_tagged_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_tagged_frms, "%llu"); - __HAL_AUX_ENTRY("tx_vld_ip_PORT2", - mrpcim_info.xgmac_port[2].tx_vld_ip, "%llu"); - __HAL_AUX_ENTRY("tx_vld_ip_octets_PORT2", - mrpcim_info.xgmac_port[2].tx_vld_ip_octets, "%llu"); - __HAL_AUX_ENTRY("tx_icmp_PORT2", - mrpcim_info.xgmac_port[2].tx_icmp, "%llu"); - __HAL_AUX_ENTRY("tx_tcp_PORT2", - mrpcim_info.xgmac_port[2].tx_tcp, "%llu"); - __HAL_AUX_ENTRY("tx_rst_tcp_PORT2", - mrpcim_info.xgmac_port[2].tx_rst_tcp, "%llu"); - __HAL_AUX_ENTRY("tx_udp_PORT2", - mrpcim_info.xgmac_port[2].tx_udp, "%llu"); - __HAL_AUX_ENTRY("tx_parse_error_PORT2", - mrpcim_info.xgmac_port[2].tx_parse_error, "%u"); - __HAL_AUX_ENTRY("tx_unknown_protocol_PORT2", - mrpcim_info.xgmac_port[2].tx_unknown_protocol, "%u"); - __HAL_AUX_ENTRY("tx_pause_ctrl_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_pause_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("tx_marker_pdu_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_marker_pdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_lacpdu_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_lacpdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_drop_ip_PORT2", - mrpcim_info.xgmac_port[2].tx_drop_ip, "%u"); - __HAL_AUX_ENTRY("tx_marker_resp_pdu_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_marker_resp_pdu_frms, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_char2_match_PORT2", - mrpcim_info.xgmac_port[2].tx_xgmii_char2_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_char1_match_PORT2", - mrpcim_info.xgmac_port[2].tx_xgmii_char1_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_column2_match_PORT2", - mrpcim_info.xgmac_port[2].tx_xgmii_column2_match, "%u"); - __HAL_AUX_ENTRY("tx_xgmii_column1_match_PORT2", - mrpcim_info.xgmac_port[2].tx_xgmii_column1_match, "%u"); - __HAL_AUX_ENTRY("tx_any_err_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_any_err_frms, "%u"); - __HAL_AUX_ENTRY("tx_drop_frms_PORT2", - mrpcim_info.xgmac_port[2].tx_drop_frms, "%u"); - __HAL_AUX_ENTRY("rx_ttl_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_vld_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_vld_frms, "%llu"); - __HAL_AUX_ENTRY("rx_offload_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_offload_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_octets_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_octets, "%llu"); - __HAL_AUX_ENTRY("rx_data_octets_PORT2", - mrpcim_info.xgmac_port[2].rx_data_octets, "%llu"); - __HAL_AUX_ENTRY("rx_offload_octets_PORT2", - mrpcim_info.xgmac_port[2].rx_offload_octets, "%llu"); - __HAL_AUX_ENTRY("rx_vld_mcast_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_vld_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_vld_bcast_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_vld_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_ucast_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_accepted_ucast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_nucast_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_accepted_nucast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_tagged_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_tagged_frms, "%llu"); - __HAL_AUX_ENTRY("rx_long_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_long_frms, "%llu"); - __HAL_AUX_ENTRY("rx_usized_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_usized_frms, "%llu"); - __HAL_AUX_ENTRY("rx_osized_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_osized_frms, "%llu"); - __HAL_AUX_ENTRY("rx_frag_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_frag_frms, "%llu"); - __HAL_AUX_ENTRY("rx_jabber_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_jabber_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_64_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_64_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_65_127_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_65_127_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_128_255_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_128_255_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_256_511_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_256_511_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_512_1023_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_512_1023_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_1024_1518_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_1024_1518_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_1519_4095_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_1519_4095_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_4096_8191_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_4096_8191_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_8192_max_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_8192_max_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ttl_gt_max_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_ttl_gt_max_frms, "%llu"); - __HAL_AUX_ENTRY("rx_ip_PORT2", - mrpcim_info.xgmac_port[2].rx_ip, "%llu"); - __HAL_AUX_ENTRY("rx_accepted_ip_PORT2", - mrpcim_info.xgmac_port[2].rx_accepted_ip, "%llu"); - __HAL_AUX_ENTRY("rx_ip_octets_PORT2", - mrpcim_info.xgmac_port[2].rx_ip_octets, "%llu"); - __HAL_AUX_ENTRY("rx_err_ip_PORT2", - mrpcim_info.xgmac_port[2].rx_err_ip, "%llu"); - __HAL_AUX_ENTRY("rx_icmp_PORT2", - mrpcim_info.xgmac_port[2].rx_icmp, "%llu"); - __HAL_AUX_ENTRY("rx_tcp_PORT2", - mrpcim_info.xgmac_port[2].rx_tcp, "%llu"); - __HAL_AUX_ENTRY("rx_udp_PORT2", - mrpcim_info.xgmac_port[2].rx_udp, "%llu"); - __HAL_AUX_ENTRY("rx_err_tcp_PORT2", - mrpcim_info.xgmac_port[2].rx_err_tcp, "%llu"); - __HAL_AUX_ENTRY("rx_pause_count_PORT2", - mrpcim_info.xgmac_port[2].rx_pause_count, "%llu"); - __HAL_AUX_ENTRY("rx_pause_ctrl_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_pause_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_unsup_ctrl_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_unsup_ctrl_frms, "%llu"); - __HAL_AUX_ENTRY("rx_fcs_err_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_fcs_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_in_rng_len_err_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_in_rng_len_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_out_rng_len_err_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_out_rng_len_err_frms, "%llu"); - __HAL_AUX_ENTRY("rx_drop_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_drop_frms, "%llu"); - __HAL_AUX_ENTRY("rx_discarded_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_discarded_frms, "%llu"); - __HAL_AUX_ENTRY("rx_drop_ip_PORT2", - mrpcim_info.xgmac_port[2].rx_drop_ip, "%llu"); - __HAL_AUX_ENTRY("rx_drop_udp_PORT2", - mrpcim_info.xgmac_port[2].rx_drop_udp, "%llu"); - __HAL_AUX_ENTRY("rx_marker_pdu_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_marker_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_lacpdu_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_lacpdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_unknown_pdu_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_unknown_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_marker_resp_pdu_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_marker_resp_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_fcs_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_fcs_discard, "%u"); - __HAL_AUX_ENTRY("rx_illegal_pdu_frms_PORT2", - mrpcim_info.xgmac_port[2].rx_illegal_pdu_frms, "%u"); - __HAL_AUX_ENTRY("rx_switch_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_switch_discard, "%u"); - __HAL_AUX_ENTRY("rx_len_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_len_discard, "%u"); - __HAL_AUX_ENTRY("rx_rpa_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_rpa_discard, "%u"); - __HAL_AUX_ENTRY("rx_l2_mgmt_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_l2_mgmt_discard, "%u"); - __HAL_AUX_ENTRY("rx_rts_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_rts_discard, "%u"); - __HAL_AUX_ENTRY("rx_trash_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_trash_discard, "%u"); - __HAL_AUX_ENTRY("rx_buff_full_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_buff_full_discard, "%u"); - __HAL_AUX_ENTRY("rx_red_discard_PORT2", - mrpcim_info.xgmac_port[2].rx_red_discard, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_ctrl_err_cnt_PORT2", - mrpcim_info.xgmac_port[2].rx_xgmii_ctrl_err_cnt, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_data_err_cnt_PORT2", - mrpcim_info.xgmac_port[2].rx_xgmii_data_err_cnt, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_char1_match_PORT2", - mrpcim_info.xgmac_port[2].rx_xgmii_char1_match, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_err_sym_PORT2", - mrpcim_info.xgmac_port[2].rx_xgmii_err_sym, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_column1_match_PORT2", - mrpcim_info.xgmac_port[2].rx_xgmii_column1_match, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_char2_match_PORT2", - mrpcim_info.xgmac_port[2].rx_xgmii_char2_match, "%u"); - __HAL_AUX_ENTRY("rx_local_fault_PORT2", - mrpcim_info.xgmac_port[2].rx_local_fault, "%u"); - __HAL_AUX_ENTRY("rx_xgmii_column2_match_PORT2", - mrpcim_info.xgmac_port[2].rx_xgmii_column2_match, "%u"); - __HAL_AUX_ENTRY("rx_jettison_PORT2", - mrpcim_info.xgmac_port[2].rx_jettison, "%u"); - __HAL_AUX_ENTRY("rx_remote_fault_PORT2", - mrpcim_info.xgmac_port[2].rx_remote_fault, "%u"); - - __HAL_AUX_ENTRY("tx_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].tx_frms, "%llu"); - __HAL_AUX_ENTRY("tx_data_octets_AGGR0", - mrpcim_info.xgmac_aggr[0].tx_data_octets, "%llu"); - __HAL_AUX_ENTRY("tx_mcast_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].tx_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_bcast_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].tx_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_discarded_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].tx_discarded_frms, "%llu"); - __HAL_AUX_ENTRY("tx_errored_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].tx_errored_frms, "%llu"); - __HAL_AUX_ENTRY("rx_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].rx_frms, "%llu"); - __HAL_AUX_ENTRY("rx_data_octets_AGGR0", - mrpcim_info.xgmac_aggr[0].rx_data_octets, "%llu"); - __HAL_AUX_ENTRY("rx_mcast_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].rx_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_bcast_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].rx_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_discarded_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].rx_discarded_frms, "%llu"); - __HAL_AUX_ENTRY("rx_errored_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].rx_errored_frms, "%llu"); - __HAL_AUX_ENTRY("rx_unknown_slow_proto_frms_AGGR0", - mrpcim_info.xgmac_aggr[0].rx_unknown_slow_proto_frms, "%llu"); - - __HAL_AUX_ENTRY("tx_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].tx_frms, "%llu"); - __HAL_AUX_ENTRY("tx_data_octets_AGGR1", - mrpcim_info.xgmac_aggr[1].tx_data_octets, "%llu"); - __HAL_AUX_ENTRY("tx_mcast_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].tx_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_bcast_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].tx_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("tx_discarded_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].tx_discarded_frms, "%llu"); - __HAL_AUX_ENTRY("tx_errored_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].tx_errored_frms, "%llu"); - __HAL_AUX_ENTRY("rx_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].rx_frms, "%llu"); - __HAL_AUX_ENTRY("rx_data_octets_AGGR1", - mrpcim_info.xgmac_aggr[1].rx_data_octets, "%llu"); - __HAL_AUX_ENTRY("rx_mcast_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].rx_mcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_bcast_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].rx_bcast_frms, "%llu"); - __HAL_AUX_ENTRY("rx_discarded_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].rx_discarded_frms, "%llu"); - __HAL_AUX_ENTRY("rx_errored_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].rx_errored_frms, "%llu"); - __HAL_AUX_ENTRY("rx_unknown_slow_proto_frms_AGGR1", - mrpcim_info.xgmac_aggr[1].rx_unknown_slow_proto_frms, "%llu"); - - __HAL_AUX_ENTRY("xgmac_global_prog_event_gnum0", - mrpcim_info.xgmac_global_prog_event_gnum0, "%llu"); - __HAL_AUX_ENTRY("xgmac_global_prog_event_gnum1", - mrpcim_info.xgmac_global_prog_event_gnum1, "%llu"); - - __HAL_AUX_ENTRY("xgmac_orp_lro_events", - mrpcim_info.xgmac_orp_lro_events, "%llu"); - - __HAL_AUX_ENTRY("xgmac_orp_bs_events", - mrpcim_info.xgmac_orp_bs_events, "%llu"); - - __HAL_AUX_ENTRY("xgmac_orp_iwarp_events", - mrpcim_info.xgmac_orp_iwarp_events, "%llu"); - - __HAL_AUX_ENTRY("xgmac_tx_permitted_frms", - mrpcim_info.xgmac_tx_permitted_frms, "%u"); - - __HAL_AUX_ENTRY("xgmac_port2_tx_any_frms", - mrpcim_info.xgmac_port2_tx_any_frms, "%u"); - __HAL_AUX_ENTRY("xgmac_port1_tx_any_frms", - mrpcim_info.xgmac_port1_tx_any_frms, "%u"); - __HAL_AUX_ENTRY("xgmac_port0_tx_any_frms", - mrpcim_info.xgmac_port0_tx_any_frms, "%u"); - - __HAL_AUX_ENTRY("xgmac_port2_rx_any_frms", - mrpcim_info.xgmac_port2_rx_any_frms, "%u"); - __HAL_AUX_ENTRY("xgmac_port1_rx_any_frms", - mrpcim_info.xgmac_port1_rx_any_frms, "%u"); - __HAL_AUX_ENTRY("xgmac_port0_rx_any_frms", - mrpcim_info.xgmac_port0_rx_any_frms, "%u"); - - __HAL_AUX_ENTRY_END(bufsize, retsize); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_vpath_ring_dump - Dump vpath ring. - * @vpath_handle: Vpath handle. - * - * Dump vpath ring. - */ -vxge_hal_status_e -vxge_hal_aux_vpath_ring_dump(vxge_hal_vpath_h vpath_handle) -{ - u32 i; - char buffer[4096]; - __hal_ring_t *ring; - vxge_hal_rxd_h rxdh; - __hal_virtualpath_t *vpath; - vxge_hal_ring_rxd_1_t *rxd1; - vxge_hal_ring_rxd_3_t *rxd3; - vxge_hal_ring_rxd_5_t *rxd5; - - vxge_assert(vpath_handle != NULL); - - vpath = (__hal_virtualpath_t *) - ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - ring = (__hal_ring_t *) vpath->ringh; - - vxge_os_println("********* vxge RING DUMP BEGIN **********"); - - vxge_os_println("********* vxge RING RXD LIST **********"); - - __hal_channel_for_each_dtr(&ring->channel, rxdh, i) { - - (void) vxge_os_snprintf(buffer, sizeof(buffer), - "%d : 0x"VXGE_OS_STXFMT, i, (ptr_t) rxdh); - - vxge_os_println(buffer); - - switch (ring->buffer_mode) { - case 1: - rxd1 = (vxge_hal_ring_rxd_1_t *) rxdh; - (void) vxge_os_snprintf(buffer, sizeof(buffer), - "\thost_control = 0x"VXGE_OS_LLXFMT", " - "control_0 = 0x"VXGE_OS_LLXFMT", " - "control_1 = 0x"VXGE_OS_LLXFMT", " - "buffer0_ptr = 0x"VXGE_OS_LLXFMT, - rxd1->host_control, rxd1->control_0, - rxd1->control_1, rxd1->buffer0_ptr); - break; - case 3: - rxd3 = (vxge_hal_ring_rxd_3_t *) rxdh; - (void) vxge_os_snprintf(buffer, sizeof(buffer), - "\thost_control = 0x"VXGE_OS_LLXFMT", " - "control_0 = 0x"VXGE_OS_LLXFMT", " - "control_1 = 0x"VXGE_OS_LLXFMT", " - "buffer0_ptr = 0x"VXGE_OS_LLXFMT", " - "buffer1_ptr = 0x"VXGE_OS_LLXFMT", " - "buffer2_ptr = 0x"VXGE_OS_LLXFMT, - rxd3->host_control, rxd3->control_0, - rxd3->control_1, rxd3->buffer0_ptr, - rxd3->buffer1_ptr, rxd3->buffer2_ptr); - break; - case 5: - rxd5 = (vxge_hal_ring_rxd_5_t *) rxdh; - (void) vxge_os_snprintf(buffer, sizeof(buffer), - "\thost_control = 0x%x, " - "control_0 = 0x"VXGE_OS_LLXFMT", " - "control_1 = 0x"VXGE_OS_LLXFMT", " - "control_2 = 0x%x, " - "buffer0_ptr = 0x"VXGE_OS_LLXFMT", " - "buffer1_ptr = 0x"VXGE_OS_LLXFMT", " - "buffer2_ptr = 0x"VXGE_OS_LLXFMT", " - "buffer3_ptr = 0x"VXGE_OS_LLXFMT", " - "buffer4_ptr = 0x"VXGE_OS_LLXFMT, - rxd5->host_control, rxd5->control_0, - rxd5->control_1, rxd5->control_2, - rxd5->buffer0_ptr, rxd5->buffer1_ptr, - rxd5->buffer2_ptr, rxd5->buffer3_ptr, - rxd5->buffer4_ptr); - break; - default: - continue; - } - - vxge_os_println(buffer); - } - - vxge_os_println("******* vxge RING RXD LIST END **********"); - - vxge_os_println("********* vxge RING DUMP END **********"); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_vpath_fifo_dump - Dump vpath fifo. - * @vpath_handle: Vpath handle. - * - * Dump vpath fifo. - */ -vxge_hal_status_e -vxge_hal_aux_vpath_fifo_dump(vxge_hal_vpath_h vpath_handle) -{ - u32 i, j; - char buffer[4096]; - __hal_fifo_t *fifo; - vxge_hal_txdl_h txdlh; - __hal_virtualpath_t *vpath; - vxge_hal_fifo_txd_t *txd; - __hal_fifo_txdl_priv_t *txdl_priv; - - vxge_assert(vpath_handle != NULL); - - vpath = (__hal_virtualpath_t *) - ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - fifo = (__hal_fifo_t *) vpath->fifoh; - - vxge_os_println("********* vxge FIFO DUMP BEGIN **********"); - - vxge_os_println("********* vxge FIFO TXDL LIST **********"); - - __hal_channel_for_each_dtr(&fifo->channel, txdlh, j) { - - (void) vxge_os_snprintf(buffer, sizeof(buffer), - "TXDL %d : 0x"VXGE_OS_STXFMT, j, (ptr_t) txdlh); - - vxge_os_println(buffer); - - txdl_priv = VXGE_HAL_FIFO_HAL_PRIV(fifo, txdlh); - - for (i = 0, txd = (vxge_hal_fifo_txd_t *) txdlh; - i < txdl_priv->frags; i++, txd++) { - - (void) vxge_os_snprintf(buffer, sizeof(buffer), - "\tcontrol_0 = 0x"VXGE_OS_LLXFMT", " - "control_1 = 0x"VXGE_OS_LLXFMT", " - "buffer_ptr = 0x"VXGE_OS_LLXFMT", " - "host_control = 0x"VXGE_OS_LLXFMT, - txd->control_0, txd->control_1, - txd->buffer_pointer, txd->host_control); - - vxge_os_println(buffer); - } - - } - - vxge_os_println("******* vxge FIFO TXDL LIST END **********"); - - vxge_os_println("********* vxge FIFO DUMP END **********"); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_aux_device_dump - Dump driver "about" info and device state. - * @devh: HAL device handle. - * - * Dump driver & device "about" info and device state, - * including all BAR0 registers, hardware and software statistics, PCI - * configuration space. - */ -vxge_hal_status_e -vxge_hal_aux_device_dump(vxge_hal_device_h devh) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - int retsize; - u32 offset, i; - u64 retval; - - vxge_assert(hldev->dump_buf != NULL); - - vxge_os_println("********* vxge DEVICE DUMP BEGIN **********"); - - status = vxge_hal_aux_about_read(hldev, VXGE_HAL_DUMP_BUF_SIZE, - hldev->dump_buf, &retsize); - if (status != VXGE_HAL_OK) - goto error; - - vxge_os_println(hldev->dump_buf); - - vxge_os_println("******* PCI Config Reg **********"); - - status = vxge_hal_aux_pci_config_read(hldev, VXGE_HAL_DUMP_BUF_SIZE, - hldev->dump_buf, &retsize); - if (status != VXGE_HAL_OK) - goto error; - - vxge_os_println(hldev->dump_buf); - - vxge_os_println("******* Legacy Reg **********"); - - for (offset = 0; offset < sizeof(vxge_hal_legacy_reg_t); offset += 8) { - status = vxge_hal_mgmt_reg_read(devh, - vxge_hal_mgmt_reg_type_legacy, 0, offset, &retval); - - if (status != VXGE_HAL_OK) - goto error; - - if (!retval) - continue; - - vxge_os_printf("0x%04x 0x%08x%08x", offset, - (u32) (retval >> 32), (u32) retval); - } - vxge_os_println("\n"); - - vxge_os_println("******* TOC Reg *********"); - - for (offset = 0; offset < sizeof(vxge_hal_toc_reg_t); offset += 8) { - status = vxge_hal_mgmt_reg_read(devh, - vxge_hal_mgmt_reg_type_toc, 0, offset, &retval); - if (status != VXGE_HAL_OK) - goto error; - - if (!retval) - continue; - - vxge_os_printf("0x%04x 0x%08x%08x", offset, - (u32) (retval >> 32), (u32) retval); - } - vxge_os_println("\n"); - - vxge_os_println("******* Common Reg **********"); - - for (offset = 0; offset < sizeof(vxge_hal_common_reg_t); offset += 8) { - status = vxge_hal_mgmt_reg_read(devh, - vxge_hal_mgmt_reg_type_common, 0, offset, &retval); - if (status != VXGE_HAL_OK) - goto error; - - if (!retval) - continue; - - vxge_os_printf("0x%04x 0x%08x%08x", offset, - (u32) (retval >> 32), (u32) retval); - } - vxge_os_println("\n"); - - for (i = 0; i < VXGE_HAL_TITAN_PCICFGMGMT_REG_SPACES; i++) { - vxge_os_printf("****** PCI Config Mgmt Reg : %d ********\n", i); - - for (offset = 0; offset < sizeof(vxge_hal_pcicfgmgmt_reg_t); - offset += 8) { - status = vxge_hal_mgmt_reg_read(devh, - vxge_hal_mgmt_reg_type_pcicfgmgmt, - i, offset, &retval); - if (status != VXGE_HAL_OK) - continue; - - if (!retval) - continue; - - vxge_os_printf("0x%04x 0x%08x%08x", offset, - (u32) (retval >> 32), (u32) retval); - } - } - vxge_os_println("\n"); - - vxge_os_println("******* MRPCIM Reg **********"); - - for (offset = 0; offset < sizeof(vxge_hal_mrpcim_reg_t); - offset += 8) { - status = vxge_hal_mgmt_reg_read(devh, - vxge_hal_mgmt_reg_type_mrpcim, 0, offset, &retval); - if (status != VXGE_HAL_OK) - continue; - - if (!retval) - continue; - - vxge_os_printf("0x%04x 0x%08x%08x", offset, - (u32) (retval >> 32), (u32) retval); - } - vxge_os_println("\n"); - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - vxge_os_printf("******* SRPCIM Reg : %d **********\n", i); - - for (offset = 0; offset < sizeof(vxge_hal_srpcim_reg_t); - offset += 8) { - status = vxge_hal_mgmt_reg_read(devh, - vxge_hal_mgmt_reg_type_srpcim, i, offset, &retval); - if (status != VXGE_HAL_OK) - continue; - - if (!retval) - continue; - - vxge_os_printf("0x%04x 0x%08x%08x", offset, - (u32) (retval >> 32), (u32) retval); - } - } - vxge_os_println("\n"); - - for (i = 0; i < VXGE_HAL_TITAN_VPMGMT_REG_SPACES; i++) { - vxge_os_printf("******* VPATH MGMT Reg : %d **********\n", i); - - for (offset = 0; offset < sizeof(vxge_hal_vpmgmt_reg_t); - offset += 8) { - status = vxge_hal_mgmt_reg_read(devh, - vxge_hal_mgmt_reg_type_vpmgmt, i, offset, &retval); - if (status != VXGE_HAL_OK) - continue; - - if (!retval) - continue; - - vxge_os_printf("0x%04x 0x%08x%08x", offset, - (u32) (retval >> 32), (u32) retval); - } - } - vxge_os_println("\n"); - - for (i = 0; i < VXGE_HAL_TITAN_VPATH_REG_SPACES; i++) { - vxge_os_printf("******* VPATH Reg : %d **********\n", i); - - for (offset = 0; offset < sizeof(vxge_hal_vpath_reg_t); - offset += 8) { - status = vxge_hal_mgmt_reg_read(devh, - vxge_hal_mgmt_reg_type_vpath, i, offset, &retval); - if (status != VXGE_HAL_OK) - continue; - - if (!retval) - continue; - - vxge_os_printf("0x%04x 0x%08x%08x", offset, - (u32) (retval >> 32), (u32) retval); - } - } - - vxge_os_println("\n"); - - status = vxge_hal_aux_stats_mrpcim_read(hldev, VXGE_HAL_DUMP_BUF_SIZE, - hldev->dump_buf, - &retsize); - if (status == VXGE_HAL_OK) { - vxge_os_println("******* MRPCIM Stats **********"); - vxge_os_println(hldev->dump_buf); - } - - vxge_os_println("******* Device Stats **********"); - - status = vxge_hal_aux_stats_device_read(hldev, VXGE_HAL_DUMP_BUF_SIZE, - hldev->dump_buf, &retsize); - if (status != VXGE_HAL_OK) - goto error; - - vxge_os_println(hldev->dump_buf); - - vxge_os_println("********* DEVICE DUMP END **********"); - -error: - return (status); -} Index: sys/dev/vxge/vxgehal/vxgehal-mm.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-mm.h +++ sys/dev/vxge/vxgehal/vxgehal-mm.h @@ -1,208 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_MM_H -#define VXGE_HAL_MM_H - -__EXTERN_BEGIN_DECLS - -typedef void *vxge_hal_mempool_h; - -/* - * struct vxge_hal_mempool_dma_t - Represents DMA objects passed to the - * caller. - */ -typedef struct vxge_hal_mempool_dma_t { - dma_addr_t addr; - pci_dma_h handle; - pci_dma_acc_h acc_handle; -} vxge_hal_mempool_dma_t; - -/* - * vxge_hal_mempool_item_f - Mempool item alloc/free callback - * @mempoolh: Memory pool handle. - * @memblock: Address of memory block - * @memblock_index: Index of memory block - * @item: Item that gets allocated or freed. - * @index: Item's index in the memory pool. - * @is_last: True, if this item is the last one in the pool; false - otherwise. - * userdata: Per-pool user context. - * - * Memory pool allocation/deallocation callback. - */ -typedef vxge_hal_status_e (*vxge_hal_mempool_item_f) ( - vxge_hal_mempool_h mempoolh, - void *memblock, - u32 memblock_index, - vxge_hal_mempool_dma_t *dma_object, - void *item, - u32 index, - u32 is_last, - void *userdata); - -/* - * struct vxge_hal_mempool_t - Memory pool. - */ -typedef struct vxge_hal_mempool_t { - vxge_hal_mempool_item_f item_func_alloc; - vxge_hal_mempool_item_f item_func_free; - void *userdata; - void **memblocks_arr; - void **memblocks_priv_arr; - vxge_hal_mempool_dma_t *memblocks_dma_arr; - vxge_hal_device_h devh; - u32 memblock_size; - u32 memblocks_max; - u32 memblocks_allocated; - u32 item_size; - u32 items_max; - u32 items_initial; - u32 items_current; - u32 items_per_memblock; - u32 dma_flags; - void **items_arr; - void **shadow_items_arr; - u32 items_priv_size; -} vxge_hal_mempool_t; - -/* - * __hal_mempool_item_count - Returns number of items in the mempool - */ -static inline u32 -/* LINTED */ -__hal_mempool_item_count( - vxge_hal_mempool_t *mempool) -{ - return (mempool->items_current); -} - -/* - * __hal_mempool_item - Returns pointer to the item in the mempool - * items array. - */ -static inline void * -/* LINTED */ -__hal_mempool_item( - vxge_hal_mempool_t *mempool, - u32 items_index) -{ - return (mempool->items_arr[items_index]); -} - -/* - * __hal_mempool_item_priv - will return pointer on per item private space - */ -static inline void* -/* LINTED */ -__hal_mempool_item_priv( - vxge_hal_mempool_t *mempool, - u32 memblock_idx, - void *item, - u32 *memblock_item_idx) -{ - ptrdiff_t offset; - void *memblock = mempool->memblocks_arr[memblock_idx]; - - vxge_assert(memblock); - - /* LINTED */ - offset = (u32) ((u8 *) item - (u8 *) memblock); - vxge_assert(offset >= 0 && (u32) offset < mempool->memblock_size); - - (*memblock_item_idx) = (u32) offset / mempool->item_size; - vxge_assert((*memblock_item_idx) < mempool->items_per_memblock); - - return ((u8 *) mempool->memblocks_priv_arr[memblock_idx] + - (*memblock_item_idx) * mempool->items_priv_size); -} - -/* - * __hal_mempool_items_arr - will return pointer to the items array in the - * mempool. - */ -static inline void * -/* LINTED */ -__hal_mempool_items_arr( - vxge_hal_mempool_t *mempool) -{ - return (mempool->items_arr); -} - -/* - * __hal_mempool_memblock - will return pointer to the memblock in the - * mempool memblocks array. - */ -static inline void * -/* LINTED */ -__hal_mempool_memblock( - vxge_hal_mempool_t *mempool, - u32 memblock_idx) -{ - vxge_assert(mempool->memblocks_arr[memblock_idx]); - return (mempool->memblocks_arr[memblock_idx]); -} - -/* - * __hal_mempool_memblock_dma - will return pointer to the dma block - * corresponds to the memblock(identified by memblock_idx) in the mempool. - */ -static inline vxge_hal_mempool_dma_t * -/* LINTED */ -__hal_mempool_memblock_dma( - vxge_hal_mempool_t *mempool, - u32 memblock_idx) -{ - return (mempool->memblocks_dma_arr + memblock_idx); -} - -vxge_hal_mempool_t * -vxge_hal_mempool_create( - vxge_hal_device_h devh, - u32 memblock_size, - u32 item_size, - u32 private_size, - u32 items_initial, - u32 items_max, - vxge_hal_mempool_item_f item_func_alloc, - vxge_hal_mempool_item_f item_func_free, - void *userdata); - -void -vxge_hal_mempool_destroy( - vxge_hal_mempool_t *mempool); - - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_MM_H */ Index: sys/dev/vxge/vxgehal/vxgehal-mm.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-mm.c +++ sys/dev/vxge/vxgehal/vxgehal-mm.c @@ -1,555 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * __hal_mempool_grow - * - * Will resize mempool up to %num_allocate value. - */ -static vxge_hal_status_e -__hal_mempool_grow( - vxge_hal_mempool_t *mempool, - u32 num_allocate, - u32 *num_allocated) -{ - u32 i, j, k, item_index, is_last; - u32 first_time = mempool->memblocks_allocated == 0 ? 1 : 0; - u32 n_items = mempool->items_per_memblock; - u32 start_block_idx = mempool->memblocks_allocated; - u32 end_block_idx = mempool->memblocks_allocated + num_allocate; - __hal_device_t *hldev; - - vxge_assert(mempool != NULL); - - hldev = (__hal_device_t *) mempool->devh; - - vxge_hal_trace_log_mm("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mm( - "mempool = 0x"VXGE_OS_STXFMT", num_allocate = %d, " - "num_allocated = 0x"VXGE_OS_STXFMT, (ptr_t) mempool, - num_allocate, (ptr_t) num_allocated); - - *num_allocated = 0; - - if (end_block_idx > mempool->memblocks_max) { - vxge_hal_err_log_mm("%s", - "__hal_mempool_grow: can grow anymore"); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - for (i = start_block_idx; i < end_block_idx; i++) { - - void *the_memblock; - vxge_hal_mempool_dma_t *dma_object; - - is_last = ((end_block_idx - 1) == i); - dma_object = mempool->memblocks_dma_arr + i; - - /* - * allocate memblock's private part. Each DMA memblock - * has a space allocated for item's private usage upon - * mempool's user request. Each time mempool grows, it will - * allocate new memblock and its private part at once. - * This helps to minimize memory usage a lot. - */ - mempool->memblocks_priv_arr[i] = vxge_os_malloc( - ((__hal_device_t *) mempool->devh)->header.pdev, - mempool->items_priv_size * n_items); - if (mempool->memblocks_priv_arr[i] == NULL) { - - vxge_hal_err_log_mm("memblock_priv[%d]: \ - out of virtual memory, " - "requested %d(%d:%d) bytes", i, - mempool->items_priv_size * n_items, - mempool->items_priv_size, n_items); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - - } - - vxge_os_memzero(mempool->memblocks_priv_arr[i], - mempool->items_priv_size * n_items); - - /* allocate DMA-capable memblock */ - mempool->memblocks_arr[i] = - __hal_blockpool_malloc(mempool->devh, - mempool->memblock_size, - &dma_object->addr, - &dma_object->handle, - &dma_object->acc_handle); - if (mempool->memblocks_arr[i] == NULL) { - vxge_os_free( - ((__hal_device_t *) mempool->devh)->header.pdev, - mempool->memblocks_priv_arr[i], - mempool->items_priv_size * n_items); - vxge_hal_err_log_mm("memblock[%d]: \ - out of DMA memory", i); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - (*num_allocated)++; - mempool->memblocks_allocated++; - - vxge_os_memzero(mempool->memblocks_arr[i], - mempool->memblock_size); - - the_memblock = mempool->memblocks_arr[i]; - - /* fill the items hash array */ - for (j = 0; j < n_items; j++) { - item_index = i * n_items + j; - - if (first_time && (item_index >= mempool->items_initial)) - break; - - mempool->items_arr[item_index] = - ((char *) the_memblock + j *mempool->item_size); - - /* let caller to do more job on each item */ - if (mempool->item_func_alloc != NULL) { - vxge_hal_status_e status; - - if ((status = mempool->item_func_alloc( - mempool, - the_memblock, - i, - dma_object, - mempool->items_arr[item_index], - item_index, - is_last, - mempool->userdata)) != VXGE_HAL_OK) { - - if (mempool->item_func_free != NULL) { - - for (k = 0; k < j; k++) { - - item_index = i * n_items + k; - - (void) mempool->item_func_free( - mempool, - the_memblock, - i, dma_object, - mempool->items_arr[item_index], - item_index, is_last, - mempool->userdata); - } - } - - vxge_os_free(((__hal_device_t *) - mempool->devh)->header.pdev, - mempool->memblocks_priv_arr[i], - mempool->items_priv_size * - n_items); - - __hal_blockpool_free(mempool->devh, - the_memblock, - mempool->memblock_size, - &dma_object->addr, - &dma_object->handle, - &dma_object->acc_handle); - - (*num_allocated)--; - mempool->memblocks_allocated--; - return (status); - } - } - - mempool->items_current = item_index + 1; - } - - vxge_hal_info_log_mm( - "memblock%d: allocated %dk, vaddr 0x"VXGE_OS_STXFMT", " - "dma_addr 0x"VXGE_OS_STXFMT, - i, mempool->memblock_size / 1024, - (ptr_t) mempool->memblocks_arr[i], dma_object->addr); - - if (first_time && mempool->items_current == - mempool->items_initial) { - break; - } - } - - vxge_hal_trace_log_mm("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mempool_create - * @memblock_size: - * @items_initial: - * @items_max: - * @item_size: - * @item_func: - * - * This function will create memory pool object. Pool may grow but will - * never shrink. Pool consists of number of dynamically allocated blocks - * with size enough to hold %items_initial number of items. Memory is - * DMA-able but client must map/unmap before interoperating with the device. - * See also: vxge_os_dma_map(), vxge_hal_dma_unmap(), vxge_hal_status_e {}. - */ -vxge_hal_mempool_t * -vxge_hal_mempool_create( - vxge_hal_device_h devh, - u32 memblock_size, - u32 item_size, - u32 items_priv_size, - u32 items_initial, - u32 items_max, - vxge_hal_mempool_item_f item_func_alloc, - vxge_hal_mempool_item_f item_func_free, - void *userdata) -{ - vxge_hal_status_e status; - u32 memblocks_to_allocate; - vxge_hal_mempool_t *mempool; - __hal_device_t *hldev; - u32 allocated; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_mm("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mm( - "devh = 0x"VXGE_OS_STXFMT", memblock_size = %d, item_size = %d, " - "items_priv_size = %d, items_initial = %d, items_max = %d, " - "item_func_alloc = 0x"VXGE_OS_STXFMT", " - "item_func_free = 0x"VXGE_OS_STXFMT", " - "userdata = 0x"VXGE_OS_STXFMT, (ptr_t) devh, - memblock_size, item_size, items_priv_size, - items_initial, items_max, (ptr_t) item_func_alloc, - (ptr_t) item_func_free, (ptr_t) userdata); - - if (memblock_size < item_size) { - vxge_hal_err_log_mm( - "memblock_size %d < item_size %d: misconfiguration", - memblock_size, item_size); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (NULL); - } - - mempool = (vxge_hal_mempool_t *) vxge_os_malloc( - ((__hal_device_t *) devh)->header.pdev, sizeof(vxge_hal_mempool_t)); - if (mempool == NULL) { - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - vxge_os_memzero(mempool, sizeof(vxge_hal_mempool_t)); - - mempool->devh = devh; - mempool->memblock_size = memblock_size; - mempool->items_max = items_max; - mempool->items_initial = items_initial; - mempool->item_size = item_size; - mempool->items_priv_size = items_priv_size; - mempool->item_func_alloc = item_func_alloc; - mempool->item_func_free = item_func_free; - mempool->userdata = userdata; - - mempool->memblocks_allocated = 0; - - if (memblock_size != VXGE_OS_HOST_PAGE_SIZE) - mempool->dma_flags = VXGE_OS_DMA_CACHELINE_ALIGNED; - -#if defined(VXGE_HAL_DMA_CONSISTENT) - mempool->dma_flags |= VXGE_OS_DMA_CONSISTENT; -#else - mempool->dma_flags |= VXGE_OS_DMA_STREAMING; -#endif - - mempool->items_per_memblock = memblock_size / item_size; - - mempool->memblocks_max = (items_max + mempool->items_per_memblock - 1) / - mempool->items_per_memblock; - - /* allocate array of memblocks */ - mempool->memblocks_arr = (void **)vxge_os_malloc( - ((__hal_device_t *) mempool->devh)->header.pdev, - sizeof(void *) * mempool->memblocks_max); - if (mempool->memblocks_arr == NULL) { - vxge_hal_mempool_destroy(mempool); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - vxge_os_memzero(mempool->memblocks_arr, - sizeof(void *) * mempool->memblocks_max); - - /* allocate array of private parts of items per memblocks */ - mempool->memblocks_priv_arr = (void **)vxge_os_malloc( - ((__hal_device_t *) mempool->devh)->header.pdev, - sizeof(void *) * mempool->memblocks_max); - if (mempool->memblocks_priv_arr == NULL) { - vxge_hal_mempool_destroy(mempool); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - vxge_os_memzero(mempool->memblocks_priv_arr, - sizeof(void *) * mempool->memblocks_max); - - /* allocate array of memblocks DMA objects */ - mempool->memblocks_dma_arr = - (vxge_hal_mempool_dma_t *) vxge_os_malloc( - ((__hal_device_t *) mempool->devh)->header.pdev, - sizeof(vxge_hal_mempool_dma_t) * mempool->memblocks_max); - - if (mempool->memblocks_dma_arr == NULL) { - vxge_hal_mempool_destroy(mempool); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - vxge_os_memzero(mempool->memblocks_dma_arr, - sizeof(vxge_hal_mempool_dma_t) * mempool->memblocks_max); - - /* allocate hash array of items */ - mempool->items_arr = (void **)vxge_os_malloc( - ((__hal_device_t *) mempool->devh)->header.pdev, - sizeof(void *) * mempool->items_max); - if (mempool->items_arr == NULL) { - vxge_hal_mempool_destroy(mempool); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - vxge_os_memzero(mempool->items_arr, - sizeof(void *) * mempool->items_max); - - mempool->shadow_items_arr = (void **)vxge_os_malloc( - ((__hal_device_t *) mempool->devh)->header.pdev, - sizeof(void *) * mempool->items_max); - if (mempool->shadow_items_arr == NULL) { - vxge_hal_mempool_destroy(mempool); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - vxge_os_memzero(mempool->shadow_items_arr, - sizeof(void *) * mempool->items_max); - - /* calculate initial number of memblocks */ - memblocks_to_allocate = (mempool->items_initial + - mempool->items_per_memblock - 1) / - mempool->items_per_memblock; - - vxge_hal_info_log_mm("allocating %d memblocks, " - "%d items per memblock", memblocks_to_allocate, - mempool->items_per_memblock); - - /* pre-allocate the mempool */ - status = __hal_mempool_grow(mempool, memblocks_to_allocate, &allocated); - vxge_os_memcpy(mempool->shadow_items_arr, mempool->items_arr, - sizeof(void *) * mempool->items_max); - if (status != VXGE_HAL_OK) { - vxge_hal_mempool_destroy(mempool); - vxge_hal_trace_log_mm("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (NULL); - } - - vxge_hal_info_log_mm( - "total: allocated %dk of DMA-capable memory", - mempool->memblock_size * allocated / 1024); - - vxge_hal_trace_log_mm("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (mempool); -} - -/* - * vxge_hal_mempool_destroy - */ -void -vxge_hal_mempool_destroy( - vxge_hal_mempool_t *mempool) -{ - u32 i, j, item_index; - __hal_device_t *hldev; - - vxge_assert(mempool != NULL); - - hldev = (__hal_device_t *) mempool->devh; - - vxge_hal_trace_log_mm("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mm("mempool = 0x"VXGE_OS_STXFMT, - (ptr_t) mempool); - - for (i = 0; i < mempool->memblocks_allocated; i++) { - vxge_hal_mempool_dma_t *dma_object; - - vxge_assert(mempool->memblocks_arr[i]); - vxge_assert(mempool->memblocks_dma_arr + i); - - dma_object = mempool->memblocks_dma_arr + i; - - for (j = 0; j < mempool->items_per_memblock; j++) { - item_index = i * mempool->items_per_memblock + j; - - /* to skip last partially filled(if any) memblock */ - if (item_index >= mempool->items_current) - break; - - /* let caller to do more job on each item */ - if (mempool->item_func_free != NULL) { - - mempool->item_func_free(mempool, - mempool->memblocks_arr[i], - i, dma_object, - mempool->shadow_items_arr[item_index], - item_index, /* unused */ -1, - mempool->userdata); - } - } - - vxge_os_free(hldev->header.pdev, - mempool->memblocks_priv_arr[i], - mempool->items_priv_size * mempool->items_per_memblock); - - __hal_blockpool_free(hldev, - mempool->memblocks_arr[i], - mempool->memblock_size, - &dma_object->addr, - &dma_object->handle, - &dma_object->acc_handle); - } - - if (mempool->items_arr) { - vxge_os_free(hldev->header.pdev, - mempool->items_arr, sizeof(void *) * mempool->items_max); - } - - if (mempool->shadow_items_arr) { - vxge_os_free(hldev->header.pdev, - mempool->shadow_items_arr, - sizeof(void *) * mempool->items_max); - } - - if (mempool->memblocks_dma_arr) { - vxge_os_free(hldev->header.pdev, - mempool->memblocks_dma_arr, - sizeof(vxge_hal_mempool_dma_t) * - mempool->memblocks_max); - } - - if (mempool->memblocks_priv_arr) { - vxge_os_free(hldev->header.pdev, - mempool->memblocks_priv_arr, - sizeof(void *) * mempool->memblocks_max); - } - - if (mempool->memblocks_arr) { - vxge_os_free(hldev->header.pdev, - mempool->memblocks_arr, - sizeof(void *) * mempool->memblocks_max); - } - - vxge_os_free(hldev->header.pdev, - mempool, sizeof(vxge_hal_mempool_t)); - - vxge_hal_trace_log_mm("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_check_alignment - Check buffer alignment and calculate the - * "misaligned" portion. - * @dma_pointer: DMA address of the buffer. - * @size: Buffer size, in bytes. - * @alignment: Alignment "granularity" (see below), in bytes. - * @copy_size: Maximum number of bytes to "extract" from the buffer - * (in order to spost it as a separate scatter-gather entry). See below. - * - * Check buffer alignment and calculate "misaligned" portion, if exists. - * The buffer is considered aligned if its address is multiple of - * the specified @alignment. If this is the case, - * vxge_hal_check_alignment() returns zero. - * Otherwise, vxge_hal_check_alignment() uses the last argument, - * @copy_size, - * to calculate the size to "extract" from the buffer. The @copy_size - * may or may not be equal @alignment. The difference between these two - * arguments is that the @alignment is used to make the decision: aligned - * or not aligned. While the @copy_size is used to calculate the portion - * of the buffer to "extract", i.e. to post as a separate entry in the - * transmit descriptor. For example, the combination - * @alignment = 8 and @copy_size = 64 will work okay on AMD Opteron boxes. - * - * Note: @copy_size should be a multiple of @alignment. In many practical - * cases @copy_size and @alignment will probably be equal. - * - * See also: vxge_hal_fifo_txdl_buffer_set_aligned(). - */ -u32 -vxge_hal_check_alignment( - dma_addr_t dma_pointer, - u32 size, - u32 alignment, - u32 copy_size) -{ - u32 misaligned_size; - - misaligned_size = (int)(dma_pointer & (alignment - 1)); - if (!misaligned_size) { - return (0); - } - - if (size > copy_size) { - misaligned_size = (int)(dma_pointer & (copy_size - 1)); - misaligned_size = copy_size - misaligned_size; - } else { - misaligned_size = size; - } - - return (misaligned_size); -} Index: sys/dev/vxge/vxgehal/vxgehal-mrpcim-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-mrpcim-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-mrpcim-reg.h @@ -1,10617 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_MRPCIM_REGS_H -#define VXGE_HAL_MRPCIM_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_mrpcim_reg_t { - -/* 0x00000 */ u64 g3fbct_int_status; -#define VXGE_HAL_G3FBCT_INT_STATUS_ERR_G3IF_INT mBIT(0) -/* 0x00008 */ u64 g3fbct_int_mask; -/* 0x00010 */ u64 g3fbct_err_reg; -#define VXGE_HAL_G3FBCT_ERR_REG_G3IF_SM_ERR mBIT(4) -#define VXGE_HAL_G3FBCT_ERR_REG_G3IF_GDDR3_DECC mBIT(5) -#define VXGE_HAL_G3FBCT_ERR_REG_G3IF_GDDR3_U_DECC mBIT(6) -#define VXGE_HAL_G3FBCT_ERR_REG_G3IF_CTRL_FIFO_DECC mBIT(7) -#define VXGE_HAL_G3FBCT_ERR_REG_G3IF_GDDR3_SECC mBIT(29) -#define VXGE_HAL_G3FBCT_ERR_REG_G3IF_GDDR3_U_SECC mBIT(30) -#define VXGE_HAL_G3FBCT_ERR_REG_G3IF_CTRL_FIFO_SECC mBIT(31) -/* 0x00018 */ u64 g3fbct_err_mask; -/* 0x00020 */ u64 g3fbct_err_alarm; -/* 0x00028 */ u64 g3fbct_config0; -#define VXGE_HAL_G3FBCT_CONFIG0_RD_CMD_LATENCY_RPATH(val) vBIT(val, 5, 3) -#define VXGE_HAL_G3FBCT_CONFIG0_RD_CMD_LATENCY(val) vBIT(val, 13, 3) -#define VXGE_HAL_G3FBCT_CONFIG0_REFRESH_PER(val) vBIT(val, 16, 16) -#define VXGE_HAL_G3FBCT_CONFIG0_TRC(val) vBIT(val, 35, 5) -#define VXGE_HAL_G3FBCT_CONFIG0_TRRD(val) vBIT(val, 44, 4) -#define VXGE_HAL_G3FBCT_CONFIG0_TFAW(val) vBIT(val, 50, 6) -#define VXGE_HAL_G3FBCT_CONFIG0_RD_FIFO_THR(val) vBIT(val, 58, 6) -/* 0x00030 */ u64 g3fbct_config1; -#define VXGE_HAL_G3FBCT_CONFIG1_BIC_THR(val) vBIT(val, 3, 5) -#define VXGE_HAL_G3FBCT_CONFIG1_BIC_OFF mBIT(15) -#define VXGE_HAL_G3FBCT_CONFIG1_IGNORE_BEM mBIT(23) -#define VXGE_HAL_G3FBCT_CONFIG1_RD_SAMPLING(val) vBIT(val, 29, 3) -#define VXGE_HAL_G3FBCT_CONFIG1_CMD_START_PHASE mBIT(39) -#define VXGE_HAL_G3FBCT_CONFIG1_BIC_HI_THR(val) vBIT(val, 43, 5) -#define VXGE_HAL_G3FBCT_CONFIG1_BIC_MODE(val) vBIT(val, 54, 2) -#define VXGE_HAL_G3FBCT_CONFIG1_ECC_ENABLE(val) vBIT(val, 57, 7) -/* 0x00038 */ u64 g3fbct_config2; -#define VXGE_HAL_G3FBCT_CONFIG2_DEV_USE_ENABLE(val) vBIT(val, 6, 2) -#define VXGE_HAL_G3FBCT_CONFIG2_DEV_USE_VALUE(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3FBCT_CONFIG2_ARBITER_CTRL(val) vBIT(val, 22, 2) -#define VXGE_HAL_G3FBCT_CONFIG2_DEFINE_CAD mBIT(31) -#define VXGE_HAL_G3FBCT_CONFIG2_DEFINE_NOP_AD mBIT(39) -#define VXGE_HAL_G3FBCT_CONFIG2_LAST_CADD(val) vBIT(val, 43, 13) -/* 0x00040 */ u64 g3fbct_init0; -#define VXGE_HAL_G3FBCT_INIT0_MRS_BAD(val) vBIT(val, 5, 3) -#define VXGE_HAL_G3FBCT_INIT0_MRS_WL(val) vBIT(val, 13, 3) -#define VXGE_HAL_G3FBCT_INIT0_MRS_DLL mBIT(23) -#define VXGE_HAL_G3FBCT_INIT0_MRS_TM mBIT(39) -#define VXGE_HAL_G3FBCT_INIT0_MRS_CL(val) vBIT(val, 44, 4) -#define VXGE_HAL_G3FBCT_INIT0_MRS_BT mBIT(55) -#define VXGE_HAL_G3FBCT_INIT0_MRS_BL(val) vBIT(val, 62, 2) -/* 0x00048 */ u64 g3fbct_init1; -#define VXGE_HAL_G3FBCT_INIT1_EMRS_BAD(val) vBIT(val, 5, 3) -#define VXGE_HAL_G3FBCT_INIT1_EMRS_AD_TER mBIT(15) -#define VXGE_HAL_G3FBCT_INIT1_EMRS_ID mBIT(23) -#define VXGE_HAL_G3FBCT_INIT1_EMRS_RON mBIT(39) -#define VXGE_HAL_G3FBCT_INIT1_EMRS_AL mBIT(47) -#define VXGE_HAL_G3FBCT_INIT1_EMRS_TWR(val) vBIT(val, 53, 3) -#define VXGE_HAL_G3FBCT_INIT1_EMRS_DQ_TER(val) vBIT(val, 62, 2) -/* 0x00050 */ u64 g3fbct_init2; -#define VXGE_HAL_G3FBCT_INIT2_EMRS_DR_STR(val) vBIT(val, 6, 2) -#define VXGE_HAL_G3FBCT_INIT2_START_INI mBIT(15) -#define VXGE_HAL_G3FBCT_INIT2_POWER_UP_DELAY(val) vBIT(val, 16, 24) -#define VXGE_HAL_G3FBCT_INIT2_ACTIVE_CMD_DELAY(val) vBIT(val, 40, 24) -/* 0x00058 */ u64 g3fbct_init3; -#define VXGE_HAL_G3FBCT_INIT3_TRP_DELAY(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3FBCT_INIT3_TMRD_DELAY(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3FBCT_INIT3_TWR2PRE_DELAY(val) vBIT(val, 16, 8) -#define VXGE_HAL_G3FBCT_INIT3_TRD2PRE_DELAY(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3FBCT_INIT3_TRCDR_DELAY(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3FBCT_INIT3_TRCDW_DELAY(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3FBCT_INIT3_TWR2RD_DELAY(val) vBIT(val, 48, 8) -#define VXGE_HAL_G3FBCT_INIT3_TRD2WR_DELAY(val) vBIT(val, 56, 8) -/* 0x00060 */ u64 g3fbct_init4; -#define VXGE_HAL_G3FBCT_INIT4_TRFC_DELAY(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3FBCT_INIT4_REFRESH_BURSTS(val) vBIT(val, 12, 4) -#define VXGE_HAL_G3FBCT_INIT4_CKE_INIT_VAL mBIT(31) -#define VXGE_HAL_G3FBCT_INIT4_VENDOR_ID(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3FBCT_INIT4_OOO_DEPTH(val) vBIT(val, 42, 6) -#define VXGE_HAL_G3FBCT_INIT4_ICTRL_INIT_DONE mBIT(55) -#define VXGE_HAL_G3FBCT_INIT4_IOCAL_WAIT_DISABLE mBIT(63) -/* 0x00068 */ u64 g3fbct_init5; -#define VXGE_HAL_G3FBCT_INIT5_TRAS_DELAY(val) vBIT(val, 3, 5) -#define VXGE_HAL_G3FBCT_INIT5_TVID_DELAY(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3FBCT_INIT5_TWR_APRE2CMD(val) vBIT(val, 16, 8) -#define VXGE_HAL_G3FBCT_INIT5_TRD_APRE2CMD(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3FBCT_INIT5_TWR_APRE2CMD_CON(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3FBCT_INIT5_GDDR3_DLL_DELAY(val) vBIT(val, 40, 24) -/* 0x00070 */ u64 g3fbct_dll_training1; -#define VXGE_HAL_G3FBCT_DLL_TRAINING1_DLL_TRA_DATA00(val) vBIT(val, 0, 64) -/* 0x00078 */ u64 g3fbct_dll_training2; -#define VXGE_HAL_G3FBCT_DLL_TRAINING2_DLL_TRA_DATA01(val) vBIT(val, 0, 64) -/* 0x00080 */ u64 g3fbct_dll_training3; -#define VXGE_HAL_G3FBCT_DLL_TRAINING3_DLL_TRA_DATA10(val) vBIT(val, 0, 64) -/* 0x00088 */ u64 g3fbct_dll_training4; -#define VXGE_HAL_G3FBCT_DLL_TRAINING4_DLL_TRA_DATA11(val) vBIT(val, 0, 64) -/* 0x00090 */ u64 g3fbct_dll_training6; -#define VXGE_HAL_G3FBCT_DLL_TRAINING6_DLL_TRA_DATA20(val) vBIT(val, 0, 64) -/* 0x00098 */ u64 g3fbct_dll_training7; -#define VXGE_HAL_G3FBCT_DLL_TRAINING7_DLL_TRA_DATA21(val) vBIT(val, 0, 64) -/* 0x000a0 */ u64 g3fbct_dll_training8; -#define VXGE_HAL_G3FBCT_DLL_TRAINING8_DLL_TRA_DATA30(val) vBIT(val, 0, 64) -/* 0x000a8 */ u64 g3fbct_dll_training9; -#define VXGE_HAL_G3FBCT_DLL_TRAINING9_DLL_TRA_DATA31(val) vBIT(val, 0, 64) -/* 0x000b0 */ u64 g3fbct_dll_training5; -#define VXGE_HAL_G3FBCT_DLL_TRAINING5_DLL_TRA_RADD(val) vBIT(val, 2, 14) -#define VXGE_HAL_G3FBCT_DLL_TRAINING5_DLL_TRA_CADD0(val) vBIT(val, 21, 11) -#define VXGE_HAL_G3FBCT_DLL_TRAINING5_DLL_TRA_CADD1(val) vBIT(val, 37, 11) -/* 0x000b8 */ u64 g3fbct_dll_training10; -#define VXGE_HAL_G3FBCT_DLL_TRAINING10_DLL_TP_READS(val) vBIT(val, 4, 4) -#define VXGE_HAL_G3FBCT_DLL_TRAINING10_DLL_SAMPLES(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3FBCT_DLL_TRAINING10_TRA_LOOPS(val) vBIT(val, 18, 14) -#define VXGE_HAL_G3FBCT_DLL_TRAINING10_TRA_PASS_CNT(val) vBIT(val, 33, 7) -#define VXGE_HAL_G3FBCT_DLL_TRAINING10_TRA_STEP(val) vBIT(val, 41, 7) -/* 0x000c0 */ u64 g3fbct_dll_training11; -#define VXGE_HAL_G3FBCT_DLL_TRAINING11_ICTRL_DLL_TRA_CNT(val) vBIT(val, 0, 48) -#define VXGE_HAL_G3FBCT_DLL_TRAINING11_ICTRL_DLL_TRA_DIS(val) vBIT(val, 54, 2) -/* 0x000c8 */ u64 g3fbct_init6; -#define VXGE_HAL_G3FBCT_INIT6_TWR_APRE2RD_DELAY(val) vBIT(val, 4, 4) -#define VXGE_HAL_G3FBCT_INIT6_TWR_APRE2WR_DELAY(val) vBIT(val, 12, 4) -#define VXGE_HAL_G3FBCT_INIT6_TWR_APRE2PRE_DELAY(val) vBIT(val, 20, 4) -#define VXGE_HAL_G3FBCT_INIT6_TWR_APRE2ACT_DELAY(val) vBIT(val, 28, 4) -#define VXGE_HAL_G3FBCT_INIT6_TRD_APRE2RD_DELAY(val) vBIT(val, 36, 4) -#define VXGE_HAL_G3FBCT_INIT6_TRD_APRE2WR_DELAY(val) vBIT(val, 44, 4) -#define VXGE_HAL_G3FBCT_INIT6_TRD_APRE2PRE_DELAY(val) vBIT(val, 52, 4) -#define VXGE_HAL_G3FBCT_INIT6_TRD_APRE2ACT_DELAY(val) vBIT(val, 60, 4) -/* 0x000d0 */ u64 g3fbct_test0; -#define VXGE_HAL_G3FBCT_TEST0_TEST_START_RADD(val) vBIT(val, 2, 14) -#define VXGE_HAL_G3FBCT_TEST0_TEST_END_RADD(val) vBIT(val, 18, 14) -#define VXGE_HAL_G3FBCT_TEST0_TEST_START_CADD(val) vBIT(val, 37, 11) -#define VXGE_HAL_G3FBCT_TEST0_TEST_END_CADD(val) vBIT(val, 53, 11) -/* 0x000d8 */ u64 g3fbct_test01; -#define VXGE_HAL_G3FBCT_TEST01_TEST_BANK(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3FBCT_TEST01_TEST_CTRL(val) vBIT(val, 12, 4) -#define VXGE_HAL_G3FBCT_TEST01_TEST_MODE mBIT(23) -#define VXGE_HAL_G3FBCT_TEST01_TEST_GO mBIT(31) -#define VXGE_HAL_G3FBCT_TEST01_TEST_DONE mBIT(39) -#define VXGE_HAL_G3FBCT_TEST01_ECC_DEC_TEST_FAIL_CNTR(val) vBIT(val, 40, 16) -#define VXGE_HAL_G3FBCT_TEST01_TEST_DATA_ADDR mBIT(63) -/* 0x000e0 */ u64 g3fbct_test1; -#define VXGE_HAL_G3FBCT_TEST1_TX_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x000e8 */ u64 g3fbct_test2; -#define VXGE_HAL_G3FBCT_TEST2_TX_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x000f0 */ u64 g3fbct_test11; -#define VXGE_HAL_G3FBCT_TEST11_TX_TEST_DATA1(val) vBIT(val, 0, 64) -/* 0x000f8 */ u64 g3fbct_test21; -#define VXGE_HAL_G3FBCT_TEST21_TX_TEST_DATA1(val) vBIT(val, 0, 64) -/* 0x00100 */ u64 g3fbct_test3; -#define VXGE_HAL_G3FBCT_TEST3_ECC_DEC_RX_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x00108 */ u64 g3fbct_test4; -#define VXGE_HAL_G3FBCT_TEST4_ECC_DEC_RX_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x00110 */ u64 g3fbct_test31; -#define VXGE_HAL_G3FBCT_TEST31_ECC_DEC_RX_TEST_DATA1(val) vBIT(val, 0, 64) -/* 0x00118 */ u64 g3fbct_test41; -#define VXGE_HAL_G3FBCT_TEST41_ECC_DEC_RX_TEST_DATA1(val) vBIT(val, 0, 64) -/* 0x00120 */ u64 g3fbct_test5; -#define VXGE_HAL_G3FBCT_TEST5_ECC_DEC_RX_FAILED_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x00128 */ u64 g3fbct_test6; -#define VXGE_HAL_G3FBCT_TEST6_ECC_DEC_RX_FAILED_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x00130 */ u64 g3fbct_test51; -#define VXGE_HAL_G3FBCT_TEST51_ECC_DEC_RX_FAILED_TEST_DATA1(val)\ - vBIT(val, 0, 64) -/* 0x00138 */ u64 g3fbct_test61; -#define VXGE_HAL_G3FBCT_TEST61_ECC_DEC_RX_FAILED_TEST_DATA1(val)\ - vBIT(val, 0, 64) -/* 0x00140 */ u64 g3fbct_test7; -#define VXGE_HAL_G3FBCT_TEST7_ECC_DEC_TEST_FAILED_RADD(val) vBIT(val, 0, 14) -#define VXGE_HAL_G3FBCT_TEST7_ECC_DEC_TEST_FAILED_CADD(val) vBIT(val, 19, 11) -#define VXGE_HAL_G3FBCT_TEST7_ECC_DEC_TEST_FAILED_BANK(val) vBIT(val, 32, 8) -/* 0x00148 */ u64 g3fbct_test71; -#define VXGE_HAL_G3FBCT_TEST71_ECC_DEC_TEST_FAILED_RADD1(val) vBIT(val, 0, 14) -#define VXGE_HAL_G3FBCT_TEST71_ECC_DEC_TEST_FAILED_CADD1(val) vBIT(val, 19, 11) -#define VXGE_HAL_G3FBCT_TEST71_ECC_DEC_TEST_FAILED_BANK1(val) vBIT(val, 32, 8) - u8 unused001b0[0x001b0 - 0x00150]; - -/* 0x001b0 */ u64 g3fbct_loop_back; -#define VXGE_HAL_G3FBCT_LOOP_BACK_TDATA(val) vBIT(val, 0, 32) -#define VXGE_HAL_G3FBCT_LOOP_BACK_MODE mBIT(39) -#define VXGE_HAL_G3FBCT_LOOP_BACK_GO mBIT(47) -#define VXGE_HAL_G3FBCT_LOOP_BACK_DONE mBIT(55) -#define VXGE_HAL_G3FBCT_LOOP_BACK_RDLL_IDLE_VAL(val) vBIT(val, 56, 8) -/* 0x001b8 */ u64 g3fbct_loop_back1; -#define VXGE_HAL_G3FBCT_LOOP_BACK1_RDLL_START_VAL(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK1_RDLL_END_VAL(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK1_WDLL_IDLE_VAL(val) vBIT(val, 16, 8) -#define VXGE_HAL_G3FBCT_LOOP_BACK1_WDLL_START_VAL(val) vBIT(val, 25, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK1_WDLL_END_VAL(val) vBIT(val, 33, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK1_STEPS(val) vBIT(val, 45, 3) -#define VXGE_HAL_G3FBCT_LOOP_BACK1_RDLL_MIN_FILTER(val) vBIT(val, 49, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK1_RDLL_MAX_FILTER(val) vBIT(val, 57, 7) -/* 0x001c0 */ u64 g3fbct_loop_back2; -#define VXGE_HAL_G3FBCT_LOOP_BACK2_WDLL_MIN_FILTER(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK2_WDLL_MAX_FILTER(val) vBIT(val, 9, 7) -/* 0x001c8 */ u64 g3fbct_loop_back3; -#define VXGE_HAL_G3FBCT_LOOP_BACK3_LBCTRL_CM_RDLL_RESULT(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3FBCT_LOOP_BACK3_LBCTRL_CM_WDLL_RESULT(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3FBCT_LOOP_BACK3_LBCTRL_CM_RDLL_MON_RESULT(val)\ - vBIT(val, 16, 8) -/* 0x001d0 */ u64 g3fbct_loop_back4; -#define VXGE_HAL_G3FBCT_LOOP_BACK4_LBCTRL_IO_PASS_FAILN(val) vBIT(val, 0, 32) -/* 0x001d8 */ u64 g3fbct_loop_back5; -#define VXGE_HAL_G3FBCT_LOOP_BACK5_RDLL_START_IO_VAL(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK5_RDLL_END_IO_VAL(val) vBIT(val, 9, 7) - u8 unused00200[0x00200 - 0x001e0]; - -/* 0x00200 */ u64 g3fbct_loop_back_rdll[4]; -#define VXGE_HAL_G3FBCT_LOOP_BACK_RDLL_LBCTRL_MIN_VAL(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK_RDLL_LBCTRL_MAX_VAL(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK_RDLL_LBCTRL_MON_MIN_VAL(val) vBIT(val, 17, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK_RDLL_LBCTRL_MON_MAX_VAL(val) vBIT(val, 25, 7) -/* 0x00220 */ u64 g3fbct_loop_back_wdll[4]; -#define VXGE_HAL_G3FBCT_LOOP_BACK_WDLL_LBCTRL_MIN_VAL(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3FBCT_LOOP_BACK_WDLL_LBCTRL_MAX_VAL(val) vBIT(val, 9, 7) -/* 0x00240 */ u64 g3fbct_tran_wrd_cnt; -#define VXGE_HAL_G3FBCT_TRAN_WRD_CNT_CTRL_PIPE_WR(val) vBIT(val, 0, 32) -#define VXGE_HAL_G3FBCT_TRAN_WRD_CNT_CTRL_PIPE_RD(val) vBIT(val, 32, 32) -/* 0x00248 */ u64 g3fbct_tran_ap_cnt; -#define VXGE_HAL_G3FBCT_TRAN_AP_CNT_CTRL_PIPE_ACT(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3FBCT_TRAN_AP_CNT_CTRL_PIPE_PRE(val) vBIT(val, 16, 16) -#define VXGE_HAL_G3FBCT_TRAN_AP_CNT_UPDATE mBIT(39) -/* 0x00250 */ u64 g3fbct_g3bist; -#define VXGE_HAL_G3FBCT_G3BIST_DISABLE_MAIN mBIT(7) -#define VXGE_HAL_G3FBCT_G3BIST_DISABLE_ICTRL mBIT(15) -#define VXGE_HAL_G3FBCT_G3BIST_BTCTRL_STATUS_MAIN(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3FBCT_G3BIST_BTCTRL_STATUS_ICTRL(val) vBIT(val, 29, 3) - u8 unused00a00[0x00a00 - 0x00258]; - -/* 0x00a00 */ u64 wrdma_int_status; -#define VXGE_HAL_WRDMA_INT_STATUS_RC_ALARM_RC_INT mBIT(0) -#define VXGE_HAL_WRDMA_INT_STATUS_RXDRM_SM_ERR_RXDRM_INT mBIT(1) -#define VXGE_HAL_WRDMA_INT_STATUS_RXDCM_SM_ERR_RXDCM_SM_INT mBIT(2) -#define VXGE_HAL_WRDMA_INT_STATUS_RXDWM_SM_ERR_RXDWM_INT mBIT(3) -#define VXGE_HAL_WRDMA_INT_STATUS_RDA_ERR_RDA_INT mBIT(6) -#define VXGE_HAL_WRDMA_INT_STATUS_RDA_ECC_DB_RDA_ECC_DB_INT mBIT(8) -#define VXGE_HAL_WRDMA_INT_STATUS_RDA_ECC_SG_RDA_ECC_SG_INT mBIT(9) -#define VXGE_HAL_WRDMA_INT_STATUS_FRF_ALARM_FRF_INT mBIT(12) -#define VXGE_HAL_WRDMA_INT_STATUS_ROCRC_ALARM_ROCRC_INT mBIT(13) -#define VXGE_HAL_WRDMA_INT_STATUS_WDE0_ALARM_WDE0_INT mBIT(14) -#define VXGE_HAL_WRDMA_INT_STATUS_WDE1_ALARM_WDE1_INT mBIT(15) -#define VXGE_HAL_WRDMA_INT_STATUS_WDE2_ALARM_WDE2_INT mBIT(16) -#define VXGE_HAL_WRDMA_INT_STATUS_WDE3_ALARM_WDE3_INT mBIT(17) -/* 0x00a08 */ u64 wrdma_int_mask; -/* 0x00a10 */ u64 rc_alarm_reg; -#define VXGE_HAL_RC_ALARM_REG_FTC_SM_ERR mBIT(0) -#define VXGE_HAL_RC_ALARM_REG_FTC_SM_PHASE_ERR mBIT(1) -#define VXGE_HAL_RC_ALARM_REG_BTDWM_SM_ERR mBIT(2) -#define VXGE_HAL_RC_ALARM_REG_BTC_SM_ERR mBIT(3) -#define VXGE_HAL_RC_ALARM_REG_BTDCM_SM_ERR mBIT(4) -#define VXGE_HAL_RC_ALARM_REG_BTDRM_SM_ERR mBIT(5) -#define VXGE_HAL_RC_ALARM_REG_RMM_RXD_RC_ECC_DB_ERR mBIT(6) -#define VXGE_HAL_RC_ALARM_REG_RMM_RXD_RC_ECC_SG_ERR mBIT(7) -#define VXGE_HAL_RC_ALARM_REG_RHS_RXD_RHS_ECC_DB_ERR mBIT(8) -#define VXGE_HAL_RC_ALARM_REG_RHS_RXD_RHS_ECC_SG_ERR mBIT(9) -#define VXGE_HAL_RC_ALARM_REG_RMM_SM_ERR mBIT(10) -#define VXGE_HAL_RC_ALARM_REG_BTC_VPATH_MISMATCH_ERR mBIT(12) -/* 0x00a18 */ u64 rc_alarm_mask; -/* 0x00a20 */ u64 rc_alarm_alarm; -/* 0x00a28 */ u64 rxdrm_sm_err_reg; -#define VXGE_HAL_RXDRM_SM_ERR_REG_PRC_VP(n) mBIT(n) -/* 0x00a30 */ u64 rxdrm_sm_err_mask; -/* 0x00a38 */ u64 rxdrm_sm_err_alarm; -/* 0x00a40 */ u64 rxdcm_sm_err_reg; -#define VXGE_HAL_RXDCM_SM_ERR_REG_PRC_VP(n) mBIT(n) -/* 0x00a48 */ u64 rxdcm_sm_err_mask; -/* 0x00a50 */ u64 rxdcm_sm_err_alarm; -/* 0x00a58 */ u64 rxdwm_sm_err_reg; -#define VXGE_HAL_RXDWM_SM_ERR_REG_PRC_VP(n) mBIT(n) -/* 0x00a60 */ u64 rxdwm_sm_err_mask; -/* 0x00a68 */ u64 rxdwm_sm_err_alarm; -/* 0x00a70 */ u64 rda_err_reg; -#define VXGE_HAL_RDA_ERR_REG_RDA_SM0_ERR_ALARM mBIT(0) -#define VXGE_HAL_RDA_ERR_REG_RDA_MISC_ERR mBIT(1) -#define VXGE_HAL_RDA_ERR_REG_RDA_PCIX_ERR mBIT(2) -#define VXGE_HAL_RDA_ERR_REG_RDA_RXD_ECC_DB_ERR mBIT(3) -#define VXGE_HAL_RDA_ERR_REG_RDA_FRM_ECC_DB_ERR mBIT(4) -#define VXGE_HAL_RDA_ERR_REG_RDA_UQM_ECC_DB_ERR mBIT(5) -#define VXGE_HAL_RDA_ERR_REG_RDA_IMM_ECC_DB_ERR mBIT(6) -#define VXGE_HAL_RDA_ERR_REG_RDA_TIM_ECC_DB_ERR mBIT(7) -/* 0x00a78 */ u64 rda_err_mask; -/* 0x00a80 */ u64 rda_err_alarm; -/* 0x00a88 */ u64 rda_ecc_db_reg; -#define VXGE_HAL_RDA_ECC_DB_REG_RDA_RXD_ERR(n) mBIT(n) -/* 0x00a90 */ u64 rda_ecc_db_mask; -/* 0x00a98 */ u64 rda_ecc_db_alarm; -/* 0x00aa0 */ u64 rda_ecc_sg_reg; -#define VXGE_HAL_RDA_ECC_SG_REG_RDA_RXD_ERR(n) mBIT(n) -/* 0x00aa8 */ u64 rda_ecc_sg_mask; -/* 0x00ab0 */ u64 rda_ecc_sg_alarm; -/* 0x00ab8 */ u64 rqa_err_reg; -#define VXGE_HAL_RQA_ERR_REG_RQA_SM_ERR_ALARM mBIT(0) -/* 0x00ac0 */ u64 rqa_err_mask; -/* 0x00ac8 */ u64 rqa_err_alarm; -/* 0x00ad0 */ u64 frf_alarm_reg; -#define VXGE_HAL_FRF_ALARM_REG_PRC_VP_FRF_SM_ERR(n) mBIT(n) -/* 0x00ad8 */ u64 frf_alarm_mask; -/* 0x00ae0 */ u64 frf_alarm_alarm; -/* 0x00ae8 */ u64 rocrc_alarm_reg; -#define VXGE_HAL_ROCRC_ALARM_REG_QCQ_QCC_BYP_ECC_DB mBIT(0) -#define VXGE_HAL_ROCRC_ALARM_REG_QCQ_QCC_BYP_ECC_SG mBIT(1) -#define VXGE_HAL_ROCRC_ALARM_REG_NOA_NMA_SM_ERR mBIT(2) -#define VXGE_HAL_ROCRC_ALARM_REG_NOA_IMMM_ECC_DB mBIT(3) -#define VXGE_HAL_ROCRC_ALARM_REG_NOA_IMMM_ECC_SG mBIT(4) -#define VXGE_HAL_ROCRC_ALARM_REG_UDQ_UMQM_ECC_DB mBIT(5) -#define VXGE_HAL_ROCRC_ALARM_REG_UDQ_UMQM_ECC_SG mBIT(6) -#define VXGE_HAL_ROCRC_ALARM_REG_NOA_RCBM_ECC_DB mBIT(11) -#define VXGE_HAL_ROCRC_ALARM_REG_NOA_RCBM_ECC_SG mBIT(12) -#define VXGE_HAL_ROCRC_ALARM_REG_QCQ_MULTI_EGB_RSVD_ERR mBIT(13) -#define VXGE_HAL_ROCRC_ALARM_REG_QCQ_MULTI_EGB_OWN_ERR mBIT(14) -#define VXGE_HAL_ROCRC_ALARM_REG_QCQ_MULTI_BYP_OWN_ERR mBIT(15) -#define VXGE_HAL_ROCRC_ALARM_REG_QCQ_OWN_NOT_ASSIGNED_ERR mBIT(16) -#define VXGE_HAL_ROCRC_ALARM_REG_QCQ_OWN_RSVD_SYNC_ERR mBIT(17) -#define VXGE_HAL_ROCRC_ALARM_REG_QCQ_LOST_EGB_ERR mBIT(18) -#define VXGE_HAL_ROCRC_ALARM_REG_RCQ_BYPQ0_OVERFLOW mBIT(19) -#define VXGE_HAL_ROCRC_ALARM_REG_RCQ_BYPQ1_OVERFLOW mBIT(20) -#define VXGE_HAL_ROCRC_ALARM_REG_RCQ_BYPQ2_OVERFLOW mBIT(21) -#define VXGE_HAL_ROCRC_ALARM_REG_NOA_WCT_CMD_FIFO_ERR mBIT(22) -/* 0x00af0 */ u64 rocrc_alarm_mask; -/* 0x00af8 */ u64 rocrc_alarm_alarm; -/* 0x00b00 */ u64 wde0_alarm_reg; -#define VXGE_HAL_WDE0_ALARM_REG_WDE0_DCC_SM_ERR mBIT(0) -#define VXGE_HAL_WDE0_ALARM_REG_WDE0_PRM_SM_ERR mBIT(1) -#define VXGE_HAL_WDE0_ALARM_REG_WDE0_CP_SM_ERR mBIT(2) -#define VXGE_HAL_WDE0_ALARM_REG_WDE0_CP_CMD_ERR mBIT(3) -#define VXGE_HAL_WDE0_ALARM_REG_WDE0_PCR_SM_ERR mBIT(4) -/* 0x00b08 */ u64 wde0_alarm_mask; -/* 0x00b10 */ u64 wde0_alarm_alarm; -/* 0x00b18 */ u64 wde1_alarm_reg; -#define VXGE_HAL_WDE1_ALARM_REG_WDE1_DCC_SM_ERR mBIT(0) -#define VXGE_HAL_WDE1_ALARM_REG_WDE1_PRM_SM_ERR mBIT(1) -#define VXGE_HAL_WDE1_ALARM_REG_WDE1_CP_SM_ERR mBIT(2) -#define VXGE_HAL_WDE1_ALARM_REG_WDE1_CP_CMD_ERR mBIT(3) -#define VXGE_HAL_WDE1_ALARM_REG_WDE1_PCR_SM_ERR mBIT(4) -/* 0x00b20 */ u64 wde1_alarm_mask; -/* 0x00b28 */ u64 wde1_alarm_alarm; -/* 0x00b30 */ u64 wde2_alarm_reg; -#define VXGE_HAL_WDE2_ALARM_REG_WDE2_DCC_SM_ERR mBIT(0) -#define VXGE_HAL_WDE2_ALARM_REG_WDE2_PRM_SM_ERR mBIT(1) -#define VXGE_HAL_WDE2_ALARM_REG_WDE2_CP_SM_ERR mBIT(2) -#define VXGE_HAL_WDE2_ALARM_REG_WDE2_CP_CMD_ERR mBIT(3) -#define VXGE_HAL_WDE2_ALARM_REG_WDE2_PCR_SM_ERR mBIT(4) -/* 0x00b38 */ u64 wde2_alarm_mask; -/* 0x00b40 */ u64 wde2_alarm_alarm; -/* 0x00b48 */ u64 wde3_alarm_reg; -#define VXGE_HAL_WDE3_ALARM_REG_WDE3_DCC_SM_ERR mBIT(0) -#define VXGE_HAL_WDE3_ALARM_REG_WDE3_PRM_SM_ERR mBIT(1) -#define VXGE_HAL_WDE3_ALARM_REG_WDE3_CP_SM_ERR mBIT(2) -#define VXGE_HAL_WDE3_ALARM_REG_WDE3_CP_CMD_ERR mBIT(3) -#define VXGE_HAL_WDE3_ALARM_REG_WDE3_PCR_SM_ERR mBIT(4) -/* 0x00b50 */ u64 wde3_alarm_mask; -/* 0x00b58 */ u64 wde3_alarm_alarm; -/* 0x00b60 */ u64 rc_cfg; -#define VXGE_HAL_RC_CFG_RXD_ERR_MASK(val) vBIT(val, 0, 4) -#define VXGE_HAL_RC_CFG_RXD_RD_RO mBIT(12) -#define VXGE_HAL_RC_CFG_FIXED_BUFFER_SIZE mBIT(13) -#define VXGE_HAL_RC_CFG_ENABLE_VP_CFG_CHANGE_WHILE_BUSY mBIT(14) -#define VXGE_HAL_RC_CFG_PRESERVE_BUFFER_SIZE mBIT(15) -/* 0x00b68 */ u64 ecc_cfg; -#define VXGE_HAL_ECC_CFG_RXD_RC_ECC_ENABLE_N mBIT(0) -#define VXGE_HAL_ECC_CFG_RXD_RHS_ECC_ENABLE_N mBIT(1) -#define VXGE_HAL_ECC_CFG_NOA_IMMM_ECC_ENABLE_N mBIT(4) -#define VXGE_HAL_ECC_CFG_UDQ_UMQM_ECC_ENABLE_N mBIT(5) -#define VXGE_HAL_ECC_CFG_RCBM_CQB_ECC_ENABLE_N mBIT(7) -/* 0x00b70 */ u64 rxd_cfg_1bm; -#define VXGE_HAL_RXD_CFG_1BM_QW_SIZE(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG_1BM_QW2WRITE(val) vBIT(val, 8, 8) -#define VXGE_HAL_RXD_CFG_1BM_HCW_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG_1BM_RTH_VAL_QWOFF(val) vBIT(val, 29, 3) -#define VXGE_HAL_RXD_CFG_1BM_RTH_VAL_W0OFF(val) vBIT(val, 38, 2) -#define VXGE_HAL_RXD_CFG_1BM_RTH_VAL_W1OFF(val) vBIT(val, 46, 2) -#define VXGE_HAL_RXD_CFG_1BM_HEAD_OWN_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG_1BM_HEAD_OWN_BOFF(val) vBIT(val, 61, 3) -/* 0x00b78 */ u64 rxd_cfg1_1bm; -#define VXGE_HAL_RXD_CFG1_1BM_BUFF1_SIZE_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG1_1BM_TRSF_CODE_QWOFF(val) vBIT(val, 45, 3) -#define VXGE_HAL_RXD_CFG1_1BM_TRSF_CODE_BOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG1_1BM_RTH_BUCKET_DATA_QWOF(val) vBIT(val, 61, 3) -/* 0x00b80 */ u64 rxd_cfg2_1bm; -#define VXGE_HAL_RXD_CFG2_1BM_RTH_BUCKET_DATA_BOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG2_1BM_BUFF1_SIZE_WOFF(val) vBIT(val, 14, 2) -#define VXGE_HAL_RXD_CFG2_1BM_FRM_INFO_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG2_1BM_FRM_INFO_BOFF(val) vBIT(val, 61, 3) -/* 0x00b88 */ u64 rxd_cfg3_1bm; -#define VXGE_HAL_RXD_CFG3_1BM_BUFF1_PTR_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG3_1BM_TAIL_OWN_QWOFF(val) vBIT(val, 45, 3) -#define VXGE_HAL_RXD_CFG3_1BM_TAIL_OWN_BOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG3_1BM_HEAD_OWN_BIT_IDX(val) vBIT(val, 57, 3) -#define VXGE_HAL_RXD_CFG3_1BM_TAIL_OWN_BIT_IDX(val) vBIT(val, 61, 3) -/* 0x00b90 */ u64 rxd_cfg4_1bm; -#define VXGE_HAL_RXD_CFG4_1BM_L3C_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG4_1BM_L3C_WOFF(val) vBIT(val, 14, 2) -#define VXGE_HAL_RXD_CFG4_1BM_L4C_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG4_1BM_L4C_WOFF(val) vBIT(val, 30, 2) -#define VXGE_HAL_RXD_CFG4_1BM_VTAG_QWOFF(val) vBIT(val, 37, 3) -#define VXGE_HAL_RXD_CFG4_1BM_VTAG_WOFF(val) vBIT(val, 46, 2) -#define VXGE_HAL_RXD_CFG4_1BM_RTH_INFO_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG4_1BM_RTH_INFO_BOFF(val) vBIT(val, 61, 3) -/* 0x00b98 */ u64 rxd_cfg_3bm; -#define VXGE_HAL_RXD_CFG_3BM_QW_SIZE(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG_3BM_QW2WRITE(val) vBIT(val, 8, 8) -#define VXGE_HAL_RXD_CFG_3BM_HCW_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG_3BM_RTH_VAL_QWOFF(val) vBIT(val, 29, 3) -#define VXGE_HAL_RXD_CFG_3BM_RTH_VAL_W0OFF(val) vBIT(val, 38, 2) -#define VXGE_HAL_RXD_CFG_3BM_RTH_VAL_W1OFF(val) vBIT(val, 46, 2) -#define VXGE_HAL_RXD_CFG_3BM_HEAD_OWN_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG_3BM_HEAD_OWN_BOFF(val) vBIT(val, 61, 3) -/* 0x00ba0 */ u64 rxd_cfg1_3bm; -#define VXGE_HAL_RXD_CFG1_3BM_BUFF1_SIZE_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG1_3BM_BUFF2_SIZE_QWOFF(val) vBIT(val, 13, 3) -#define VXGE_HAL_RXD_CFG1_3BM_BUFF3_SIZE_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG1_3BM_TRSF_CODE_QWOFF(val) vBIT(val, 45, 3) -#define VXGE_HAL_RXD_CFG1_3BM_TRSF_CODE_BOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG1_3BM_RTH_BUCKET_DATA_QWOF(val) vBIT(val, 61, 3) -/* 0x00ba8 */ u64 rxd_cfg2_3bm; -#define VXGE_HAL_RXD_CFG2_3BM_RTH_BUCKET_DATA_BOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG2_3BM_BUFF1_SIZE_WOFF(val) vBIT(val, 14, 2) -#define VXGE_HAL_RXD_CFG2_3BM_BUFF2_SIZE_WOFF(val) vBIT(val, 22, 2) -#define VXGE_HAL_RXD_CFG2_3BM_BUFF3_SIZE_WOFF(val) vBIT(val, 30, 2) -#define VXGE_HAL_RXD_CFG2_3BM_FRM_INFO_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG2_3BM_FRM_INFO_BOFF(val) vBIT(val, 61, 3) -/* 0x00bb0 */ u64 rxd_cfg3_3bm; -#define VXGE_HAL_RXD_CFG3_3BM_BUFF1_PTR_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG3_3BM_BUFF2_PTR_QWOFF(val) vBIT(val, 13, 3) -#define VXGE_HAL_RXD_CFG3_3BM_BUFF3_PTR_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG3_3BM_TAIL_OWN_QWOFF(val) vBIT(val, 45, 3) -#define VXGE_HAL_RXD_CFG3_3BM_TAIL_OWN_BOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG3_3BM_HEAD_OWN_BIT_IDX(val) vBIT(val, 57, 3) -#define VXGE_HAL_RXD_CFG3_3BM_TAIL_OWN_BIT_IDX(val) vBIT(val, 61, 3) -/* 0x00bb8 */ u64 rxd_cfg4_3bm; -#define VXGE_HAL_RXD_CFG4_3BM_L3C_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG4_3BM_L3C_WOFF(val) vBIT(val, 14, 2) -#define VXGE_HAL_RXD_CFG4_3BM_L4C_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG4_3BM_L4C_WOFF(val) vBIT(val, 30, 2) -#define VXGE_HAL_RXD_CFG4_3BM_VTAG_QWOFF(val) vBIT(val, 37, 3) -#define VXGE_HAL_RXD_CFG4_3BM_VTAG_WOFF(val) vBIT(val, 46, 2) -#define VXGE_HAL_RXD_CFG4_3BM_RTH_INFO_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG4_3BM_RTH_INFO_BOFF(val) vBIT(val, 61, 3) -/* 0x00bc0 */ u64 rxd_cfg_5bm; -#define VXGE_HAL_RXD_CFG_5BM_QW_SIZE(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG_5BM_QW2WRITE(val) vBIT(val, 8, 8) -#define VXGE_HAL_RXD_CFG_5BM_HCW_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG_5BM_RTH_VAL_QWOFF(val) vBIT(val, 29, 3) -#define VXGE_HAL_RXD_CFG_5BM_RTH_VAL_W0OFF(val) vBIT(val, 38, 2) -#define VXGE_HAL_RXD_CFG_5BM_RTH_VAL_W1OFF(val) vBIT(val, 46, 2) -#define VXGE_HAL_RXD_CFG_5BM_HEAD_OWN_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG_5BM_HEAD_OWN_BOFF(val) vBIT(val, 61, 3) -/* 0x00bc8 */ u64 rxd_cfg1_5bm; -#define VXGE_HAL_RXD_CFG1_5BM_BUFF1_SIZE_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG1_5BM_BUFF2_SIZE_QWOFF(val) vBIT(val, 13, 3) -#define VXGE_HAL_RXD_CFG1_5BM_BUFF3_SIZE_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG1_5BM_BUFF4_SIZE_QWOFF(val) vBIT(val, 29, 3) -#define VXGE_HAL_RXD_CFG1_5BM_BUFF5_SIZE_QWOFF(val) vBIT(val, 37, 3) -#define VXGE_HAL_RXD_CFG1_5BM_TRSF_CODE_QWOFF(val) vBIT(val, 45, 3) -#define VXGE_HAL_RXD_CFG1_5BM_TRSF_CODE_BOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG1_5BM_RTH_BUCKET_DATA_QWOF(val) vBIT(val, 61, 3) -/* 0x00bd0 */ u64 rxd_cfg2_5bm; -#define VXGE_HAL_RXD_CFG2_5BM_RTH_BUCKET_DATA_BOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG2_5BM_BUFF1_SIZE_WOFF(val) vBIT(val, 14, 2) -#define VXGE_HAL_RXD_CFG2_5BM_BUFF2_SIZE_WOFF(val) vBIT(val, 22, 2) -#define VXGE_HAL_RXD_CFG2_5BM_BUFF3_SIZE_WOFF(val) vBIT(val, 30, 2) -#define VXGE_HAL_RXD_CFG2_5BM_BUFF4_SIZE_WOFF(val) vBIT(val, 38, 2) -#define VXGE_HAL_RXD_CFG2_5BM_BUFF5_SIZE_WOFF(val) vBIT(val, 46, 2) -#define VXGE_HAL_RXD_CFG2_5BM_FRM_INFO_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG2_5BM_FRM_INFO_BOFF(val) vBIT(val, 61, 3) -/* 0x00bd8 */ u64 rxd_cfg3_5bm; -#define VXGE_HAL_RXD_CFG3_5BM_BUFF1_PTR_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG3_5BM_BUFF2_PTR_QWOFF(val) vBIT(val, 13, 3) -#define VXGE_HAL_RXD_CFG3_5BM_BUFF3_PTR_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG3_5BM_BUFF4_PTR_QWOFF(val) vBIT(val, 29, 3) -#define VXGE_HAL_RXD_CFG3_5BM_BUFF5_PTR_QWOFF(val) vBIT(val, 37, 3) -#define VXGE_HAL_RXD_CFG3_5BM_TAIL_OWN_QWOFF(val) vBIT(val, 45, 3) -#define VXGE_HAL_RXD_CFG3_5BM_TAIL_OWN_BOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG3_5BM_HEAD_OWN_BIT_IDX(val) vBIT(val, 57, 3) -#define VXGE_HAL_RXD_CFG3_5BM_TAIL_OWN_BIT_IDX(val) vBIT(val, 61, 3) -/* 0x00be0 */ u64 rxd_cfg4_5bm; -#define VXGE_HAL_RXD_CFG4_5BM_L3C_QWOFF(val) vBIT(val, 5, 3) -#define VXGE_HAL_RXD_CFG4_5BM_L3C_WOFF(val) vBIT(val, 14, 2) -#define VXGE_HAL_RXD_CFG4_5BM_L4C_QWOFF(val) vBIT(val, 21, 3) -#define VXGE_HAL_RXD_CFG4_5BM_L4C_WOFF(val) vBIT(val, 30, 2) -#define VXGE_HAL_RXD_CFG4_5BM_VTAG_QWOFF(val) vBIT(val, 37, 3) -#define VXGE_HAL_RXD_CFG4_5BM_VTAG_WOFF(val) vBIT(val, 46, 2) -#define VXGE_HAL_RXD_CFG4_5BM_RTH_INFO_QWOFF(val) vBIT(val, 53, 3) -#define VXGE_HAL_RXD_CFG4_5BM_RTH_INFO_BOFF(val) vBIT(val, 61, 3) -/* 0x00be8 */ u64 rx_w_round_robin_0; -#define VXGE_HAL_RX_W_ROUND_ROBIN_0_RX_W_PRIORITY_SS_0(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_0_RX_W_PRIORITY_SS_1(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_0_RX_W_PRIORITY_SS_2(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_0_RX_W_PRIORITY_SS_3(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_0_RX_W_PRIORITY_SS_4(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_0_RX_W_PRIORITY_SS_5(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_0_RX_W_PRIORITY_SS_6(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_0_RX_W_PRIORITY_SS_7(val) vBIT(val, 59, 5) -/* 0x00bf0 */ u64 rx_w_round_robin_1; -#define VXGE_HAL_RX_W_ROUND_ROBIN_1_RX_W_PRIORITY_SS_8(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_1_RX_W_PRIORITY_SS_9(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_1_RX_W_PRIORITY_SS_10(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_1_RX_W_PRIORITY_SS_11(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_1_RX_W_PRIORITY_SS_12(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_1_RX_W_PRIORITY_SS_13(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_1_RX_W_PRIORITY_SS_14(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_1_RX_W_PRIORITY_SS_15(val) vBIT(val, 59, 5) -/* 0x00bf8 */ u64 rx_w_round_robin_2; -#define VXGE_HAL_RX_W_ROUND_ROBIN_2_RX_W_PRIORITY_SS_16(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_2_RX_W_PRIORITY_SS_17(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_2_RX_W_PRIORITY_SS_18(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_2_RX_W_PRIORITY_SS_19(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_2_RX_W_PRIORITY_SS_20(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_2_RX_W_PRIORITY_SS_21(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_2_RX_W_PRIORITY_SS_22(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_2_RX_W_PRIORITY_SS_23(val) vBIT(val, 59, 5) -/* 0x00c00 */ u64 rx_w_round_robin_3; -#define VXGE_HAL_RX_W_ROUND_ROBIN_3_RX_W_PRIORITY_SS_24(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_3_RX_W_PRIORITY_SS_25(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_3_RX_W_PRIORITY_SS_26(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_3_RX_W_PRIORITY_SS_27(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_3_RX_W_PRIORITY_SS_28(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_3_RX_W_PRIORITY_SS_29(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_3_RX_W_PRIORITY_SS_30(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_3_RX_W_PRIORITY_SS_31(val) vBIT(val, 59, 5) -/* 0x00c08 */ u64 rx_w_round_robin_4; -#define VXGE_HAL_RX_W_ROUND_ROBIN_4_RX_W_PRIORITY_SS_32(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_4_RX_W_PRIORITY_SS_33(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_4_RX_W_PRIORITY_SS_34(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_4_RX_W_PRIORITY_SS_35(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_4_RX_W_PRIORITY_SS_36(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_4_RX_W_PRIORITY_SS_37(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_4_RX_W_PRIORITY_SS_38(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_4_RX_W_PRIORITY_SS_39(val) vBIT(val, 59, 5) -/* 0x00c10 */ u64 rx_w_round_robin_5; -#define VXGE_HAL_RX_W_ROUND_ROBIN_5_RX_W_PRIORITY_SS_40(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_5_RX_W_PRIORITY_SS_41(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_5_RX_W_PRIORITY_SS_42(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_5_RX_W_PRIORITY_SS_43(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_5_RX_W_PRIORITY_SS_44(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_5_RX_W_PRIORITY_SS_45(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_5_RX_W_PRIORITY_SS_46(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_5_RX_W_PRIORITY_SS_47(val) vBIT(val, 59, 5) -/* 0x00c18 */ u64 rx_w_round_robin_6; -#define VXGE_HAL_RX_W_ROUND_ROBIN_6_RX_W_PRIORITY_SS_48(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_6_RX_W_PRIORITY_SS_49(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_6_RX_W_PRIORITY_SS_50(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_6_RX_W_PRIORITY_SS_51(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_6_RX_W_PRIORITY_SS_52(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_6_RX_W_PRIORITY_SS_53(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_6_RX_W_PRIORITY_SS_54(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_6_RX_W_PRIORITY_SS_55(val) vBIT(val, 59, 5) -/* 0x00c20 */ u64 rx_w_round_robin_7; -#define VXGE_HAL_RX_W_ROUND_ROBIN_7_RX_W_PRIORITY_SS_56(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_7_RX_W_PRIORITY_SS_57(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_7_RX_W_PRIORITY_SS_58(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_7_RX_W_PRIORITY_SS_59(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_7_RX_W_PRIORITY_SS_60(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_7_RX_W_PRIORITY_SS_61(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_7_RX_W_PRIORITY_SS_62(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_7_RX_W_PRIORITY_SS_63(val) vBIT(val, 59, 5) -/* 0x00c28 */ u64 rx_w_round_robin_8; -#define VXGE_HAL_RX_W_ROUND_ROBIN_8_RX_W_PRIORITY_SS_64(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_8_RX_W_PRIORITY_SS_65(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_8_RX_W_PRIORITY_SS_66(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_8_RX_W_PRIORITY_SS_67(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_8_RX_W_PRIORITY_SS_68(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_8_RX_W_PRIORITY_SS_69(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_8_RX_W_PRIORITY_SS_70(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_8_RX_W_PRIORITY_SS_71(val) vBIT(val, 59, 5) -/* 0x00c30 */ u64 rx_w_round_robin_9; -#define VXGE_HAL_RX_W_ROUND_ROBIN_9_RX_W_PRIORITY_SS_72(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_9_RX_W_PRIORITY_SS_73(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_9_RX_W_PRIORITY_SS_74(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_9_RX_W_PRIORITY_SS_75(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_9_RX_W_PRIORITY_SS_76(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_9_RX_W_PRIORITY_SS_77(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_9_RX_W_PRIORITY_SS_78(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_9_RX_W_PRIORITY_SS_79(val) vBIT(val, 59, 5) -/* 0x00c38 */ u64 rx_w_round_robin_10; -#define VXGE_HAL_RX_W_ROUND_ROBIN_10_RX_W_PRIORITY_SS_80(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_10_RX_W_PRIORITY_SS_81(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_10_RX_W_PRIORITY_SS_82(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_10_RX_W_PRIORITY_SS_83(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_10_RX_W_PRIORITY_SS_84(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_10_RX_W_PRIORITY_SS_85(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_10_RX_W_PRIORITY_SS_86(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_10_RX_W_PRIORITY_SS_87(val) vBIT(val, 59, 5) -/* 0x00c40 */ u64 rx_w_round_robin_11; -#define VXGE_HAL_RX_W_ROUND_ROBIN_11_RX_W_PRIORITY_SS_88(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_11_RX_W_PRIORITY_SS_89(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_11_RX_W_PRIORITY_SS_90(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_11_RX_W_PRIORITY_SS_91(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_11_RX_W_PRIORITY_SS_92(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_11_RX_W_PRIORITY_SS_93(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_11_RX_W_PRIORITY_SS_94(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_11_RX_W_PRIORITY_SS_95(val) vBIT(val, 59, 5) -/* 0x00c48 */ u64 rx_w_round_robin_12; -#define VXGE_HAL_RX_W_ROUND_ROBIN_12_RX_W_PRIORITY_SS_96(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_12_RX_W_PRIORITY_SS_97(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_12_RX_W_PRIORITY_SS_98(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_12_RX_W_PRIORITY_SS_99(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_12_RX_W_PRIORITY_SS_100(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_12_RX_W_PRIORITY_SS_101(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_12_RX_W_PRIORITY_SS_102(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_12_RX_W_PRIORITY_SS_103(val) vBIT(val, 59, 5) -/* 0x00c50 */ u64 rx_w_round_robin_13; -#define VXGE_HAL_RX_W_ROUND_ROBIN_13_RX_W_PRIORITY_SS_104(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_13_RX_W_PRIORITY_SS_105(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_13_RX_W_PRIORITY_SS_106(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_13_RX_W_PRIORITY_SS_107(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_13_RX_W_PRIORITY_SS_108(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_13_RX_W_PRIORITY_SS_109(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_13_RX_W_PRIORITY_SS_110(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_13_RX_W_PRIORITY_SS_111(val) vBIT(val, 59, 5) -/* 0x00c58 */ u64 rx_w_round_robin_14; -#define VXGE_HAL_RX_W_ROUND_ROBIN_14_RX_W_PRIORITY_SS_112(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_14_RX_W_PRIORITY_SS_113(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_14_RX_W_PRIORITY_SS_114(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_14_RX_W_PRIORITY_SS_115(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_14_RX_W_PRIORITY_SS_116(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_14_RX_W_PRIORITY_SS_117(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_14_RX_W_PRIORITY_SS_118(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_14_RX_W_PRIORITY_SS_119(val) vBIT(val, 59, 5) -/* 0x00c60 */ u64 rx_w_round_robin_15; -#define VXGE_HAL_RX_W_ROUND_ROBIN_15_RX_W_PRIORITY_SS_120(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_15_RX_W_PRIORITY_SS_121(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_15_RX_W_PRIORITY_SS_122(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_15_RX_W_PRIORITY_SS_123(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_15_RX_W_PRIORITY_SS_124(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_15_RX_W_PRIORITY_SS_125(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_15_RX_W_PRIORITY_SS_126(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_15_RX_W_PRIORITY_SS_127(val) vBIT(val, 59, 5) -/* 0x00c68 */ u64 rx_w_round_robin_16; -#define VXGE_HAL_RX_W_ROUND_ROBIN_16_RX_W_PRIORITY_SS_128(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_16_RX_W_PRIORITY_SS_129(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_16_RX_W_PRIORITY_SS_130(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_16_RX_W_PRIORITY_SS_131(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_16_RX_W_PRIORITY_SS_132(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_16_RX_W_PRIORITY_SS_133(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_16_RX_W_PRIORITY_SS_134(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_16_RX_W_PRIORITY_SS_135(val) vBIT(val, 59, 5) -/* 0x00c70 */ u64 rx_w_round_robin_17; -#define VXGE_HAL_RX_W_ROUND_ROBIN_17_RX_W_PRIORITY_SS_136(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_17_RX_W_PRIORITY_SS_137(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_17_RX_W_PRIORITY_SS_138(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_17_RX_W_PRIORITY_SS_139(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_17_RX_W_PRIORITY_SS_140(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_17_RX_W_PRIORITY_SS_141(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_17_RX_W_PRIORITY_SS_142(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_17_RX_W_PRIORITY_SS_143(val) vBIT(val, 59, 5) -/* 0x00c78 */ u64 rx_w_round_robin_18; -#define VXGE_HAL_RX_W_ROUND_ROBIN_18_RX_W_PRIORITY_SS_144(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_18_RX_W_PRIORITY_SS_145(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_18_RX_W_PRIORITY_SS_146(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_18_RX_W_PRIORITY_SS_147(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_18_RX_W_PRIORITY_SS_148(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_18_RX_W_PRIORITY_SS_149(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_18_RX_W_PRIORITY_SS_150(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_18_RX_W_PRIORITY_SS_151(val) vBIT(val, 59, 5) -/* 0x00c80 */ u64 rx_w_round_robin_19; -#define VXGE_HAL_RX_W_ROUND_ROBIN_19_RX_W_PRIORITY_SS_152(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_19_RX_W_PRIORITY_SS_153(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_19_RX_W_PRIORITY_SS_154(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_19_RX_W_PRIORITY_SS_155(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_19_RX_W_PRIORITY_SS_156(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_19_RX_W_PRIORITY_SS_157(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_19_RX_W_PRIORITY_SS_158(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_19_RX_W_PRIORITY_SS_159(val) vBIT(val, 59, 5) -/* 0x00c88 */ u64 rx_w_round_robin_20; -#define VXGE_HAL_RX_W_ROUND_ROBIN_20_RX_W_PRIORITY_SS_160(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_20_RX_W_PRIORITY_SS_161(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_20_RX_W_PRIORITY_SS_162(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_20_RX_W_PRIORITY_SS_163(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_20_RX_W_PRIORITY_SS_164(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_20_RX_W_PRIORITY_SS_165(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_20_RX_W_PRIORITY_SS_166(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_20_RX_W_PRIORITY_SS_167(val) vBIT(val, 59, 5) -/* 0x00c90 */ u64 rx_w_round_robin_21; -#define VXGE_HAL_RX_W_ROUND_ROBIN_21_RX_W_PRIORITY_SS_168(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_21_RX_W_PRIORITY_SS_169(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_W_ROUND_ROBIN_21_RX_W_PRIORITY_SS_170(val) vBIT(val, 19, 5) -/* 0x00c98 */ u64 rx_queue_priority_0; -#define VXGE_HAL_RX_QUEUE_PRIORITY_0_RX_Q_NUMBER_0(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_0_RX_Q_NUMBER_1(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_0_RX_Q_NUMBER_2(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_0_RX_Q_NUMBER_3(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_0_RX_Q_NUMBER_4(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_0_RX_Q_NUMBER_5(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_0_RX_Q_NUMBER_6(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_0_RX_Q_NUMBER_7(val) vBIT(val, 59, 5) -/* 0x00ca0 */ u64 rx_queue_priority_1; -#define VXGE_HAL_RX_QUEUE_PRIORITY_1_RX_Q_NUMBER_8(val) vBIT(val, 3, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_1_RX_Q_NUMBER_9(val) vBIT(val, 11, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_1_RX_Q_NUMBER_10(val) vBIT(val, 19, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_1_RX_Q_NUMBER_11(val) vBIT(val, 27, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_1_RX_Q_NUMBER_12(val) vBIT(val, 35, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_1_RX_Q_NUMBER_13(val) vBIT(val, 43, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_1_RX_Q_NUMBER_14(val) vBIT(val, 51, 5) -#define VXGE_HAL_RX_QUEUE_PRIORITY_1_RX_Q_NUMBER_15(val) vBIT(val, 59, 5) -/* 0x00ca8 */ u64 rx_queue_priority_2; -#define VXGE_HAL_RX_QUEUE_PRIORITY_2_RX_Q_NUMBER_16(val) vBIT(val, 3, 5) - u8 unused00cc8[0x00cc8 - 0x00cb0]; - -/* 0x00cc8 */ u64 replication_queue_priority; -#define VXGE_HAL_REPLICATION_QUEUE_PRIORITY_REPLICATION_QUEUE_PRIORITY(val)\ - vBIT(val, 59, 5) -/* 0x00cd0 */ u64 rx_queue_select; -#define VXGE_HAL_RX_QUEUE_SELECT_NUMBER(n) mBIT(n) -#define VXGE_HAL_RX_QUEUE_SELECT_ENABLE_CODE mBIT(15) -#define VXGE_HAL_RX_QUEUE_SELECT_ENABLE_HIERARCHICAL_PRTY mBIT(23) -/* 0x00cd8 */ u64 rqa_vpbp_ctrl; -#define VXGE_HAL_RQA_VPBP_CTRL_WR_XON_DIS mBIT(15) -#define VXGE_HAL_RQA_VPBP_CTRL_ROCRC_DIS mBIT(23) -#define VXGE_HAL_RQA_VPBP_CTRL_TXPE_DIS mBIT(31) -/* 0x00ce0 */ u64 rx_multi_cast_ctrl; -#define VXGE_HAL_RX_MULTI_CAST_CTRL_TIME_OUT_DIS mBIT(0) -#define VXGE_HAL_RX_MULTI_CAST_CTRL_FRM_DROP_DIS mBIT(1) -#define VXGE_HAL_RX_MULTI_CAST_CTRL_NO_RXD_TIME_OUT_CNT(val) vBIT(val, 2, 30) -#define VXGE_HAL_RX_MULTI_CAST_CTRL_TIME_OUT_CNT(val) vBIT(val, 32, 32) -/* 0x00ce8 */ u64 wde_prm_ctrl; -#define VXGE_HAL_WDE_PRM_CTRL_SPAV_THRESHOLD(val) vBIT(val, 2, 10) -#define VXGE_HAL_WDE_PRM_CTRL_SPLIT_THRESHOLD(val) vBIT(val, 18, 14) -#define VXGE_HAL_WDE_PRM_CTRL_SPLIT_ON_1ST_ROW mBIT(32) -#define VXGE_HAL_WDE_PRM_CTRL_SPLIT_ON_ROW_BNDRY mBIT(33) -#define VXGE_HAL_WDE_PRM_CTRL_FB_ROW_SIZE(val) vBIT(val, 46, 2) -/* 0x00cf0 */ u64 noa_ctrl; -#define VXGE_HAL_NOA_CTRL_FRM_PRTY_QUOTA(val) vBIT(val, 3, 5) -#define VXGE_HAL_NOA_CTRL_NON_FRM_PRTY_QUOTA(val) vBIT(val, 11, 5) -#define VXGE_HAL_NOA_CTRL_IGNORE_KDFC_IF_STATUS mBIT(16) -#define VXGE_HAL_NOA_CTRL_MAX_JOB_CNT_FOR_WDE0(val) vBIT(val, 37, 4) -#define VXGE_HAL_NOA_CTRL_MAX_JOB_CNT_FOR_WDE1(val) vBIT(val, 45, 4) -#define VXGE_HAL_NOA_CTRL_MAX_JOB_CNT_FOR_WDE2(val) vBIT(val, 53, 4) -#define VXGE_HAL_NOA_CTRL_MAX_JOB_CNT_FOR_WDE3(val) vBIT(val, 60, 4) -/* 0x00cf8 */ u64 phase_cfg; -#define VXGE_HAL_PHASE_CFG_QCC_WR_PHASE_EN mBIT(0) -#define VXGE_HAL_PHASE_CFG_QCC_RD_PHASE_EN mBIT(3) -#define VXGE_HAL_PHASE_CFG_IMMM_WR_PHASE_EN mBIT(7) -#define VXGE_HAL_PHASE_CFG_IMMM_RD_PHASE_EN mBIT(11) -#define VXGE_HAL_PHASE_CFG_UMQM_WR_PHASE_EN mBIT(15) -#define VXGE_HAL_PHASE_CFG_UMQM_RD_PHASE_EN mBIT(19) -#define VXGE_HAL_PHASE_CFG_RCBM_WR_PHASE_EN mBIT(23) -#define VXGE_HAL_PHASE_CFG_RCBM_RD_PHASE_EN mBIT(27) -#define VXGE_HAL_PHASE_CFG_RXD_RC_WR_PHASE_EN mBIT(31) -#define VXGE_HAL_PHASE_CFG_RXD_RC_RD_PHASE_EN mBIT(35) -#define VXGE_HAL_PHASE_CFG_RXD_RHS_WR_PHASE_EN mBIT(39) -#define VXGE_HAL_PHASE_CFG_RXD_RHS_RD_PHASE_EN mBIT(43) -/* 0x00d00 */ u64 rcq_bypq_cfg; -#define VXGE_HAL_RCQ_BYPQ_CFG_OVERFLOW_THRESHOLD(val) vBIT(val, 10, 22) -#define VXGE_HAL_RCQ_BYPQ_CFG_BYP_ON_THRESHOLD(val) vBIT(val, 39, 9) -#define VXGE_HAL_RCQ_BYPQ_CFG_BYP_OFF_THRESHOLD(val) vBIT(val, 55, 9) - u8 unused00e00[0x00e00 - 0x00d08]; - -/* 0x00e00 */ u64 doorbell_int_status; -#define VXGE_HAL_DOORBELL_INT_STATUS_KDFC_ERR_REG_TXDMA_KDFC_INT mBIT(7) -#define VXGE_HAL_DOORBELL_INT_STATUS_USDC_ERR_REG_TXDMA_USDC_INT mBIT(15) -/* 0x00e08 */ u64 doorbell_int_mask; -/* 0x00e10 */ u64 kdfc_err_reg; -#define VXGE_HAL_KDFC_ERR_REG_KDFC_KDFC_ECC_SG_ERR mBIT(7) -#define VXGE_HAL_KDFC_ERR_REG_KDFC_KDFC_ECC_DB_ERR mBIT(15) -#define VXGE_HAL_KDFC_ERR_REG_KDFC_KDFC_SM_ERR_ALARM mBIT(23) -#define VXGE_HAL_KDFC_ERR_REG_KDFC_KDFC_MISC_ERR_1 mBIT(32) -#define VXGE_HAL_KDFC_ERR_REG_KDFC_KDFC_PCIX_ERR mBIT(39) -/* 0x00e18 */ u64 kdfc_err_mask; -/* 0x00e20 */ u64 kdfc_err_reg_alarm; -#define VXGE_HAL_KDFC_ERR_REG_ALARM_KDFC_KDFC_ECC_SG_ERR mBIT(7) -#define VXGE_HAL_KDFC_ERR_REG_ALARM_KDFC_KDFC_ECC_DB_ERR mBIT(15) -#define VXGE_HAL_KDFC_ERR_REG_ALARM_KDFC_KDFC_SM_ERR_ALARM mBIT(23) -#define VXGE_HAL_KDFC_ERR_REG_ALARM_KDFC_KDFC_MISC_ERR_1 mBIT(32) -#define VXGE_HAL_KDFC_ERR_REG_ALARM_KDFC_KDFC_PCIX_ERR mBIT(39) -/* 0x00e28 */ u64 usdc_err_reg; -#define VXGE_HAL_USDC_ERR_REG_USDC_FIFO_ECC_SG_ERR mBIT(4) -#define VXGE_HAL_USDC_ERR_REG_USDC_WA_ECC_SG_ERR mBIT(5) -#define VXGE_HAL_USDC_ERR_REG_USDC_CA_ECC_SG_ERR mBIT(6) -#define VXGE_HAL_USDC_ERR_REG_USDC_SA_ECC_SG_ERR mBIT(7) -#define VXGE_HAL_USDC_ERR_REG_USDC_FIFO_ECC_DB_ERR mBIT(12) -#define VXGE_HAL_USDC_ERR_REG_USDC_WA_ECC_DB_ERR mBIT(13) -#define VXGE_HAL_USDC_ERR_REG_USDC_CA_ECC_DB_ERR mBIT(14) -#define VXGE_HAL_USDC_ERR_REG_USDC_SA_ECC_DB_ERR mBIT(15) -#define VXGE_HAL_USDC_ERR_REG_USDC_USDC_SM_ERR_ALARM mBIT(23) -#define VXGE_HAL_USDC_ERR_REG_USDC_USDC_MISC_ERR_0 mBIT(30) -#define VXGE_HAL_USDC_ERR_REG_USDC_USDC_MISC_ERR_1 mBIT(31) -#define VXGE_HAL_USDC_ERR_REG_USDC_USDC_PCI_ERR mBIT(39) -/* 0x00e30 */ u64 usdc_err_mask; -/* 0x00e38 */ u64 usdc_err_reg_alarm; -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_FIFO_ECC_SG_ERR mBIT(4) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_WA_ECC_SG_ERR mBIT(5) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_CA_ECC_SG_ERR mBIT(6) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_SA_ECC_SG_ERR mBIT(7) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_FIFO_ECC_DB_ERR mBIT(12) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_WA_ECC_DB_ERR mBIT(13) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_CA_ECC_DB_ERR mBIT(14) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_SA_ECC_DB_ERR mBIT(15) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_USDC_SM_ERR_ALARM mBIT(23) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_USDC_MISC_ERR_0 mBIT(30) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_USDC_MISC_ERR_1 mBIT(31) -#define VXGE_HAL_USDC_ERR_REG_ALARM_USDC_USDC_PCI_ERR mBIT(39) -/* 0x00e40 */ u64 kdfc_vp_partition_0; -#define VXGE_HAL_KDFC_VP_PARTITION_0_ENABLE mBIT(0) -#define VXGE_HAL_KDFC_VP_PARTITION_0_NUMBER_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_KDFC_VP_PARTITION_0_LENGTH_0(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_VP_PARTITION_0_NUMBER_1(val) vBIT(val, 37, 3) -#define VXGE_HAL_KDFC_VP_PARTITION_0_LENGTH_1(val) vBIT(val, 49, 15) -/* 0x00e48 */ u64 kdfc_vp_partition_1; -#define VXGE_HAL_KDFC_VP_PARTITION_1_NUMBER_2(val) vBIT(val, 5, 3) -#define VXGE_HAL_KDFC_VP_PARTITION_1_LENGTH_2(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_VP_PARTITION_1_NUMBER_3(val) vBIT(val, 37, 3) -#define VXGE_HAL_KDFC_VP_PARTITION_1_LENGTH_3(val) vBIT(val, 49, 15) -/* 0x00e50 */ u64 kdfc_vp_partition_2; -#define VXGE_HAL_KDFC_VP_PARTITION_2_NUMBER_4(val) vBIT(val, 5, 3) -#define VXGE_HAL_KDFC_VP_PARTITION_2_LENGTH_4(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_VP_PARTITION_2_NUMBER_5(val) vBIT(val, 37, 3) -#define VXGE_HAL_KDFC_VP_PARTITION_2_LENGTH_5(val) vBIT(val, 49, 15) -/* 0x00e58 */ u64 kdfc_vp_partition_3; -#define VXGE_HAL_KDFC_VP_PARTITION_3_NUMBER_6(val) vBIT(val, 5, 3) -#define VXGE_HAL_KDFC_VP_PARTITION_3_LENGTH_6(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_VP_PARTITION_3_NUMBER_7(val) vBIT(val, 37, 3) -#define VXGE_HAL_KDFC_VP_PARTITION_3_LENGTH_7(val) vBIT(val, 49, 15) -/* 0x00e60 */ u64 kdfc_vp_partition_4; -#define VXGE_HAL_KDFC_VP_PARTITION_4_LENGTH_8(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_VP_PARTITION_4_LENGTH_9(val) vBIT(val, 49, 15) -/* 0x00e68 */ u64 kdfc_vp_partition_5; -#define VXGE_HAL_KDFC_VP_PARTITION_5_LENGTH_10(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_VP_PARTITION_5_LENGTH_11(val) vBIT(val, 49, 15) -/* 0x00e70 */ u64 kdfc_vp_partition_6; -#define VXGE_HAL_KDFC_VP_PARTITION_6_LENGTH_12(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_VP_PARTITION_6_LENGTH_13(val) vBIT(val, 49, 15) -/* 0x00e78 */ u64 kdfc_vp_partition_7; -#define VXGE_HAL_KDFC_VP_PARTITION_7_LENGTH_14(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_VP_PARTITION_7_LENGTH_15(val) vBIT(val, 49, 15) -/* 0x00e80 */ u64 kdfc_vp_partition_8; -#define VXGE_HAL_KDFC_VP_PARTITION_8_LENGTH_16(val) vBIT(val, 17, 15) -/* 0x00e88 */ u64 kdfc_w_round_robin_0; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_0_NUMBER_0(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_0_NUMBER_1(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_0_NUMBER_2(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_0_NUMBER_3(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_0_NUMBER_4(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_0_NUMBER_5(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_0_NUMBER_6(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_0_NUMBER_7(val) vBIT(val, 59, 5) -/* 0x00e90 */ u64 kdfc_w_round_robin_1; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_1_NUMBER_8(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_1_NUMBER_9(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_1_NUMBER_10(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_1_NUMBER_11(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_1_NUMBER_12(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_1_NUMBER_13(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_1_NUMBER_14(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_1_NUMBER_15(val) vBIT(val, 59, 5) -/* 0x00e98 */ u64 kdfc_w_round_robin_2; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_2_NUMBER_16(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_2_NUMBER_17(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_2_NUMBER_18(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_2_NUMBER_19(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_2_NUMBER_20(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_2_NUMBER_21(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_2_NUMBER_22(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_2_NUMBER_23(val) vBIT(val, 59, 5) -/* 0x00ea0 */ u64 kdfc_w_round_robin_3; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_3_NUMBER_24(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_3_NUMBER_25(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_3_NUMBER_26(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_3_NUMBER_27(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_3_NUMBER_28(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_3_NUMBER_29(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_3_NUMBER_30(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_3_NUMBER_31(val) vBIT(val, 59, 5) -/* 0x00ea8 */ u64 kdfc_w_round_robin_4; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_4_NUMBER_32(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_4_NUMBER_33(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_4_NUMBER_34(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_4_NUMBER_35(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_4_NUMBER_36(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_4_NUMBER_37(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_4_NUMBER_38(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_4_NUMBER_39(val) vBIT(val, 59, 5) -/* 0x00eb0 */ u64 kdfc_w_round_robin_5; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_5_NUMBER_40(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_5_NUMBER_41(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_5_NUMBER_42(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_5_NUMBER_43(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_5_NUMBER_44(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_5_NUMBER_45(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_5_NUMBER_46(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_5_NUMBER_47(val) vBIT(val, 59, 5) -/* 0x00eb8 */ u64 kdfc_w_round_robin_6; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_6_NUMBER_48(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_6_NUMBER_49(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_6_NUMBER_50(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_6_NUMBER_51(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_6_NUMBER_52(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_6_NUMBER_53(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_6_NUMBER_54(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_6_NUMBER_55(val) vBIT(val, 59, 5) -/* 0x00ec0 */ u64 kdfc_w_round_robin_7; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_7_NUMBER_56(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_7_NUMBER_57(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_7_NUMBER_58(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_7_NUMBER_59(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_7_NUMBER_60(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_7_NUMBER_61(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_7_NUMBER_62(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_7_NUMBER_63(val) vBIT(val, 59, 5) -/* 0x00ec8 */ u64 kdfc_w_round_robin_8; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_8_NUMBER_64(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_8_NUMBER_65(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_8_NUMBER_66(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_8_NUMBER_67(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_8_NUMBER_68(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_8_NUMBER_69(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_8_NUMBER_70(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_8_NUMBER_71(val) vBIT(val, 59, 5) -/* 0x00ed0 */ u64 kdfc_w_round_robin_9; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_9_NUMBER_72(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_9_NUMBER_73(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_9_NUMBER_74(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_9_NUMBER_75(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_9_NUMBER_76(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_9_NUMBER_77(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_9_NUMBER_78(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_9_NUMBER_79(val) vBIT(val, 59, 5) -/* 0x00ed8 */ u64 kdfc_w_round_robin_10; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_10_NUMBER_80(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_10_NUMBER_81(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_10_NUMBER_82(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_10_NUMBER_83(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_10_NUMBER_84(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_10_NUMBER_85(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_10_NUMBER_86(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_10_NUMBER_87(val) vBIT(val, 59, 5) -/* 0x00ee0 */ u64 kdfc_w_round_robin_11; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_11_NUMBER_88(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_11_NUMBER_89(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_11_NUMBER_90(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_11_NUMBER_91(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_11_NUMBER_92(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_11_NUMBER_93(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_11_NUMBER_94(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_11_NUMBER_95(val) vBIT(val, 59, 5) -/* 0x00ee8 */ u64 kdfc_w_round_robin_12; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_12_NUMBER_96(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_12_NUMBER_97(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_12_NUMBER_98(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_12_NUMBER_99(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_12_NUMBER_100(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_12_NUMBER_101(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_12_NUMBER_102(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_12_NUMBER_103(val) vBIT(val, 59, 5) -/* 0x00ef0 */ u64 kdfc_w_round_robin_13; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_13_NUMBER_104(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_13_NUMBER_105(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_13_NUMBER_106(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_13_NUMBER_107(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_13_NUMBER_108(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_13_NUMBER_109(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_13_NUMBER_110(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_13_NUMBER_111(val) vBIT(val, 59, 5) -/* 0x00ef8 */ u64 kdfc_w_round_robin_14; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_14_NUMBER_112(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_14_NUMBER_113(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_14_NUMBER_114(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_14_NUMBER_115(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_14_NUMBER_116(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_14_NUMBER_117(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_14_NUMBER_118(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_14_NUMBER_119(val) vBIT(val, 59, 5) -/* 0x00f00 */ u64 kdfc_w_round_robin_15; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_15_NUMBER_120(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_15_NUMBER_121(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_15_NUMBER_122(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_15_NUMBER_123(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_15_NUMBER_124(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_15_NUMBER_125(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_15_NUMBER_126(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_15_NUMBER_127(val) vBIT(val, 59, 5) -/* 0x00f08 */ u64 kdfc_w_round_robin_16; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_16_NUMBER_128(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_16_NUMBER_129(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_16_NUMBER_130(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_16_NUMBER_131(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_16_NUMBER_132(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_16_NUMBER_133(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_16_NUMBER_134(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_16_NUMBER_135(val) vBIT(val, 59, 5) -/* 0x00f10 */ u64 kdfc_w_round_robin_17; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_17_NUMBER_136(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_17_NUMBER_137(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_17_NUMBER_138(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_17_NUMBER_139(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_17_NUMBER_140(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_17_NUMBER_141(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_17_NUMBER_142(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_17_NUMBER_143(val) vBIT(val, 59, 5) -/* 0x00f18 */ u64 kdfc_w_round_robin_18; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_18_NUMBER_144(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_18_NUMBER_145(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_18_NUMBER_146(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_18_NUMBER_147(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_18_NUMBER_148(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_18_NUMBER_149(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_18_NUMBER_150(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_18_NUMBER_151(val) vBIT(val, 59, 5) -/* 0x00f20 */ u64 kdfc_w_round_robin_19; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_19_NUMBER_152(val) vBIT(val, 3, 5) -/* 0x00f28 */ u64 kdfc_w_round_robin_20; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_20_NUMBER_0(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_20_NUMBER_1(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_20_NUMBER_2(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_20_NUMBER_3(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_20_NUMBER_4(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_20_NUMBER_5(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_20_NUMBER_6(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_20_NUMBER_7(val) vBIT(val, 59, 5) -/* 0x00f30 */ u64 kdfc_w_round_robin_21; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_21_NUMBER_8(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_21_NUMBER_9(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_21_NUMBER_10(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_21_NUMBER_11(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_21_NUMBER_12(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_21_NUMBER_13(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_21_NUMBER_14(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_21_NUMBER_15(val) vBIT(val, 59, 5) -/* 0x00f38 */ u64 kdfc_w_round_robin_22; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_22_NUMBER_16(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_22_NUMBER_17(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_22_NUMBER_18(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_22_NUMBER_19(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_22_NUMBER_20(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_22_NUMBER_21(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_22_NUMBER_22(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_22_NUMBER_23(val) vBIT(val, 59, 5) -/* 0x00f40 */ u64 kdfc_w_round_robin_23; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_23_NUMBER_24(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_23_NUMBER_25(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_23_NUMBER_26(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_23_NUMBER_27(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_23_NUMBER_28(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_23_NUMBER_29(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_23_NUMBER_30(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_23_NUMBER_31(val) vBIT(val, 59, 5) -/* 0x00f48 */ u64 kdfc_w_round_robin_24; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_24_NUMBER_32(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_24_NUMBER_33(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_24_NUMBER_34(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_24_NUMBER_35(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_24_NUMBER_36(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_24_NUMBER_37(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_24_NUMBER_38(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_24_NUMBER_39(val) vBIT(val, 59, 5) -/* 0x00f50 */ u64 kdfc_w_round_robin_25; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_25_NUMBER_40(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_25_NUMBER_41(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_25_NUMBER_42(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_25_NUMBER_43(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_25_NUMBER_44(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_25_NUMBER_45(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_25_NUMBER_46(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_25_NUMBER_47(val) vBIT(val, 59, 5) -/* 0x00f58 */ u64 kdfc_w_round_robin_26; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_26_NUMBER_48(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_26_NUMBER_49(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_26_NUMBER_50(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_26_NUMBER_51(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_26_NUMBER_52(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_26_NUMBER_53(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_26_NUMBER_54(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_26_NUMBER_55(val) vBIT(val, 59, 5) -/* 0x00f60 */ u64 kdfc_w_round_robin_27; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_27_NUMBER_56(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_27_NUMBER_57(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_27_NUMBER_58(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_27_NUMBER_59(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_27_NUMBER_60(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_27_NUMBER_61(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_27_NUMBER_62(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_27_NUMBER_63(val) vBIT(val, 59, 5) -/* 0x00f68 */ u64 kdfc_w_round_robin_28; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_28_NUMBER_64(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_28_NUMBER_65(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_28_NUMBER_66(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_28_NUMBER_67(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_28_NUMBER_68(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_28_NUMBER_69(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_28_NUMBER_70(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_28_NUMBER_71(val) vBIT(val, 59, 5) -/* 0x00f70 */ u64 kdfc_w_round_robin_29; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_29_NUMBER_72(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_29_NUMBER_73(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_29_NUMBER_74(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_29_NUMBER_75(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_29_NUMBER_76(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_29_NUMBER_77(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_29_NUMBER_78(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_29_NUMBER_79(val) vBIT(val, 59, 5) -/* 0x00f78 */ u64 kdfc_w_round_robin_30; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_30_NUMBER_80(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_30_NUMBER_81(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_30_NUMBER_82(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_30_NUMBER_83(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_30_NUMBER_84(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_30_NUMBER_85(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_30_NUMBER_86(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_30_NUMBER_87(val) vBIT(val, 59, 5) -/* 0x00f80 */ u64 kdfc_w_round_robin_31; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_31_NUMBER_88(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_31_NUMBER_89(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_31_NUMBER_90(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_31_NUMBER_91(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_31_NUMBER_92(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_31_NUMBER_93(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_31_NUMBER_94(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_31_NUMBER_95(val) vBIT(val, 59, 5) -/* 0x00f88 */ u64 kdfc_w_round_robin_32; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_32_NUMBER_96(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_32_NUMBER_97(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_32_NUMBER_98(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_32_NUMBER_99(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_32_NUMBER_100(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_32_NUMBER_101(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_32_NUMBER_102(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_32_NUMBER_103(val) vBIT(val, 59, 5) -/* 0x00f90 */ u64 kdfc_w_round_robin_33; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_33_NUMBER_104(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_33_NUMBER_105(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_33_NUMBER_106(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_33_NUMBER_107(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_33_NUMBER_108(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_33_NUMBER_109(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_33_NUMBER_110(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_33_NUMBER_111(val) vBIT(val, 59, 5) -/* 0x00f98 */ u64 kdfc_w_round_robin_34; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_34_NUMBER_112(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_34_NUMBER_113(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_34_NUMBER_114(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_34_NUMBER_115(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_34_NUMBER_116(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_34_NUMBER_117(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_34_NUMBER_118(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_34_NUMBER_119(val) vBIT(val, 59, 5) -/* 0x00fa0 */ u64 kdfc_w_round_robin_35; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_35_NUMBER_120(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_35_NUMBER_121(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_35_NUMBER_122(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_35_NUMBER_123(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_35_NUMBER_124(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_35_NUMBER_125(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_35_NUMBER_126(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_35_NUMBER_127(val) vBIT(val, 59, 5) -/* 0x00fa8 */ u64 kdfc_w_round_robin_36; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_36_NUMBER_128(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_36_NUMBER_129(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_36_NUMBER_130(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_36_NUMBER_131(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_36_NUMBER_132(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_36_NUMBER_133(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_36_NUMBER_134(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_36_NUMBER_135(val) vBIT(val, 59, 5) -/* 0x00fb0 */ u64 kdfc_w_round_robin_37; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_37_NUMBER_136(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_37_NUMBER_137(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_37_NUMBER_138(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_37_NUMBER_139(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_37_NUMBER_140(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_37_NUMBER_141(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_37_NUMBER_142(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_37_NUMBER_143(val) vBIT(val, 59, 5) -/* 0x00fb8 */ u64 kdfc_w_round_robin_38; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_38_NUMBER_144(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_38_NUMBER_145(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_38_NUMBER_146(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_38_NUMBER_147(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_38_NUMBER_148(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_38_NUMBER_149(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_38_NUMBER_150(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_38_NUMBER_151(val) vBIT(val, 59, 5) -/* 0x00fc0 */ u64 kdfc_w_round_robin_39; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_39_NUMBER_152(val) vBIT(val, 3, 5) -/* 0x00fc8 */ u64 kdfc_w_round_robin_40; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_40_NUMBER_0(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_40_NUMBER_1(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_40_NUMBER_2(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_40_NUMBER_3(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_40_NUMBER_4(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_40_NUMBER_5(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_40_NUMBER_6(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_40_NUMBER_7(val) vBIT(val, 59, 5) -/* 0x00fd0 */ u64 kdfc_w_round_robin_41; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_41_NUMBER_8(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_41_NUMBER_9(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_41_NUMBER_10(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_41_NUMBER_11(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_41_NUMBER_12(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_41_NUMBER_13(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_41_NUMBER_14(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_41_NUMBER_15(val) vBIT(val, 59, 5) -/* 0x00fd8 */ u64 kdfc_w_round_robin_42; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_42_NUMBER_16(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_42_NUMBER_17(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_42_NUMBER_18(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_42_NUMBER_19(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_42_NUMBER_20(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_42_NUMBER_21(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_42_NUMBER_22(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_42_NUMBER_23(val) vBIT(val, 59, 5) -/* 0x00fe0 */ u64 kdfc_w_round_robin_43; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_43_NUMBER_24(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_43_NUMBER_25(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_43_NUMBER_26(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_43_NUMBER_27(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_43_NUMBER_28(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_43_NUMBER_29(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_43_NUMBER_30(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_43_NUMBER_31(val) vBIT(val, 59, 5) -/* 0x00fe8 */ u64 kdfc_w_round_robin_44; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_44_NUMBER_32(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_44_NUMBER_33(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_44_NUMBER_34(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_44_NUMBER_35(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_44_NUMBER_36(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_44_NUMBER_37(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_44_NUMBER_38(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_44_NUMBER_39(val) vBIT(val, 59, 5) -/* 0x00ff0 */ u64 kdfc_w_round_robin_45; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_45_NUMBER_40(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_45_NUMBER_41(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_45_NUMBER_42(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_45_NUMBER_43(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_45_NUMBER_44(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_45_NUMBER_45(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_45_NUMBER_46(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_45_NUMBER_47(val) vBIT(val, 59, 5) -/* 0x00ff8 */ u64 kdfc_w_round_robin_46; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_46_NUMBER_48(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_46_NUMBER_49(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_46_NUMBER_50(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_46_NUMBER_51(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_46_NUMBER_52(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_46_NUMBER_53(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_46_NUMBER_54(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_46_NUMBER_55(val) vBIT(val, 59, 5) -/* 0x01000 */ u64 kdfc_w_round_robin_47; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_47_NUMBER_56(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_47_NUMBER_57(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_47_NUMBER_58(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_47_NUMBER_59(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_47_NUMBER_60(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_47_NUMBER_61(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_47_NUMBER_62(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_47_NUMBER_63(val) vBIT(val, 59, 5) -/* 0x01008 */ u64 kdfc_w_round_robin_48; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_48_NUMBER_64(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_48_NUMBER_65(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_48_NUMBER_66(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_48_NUMBER_67(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_48_NUMBER_68(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_48_NUMBER_69(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_48_NUMBER_70(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_48_NUMBER_71(val) vBIT(val, 59, 5) -/* 0x01010 */ u64 kdfc_w_round_robin_49; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_49_NUMBER_72(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_49_NUMBER_73(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_49_NUMBER_74(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_49_NUMBER_75(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_49_NUMBER_76(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_49_NUMBER_77(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_49_NUMBER_78(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_49_NUMBER_79(val) vBIT(val, 59, 5) -/* 0x01018 */ u64 kdfc_w_round_robin_50; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_50_NUMBER_80(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_50_NUMBER_81(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_50_NUMBER_82(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_50_NUMBER_83(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_50_NUMBER_84(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_50_NUMBER_85(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_50_NUMBER_86(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_50_NUMBER_87(val) vBIT(val, 59, 5) -/* 0x01020 */ u64 kdfc_w_round_robin_51; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_51_NUMBER_88(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_51_NUMBER_89(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_51_NUMBER_90(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_51_NUMBER_91(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_51_NUMBER_92(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_51_NUMBER_93(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_51_NUMBER_94(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_51_NUMBER_95(val) vBIT(val, 59, 5) -/* 0x01028 */ u64 kdfc_w_round_robin_52; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_52_NUMBER_96(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_52_NUMBER_97(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_52_NUMBER_98(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_52_NUMBER_99(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_52_NUMBER_100(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_52_NUMBER_101(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_52_NUMBER_102(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_52_NUMBER_103(val) vBIT(val, 59, 5) -/* 0x01030 */ u64 kdfc_w_round_robin_53; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_53_NUMBER_104(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_53_NUMBER_105(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_53_NUMBER_106(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_53_NUMBER_107(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_53_NUMBER_108(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_53_NUMBER_109(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_53_NUMBER_110(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_53_NUMBER_111(val) vBIT(val, 59, 5) -/* 0x01038 */ u64 kdfc_w_round_robin_54; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_54_NUMBER_112(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_54_NUMBER_113(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_54_NUMBER_114(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_54_NUMBER_115(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_54_NUMBER_116(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_54_NUMBER_117(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_54_NUMBER_118(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_54_NUMBER_119(val) vBIT(val, 59, 5) -/* 0x01040 */ u64 kdfc_w_round_robin_55; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_55_NUMBER_120(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_55_NUMBER_121(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_55_NUMBER_122(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_55_NUMBER_123(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_55_NUMBER_124(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_55_NUMBER_125(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_55_NUMBER_126(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_55_NUMBER_127(val) vBIT(val, 59, 5) -/* 0x01048 */ u64 kdfc_w_round_robin_56; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_56_NUMBER_128(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_56_NUMBER_129(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_56_NUMBER_130(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_56_NUMBER_131(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_56_NUMBER_132(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_56_NUMBER_133(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_56_NUMBER_134(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_56_NUMBER_135(val) vBIT(val, 59, 5) -/* 0x01050 */ u64 kdfc_w_round_robin_57; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_57_NUMBER_136(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_57_NUMBER_137(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_57_NUMBER_138(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_57_NUMBER_139(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_57_NUMBER_140(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_57_NUMBER_141(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_57_NUMBER_142(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_57_NUMBER_143(val) vBIT(val, 59, 5) -/* 0x01058 */ u64 kdfc_w_round_robin_58; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_58_NUMBER_144(val) vBIT(val, 3, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_58_NUMBER_145(val) vBIT(val, 11, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_58_NUMBER_146(val) vBIT(val, 19, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_58_NUMBER_147(val) vBIT(val, 27, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_58_NUMBER_148(val) vBIT(val, 35, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_58_NUMBER_149(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_58_NUMBER_150(val) vBIT(val, 51, 5) -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_58_NUMBER_151(val) vBIT(val, 59, 5) -/* 0x01060 */ u64 kdfc_w_round_robin_59; -#define VXGE_HAL_KDFC_W_ROUND_ROBIN_59_NUMBER_152(val) vBIT(val, 3, 5) -/* 0x01068 */ u64 kdfc_entry_type_sel_0; -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_0_NUMBER_0(val) vBIT(val, 6, 2) -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_0_NUMBER_1(val) vBIT(val, 14, 2) -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_0_NUMBER_2(val) vBIT(val, 22, 2) -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_0_NUMBER_3(val) vBIT(val, 30, 2) -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_0_NUMBER_4(val) vBIT(val, 38, 2) -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_0_NUMBER_5(val) vBIT(val, 46, 2) -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_0_NUMBER_6(val) vBIT(val, 54, 2) -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_0_NUMBER_7(val) vBIT(val, 62, 2) -/* 0x01070 */ u64 kdfc_entry_type_sel_1; -#define VXGE_HAL_KDFC_ENTRY_TYPE_SEL_1_NUMBER_8(val) vBIT(val, 6, 2) -/* 0x01078 */ u64 kdfc_fifo_0_ctrl; -#define VXGE_HAL_KDFC_FIFO_0_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01080 */ u64 kdfc_fifo_1_ctrl; -#define VXGE_HAL_KDFC_FIFO_1_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01088 */ u64 kdfc_fifo_2_ctrl; -#define VXGE_HAL_KDFC_FIFO_2_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01090 */ u64 kdfc_fifo_3_ctrl; -#define VXGE_HAL_KDFC_FIFO_3_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01098 */ u64 kdfc_fifo_4_ctrl; -#define VXGE_HAL_KDFC_FIFO_4_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010a0 */ u64 kdfc_fifo_5_ctrl; -#define VXGE_HAL_KDFC_FIFO_5_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010a8 */ u64 kdfc_fifo_6_ctrl; -#define VXGE_HAL_KDFC_FIFO_6_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010b0 */ u64 kdfc_fifo_7_ctrl; -#define VXGE_HAL_KDFC_FIFO_7_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010b8 */ u64 kdfc_fifo_8_ctrl; -#define VXGE_HAL_KDFC_FIFO_8_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010c0 */ u64 kdfc_fifo_9_ctrl; -#define VXGE_HAL_KDFC_FIFO_9_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010c8 */ u64 kdfc_fifo_10_ctrl; -#define VXGE_HAL_KDFC_FIFO_10_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010d0 */ u64 kdfc_fifo_11_ctrl; -#define VXGE_HAL_KDFC_FIFO_11_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010d8 */ u64 kdfc_fifo_12_ctrl; -#define VXGE_HAL_KDFC_FIFO_12_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010e0 */ u64 kdfc_fifo_13_ctrl; -#define VXGE_HAL_KDFC_FIFO_13_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010e8 */ u64 kdfc_fifo_14_ctrl; -#define VXGE_HAL_KDFC_FIFO_14_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010f0 */ u64 kdfc_fifo_15_ctrl; -#define VXGE_HAL_KDFC_FIFO_15_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x010f8 */ u64 kdfc_fifo_16_ctrl; -#define VXGE_HAL_KDFC_FIFO_16_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01100 */ u64 kdfc_fifo_17_ctrl; -#define VXGE_HAL_KDFC_FIFO_17_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01108 */ u64 kdfc_fifo_18_ctrl; -#define VXGE_HAL_KDFC_FIFO_18_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01110 */ u64 kdfc_fifo_19_ctrl; -#define VXGE_HAL_KDFC_FIFO_19_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01118 */ u64 kdfc_fifo_20_ctrl; -#define VXGE_HAL_KDFC_FIFO_20_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01120 */ u64 kdfc_fifo_21_ctrl; -#define VXGE_HAL_KDFC_FIFO_21_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01128 */ u64 kdfc_fifo_22_ctrl; -#define VXGE_HAL_KDFC_FIFO_22_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01130 */ u64 kdfc_fifo_23_ctrl; -#define VXGE_HAL_KDFC_FIFO_23_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01138 */ u64 kdfc_fifo_24_ctrl; -#define VXGE_HAL_KDFC_FIFO_24_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01140 */ u64 kdfc_fifo_25_ctrl; -#define VXGE_HAL_KDFC_FIFO_25_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01148 */ u64 kdfc_fifo_26_ctrl; -#define VXGE_HAL_KDFC_FIFO_26_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01150 */ u64 kdfc_fifo_27_ctrl; -#define VXGE_HAL_KDFC_FIFO_27_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01158 */ u64 kdfc_fifo_28_ctrl; -#define VXGE_HAL_KDFC_FIFO_28_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01160 */ u64 kdfc_fifo_29_ctrl; -#define VXGE_HAL_KDFC_FIFO_29_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01168 */ u64 kdfc_fifo_30_ctrl; -#define VXGE_HAL_KDFC_FIFO_30_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01170 */ u64 kdfc_fifo_31_ctrl; -#define VXGE_HAL_KDFC_FIFO_31_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01178 */ u64 kdfc_fifo_32_ctrl; -#define VXGE_HAL_KDFC_FIFO_32_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01180 */ u64 kdfc_fifo_33_ctrl; -#define VXGE_HAL_KDFC_FIFO_33_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01188 */ u64 kdfc_fifo_34_ctrl; -#define VXGE_HAL_KDFC_FIFO_34_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01190 */ u64 kdfc_fifo_35_ctrl; -#define VXGE_HAL_KDFC_FIFO_35_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01198 */ u64 kdfc_fifo_36_ctrl; -#define VXGE_HAL_KDFC_FIFO_36_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011a0 */ u64 kdfc_fifo_37_ctrl; -#define VXGE_HAL_KDFC_FIFO_37_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011a8 */ u64 kdfc_fifo_38_ctrl; -#define VXGE_HAL_KDFC_FIFO_38_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011b0 */ u64 kdfc_fifo_39_ctrl; -#define VXGE_HAL_KDFC_FIFO_39_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011b8 */ u64 kdfc_fifo_40_ctrl; -#define VXGE_HAL_KDFC_FIFO_40_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011c0 */ u64 kdfc_fifo_41_ctrl; -#define VXGE_HAL_KDFC_FIFO_41_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011c8 */ u64 kdfc_fifo_42_ctrl; -#define VXGE_HAL_KDFC_FIFO_42_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011d0 */ u64 kdfc_fifo_43_ctrl; -#define VXGE_HAL_KDFC_FIFO_43_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011d8 */ u64 kdfc_fifo_44_ctrl; -#define VXGE_HAL_KDFC_FIFO_44_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011e0 */ u64 kdfc_fifo_45_ctrl; -#define VXGE_HAL_KDFC_FIFO_45_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011e8 */ u64 kdfc_fifo_46_ctrl; -#define VXGE_HAL_KDFC_FIFO_46_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011f0 */ u64 kdfc_fifo_47_ctrl; -#define VXGE_HAL_KDFC_FIFO_47_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x011f8 */ u64 kdfc_fifo_48_ctrl; -#define VXGE_HAL_KDFC_FIFO_48_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01200 */ u64 kdfc_fifo_49_ctrl; -#define VXGE_HAL_KDFC_FIFO_49_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01208 */ u64 kdfc_fifo_50_ctrl; -#define VXGE_HAL_KDFC_FIFO_50_CTRL_WRR_NUMBER(val) vBIT(val, 3, 5) -/* 0x01210 */ u64 kdfc_krnl_usr_ctrl; -#define VXGE_HAL_KDFC_KRNL_USR_CTRL_CODE(val) vBIT(val, 4, 4) -/* 0x01218 */ u64 kdfc_pda_monitor; -#define VXGE_HAL_KDFC_PDA_MONITOR_KDFC_ACCEPT mBIT(7) -#define VXGE_HAL_KDFC_PDA_MONITOR_FIFO_NO(val) vBIT(val, 10, 6) -#define VXGE_HAL_KDFC_PDA_MONITOR_FIFO_ADD(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_PDA_MONITOR_TYPE(val) vBIT(val, 32, 8) -#define VXGE_HAL_KDFC_PDA_MONITOR_VP(val) vBIT(val, 43, 5) -/* 0x01220 */ u64 kdfc_mp_monitor; -#define VXGE_HAL_KDFC_MP_MONITOR_KDFC_ACCEPT mBIT(7) -#define VXGE_HAL_KDFC_MP_MONITOR_FIFO_NO(val) vBIT(val, 10, 6) -#define VXGE_HAL_KDFC_MP_MONITOR_FIFO_ADD(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_MP_MONITOR_TYPE(val) vBIT(val, 32, 8) -#define VXGE_HAL_KDFC_MP_MONITOR_VP(val) vBIT(val, 43, 5) -/* 0x01228 */ u64 kdfc_pe_monitor; -#define VXGE_HAL_KDFC_PE_MONITOR_KDFC_CREDIT mBIT(7) -#define VXGE_HAL_KDFC_PE_MONITOR_FIFO_NO(val) vBIT(val, 10, 6) -#define VXGE_HAL_KDFC_PE_MONITOR_FIFO_ADD(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_PE_MONITOR_TYPE(val) vBIT(val, 32, 8) -#define VXGE_HAL_KDFC_PE_MONITOR_VP(val) vBIT(val, 43, 5) -#define VXGE_HAL_KDFC_PE_MONITOR_IMM_DATA_CNT(val) vBIT(val, 48, 8) -/* 0x01230 */ u64 kdfc_read_cntrl; -#define VXGE_HAL_KDFC_READ_CNTRL_KDFC_FREEZE mBIT(7) -#define VXGE_HAL_KDFC_READ_CNTRL_KDFC_RDCTRL(val) vBIT(val, 14, 2) -#define VXGE_HAL_KDFC_READ_CNTRL_KDFC_WORD_SEL mBIT(23) -#define VXGE_HAL_KDFC_READ_CNTRL_KDFC_ADDR(val) vBIT(val, 49, 15) -/* 0x01238 */ u64 kdfc_read_data; -#define VXGE_HAL_KDFC_READ_DATA_READ_DATA(val) vBIT(val, 0, 64) -/* 0x01240 */ u64 kdfc_force_valid_ctrl; -#define VXGE_HAL_KDFC_FORCE_VALID_CTRL_FORCE_VALID mBIT(7) -/* 0x01248 */ u64 kdfc_multi_cycle_ctrl; -#define VXGE_HAL_KDFC_MULTI_CYCLE_CTRL_MULTI_CYCLE_SEL(val) vBIT(val, 6, 2) -/* 0x01250 */ u64 kdfc_ecc_ctrl; -#define VXGE_HAL_KDFC_ECC_CTRL_ECC_DISABLE mBIT(7) -/* 0x01258 */ u64 kdfc_vpbp_ctrl; -#define VXGE_HAL_KDFC_VPBP_CTRL_RD_XON_DIS mBIT(7) -#define VXGE_HAL_KDFC_VPBP_CTRL_ROCRC_DIS mBIT(23) -#define VXGE_HAL_KDFC_VPBP_CTRL_H2L_DIS mBIT(31) -#define VXGE_HAL_KDFC_VPBP_CTRL_MSG_ONE_DIS mBIT(39) -#define VXGE_HAL_KDFC_VPBP_CTRL_MSG_DMQ_DIS mBIT(47) -#define VXGE_HAL_KDFC_VPBP_CTRL_PDA_DIS mBIT(55) - u8 unused01600[0x01600 - 0x01260]; - -/* 0x01600 */ u64 rxmac_int_status; -#define VXGE_HAL_RXMAC_INT_STATUS_RXMAC_GEN_ERR_RXMAC_GEN_INT mBIT(3) -#define VXGE_HAL_RXMAC_INT_STATUS_RXMAC_ECC_ERR_RXMAC_ECC_INT mBIT(7) -#define VXGE_HAL_RXMAC_INT_STATUS_RXMAC_VARIOUS_ERR_RXMAC_VARIOUS_INT mBIT(11) -/* 0x01608 */ u64 rxmac_int_mask; - u8 unused01618[0x01618 - 0x01610]; - -/* 0x01618 */ u64 rxmac_gen_err_reg; -/* 0x01620 */ u64 rxmac_gen_err_mask; -/* 0x01628 */ u64 rxmac_gen_err_alarm; -/* 0x01630 */ u64 rxmac_ecc_err_reg; -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT0_RMAC_RTS_PART_SG_ERR(val)\ - vBIT(val, 0, 4) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT0_RMAC_RTS_PART_DB_ERR(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT1_RMAC_RTS_PART_SG_ERR(val)\ - vBIT(val, 8, 4) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT1_RMAC_RTS_PART_DB_ERR(val)\ - vBIT(val, 12, 4) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT2_RMAC_RTS_PART_SG_ERR(val)\ - vBIT(val, 16, 4) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT2_RMAC_RTS_PART_DB_ERR(val)\ - vBIT(val, 20, 4) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DA_LKP_PRT0_SG_ERR(val)\ - vBIT(val, 24, 2) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DA_LKP_PRT0_DB_ERR(val)\ - vBIT(val, 26, 2) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DA_LKP_PRT1_SG_ERR(val)\ - vBIT(val, 28, 2) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DA_LKP_PRT1_DB_ERR(val)\ - vBIT(val, 30, 2) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_VID_LKP_SG_ERR mBIT(32) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_VID_LKP_DB_ERR mBIT(33) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT0_SG_ERR mBIT(34) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT0_DB_ERR mBIT(35) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT1_SG_ERR mBIT(36) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT1_DB_ERR mBIT(37) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT2_SG_ERR mBIT(38) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT2_DB_ERR mBIT(39) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_RTH_MASK_SG_ERR(val)\ - vBIT(val, 40, 7) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_RTH_MASK_DB_ERR(val)\ - vBIT(val, 47, 7) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_RTH_LKP_SG_ERR(val)\ - vBIT(val, 54, 3) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_RTH_LKP_DB_ERR(val)\ - vBIT(val, 57, 3) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DS_LKP_SG_ERR mBIT(60) -#define VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DS_LKP_DB_ERR mBIT(61) -/* 0x01638 */ u64 rxmac_ecc_err_mask; -/* 0x01640 */ u64 rxmac_ecc_err_alarm; -/* 0x01648 */ u64 rxmac_various_err_reg; -#define VXGE_HAL_RXMAC_VARIOUS_ERR_REG_RMAC_RMAC_PORT0_FSM_ERR mBIT(0) -#define VXGE_HAL_RXMAC_VARIOUS_ERR_REG_RMAC_RMAC_PORT1_FSM_ERR mBIT(1) -#define VXGE_HAL_RXMAC_VARIOUS_ERR_REG_RMAC_RMAC_PORT2_FSM_ERR mBIT(2) -#define VXGE_HAL_RXMAC_VARIOUS_ERR_REG_RMACJ_RMACJ_FSM_ERR mBIT(3) -/* 0x01650 */ u64 rxmac_various_err_mask; -/* 0x01658 */ u64 rxmac_various_err_alarm; -/* 0x01660 */ u64 rxmac_gen_cfg; -#define VXGE_HAL_RXMAC_GEN_CFG_SCALE_RMAC_UTIL mBIT(11) -/* 0x01668 */ u64 rxmac_authorize_all_addr; -#define VXGE_HAL_RXMAC_AUTHORIZE_ALL_ADDR_VP(n) mBIT(n) -/* 0x01670 */ u64 rxmac_authorize_all_vid; -#define VXGE_HAL_RXMAC_AUTHORIZE_ALL_VID_VP(n) mBIT(n) - u8 unused016b8[0x016b8 - 0x01678]; - -/* 0x016b8 */ u64 rxmac_thresh_cross_repl; -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_PAUSE_LOW_UP_CROSSED mBIT(3) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_PAUSE_LOW_DOWN_CROSSED mBIT(7) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_PAUSE_HIGH_UP_CROSSED mBIT(11) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_PAUSE_HIGH_DOWN_CROSSED mBIT(15) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_RED0_UP_CROSSED mBIT(35) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_RED0_DOWN_CROSSED mBIT(39) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_RED1_UP_CROSSED mBIT(43) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_RED1_DOWN_CROSSED mBIT(47) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_RED2_UP_CROSSED mBIT(51) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_RED2_DOWN_CROSSED mBIT(55) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_RED3_UP_CROSSED mBIT(59) -#define VXGE_HAL_RXMAC_THRESH_CROSS_REPL_RMACJ_RED3_DOWN_CROSSED mBIT(63) -/* 0x016c0 */ u64 rxmac_red_rate_repl_queue; -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_CRATE_THR0(val) vBIT(val, 0, 4) -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_CRATE_THR1(val) vBIT(val, 4, 4) -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_CRATE_THR2(val) vBIT(val, 8, 4) -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_CRATE_THR3(val) vBIT(val, 12, 4) -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_FRATE_THR0(val) vBIT(val, 16, 4) -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_FRATE_THR1(val) vBIT(val, 20, 4) -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_FRATE_THR2(val) vBIT(val, 24, 4) -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_FRATE_THR3(val) vBIT(val, 28, 4) -#define VXGE_HAL_RXMAC_RED_RATE_REPL_QUEUE_TRICKLE_EN mBIT(35) - u8 unused016e0[0x016e0 - 0x016c8]; - -/* 0x016e0 */ u64 rxmac_cfg0_port[3]; -#define VXGE_HAL_RXMAC_CFG0_PORT_RMAC_EN mBIT(3) -#define VXGE_HAL_RXMAC_CFG0_PORT_STRIP_FCS mBIT(7) -#define VXGE_HAL_RXMAC_CFG0_PORT_DISCARD_PFRM mBIT(11) -#define VXGE_HAL_RXMAC_CFG0_PORT_IGNORE_FCS_ERR mBIT(15) -#define VXGE_HAL_RXMAC_CFG0_PORT_IGNORE_LONG_ERR mBIT(19) -#define VXGE_HAL_RXMAC_CFG0_PORT_IGNORE_USIZED_ERR mBIT(23) -#define VXGE_HAL_RXMAC_CFG0_PORT_IGNORE_LEN_MISMATCH mBIT(27) -#define VXGE_HAL_RXMAC_CFG0_PORT_MAX_PYLD_LEN(val) vBIT(val, 50, 14) - u8 unused01710[0x01710 - 0x016f8]; - -/* 0x01710 */ u64 rxmac_cfg2_port[3]; -#define VXGE_HAL_RXMAC_CFG2_PORT_PROM_EN mBIT(3) -/* 0x01728 */ u64 rxmac_pause_cfg_port[3]; -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_GEN_EN mBIT(3) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_RCV_EN mBIT(7) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_ACCEL_SEND(val) vBIT(val, 9, 3) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_DUAL_THR mBIT(15) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_HIGH_PTIME(val) vBIT(val, 20, 16) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_IGNORE_PF_FCS_ERR mBIT(39) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_IGNORE_PF_LEN_ERR mBIT(43) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_LIMITER_EN mBIT(47) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_MAX_LIMIT(val) vBIT(val, 48, 8) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_PERMIT_RATEMGMT_CTRL mBIT(59) - u8 unused01758[0x01758 - 0x01740]; - -/* 0x01758 */ u64 rxmac_red_cfg0_port[3]; -#define VXGE_HAL_RXMAC_RED_CFG0_PORT_RED_EN_VP(n) mBIT(n) -/* 0x01770 */ u64 rxmac_red_cfg1_port[3]; -#define VXGE_HAL_RXMAC_RED_CFG1_PORT_FINE_EN mBIT(3) -#define VXGE_HAL_RXMAC_RED_CFG1_PORT_RED_EN_REPL_QUEUE mBIT(11) -/* 0x01788 */ u64 rxmac_red_cfg2_port[3]; -#define VXGE_HAL_RXMAC_RED_CFG2_PORT_TRICKLE_EN_VP(n) mBIT(n) -/* 0x017a0 */ u64 rxmac_link_util_port[3]; -#define VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_RMAC_UTILIZATION(val) vBIT(val, 1, 7) -#define VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_UTIL_CFG(val) vBIT(val, 8, 4) -#define VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_RMAC_FRAC_UTIL(val) vBIT(val, 12, 4) -#define VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_PKT_WEIGHT(val) vBIT(val, 16, 4) -#define VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_RMAC_SCALE_FACTOR mBIT(23) - u8 unused017d0[0x017d0 - 0x017b8]; - -/* 0x017d0 */ u64 rxmac_status_port[3]; -#define VXGE_HAL_RXMAC_STATUS_PORT_RMAC_RX_FRM_RCVD mBIT(3) - u8 unused01800[0x01800 - 0x017e8]; - -/* 0x01800 */ u64 rxmac_rx_pa_cfg0; -#define VXGE_HAL_RXMAC_RX_PA_CFG0_IGNORE_FRAME_ERR mBIT(3) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_SUPPORT_SNAP_AB_N mBIT(7) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_SEARCH_FOR_HAO mBIT(18) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_SUPPORT_MOBILE_IPV6_HDRS mBIT(19) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_IPV6_STOP_SEARCHING mBIT(23) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_NO_PS_IF_UNKNOWN mBIT(27) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_SEARCH_FOR_ETYPE mBIT(35) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_TOSS_ANY_FRM_IF_L3_CSUM_ERR mBIT(39) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_TOSS_OFFLD_FRM_IF_L3_CSUM_ERR mBIT(43) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_TOSS_ANY_FRM_IF_L4_CSUM_ERR mBIT(47) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_TOSS_OFFLD_FRM_IF_L4_CSUM_ERR mBIT(51) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_TOSS_ANY_FRM_IF_RPA_ERR mBIT(55) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_TOSS_OFFLD_FRM_IF_RPA_ERR mBIT(59) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_JUMBO_SNAP_EN mBIT(63) -/* 0x01808 */ u64 rxmac_rx_pa_cfg1; -#define VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV4_TCP_INCL_PH mBIT(3) -#define VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV6_TCP_INCL_PH mBIT(7) -#define VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV4_UDP_INCL_PH mBIT(11) -#define VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV6_UDP_INCL_PH mBIT(15) -#define VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_L4_INCL_CF mBIT(19) -#define VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_STRIP_VLAN_TAG mBIT(23) - u8 unused01828[0x01828 - 0x01810]; - -/* 0x01828 */ u64 rts_mgr_cfg0; -#define VXGE_HAL_RTS_MGR_CFG0_RTS_DP_SP_PRIORITY mBIT(3) -#define VXGE_HAL_RTS_MGR_CFG0_FLEX_L4PRTCL_VALUE(val) vBIT(val, 24, 8) -#define VXGE_HAL_RTS_MGR_CFG0_ICMP_TRASH mBIT(35) -#define VXGE_HAL_RTS_MGR_CFG0_TCPSYN_TRASH mBIT(39) -#define VXGE_HAL_RTS_MGR_CFG0_ZL4PYLD_TRASH mBIT(43) -#define VXGE_HAL_RTS_MGR_CFG0_L4PRTCL_TCP_TRASH mBIT(47) -#define VXGE_HAL_RTS_MGR_CFG0_L4PRTCL_UDP_TRASH mBIT(51) -#define VXGE_HAL_RTS_MGR_CFG0_L4PRTCL_FLEX_TRASH mBIT(55) -#define VXGE_HAL_RTS_MGR_CFG0_IPFRAG_TRASH mBIT(59) -/* 0x01830 */ u64 rts_mgr_cfg1; -#define VXGE_HAL_RTS_MGR_CFG1_DA_ACTIVE_TABLE mBIT(3) -#define VXGE_HAL_RTS_MGR_CFG1_PN_ACTIVE_TABLE mBIT(7) -/* 0x01838 */ u64 rts_mgr_criteria_priority; -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_ETYPE(val) vBIT(val, 5, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_ICMP_TCPSYN(val) vBIT(val, 9, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_L4PN(val) vBIT(val, 13, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_RANGE_L4PN(val) vBIT(val, 17, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_RTH_IT(val) vBIT(val, 21, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_DS(val) vBIT(val, 25, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_QOS(val) vBIT(val, 29, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_ZL4PYLD(val) vBIT(val, 33, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_L4PRTCL(val) vBIT(val, 37, 3) -/* 0x01840 */ u64 rts_mgr_da_pause_cfg; -#define VXGE_HAL_RTS_MGR_DA_PAUSE_CFG_VPATH_VECTOR(val) vBIT(val, 0, 17) -/* 0x01848 */ u64 rts_mgr_da_slow_proto_cfg; -#define VXGE_HAL_RTS_MGR_DA_SLOW_PROTO_CFG_VPATH_VECTOR(val) vBIT(val, 0, 17) - u8 unused018a8[0x018a8 - 0x01850]; - -/* 0x018a8 */ u64 rts_mgr_steer_ctrl; -#define VXGE_HAL_RTS_MGR_STEER_CTRL_WE mBIT(7) -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL(val) vBIT(val, 8, 4) -#define VXGE_HAL_RTS_MGR_STEER_CTRL_STROBE mBIT(15) -#define VXGE_HAL_RTS_MGR_STEER_CTRL_BEHAV_TBL_SEL mBIT(23) -#define VXGE_HAL_RTS_MGR_STEER_CTRL_TABLE_SEL mBIT(27) -#define VXGE_HAL_RTS_MGR_STEER_CTRL_OFFSET(val) vBIT(val, 35, 13) -#define VXGE_HAL_RTS_MGR_STEER_CTRL_RMACJ_STATUS mBIT(0) -/* 0x018b0 */ u64 rts_mgr_steer_data0; -#define VXGE_HAL_RTS_MGR_STEER_DATA0_DATA(val) vBIT(val, 0, 64) -/* 0x018b8 */ u64 rts_mgr_steer_data1; -#define VXGE_HAL_RTS_MGR_STEER_DATA1_DATA(val) vBIT(val, 0, 64) -/* 0x018c0 */ u64 rts_mgr_steer_vpath_vector; -#define VXGE_HAL_RTS_MGR_STEER_VPATH_VECTOR_VPATH_VECTOR(val) vBIT(val, 0, 17) - u8 unused01930[0x01930 - 0x018c8]; - -/* 0x01930 */ u64 xmac_stats_rx_xgmii_char; -#define VXGE_HAL_XMAC_STATS_RX_XGMII_CHAR_LANE_CHAR1(val) vBIT(val, 1, 3) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_CHAR_RXC_CHAR1 mBIT(7) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_CHAR_RXD_CHAR1(val) vBIT(val, 8, 8) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_CHAR_LANE_CHAR2(val) vBIT(val, 17, 3) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_CHAR_RXC_CHAR2 mBIT(23) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_CHAR_RXD_CHAR2(val) vBIT(val, 24, 8) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_CHAR_BEHAV_CHAR2_NEAR_CHAR1 mBIT(39) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_CHAR_BEHAV_CHAR2_NUM_CHAR(val)\ - vBIT(val, 40, 16) -/* 0x01938 */ u64 xmac_stats_rx_xgmii_column1; -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN1_RXC_LANE0 mBIT(7) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN1_RXD_LANE0(val) vBIT(val, 8, 8) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN1_RXC_LANE1 mBIT(23) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN1_RXD_LANE1(val) vBIT(val, 24, 8) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN1_RXC_LANE2 mBIT(39) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN1_RXD_LANE2(val) vBIT(val, 40, 8) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN1_RXC_LANE3 mBIT(55) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN1_RXD_LANE3(val) vBIT(val, 56, 8) -/* 0x01940 */ u64 xmac_stats_rx_xgmii_column2; -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN2_RXC_LANE0 mBIT(7) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN2_RXD_LANE0(val) vBIT(val, 8, 8) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN2_RXC_LANE1 mBIT(23) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN2_RXD_LANE1(val) vBIT(val, 24, 8) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN2_RXC_LANE2 mBIT(39) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN2_RXD_LANE2(val) vBIT(val, 40, 8) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN2_RXC_LANE3 mBIT(55) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_COLUMN2_RXD_LANE3(val) vBIT(val, 56, 8) -/* 0x01948 */ u64 xmac_stats_rx_xgmii_behav_column2; -#define VXGE_HAL_XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_NEAR_COL1 mBIT(7) -#define VXGE_HAL_XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_NUM_COL(val) vBIT(val, 8, 16) -/* 0x01950 */ u64 xmac_rx_xgmii_capture_ctrl_port[3]; -#define VXGE_HAL_XMAC_RX_XGMII_CAPTURE_CTRL_PORT_EN mBIT(3) -#define VXGE_HAL_XMAC_RX_XGMII_CAPTURE_CTRL_PORT_READBACK mBIT(7) -/* 0x01968 */ u64 dbg_stat_rx_any_frms; -#define VXGE_HAL_DBG_STAT_RX_ANY_FRMS_PORT0_RX_ANY_FRMS(val) vBIT(val, 0, 8) -#define VXGE_HAL_DBG_STAT_RX_ANY_FRMS_PORT1_RX_ANY_FRMS(val) vBIT(val, 8, 8) -#define VXGE_HAL_DBG_STAT_RX_ANY_FRMS_PORT2_RX_ANY_FRMS(val) vBIT(val, 16, 8) - u8 unused01a00[0x01a00 - 0x01970]; - -/* 0x01a00 */ u64 rxmac_red_rate_vp[17]; -#define VXGE_HAL_RXMAC_RED_RATE_VP_CRATE_THR0(val) vBIT(val, 0, 4) -#define VXGE_HAL_RXMAC_RED_RATE_VP_CRATE_THR1(val) vBIT(val, 4, 4) -#define VXGE_HAL_RXMAC_RED_RATE_VP_CRATE_THR2(val) vBIT(val, 8, 4) -#define VXGE_HAL_RXMAC_RED_RATE_VP_CRATE_THR3(val) vBIT(val, 12, 4) -#define VXGE_HAL_RXMAC_RED_RATE_VP_FRATE_THR0(val) vBIT(val, 16, 4) -#define VXGE_HAL_RXMAC_RED_RATE_VP_FRATE_THR1(val) vBIT(val, 20, 4) -#define VXGE_HAL_RXMAC_RED_RATE_VP_FRATE_THR2(val) vBIT(val, 24, 4) -#define VXGE_HAL_RXMAC_RED_RATE_VP_FRATE_THR3(val) vBIT(val, 28, 4) - u8 unused01c00[0x01c00 - 0x01a88]; - -/* 0x01c00 */ u64 rxmac_thresh_cross_vp[17]; -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_PAUSE_LOW_UP_CROSSED mBIT(3) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_PAUSE_LOW_DOWN_CROSSED mBIT(7) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_PAUSE_HIGH_UP_CROSSED mBIT(11) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_PAUSE_HIGH_DOWN_CROSSED mBIT(15) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_RED_THR0_UP_CROSSED mBIT(35) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_RED_THR0_DOWN_CROSSED mBIT(39) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_RED_THR1_UP_CROSSED mBIT(43) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_RED_THR1_DOWN_CROSSED mBIT(47) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_RED_THR2_UP_CROSSED mBIT(51) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_RED_THR2_DOWN_CROSSED mBIT(55) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_RED_THR3_UP_CROSSED mBIT(59) -#define VXGE_HAL_RXMAC_THRESH_CROSS_VP_RMACJ_RED_THR3_DOWN_CROSSED mBIT(63) - u8 unused01e00[0x01e00 - 0x01c88]; - -/* 0x01e00 */ u64 xgmac_int_status; -#define VXGE_HAL_XGMAC_INT_STATUS_XMAC_GEN_ERR_XMAC_GEN_INT mBIT(3) -#define VXGE_HAL_XGMAC_INT_STATUS_XMAC_LINK_ERR_PORT0_XMAC_LINK_INT_PORT0\ - mBIT(7) -#define VXGE_HAL_XGMAC_INT_STATUS_XMAC_LINK_ERR_PORT1_XMAC_LINK_INT_PORT1\ - mBIT(11) -#define VXGE_HAL_XGMAC_INT_STATUS_XGXS_GEN_ERR_XGXS_GEN_INT mBIT(15) -#define VXGE_HAL_XGMAC_INT_STATUS_ASIC_NTWK_ERR_ASIC_NTWK_INT mBIT(19) -#define VXGE_HAL_XGMAC_INT_STATUS_ASIC_GPIO_ERR_ASIC_GPIO_INT mBIT(23) -/* 0x01e08 */ u64 xgmac_int_mask; -/* 0x01e10 */ u64 xmac_gen_err_reg; -#define VXGE_HAL_XMAC_GEN_ERR_REG_LAGC_LAG_PORT0_ACTOR_CHURN_DETECTED mBIT(7) -#define VXGE_HAL_XMAC_GEN_ERR_REG_LAGC_LAG_PORT0_PARTNER_CHURN_DETECTED mBIT(11) -#define VXGE_HAL_XMAC_GEN_ERR_REG_LAGC_LAG_PORT0_RECEIVED_LACPDU mBIT(15) -#define VXGE_HAL_XMAC_GEN_ERR_REG_LAGC_LAG_PORT1_ACTOR_CHURN_DETECTED mBIT(19) -#define VXGE_HAL_XMAC_GEN_ERR_REG_LAGC_LAG_PORT1_PARTNER_CHURN_DETECTED mBIT(23) -#define VXGE_HAL_XMAC_GEN_ERR_REG_LAGC_LAG_PORT1_RECEIVED_LACPDU mBIT(27) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XLCM_LAG_FAILOVER_DETECTED mBIT(31) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE0_SG_ERR(val)\ - vBIT(val, 40, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE0_DB_ERR(val)\ - vBIT(val, 42, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE1_SG_ERR(val)\ - vBIT(val, 44, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE1_DB_ERR(val)\ - vBIT(val, 46, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE2_SG_ERR(val)\ - vBIT(val, 48, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE2_DB_ERR(val)\ - vBIT(val, 50, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE3_SG_ERR(val)\ - vBIT(val, 52, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE3_DB_ERR(val)\ - vBIT(val, 54, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE4_SG_ERR(val)\ - vBIT(val, 56, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE4_DB_ERR(val)\ - vBIT(val, 58, 2) -#define VXGE_HAL_XMAC_GEN_ERR_REG_XMACJ_XMAC_FSM_ERR mBIT(63) -/* 0x01e18 */ u64 xmac_gen_err_mask; -/* 0x01e20 */ u64 xmac_gen_err_alarm; -/* 0x01e28 */ u64 xmac_link_err_port0_reg; -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMACJ_PORT_DOWN mBIT(3) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMACJ_PORT_UP mBIT(7) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMACJ_PORT_WENT_DOWN mBIT(11) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMACJ_PORT_WENT_UP mBIT(15) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMACJ_PORT_REAFFIRMED_FAULT mBIT(19) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMACJ_PORT_REAFFIRMED_OK mBIT(23) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMACJ_LINK_DOWN mBIT(27) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMACJ_LINK_UP mBIT(31) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_RATEMGMT_RATE_CHANGE mBIT(35) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_RATEMGMT_LASI_INV mBIT(39) -#define VXGE_HAL_XMAC_LINK_ERR_PORT_REG_XMDIO_MDIO_MGR_ACCESS_COMPLETE mBIT(47) -/* 0x01e30 */ u64 xmac_link_err_port0_mask; -/* 0x01e38 */ u64 xmac_link_err_port0_alarm; -/* 0x01e40 */ u64 xmac_link_err_port1_reg; -/* 0x01e48 */ u64 xmac_link_err_port1_mask; -/* 0x01e50 */ u64 xmac_link_err_port1_alarm; -/* 0x01e58 */ u64 xgxs_gen_err_reg; -#define VXGE_HAL_XGXS_GEN_ERR_REG_XGXS_XGXS_FSM_ERR mBIT(63) -/* 0x01e60 */ u64 xgxs_gen_err_mask; -/* 0x01e68 */ u64 xgxs_gen_err_alarm; -/* 0x01e70 */ u64 asic_ntwk_err_reg; -#define VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_DOWN mBIT(3) -#define VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_UP mBIT(7) -#define VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_WENT_DOWN mBIT(11) -#define VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_WENT_UP mBIT(15) -#define VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_REAFFIRMED_FAULT mBIT(19) -#define VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_REAFFIRMED_OK mBIT(23) -/* 0x01e78 */ u64 asic_ntwk_err_mask; -/* 0x01e80 */ u64 asic_ntwk_err_alarm; -/* 0x01e88 */ u64 asic_gpio_err_reg; -#define VXGE_HAL_ASIC_GPIO_ERR_REG_XMACJ_GPIO_INT(n) mBIT(n) -/* 0x01e90 */ u64 asic_gpio_err_mask; -/* 0x01e98 */ u64 asic_gpio_err_alarm; -/* 0x01ea0 */ u64 xgmac_gen_status; -#define VXGE_HAL_XGMAC_GEN_STATUS_XMACJ_NTWK_OK mBIT(3) -#define VXGE_HAL_XGMAC_GEN_STATUS_XMACJ_NTWK_DATA_RATE mBIT(11) -/* 0x01ea8 */ u64 xgmac_gen_fw_memo_status; -#define VXGE_HAL_XGMAC_GEN_FW_MEMO_STATUS_XMACJ_EVENTS_PENDING(val)\ - vBIT(val, 0, 17) -/* 0x01eb0 */ u64 xgmac_gen_fw_memo_mask; -#define VXGE_HAL_XGMAC_GEN_FW_MEMO_MASK_MASK(val) vBIT(val, 0, 64) -/* 0x01eb8 */ u64 xgmac_gen_fw_vpath_to_vsport_status; -#define VXGE_HAL_XGMAC_GEN_FW_VPATH_TO_VSPORT_STATUS_XMACJ_EVENTS_PENDING(val)\ - vBIT(val, 0, 17) -/* 0x01ec0 */ u64 xgmac_main_cfg_port[2]; -#define VXGE_HAL_XGMAC_MAIN_CFG_PORT_PORT_EN mBIT(3) -/* 0x01ed0 */ u64 xgmac_debounce_port[2]; -#define VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_LINK_UP(val) vBIT(val, 0, 4) -#define VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_LINK_DOWN(val) vBIT(val, 4, 4) -#define VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_PORT_UP(val) vBIT(val, 8, 4) -#define VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_PORT_DOWN(val) vBIT(val, 12, 4) -/* 0x01ee0 */ u64 xgmac_status_port[2]; -#define VXGE_HAL_XGMAC_STATUS_PORT_RMAC_REMOTE_FAULT mBIT(3) -#define VXGE_HAL_XGMAC_STATUS_PORT_RMAC_LOCAL_FAULT mBIT(7) -#define VXGE_HAL_XGMAC_STATUS_PORT_XMACJ_MAC_PHY_LAYER_AVAIL mBIT(11) -#define VXGE_HAL_XGMAC_STATUS_PORT_XMACJ_PORT_OK mBIT(15) - u8 unused01f40[0x01f40 - 0x01ef0]; - -/* 0x01f40 */ u64 xmac_gen_cfg; -#define VXGE_HAL_XMAC_GEN_CFG_RATEMGMT_MAC_RATE_SEL(val) vBIT(val, 2, 2) -#define VXGE_HAL_XMAC_GEN_CFG_TX_HEAD_DROP_WHEN_FAULT mBIT(7) -#define VXGE_HAL_XMAC_GEN_CFG_FAULT_BEHAVIOUR mBIT(27) -#define VXGE_HAL_XMAC_GEN_CFG_PERIOD_NTWK_UP(val) vBIT(val, 28, 4) -#define VXGE_HAL_XMAC_GEN_CFG_PERIOD_NTWK_DOWN(val) vBIT(val, 32, 4) -/* 0x01f48 */ u64 xmac_timestamp; -#define VXGE_HAL_XMAC_TIMESTAMP_EN mBIT(3) -#define VXGE_HAL_XMAC_TIMESTAMP_USE_LINK_ID(val) vBIT(val, 6, 2) -#define VXGE_HAL_XMAC_TIMESTAMP_INTERVAL(val) vBIT(val, 12, 4) -#define VXGE_HAL_XMAC_TIMESTAMP_TIMER_RESTART mBIT(19) -#define VXGE_HAL_XMAC_TIMESTAMP_XMACJ_ROLLOVER_CNT(val) vBIT(val, 32, 16) -/* 0x01f50 */ u64 xmac_stats_gen_cfg; -#define VXGE_HAL_XMAC_STATS_GEN_CFG_PRTAGGR_CUM_TIMER(val) vBIT(val, 4, 4) -#define VXGE_HAL_XMAC_STATS_GEN_CFG_VPATH_CUM_TIMER(val) vBIT(val, 8, 4) -#define VXGE_HAL_XMAC_STATS_GEN_CFG_VLAN_HANDLING mBIT(15) -/* 0x01f58 */ u64 xmac_stats_sys_cmd; -#define VXGE_HAL_XMAC_STATS_SYS_CMD_OP(val) vBIT(val, 5, 3) -#define VXGE_HAL_XMAC_STATS_SYS_CMD_STROBE mBIT(15) -#define VXGE_HAL_XMAC_STATS_SYS_CMD_LOC_SEL(val) vBIT(val, 27, 5) -#define VXGE_HAL_XMAC_STATS_SYS_CMD_OFFSET_SEL(val) vBIT(val, 32, 8) -/* 0x01f60 */ u64 xmac_stats_sys_data; -#define VXGE_HAL_XMAC_STATS_SYS_DATA_XSMGR_DATA(val) vBIT(val, 0, 64) - u8 unused01f80[0x01f80 - 0x01f68]; - -/* 0x01f80 */ u64 asic_ntwk_ctrl; -#define VXGE_HAL_ASIC_NTWK_CTRL_REQ_TEST_NTWK mBIT(3) -#define VXGE_HAL_ASIC_NTWK_CTRL_PORT0_REQ_TEST_PORT mBIT(11) -#define VXGE_HAL_ASIC_NTWK_CTRL_PORT1_REQ_TEST_PORT mBIT(15) -/* 0x01f88 */ u64 asic_ntwk_cfg_show_port_info; -#define VXGE_HAL_ASIC_NTWK_CFG_SHOW_PORT_INFO_VP(n) mBIT(n) -/* 0x01f90 */ u64 asic_ntwk_cfg_port_num; -#define VXGE_HAL_ASIC_NTWK_CFG_PORT_NUM_VP(n) mBIT(n) -/* 0x01f98 */ u64 xmac_cfg_port[3]; -#define VXGE_HAL_XMAC_CFG_PORT_XGMII_LOOPBACK mBIT(3) -#define VXGE_HAL_XMAC_CFG_PORT_XGMII_REVERSE_LOOPBACK mBIT(7) -#define VXGE_HAL_XMAC_CFG_PORT_XGMII_TX_BEHAV mBIT(11) -#define VXGE_HAL_XMAC_CFG_PORT_XGMII_RX_BEHAV mBIT(15) -/* 0x01fb0 */ u64 xmac_station_addr_port[2]; -#define VXGE_HAL_XMAC_STATION_ADDR_PORT_MAC_ADDR(val) vBIT(val, 0, 48) -/* 0x01fc0 */ u64 asic_led_activity_ctrl_port[3]; -#define VXGE_HAL_ASIC_LED_ACTIVITY_CTRL_PORT_TX_ACT_PULSE_EXTEND mBIT(11) -#define VXGE_HAL_ASIC_LED_ACTIVITY_CTRL_PORT_RX_ACT_PULSE_EXTEND mBIT(15) -#define VXGE_HAL_ASIC_LED_ACTIVITY_CTRL_PORT_COMBINE_TXRX mBIT(35) - u8 unused02020[0x02020 - 0x01fd8]; - -/* 0x02020 */ u64 lag_cfg; -#define VXGE_HAL_LAG_CFG_EN mBIT(3) -#define VXGE_HAL_LAG_CFG_MODE(val) vBIT(val, 6, 2) -#define VXGE_HAL_LAG_CFG_TX_DISCARD_BEHAV mBIT(11) -#define VXGE_HAL_LAG_CFG_RX_DISCARD_BEHAV mBIT(15) -#define VXGE_HAL_LAG_CFG_PREF_INDIV_PORT_NUM mBIT(19) -/* 0x02028 */ u64 lag_status; -#define VXGE_HAL_LAG_STATUS_XLCM_WAITING_TO_FAILBACK mBIT(3) -#define VXGE_HAL_LAG_STATUS_XLCM_TIMER_VAL_COLD_FAILOVER(val) vBIT(val, 8, 8) -/* 0x02030 */ u64 lag_active_passive_cfg; -#define VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_HOT_STANDBY mBIT(3) -#define VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_LACP_DECIDES mBIT(7) -#define VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_PREF_ACTIVE_PORT_NUM mBIT(11) -#define VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_AUTO_FAILBACK mBIT(15) -#define VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_FAILBACK_EN mBIT(19) -#define VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_COLD_FAILOVER_TIMEOUT(val)\ - vBIT(val, 32, 16) - u8 unused02040[0x02040 - 0x02038]; - -/* 0x02040 */ u64 lag_lacp_cfg; -#define VXGE_HAL_LAG_LACP_CFG_EN mBIT(3) -#define VXGE_HAL_LAG_LACP_CFG_LACP_BEGIN mBIT(7) -#define VXGE_HAL_LAG_LACP_CFG_DISCARD_LACP mBIT(11) -#define VXGE_HAL_LAG_LACP_CFG_LIBERAL_LEN_CHK mBIT(15) -/* 0x02048 */ u64 lag_timer_cfg_1; -#define VXGE_HAL_LAG_TIMER_CFG_1_FAST_PER(val) vBIT(val, 0, 16) -#define VXGE_HAL_LAG_TIMER_CFG_1_SLOW_PER(val) vBIT(val, 16, 16) -#define VXGE_HAL_LAG_TIMER_CFG_1_SHORT_TIMEOUT(val) vBIT(val, 32, 16) -#define VXGE_HAL_LAG_TIMER_CFG_1_LONG_TIMEOUT(val) vBIT(val, 48, 16) -/* 0x02050 */ u64 lag_timer_cfg_2; -#define VXGE_HAL_LAG_TIMER_CFG_2_CHURN_DET(val) vBIT(val, 0, 16) -#define VXGE_HAL_LAG_TIMER_CFG_2_AGGR_WAIT(val) vBIT(val, 16, 16) -#define VXGE_HAL_LAG_TIMER_CFG_2_SHORT_TIMER_SCALE(val) vBIT(val, 32, 16) -#define VXGE_HAL_LAG_TIMER_CFG_2_LONG_TIMER_SCALE(val) vBIT(val, 48, 16) -/* 0x02058 */ u64 lag_sys_id; -#define VXGE_HAL_LAG_SYS_ID_ADDR(val) vBIT(val, 0, 48) -#define VXGE_HAL_LAG_SYS_ID_USE_PORT_ADDR mBIT(51) -#define VXGE_HAL_LAG_SYS_ID_ADDR_SEL mBIT(55) -/* 0x02060 */ u64 lag_sys_cfg; -#define VXGE_HAL_LAG_SYS_CFG_SYS_PRI(val) vBIT(val, 0, 16) - u8 unused02070[0x02070 - 0x02068]; - -/* 0x02070 */ u64 lag_aggr_addr_cfg[2]; -#define VXGE_HAL_LAG_AGGR_ADDR_CFG_ADDR(val) vBIT(val, 0, 48) -#define VXGE_HAL_LAG_AGGR_ADDR_CFG_USE_PORT_ADDR mBIT(51) -#define VXGE_HAL_LAG_AGGR_ADDR_CFG_ADDR_SEL mBIT(55) -/* 0x02080 */ u64 lag_aggr_id_cfg[2]; -#define VXGE_HAL_LAG_AGGR_ID_CFG_ID(val) vBIT(val, 0, 16) -/* 0x02090 */ u64 lag_aggr_admin_key[2]; -#define VXGE_HAL_LAG_AGGR_ADMIN_KEY_KEY(val) vBIT(val, 0, 16) -/* 0x020a0 */ u64 lag_aggr_alt_admin_key; -#define VXGE_HAL_LAG_AGGR_ALT_ADMIN_KEY_KEY(val) vBIT(val, 0, 16) -#define VXGE_HAL_LAG_AGGR_ALT_ADMIN_KEY_ALT_AGGR mBIT(19) -/* 0x020a8 */ u64 lag_aggr_oper_key[2]; -#define VXGE_HAL_LAG_AGGR_OPER_KEY_LAGC_KEY(val) vBIT(val, 0, 16) -/* 0x020b8 */ u64 lag_aggr_partner_sys_id[2]; -#define VXGE_HAL_LAG_AGGR_PARTNER_SYS_ID_LAGC_ADDR(val) vBIT(val, 0, 48) -/* 0x020c8 */ u64 lag_aggr_partner_info[2]; -#define VXGE_HAL_LAG_AGGR_PARTNER_INFO_LAGC_SYS_PRI(val) vBIT(val, 0, 16) -#define VXGE_HAL_LAG_AGGR_PARTNER_INFO_LAGC_OPER_KEY(val) vBIT(val, 16, 16) -/* 0x020d8 */ u64 lag_aggr_state[2]; -#define VXGE_HAL_LAG_AGGR_STATE_LAGC_TX mBIT(3) -#define VXGE_HAL_LAG_AGGR_STATE_LAGC_RX mBIT(7) -#define VXGE_HAL_LAG_AGGR_STATE_LAGC_READY mBIT(11) -#define VXGE_HAL_LAG_AGGR_STATE_LAGC_INDIVIDUAL mBIT(15) - u8 unused020f0[0x020f0 - 0x020e8]; - -/* 0x020f0 */ u64 lag_port_cfg[2]; -#define VXGE_HAL_LAG_PORT_CFG_EN mBIT(3) -#define VXGE_HAL_LAG_PORT_CFG_DISCARD_SLOW_PROTO mBIT(7) -#define VXGE_HAL_LAG_PORT_CFG_HOST_CHOSEN_AGGR mBIT(11) -#define VXGE_HAL_LAG_PORT_CFG_DISCARD_UNKNOWN_SLOW_PROTO mBIT(15) -/* 0x02100 */ u64 lag_port_actor_admin_cfg[2]; -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_PORT_NUM(val) vBIT(val, 0, 16) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_PORT_PRI(val) vBIT(val, 16, 16) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_KEY_10G(val) vBIT(val, 32, 16) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_KEY_1G(val) vBIT(val, 48, 16) -/* 0x02110 */ u64 lag_port_actor_admin_state[2]; -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_LACP_ACTIVITY mBIT(3) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_LACP_TIMEOUT mBIT(7) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_AGGREGATION mBIT(11) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_SYNCHRONIZATION mBIT(15) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_COLLECTING mBIT(19) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_DISTRIBUTING mBIT(23) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_DEFAULTED mBIT(27) -#define VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_EXPIRED mBIT(31) -/* 0x02120 */ u64 lag_port_partner_admin_sys_id[2]; -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_SYS_ID_ADDR(val) vBIT(val, 0, 48) -/* 0x02130 */ u64 lag_port_partner_admin_cfg[2]; -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_SYS_PRI(val) vBIT(val, 0, 16) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_KEY(val) vBIT(val, 16, 16) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_PORT_NUM(val) vBIT(val, 32, 16) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_PORT_PRI(val) vBIT(val, 48, 16) -/* 0x02140 */ u64 lag_port_partner_admin_state[2]; -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_LACP_ACTIVITY mBIT(3) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_LACP_TIMEOUT mBIT(7) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_AGGREGATION mBIT(11) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_SYNCHRONIZATION mBIT(15) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_COLLECTING mBIT(19) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_DISTRIBUTING mBIT(23) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_DEFAULTED mBIT(27) -#define VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_EXPIRED mBIT(31) -/* 0x02150 */ u64 lag_port_to_aggr[2]; -#define VXGE_HAL_LAG_PORT_TO_AGGR_LAGC_AGGR_ID(val) vBIT(val, 0, 16) -#define VXGE_HAL_LAG_PORT_TO_AGGR_LAGC_AGGR_VLD_ID mBIT(19) -/* 0x02160 */ u64 lag_port_actor_oper_key[2]; -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_KEY_LAGC_KEY(val) vBIT(val, 0, 16) -/* 0x02170 */ u64 lag_port_actor_oper_state[2]; -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_STATE_LAGC_LACP_ACTIVITY mBIT(3) -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_STATE_LAGC_LACP_TIMEOUT mBIT(7) -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_STATE_LAGC_AGGREGATION mBIT(11) -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_STATE_LAGC_SYNCHRONIZATION mBIT(15) -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_STATE_LAGC_COLLECTING mBIT(19) -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_STATE_LAGC_DISTRIBUTING mBIT(23) -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_STATE_LAGC_DEFAULTED mBIT(27) -#define VXGE_HAL_LAG_PORT_ACTOR_OPER_STATE_LAGC_EXPIRED mBIT(31) -/* 0x02180 */ u64 lag_port_partner_oper_sys_id[2]; -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_SYS_ID_LAGC_ADDR(val) vBIT(val, 0, 48) -/* 0x02190 */ u64 lag_port_partner_oper_info[2]; -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_INFO_LAGC_SYS_PRI(val) vBIT(val, 0, 16) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_INFO_LAGC_KEY(val) vBIT(val, 16, 16) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_INFO_LAGC_PORT_NUM(val) vBIT(val, 32, 16) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_INFO_LAGC_PORT_PRI(val) vBIT(val, 48, 16) -/* 0x021a0 */ u64 lag_port_partner_oper_state[2]; -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_STATE_LAGC_LACP_ACTIVITY mBIT(3) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_STATE_LAGC_LACP_TIMEOUT mBIT(7) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_STATE_LAGC_AGGREGATION mBIT(11) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_STATE_LAGC_SYNCHRONIZATION mBIT(15) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_STATE_LAGC_COLLECTING mBIT(19) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_STATE_LAGC_DISTRIBUTING mBIT(23) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_STATE_LAGC_DEFAULTED mBIT(27) -#define VXGE_HAL_LAG_PORT_PARTNER_OPER_STATE_LAGC_EXPIRED mBIT(31) -/* 0x021b0 */ u64 lag_port_state_vars[2]; -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_READY mBIT(3) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_SELECTED(val) vBIT(val, 6, 2) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_AGGR_NUM mBIT(11) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_PORT_MOVED mBIT(15) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_PORT_ENABLED mBIT(18) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_PORT_DISABLED mBIT(19) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_NTT mBIT(23) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_ACTOR_CHURN mBIT(27) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_PARTNER_CHURN mBIT(31) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_ACTOR_INFO_LEN_MISMATCH mBIT(32) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_PARTNER_INFO_LEN_MISMATCH mBIT(33) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_COLL_INFO_LEN_MISMATCH mBIT(34) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_TERM_INFO_LEN_MISMATCH mBIT(35) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_RX_FSM_STATE(val) vBIT(val, 37, 3) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_MUX_FSM_STATE(val) vBIT(val, 41, 3) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_MUX_REASON(val) vBIT(val, 44, 4) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_ACTOR_CHURN_STATE mBIT(54) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_PARTNER_CHURN_STATE mBIT(55) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_ACTOR_CHURN_COUNT(val)\ - vBIT(val, 56, 4) -#define VXGE_HAL_LAG_PORT_STATE_VARS_LAGC_PARTNER_CHURN_COUNT(val)\ - vBIT(val, 60, 4) -/* 0x021c0 */ u64 lag_port_timer_cntr[2]; -#define VXGE_HAL_LAG_PORT_TIMER_CNTR_LAGC_CURRENT_while (val) vBIT(val, 0, 8) -#define VXGE_HAL_LAG_PORT_TIMER_CNTR_LAGC_PERIODIC_while (val) vBIT(val, 8, 8) -#define VXGE_HAL_LAG_PORT_TIMER_CNTR_LAGC_WAIT_while (val) vBIT(val, 16, 8) -#define VXGE_HAL_LAG_PORT_TIMER_CNTR_LAGC_TX_LACP(val) vBIT(val, 24, 8) -#define VXGE_HAL_LAG_PORT_TIMER_CNTR_LAGC_ACTOR_SYNC_TRANSITION_COUNT(val)\ - vBIT(val, 32, 8) -#define VXGE_HAL_LAG_PORT_TIMER_CNTR_LAGC_PARTNER_SYNC_TRANSITION_COUNT(val)\ - vBIT(val, 40, 8) -#define VXGE_HAL_LAG_PORT_TIMER_CNTR_LAGC_ACTOR_CHANGE_COUNT(val)\ - vBIT(val, 48, 8) -#define VXGE_HAL_LAG_PORT_TIMER_CNTR_LAGC_PARTNER_CHANGE_COUNT(val)\ - vBIT(val, 56, 8) - u8 unused021e0[0x021e0 - 0x021d0]; - -/* 0x021e0 */ u64 transceiver_reset_port[2]; -#define VXGE_HAL_TRANSCEIVER_RESET_PORT_TCVR_RESET(val) vBIT(val, 0, 8) -/* 0x021f0 */ u64 transceiver_ctrl_port[2]; -#define VXGE_HAL_TRANSCEIVER_CTRL_PORT_TCVR_TX_ON mBIT(3) -/* 0x02200 */ u64 asic_gpio_ctrl; -#define VXGE_HAL_ASIC_GPIO_CTRL_XMACJ_GPIO_DATA_IN(n) mBIT(n) -#define VXGE_HAL_ASIC_GPIO_CTRL_GPIO_DATA_OUT(n) mBIT(n) -#define VXGE_HAL_ASIC_GPIO_CTRL_GPIO_OUT_EN(n) mBIT(n) -/* 0x02208 */ u64 asic_led_beacon_ctrl; -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_PORT0_LINK_INVERT mBIT(3) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_PORT0_10G_INVERT mBIT(7) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_PORT0_TX_ACT_INVERT mBIT(11) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_PORT0_RX_ACT_INVERT mBIT(15) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_PORT1_LINK_INVERT mBIT(19) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_PORT1_10G_INVERT mBIT(23) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_PORT1_TX_ACT_INVERT mBIT(27) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_PORT1_RX_ACT_INVERT mBIT(31) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_AUX_LED1_INVERT mBIT(35) -#define VXGE_HAL_ASIC_LED_BEACON_CTRL_AUX_LED2_INVERT mBIT(39) -/* 0x02210 */ u64 asic_led_ctrl0; -#define VXGE_HAL_ASIC_LED_CTRL0_PORT0_LINK_ON mBIT(3) -#define VXGE_HAL_ASIC_LED_CTRL0_PORT0_10G_ON mBIT(7) -#define VXGE_HAL_ASIC_LED_CTRL0_PORT1_LINK_ON mBIT(19) -#define VXGE_HAL_ASIC_LED_CTRL0_PORT1_10G_ON mBIT(23) -#define VXGE_HAL_ASIC_LED_CTRL0_AUX_LED1_ON mBIT(35) -#define VXGE_HAL_ASIC_LED_CTRL0_AUX_LED2_ON mBIT(39) -/* 0x02218 */ u64 asic_led_ctrl1; -#define VXGE_HAL_ASIC_LED_CTRL1_PORT0_LINK_SOURCE(val) vBIT(val, 2, 2) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT0_10G_SOURCE(val) vBIT(val, 6, 2) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT1_LINK_SOURCE(val) vBIT(val, 10, 2) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT1_10G_SOURCE(val) vBIT(val, 14, 2) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT0_LINK_PULSE_EXTEND mBIT(19) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT0_10G_PULSE_EXTEND mBIT(23) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT1_LINK_PULSE_EXTEND mBIT(27) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT1_10G_PULSE_EXTEND mBIT(31) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT0_LINK_EXT_SEL(val) vBIT(val, 32, 4) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT0_10G_EXT_SEL(val) vBIT(val, 36, 4) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT1_LINK_EXT_SEL(val) vBIT(val, 40, 4) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT1_10G_EXT_SEL(val) vBIT(val, 44, 4) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT0_LINK_INT_SEL(val) vBIT(val, 48, 4) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT0_10G_INT_SEL(val) vBIT(val, 52, 4) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT1_LINK_INT_SEL(val) vBIT(val, 56, 4) -#define VXGE_HAL_ASIC_LED_CTRL1_PORT1_10G_INT_SEL(val) vBIT(val, 60, 4) -/* 0x02220 */ u64 asic_led_debug_sel; -#define VXGE_HAL_ASIC_LED_DEBUG_SEL_XGMAC_SEL0(val) vBIT(val, 2, 6) -#define VXGE_HAL_ASIC_LED_DEBUG_SEL_XGMAC_SEL1(val) vBIT(val, 10, 6) -#define VXGE_HAL_ASIC_LED_DEBUG_SEL_XGMAC_SEL2(val) vBIT(val, 18, 6) -#define VXGE_HAL_ASIC_LED_DEBUG_SEL_XGMAC_SEL3(val) vBIT(val, 26, 6) - u8 unused02300[0x02300 - 0x02228]; - -/* 0x02300 */ u64 usdc_sgrp_partition; -#define VXGE_HAL_USDC_SGRP_PARTITION_ENABLE mBIT(7) -/* 0x02308 */ u64 usdc_ugrp_priority_0; -#define VXGE_HAL_USDC_UGRP_PRIORITY_0_NUMBER_0(val) vBIT(val, 3, 5) -/* 0x02310 */ u64 usdc_ugrp_priority_1; -#define VXGE_HAL_USDC_UGRP_PRIORITY_1_NUMBER_1(val) vBIT(val, 3, 5) -/* 0x02318 */ u64 usdc_ugrp_priority_2; -#define VXGE_HAL_USDC_UGRP_PRIORITY_2_NUMBER_2(val) vBIT(val, 3, 5) -/* 0x02320 */ u64 usdc_ugrp_priority_3; -#define VXGE_HAL_USDC_UGRP_PRIORITY_3_NUMBER_3(val) vBIT(val, 3, 5) -/* 0x02328 */ u64 usdc_ugrp_priority_4; -#define VXGE_HAL_USDC_UGRP_PRIORITY_4_NUMBER_4(val) vBIT(val, 3, 5) -/* 0x02330 */ u64 usdc_ugrp_priority_5; -#define VXGE_HAL_USDC_UGRP_PRIORITY_5_NUMBER_5(val) vBIT(val, 3, 5) -/* 0x02338 */ u64 usdc_ugrp_priority_6; -#define VXGE_HAL_USDC_UGRP_PRIORITY_6_NUMBER_6(val) vBIT(val, 3, 5) -/* 0x02340 */ u64 usdc_ugrp_priority_7; -#define VXGE_HAL_USDC_UGRP_PRIORITY_7_NUMBER_7(val) vBIT(val, 3, 5) -/* 0x02348 */ u64 usdc_ugrp_priority_8; -#define VXGE_HAL_USDC_UGRP_PRIORITY_8_NUMBER_8(val) vBIT(val, 3, 5) -/* 0x02350 */ u64 usdc_ugrp_priority_9; -#define VXGE_HAL_USDC_UGRP_PRIORITY_9_NUMBER_9(val) vBIT(val, 3, 5) -/* 0x02358 */ u64 usdc_ugrp_priority_10; -#define VXGE_HAL_USDC_UGRP_PRIORITY_10_NUMBER_10(val) vBIT(val, 3, 5) -/* 0x02360 */ u64 usdc_ugrp_priority_11; -#define VXGE_HAL_USDC_UGRP_PRIORITY_11_NUMBER_11(val) vBIT(val, 3, 5) -/* 0x02368 */ u64 usdc_ugrp_priority_12; -#define VXGE_HAL_USDC_UGRP_PRIORITY_12_NUMBER_12(val) vBIT(val, 3, 5) -/* 0x02370 */ u64 usdc_ugrp_priority_13; -#define VXGE_HAL_USDC_UGRP_PRIORITY_13_NUMBER_13(val) vBIT(val, 3, 5) -/* 0x02378 */ u64 usdc_ugrp_priority_14; -#define VXGE_HAL_USDC_UGRP_PRIORITY_14_NUMBER_14(val) vBIT(val, 3, 5) -/* 0x02380 */ u64 usdc_ugrp_priority_15; -#define VXGE_HAL_USDC_UGRP_PRIORITY_15_NUMBER_15(val) vBIT(val, 3, 5) -/* 0x02388 */ u64 usdc_ugrp_priority_16; -#define VXGE_HAL_USDC_UGRP_PRIORITY_16_NUMBER_16(val) vBIT(val, 3, 5) - u8 unused02398[0x02398 - 0x02390]; - -/* 0x02398 */ u64 ugrp_htn_wrr_priority_0; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_0_NUMBER_0(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_0_NUMBER_1(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_0_NUMBER_2(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_0_NUMBER_3(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_0_NUMBER_4(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_0_NUMBER_5(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_0_NUMBER_6(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_0_NUMBER_7(val) vBIT(val, 59, 5) -/* 0x023a0 */ u64 ugrp_htn_wrr_priority_1; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_1_NUMBER_8(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_1_NUMBER_9(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_1_NUMBER_10(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_1_NUMBER_11(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_1_NUMBER_12(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_1_NUMBER_13(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_1_NUMBER_14(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_1_NUMBER_15(val) vBIT(val, 59, 5) -/* 0x023a8 */ u64 ugrp_htn_wrr_priority_2; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_2_NUMBER_16(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_2_NUMBER_17(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_2_NUMBER_18(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_2_NUMBER_19(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_2_NUMBER_20(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_2_NUMBER_21(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_2_NUMBER_22(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_2_NUMBER_23(val) vBIT(val, 59, 5) -/* 0x023b0 */ u64 ugrp_htn_wrr_priority_3; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_3_NUMBER_24(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_3_NUMBER_25(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_3_NUMBER_26(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_3_NUMBER_27(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_3_NUMBER_28(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_3_NUMBER_29(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_3_NUMBER_30(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_3_NUMBER_31(val) vBIT(val, 59, 5) -/* 0x023b8 */ u64 ugrp_htn_wrr_priority_4; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_4_NUMBER_32(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_4_NUMBER_33(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_4_NUMBER_34(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_4_NUMBER_35(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_4_NUMBER_36(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_4_NUMBER_37(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_4_NUMBER_38(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_4_NUMBER_39(val) vBIT(val, 59, 5) -/* 0x023c0 */ u64 ugrp_htn_wrr_priority_5; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_5_NUMBER_40(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_5_NUMBER_41(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_5_NUMBER_42(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_5_NUMBER_43(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_5_NUMBER_44(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_5_NUMBER_45(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_5_NUMBER_46(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_5_NUMBER_47(val) vBIT(val, 59, 5) -/* 0x023c8 */ u64 ugrp_htn_wrr_priority_6; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_6_NUMBER_48(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_6_NUMBER_49(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_6_NUMBER_50(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_6_NUMBER_51(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_6_NUMBER_52(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_6_NUMBER_53(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_6_NUMBER_54(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_6_NUMBER_55(val) vBIT(val, 59, 5) -/* 0x023d0 */ u64 ugrp_htn_wrr_priority_7; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_7_NUMBER_56(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_7_NUMBER_57(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_7_NUMBER_58(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_7_NUMBER_59(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_7_NUMBER_60(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_7_NUMBER_61(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_7_NUMBER_62(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_7_NUMBER_63(val) vBIT(val, 59, 5) -/* 0x023d8 */ u64 ugrp_htn_wrr_priority_8; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_8_NUMBER_64(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_8_NUMBER_65(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_8_NUMBER_66(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_8_NUMBER_67(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_8_NUMBER_68(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_8_NUMBER_69(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_8_NUMBER_70(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_8_NUMBER_71(val) vBIT(val, 59, 5) -/* 0x023e0 */ u64 ugrp_htn_wrr_priority_9; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_9_NUMBER_72(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_9_NUMBER_73(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_9_NUMBER_74(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_9_NUMBER_75(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_9_NUMBER_76(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_9_NUMBER_77(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_9_NUMBER_78(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_9_NUMBER_79(val) vBIT(val, 59, 5) -/* 0x023e8 */ u64 ugrp_htn_wrr_priority_10; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_10_NUMBER_80(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_10_NUMBER_81(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_10_NUMBER_82(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_10_NUMBER_83(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_10_NUMBER_84(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_10_NUMBER_85(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_10_NUMBER_86(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_10_NUMBER_87(val) vBIT(val, 59, 5) -/* 0x023f0 */ u64 ugrp_htn_wrr_priority_11; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_11_NUMBER_88(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_11_NUMBER_89(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_11_NUMBER_90(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_11_NUMBER_91(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_11_NUMBER_92(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_11_NUMBER_93(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_11_NUMBER_94(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_11_NUMBER_95(val) vBIT(val, 59, 5) -/* 0x023f8 */ u64 ugrp_htn_wrr_priority_12; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_12_NUMBER_96(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_12_NUMBER_97(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_12_NUMBER_98(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_12_NUMBER_99(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_12_NUMBER_100(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_12_NUMBER_101(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_12_NUMBER_102(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_12_NUMBER_103(val) vBIT(val, 59, 5) -/* 0x02400 */ u64 ugrp_htn_wrr_priority_13; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_13_NUMBER_104(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_13_NUMBER_105(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_13_NUMBER_106(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_13_NUMBER_107(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_13_NUMBER_108(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_13_NUMBER_109(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_13_NUMBER_110(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_13_NUMBER_111(val) vBIT(val, 59, 5) -/* 0x02408 */ u64 ugrp_htn_wrr_priority_14; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_14_NUMBER_112(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_14_NUMBER_113(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_14_NUMBER_114(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_14_NUMBER_115(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_14_NUMBER_116(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_14_NUMBER_117(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_14_NUMBER_118(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_14_NUMBER_119(val) vBIT(val, 59, 5) -/* 0x02410 */ u64 ugrp_htn_wrr_priority_15; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_15_NUMBER_120(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_15_NUMBER_121(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_15_NUMBER_122(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_15_NUMBER_123(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_15_NUMBER_124(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_15_NUMBER_125(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_15_NUMBER_126(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_15_NUMBER_127(val) vBIT(val, 59, 5) -/* 0x02418 */ u64 ugrp_htn_wrr_priority_16; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_16_NUMBER_128(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_16_NUMBER_129(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_16_NUMBER_130(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_16_NUMBER_131(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_16_NUMBER_132(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_16_NUMBER_133(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_16_NUMBER_134(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_16_NUMBER_135(val) vBIT(val, 59, 5) -/* 0x02420 */ u64 ugrp_htn_wrr_priority_17; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_17_NUMBER_136(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_17_NUMBER_137(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_17_NUMBER_138(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_17_NUMBER_139(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_17_NUMBER_140(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_17_NUMBER_141(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_17_NUMBER_142(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_17_NUMBER_143(val) vBIT(val, 59, 5) -/* 0x02428 */ u64 ugrp_htn_wrr_priority_18; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_18_NUMBER_144(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_18_NUMBER_145(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_18_NUMBER_146(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_18_NUMBER_147(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_18_NUMBER_148(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_18_NUMBER_149(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_18_NUMBER_150(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_18_NUMBER_151(val) vBIT(val, 59, 5) -/* 0x02430 */ u64 ugrp_htn_wrr_priority_19; -#define VXGE_HAL_UGRP_HTN_WRR_PRIORITY_19_NUMBER_152(val) vBIT(val, 3, 5) -/* 0x02438 */ u64 usdc_vplane[17]; -#define VXGE_HAL_USDC_VPLANE_SGRP_OWN(val) vBIT(val, 0, 32) - u8 unused024c8[0x024c8 - 0x024c0]; - -/* 0x024c8 */ u64 usdc_sgrp_assignment; -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_0_ERR mBIT(0) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_1_ERR mBIT(1) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_2_ERR mBIT(2) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_3_ERR mBIT(3) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_4_ERR mBIT(4) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_5_ERR mBIT(5) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_6_ERR mBIT(6) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_7_ERR mBIT(7) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_8_ERR mBIT(8) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_9_ERR mBIT(9) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_10_ERR mBIT(10) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_11_ERR mBIT(11) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_12_ERR mBIT(12) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_13_ERR mBIT(13) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_14_ERR mBIT(14) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_15_ERR mBIT(15) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_16_ERR mBIT(16) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_17_ERR mBIT(17) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_18_ERR mBIT(18) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_19_ERR mBIT(19) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_20_ERR mBIT(20) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_21_ERR mBIT(21) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_22_ERR mBIT(22) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_23_ERR mBIT(23) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_24_ERR mBIT(24) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_25_ERR mBIT(25) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_26_ERR mBIT(26) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_27_ERR mBIT(27) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_28_ERR mBIT(28) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_29_ERR mBIT(29) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_30_ERR mBIT(30) -#define VXGE_HAL_USDC_SGRP_ASSIGNMENT_USDC_SGRP_31_ERR mBIT(31) -/* 0x024d0 */ u64 usdc_cntrl; -#define VXGE_HAL_USDC_CNTRL_MIN_VALUE(val) vBIT(val, 1, 7) -/* 0x024d8 */ u64 usdc_read_cntrl; -#define VXGE_HAL_USDC_READ_CNTRL_USDC_FREEZE mBIT(7) -#define VXGE_HAL_USDC_READ_CNTRL_USDC_RDCTRL(val) vBIT(val, 14, 2) -#define VXGE_HAL_USDC_READ_CNTRL_USDC_WORD_SEL mBIT(23) -#define VXGE_HAL_USDC_READ_CNTRL_USDC_ADDR(val) vBIT(val, 49, 15) -/* 0x024e0 */ u64 usdc_read_data; -#define VXGE_HAL_USDC_READ_DATA_READ_DATA(val) vBIT(val, 0, 64) - u8 unused02500[0x02500 - 0x024e8]; - -/* 0x02500 */ u64 ugrp_srq_wrr_priority_0; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_0_NUMBER_0(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_0_NUMBER_1(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_0_NUMBER_2(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_0_NUMBER_3(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_0_NUMBER_4(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_0_NUMBER_5(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_0_NUMBER_6(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_0_NUMBER_7(val) vBIT(val, 59, 5) -/* 0x02508 */ u64 ugrp_srq_wrr_priority_1; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_1_NUMBER_8(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_1_NUMBER_9(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_1_NUMBER_10(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_1_NUMBER_11(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_1_NUMBER_12(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_1_NUMBER_13(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_1_NUMBER_14(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_1_NUMBER_15(val) vBIT(val, 59, 5) -/* 0x02510 */ u64 ugrp_srq_wrr_priority_2; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_2_NUMBER_16(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_2_NUMBER_17(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_2_NUMBER_18(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_2_NUMBER_19(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_2_NUMBER_20(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_2_NUMBER_21(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_2_NUMBER_22(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_2_NUMBER_23(val) vBIT(val, 59, 5) -/* 0x02518 */ u64 ugrp_srq_wrr_priority_3; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_3_NUMBER_24(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_3_NUMBER_25(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_3_NUMBER_26(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_3_NUMBER_27(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_3_NUMBER_28(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_3_NUMBER_29(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_3_NUMBER_30(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_3_NUMBER_31(val) vBIT(val, 59, 5) -/* 0x02520 */ u64 ugrp_srq_wrr_priority_4; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_4_NUMBER_32(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_4_NUMBER_33(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_4_NUMBER_34(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_4_NUMBER_35(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_4_NUMBER_36(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_4_NUMBER_37(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_4_NUMBER_38(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_4_NUMBER_39(val) vBIT(val, 59, 5) -/* 0x02528 */ u64 ugrp_srq_wrr_priority_5; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_5_NUMBER_40(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_5_NUMBER_41(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_5_NUMBER_42(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_5_NUMBER_43(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_5_NUMBER_44(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_5_NUMBER_45(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_5_NUMBER_46(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_5_NUMBER_47(val) vBIT(val, 59, 5) -/* 0x02530 */ u64 ugrp_srq_wrr_priority_6; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_6_NUMBER_48(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_6_NUMBER_49(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_6_NUMBER_50(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_6_NUMBER_51(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_6_NUMBER_52(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_6_NUMBER_53(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_6_NUMBER_54(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_6_NUMBER_55(val) vBIT(val, 59, 5) -/* 0x02538 */ u64 ugrp_srq_wrr_priority_7; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_7_NUMBER_56(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_7_NUMBER_57(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_7_NUMBER_58(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_7_NUMBER_59(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_7_NUMBER_60(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_7_NUMBER_61(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_7_NUMBER_62(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_7_NUMBER_63(val) vBIT(val, 59, 5) -/* 0x02540 */ u64 ugrp_srq_wrr_priority_8; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_8_NUMBER_64(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_8_NUMBER_65(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_8_NUMBER_66(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_8_NUMBER_67(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_8_NUMBER_68(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_8_NUMBER_69(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_8_NUMBER_70(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_8_NUMBER_71(val) vBIT(val, 59, 5) -/* 0x02548 */ u64 ugrp_srq_wrr_priority_9; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_9_NUMBER_72(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_9_NUMBER_73(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_9_NUMBER_74(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_9_NUMBER_75(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_9_NUMBER_76(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_9_NUMBER_77(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_9_NUMBER_78(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_9_NUMBER_79(val) vBIT(val, 59, 5) -/* 0x02550 */ u64 ugrp_srq_wrr_priority_10; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_10_NUMBER_80(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_10_NUMBER_81(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_10_NUMBER_82(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_10_NUMBER_83(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_10_NUMBER_84(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_10_NUMBER_85(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_10_NUMBER_86(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_10_NUMBER_87(val) vBIT(val, 59, 5) -/* 0x02558 */ u64 ugrp_srq_wrr_priority_11; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_11_NUMBER_88(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_11_NUMBER_89(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_11_NUMBER_90(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_11_NUMBER_91(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_11_NUMBER_92(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_11_NUMBER_93(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_11_NUMBER_94(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_11_NUMBER_95(val) vBIT(val, 59, 5) -/* 0x02560 */ u64 ugrp_srq_wrr_priority_12; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_12_NUMBER_96(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_12_NUMBER_97(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_12_NUMBER_98(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_12_NUMBER_99(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_12_NUMBER_100(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_12_NUMBER_101(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_12_NUMBER_102(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_12_NUMBER_103(val) vBIT(val, 59, 5) -/* 0x02568 */ u64 ugrp_srq_wrr_priority_13; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_13_NUMBER_104(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_13_NUMBER_105(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_13_NUMBER_106(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_13_NUMBER_107(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_13_NUMBER_108(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_13_NUMBER_109(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_13_NUMBER_110(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_13_NUMBER_111(val) vBIT(val, 59, 5) -/* 0x02570 */ u64 ugrp_srq_wrr_priority_14; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_14_NUMBER_112(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_14_NUMBER_113(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_14_NUMBER_114(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_14_NUMBER_115(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_14_NUMBER_116(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_14_NUMBER_117(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_14_NUMBER_118(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_14_NUMBER_119(val) vBIT(val, 59, 5) -/* 0x02578 */ u64 ugrp_srq_wrr_priority_15; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_15_NUMBER_120(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_15_NUMBER_121(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_15_NUMBER_122(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_15_NUMBER_123(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_15_NUMBER_124(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_15_NUMBER_125(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_15_NUMBER_126(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_15_NUMBER_127(val) vBIT(val, 59, 5) -/* 0x02580 */ u64 ugrp_srq_wrr_priority_16; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_16_NUMBER_128(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_16_NUMBER_129(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_16_NUMBER_130(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_16_NUMBER_131(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_16_NUMBER_132(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_16_NUMBER_133(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_16_NUMBER_134(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_16_NUMBER_135(val) vBIT(val, 59, 5) -/* 0x02588 */ u64 ugrp_srq_wrr_priority_17; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_17_NUMBER_136(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_17_NUMBER_137(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_17_NUMBER_138(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_17_NUMBER_139(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_17_NUMBER_140(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_17_NUMBER_141(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_17_NUMBER_142(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_17_NUMBER_143(val) vBIT(val, 59, 5) -/* 0x02590 */ u64 ugrp_srq_wrr_priority_18; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_18_NUMBER_144(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_18_NUMBER_145(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_18_NUMBER_146(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_18_NUMBER_147(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_18_NUMBER_148(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_18_NUMBER_149(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_18_NUMBER_150(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_18_NUMBER_151(val) vBIT(val, 59, 5) -/* 0x02598 */ u64 ugrp_srq_wrr_priority_19; -#define VXGE_HAL_UGRP_SRQ_WRR_PRIORITY_19_NUMBER_152(val) vBIT(val, 3, 5) -/* 0x025a0 */ u64 ugrp_cqrq_wrr_priority_0; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_0_NUMBER_0(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_0_NUMBER_1(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_0_NUMBER_2(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_0_NUMBER_3(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_0_NUMBER_4(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_0_NUMBER_5(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_0_NUMBER_6(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_0_NUMBER_7(val) vBIT(val, 59, 5) -/* 0x025a8 */ u64 ugrp_cqrq_wrr_priority_1; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_1_NUMBER_8(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_1_NUMBER_9(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_1_NUMBER_10(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_1_NUMBER_11(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_1_NUMBER_12(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_1_NUMBER_13(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_1_NUMBER_14(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_1_NUMBER_15(val) vBIT(val, 59, 5) -/* 0x025b0 */ u64 ugrp_cqrq_wrr_priority_2; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_2_NUMBER_16(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_2_NUMBER_17(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_2_NUMBER_18(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_2_NUMBER_19(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_2_NUMBER_20(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_2_NUMBER_21(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_2_NUMBER_22(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_2_NUMBER_23(val) vBIT(val, 59, 5) -/* 0x025b8 */ u64 ugrp_cqrq_wrr_priority_3; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_3_NUMBER_24(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_3_NUMBER_25(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_3_NUMBER_26(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_3_NUMBER_27(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_3_NUMBER_28(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_3_NUMBER_29(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_3_NUMBER_30(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_3_NUMBER_31(val) vBIT(val, 59, 5) -/* 0x025c0 */ u64 ugrp_cqrq_wrr_priority_4; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_4_NUMBER_32(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_4_NUMBER_33(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_4_NUMBER_34(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_4_NUMBER_35(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_4_NUMBER_36(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_4_NUMBER_37(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_4_NUMBER_38(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_4_NUMBER_39(val) vBIT(val, 59, 5) -/* 0x025c8 */ u64 ugrp_cqrq_wrr_priority_5; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_5_NUMBER_40(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_5_NUMBER_41(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_5_NUMBER_42(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_5_NUMBER_43(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_5_NUMBER_44(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_5_NUMBER_45(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_5_NUMBER_46(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_5_NUMBER_47(val) vBIT(val, 59, 5) -/* 0x025d0 */ u64 ugrp_cqrq_wrr_priority_6; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_6_NUMBER_48(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_6_NUMBER_49(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_6_NUMBER_50(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_6_NUMBER_51(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_6_NUMBER_52(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_6_NUMBER_53(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_6_NUMBER_54(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_6_NUMBER_55(val) vBIT(val, 59, 5) -/* 0x025d8 */ u64 ugrp_cqrq_wrr_priority_7; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_7_NUMBER_56(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_7_NUMBER_57(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_7_NUMBER_58(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_7_NUMBER_59(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_7_NUMBER_60(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_7_NUMBER_61(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_7_NUMBER_62(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_7_NUMBER_63(val) vBIT(val, 59, 5) -/* 0x025e0 */ u64 ugrp_cqrq_wrr_priority_8; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_8_NUMBER_64(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_8_NUMBER_65(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_8_NUMBER_66(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_8_NUMBER_67(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_8_NUMBER_68(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_8_NUMBER_69(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_8_NUMBER_70(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_8_NUMBER_71(val) vBIT(val, 59, 5) -/* 0x025e8 */ u64 ugrp_cqrq_wrr_priority_9; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_9_NUMBER_72(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_9_NUMBER_73(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_9_NUMBER_74(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_9_NUMBER_75(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_9_NUMBER_76(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_9_NUMBER_77(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_9_NUMBER_78(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_9_NUMBER_79(val) vBIT(val, 59, 5) -/* 0x025f0 */ u64 ugrp_cqrq_wrr_priority_10; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_10_NUMBER_80(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_10_NUMBER_81(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_10_NUMBER_82(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_10_NUMBER_83(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_10_NUMBER_84(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_10_NUMBER_85(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_10_NUMBER_86(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_10_NUMBER_87(val) vBIT(val, 59, 5) -/* 0x025f8 */ u64 ugrp_cqrq_wrr_priority_11; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_11_NUMBER_88(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_11_NUMBER_89(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_11_NUMBER_90(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_11_NUMBER_91(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_11_NUMBER_92(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_11_NUMBER_93(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_11_NUMBER_94(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_11_NUMBER_95(val) vBIT(val, 59, 5) -/* 0x02600 */ u64 ugrp_cqrq_wrr_priority_12; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_12_NUMBER_96(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_12_NUMBER_97(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_12_NUMBER_98(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_12_NUMBER_99(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_12_NUMBER_100(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_12_NUMBER_101(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_12_NUMBER_102(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_12_NUMBER_103(val) vBIT(val, 59, 5) -/* 0x02608 */ u64 ugrp_cqrq_wrr_priority_13; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_13_NUMBER_104(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_13_NUMBER_105(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_13_NUMBER_106(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_13_NUMBER_107(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_13_NUMBER_108(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_13_NUMBER_109(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_13_NUMBER_110(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_13_NUMBER_111(val) vBIT(val, 59, 5) -/* 0x02610 */ u64 ugrp_cqrq_wrr_priority_14; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_14_NUMBER_112(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_14_NUMBER_113(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_14_NUMBER_114(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_14_NUMBER_115(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_14_NUMBER_116(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_14_NUMBER_117(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_14_NUMBER_118(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_14_NUMBER_119(val) vBIT(val, 59, 5) -/* 0x02618 */ u64 ugrp_cqrq_wrr_priority_15; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_15_NUMBER_120(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_15_NUMBER_121(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_15_NUMBER_122(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_15_NUMBER_123(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_15_NUMBER_124(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_15_NUMBER_125(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_15_NUMBER_126(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_15_NUMBER_127(val) vBIT(val, 59, 5) -/* 0x02620 */ u64 ugrp_cqrq_wrr_priority_16; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_16_NUMBER_128(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_16_NUMBER_129(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_16_NUMBER_130(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_16_NUMBER_131(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_16_NUMBER_132(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_16_NUMBER_133(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_16_NUMBER_134(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_16_NUMBER_135(val) vBIT(val, 59, 5) -/* 0x02628 */ u64 ugrp_cqrq_wrr_priority_17; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_17_NUMBER_136(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_17_NUMBER_137(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_17_NUMBER_138(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_17_NUMBER_139(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_17_NUMBER_140(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_17_NUMBER_141(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_17_NUMBER_142(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_17_NUMBER_143(val) vBIT(val, 59, 5) -/* 0x02630 */ u64 ugrp_cqrq_wrr_priority_18; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_18_NUMBER_144(val) vBIT(val, 3, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_18_NUMBER_145(val) vBIT(val, 11, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_18_NUMBER_146(val) vBIT(val, 19, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_18_NUMBER_147(val) vBIT(val, 27, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_18_NUMBER_148(val) vBIT(val, 35, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_18_NUMBER_149(val) vBIT(val, 43, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_18_NUMBER_150(val) vBIT(val, 51, 5) -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_18_NUMBER_151(val) vBIT(val, 59, 5) -/* 0x02638 */ u64 ugrp_cqrq_wrr_priority_19; -#define VXGE_HAL_UGRP_CQRQ_WRR_PRIORITY_19_NUMBER_152(val) vBIT(val, 3, 5) -/* 0x02640 */ u64 usdc_ecc_ctrl; -#define VXGE_HAL_USDC_ECC_CTRL_ECC_DISABLE mBIT(7) -/* 0x02648 */ u64 usdc_vpbp_ctrl; -#define VXGE_HAL_USDC_VPBP_CTRL_MSG_DIS mBIT(0) -#define VXGE_HAL_USDC_VPBP_CTRL_H2L_DIS mBIT(1) - u8 unused02700[0x02700 - 0x02650]; - -/* 0x02700 */ u64 rtdma_int_status; -#define VXGE_HAL_RTDMA_INT_STATUS_PDA_ALARM_PDA_INT mBIT(1) -#define VXGE_HAL_RTDMA_INT_STATUS_PCC_ERROR_PCC_INT mBIT(2) -#define VXGE_HAL_RTDMA_INT_STATUS_LSO_ERROR_LSO_INT mBIT(4) -#define VXGE_HAL_RTDMA_INT_STATUS_SM_ERROR_SM_INT mBIT(5) -/* 0x02708 */ u64 rtdma_int_mask; -/* 0x02710 */ u64 pda_alarm_reg; -#define VXGE_HAL_PDA_ALARM_REG_PDA_HSC_FIFO_ERR mBIT(0) -#define VXGE_HAL_PDA_ALARM_REG_PDA_SM_ERR mBIT(1) -/* 0x02718 */ u64 pda_alarm_mask; -/* 0x02720 */ u64 pda_alarm_alarm; -/* 0x02728 */ u64 pcc_error_reg; -#define VXGE_HAL_PCC_ERROR_REG_PCC_PCC_FRM_BUF_SBE(n) mBIT(n) -#define VXGE_HAL_PCC_ERROR_REG_PCC_PCC_TXDO_SBE(n) mBIT(n) -#define VXGE_HAL_PCC_ERROR_REG_PCC_PCC_FRM_BUF_DBE(n) mBIT(n) -#define VXGE_HAL_PCC_ERROR_REG_PCC_PCC_TXDO_DBE(n) mBIT(n) -#define VXGE_HAL_PCC_ERROR_REG_PCC_PCC_FSM_ERR_ALARM(n) mBIT(n) -#define VXGE_HAL_PCC_ERROR_REG_PCC_PCC_SERR(n) mBIT(n) -/* 0x02730 */ u64 pcc_error_mask; -/* 0x02738 */ u64 pcc_error_alarm; -/* 0x02740 */ u64 lso_error_reg; -#define VXGE_HAL_LSO_ERROR_REG_PCC_LSO_ABORT(n) mBIT(n) -#define VXGE_HAL_LSO_ERROR_REG_PCC_LSO_FSM_ERR_ALARM(n) mBIT(n) -/* 0x02748 */ u64 lso_error_mask; -/* 0x02750 */ u64 lso_error_alarm; -/* 0x02758 */ u64 sm_error_reg; -#define VXGE_HAL_SM_ERROR_REG_SM_FSM_ERR_ALARM mBIT(15) -/* 0x02760 */ u64 sm_error_mask; -/* 0x02768 */ u64 sm_error_alarm; -/* 0x02770 */ u64 pda_control; -#define VXGE_HAL_PDA_CONTROL_PCC_INTERLOCK_EN mBIT(7) -#define VXGE_HAL_PDA_CONTROL_SPLIT_IDLE mBIT(15) -#define VXGE_HAL_PDA_CONTROL_PCC_MAX_DISABLE mBIT(23) -#define VXGE_HAL_PDA_CONTROL_H2L_DO_GATE_EN mBIT(31) -#define VXGE_HAL_PDA_CONTROL_TXD_INT_NUM_CTLR mBIT(39) -#define VXGE_HAL_PDA_CONTROL_ISSUE_8B_READ mBIT(47) -/* 0x02778 */ u64 pda_pda_control_0; -#define VXGE_HAL_PDA_PDA_CONTROL_0_PCC_MAX(val) vBIT(val, 4, 4) -#define VXGE_HAL_PDA_PDA_CONTROL_0_FE_MAX(val) vBIT(val, 13, 3) -/* 0x02780 */ u64 pda_pda_service_state_0; -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_0_NUMBER_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_0_NUMBER_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_0_NUMBER_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_0_NUMBER_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_0_NUMBER_4(val) vBIT(val, 37, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_0_NUMBER_5(val) vBIT(val, 45, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_0_NUMBER_6(val) vBIT(val, 53, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_0_NUMBER_7(val) vBIT(val, 61, 3) -/* 0x02788 */ u64 pda_pda_service_state_1; -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_1_NUMBER_8(val) vBIT(val, 5, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_1_NUMBER_9(val) vBIT(val, 13, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_1_NUMBER_10(val) vBIT(val, 21, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_1_NUMBER_11(val) vBIT(val, 29, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_1_NUMBER_12(val) vBIT(val, 37, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_1_NUMBER_13(val) vBIT(val, 45, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_1_NUMBER_14(val) vBIT(val, 53, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_1_NUMBER_15(val) vBIT(val, 61, 3) -/* 0x02790 */ u64 pda_pda_service_state_2; -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_2_NUMBER_16(val) vBIT(val, 5, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_2_NUMBER_17(val) vBIT(val, 13, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_2_NUMBER_18(val) vBIT(val, 21, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_2_NUMBER_19(val) vBIT(val, 29, 3) -#define VXGE_HAL_PDA_PDA_SERVICE_STATE_2_NUMBER_20(val) vBIT(val, 37, 3) -/* 0x02798 */ u64 pda_pda_task_priority_number; -#define VXGE_HAL_PDA_PDA_TASK_PRIORITY_NUMBER_CXP(val) vBIT(val, 5, 3) -#define VXGE_HAL_PDA_PDA_TASK_PRIORITY_NUMBER_H2L(val) vBIT(val, 13, 3) -#define VXGE_HAL_PDA_PDA_TASK_PRIORITY_NUMBER_KDFC(val) vBIT(val, 21, 3) -#define VXGE_HAL_PDA_PDA_TASK_PRIORITY_NUMBER_MP(val) vBIT(val, 29, 3) -#define VXGE_HAL_PDA_PDA_TASK_PRIORITY_NUMBER_PE(val) vBIT(val, 37, 3) -#define VXGE_HAL_PDA_PDA_TASK_PRIORITY_NUMBER_QCC(val) vBIT(val, 45, 3) -/* 0x027a0 */ u64 pda_vp; -#define VXGE_HAL_PDA_VP_RD_XON_ENABLE mBIT(0) -#define VXGE_HAL_PDA_VP_WR_XON_ENABLE mBIT(1) -#define VXGE_HAL_PDA_VP_NO_ACTIVITY_DISABLE mBIT(2) -/* 0x027a8 */ u64 txd_ownership_ctrl; -#define VXGE_HAL_TXD_OWNERSHIP_CTRL_KEEP_OWNERSHIP mBIT(7) -/* 0x027b0 */ u64 pcc_cfg; -#define VXGE_HAL_PCC_CFG_PCC_ENABLE(n) mBIT(n) -#define VXGE_HAL_PCC_CFG_PCC_ECC_ENABLE_N(n) mBIT(n) -/* 0x027b8 */ u64 pcc_control; -#define VXGE_HAL_PCC_CONTROL_FE_ENABLE(val) vBIT(val, 6, 2) -#define VXGE_HAL_PCC_CONTROL_EARLY_ASSIGN_EN mBIT(15) -#define VXGE_HAL_PCC_CONTROL_UNBLOCK_DB_ERR mBIT(31) -/* 0x027c0 */ u64 pda_status1; -#define VXGE_HAL_PDA_STATUS1_PDA_WRAP_0_CTR(val) vBIT(val, 4, 4) -#define VXGE_HAL_PDA_STATUS1_PDA_WRAP_1_CTR(val) vBIT(val, 12, 4) -#define VXGE_HAL_PDA_STATUS1_PDA_WRAP_2_CTR(val) vBIT(val, 20, 4) -#define VXGE_HAL_PDA_STATUS1_PDA_WRAP_3_CTR(val) vBIT(val, 28, 4) -#define VXGE_HAL_PDA_STATUS1_PDA_WRAP_4_CTR(val) vBIT(val, 36, 4) -#define VXGE_HAL_PDA_STATUS1_PDA_WRAP_5_CTR(val) vBIT(val, 44, 4) -#define VXGE_HAL_PDA_STATUS1_PDA_WRAP_6_CTR(val) vBIT(val, 52, 4) -#define VXGE_HAL_PDA_STATUS1_PDA_WRAP_7_CTR(val) vBIT(val, 60, 4) -/* 0x027c8 */ u64 rtdma_bw_timer; -#define VXGE_HAL_RTDMA_BW_TIMER_TIMER_CTRL(val) vBIT(val, 12, 4) - u8 unused02900[0x02900 - 0x027d0]; - -/* 0x02900 */ u64 g3cmct_int_status; -#define VXGE_HAL_G3CMCT_INT_STATUS_ERR_G3IF_INT mBIT(0) -/* 0x02908 */ u64 g3cmct_int_mask; -/* 0x02910 */ u64 g3cmct_err_reg; -#define VXGE_HAL_G3CMCT_ERR_REG_G3IF_SM_ERR mBIT(4) -#define VXGE_HAL_G3CMCT_ERR_REG_G3IF_GDDR3_DECC mBIT(5) -#define VXGE_HAL_G3CMCT_ERR_REG_G3IF_GDDR3_U_DECC mBIT(6) -#define VXGE_HAL_G3CMCT_ERR_REG_G3IF_CTRL_FIFO_DECC mBIT(7) -#define VXGE_HAL_G3CMCT_ERR_REG_G3IF_GDDR3_SECC mBIT(29) -#define VXGE_HAL_G3CMCT_ERR_REG_G3IF_GDDR3_U_SECC mBIT(30) -#define VXGE_HAL_G3CMCT_ERR_REG_G3IF_CTRL_FIFO_SECC mBIT(31) -/* 0x02918 */ u64 g3cmct_err_mask; -/* 0x02920 */ u64 g3cmct_err_alarm; -/* 0x02928 */ u64 g3cmct_config0; -#define VXGE_HAL_G3CMCT_CONFIG0_RD_CMD_LATENCY_RPATH(val) vBIT(val, 5, 3) -#define VXGE_HAL_G3CMCT_CONFIG0_RD_CMD_LATENCY(val) vBIT(val, 13, 3) -#define VXGE_HAL_G3CMCT_CONFIG0_REFRESH_PER(val) vBIT(val, 16, 16) -#define VXGE_HAL_G3CMCT_CONFIG0_TRC(val) vBIT(val, 35, 5) -#define VXGE_HAL_G3CMCT_CONFIG0_TRRD(val) vBIT(val, 44, 4) -#define VXGE_HAL_G3CMCT_CONFIG0_TFAW(val) vBIT(val, 50, 6) -#define VXGE_HAL_G3CMCT_CONFIG0_RD_FIFO_THR(val) vBIT(val, 58, 6) -/* 0x02930 */ u64 g3cmct_config1; -#define VXGE_HAL_G3CMCT_CONFIG1_BIC_THR(val) vBIT(val, 3, 5) -#define VXGE_HAL_G3CMCT_CONFIG1_BIC_OFF mBIT(15) -#define VXGE_HAL_G3CMCT_CONFIG1_IGNORE_BEM mBIT(23) -#define VXGE_HAL_G3CMCT_CONFIG1_RD_SAMPLING(val) vBIT(val, 29, 3) -#define VXGE_HAL_G3CMCT_CONFIG1_CMD_START_PHASE mBIT(39) -#define VXGE_HAL_G3CMCT_CONFIG1_BIC_HI_THR(val) vBIT(val, 43, 5) -#define VXGE_HAL_G3CMCT_CONFIG1_BIC_MODE(val) vBIT(val, 54, 2) -#define VXGE_HAL_G3CMCT_CONFIG1_ECC_ENABLE(val) vBIT(val, 57, 7) -/* 0x02938 */ u64 g3cmct_config2; -#define VXGE_HAL_G3CMCT_CONFIG2_DEV_USE_ENABLE(val) vBIT(val, 6, 2) -#define VXGE_HAL_G3CMCT_CONFIG2_DEV_USE_VALUE(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3CMCT_CONFIG2_ARBITER_CTRL(val) vBIT(val, 22, 2) -#define VXGE_HAL_G3CMCT_CONFIG2_DEFINE_CAD mBIT(31) -#define VXGE_HAL_G3CMCT_CONFIG2_DEFINE_NOP_AD mBIT(39) -#define VXGE_HAL_G3CMCT_CONFIG2_LAST_CADD(val) vBIT(val, 43, 13) -/* 0x02940 */ u64 g3cmct_init0; -#define VXGE_HAL_G3CMCT_INIT0_MRS_BAD(val) vBIT(val, 5, 3) -#define VXGE_HAL_G3CMCT_INIT0_MRS_WL(val) vBIT(val, 13, 3) -#define VXGE_HAL_G3CMCT_INIT0_MRS_DLL mBIT(23) -#define VXGE_HAL_G3CMCT_INIT0_MRS_TM mBIT(39) -#define VXGE_HAL_G3CMCT_INIT0_MRS_CL(val) vBIT(val, 44, 4) -#define VXGE_HAL_G3CMCT_INIT0_MRS_BT mBIT(55) -#define VXGE_HAL_G3CMCT_INIT0_MRS_BL(val) vBIT(val, 62, 2) -/* 0x02948 */ u64 g3cmct_init1; -#define VXGE_HAL_G3CMCT_INIT1_EMRS_BAD(val) vBIT(val, 5, 3) -#define VXGE_HAL_G3CMCT_INIT1_EMRS_AD_TER mBIT(15) -#define VXGE_HAL_G3CMCT_INIT1_EMRS_ID mBIT(23) -#define VXGE_HAL_G3CMCT_INIT1_EMRS_RON mBIT(39) -#define VXGE_HAL_G3CMCT_INIT1_EMRS_AL mBIT(47) -#define VXGE_HAL_G3CMCT_INIT1_EMRS_TWR(val) vBIT(val, 53, 3) -#define VXGE_HAL_G3CMCT_INIT1_EMRS_DQ_TER(val) vBIT(val, 62, 2) -/* 0x02950 */ u64 g3cmct_init2; -#define VXGE_HAL_G3CMCT_INIT2_EMRS_DR_STR(val) vBIT(val, 6, 2) -#define VXGE_HAL_G3CMCT_INIT2_START_INI mBIT(15) -#define VXGE_HAL_G3CMCT_INIT2_POWER_UP_DELAY(val) vBIT(val, 16, 24) -#define VXGE_HAL_G3CMCT_INIT2_ACTIVE_CMD_DELAY(val) vBIT(val, 40, 24) -/* 0x02958 */ u64 g3cmct_init3; -#define VXGE_HAL_G3CMCT_INIT3_TRP_DELAY(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3CMCT_INIT3_TMRD_DELAY(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3CMCT_INIT3_TWR2PRE_DELAY(val) vBIT(val, 16, 8) -#define VXGE_HAL_G3CMCT_INIT3_TRD2PRE_DELAY(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3CMCT_INIT3_TRCDR_DELAY(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3CMCT_INIT3_TRCDW_DELAY(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3CMCT_INIT3_TWR2RD_DELAY(val) vBIT(val, 48, 8) -#define VXGE_HAL_G3CMCT_INIT3_TRD2WR_DELAY(val) vBIT(val, 56, 8) -/* 0x02960 */ u64 g3cmct_init4; -#define VXGE_HAL_G3CMCT_INIT4_TRFC_DELAY(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3CMCT_INIT4_REFRESH_BURSTS(val) vBIT(val, 12, 4) -#define VXGE_HAL_G3CMCT_INIT4_CKE_INIT_VAL mBIT(31) -#define VXGE_HAL_G3CMCT_INIT4_VENDOR_ID(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3CMCT_INIT4_OOO_DEPTH(val) vBIT(val, 42, 6) -#define VXGE_HAL_G3CMCT_INIT4_ICTRL_INIT_DONE mBIT(55) -#define VXGE_HAL_G3CMCT_INIT4_IOCAL_WAIT_DISABLE mBIT(63) -/* 0x02968 */ u64 g3cmct_init5; -#define VXGE_HAL_G3CMCT_INIT5_TRAS_DELAY(val) vBIT(val, 3, 5) -#define VXGE_HAL_G3CMCT_INIT5_TVID_DELAY(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3CMCT_INIT5_TWR_APRE2CMD(val) vBIT(val, 16, 8) -#define VXGE_HAL_G3CMCT_INIT5_TRD_APRE2CMD(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3CMCT_INIT5_TWR_APRE2CMD_CON(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3CMCT_INIT5_GDDR3_DLL_DELAY(val) vBIT(val, 40, 24) -/* 0x02970 */ u64 g3cmct_dll_training1; -#define VXGE_HAL_G3CMCT_DLL_TRAINING1_DLL_TRA_DATA00(val) vBIT(val, 0, 64) -/* 0x02978 */ u64 g3cmct_dll_training2; -#define VXGE_HAL_G3CMCT_DLL_TRAINING2_DLL_TRA_DATA01(val) vBIT(val, 0, 64) -/* 0x02980 */ u64 g3cmct_dll_training3; -#define VXGE_HAL_G3CMCT_DLL_TRAINING3_DLL_TRA_DATA10(val) vBIT(val, 0, 64) -/* 0x02988 */ u64 g3cmct_dll_training4; -#define VXGE_HAL_G3CMCT_DLL_TRAINING4_DLL_TRA_DATA11(val) vBIT(val, 0, 64) -/* 0x02990 */ u64 g3cmct_dll_training6; -#define VXGE_HAL_G3CMCT_DLL_TRAINING6_DLL_TRA_DATA20(val) vBIT(val, 0, 64) -/* 0x02998 */ u64 g3cmct_dll_training7; -#define VXGE_HAL_G3CMCT_DLL_TRAINING7_DLL_TRA_DATA21(val) vBIT(val, 0, 64) -/* 0x029a0 */ u64 g3cmct_dll_training8; -#define VXGE_HAL_G3CMCT_DLL_TRAINING8_DLL_TRA_DATA30(val) vBIT(val, 0, 64) -/* 0x029a8 */ u64 g3cmct_dll_training9; -#define VXGE_HAL_G3CMCT_DLL_TRAINING9_DLL_TRA_DATA31(val) vBIT(val, 0, 64) -/* 0x029b0 */ u64 g3cmct_dll_training5; -#define VXGE_HAL_G3CMCT_DLL_TRAINING5_DLL_TRA_RADD(val) vBIT(val, 2, 14) -#define VXGE_HAL_G3CMCT_DLL_TRAINING5_DLL_TRA_CADD0(val) vBIT(val, 21, 11) -#define VXGE_HAL_G3CMCT_DLL_TRAINING5_DLL_TRA_CADD1(val) vBIT(val, 37, 11) -/* 0x029b8 */ u64 g3cmct_dll_training10; -#define VXGE_HAL_G3CMCT_DLL_TRAINING10_DLL_TP_READS(val) vBIT(val, 4, 4) -#define VXGE_HAL_G3CMCT_DLL_TRAINING10_DLL_SAMPLES(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3CMCT_DLL_TRAINING10_TRA_LOOPS(val) vBIT(val, 18, 14) -#define VXGE_HAL_G3CMCT_DLL_TRAINING10_TRA_PASS_CNT(val) vBIT(val, 33, 7) -#define VXGE_HAL_G3CMCT_DLL_TRAINING10_TRA_STEP(val) vBIT(val, 41, 7) -/* 0x029c0 */ u64 g3cmct_dll_training11; -#define VXGE_HAL_G3CMCT_DLL_TRAINING11_ICTRL_DLL_TRA_CNT(val) vBIT(val, 0, 48) -#define VXGE_HAL_G3CMCT_DLL_TRAINING11_ICTRL_DLL_TRA_DIS(val) vBIT(val, 54, 2) -/* 0x029c8 */ u64 g3cmct_init6; -#define VXGE_HAL_G3CMCT_INIT6_TWR_APRE2RD_DELAY(val) vBIT(val, 4, 4) -#define VXGE_HAL_G3CMCT_INIT6_TWR_APRE2WR_DELAY(val) vBIT(val, 12, 4) -#define VXGE_HAL_G3CMCT_INIT6_TWR_APRE2PRE_DELAY(val) vBIT(val, 20, 4) -#define VXGE_HAL_G3CMCT_INIT6_TWR_APRE2ACT_DELAY(val) vBIT(val, 28, 4) -#define VXGE_HAL_G3CMCT_INIT6_TRD_APRE2RD_DELAY(val) vBIT(val, 36, 4) -#define VXGE_HAL_G3CMCT_INIT6_TRD_APRE2WR_DELAY(val) vBIT(val, 44, 4) -#define VXGE_HAL_G3CMCT_INIT6_TRD_APRE2PRE_DELAY(val) vBIT(val, 52, 4) -#define VXGE_HAL_G3CMCT_INIT6_TRD_APRE2ACT_DELAY(val) vBIT(val, 60, 4) -/* 0x029d0 */ u64 g3cmct_test0; -#define VXGE_HAL_G3CMCT_TEST0_TEST_START_RADD(val) vBIT(val, 2, 14) -#define VXGE_HAL_G3CMCT_TEST0_TEST_END_RADD(val) vBIT(val, 18, 14) -#define VXGE_HAL_G3CMCT_TEST0_TEST_START_CADD(val) vBIT(val, 37, 11) -#define VXGE_HAL_G3CMCT_TEST0_TEST_END_CADD(val) vBIT(val, 53, 11) -/* 0x029d8 */ u64 g3cmct_test01; -#define VXGE_HAL_G3CMCT_TEST01_TEST_BANK(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3CMCT_TEST01_TEST_CTRL(val) vBIT(val, 12, 4) -#define VXGE_HAL_G3CMCT_TEST01_TEST_MODE mBIT(23) -#define VXGE_HAL_G3CMCT_TEST01_TEST_GO mBIT(31) -#define VXGE_HAL_G3CMCT_TEST01_TEST_DONE mBIT(39) -#define VXGE_HAL_G3CMCT_TEST01_ECC_DEC_TEST_FAIL_CNTR(val) vBIT(val, 40, 16) -#define VXGE_HAL_G3CMCT_TEST01_TEST_DATA_ADDR mBIT(63) -/* 0x029e0 */ u64 g3cmct_test1; -#define VXGE_HAL_G3CMCT_TEST1_TX_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x029e8 */ u64 g3cmct_test2; -#define VXGE_HAL_G3CMCT_TEST2_TX_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x029f0 */ u64 g3cmct_test11; -#define VXGE_HAL_G3CMCT_TEST11_TX_TEST_DATA1(val) vBIT(val, 0, 64) -/* 0x029f8 */ u64 g3cmct_test21; -#define VXGE_HAL_G3CMCT_TEST21_TX_TEST_DATA1(val) vBIT(val, 0, 64) -/* 0x02a00 */ u64 g3cmct_test3; -#define VXGE_HAL_G3CMCT_TEST3_ECC_DEC_RX_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x02a08 */ u64 g3cmct_test4; -#define VXGE_HAL_G3CMCT_TEST4_ECC_DEC_RX_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x02a10 */ u64 g3cmct_test31; -#define VXGE_HAL_G3CMCT_TEST31_ECC_DEC_RX_TEST_DATA1(val) vBIT(val, 0, 64) -/* 0x02a18 */ u64 g3cmct_test41; -#define VXGE_HAL_G3CMCT_TEST41_ECC_DEC_RX_TEST_DATA1(val) vBIT(val, 0, 64) -/* 0x02a20 */ u64 g3cmct_test5; -#define VXGE_HAL_G3CMCT_TEST5_ECC_DEC_RX_FAILED_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x02a28 */ u64 g3cmct_test6; -#define VXGE_HAL_G3CMCT_TEST6_ECC_DEC_RX_FAILED_TEST_DATA(val) vBIT(val, 0, 64) -/* 0x02a30 */ u64 g3cmct_test51; -#define VXGE_HAL_G3CMCT_TEST51_ECC_DEC_RX_FAILED_TEST_DATA1(val)\ - vBIT(val, 0, 64) -/* 0x02a38 */ u64 g3cmct_test61; -#define VXGE_HAL_G3CMCT_TEST61_ECC_DEC_RX_FAILED_TEST_DATA1(val)\ - vBIT(val, 0, 64) -/* 0x02a40 */ u64 g3cmct_test7; -#define VXGE_HAL_G3CMCT_TEST7_ECC_DEC_TEST_FAILED_RADD(val) vBIT(val, 0, 14) -#define VXGE_HAL_G3CMCT_TEST7_ECC_DEC_TEST_FAILED_CADD(val) vBIT(val, 19, 11) -#define VXGE_HAL_G3CMCT_TEST7_ECC_DEC_TEST_FAILED_BANK(val) vBIT(val, 32, 8) -/* 0x02a48 */ u64 g3cmct_test71; -#define VXGE_HAL_G3CMCT_TEST71_ECC_DEC_TEST_FAILED_RADD1(val) vBIT(val, 0, 14) -#define VXGE_HAL_G3CMCT_TEST71_ECC_DEC_TEST_FAILED_CADD1(val) vBIT(val, 19, 11) -#define VXGE_HAL_G3CMCT_TEST71_ECC_DEC_TEST_FAILED_BANK1(val) vBIT(val, 32, 8) -/* 0x02a50 */ u64 g3cmct_init41; -#define VXGE_HAL_G3CMCT_INIT41_VENDOR_ID_U(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3CMCT_INIT41_ENABLE_CMU mBIT(15) -/* 0x02a58 */ u64 g3cmct_test8; -#define VXGE_HAL_G3CMCT_TEST8_ECC_DEC_U_RX_TEST_DATA_U(val) vBIT(val, 0, 64) -/* 0x02a60 */ u64 g3cmct_test9; -#define VXGE_HAL_G3CMCT_TEST9_ECC_DEC_U_RX_TEST_DATA_U(val) vBIT(val, 0, 64) -/* 0x02a68 */ u64 g3cmct_test10; -#define VXGE_HAL_G3CMCT_TEST10_ECC_DEC_U_RX_TEST_DATA1_U(val) vBIT(val, 0, 64) -/* 0x02a70 */ u64 g3cmct_test101; -#define VXGE_HAL_G3CMCT_TEST101_ECC_DEC_U_RX_TEST_DATA1_U(val) vBIT(val, 0, 64) -/* 0x02a78 */ u64 g3cmct_test12; -#define VXGE_HAL_G3CMCT_TEST12_ECC_DEC_U_RX_FAILED_TEST_DATA_U(val)\ - vBIT(val, 0, 64) -/* 0x02a80 */ u64 g3cmct_test13; -#define VXGE_HAL_G3CMCT_TEST13_ECC_DEC_U_RX_FAILED_TEST_DATA_U(val)\ - vBIT(val, 0, 64) -/* 0x02a88 */ u64 g3cmct_test14; -#define VXGE_HAL_G3CMCT_TEST14_ECC_DEC_U_RX_FAILED_TEST_DATA1_U(val)\ - vBIT(val, 0, 64) -/* 0x02a90 */ u64 g3cmct_test15; -#define VXGE_HAL_G3CMCT_TEST15_ECC_DEC_U_RX_FAILED_TEST_DATA1_U(val)\ - vBIT(val, 0, 64) -/* 0x02a98 */ u64 g3cmct_test16; -#define VXGE_HAL_G3CMCT_TEST16_ECC_DEC_U_TEST_FAILED_RADD_U(val)\ - vBIT(val, 0, 14) -#define VXGE_HAL_G3CMCT_TEST16_ECC_DEC_U_TEST_FAILED_CADD_U(val)\ - vBIT(val, 19, 11) -#define VXGE_HAL_G3CMCT_TEST16_ECC_DEC_U_TEST_FAILED_BANK_U(val)\ - vBIT(val, 32, 8) -/* 0x02aa0 */ u64 g3cmct_test17; -#define VXGE_HAL_G3CMCT_TEST17_ECC_DEC_U_TEST_FAILED_RADD1_U(val)\ - vBIT(val, 0, 14) -#define VXGE_HAL_G3CMCT_TEST17_ECC_DEC_U_TEST_FAILED_CADD1_U(val)\ - vBIT(val, 19, 11) -#define VXGE_HAL_G3CMCT_TEST17_ECC_DEC_U_TEST_FAILED_BANK1_U(val)\ - vBIT(val, 32, 8) -/* 0x02aa8 */ u64 g3cmct_test18; -#define VXGE_HAL_G3CMCT_TEST18_ECC_DEC_U_TEST_FAIL_CNTR_U(val)\ - vBIT(val, 0, 16) -/* 0x02ab0 */ u64 g3cmct_loop_back; -#define VXGE_HAL_G3CMCT_LOOP_BACK_TDATA(val) vBIT(val, 0, 32) -#define VXGE_HAL_G3CMCT_LOOP_BACK_MODE mBIT(39) -#define VXGE_HAL_G3CMCT_LOOP_BACK_GO mBIT(47) -#define VXGE_HAL_G3CMCT_LOOP_BACK_DONE mBIT(55) -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_IDLE_VAL(val) vBIT(val, 56, 8) -/* 0x02ab8 */ u64 g3cmct_loop_back1; -#define VXGE_HAL_G3CMCT_LOOP_BACK1_RDLL_START_VAL(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK1_RDLL_END_VAL(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK1_WDLL_IDLE_VAL(val) vBIT(val, 16, 8) -#define VXGE_HAL_G3CMCT_LOOP_BACK1_WDLL_START_VAL(val) vBIT(val, 25, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK1_WDLL_END_VAL(val) vBIT(val, 33, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK1_STEPS(val) vBIT(val, 45, 3) -#define VXGE_HAL_G3CMCT_LOOP_BACK1_RDLL_MIN_FILTER(val) vBIT(val, 49, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK1_RDLL_MAX_FILTER(val) vBIT(val, 57, 7) -/* 0x02ac0 */ u64 g3cmct_loop_back2; -#define VXGE_HAL_G3CMCT_LOOP_BACK2_WDLL_MIN_FILTER(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK2_WDLL_MAX_FILTER(val) vBIT(val, 9, 7) -/* 0x02ac8 */ u64 g3cmct_loop_back3; -#define VXGE_HAL_G3CMCT_LOOP_BACK3_LBCTRL_CMU_RDLL_RESULT(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3CMCT_LOOP_BACK3_LBCTRL_CMU_WDLL_RESULT(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3CMCT_LOOP_BACK3_LBCTRL_CML_RDLL_RESULT(val) vBIT(val, 16, 8) -#define VXGE_HAL_G3CMCT_LOOP_BACK3_LBCTRL_CML_WDLL_RESULT(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3CMCT_LOOP_BACK3_LBCTRL_CMU_RDLL_MON_RESULT(val)\ - vBIT(val, 32, 8) -#define VXGE_HAL_G3CMCT_LOOP_BACK3_LBCTRL_CML_RDLL_MON_RESULT(val)\ - vBIT(val, 40, 8) -/* 0x02ad0 */ u64 g3cmct_loop_back4; -#define VXGE_HAL_G3CMCT_LOOP_BACK4_LBCTRL_IO_U_PASS_FAILN(val) vBIT(val, 0, 32) -#define VXGE_HAL_G3CMCT_LOOP_BACK4_LBCTRL_IO_L_PASS_FAILN(val) vBIT(val, 32, 32) -/* 0x02ad8 */ u64 g3cmct_loop_back5; -#define VXGE_HAL_G3CMCT_LOOP_BACK5_RDLL_START_IO_VAL(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK5_RDLL_END_IO_VAL(val) vBIT(val, 9, 7) - u8 unused02b00[0x02b00 - 0x02ae0]; - -/* 0x02b00 */ u64 g3cmct_loop_back_rdll[4]; -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_LBCTRL_U_MIN_VAL(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_LBCTRL_U_MAX_VAL(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_LBCTRL_L_MIN_VAL(val) vBIT(val, 17, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_LBCTRL_L_MAX_VAL(val) vBIT(val, 25, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_LBCTRL_MON_U_MIN_VAL(val)\ - vBIT(val, 33, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_LBCTRL_MON_U_MAX_VAL(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_LBCTRL_MON_L_MIN_VAL(val)\ - vBIT(val, 49, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_RDLL_LBCTRL_MON_L_MAX_VAL(val)\ - vBIT(val, 57, 7) -/* 0x02b20 */ u64 g3cmct_loop_back_wdll[4]; -#define VXGE_HAL_G3CMCT_LOOP_BACK_WDLL_LBCTRL_U_MIN_VAL(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_WDLL_LBCTRL_U_MAX_VAL(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_WDLL_LBCTRL_L_MIN_VAL(val) vBIT(val, 17, 7) -#define VXGE_HAL_G3CMCT_LOOP_BACK_WDLL_LBCTRL_L_MAX_VAL(val) vBIT(val, 25, 7) -/* 0x02b40 */ u64 g3cmct_tran_wrd_cnt; -#define VXGE_HAL_G3CMCT_TRAN_WRD_CNT_CTRL_PIPE_WR(val) vBIT(val, 0, 32) -#define VXGE_HAL_G3CMCT_TRAN_WRD_CNT_CTRL_PIPE_RD(val) vBIT(val, 32, 32) -/* 0x02b48 */ u64 g3cmct_tran_ap_cnt; -#define VXGE_HAL_G3CMCT_TRAN_AP_CNT_CTRL_PIPE_ACT(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3CMCT_TRAN_AP_CNT_CTRL_PIPE_PRE(val) vBIT(val, 16, 16) -#define VXGE_HAL_G3CMCT_TRAN_AP_CNT_UPDATE mBIT(39) -/* 0x02b50 */ u64 g3cmct_g3bist; -#define VXGE_HAL_G3CMCT_G3BIST_DISABLE_MAIN mBIT(7) -#define VXGE_HAL_G3CMCT_G3BIST_DISABLE_ICTRL mBIT(15) -#define VXGE_HAL_G3CMCT_G3BIST_BTCTRL_STATUS_MAIN(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3CMCT_G3BIST_BTCTRL_STATUS_ICTRL(val) vBIT(val, 29, 3) - u8 unused03000[0x03000 - 0x02b58]; - -/* 0x03000 */ u64 mc_int_status; -#define VXGE_HAL_MC_INT_STATUS_MC_ERR_MC_INT mBIT(3) -#define VXGE_HAL_MC_INT_STATUS_GROCRC_ALARM_ROCRC_INT mBIT(7) -#define VXGE_HAL_MC_INT_STATUS_FAU_GEN_ERR_FAU_GEN_INT mBIT(11) -#define VXGE_HAL_MC_INT_STATUS_FAU_ECC_ERR_FAU_ECC_INT mBIT(15) -/* 0x03008 */ u64 mc_int_mask; -/* 0x03010 */ u64 mc_err_reg; -#define VXGE_HAL_MC_ERR_REG_MC_XFMD_MEM_ECC_SG_ERR_A mBIT(3) -#define VXGE_HAL_MC_ERR_REG_MC_XFMD_MEM_ECC_SG_ERR_B mBIT(4) -#define VXGE_HAL_MC_ERR_REG_MC_G3IF_RD_FIFO_ECC_SG_ERR mBIT(5) -#define VXGE_HAL_MC_ERR_REG_MC_MIRI_ECC_SG_ERR_0 mBIT(6) -#define VXGE_HAL_MC_ERR_REG_MC_MIRI_ECC_SG_ERR_1 mBIT(7) -#define VXGE_HAL_MC_ERR_REG_MC_XFMD_MEM_ECC_DB_ERR_A mBIT(10) -#define VXGE_HAL_MC_ERR_REG_MC_XFMD_MEM_ECC_DB_ERR_B mBIT(11) -#define VXGE_HAL_MC_ERR_REG_MC_G3IF_RD_FIFO_ECC_DB_ERR mBIT(12) -#define VXGE_HAL_MC_ERR_REG_MC_MIRI_ECC_DB_ERR_0 mBIT(13) -#define VXGE_HAL_MC_ERR_REG_MC_MIRI_ECC_DB_ERR_1 mBIT(14) -#define VXGE_HAL_MC_ERR_REG_MC_SM_ERR mBIT(15) -/* 0x03018 */ u64 mc_err_mask; -/* 0x03020 */ u64 mc_err_alarm; -/* 0x03028 */ u64 grocrc_alarm_reg; -#define VXGE_HAL_GROCRC_ALARM_REG_XFMD_WR_FIFO_ERR mBIT(3) -#define VXGE_HAL_GROCRC_ALARM_REG_WDE2MSR_RD_FIFO_ERR mBIT(7) -/* 0x03030 */ u64 grocrc_alarm_mask; -/* 0x03038 */ u64 grocrc_alarm_alarm; - u8 unused03100[0x03100 - 0x03040]; - -/* 0x03100 */ u64 rx_thresh_cfg_repl; -#define VXGE_HAL_RX_THRESH_CFG_REPL_PAUSE_LOW_THR(val) vBIT(val, 0, 8) -#define VXGE_HAL_RX_THRESH_CFG_REPL_PAUSE_HIGH_THR(val) vBIT(val, 8, 8) -#define VXGE_HAL_RX_THRESH_CFG_REPL_RED_THR_0(val) vBIT(val, 16, 8) -#define VXGE_HAL_RX_THRESH_CFG_REPL_RED_THR_1(val) vBIT(val, 24, 8) -#define VXGE_HAL_RX_THRESH_CFG_REPL_RED_THR_2(val) vBIT(val, 32, 8) -#define VXGE_HAL_RX_THRESH_CFG_REPL_RED_THR_3(val) vBIT(val, 40, 8) -#define VXGE_HAL_RX_THRESH_CFG_REPL_GLOBAL_WOL_EN mBIT(62) -#define VXGE_HAL_RX_THRESH_CFG_REPL_EXACT_VP_MATCH_REQ mBIT(63) -/* 0x03108 */ u64 dbg_reg1_0; -#define VXGE_HAL_DBG_REG1_0_INCTRL_QUEUE0_RX_NON_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG1_0_INCTRL_QUEUE0_RX_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG1_0_RP_QUEUE0_NON_OFFLOAD_XMFD_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG1_0_RP_QUEUE0_OFFLOAD_XFMD_CNT(val) vBIT(val, 48, 16) -/* 0x03110 */ u64 dbg_reg1_1; -#define VXGE_HAL_DBG_REG1_1_INCTRL_QUEUE1_RX_NON_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG1_1_INCTRL_QUEUE1_RX_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG1_1_RP_QUEUE1_NON_OFFLOAD_XMFD_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG1_1_RP_QUEUE1_OFFLOAD_XFMD_CNT(val) vBIT(val, 48, 16) -/* 0x03118 */ u64 dbg_reg1_2; -#define VXGE_HAL_DBG_REG1_2_INCTRL_QUEUE2_RX_NON_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG1_2_INCTRL_QUEUE2_RX_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG1_2_RP_QUEUE2_NON_OFFLOAD_XMFD_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG1_2_RP_QUEUE2_OFFLOAD_XFMD_CNT(val) vBIT(val, 48, 16) -/* 0x03120 */ u64 dbg_reg1_3; -#define VXGE_HAL_DBG_REG1_3_INCTRL_QUEUE3_RX_NON_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG1_3_INCTRL_QUEUE3_RX_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG1_3_RP_QUEUE3_NON_OFFLOAD_XMFD_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG1_3_RP_QUEUE3_OFFLOAD_XFMD_CNT(val) vBIT(val, 48, 16) -/* 0x03128 */ u64 dbg_reg1_4; -#define VXGE_HAL_DBG_REG1_4_INCTRL_QUEUE4_RX_NON_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG1_4_INCTRL_QUEUE4_RX_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG1_4_RP_QUEUE4_NON_OFFLOAD_XMFD_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG1_4_RP_QUEUE4_OFFLOAD_XFMD_CNT(val) vBIT(val, 48, 16) -/* 0x03130 */ u64 dbg_reg1_5; -#define VXGE_HAL_DBG_REG1_5_INCTRL_QUEUE5_RX_NON_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG1_5_INCTRL_QUEUE5_RX_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG1_5_RP_QUEUE5_NON_OFFLOAD_XMFD_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG1_5_RP_QUEUE5_OFFLOAD_XFMD_CNT(val) vBIT(val, 48, 16) -/* 0x03138 */ u64 dbg_reg1_6; -#define VXGE_HAL_DBG_REG1_6_INCTRL_QUEUE6_RX_NON_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG1_6_INCTRL_QUEUE6_RX_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG1_6_RP_QUEUE6_NON_OFFLOAD_XMFD_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG1_6_RP_QUEUE6_OFFLOAD_XFMD_CNT(val) vBIT(val, 48, 16) -/* 0x03140 */ u64 dbg_reg1_7; -#define VXGE_HAL_DBG_REG1_7_INCTRL_QUEUE7_RX_NON_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG1_7_INCTRL_QUEUE7_RX_OFFLOAD_FRM_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG1_7_RP_QUEUE7_NON_OFFLOAD_XMFD_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG1_7_RP_QUEUE7_OFFLOAD_XFMD_CNT(val) vBIT(val, 48, 16) -/* 0x03148 */ u64 dbg_reg2; -#define VXGE_HAL_DBG_REG2_XFMDCNT_XFMD_AVAILABLE(val) vBIT(val, 6, 18) -#define VXGE_HAL_DBG_REG2_RP_FBMC_PTM_DATA_PHASES(val) vBIT(val, 24, 32) -/* 0x03150 */ u64 dbg_reg3; -#define VXGE_HAL_DBG_REG3_XFMD_ADV_FBMC_RQA_QUEUE_STROBES(val) vBIT(val, 0, 16) -#define VXGE_HAL_DBG_REG3_XFMD_ADV_FBMC_RQA_MC_STROBES(val) vBIT(val, 16, 16) -#define VXGE_HAL_DBG_REG3_XFMD_ADV_RQA_FBMC_QUEUE_SELECT(val) vBIT(val, 32, 16) -#define VXGE_HAL_DBG_REG3_XFMD_ADV_RQA_FBMC_MC_SELECT(val) vBIT(val, 48, 16) -/* 0x03158 */ u64 dbg_reg4; -#define VXGE_HAL_DBG_REG4_RP_FBMC_ONE_HEADERS(val) vBIT(val, 0, 16) -/* 0x03160 */ u64 dbg_reg5; -#define VXGE_HAL_DBG_REG5_INCTRL_TOTAL_ING_FRMS(val) vBIT(val, 0, 32) -#define VXGE_HAL_DBG_REG5_RP_TOTAL_EGR_FRMS(val) vBIT(val, 32, 32) - u8 unused03200[0x03200 - 0x03168]; - -/* 0x03200 */ u64 rx_queue_cfg; -#define VXGE_HAL_RX_QUEUE_CFG_QUEUE_SIZE_ENABLE mBIT(39) -#define VXGE_HAL_RX_QUEUE_CFG_INGRESS_FIFO_THR(val) vBIT(val, 60, 4) -/* 0x03208 */ u64 rx_queue_size_q[15]; -#define VXGE_HAL_RX_QUEUE_SIZE_Q_SIZE(val) vBIT(val, 0, 24) -#define VXGE_HAL_RX_QUEUE_SIZE_Q_LAST_ADD(val) vBIT(val, 24, 24) -/* 0x03280 */ u64 rx_queue_size_q15; -#define VXGE_HAL_RX_QUEUE_SIZE_Q15_SIZE(val) vBIT(val, 0, 24) -#define VXGE_HAL_RX_QUEUE_SIZE_Q15_LAST_ADD(val) vBIT(val, 24, 24) -/* 0x03288 */ u64 rx_queue_size_q16; -#define VXGE_HAL_RX_QUEUE_SIZE_Q16_SIZE(val) vBIT(val, 0, 24) -#define VXGE_HAL_RX_QUEUE_SIZE_Q16_LAST_ADD(val) vBIT(val, 24, 24) -/* 0x03290 */ u64 rx_queue_size_q17; -#define VXGE_HAL_RX_QUEUE_SIZE_Q17_SIZE(val) vBIT(val, 0, 24) -#define VXGE_HAL_RX_QUEUE_SIZE_Q17_LAST_ADD(val) vBIT(val, 24, 24) - u8 unused032a0[0x032a0 - 0x03298]; - -/* 0x032a0 */ u64 rx_queue_start_q0; -#define VXGE_HAL_RX_QUEUE_START_Q0_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q0_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q0_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q0_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -#define VXGE_HAL_RX_QUEUE_START_Q0_FDP_NONOFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 55, 9) -/* 0x032a8 */ u64 rx_queue_start_q1; -#define VXGE_HAL_RX_QUEUE_START_Q1_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q1_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q1_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q1_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -#define VXGE_HAL_RX_QUEUE_START_Q1_FDP_NONOFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 55, 9) -/* 0x032b0 */ u64 rx_queue_start_q2; -#define VXGE_HAL_RX_QUEUE_START_Q2_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q2_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q2_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q2_FDP_OFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 39, 9) -#define VXGE_HAL_RX_QUEUE_START_Q2_FDP_NONOFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 55, 9) -/* 0x032b8 */ u64 rx_queue_start_q3; -#define VXGE_HAL_RX_QUEUE_START_Q3_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q3_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q3_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q3_FDP_OFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 39, 9) -#define VXGE_HAL_RX_QUEUE_START_Q3_FDP_NONOFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 55, 9) -/* 0x032c0 */ u64 rx_queue_start_q4; -#define VXGE_HAL_RX_QUEUE_START_Q4_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q4_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q4_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q4_FDP_OFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 39, 9) -#define VXGE_HAL_RX_QUEUE_START_Q4_FDP_NONOFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 55, 9) -/* 0x032c8 */ u64 rx_queue_start_q5; -#define VXGE_HAL_RX_QUEUE_START_Q5_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q5_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q5_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q5_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -#define VXGE_HAL_RX_QUEUE_START_Q5_FDP_NONOFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 55, 9) -/* 0x032d0 */ u64 rx_queue_start_q6; -#define VXGE_HAL_RX_QUEUE_START_Q6_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q6_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q6_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q6_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -#define VXGE_HAL_RX_QUEUE_START_Q6_FDP_NONOFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 55, 9) -/* 0x032d8 */ u64 rx_queue_start_q7; -#define VXGE_HAL_RX_QUEUE_START_Q7_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q7_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q7_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q7_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -#define VXGE_HAL_RX_QUEUE_START_Q7_FDP_NONOFFLOAD_OUTST_FRMS(val)\ - vBIT(val, 55, 9) -/* 0x032e0 */ u64 rx_queue_start_q8; -#define VXGE_HAL_RX_QUEUE_START_Q8_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q8_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q8_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q8_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x032e8 */ u64 rx_queue_start_q9; -#define VXGE_HAL_RX_QUEUE_START_Q9_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q9_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q9_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q9_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x032f0 */ u64 rx_queue_start_q10; -#define VXGE_HAL_RX_QUEUE_START_Q10_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q10_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q10_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q10_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x032f8 */ u64 rx_queue_start_q11; -#define VXGE_HAL_RX_QUEUE_START_Q11_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q11_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q11_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q11_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x03300 */ u64 rx_queue_start_q12; -#define VXGE_HAL_RX_QUEUE_START_Q12_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q12_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q12_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q12_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x03308 */ u64 rx_queue_start_q13; -#define VXGE_HAL_RX_QUEUE_START_Q13_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q13_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q13_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q13_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x03310 */ u64 rx_queue_start_q14; -#define VXGE_HAL_RX_QUEUE_START_Q14_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q14_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q14_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q14_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x03318 */ u64 rx_queue_start_q15; -#define VXGE_HAL_RX_QUEUE_START_Q15_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q15_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q15_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q15_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x03320 */ u64 rx_queue_start_q16; -#define VXGE_HAL_RX_QUEUE_START_Q16_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q16_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q16_SROW(val) vBIT(val, 18, 14) -#define VXGE_HAL_RX_QUEUE_START_Q16_FDP_OFFLOAD_OUTST_FRMS(val) vBIT(val, 39, 9) -/* 0x03328 */ u64 rx_queue_start_q17; -#define VXGE_HAL_RX_QUEUE_START_Q17_QUEUE_BANKS(val) vBIT(val, 6, 2) -#define VXGE_HAL_RX_QUEUE_START_Q17_SBANK(val) vBIT(val, 13, 3) -#define VXGE_HAL_RX_QUEUE_START_Q17_SROW(val) vBIT(val, 18, 14) -/* 0x03330 */ u64 fm_definition; -#define VXGE_HAL_FM_DEFINITION_FM_SIZE(val) vBIT(val, 6, 2) -#define VXGE_HAL_FM_DEFINITION_FM_COLUMNS(val) vBIT(val, 14, 2) -#define VXGE_HAL_FM_DEFINITION_QUEUE_SPAV_MARGIN(val) vBIT(val, 16, 8) - u8 unused03380[0x03380 - 0x03338]; - -/* 0x03380 */ u64 traffic_ctrl; -#define VXGE_HAL_TRAFFIC_CTRL_BLOCK_ING_PATH mBIT(7) -#define VXGE_HAL_TRAFFIC_CTRL_BLOCK_EGR_PATH mBIT(15) -#define VXGE_HAL_TRAFFIC_CTRL_OFFLOAD_MAX_FRAMES(val) vBIT(val, 24, 8) -#define VXGE_HAL_TRAFFIC_CTRL_NOFFLOAD_MAX_FRAMES(val) vBIT(val, 32, 8) -#define VXGE_HAL_TRAFFIC_CTRL_MSP_MAX_FRAMES(val) vBIT(val, 40, 8) -/* 0x03388 */ u64 xfmd_arb_ctrl; -#define VXGE_HAL_XFMD_ARB_CTRL_ISTAGE_MASK mBIT(7) -#define VXGE_HAL_XFMD_ARB_CTRL_EN_OFF(val) vBIT(val, 15, 17) -#define VXGE_HAL_XFMD_ARB_CTRL_EN_NOFF(val) vBIT(val, 39, 17) -/* 0x03390 */ u64 xfmd_arb_ctrl1; -#define VXGE_HAL_XFMD_ARB_CTRL1_PROMOTE_NOFF(val) vBIT(val, 6, 18) -/* 0x03398 */ u64 rd_tranc_ctrl; -#define VXGE_HAL_RD_TRANC_CTRL_ARB(val) vBIT(val, 4, 4) -/* 0x033a0 */ u64 fm_arb; -#define VXGE_HAL_FM_ARB_CTRL(val) vBIT(val, 0, 8) -#define VXGE_HAL_FM_ARB_TIMER(val) vBIT(val, 8, 8) -#define VXGE_HAL_FM_ARB_EN_QHIST(val) vBIT(val, 16, 8) -#define VXGE_HAL_FM_ARB_ACT_ARB_QHIST(val) vBIT(val, 28, 4) -#define VXGE_HAL_FM_ARB_QHIST_CNT(val) vBIT(val, 32, 16) -#define VXGE_HAL_FM_ARB_WR_DELAY_CNT(val) vBIT(val, 52, 4) -#define VXGE_HAL_FM_ARB_WR_WINDOW_CNT(val) vBIT(val, 56, 8) -/* 0x033a8 */ u64 arb; -#define VXGE_HAL_ARB_HP_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_ARB_XFMD_LAST_MASK(val) vBIT(val, 11, 5) -#define VXGE_HAL_ARB_HP_XFMD_PRI(val) vBIT(val, 22, 2) -/* 0x033b0 */ u64 settings0; -#define VXGE_HAL_SETTINGS0_CTRL_FIFO_THR(val) vBIT(val, 4, 4) -/* 0x033b8 */ u64 fbmc_ecc_cfg; -#define VXGE_HAL_FBMC_ECC_CFG_ENABLE(val) vBIT(val, 3, 5) - u8 unused03400[0x03400 - 0x033c0]; - -/* 0x03400 */ u64 pcipif_int_status; -#define VXGE_HAL_PCIPIF_INT_STATUS_DBECC_ERR_DBECC_ERR_INT mBIT(3) -#define VXGE_HAL_PCIPIF_INT_STATUS_SBECC_ERR_SBECC_ERR_INT mBIT(7) -#define VXGE_HAL_PCIPIF_INT_STATUS_GENERAL_ERR_GENERAL_ERR_INT mBIT(11) -#define VXGE_HAL_PCIPIF_INT_STATUS_SRPCIM_MSG_SRPCIM_MSG_INT mBIT(15) -#define VXGE_HAL_PCIPIF_INT_STATUS_MRPCIM_SPARE_R1_MRPCIM_SPARE_R1_INT mBIT(19) -/* 0x03408 */ u64 pcipif_int_mask; -/* 0x03410 */ u64 dbecc_err_reg; -#define VXGE_HAL_DBECC_ERR_REG_PCI_RETRY_BUF_DB_ERR mBIT(3) -#define VXGE_HAL_DBECC_ERR_REG_PCI_RETRY_SOT_DB_ERR mBIT(7) -#define VXGE_HAL_DBECC_ERR_REG_PCI_P_HDR_DB_ERR mBIT(11) -#define VXGE_HAL_DBECC_ERR_REG_PCI_P_DATA_DB_ERR mBIT(15) -#define VXGE_HAL_DBECC_ERR_REG_PCI_NP_HDR_DB_ERR mBIT(19) -#define VXGE_HAL_DBECC_ERR_REG_PCI_NP_DATA_DB_ERR mBIT(23) -/* 0x03418 */ u64 dbecc_err_mask; -/* 0x03420 */ u64 dbecc_err_alarm; -/* 0x03428 */ u64 sbecc_err_reg; -#define VXGE_HAL_SBECC_ERR_REG_PCI_RETRY_BUF_SG_ERR mBIT(3) -#define VXGE_HAL_SBECC_ERR_REG_PCI_RETRY_SOT_SG_ERR mBIT(7) -#define VXGE_HAL_SBECC_ERR_REG_PCI_P_HDR_SG_ERR mBIT(11) -#define VXGE_HAL_SBECC_ERR_REG_PCI_P_DATA_SG_ERR mBIT(15) -#define VXGE_HAL_SBECC_ERR_REG_PCI_NP_HDR_SG_ERR mBIT(19) -#define VXGE_HAL_SBECC_ERR_REG_PCI_NP_DATA_SG_ERR mBIT(23) -/* 0x03430 */ u64 sbecc_err_mask; -/* 0x03438 */ u64 sbecc_err_alarm; -/* 0x03440 */ u64 general_err_reg; -#define VXGE_HAL_GENERAL_ERR_REG_PCI_DROPPED_ILLEGAL_CFG mBIT(3) -#define VXGE_HAL_GENERAL_ERR_REG_PCI_ILLEGAL_MEM_MAP_PROG mBIT(7) -#define VXGE_HAL_GENERAL_ERR_REG_PCI_LINK_RST_FSM_ERR mBIT(11) -#define VXGE_HAL_GENERAL_ERR_REG_PCI_RX_ILLEGAL_TLP_VPLANE mBIT(15) -#define VXGE_HAL_GENERAL_ERR_REG_PCI_TRAINING_RESET_DET mBIT(19) -#define VXGE_HAL_GENERAL_ERR_REG_PCI_PCI_LINK_DOWN_DET mBIT(23) -#define VXGE_HAL_GENERAL_ERR_REG_PCI_RESET_ACK_DLLP mBIT(27) -/* 0x03448 */ u64 general_err_mask; -/* 0x03450 */ u64 general_err_alarm; -/* 0x03458 */ u64 srpcim_msg_reg; -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE0_RMSG_INT mBIT(0) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE1_RMSG_INT mBIT(1) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE2_RMSG_INT mBIT(2) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE3_RMSG_INT mBIT(3) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE4_RMSG_INT mBIT(4) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE5_RMSG_INT mBIT(5) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE6_RMSG_INT mBIT(6) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE7_RMSG_INT mBIT(7) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE8_RMSG_INT mBIT(8) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE9_RMSG_INT mBIT(9) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE10_RMSG_INT mBIT(10) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE11_RMSG_INT mBIT(11) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE12_RMSG_INT mBIT(12) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE13_RMSG_INT mBIT(13) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE14_RMSG_INT mBIT(14) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE15_RMSG_INT mBIT(15) -#define VXGE_HAL_SRPCIM_MSG_REG_SWIF_SRPCIM_TO_MRPCIM_VPLANE16_RMSG_INT mBIT(16) -/* 0x03460 */ u64 srpcim_msg_mask; -/* 0x03468 */ u64 srpcim_msg_alarm; - u8 unused03600[0x03600 - 0x03470]; - -/* 0x03600 */ u64 gcmg1_int_status; -#define VXGE_HAL_GCMG1_INT_STATUS_GSSCC_ERR_GSSCC_INT mBIT(0) -#define VXGE_HAL_GCMG1_INT_STATUS_GSSC0_ERR0_GSSC0_0_INT mBIT(1) -#define VXGE_HAL_GCMG1_INT_STATUS_GSSC0_ERR1_GSSC0_1_INT mBIT(2) -#define VXGE_HAL_GCMG1_INT_STATUS_GSSC1_ERR0_GSSC1_0_INT mBIT(3) -#define VXGE_HAL_GCMG1_INT_STATUS_GSSC1_ERR1_GSSC1_1_INT mBIT(4) -#define VXGE_HAL_GCMG1_INT_STATUS_GSSC2_ERR0_GSSC2_0_INT mBIT(5) -#define VXGE_HAL_GCMG1_INT_STATUS_GSSC2_ERR1_GSSC2_1_INT mBIT(6) -#define VXGE_HAL_GCMG1_INT_STATUS_UQM_ERR_UQM_INT mBIT(7) -#define VXGE_HAL_GCMG1_INT_STATUS_GQCC_ERR_GQCC_INT mBIT(8) -/* 0x03608 */ u64 gcmg1_int_mask; -/* 0x03610 */ u64 gsscc_err_reg; -#define VXGE_HAL_GSSCC_ERR_REG_SSCC_SSR_SG_ERR(val) vBIT(val, 6, 2) -#define VXGE_HAL_GSSCC_ERR_REG_SSCC_TSR_SG_ERR(val) vBIT(val, 10, 6) -#define VXGE_HAL_GSSCC_ERR_REG_SSCC_OVERLAPPING_SYNC_ERR mBIT(23) -#define VXGE_HAL_GSSCC_ERR_REG_SSCC_SSR_DB_ERR(val) vBIT(val, 38, 2) -#define VXGE_HAL_GSSCC_ERR_REG_SSCC_TSR_DB_ERR(val) vBIT(val, 42, 6) -#define VXGE_HAL_GSSCC_ERR_REG_SSCC_CP2STE_UFLOW_ERR mBIT(55) -#define VXGE_HAL_GSSCC_ERR_REG_SSCC_CP2TTE_UFLOW_ERR mBIT(63) -/* 0x03618 */ u64 gsscc_err_mask; -/* 0x03620 */ u64 gsscc_err_alarm; -/* 0x03628 */ u64 gssc_err0_reg[3]; -#define VXGE_HAL_GSSC_ERR0_REG_SSCC_STATE_SG_ERR(val) vBIT(val, 0, 8) -#define VXGE_HAL_GSSC_ERR0_REG_SSCC_CM_RESP_SG_ERR(val) vBIT(val, 12, 4) -#define VXGE_HAL_GSSC_ERR0_REG_SSCC_SSR_RESP_SG_ERR(val) vBIT(val, 22, 2) -#define VXGE_HAL_GSSC_ERR0_REG_SSCC_TSR_RESP_SG_ERR(val) vBIT(val, 26, 6) -#define VXGE_HAL_GSSC_ERR0_REG_SSCC_STATE_DB_ERR(val) vBIT(val, 32, 8) -#define VXGE_HAL_GSSC_ERR0_REG_SSCC_CM_RESP_DB_ERR(val) vBIT(val, 44, 4) -#define VXGE_HAL_GSSC_ERR0_REG_SSCC_SSR_RESP_DB_ERR(val) vBIT(val, 54, 2) -#define VXGE_HAL_GSSC_ERR0_REG_SSCC_TSR_RESP_DB_ERR(val) vBIT(val, 58, 6) -/* 0x03630 */ u64 gssc_err0_mask[3]; -/* 0x03638 */ u64 gssc_err0_alarm[3]; -/* 0x03670 */ u64 gssc_err1_reg[3]; -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_RESP_DB_ERR mBIT(0) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_SCREQ_ERR mBIT(1) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_RESP_OFLOW_ERR mBIT(2) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_RESP_R_WN_ERR mBIT(3) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_RESP_UFLOW_ERR mBIT(4) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_REQ_OFLOW_ERR mBIT(5) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_REQ_UFLOW_ERR mBIT(6) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_FSM_OFLOW_ERR mBIT(7) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_FSM_UFLOW_ERR mBIT(8) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_REQ_OFLOW_ERR mBIT(9) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_REQ_UFLOW_ERR mBIT(10) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_RESP_OFLOW_ERR mBIT(11) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_RESP_R_WN_ERR mBIT(12) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_RESP_UFLOW_ERR mBIT(13) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_REQ_OFLOW_ERR mBIT(14) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_REQ_UFLOW_ERR mBIT(15) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_RESP_OFLOW_ERR mBIT(16) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_RESP_R_WN_ERR mBIT(17) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_RESP_UFLOW_ERR mBIT(18) -#define VXGE_HAL_GSSC_ERR1_REG_SSCC_SCRESP_ERR mBIT(19) -/* 0x03678 */ u64 gssc_err1_mask[3]; -/* 0x03680 */ u64 gssc_err1_alarm[3]; -/* 0x036b8 */ u64 gqcc_err_reg; -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CACHE_PB_SG_ERR(val) vBIT(val, 0, 4) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CACHE_PB_SG_ERR(val) vBIT(val, 4, 4) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CACHE_PB_DB_ERR(val) vBIT(val, 8, 4) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CACHE_PB_DB_ERR(val) vBIT(val, 12, 4) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CCMREQCMD_FIFO_ERR mBIT(16) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CCMREQDAT_FIFO_ERR mBIT(17) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CCM_CAM_FIFO_PUSH_ERR mBIT(18) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CCM_CAM_EIP_FIFO_PUSH_ERR mBIT(19) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CCM2CMA_FIFO_POP_ERR mBIT(20) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CCM_CAM_FIFO_PUSH_ERR mBIT(24) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CCM_CAM_EIP_FIFO_PUSH_ERR mBIT(25) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CCM2CMA_LP_FIFO_POP_ERR mBIT(26) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CCM2CMA_HP_FIFO_POP_ERR mBIT(27) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_WSE2CMA_FIFO_POP_ERR mBIT(28) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_RRP2CMA_LP_FIFO_POP_ERR mBIT(29) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_RRP2CMA_HP_FIFO_POP_ERR mBIT(30) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_IPWOGRRESP_FIFO_POP_ERR mBIT(31) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_LPRPEDAT_FIFO_ERR mBIT(32) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_LPWRRESP_FIFO_PUSH_ERR mBIT(33) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_LPCMCREQCMD_ERR mBIT(34) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_HPCMCREQCMD_ERR mBIT(35) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMCREQDAT_ERR mBIT(36) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CMA_CMR_SM_ERR mBIT(41) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CMA_CAR_SM_ERR mBIT(42) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMA_HCMR_SM_ERR mBIT(43) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMA_LCMR_SM_ERR mBIT(44) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMA_CAR_SM_ERR mBIT(45) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CMA_CMR_INFO_ERR mBIT(55) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMA_WSE_WQE_RD_ERR mBIT(56) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMA2WGM_NEXT_WQE_PTR_ERR mBIT(57) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMA2RLM_RMV_DATA_ERR mBIT(58) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMA2DLM_RMV_DATA_ERR mBIT(59) -#define VXGE_HAL_GQCC_ERR_REG_QCC_SQM_CMA2ELM_RMV_DATA_ERR mBIT(60) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CMA2CGM_CQEGRP_ROW_DATA_ERR mBIT(61) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CMA2RLM_RMV_DATA_ERR mBIT(62) -#define VXGE_HAL_GQCC_ERR_REG_QCC_CQM_CMA2ELM_RMV_DATA_ERR mBIT(63) -/* 0x036c0 */ u64 gqcc_err_mask; -/* 0x036c8 */ u64 gqcc_err_alarm; -/* 0x036d0 */ u64 uqm_err_reg; -#define VXGE_HAL_UQM_ERR_REG_UQM_UQM_CMCREQ_ECC_SG_ERR mBIT(0) -#define VXGE_HAL_UQM_ERR_REG_UQM_UQM_CMCREQ_ECC_DB_ERR mBIT(1) -#define VXGE_HAL_UQM_ERR_REG_UQM_UQM_SM_ERR mBIT(8) -/* 0x036d8 */ u64 uqm_err_mask; -/* 0x036e0 */ u64 uqm_err_alarm; -/* 0x036e8 */ u64 sscc_config; -#define VXGE_HAL_SSCC_CONFIG_HIT_SCHASH_INDEX_MSB(val) vBIT(val, 3, 5) -#define VXGE_HAL_SSCC_CONFIG_HIT_SCHASH_INDEX_LSB(val) vBIT(val, 11, 5) -#define VXGE_HAL_SSCC_CONFIG_TIMEOUT_VALUE(val) vBIT(val, 16, 16) -#define VXGE_HAL_SSCC_CONFIG_ALLOW_NOTFOUND_CACHING mBIT(39) -#define VXGE_HAL_SSCC_CONFIG_ALRO_SCHASH_INDEX_MSB(val) vBIT(val, 43, 5) -#define VXGE_HAL_SSCC_CONFIG_ALRO_SCHASH_INDEX_LSB(val) vBIT(val, 51, 5) -#define VXGE_HAL_SSCC_CONFIG_NULL_LOOKUP mBIT(63) -/* 0x036f0 */ u64 sscc_mask_0; -#define VXGE_HAL_SSCC_MASK_0_IPV6_SA_TOP(val) vBIT(val, 0, 64) -/* 0x036f8 */ u64 sscc_mask_1; -#define VXGE_HAL_SSCC_MASK_1_IPV6_SA_BOTTOM(val) vBIT(val, 0, 64) -/* 0x03700 */ u64 sscc_mask_2; -#define VXGE_HAL_SSCC_MASK_2_IPV6_DA_TOP(val) vBIT(val, 0, 64) -/* 0x03708 */ u64 sscc_mask_3; -#define VXGE_HAL_SSCC_MASK_3_IPV6_DA_BOTTOM(val) vBIT(val, 0, 64) -/* 0x03710 */ u64 sscc_mask_4; -#define VXGE_HAL_SSCC_MASK_4_IPV4_SA(val) vBIT(val, 0, 32) -#define VXGE_HAL_SSCC_MASK_4_IPV4_DA(val) vBIT(val, 32, 32) -/* 0x03718 */ u64 sscc_mask_5; -#define VXGE_HAL_SSCC_MASK_5_TCP_SP(val) vBIT(val, 0, 16) -#define VXGE_HAL_SSCC_MASK_5_TCP_DP(val) vBIT(val, 16, 16) -#define VXGE_HAL_SSCC_MASK_5_VLANID(val) vBIT(val, 52, 12) -/* 0x03720 */ u64 gcmg1_ecc; -#define VXGE_HAL_GCMG1_ECC_ENABLE_SSCC_N mBIT(7) -#define VXGE_HAL_GCMG1_ECC_ENABLE_UQM_N mBIT(15) -#define VXGE_HAL_GCMG1_ECC_ENABLE_QCC_N mBIT(23) - u8 unused03a00[0x03a00 - 0x03728]; - -/* 0x03a00 */ u64 pcmg1_int_status; -#define VXGE_HAL_PCMG1_INT_STATUS_PSSCC_ERR_PSSCC_INT mBIT(0) -#define VXGE_HAL_PCMG1_INT_STATUS_PQCC_ERR_PQCC_INT mBIT(1) -#define VXGE_HAL_PCMG1_INT_STATUS_PQCC_CQM_ERR_PQCC_CQM_INT mBIT(2) -#define VXGE_HAL_PCMG1_INT_STATUS_PQCC_SQM_ERR_PQCC_SQM_INT mBIT(3) -/* 0x03a08 */ u64 pcmg1_int_mask; -/* 0x03a10 */ u64 psscc_err_reg; -#define VXGE_HAL_PSSCC_ERR_REG_SSCC_CP2STE_OFLOW_ERR mBIT(0) -#define VXGE_HAL_PSSCC_ERR_REG_SSCC_CP2TTE_OFLOW_ERR mBIT(1) -/* 0x03a18 */ u64 psscc_err_mask; -/* 0x03a20 */ u64 psscc_err_alarm; -/* 0x03a28 */ u64 pqcc_err_reg; -#define VXGE_HAL_PQCC_ERR_REG_QCC_SQM_MAX_WQE_GRP_INFO_ERR mBIT(0) -#define VXGE_HAL_PQCC_ERR_REG_QCC_SQM_WQE_FREE_LIST_EMPTY_INFO_ERR mBIT(1) -#define VXGE_HAL_PQCC_ERR_REG_QCC_SQM_FLM_WQE_ID_FIFO_ERR mBIT(2) -#define VXGE_HAL_PQCC_ERR_REG_QCC_SQM_CACHE_FULL_INFO_ERR mBIT(3) -#define VXGE_HAL_PQCC_ERR_REG_QCC_QCC_PDA_ARB_SM_ERR mBIT(32) -#define VXGE_HAL_PQCC_ERR_REG_QCC_QCC_CP_ARB_SM_ERR mBIT(33) -#define VXGE_HAL_PQCC_ERR_REG_QCC_QCC_CXP2QCC_FIFO_ERR mBIT(63) -/* 0x03a30 */ u64 pqcc_err_mask; -/* 0x03a38 */ u64 pqcc_err_alarm; -/* 0x03a40 */ u64 pqcc_cqm_err_reg; -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CACHE_PA_SG_ERR(val) vBIT(val, 0, 4) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_DMACQERSP_SG_ERR mBIT(4) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CACHE_PA_DB_ERR(val) vBIT(val, 8, 4) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_DMACQERSP_DB_ER mBIT(12) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CCM_RMW_FIFO_ERR mBIT(16) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CAE_RLM_FIFO_ERR mBIT(17) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CCM_CAM_FIFO_POP_ERR mBIT(18) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CCM_CAM_EIP_FIFO_POP_ERR mBIT(19) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CCM2CMA_FIFO_PUSH_ERR mBIT(20) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_HPRPEREQ_FIFO_ERR mBIT(21) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_LPRPEREQ_FIFO_ERR mBIT(22) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_LPRPERSP_FIFO_ERR mBIT(23) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CMP_USDC_DBELL_FIFO_ERR mBIT(24) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CMP_CXP_MSG_IN_FIFO_ERR mBIT(25) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CMP_CXP_MSG_OUT_FIFO_ERR mBIT(26) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CAE_ELM_FIFO_ERR mBIT(27) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CGM_CCM_REQ_FIFO_ERR mBIT(28) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_EXCESSIVE_RD_RESP_ERR mBIT(29) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CDR_SERR mBIT(32) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_WGM_FLM_SM_ERR mBIT(33) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_WGM_CRP_SM_ERR mBIT(34) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_WGM_ARB_SM_ERR mBIT(35) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CMP_RCL_SM_ERR mBIT(36) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CMP_CIN_SM_ERR mBIT(37) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CSE_SM_ERR mBIT(38) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CCM_SM_ERR mBIT(39) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CAE_RLM_SM_ERR mBIT(40) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CAE_RLM_ADD_SM_ERR mBIT(41) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CAE_ELM_SM_ERR mBIT(42) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CAE_ELM_ADD_SM_ERR mBIT(43) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CACHE_FULL_INFO_ERR mBIT(58) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_MAX_CQE_GRP_INFO_ERR mBIT(59) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_CDR_SM_INFO_ERR mBIT(60) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_BAD_CIN_INFO_ERR mBIT(61) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_NO_CQE_GRP_INFO_ERR mBIT(62) -#define VXGE_HAL_PQCC_CQM_ERR_REG_QCC_CQM_BAD_VPIN_INFO_ERR mBIT(63) -/* 0x03a48 */ u64 pqcc_cqm_err_mask; -/* 0x03a50 */ u64 pqcc_cqm_err_alarm; -/* 0x03a58 */ u64 pqcc_sqm_err_reg; -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CACHE_PA_SG_ERR(val) vBIT(val, 0, 4) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_LPRPEDAT_SG_ERR(val) vBIT(val, 4, 4) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_DMAWQERSP_SG_ERR mBIT(8) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_RPEREQDAT_SG_ERR mBIT(9) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_BAD_VPIN_INFO_ERR mBIT(10) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WDR_SM_INFO_ERR mBIT(11) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_BAD_SIN_INFO_ERR mBIT(12) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_EXCESSIVE_RD_RESP_ERR mBIT(13) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_DMAWQERSP_DB_ERR mBIT(14) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_RPEREQDAT_DB_ERR mBIT(15) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CACHE_PA_DB_ERR(val) vBIT(val, 16, 4) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_LPRPEDAT_DB_ERR(val) vBIT(val, 20, 4) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_RLM_FIFO_ERR mBIT(24) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CCM_CAM_FIFO_POP_ERR mBIT(25) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CCM_CAM_EIP_FIFO_POP_ERR mBIT(26) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CCM2CMA_LP_FIFO_PUSH_ERR mBIT(27) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CCM2CMA_HP_FIFO_PUSH_ERR mBIT(28) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WSE2CMA_FIFO_PUSH_ERR mBIT(29) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_RRP2CMA_LP_FIFO_PUSH_ERR mBIT(30) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_RRP2CMA_HP_FIFO_PUSH_ERR mBIT(31) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_HPRPEREQ_FIFO_ERR mBIT(32) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_IPWOGRREQSB_FIFO_ERR mBIT(33) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_IPWOGRRESP_FIFO_POP_ERR mBIT(34) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_LPRPEDAT_FIFO_ERR mBIT(35) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_LPRPEREQ_FIFO_ERR mBIT(36) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_LPRPERESP_FIFO_ERR mBIT(37) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_LPRPERESPSB_FIFO_ERR mBIT(38) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_LPWRREQSB_FIFO_ERR mBIT(39) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_LPWRRESP_FIFO_POP_ERR mBIT(40) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_SWRRESP_FIFO_ERR mBIT(41) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WGM_RPE_REQ_FIFO_ERR mBIT(42) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WGM_RPE_LASTOD_FIFO_ERR mBIT(43) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CMP_USDC_DBELL_FIFO_ERR mBIT(44) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CMP_CXP_MSG_IN_FIFO_ERR mBIT(45) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CMP_CXP_MSG_OUT_FIFO_ERR mBIT(46) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CCM_RMW_FIFO_ERR mBIT(47) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_ELM_FIFO_ERR mBIT(48) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_DLM_FIFO_ERR mBIT(49) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_RRP_RESPDATA_ARB_SM_ERR mBIT(50) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WDR_SERR mBIT(51) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CMA_RLP_SM_ERR mBIT(52) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WGM_FLM_SM_ERR mBIT(53) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CMP_RCL_SM_ERR mBIT(54) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CMP_CIN_SM_ERR mBIT(55) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WSE_SM_ERR mBIT(56) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_CCM_SM_ERR mBIT(57) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_RLM_SM_ERR mBIT(58) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_RLM_ADD_SM_ERR mBIT(59) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_ELM_SM_ERR mBIT(60) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_ELM_ADD_SM_ERR mBIT(61) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_DLM_SM_ERR mBIT(62) -#define VXGE_HAL_PQCC_SQM_ERR_REG_QCC_SQM_WAE_DLM_ADD_SM_ERR mBIT(63) -/* 0x03a60 */ u64 pqcc_sqm_err_mask; -/* 0x03a68 */ u64 pqcc_sqm_err_alarm; -/* 0x03a70 */ u64 qcc_srq_cqrq; -#define VXGE_HAL_QCC_SRQ_CQRQ_POLL_TIMER(val) vBIT(val, 0, 32) -#define VXGE_HAL_QCC_SRQ_CQRQ_MAX_EOL_POLLS(val) vBIT(val, 32, 8) -#define VXGE_HAL_QCC_SRQ_CQRQ_CONSERVATIVE_SM_CRD_RTN mBIT(47) -/* 0x03a78 */ u64 qcc_err_policy; -#define VXGE_HAL_QCC_ERR_POLICY_CQM_CQE(val) vBIT(val, 4, 4) -#define VXGE_HAL_QCC_ERR_POLICY_SQM_WQE(val) vBIT(val, 12, 4) -#define VXGE_HAL_QCC_ERR_POLICY_SQM_SRQIR(val) vBIT(val, 22, 2) -/* 0x03a80 */ u64 qcc_bp_ctrl; -#define VXGE_HAL_QCC_BP_CTRL_RD_XON mBIT(7) -/* 0x03a88 */ u64 pcmg1_ecc; -#define VXGE_HAL_PCMG1_ECC_ENABLE_QCC_N mBIT(23) -/* 0x03a90 */ u64 qcc_cqm_cqrq_id; -#define VXGE_HAL_QCC_CQM_CQRQ_ID_CQM_BAD_VPIN_CQRQ_ID(val) vBIT(val, 0, 16) -#define VXGE_HAL_QCC_CQM_CQRQ_ID_CQM_BAD_CIN_CQRQ_ID(val) vBIT(val, 16, 16) -#define VXGE_HAL_QCC_CQM_CQRQ_ID_CQM_MAX_CQE_GRP_CQRQ_ID(val) vBIT(val, 32, 16) -#define VXGE_HAL_QCC_CQM_CQRQ_ID_CQM_CQM_CDR_CQRQ_ID(val) vBIT(val, 48, 16) -/* 0x03a98 */ u64 qcc_sqm_srq_id; -#define VXGE_HAL_QCC_SQM_SRQ_ID_SQM_BAD_VPIN_SRQ_ID(val) vBIT(val, 0, 16) -#define VXGE_HAL_QCC_SQM_SRQ_ID_SQM_BAD_SIN_SRQ_ID(val) vBIT(val, 16, 16) -#define VXGE_HAL_QCC_SQM_SRQ_ID_SQM_MAX_WQE_GRP_SRQ_ID(val) vBIT(val, 32, 16) -#define VXGE_HAL_QCC_SQM_SRQ_ID_SQM_SQM_WDR_SRQ_ID(val) vBIT(val, 48, 16) -/* 0x03aa0 */ u64 qcc_cqm_flm_id; -#define VXGE_HAL_QCC_CQM_FLM_ID_CQM_CQM_CCM_STATE_SERR(val) vBIT(val, 1, 7) -#define VXGE_HAL_QCC_CQM_FLM_ID_CQM_CQM_FLM_HEAD_CQEGRP_ID(val) vBIT(val, 8, 24) -#define VXGE_HAL_QCC_CQM_FLM_ID_CQM_CQM_FLM_TAIL_CQEGRP_ID(val)\ - vBIT(val, 40, 24) -/* 0x03aa8 */ u64 qcc_sqm_flm_id; -#define VXGE_HAL_QCC_SQM_FLM_ID_SQM_SQM_NO_WQE_OD_GRP_AVAIL mBIT(0) -#define VXGE_HAL_QCC_SQM_FLM_ID_SQM_SQM_CCM_STATE_SERR(val) vBIT(val, 1, 7) -#define VXGE_HAL_QCC_SQM_FLM_ID_SQM_SQM_FLM_HEAD_WQEGRP_ID(val) vBIT(val, 8, 24) -#define VXGE_HAL_QCC_SQM_FLM_ID_SQM_SQM_FLM_TAIL_WQEGRP_ID(val)\ - vBIT(val, 40, 24) - u8 unused04000[0x04000 - 0x03ab0]; - -/* 0x04000 */ u64 one_int_status; -#define VXGE_HAL_ONE_INT_STATUS_RXPE_ERR_RXPE_INT mBIT(7) -#define VXGE_HAL_ONE_INT_STATUS_TXPE_BCC_MEM_SG_ECC_ERR_TXPE_BCC_MEM_SG_ECC_INT\ - mBIT(13) -#define VXGE_HAL_ONE_INT_STATUS_TXPE_BCC_MEM_DB_ECC_ERR_TXPE_BCC_MEM_DB_ECC_INT\ - mBIT(14) -#define VXGE_HAL_ONE_INT_STATUS_TXPE_ERR_TXPE_INT mBIT(15) -#define VXGE_HAL_ONE_INT_STATUS_DLM_ERR_DLM_INT mBIT(23) -#define VXGE_HAL_ONE_INT_STATUS_PE_ERR_PE_INT mBIT(31) -#define VXGE_HAL_ONE_INT_STATUS_RPE_ERR_RPE_INT mBIT(39) -#define VXGE_HAL_ONE_INT_STATUS_RPE_FSM_ERR_RPE_FSM_INT mBIT(47) -#define VXGE_HAL_ONE_INT_STATUS_OES_ERR_OES_INT mBIT(55) -/* 0x04008 */ u64 one_int_mask; -/* 0x04010 */ u64 rpe_err_reg; -#define VXGE_HAL_RPE_ERR_REG_RPE_RCM_PA_DB_ERR(val) vBIT(val, 0, 4) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCM_PB_DB_ERR(val) vBIT(val, 4, 4) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_FRAME_DB_ERR mBIT(8) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_RCMD_DB_ERR mBIT(9) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCQ_DB_ERR mBIT(10) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCO_PBLE_DB_ERR mBIT(11) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCM_PA_SG_ERR(val) vBIT(val, 16, 4) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCM_PB_SG_ERR(val) vBIT(val, 20, 4) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_FRAME_SG_ERR mBIT(24) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_RCMD_SG_ERR mBIT(25) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCQ_SG_ERR mBIT(26) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCO_PBLE_SG_ERR mBIT(27) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_CTXTRDRQ_FIFO_ERR mBIT(32) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_CTXTWRRQ_FIFO_ERR mBIT(33) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_CQRQLDRQ_FIFO_ERR mBIT(34) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_SRQLDRQ_FIFO_ERR mBIT(35) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_WQERDRQ_FIFO_ERR mBIT(36) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_WQEWRRQ_FIFO_ERR mBIT(37) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_CQEAVAILRQ_FIFO_ERR mBIT(38) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_WQECOMPL_FIFO_ERR mBIT(39) -#define VXGE_HAL_RPE_ERR_REG_RPE_CMI_CQEADDRRQ_FIFO_ERR mBIT(40) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCC_CTXTLDNT_FIFO_ERR mBIT(41) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCC_RCCRESP_FIFO_ERR mBIT(42) -#define VXGE_HAL_RPE_ERR_REG_RPE_QEM_OESPREINIT_FIFO_ERR mBIT(43) -#define VXGE_HAL_RPE_ERR_REG_RPE_QEM_EVENT_FIFO_ERR mBIT(44) -#define VXGE_HAL_RPE_ERR_REG_RPE_QEM_WQELDNT_FIFO_ERR mBIT(45) -#define VXGE_HAL_RPE_ERR_REG_RPE_QEM_QEMRESP_FIFO_ERR mBIT(46) -#define VXGE_HAL_RPE_ERR_REG_RPE_QEM_PDM_CMD_FIFO_ERR mBIT(47) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_CMDRESP_FIFO_ERR mBIT(48) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_FRAME_FIFO_ERR mBIT(49) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_EPE_SPQ_FIFO_ERR mBIT(50) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_EPE_STCRESP_FIFO_ERR mBIT(51) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_RIM_RIMIPB_FIFO_ERR mBIT(52) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCI_MCQLEN_FIFO_ERR mBIT(53) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCI_PCQLEN_FIFO_ERR mBIT(54) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCI_RDLIM_FIFO_ERR mBIT(55) -#define VXGE_HAL_RPE_ERR_REG_RPE_MSG_RCMD_FIFO_ERR mBIT(56) -#define VXGE_HAL_RPE_ERR_REG_RPE_DLM_RCMD_FIFO_ERR mBIT(57) -#define VXGE_HAL_RPE_ERR_REG_RPE_PDM_RCMD_FIFO_ERR mBIT(58) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCQ_FIFO_ERR mBIT(59) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCO_CQE_FIFO_ERR mBIT(60) -#define VXGE_HAL_RPE_ERR_REG_RPE_RCO_PBLE_FIFO_ERR mBIT(61) -/* 0x04018 */ u64 rpe_err_mask; -/* 0x04020 */ u64 rpe_err_alarm; -/* 0x04028 */ u64 pe_err_reg; -#define VXGE_HAL_PE_ERR_REG_PE_PE_CDP_CTXT_PA_SG_ERR mBIT(0) -#define VXGE_HAL_PE_ERR_REG_PE_PE_CDP_CTXT_PB_SG_ERR mBIT(1) -#define VXGE_HAL_PE_ERR_REG_PE_PE_TIMER_SG_ERR mBIT(2) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_CTXTRRQ_RDFIFO_STATE_SM_ERR mBIT(8) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_CTXTRRQ_STATE_SM_ERR mBIT(9) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_CTXTWRQ_ADDR_STATE_SM_ERR mBIT(10) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_CTXTWRQ_DATA_STATE_SM_ERR mBIT(11) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_DLM_CTXT_STATE_SM_ERR mBIT(12) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_RDMEM_ADDR_STATE_SM_ERR mBIT(13) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_RDMEM_DATA_STATE_SM_ERR mBIT(14) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_RDRESP_STATE_SM_ERR mBIT(15) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_RXPE_RDCTXT_DATA_STATE_SM_ERR mBIT(16) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_RXPEIF_STATE_SM_ERR mBIT(17) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_TCM_CTXT_STATE_SM_ERR mBIT(18) -#define VXGE_HAL_PE_ERR_REG_PE_SCC_CTXT_CNTRL_SM_ERR mBIT(19) -#define VXGE_HAL_PE_ERR_REG_PE_SCC_RECALL_SM_ERR mBIT(20) -#define VXGE_HAL_PE_ERR_REG_PE_SCC_NCE_FETCH_STATE_SM_ERR mBIT(21) -#define VXGE_HAL_PE_ERR_REG_PE_NCC_NCE_CNTRL_SM_ERR mBIT(22) -#define VXGE_HAL_PE_ERR_REG_PE_NCC_NDP_MEMCNTRL_STATE_SM_ERR mBIT(23) -#define VXGE_HAL_PE_ERR_REG_PE_NCC_NDP_NRRQ_RDFIFO_STATE_SM_ERR mBIT(24) -#define VXGE_HAL_PE_ERR_REG_PE_NCC_NDP_NRRQ_STATE_SM_ERR mBIT(25) -#define VXGE_HAL_PE_ERR_REG_PE_NCC_NDP_NWRQ_RDFIFO_STATE_SM_ERR mBIT(26) -#define VXGE_HAL_PE_ERR_REG_PE_NCC_NDP_RDMEM_DATA_STATE_SM_ERR mBIT(27) -#define VXGE_HAL_PE_ERR_REG_PE_CMGIF_HDREQ_ARB_STATE_SM_ERR mBIT(28) -#define VXGE_HAL_PE_ERR_REG_PE_CMGIF_HNREQ_ARB_STATE_SM_ERR mBIT(29) -#define VXGE_HAL_PE_ERR_REG_PE_CMGIF_LDREQ_ARB_STATE_SM_ERR mBIT(30) -#define VXGE_HAL_PE_ERR_REG_PE_CMGIF_LNREQ_ARB_STATE_SM_ERR mBIT(31) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_CTXTRRQ_FIFO_ERR mBIT(32) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_CTXT_FIFO_ERR mBIT(33) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_RXPE_CTXT_WR_PHASE_ERR mBIT(34) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_RXPE_CTXT_RD_PHASE_ERR mBIT(35) -#define VXGE_HAL_PE_ERR_REG_PE_CDP_CTXTRRQ_RD_RESP_PHASE_ERR mBIT(36) -#define VXGE_HAL_PE_ERR_REG_PE_NDP_NRRQ_FIFO_ERR mBIT(37) -#define VXGE_HAL_PE_ERR_REG_PE_NDP_NWRQ_FIFO_ERR mBIT(38) -#define VXGE_HAL_PE_ERR_REG_PE_NCC_NDP_WRMEM_PHASE_ERR mBIT(39) -#define VXGE_HAL_PE_ERR_REG_PE_NCC_PE_RESP_CMD_PHASE_ERR mBIT(40) -#define VXGE_HAL_PE_ERR_REG_PE_PE_TIMER_SM_ERR mBIT(48) -#define VXGE_HAL_PE_ERR_REG_PE_PET_MEM_ARB_ERR mBIT(49) -#define VXGE_HAL_PE_ERR_REG_PE_PET_UPDATE_FSM_ERR mBIT(50) -#define VXGE_HAL_PE_ERR_REG_PE_PE_CDP_CTXT_PA_DB_ERR mBIT(61) -#define VXGE_HAL_PE_ERR_REG_PE_PE_CDP_CTXT_PB_DB_ERR mBIT(62) -#define VXGE_HAL_PE_ERR_REG_PE_PE_TIMER_DB_ERR mBIT(63) -/* 0x04030 */ u64 pe_err_mask; -/* 0x04038 */ u64 pe_err_alarm; -/* 0x04040 */ u64 rxpe_err_reg; -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT0_FRM_SG_ERR mBIT(0) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT1_FRM_SG_ERR mBIT(1) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_FPDU_MEM_SG_ERR mBIT(2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_MSG2RXPE_SG_ERR(val) vBIT(val, 3, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT0_IRAM_SG_ERR(val) vBIT(val, 5, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT1_IRAM_SG_ERR(val) vBIT(val, 7, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT_DRAM_PA_SG_ERR(val) vBIT(val, 9, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT_DRAM_PB_SG_ERR(val) vBIT(val, 11, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT0_TRCE_SG_ERR mBIT(13) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT1_TRCE_SG_ERR mBIT(14) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT0_FRM_DB_ERR mBIT(32) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT1_FRM_DB_ERR mBIT(33) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_FPDU_MEM_DB_ERR mBIT(34) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_MSG2RXPE_DB_ERR(val) vBIT(val, 35, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT0_IRAM_DB_ERR(val) vBIT(val, 37, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT1_IRAM_DB_ERR(val) vBIT(val, 39, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT_DRAM_PA_DB_ERR(val) vBIT(val, 41, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT_DRAM_PB_DB_ERR(val) vBIT(val, 43, 2) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT0_TRCE_DB_ERR mBIT(45) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT1_TRCE_DB_ERR mBIT(46) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT0_XLMI_SERR mBIT(54) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_XT1_XLMI_SERR mBIT(55) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_DRAM_WR_ERR mBIT(58) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_IMSGIN_WR_FSM_ERR mBIT(59) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_IMSGIN_EVCTRL_FSM_ERR mBIT(60) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_MSG2RXPE_FIFO_ERR mBIT(61) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_IMSGOUT_COLLISION_ERR mBIT(62) -#define VXGE_HAL_RXPE_ERR_REG_RXPE_SM_ERR mBIT(63) -/* 0x04048 */ u64 rxpe_err_mask; -/* 0x04050 */ u64 rxpe_err_alarm; -/* 0x04058 */ u64 dlm_err_reg; -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_CTXT_PA_SG_ERR mBIT(0) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_CTXT_PB_SG_ERR mBIT(1) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_ACK_PA_SG_ERR mBIT(2) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_ACK_PB_SG_ERR mBIT(3) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_RIRR_PA_SG_ERR mBIT(4) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_RIRR_PB_SG_ERR mBIT(5) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_AWRQ_MEM_SG_ERR mBIT(6) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_LWRQ_MEM_SG_ERR mBIT(7) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_CTXT_PA_DB_ERR mBIT(8) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_CTXT_PB_DB_ERR mBIT(9) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_ACK_PA_DB_ERR mBIT(10) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_ACK_PB_DB_ERR mBIT(11) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_RIRR_PA_DB_ERR mBIT(12) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_RIRR_PB_DB_ERR mBIT(13) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_AWRQ_MEM_DB_ERR mBIT(14) -#define VXGE_HAL_DLM_ERR_REG_DLM_PE_DLM_LWRQ_MEM_DB_ERR mBIT(15) -#define VXGE_HAL_DLM_ERR_REG_DLM_ACC_PA_STATE_SM_ERR mBIT(16) -#define VXGE_HAL_DLM_ERR_REG_DLM_ACC_PB_STATE_SM_ERR mBIT(17) -#define VXGE_HAL_DLM_ERR_REG_DLM_ACK_RDMEM_DATA_STATE_SM_ERR mBIT(18) -#define VXGE_HAL_DLM_ERR_REG_DLM_AFLM_RDFIFO_STATE_SM_ERR mBIT(19) -#define VXGE_HAL_DLM_ERR_REG_DLM_AFLM_STATE_SM_ERR mBIT(20) -#define VXGE_HAL_DLM_ERR_REG_DLM_APTR_ALLOC_STATE_SM_ERR mBIT(21) -#define VXGE_HAL_DLM_ERR_REG_DLM_ARRQ_RDFIFO_STATE_SM_ERR mBIT(22) -#define VXGE_HAL_DLM_ERR_REG_DLM_ARRQ_STATE_SM_ERR mBIT(23) -#define VXGE_HAL_DLM_ERR_REG_DLM_AWRQ_STATE_SM_ERR mBIT(24) -#define VXGE_HAL_DLM_ERR_REG_DLM_EVENT_CTXT_STATE_SM_ERR mBIT(25) -#define VXGE_HAL_DLM_ERR_REG_DLM_LCC_PA_STATE_SM_ERR mBIT(26) -#define VXGE_HAL_DLM_ERR_REG_DLM_LCC_PB_STATE_SM_ERR mBIT(27) -#define VXGE_HAL_DLM_ERR_REG_DLM_LFLM_RDFIFO_STATE_SM_ERR mBIT(28) -#define VXGE_HAL_DLM_ERR_REG_DLM_LFLM_STATE_SM_ERR mBIT(29) -#define VXGE_HAL_DLM_ERR_REG_DLM_LPTR_ALLOC_STATE_SM_ERR mBIT(30) -#define VXGE_HAL_DLM_ERR_REG_DLM_LRRQ_RDFIFO_STATE_SM_ERR mBIT(31) -#define VXGE_HAL_DLM_ERR_REG_DLM_LRRQ_STATE_SM_ERR mBIT(32) -#define VXGE_HAL_DLM_ERR_REG_DLM_LWRQ_STATE_SM_ERR mBIT(33) -#define VXGE_HAL_DLM_ERR_REG_DLM_PCIWR_STATE_SM_ERR mBIT(34) -#define VXGE_HAL_DLM_ERR_REG_DLM_PFETCH_STATE_SM_ERR mBIT(35) -#define VXGE_HAL_DLM_ERR_REG_DLM_RCC_PA_STATE_SM_ERR mBIT(36) -#define VXGE_HAL_DLM_ERR_REG_DLM_RCC_PB_STATE_SM_ERR mBIT(37) -#define VXGE_HAL_DLM_ERR_REG_DLM_RFLM_RDFIFO_STATE_SM_ERR mBIT(38) -#define VXGE_HAL_DLM_ERR_REG_DLM_RFLM_STATE_SM_ERR mBIT(39) -#define VXGE_HAL_DLM_ERR_REG_DLM_RIRR_RDMEM_DATA_STATE_SM_ERR mBIT(40) -#define VXGE_HAL_DLM_ERR_REG_DLM_RPTR_ALLOC_STATE_SM_ERR mBIT(41) -#define VXGE_HAL_DLM_ERR_REG_DLM_RRRQ_RDFIFO_STATE_SM_ERR mBIT(42) -#define VXGE_HAL_DLM_ERR_REG_DLM_RRRQ_STATE_SM_ERR mBIT(43) -#define VXGE_HAL_DLM_ERR_REG_DLM_RWRQ_STATE_SM_ERR mBIT(44) -#define VXGE_HAL_DLM_ERR_REG_DLM_RXACK_STATE_SM_ERR mBIT(45) -#define VXGE_HAL_DLM_ERR_REG_DLM_RXLIRR_STATE_SM_ERR mBIT(46) -#define VXGE_HAL_DLM_ERR_REG_DLM_RXRIRR_STATE_SM_ERR mBIT(47) -#define VXGE_HAL_DLM_ERR_REG_DLM_TXACK_RETX_STATE_SM_ERR mBIT(48) -#define VXGE_HAL_DLM_ERR_REG_DLM_TXACK_STATE_SM_ERR mBIT(49) -#define VXGE_HAL_DLM_ERR_REG_DLM_TXLIRR_STATE_SM_ERR mBIT(50) -#define VXGE_HAL_DLM_ERR_REG_DLM_TXRIRR_RETX_STATE_SM_ERR mBIT(51) -#define VXGE_HAL_DLM_ERR_REG_DLM_TXRIRR_STATE_SM_ERR mBIT(52) -#define VXGE_HAL_DLM_ERR_REG_DLM_PREFETCH_ERR mBIT(53) -#define VXGE_HAL_DLM_ERR_REG_DLM_AFLM_FIFO_ERR mBIT(55) -#define VXGE_HAL_DLM_ERR_REG_DLM_RFLM_FIFO_ERR mBIT(56) -#define VXGE_HAL_DLM_ERR_REG_DLM_LFLM_FIFO_ERR mBIT(57) -#define VXGE_HAL_DLM_ERR_REG_DLM_ARRQ_FIFO_ERR mBIT(58) -#define VXGE_HAL_DLM_ERR_REG_DLM_RRRQ_FIFO_ERR mBIT(59) -#define VXGE_HAL_DLM_ERR_REG_DLM_LRRQ_FIFO_ERR mBIT(60) -#define VXGE_HAL_DLM_ERR_REG_DLM_ACK_PTR_FIFO_ERR mBIT(61) -#define VXGE_HAL_DLM_ERR_REG_DLM_RIRR_PTR_FIFO_ERR mBIT(62) -#define VXGE_HAL_DLM_ERR_REG_DLM_LIRR_PTR_FIFO_ERR mBIT(63) -/* 0x04060 */ u64 dlm_err_mask; -/* 0x04068 */ u64 dlm_err_alarm; -/* 0x04070 */ u64 oes_err_reg; -#define VXGE_HAL_OES_ERR_REG_OES_INPUT_ARB_SM_ERR mBIT(0) -#define VXGE_HAL_OES_ERR_REG_OES_PEND_ARB_SM_ERR mBIT(1) -#define VXGE_HAL_OES_ERR_REG_OES_RXSEG_FIFO_ERR mBIT(2) -#define VXGE_HAL_OES_ERR_REG_OES_RXEVT_FIFO_ERR mBIT(3) -#define VXGE_HAL_OES_ERR_REG_OES_TXTDB_FIFO_ERR mBIT(4) -#define VXGE_HAL_OES_ERR_REG_OES_RXTX_FIFO_ERR mBIT(5) -#define VXGE_HAL_OES_ERR_REG_OES_TXIMSG_FIFO_ERR mBIT(6) -#define VXGE_HAL_OES_ERR_REG_OES_TXCONT_FIFO_ERR mBIT(7) -/* 0x04078 */ u64 oes_err_mask; -/* 0x04080 */ u64 oes_err_alarm; -/* 0x04088 */ u64 txpe_err_reg; -#define VXGE_HAL_TXPE_ERR_REG_TXPE_MSG2TXPE_SG_ERR(val) vBIT(val, 0, 2) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_DATA_PA_SG_ERR mBIT(2) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_DATA_PB_SG_ERR mBIT(3) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_XT_DRAM_SG_ERR(val) vBIT(val, 4, 2) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_XT_IRAM_SG_ERR(val) vBIT(val, 6, 2) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_XT_TRACE_SG_ERR mBIT(8) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DOOR_IMM_SG_ERR mBIT(9) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_NCE_PA_SG_ERR mBIT(10) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_NCE_PB_SG_ERR mBIT(11) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_INFO_PA_SG_ERR mBIT(12) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_INFO_PB_SG_ERR mBIT(13) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_STG_SG_ERR mBIT(14) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_MSG2TXPE_DB_ERR(val) vBIT(val, 16, 2) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_DATA_PA_DB_ERR mBIT(18) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_DATA_PB_DB_ERR mBIT(19) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_XT_DRAM_DB_ERR(val) vBIT(val, 20, 2) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_XT_IRAM_DB_ERR(val) vBIT(val, 22, 2) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_XT_TRACE_DB_ERR mBIT(24) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DOOR_IMM_DB_ERR mBIT(25) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_NCE_PA_DB_ERR mBIT(26) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_NCE_PB_DB_ERR mBIT(27) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_INFO_PA_DB_ERR mBIT(28) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_INFO_PB_DB_ERR mBIT(29) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_STG_DB_ERR mBIT(30) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DOOR_SM_ERR mBIT(32) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_IMSGIN_SM_ERR mBIT(33) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_SEND_SM_ERR mBIT(34) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_SEND_TCE_CHOICE_SM_ERR mBIT(35) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_SEND_DIV_SM_ERR mBIT(36) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DMA_SM_ERR mBIT(37) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DMA_RES_SM_ERR mBIT(38) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DMA_NACK_SM_ERR mBIT(39) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_RDTCE_SM_ERR mBIT(40) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_CMGIF_RDRQ_SM_ERR mBIT(41) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_CMGIF_READDRES_SM_ERR mBIT(42) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_TCM_CTXT_SM_ERR mBIT(43) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_PRI_TCE_UPDATE_SM_ERR mBIT(44) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DMA_GET_SM_ERR mBIT(45) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DMA_DONE_SM_ERR mBIT(46) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_INIT_SM_ERR mBIT(47) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_FETCH_SM_ERR mBIT(48) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_HOG_SM_ERR mBIT(49) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_PMON_SM_ERR mBIT(50) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_XT_DRAM_SM_ERR mBIT(51) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_NCM_CTXT_SM_ERR mBIT(52) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_NCM_MEM_SM_ERR mBIT(53) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DMA_RQ_SM_ERR mBIT(54) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_RDRES_PHASE_ERR mBIT(55) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_XT_XLMI_SERR mBIT(56) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DOOR_WRP_ERR mBIT(57) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DOOR_FIFO_ERR mBIT(58) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DMA_DFIFO_ERR mBIT(59) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_DMA_HFIFO_ERR mBIT(60) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_SEND_DIVIDE_ERR mBIT(61) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_PDA_NACK_FIFO_ERR mBIT(62) -#define VXGE_HAL_TXPE_ERR_REG_TXPE_MEM_CONFLICT_ERR mBIT(63) -/* 0x04090 */ u64 txpe_err_mask; -/* 0x04098 */ u64 txpe_err_alarm; -/* 0x040a0 */ u64 txpe_bcc_mem_sg_ecc_err_reg; -#define VXGE_HAL_TXPE_BCC_MEM_SG_ECC_ERR_REG_TXPE_BASE_TXPE_SG_ERR(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_TXPE_BCC_MEM_SG_ECC_ERR_REG_TXPE_BASE_CDP_SG_ERR(val)\ - vBIT(val, 32, 32) -/* 0x040a8 */ u64 txpe_bcc_mem_sg_ecc_err_mask; -/* 0x040b0 */ u64 txpe_bcc_mem_sg_ecc_err_alarm; -/* 0x040b8 */ u64 txpe_bcc_mem_db_ecc_err_reg; -#define VXGE_HAL_TXPE_BCC_MEM_DB_ECC_ERR_REG_TXPE_BASE_TXPE_DB_ERR(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_TXPE_BCC_MEM_DB_ECC_ERR_REG_TXPE_BASE_CDP_DB_ERR(val)\ - vBIT(val, 32, 32) -/* 0x040c0 */ u64 txpe_bcc_mem_db_ecc_err_mask; -/* 0x040c8 */ u64 txpe_bcc_mem_db_ecc_err_alarm; -/* 0x040d0 */ u64 rpe_fsm_err_reg; -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_CMI_SHADOW_ERR mBIT(0) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCC_SHADOW_ERR mBIT(1) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCM_SHADOW_ERR mBIT(2) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_QEM_SHADOW_ERR mBIT(3) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_SHADOW_ERR mBIT(4) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCI_SHADOW_ERR mBIT(5) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCO_SHADOW_ERR mBIT(6) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_CMI_RWM_ERR mBIT(7) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_CMI_RRM_ERR mBIT(8) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCC_SCC_ERR mBIT(9) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCC_CMM_ERR mBIT(10) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_QEM_OIF_ERR mBIT(11) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_QEM_FPG_ERR mBIT(12) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_QEM_WCC_ERR mBIT(13) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_QEM_WMM_ERR mBIT(14) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_OIF_ERR mBIT(15) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_QRI_ERR mBIT(16) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_CTL_EFS_ERR mBIT(17) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_CTL_EFS_UNDEF_EVENT mBIT(18) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_EPE_BS_ERR mBIT(19) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_EPE_IWP_ERR mBIT(20) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_EPE_LRO_ERR mBIT(21) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_RIM_HDR_ERR mBIT(22) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_RIM_MUX_ERR mBIT(23) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_RIM_RLC_ERR mBIT(24) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCI_IPM_DLM_ERR mBIT(25) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCI_IPM_MSG_ERR mBIT(26) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCI_ARB_ERR mBIT(27) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCO_HBI_ERR mBIT(28) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_RCO_OPC_ERR mBIT(29) -#define VXGE_HAL_RPE_FSM_ERR_REG_RPE_PDM_CTL_EFS_FW_ERR mBIT(32) -/* 0x040d8 */ u64 rpe_fsm_err_mask; -/* 0x040e0 */ u64 rpe_fsm_err_alarm; - u8 unused04100[0x04100 - 0x040e8]; - -/* 0x04100 */ u64 one_cfg; -#define VXGE_HAL_ONE_CFG_ONE_CFG_RDY mBIT(7) -/* 0x04108 */ u64 sgrp_alloc[17]; -#define VXGE_HAL_SGRP_ALLOC_SGRP_ALLOC(val) vBIT(val, 0, 64) -/* 0x04190 */ u64 sgrp_iwarp_lro_alloc; -#define VXGE_HAL_SGRP_IWARP_LRO_ALLOC_ENABLE_IWARP mBIT(7) -#define VXGE_HAL_SGRP_IWARP_LRO_ALLOC_LAST_IWARP_SGRP(val) vBIT(val, 11, 5) -/* 0x04198 */ u64 rpe_cfg0; -#define VXGE_HAL_RPE_CFG0_RCC_NBR_SLOTS(val) vBIT(val, 3, 5) -#define VXGE_HAL_RPE_CFG0_RCC_NBR_FREE_SLOTS(val) vBIT(val, 11, 5) -#define VXGE_HAL_RPE_CFG0_RCC_MODE mBIT(23) -#define VXGE_HAL_RPE_CFG0_LL_SEND_MAX_SIZE(val) vBIT(val, 24, 8) -#define VXGE_HAL_RPE_CFG0_BS_ACK_WQE_PF_ENA mBIT(38) -#define VXGE_HAL_RPE_CFG0_IWARP_ISL_PF_ENA mBIT(39) -#define VXGE_HAL_RPE_CFG0_PDM_FRAME_ECC_ENABLE_N mBIT(43) -#define VXGE_HAL_RPE_CFG0_PDM_RCMD_ECC_ENABLE_N mBIT(44) -#define VXGE_HAL_RPE_CFG0_RCQ_ECC_ENABLE_N mBIT(45) -#define VXGE_HAL_RPE_CFG0_RCO_PBLE_ECC_ENABLE_N mBIT(46) -#define VXGE_HAL_RPE_CFG0_RCM_ECC_ENABLE_N mBIT(47) -#define VXGE_HAL_RPE_CFG0_PDM_FRAME_PHASE_ENABLE mBIT(50) -#define VXGE_HAL_RPE_CFG0_DLM_RCMD_PHASE_ENABLE mBIT(51) -#define VXGE_HAL_RPE_CFG0_MSG_RCMD_PHASE_ENABLE mBIT(52) -#define VXGE_HAL_RPE_CFG0_PDM_RCMD_PHASE_ENABLE mBIT(53) -#define VXGE_HAL_RPE_CFG0_RCQ_PHASE_ENABLE mBIT(54) -#define VXGE_HAL_RPE_CFG0_RCO_PBLE_PHASE_ENABLE mBIT(55) -/* 0x041a0 */ u64 rpe_cfg1; -#define VXGE_HAL_RPE_CFG1_WQEOWN_LRO_CTR_ENA mBIT(5) -#define VXGE_HAL_RPE_CFG1_WQEOWN_BS_CTR_ENA mBIT(6) -#define VXGE_HAL_RPE_CFG1_WQEOWN_IWARP_CTR_ENA mBIT(7) -#define VXGE_HAL_RPE_CFG1_DLM_RCMD_MAX_CREDITS(val) vBIT(val, 10, 6) -#define VXGE_HAL_RPE_CFG1_MSG_RCMD_MAX_CREDITS(val) vBIT(val, 18, 6) -#define VXGE_HAL_RPE_CFG1_PDM_RCMD_MAX_CREDITS(val) vBIT(val, 25, 7) -#define VXGE_HAL_RPE_CFG1_RCQ_MAX_CREDITS(val) vBIT(val, 32, 8) -#define VXGE_HAL_RPE_CFG1_RCQ_DLM_PRI(val) vBIT(val, 46, 2) -#define VXGE_HAL_RPE_CFG1_RCQ_MSG_PRI(val) vBIT(val, 54, 2) -#define VXGE_HAL_RPE_CFG1_RCQ_PDM_PRI(val) vBIT(val, 62, 2) -/* 0x041a8 */ u64 rpe_cfg2; -#define VXGE_HAL_RPE_CFG2_RCQ_ARB_CAL0_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_RPE_CFG2_RCQ_ARB_CAL1_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_RPE_CFG2_RCQ_ARB_CAL2_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_RPE_CFG2_RCQ_ARB_CAL3_PRI(val) vBIT(val, 30, 2) -#define VXGE_HAL_RPE_CFG2_RCQ_ARB_CAL4_PRI(val) vBIT(val, 38, 2) -#define VXGE_HAL_RPE_CFG2_RCQ_ARB_CAL5_PRI(val) vBIT(val, 46, 2) -#define VXGE_HAL_RPE_CFG2_RDMA_WRITE_ORDER_ENABLE mBIT(49) -#define VXGE_HAL_RPE_CFG2_RDMA_RDRESP_ORDER_ENABLE mBIT(50) -#define VXGE_HAL_RPE_CFG2_RDMA_SEND_ORDER_ENABLE mBIT(51) -#define VXGE_HAL_RPE_CFG2_RDMA_RDREQ_ORDER_ENABLE mBIT(52) -#define VXGE_HAL_RPE_CFG2_RDMA_TERMINATE_ORDER_ENABLE mBIT(53) -#define VXGE_HAL_RPE_CFG2_IWARP_MISALIGNED_ORDER_ENABLE mBIT(54) -#define VXGE_HAL_RPE_CFG2_IWARP_TIMER_ORDER_ENABLE mBIT(55) -#define VXGE_HAL_RPE_CFG2_IWARP_IMSG_ORDER_ENABLE mBIT(56) -#define VXGE_HAL_RPE_CFG2_BS_IWARP_ACK_ORDER_ENABLE mBIT(57) -#define VXGE_HAL_RPE_CFG2_BS_DATA_ORDER_ENABLE mBIT(58) -#define VXGE_HAL_RPE_CFG2_BS_TIMER_ORDER_ENABLE mBIT(59) -#define VXGE_HAL_RPE_CFG2_BS_IMSG_ORDER_ENABLE mBIT(60) -#define VXGE_HAL_RPE_CFG2_LRO_FRAME_ORDER_ENABLE mBIT(61) -#define VXGE_HAL_RPE_CFG2_LRO_TIMER_ORDER_ENABLE mBIT(62) -#define VXGE_HAL_RPE_CFG2_LRO_IMSG_ORDER_ENABLE mBIT(63) - u8 unused041c0[0x041c0 - 0x041b0]; - -/* 0x041c0 */ u64 rpe_cfg5; -#define VXGE_HAL_RPE_CFG5_LRO_IGNORE_RPA_PARSE_ERRS mBIT(4) -#define VXGE_HAL_RPE_CFG5_LRO_IGNORE_FRM_INT_ERRS mBIT(5) -#define VXGE_HAL_RPE_CFG5_LRO_IGNORE_L3_CSUM_ERRS mBIT(6) -#define VXGE_HAL_RPE_CFG5_LRO_IGNORE_L4_CSUM_ERRS mBIT(7) -#define VXGE_HAL_RPE_CFG5_LRO_NORM_SCATTER_IPV4_OPTIONS mBIT(14) -#define VXGE_HAL_RPE_CFG5_LRO_NORM_SCATTER_IPV6_EXTHDRS mBIT(15) -#define VXGE_HAL_RPE_CFG5_USE_CONCISE_ADAPTIVE_LRO_CQE mBIT(22) -#define VXGE_HAL_RPE_CFG5_USE_CONCISE_PRECONFIG_LRO_CQE mBIT(23) -/* 0x041c8 */ u64 wqeown0; -#define VXGE_HAL_WQEOWN0_RPE_LRO_CTR(val) vBIT(val, 13, 19) -#define VXGE_HAL_WQEOWN0_RPE_BS_CTR(val) vBIT(val, 45, 19) -/* 0x041d0 */ u64 wqeown1; -#define VXGE_HAL_WQEOWN1_RPE_IWARP_CTR(val) vBIT(val, 13, 19) -/* 0x041d8 */ u64 rpe_wqeown2; -#define VXGE_HAL_RPE_WQEOWN2_LRO_THRESHOLD(val) vBIT(val, 13, 19) -#define VXGE_HAL_RPE_WQEOWN2_BS_THRESHOLD(val) vBIT(val, 45, 19) - u8 unused04200[0x04200 - 0x041e0]; - -/* 0x04200 */ u64 pe_ctxt; -#define VXGE_HAL_PE_CTXT_SCC_TRIGGER_READ mBIT(7) -#define VXGE_HAL_PE_CTXT_S1_SIZE(val) vBIT(val, 10, 6) -#define VXGE_HAL_PE_CTXT_S2_SIZE(val) vBIT(val, 26, 6) -#define VXGE_HAL_PE_CTXT_S3_SIZE(val) vBIT(val, 42, 6) -#define VXGE_HAL_PE_CTXT_NP_XFER mBIT(55) -#define VXGE_HAL_PE_CTXT_NP_SPACER mBIT(63) -/* 0x04208 */ u64 pe_cfg; -#define VXGE_HAL_PE_CFG_RXPE_ECC_ENABLE_N mBIT(7) -#define VXGE_HAL_PE_CFG_TXPE_ECC_ENABLE_N mBIT(15) -#define VXGE_HAL_PE_CFG_DLM_ECC_ENABLE_N mBIT(23) -#define VXGE_HAL_PE_CFG_CDP_ECC_ENABLE_N mBIT(31) -#define VXGE_HAL_PE_CFG_PET_ECC_ENABLE_N mBIT(39) -#define VXGE_HAL_PE_CFG_MAX_RXB2B(val) vBIT(val, 56, 8) -/* 0x04210 */ u64 pe_stats_cmd; -#define VXGE_HAL_PE_STATS_CMD_GO mBIT(7) -#define VXGE_HAL_PE_STATS_CMD_SELECT_TXPE mBIT(15) -#define VXGE_HAL_PE_STATS_CMD_ADDRESS(val) vBIT(val, 21, 11) -/* 0x04218 */ u64 pe_stats_data; -#define VXGE_HAL_PE_STATS_DATA_PE_RETURNED(val) vBIT(val, 0, 64) -/* 0x04220 */ u64 rxpe_fp_mask; -#define VXGE_HAL_RXPE_FP_MASK_RXPE_FP_MASK(val) vBIT(val, 18, 46) -/* 0x04228 */ u64 rxpe_cfg; -#define VXGE_HAL_RXPE_CFG_FW_EXTEND_FP mBIT(7) -#define VXGE_HAL_RXPE_CFG_RETXK_SP_DONE mBIT(15) -/* 0x04230 */ u64 pe_xt_ctrl1; -#define VXGE_HAL_PE_XT_CTRL1_IRAM_ADDRESS(val) vBIT(val, 4, 12) -#define VXGE_HAL_PE_XT_CTRL1_ENABLE_GO_FOR_WR mBIT(23) -#define VXGE_HAL_PE_XT_CTRL1_IRAM_READ mBIT(27) -#define VXGE_HAL_PE_XT_CTRL1_TXP_IRAM_SEL mBIT(29) -#define VXGE_HAL_PE_XT_CTRL1_RXP0_IRAM_SEL mBIT(30) -#define VXGE_HAL_PE_XT_CTRL1_RXP1_IRAM_SEL mBIT(31) -#define VXGE_HAL_PE_XT_CTRL1_TXP_IRAM_ECC_ENABLE_N mBIT(37) -#define VXGE_HAL_PE_XT_CTRL1_RXP0_IRAM_ECC_ENABLE_N mBIT(38) -#define VXGE_HAL_PE_XT_CTRL1_RXP1_IRAM_ECC_ENABLE_N mBIT(39) -#define VXGE_HAL_PE_XT_CTRL1_TXP_DRAM_ECC_ENABLE_N mBIT(46) -#define VXGE_HAL_PE_XT_CTRL1_RXP_DRAM_ECC_ENABLE_N mBIT(47) -#define VXGE_HAL_PE_XT_CTRL1_TXP_RUNSTALL mBIT(53) -#define VXGE_HAL_PE_XT_CTRL1_RXP0_RUNSTALL mBIT(54) -#define VXGE_HAL_PE_XT_CTRL1_RXP1_RUNSTALL mBIT(55) -#define VXGE_HAL_PE_XT_CTRL1_TXP_BRESET mBIT(61) -#define VXGE_HAL_PE_XT_CTRL1_RXP0_BRESET mBIT(62) -#define VXGE_HAL_PE_XT_CTRL1_RXP1_BRESET mBIT(63) -/* 0x04238 */ u64 pe_xt_ctrl2; -#define VXGE_HAL_PE_XT_CTRL2_IRAM_WRITE_DATA(val) vBIT(val, 0, 64) -/* 0x04240 */ u64 pe_xt_ctrl3; -#define VXGE_HAL_PE_XT_CTRL3_GO mBIT(63) -/* 0x04248 */ u64 pe_xt_ctrl4; -#define VXGE_HAL_PE_XT_CTRL4_PE_IRAM_READ_DATA(val) vBIT(val, 0, 64) -/* 0x04250 */ u64 pet_iwarp_counters; -#define VXGE_HAL_PET_IWARP_COUNTERS_MASTER(val) vBIT(val, 0, 32) -#define VXGE_HAL_PET_IWARP_COUNTERS_INTERVAL(val) vBIT(val, 40, 24) -/* 0x04258 */ u64 pet_iwarp_slow_counter; -#define VXGE_HAL_PET_IWARP_SLOW_COUNTER_MASTER(val) vBIT(val, 0, 32) -/* 0x04260 */ u64 pet_iwarp_timers; -#define VXGE_HAL_PET_IWARP_TIMERS_TCP_NOW(val) vBIT(val, 0, 32) -#define VXGE_HAL_PET_IWARP_TIMERS_TCP_SLOW_CLK(val) vBIT(val, 32, 32) -/* 0x04268 */ u64 pet_lro_cfg; -#define VXGE_HAL_PET_LRO_CFG_START_VALUE(val) vBIT(val, 6, 2) -/* 0x04270 */ u64 pet_lro_counters; -#define VXGE_HAL_PET_LRO_COUNTERS_MASTER(val) vBIT(val, 0, 32) -#define VXGE_HAL_PET_LRO_COUNTERS_INTERVAL(val) vBIT(val, 40, 24) -/* 0x04278 */ u64 pet_timer_bp_ctrl; -#define VXGE_HAL_PET_TIMER_BP_CTRL_RD_XON mBIT(7) -#define VXGE_HAL_PET_TIMER_BP_CTRL_WR_XON mBIT(15) -#define VXGE_HAL_PET_TIMER_BP_CTRL_ROCRC_BYP mBIT(23) -#define VXGE_HAL_PET_TIMER_BP_CTRL_H2L_BYP mBIT(31) -/* 0x04280 */ u64 pe_vp_ack[17]; -#define VXGE_HAL_PE_VP_ACK_BLK_LIMIT(val) vBIT(val, 32, 32) -/* 0x04308 */ u64 pe_vp[17]; -#define VXGE_HAL_PE_VP_RIRR_BLK_LIMIT(val) vBIT(val, 0, 32) -#define VXGE_HAL_PE_VP_LIRR_BLK_LIMIT(val) vBIT(val, 32, 32) -/* 0x04390 */ u64 dlm_cfg; -#define VXGE_HAL_DLM_CFG_AWRQ_PHASE_ENABLE mBIT(7) -#define VXGE_HAL_DLM_CFG_ACK_PTR_AE_LEVEL(val) vBIT(val, 12, 4) -#define VXGE_HAL_DLM_CFG_LWRQ_PHASE_ENABLE mBIT(23) -#define VXGE_HAL_DLM_CFG_LIRR_PTR_AE_LEVEL(val) vBIT(val, 28, 4) -#define VXGE_HAL_DLM_CFG_RIRR_PTR_AE_LEVEL(val) vBIT(val, 44, 4) - u8 unused04400[0x04400 - 0x04398]; - -/* 0x04400 */ u64 txpe_towi_cfg; -#define VXGE_HAL_TXPE_TOWI_CFG_TOWI_CACHE_SIZE(val) vBIT(val, 48, 8) -#define VXGE_HAL_TXPE_TOWI_CFG_TOWI_DMA_THRESHOLD(val) vBIT(val, 56, 8) - u8 unused04410[0x04410 - 0x04408]; - -/* 0x04410 */ u64 txpe_pmon; -#define VXGE_HAL_TXPE_PMON_GO mBIT(15) -#define VXGE_HAL_TXPE_PMON_SAMPLE_PERIOD(val) vBIT(val, 16, 48) -/* 0x04418 */ u64 txpe_pmon_downcount; -#define VXGE_HAL_TXPE_PMON_DOWNCOUNT_TXPE_REMAINDER(val) vBIT(val, 16, 48) -/* 0x04420 */ u64 txpe_pmon_event; -#define VXGE_HAL_TXPE_PMON_EVENT_TXPE_STALL_CNT(val) vBIT(val, 16, 48) -/* 0x04428 */ u64 txpe_pmon_other; -#define VXGE_HAL_TXPE_PMON_OTHER_TXPE_STALL_CNT(val) vBIT(val, 16, 48) - u8 unused04500[0x04500 - 0x04430]; - -/* 0x04500 */ u64 oes_inevt; -#define VXGE_HAL_OES_INEVT_PRIORITY_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_OES_INEVT_PRIORITY_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_OES_INEVT_PRIORITY_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_OES_INEVT_PRIORITY_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_OES_INEVT_PRIORITY_4(val) vBIT(val, 37, 3) -#define VXGE_HAL_OES_INEVT_CFG_SP_WRR mBIT(63) -/* 0x04508 */ u64 oes_inbkbkevt; -#define VXGE_HAL_OES_INBKBKEVT_PRIORITY_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_OES_INBKBKEVT_PRIORITY_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_OES_INBKBKEVT_PRIORITY_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_OES_INBKBKEVT_PRIORITY_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_OES_INBKBKEVT_PRIORITY_4(val) vBIT(val, 37, 3) -/* 0x04510 */ u64 oes_inevt_wrr0; -#define VXGE_HAL_OES_INEVT_WRR0_SS_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_OES_INEVT_WRR0_SS_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_OES_INEVT_WRR0_SS_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_OES_INEVT_WRR0_SS_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_OES_INEVT_WRR0_SS_4(val) vBIT(val, 37, 3) -#define VXGE_HAL_OES_INEVT_WRR0_SS_5(val) vBIT(val, 45, 3) -#define VXGE_HAL_OES_INEVT_WRR0_SS_6(val) vBIT(val, 53, 3) -#define VXGE_HAL_OES_INEVT_WRR0_SS_7(val) vBIT(val, 61, 3) -/* 0x04518 */ u64 oes_inevt_wrr1; -#define VXGE_HAL_OES_INEVT_WRR1_SS_8(val) vBIT(val, 5, 3) -#define VXGE_HAL_OES_INEVT_WRR1_SS_9(val) vBIT(val, 13, 3) -#define VXGE_HAL_OES_INEVT_WRR1_SS_10(val) vBIT(val, 21, 3) -#define VXGE_HAL_OES_INEVT_WRR1_SS_11(val) vBIT(val, 29, 3) -#define VXGE_HAL_OES_INEVT_WRR1_SS_12(val) vBIT(val, 37, 3) -#define VXGE_HAL_OES_INEVT_WRR1_SS_13(val) vBIT(val, 45, 3) -#define VXGE_HAL_OES_INEVT_WRR1_SS_14(val) vBIT(val, 53, 3) -/* 0x04520 */ u64 oes_pendevt; -#define VXGE_HAL_OES_PENDEVT_PRIORITY_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_OES_PENDEVT_PRIORITY_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_OES_PENDEVT_PRIORITY_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_OES_PENDEVT_PRIORITY_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_OES_PENDEVT_PRIORITY_4(val) vBIT(val, 37, 3) -#define VXGE_HAL_OES_PENDEVT_CFG_SP_WRR mBIT(63) -/* 0x04528 */ u64 oes_pendbkbkevt; -#define VXGE_HAL_OES_PENDBKBKEVT_PRIORITY_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_OES_PENDBKBKEVT_PRIORITY_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_OES_PENDBKBKEVT_PRIORITY_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_OES_PENDBKBKEVT_PRIORITY_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_OES_PENDBKBKEVT_PRIORITY_4(val) vBIT(val, 37, 3) -/* 0x04530 */ u64 oes_pendevt_wrr0; -#define VXGE_HAL_OES_PENDEVT_WRR0_SS_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_OES_PENDEVT_WRR0_SS_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_OES_PENDEVT_WRR0_SS_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_OES_PENDEVT_WRR0_SS_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_OES_PENDEVT_WRR0_SS_4(val) vBIT(val, 37, 3) -#define VXGE_HAL_OES_PENDEVT_WRR0_SS_5(val) vBIT(val, 45, 3) -#define VXGE_HAL_OES_PENDEVT_WRR0_SS_6(val) vBIT(val, 53, 3) -#define VXGE_HAL_OES_PENDEVT_WRR0_SS_7(val) vBIT(val, 61, 3) -/* 0x04538 */ u64 oes_pendevt_wrr1; -#define VXGE_HAL_OES_PENDEVT_WRR1_SS_8(val) vBIT(val, 5, 3) -#define VXGE_HAL_OES_PENDEVT_WRR1_SS_9(val) vBIT(val, 13, 3) -#define VXGE_HAL_OES_PENDEVT_WRR1_SS_10(val) vBIT(val, 21, 3) -#define VXGE_HAL_OES_PENDEVT_WRR1_SS_11(val) vBIT(val, 29, 3) -#define VXGE_HAL_OES_PENDEVT_WRR1_SS_12(val) vBIT(val, 37, 3) -#define VXGE_HAL_OES_PENDEVT_WRR1_SS_13(val) vBIT(val, 45, 3) -#define VXGE_HAL_OES_PENDEVT_WRR1_SS_14(val) vBIT(val, 53, 3) -/* 0x04540 */ u64 oes_pend_queue; -#define VXGE_HAL_OES_PEND_QUEUE_RX_PEND_THRESHOLD(val) vBIT(val, 27, 5) -#define VXGE_HAL_OES_PEND_QUEUE_TX_PEND_THRESHOLD(val) vBIT(val, 57, 7) - u8 unused04800[0x04800 - 0x04548]; - -/* 0x04800 */ u64 rocrc_bypq0_stat_watermark; -#define VXGE_HAL_ROCRC_BYPQ0_STAT_WATERMARK_RCQ_ROCRC_BYPQ0_STAT_WATERMARK(val)\ - vBIT(val, 11, 22) -/* 0x04808 */ u64 rocrc_bypq1_stat_watermark; -#define VXGE_HAL_ROCRC_BYPQ1_STAT_WATERMARK_RCQ_ROCRC_BYPQ1_STAT_WATERMARK(val)\ - vBIT(val, 11, 22) -/* 0x04810 */ u64 rocrc_bypq2_stat_watermark; -#define VXGE_HAL_ROCRC_BYPQ2_STAT_WATERMARK_RCQ_ROCRC_BYPQ2_STAT_WATERMARK(val)\ - vBIT(val, 11, 22) -/* 0x04818 */ u64 noa_wct_ctrl; -#define VXGE_HAL_NOA_WCT_CTRL_VP_INT_NUM mBIT(0) -/* 0x04820 */ u64 rc_cfg2; -#define VXGE_HAL_RC_CFG2_BUFF1_SIZE(val) vBIT(val, 0, 16) -#define VXGE_HAL_RC_CFG2_BUFF2_SIZE(val) vBIT(val, 16, 16) -#define VXGE_HAL_RC_CFG2_BUFF3_SIZE(val) vBIT(val, 32, 16) -#define VXGE_HAL_RC_CFG2_BUFF4_SIZE(val) vBIT(val, 48, 16) -/* 0x04828 */ u64 rc_cfg3; -#define VXGE_HAL_RC_CFG3_BUFF5_SIZE(val) vBIT(val, 0, 16) -/* 0x04830 */ u64 rx_multi_cast_ctrl1; -#define VXGE_HAL_RX_MULTI_CAST_CTRL1_ENABLE mBIT(7) -#define VXGE_HAL_RX_MULTI_CAST_CTRL1_DELAY_COUNT(val) vBIT(val, 11, 5) -/* 0x04838 */ u64 rxdm_dbg_rd; -#define VXGE_HAL_RXDM_DBG_RD_ADDR(val) vBIT(val, 0, 12) -#define VXGE_HAL_RXDM_DBG_RD_ENABLE mBIT(31) -/* 0x04840 */ u64 rxdm_dbg_rd_data; -#define VXGE_HAL_RXDM_DBG_RD_DATA_RMC_RXDM_DBG_RD_DATA(val) vBIT(val, 0, 64) -/* 0x04848 */ u64 rqa_top_prty_for_vh[17]; -#define VXGE_HAL_RQA_TOP_PRTY_FOR_VH_RQA_TOP_PRTY_FOR_VH(val) vBIT(val, 59, 5) - u8 unused04900[0x04900 - 0x048d0]; - -/* 0x04900 */ u64 tim_status; -#define VXGE_HAL_TIM_STATUS_TIM_RESET_IN_PROGRESS mBIT(0) -/* 0x04908 */ u64 tim_ecc_enable; -#define VXGE_HAL_TIM_ECC_ENABLE_VBLS_N mBIT(7) -#define VXGE_HAL_TIM_ECC_ENABLE_BMAP_N mBIT(15) -#define VXGE_HAL_TIM_ECC_ENABLE_BMAP_MSG_N mBIT(23) -/* 0x04910 */ u64 tim_bp_ctrl; -#define VXGE_HAL_TIM_BP_CTRL_RD_XON mBIT(7) -#define VXGE_HAL_TIM_BP_CTRL_WR_XON mBIT(15) -#define VXGE_HAL_TIM_BP_CTRL_ROCRC_BYP mBIT(23) -/* 0x04918 */ u64 tim_resource_assignment_vh[17]; -#define VXGE_HAL_TIM_RESOURCE_ASSIGNMENT_VH_BMAP_ROOT(val) vBIT(val, 0, 32) -/* 0x049a0 */ u64 tim_bmap_mapping_vp_err[17]; -#define VXGE_HAL_TIM_BMAP_MAPPING_VP_ERR_TIM_DEST_VPATH(val) vBIT(val, 3, 5) - u8 unused04b00[0x04b00 - 0x04a28]; - -/* 0x04b00 */ u64 gcmg2_int_status; -#define VXGE_HAL_GCMG2_INT_STATUS_GXTMC_ERR_GXTMC_INT mBIT(7) -#define VXGE_HAL_GCMG2_INT_STATUS_GCP_ERR_GCP_INT mBIT(15) -#define VXGE_HAL_GCMG2_INT_STATUS_CMC_ERR_CMC_INT mBIT(23) -/* 0x04b08 */ u64 gcmg2_int_mask; -/* 0x04b10 */ u64 gxtmc_err_reg; -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_MEM_DB_ERR(val) vBIT(val, 0, 4) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_MEM_SG_ERR(val) vBIT(val, 4, 4) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CMC_RD_DATA_DB_ERR mBIT(8) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_REQ_FIFO_ERR mBIT(9) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_REQ_DATA_FIFO_ERR mBIT(10) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_WR_RSP_FIFO_ERR mBIT(11) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_RD_RSP_FIFO_ERR mBIT(12) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_WRP_FIFO_ERR mBIT(13) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_WRP_ERR mBIT(14) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_RRP_FIFO_ERR mBIT(15) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_RRP_ERR mBIT(16) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_DATA_SM_ERR mBIT(17) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_CMC0_IF_ERR mBIT(18) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_ARB_SM_ERR mBIT(19) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_CFC_SM_ERR mBIT(20) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_DFETCH_CREDIT_OVERFLOW mBIT(21) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_DFETCH_CREDIT_UNDERFLOW mBIT(22) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_DFETCH_SM_ERR mBIT(23) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_RCTRL_CREDIT_OVERFLOW mBIT(24) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_RCTRL_CREDIT_UNDERFLOW mBIT(25) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_RCTRL_SM_ERR mBIT(26) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_WCOMPL_SM_ERR mBIT(27) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_WCOMPL_TAG_ERR mBIT(28) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_WREQ_SM_ERR mBIT(29) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_WREQ_FIFO_ERR mBIT(30) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CP2BDT_RFIFO_POP_ERR mBIT(31) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_XTMC_BDT_CMI_OP_ERR mBIT(32) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_XTMC_BDT_DFETCH_OP_ERR mBIT(33) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_XTMC_BDT_DFIFO_ERR mBIT(34) -#define VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_ARB_SM_ERR mBIT(35) -/* 0x04b18 */ u64 gxtmc_err_mask; -/* 0x04b20 */ u64 gxtmc_err_alarm; -/* 0x04b28 */ u64 cmc_err_reg; -#define VXGE_HAL_CMC_ERR_REG_CMC_CMC_SM_ERR mBIT(0) -/* 0x04b30 */ u64 cmc_err_mask; -/* 0x04b38 */ u64 cmc_err_alarm; -/* 0x04b40 */ u64 gcp_err_reg; -#define VXGE_HAL_GCP_ERR_REG_CP_H2L2CP_FIFO_ERR mBIT(0) -#define VXGE_HAL_GCP_ERR_REG_CP_STC2CP_FIFO_ERR mBIT(1) -#define VXGE_HAL_GCP_ERR_REG_CP_STE2CP_FIFO_ERR mBIT(2) -#define VXGE_HAL_GCP_ERR_REG_CP_TTE2CP_FIFO_ERR mBIT(3) -/* 0x04b48 */ u64 gcp_err_mask; -/* 0x04b50 */ u64 gcp_err_alarm; -/* 0x04b58 */ u64 cmc_l2_client_uqm_1; -#define VXGE_HAL_CMC_L2_CLIENT_UQM_1_NUMBER(val) vBIT(val, 5, 3) -/* 0x04b60 */ u64 cmc_l2_client_ssc_l; -#define VXGE_HAL_CMC_L2_CLIENT_SSC_L_NUMBER(val) vBIT(val, 5, 3) -/* 0x04b68 */ u64 cmc_l2_client_qcc_sqm_0; -#define VXGE_HAL_CMC_L2_CLIENT_QCC_SQM_0_NUMBER(val) vBIT(val, 5, 3) -/* 0x04b70 */ u64 cmc_l2_client_dam_0; -#define VXGE_HAL_CMC_L2_CLIENT_DAM_0_NUMBER(val) vBIT(val, 5, 3) -/* 0x04b78 */ u64 cmc_l2_client_h2l_0; -#define VXGE_HAL_CMC_L2_CLIENT_H2L_0_NUMBER(val) vBIT(val, 5, 3) -/* 0x04b80 */ u64 cmc_l2_client_stc_0; -#define VXGE_HAL_CMC_L2_CLIENT_STC_0_NUMBER(val) vBIT(val, 5, 3) -/* 0x04b88 */ u64 cmc_l2_client_xtmc_0; -#define VXGE_HAL_CMC_L2_CLIENT_XTMC_0_NUMBER(val) vBIT(val, 5, 3) -/* 0x04b90 */ u64 cmc_wrr_l2_calendar_0; -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_0_NUMBER_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_0_NUMBER_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_0_NUMBER_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_0_NUMBER_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_0_NUMBER_4(val) vBIT(val, 37, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_0_NUMBER_5(val) vBIT(val, 45, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_0_NUMBER_6(val) vBIT(val, 53, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_0_NUMBER_7(val) vBIT(val, 61, 3) -/* 0x04b98 */ u64 cmc_wrr_l2_calendar_1; -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_1_NUMBER_8(val) vBIT(val, 5, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_1_NUMBER_9(val) vBIT(val, 13, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_1_NUMBER_10(val) vBIT(val, 21, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_1_NUMBER_11(val) vBIT(val, 29, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_1_NUMBER_12(val) vBIT(val, 37, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_1_NUMBER_13(val) vBIT(val, 45, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_1_NUMBER_14(val) vBIT(val, 53, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_1_NUMBER_15(val) vBIT(val, 61, 3) -/* 0x04ba0 */ u64 cmc_wrr_l2_calendar_2; -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_2_NUMBER_16(val) vBIT(val, 5, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_2_NUMBER_17(val) vBIT(val, 13, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_2_NUMBER_18(val) vBIT(val, 21, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_2_NUMBER_19(val) vBIT(val, 29, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_2_NUMBER_20(val) vBIT(val, 37, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_2_NUMBER_21(val) vBIT(val, 45, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_2_NUMBER_22(val) vBIT(val, 53, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_2_NUMBER_23(val) vBIT(val, 61, 3) -/* 0x04ba8 */ u64 cmc_wrr_l2_calendar_3; -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_3_NUMBER_24(val) vBIT(val, 5, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_3_NUMBER_25(val) vBIT(val, 13, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_3_NUMBER_26(val) vBIT(val, 21, 3) -#define VXGE_HAL_CMC_WRR_L2_CALENDAR_3_NUMBER_27(val) vBIT(val, 29, 3) -/* 0x04bb0 */ u64 cmc_l3_client_qcc_sqm_1; -#define VXGE_HAL_CMC_L3_CLIENT_QCC_SQM_1_NUMBER(val) vBIT(val, 5, 3) -/* 0x04bb8 */ u64 cmc_l3_client_qcc_cqm; -#define VXGE_HAL_CMC_L3_CLIENT_QCC_CQM_NUMBER(val) vBIT(val, 5, 3) -/* 0x04bc0 */ u64 cmc_l3_client_dam_1; -#define VXGE_HAL_CMC_L3_CLIENT_DAM_1_NUMBER(val) vBIT(val, 5, 3) -/* 0x04bc8 */ u64 cmc_l3_client_h2l_1; -#define VXGE_HAL_CMC_L3_CLIENT_H2L_1_NUMBER(val) vBIT(val, 5, 3) -/* 0x04bd0 */ u64 cmc_l3_client_stc_1; -#define VXGE_HAL_CMC_L3_CLIENT_STC_1_NUMBER(val) vBIT(val, 5, 3) -/* 0x04bd8 */ u64 cmc_l3_client_xtmc_1; -#define VXGE_HAL_CMC_L3_CLIENT_XTMC_1_NUMBER(val) vBIT(val, 5, 3) -/* 0x04be0 */ u64 cmc_wrr_l3_calendar_0; -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_0_NUMBER_0(val) vBIT(val, 5, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_0_NUMBER_1(val) vBIT(val, 13, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_0_NUMBER_2(val) vBIT(val, 21, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_0_NUMBER_3(val) vBIT(val, 29, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_0_NUMBER_4(val) vBIT(val, 37, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_0_NUMBER_5(val) vBIT(val, 45, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_0_NUMBER_6(val) vBIT(val, 53, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_0_NUMBER_7(val) vBIT(val, 61, 3) -/* 0x04be8 */ u64 cmc_wrr_l3_calendar_1; -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_1_NUMBER_8(val) vBIT(val, 5, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_1_NUMBER_9(val) vBIT(val, 13, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_1_NUMBER_10(val) vBIT(val, 21, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_1_NUMBER_11(val) vBIT(val, 29, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_1_NUMBER_12(val) vBIT(val, 37, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_1_NUMBER_13(val) vBIT(val, 45, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_1_NUMBER_14(val) vBIT(val, 53, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_1_NUMBER_15(val) vBIT(val, 61, 3) -/* 0x04bf0 */ u64 cmc_wrr_l3_calendar_2; -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_2_NUMBER_16(val) vBIT(val, 5, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_2_NUMBER_17(val) vBIT(val, 13, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_2_NUMBER_18(val) vBIT(val, 21, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_2_NUMBER_19(val) vBIT(val, 29, 3) -#define VXGE_HAL_CMC_WRR_L3_CALENDAR_2_NUMBER_20(val) vBIT(val, 37, 3) -/* 0x04bf8 */ u64 cmc_user_doorbell_partition; -#define VXGE_HAL_CMC_USER_DOORBELL_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04c00 */ u64 cmc_hit_record_partition_0; -#define VXGE_HAL_CMC_HIT_RECORD_PARTITION_0_BASE(val) vBIT(val, 8, 24) -/* 0x04c08 */ u64 cmc_hit_record_partition_1; -#define VXGE_HAL_CMC_HIT_RECORD_PARTITION_1_BASE(val) vBIT(val, 8, 24) -/* 0x04c10 */ u64 cmc_hit_record_partition_2; -#define VXGE_HAL_CMC_HIT_RECORD_PARTITION_2_BASE(val) vBIT(val, 8, 24) -/* 0x04c18 */ u64 cmc_hit_record_partition_3; -#define VXGE_HAL_CMC_HIT_RECORD_PARTITION_3_BASE(val) vBIT(val, 8, 24) -/* 0x04c20 */ u64 cmc_hit_record_partition_4; -#define VXGE_HAL_CMC_HIT_RECORD_PARTITION_4_BASE(val) vBIT(val, 8, 24) -/* 0x04c28 */ u64 cmc_hit_record_partition_5; -#define VXGE_HAL_CMC_HIT_RECORD_PARTITION_5_BASE(val) vBIT(val, 8, 24) -/* 0x04c30 */ u64 cmc_hit_record_partition_6; -#define VXGE_HAL_CMC_HIT_RECORD_PARTITION_6_BASE(val) vBIT(val, 8, 24) -/* 0x04c38 */ u64 cmc_hit_record_partition_7; -#define VXGE_HAL_CMC_HIT_RECORD_PARTITION_7_BASE(val) vBIT(val, 8, 24) -/* 0x04c40 */ u64 cmc_c_scr_record_partition_0; -#define VXGE_HAL_CMC_C_SCR_RECORD_PARTITION_0_BASE(val) vBIT(val, 8, 24) -/* 0x04c48 */ u64 cmc_c_scr_record_partition_1; -#define VXGE_HAL_CMC_C_SCR_RECORD_PARTITION_1_BASE(val) vBIT(val, 8, 24) -/* 0x04c50 */ u64 cmc_c_scr_record_partition_2; -#define VXGE_HAL_CMC_C_SCR_RECORD_PARTITION_2_BASE(val) vBIT(val, 8, 24) -/* 0x04c58 */ u64 cmc_c_scr_record_partition_3; -#define VXGE_HAL_CMC_C_SCR_RECORD_PARTITION_3_BASE(val) vBIT(val, 8, 24) -/* 0x04c60 */ u64 cmc_c_scr_record_partition_4; -#define VXGE_HAL_CMC_C_SCR_RECORD_PARTITION_4_BASE(val) vBIT(val, 8, 24) -/* 0x04c68 */ u64 cmc_c_scr_record_partition_5; -#define VXGE_HAL_CMC_C_SCR_RECORD_PARTITION_5_BASE(val) vBIT(val, 8, 24) -/* 0x04c70 */ u64 cmc_c_scr_record_partition_6; -#define VXGE_HAL_CMC_C_SCR_RECORD_PARTITION_6_BASE(val) vBIT(val, 8, 24) -/* 0x04c78 */ u64 cmc_c_scr_record_partition_7; -#define VXGE_HAL_CMC_C_SCR_RECORD_PARTITION_7_BASE(val) vBIT(val, 8, 24) -/* 0x04c80 */ u64 cmc_wqe_od_group_record_partition; -#define VXGE_HAL_CMC_WQE_OD_GROUP_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04c88 */ u64 cmc_ack_record_partition; -#define VXGE_HAL_CMC_ACK_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04c90 */ u64 cmc_lirr_record_partition; -#define VXGE_HAL_CMC_LIRR_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04c98 */ u64 cmc_rirr_record_partition; -#define VXGE_HAL_CMC_RIRR_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04ca0 */ u64 cmc_tce_record_partition; -#define VXGE_HAL_CMC_TCE_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04ca8 */ u64 cmc_hoq_record_partition; -#define VXGE_HAL_CMC_HOQ_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04cb0 */ u64 cmc_stag_vp_record_partition[17]; -#define VXGE_HAL_CMC_STAG_VP_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d38 */ u64 cmc_r_scr_record_partition; -#define VXGE_HAL_CMC_R_SCR_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d40 */ u64 cmc_cqrq_context_record_partition; -#define VXGE_HAL_CMC_CQRQ_CONTEXT_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d48 */ u64 cmc_cqe_group_record_partition; -#define VXGE_HAL_CMC_CQE_GROUP_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d50 */ u64 cmc_p_scr_record_partition; -#define VXGE_HAL_CMC_P_SCR_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d58 */ u64 cmc_nce_context_record_partition; -#define VXGE_HAL_CMC_NCE_CONTEXT_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d60 */ u64 cmc_bypass_queue_partition; -#define VXGE_HAL_CMC_BYPASS_QUEUE_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d68 */ u64 cmc_h_scr_record_partition; -#define VXGE_HAL_CMC_H_SCR_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d70 */ u64 cmc_pbl_record_partition; -#define VXGE_HAL_CMC_PBL_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d78 */ u64 cmc_lit_record_partition; -#define VXGE_HAL_CMC_LIT_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d80 */ u64 cmc_srq_context_record_partition; -#define VXGE_HAL_CMC_SRQ_CONTEXT_RECORD_PARTITION_BASE(val) vBIT(val, 8, 24) -/* 0x04d88 */ u64 cmc_p_scr_record; -#define VXGE_HAL_CMC_P_SCR_RECORD_SIZE(val) vBIT(val, 2, 6) -/* 0x04d90 */ u64 cmc_device_select; -#define VXGE_HAL_CMC_DEVICE_SELECT_CODE(val) vBIT(val, 5, 3) -/* 0x04d98 */ u64 g3if_fifo_dst_ecc; -#define VXGE_HAL_G3IF_FIFO_DST_ECC_ENABLE(val) vBIT(val, 3, 5) -/* 0x04da0 */ u64 gxtmc_cfg; -#define VXGE_HAL_GXTMC_CFG_CMC_PRI mBIT(7) -#define VXGE_HAL_GXTMC_CFG_GPSYNC_WAIT_TOKEN_ENABLE mBIT(13) -#define VXGE_HAL_GXTMC_CFG_GPSYNC_CNTDOWN_TIMER_ENABLE mBIT(14) -#define VXGE_HAL_GXTMC_CFG_GPSYNC_SRC_NOTIFY_ENABLE mBIT(15) -#define VXGE_HAL_GXTMC_CFG_GPSYNC_CNTDOWN_START_VALUE(val) vBIT(val, 20, 4) -#define VXGE_HAL_GXTMC_CFG_BDT_MEM_ECC_ENABLE_N mBIT(31) - u8 unused04f00[0x04f00 - 0x04da8]; - -/* 0x04f00 */ u64 pcmg2_int_status; -#define VXGE_HAL_PCMG2_INT_STATUS_PXTMC_ERR_PXTMC_INT mBIT(7) -#define VXGE_HAL_PCMG2_INT_STATUS_CP_EXC_CP_XT_EXC_INT mBIT(15) -#define VXGE_HAL_PCMG2_INT_STATUS_CP_ERR_CP_ERR_INT mBIT(23) -/* 0x04f08 */ u64 pcmg2_int_mask; -/* 0x04f10 */ u64 pxtmc_err_reg; -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_XT_PIF_SRAM_DB_ERR(val) vBIT(val, 0, 2) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_REQ_FIFO_ERR mBIT(2) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_PRSP_FIFO_ERR mBIT(3) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_WRSP_FIFO_ERR mBIT(4) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_REQ_FIFO_ERR mBIT(5) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_PRSP_FIFO_ERR mBIT(6) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_WRSP_FIFO_ERR mBIT(7) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_REQ_FIFO_ERR mBIT(8) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_PRSP_FIFO_ERR mBIT(9) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_WRSP_FIFO_ERR mBIT(10) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_REQ_FIFO_ERR mBIT(11) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_REQ_DATA_FIFO_ERR mBIT(12) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_WR_RSP_FIFO_ERR mBIT(13) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_RD_RSP_FIFO_ERR mBIT(14) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_REQ_SHADOW_ERR mBIT(15) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_RSP_SHADOW_ERR mBIT(16) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_REQ_SHADOW_ERR mBIT(17) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_RSP_SHADOW_ERR mBIT(18) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_REQ_SHADOW_ERR mBIT(19) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_RSP_SHADOW_ERR mBIT(20) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_XIL_SHADOW_ERR mBIT(21) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_ARB_SHADOW_ERR mBIT(22) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_RAM_SHADOW_ERR mBIT(23) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CMW_SHADOW_ERR mBIT(24) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CMR_SHADOW_ERR mBIT(25) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_REQ_FSM_ERR mBIT(26) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_RSP_FSM_ERR mBIT(27) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_REQ_FSM_ERR mBIT(28) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_RSP_FSM_ERR mBIT(29) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_REQ_FSM_ERR mBIT(30) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_RSP_FSM_ERR mBIT(31) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_XIL_FSM_ERR mBIT(32) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_ARB_FSM_ERR mBIT(33) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CMW_FSM_ERR mBIT(34) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CMR_FSM_ERR mBIT(35) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_RD_PROT_ERR mBIT(36) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_RD_PROT_ERR mBIT(37) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_RD_PROT_ERR mBIT(38) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_WR_PROT_ERR mBIT(39) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_WR_PROT_ERR mBIT(40) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_WR_PROT_ERR mBIT(41) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_INV_ADDR_ERR mBIT(42) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_INV_ADDR_ERR mBIT(43) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_INV_ADDR_ERR mBIT(44) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_RD_PROT_INFO_ERR mBIT(45) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_RD_PROT_INFO_ERR mBIT(46) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_RD_PROT_INFO_ERR mBIT(47) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_WR_PROT_INFO_ERR mBIT(48) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_WR_PROT_INFO_ERR mBIT(49) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_WR_PROT_INFO_ERR mBIT(50) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_INV_ADDR_INFO_ERR mBIT(51) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_INV_ADDR_INFO_ERR mBIT(52) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_INV_ADDR_INFO_ERR mBIT(53) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_XT_PIF_SRAM_SG_ERR(val) vBIT(val, 54, 2) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CP2BDT_DFIFO_PUSH_ERR mBIT(56) -#define VXGE_HAL_PXTMC_ERR_REG_XTMC_CP2BDT_RFIFO_PUSH_ERR mBIT(57) -/* 0x04f18 */ u64 pxtmc_err_mask; -/* 0x04f20 */ u64 pxtmc_err_alarm; -/* 0x04f28 */ u64 cp_err_reg; -#define VXGE_HAL_CP_ERR_REG_CP_CP_DCACHE_SG_ERR(val) vBIT(val, 0, 8) -#define VXGE_HAL_CP_ERR_REG_CP_CP_ICACHE_SG_ERR(val) vBIT(val, 8, 2) -#define VXGE_HAL_CP_ERR_REG_CP_CP_DTAG_SG_ERR mBIT(10) -#define VXGE_HAL_CP_ERR_REG_CP_CP_ITAG_SG_ERR mBIT(11) -#define VXGE_HAL_CP_ERR_REG_CP_CP_TRACE_SG_ERR mBIT(12) -#define VXGE_HAL_CP_ERR_REG_CP_DMA2CP_SG_ERR mBIT(13) -#define VXGE_HAL_CP_ERR_REG_CP_MP2CP_SG_ERR mBIT(14) -#define VXGE_HAL_CP_ERR_REG_CP_QCC2CP_SG_ERR mBIT(15) -#define VXGE_HAL_CP_ERR_REG_CP_STC2CP_SG_ERR(val) vBIT(val, 16, 2) -#define VXGE_HAL_CP_ERR_REG_CP_CP_DCACHE_DB_ERR(val) vBIT(val, 24, 8) -#define VXGE_HAL_CP_ERR_REG_CP_CP_ICACHE_DB_ERR(val) vBIT(val, 32, 2) -#define VXGE_HAL_CP_ERR_REG_CP_CP_DTAG_DB_ERR mBIT(34) -#define VXGE_HAL_CP_ERR_REG_CP_CP_ITAG_DB_ERR mBIT(35) -#define VXGE_HAL_CP_ERR_REG_CP_CP_TRACE_DB_ERR mBIT(36) -#define VXGE_HAL_CP_ERR_REG_CP_DMA2CP_DB_ERR mBIT(37) -#define VXGE_HAL_CP_ERR_REG_CP_MP2CP_DB_ERR mBIT(38) -#define VXGE_HAL_CP_ERR_REG_CP_QCC2CP_DB_ERR mBIT(39) -#define VXGE_HAL_CP_ERR_REG_CP_STC2CP_DB_ERR(val) vBIT(val, 40, 2) -#define VXGE_HAL_CP_ERR_REG_CP_H2L2CP_FIFO_ERR mBIT(48) -#define VXGE_HAL_CP_ERR_REG_CP_STC2CP_FIFO_ERR mBIT(49) -#define VXGE_HAL_CP_ERR_REG_CP_STE2CP_FIFO_ERR mBIT(50) -#define VXGE_HAL_CP_ERR_REG_CP_TTE2CP_FIFO_ERR mBIT(51) -#define VXGE_HAL_CP_ERR_REG_CP_SWIF2CP_FIFO_ERR mBIT(52) -#define VXGE_HAL_CP_ERR_REG_CP_CP2DMA_FIFO_ERR mBIT(53) -#define VXGE_HAL_CP_ERR_REG_CP_DAM2CP_FIFO_ERR mBIT(54) -#define VXGE_HAL_CP_ERR_REG_CP_MP2CP_FIFO_ERR mBIT(55) -#define VXGE_HAL_CP_ERR_REG_CP_QCC2CP_FIFO_ERR mBIT(56) -#define VXGE_HAL_CP_ERR_REG_CP_DMA2CP_FIFO_ERR mBIT(57) -#define VXGE_HAL_CP_ERR_REG_CP_CP_WAKE_FSM_INTEGRITY_ERR mBIT(60) -#define VXGE_HAL_CP_ERR_REG_CP_CP_PMON_FSM_INTEGRITY_ERR mBIT(61) -#define VXGE_HAL_CP_ERR_REG_CP_DMA_RD_SHADOW_ERR mBIT(62) -#define VXGE_HAL_CP_ERR_REG_CP_PIFT_CREDIT_ERR mBIT(63) -/* 0x04f30 */ u64 cp_err_mask; -/* 0x04f38 */ u64 cp_err_alarm; -/* 0x04f40 */ u64 cp_xt_ctrl1; -#define VXGE_HAL_CP_XT_CTRL1_CP_WAKEUP mBIT(47) -#define VXGE_HAL_CP_XT_CTRL1_CP_RUNSTALL mBIT(55) -#define VXGE_HAL_CP_XT_CTRL1_CP_BRESET mBIT(63) -/* 0x04f48 */ u64 cp_gen_cfg; -#define VXGE_HAL_CP_GEN_CFG_MULT_DMA_RD_REQ_ENA mBIT(7) -#define VXGE_HAL_CP_GEN_CFG_DMA_RD_PER_VPLANE_CHK_ENA mBIT(15) -#define VXGE_HAL_CP_GEN_CFG_DMA_RD_XON_CHK_ENA mBIT(23) -#define VXGE_HAL_CP_GEN_CFG_CAUSE_INT_IS_CRITICAL mBIT(31) -/* 0x04f50 */ u64 cp_exc_reg; -#define VXGE_HAL_CP_EXC_REG_CP_CP_CAUSE_INFO_INT mBIT(47) -#define VXGE_HAL_CP_EXC_REG_CP_CP_CAUSE_CRIT_INT mBIT(55) -#define VXGE_HAL_CP_EXC_REG_CP_CP_SERR mBIT(63) -/* 0x04f58 */ u64 cp_exc_mask; -/* 0x04f60 */ u64 cp_exc_alarm; -/* 0x04f68 */ u64 cp_exc_cause; -#define VXGE_HAL_CP_EXC_CAUSE_CP_CP_CAUSE(val) vBIT(val, 32, 32) - u8 unused04fe8[0x04fe8 - 0x04f70]; - -/* 0x04fe8 */ u64 xtmc_img_ctrl0; -#define VXGE_HAL_XTMC_IMG_CTRL0_LD_BANK_DEPTH(val) vBIT(val, 5, 3) -#define VXGE_HAL_XTMC_IMG_CTRL0_ENABLE_GO mBIT(15) -#define VXGE_HAL_XTMC_IMG_CTRL0_IMG_LD_COMPLETE mBIT(23) -#define VXGE_HAL_XTMC_IMG_CTRL0_LAST_DATA mBIT(31) -#define VXGE_HAL_XTMC_IMG_CTRL0_ADDR(val) vBIT(val, 40, 24) -/* 0x04ff0 */ u64 xtmc_img_ctrl1; -#define VXGE_HAL_XTMC_IMG_CTRL1_DATA(val) vBIT(val, 0, 64) -/* 0x04ff8 */ u64 xtmc_img_ctrl2; -#define VXGE_HAL_XTMC_IMG_CTRL2_XTMC_LD_BANK_AVAIL mBIT(63) -/* 0x05000 */ u64 xtmc_img_ctrl3; -#define VXGE_HAL_XTMC_IMG_CTRL3_XTMC_ALL_DATA_WRITTEN mBIT(63) -/* 0x05008 */ u64 xtmc_img_ctrl4; -#define VXGE_HAL_XTMC_IMG_CTRL4_GO mBIT(63) -/* 0x05010 */ u64 pxtmc_cfg0; -#define VXGE_HAL_PXTMC_CFG0_XT_PIF_SRAM_ECC_ENABLE_N mBIT(3) -#define VXGE_HAL_PXTMC_CFG0_XT_PIF_SRAM_PHASE_ENA mBIT(7) -#define VXGE_HAL_PXTMC_CFG0_MXP_RD_PROT_ENA mBIT(11) -#define VXGE_HAL_PXTMC_CFG0_MXP_WR_PROT_ENA mBIT(15) -#define VXGE_HAL_PXTMC_CFG0_UXP_RD_PROT_ENA mBIT(19) -#define VXGE_HAL_PXTMC_CFG0_UXP_WR_PROT_ENA mBIT(23) -#define VXGE_HAL_PXTMC_CFG0_CXP_RD_PROT_ENA mBIT(27) -#define VXGE_HAL_PXTMC_CFG0_CXP_WR_PROT_ENA mBIT(31) -#define VXGE_HAL_PXTMC_CFG0_INVALID_ADDR_CHECK_ENA mBIT(39) -#define VXGE_HAL_PXTMC_CFG0_SUPPRESS_RD_ON_ADDR_ERR mBIT(43) -#define VXGE_HAL_PXTMC_CFG0_SUPPRESS_WR_ON_ADDR_ERR mBIT(47) -#define VXGE_HAL_PXTMC_CFG0_ARB_DURING_4BYTE_WR_ENA mBIT(55) -/* 0x05018 */ u64 pxtmc_cfg1; -#define VXGE_HAL_PXTMC_CFG1_MAX_NBR_MXP_EVENTS(val) vBIT(val, 6, 2) -#define VXGE_HAL_PXTMC_CFG1_MAX_NBR_UXP_EVENTS(val) vBIT(val, 14, 2) -#define VXGE_HAL_PXTMC_CFG1_MAX_NBR_CXP_EVENTS(val) vBIT(val, 22, 2) -#define VXGE_HAL_PXTMC_CFG1_PGSYNC_WAIT_TOKEN_ENABLE mBIT(29) -#define VXGE_HAL_PXTMC_CFG1_PGSYNC_CNTDOWN_TIMER_ENABLE mBIT(30) -#define VXGE_HAL_PXTMC_CFG1_PGSYNC_SRC_NOTIFY_ENABLE mBIT(31) -#define VXGE_HAL_PXTMC_CFG1_PGSYNC_CNTDOWN_START_VALUE(val) vBIT(val, 36, 4) -/* 0x05020 */ u64 xtmc_mem_cfg; -#define VXGE_HAL_XTMC_MEM_CFG_CTXT_MEM_SPARSE_BASE(val) vBIT(val, 5, 3) -#define VXGE_HAL_XTMC_MEM_CFG_CTXT_MEM_PACKED_BASE(val) vBIT(val, 13, 3) -#define VXGE_HAL_XTMC_MEM_CFG_SHARED_SRAM_BASE(val) vBIT(val, 21, 3) -#define VXGE_HAL_XTMC_MEM_CFG_CTXT_MEM_SIZE(val) vBIT(val, 29, 3) -#define VXGE_HAL_XTMC_MEM_CFG_SRAM_SPARSE_BASE_ADDR(val) vBIT(val, 32, 16) -#define VXGE_HAL_XTMC_MEM_CFG_SRAM_PACKED_BASE_ADDR(val) vBIT(val, 48, 16) -/* 0x05028 */ u64 xtmc_mem_bypass_cfg; -#define VXGE_HAL_XTMC_MEM_BYPASS_CFG_CTXT_MEM_SPARSE_BASE(val) vBIT(val, 5, 3) -#define VXGE_HAL_XTMC_MEM_BYPASS_CFG_CTXT_MEM_PACKED_BASE(val) vBIT(val, 13, 3) -#define VXGE_HAL_XTMC_MEM_BYPASS_CFG_SHARED_SRAM_BASE(val) vBIT(val, 21, 3) -/* 0x05030 */ u64 xtmc_cxp_region0; -#define VXGE_HAL_XTMC_CXP_REGION0_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_CXP_REGION0_END_ADDR(val) vBIT(val, 32, 32) -/* 0x05038 */ u64 xtmc_mxp_region0; -#define VXGE_HAL_XTMC_MXP_REGION0_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_MXP_REGION0_END_ADDR(val) vBIT(val, 32, 32) -/* 0x05040 */ u64 xtmc_uxp_region0; -#define VXGE_HAL_XTMC_UXP_REGION0_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_UXP_REGION0_END_ADDR(val) vBIT(val, 32, 32) -/* 0x05048 */ u64 xtmc_cxp_region1; -#define VXGE_HAL_XTMC_CXP_REGION1_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_CXP_REGION1_END_ADDR(val) vBIT(val, 32, 32) -/* 0x05050 */ u64 xtmc_mxp_region1; -#define VXGE_HAL_XTMC_MXP_REGION1_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_MXP_REGION1_END_ADDR(val) vBIT(val, 32, 32) -/* 0x05058 */ u64 xtmc_uxp_region1; -#define VXGE_HAL_XTMC_UXP_REGION1_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_UXP_REGION1_END_ADDR(val) vBIT(val, 32, 32) -/* 0x05060 */ u64 xtmc_cxp_region2; -#define VXGE_HAL_XTMC_CXP_REGION2_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_CXP_REGION2_END_ADDR(val) vBIT(val, 32, 32) -/* 0x05068 */ u64 xtmc_mxp_region2; -#define VXGE_HAL_XTMC_MXP_REGION2_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_MXP_REGION2_END_ADDR(val) vBIT(val, 32, 32) -/* 0x05070 */ u64 xtmc_uxp_region2; -#define VXGE_HAL_XTMC_UXP_REGION2_START_ADDR(val) vBIT(val, 0, 32) -#define VXGE_HAL_XTMC_UXP_REGION2_END_ADDR(val) vBIT(val, 32, 32) - u8 unused05200[0x05200 - 0x05078]; - -/* 0x05200 */ u64 msg_int_status; -#define VXGE_HAL_MSG_INT_STATUS_TIM_ERR_TIM_INT mBIT(7) -#define VXGE_HAL_MSG_INT_STATUS_MSG_EXC_MSG_XT_EXC_INT mBIT(60) -#define VXGE_HAL_MSG_INT_STATUS_MSG_ERR3_MSG_ERR3_INT mBIT(61) -#define VXGE_HAL_MSG_INT_STATUS_MSG_ERR2_MSG_ERR2_INT mBIT(62) -#define VXGE_HAL_MSG_INT_STATUS_MSG_ERR_MSG_ERR_INT mBIT(63) -/* 0x05208 */ u64 msg_int_mask; -/* 0x05210 */ u64 tim_err_reg; -#define VXGE_HAL_TIM_ERR_REG_TIM_VBLS_SG_ERR mBIT(4) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_PA_SG_ERR mBIT(5) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_PB_SG_ERR mBIT(6) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_MSG_SG_ERR mBIT(7) -#define VXGE_HAL_TIM_ERR_REG_TIM_VBLS_DB_ERR mBIT(12) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_PA_DB_ERR mBIT(13) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_PB_DB_ERR mBIT(14) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_MSG_DB_ERR mBIT(15) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_MEM_CNTRL_SM_ERR mBIT(18) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_MSG_MEM_CNTRL_SM_ERR mBIT(19) -#define VXGE_HAL_TIM_ERR_REG_TIM_MPIF_PCIWR_ERR mBIT(20) -#define VXGE_HAL_TIM_ERR_REG_TIM_ROCRC_BMAP_UPDT_FIFO_ERR mBIT(22) -#define VXGE_HAL_TIM_ERR_REG_TIM_CREATE_BMAPMSG_FIFO_ERR mBIT(23) -#define VXGE_HAL_TIM_ERR_REG_TIM_ROCRCIF_MISMATCH mBIT(46) -#define VXGE_HAL_TIM_ERR_REG_TIM_BMAP_MAPPING_VP_ERR(n) mBIT(n) -/* 0x05218 */ u64 tim_err_mask; -/* 0x05220 */ u64 tim_err_alarm; -/* 0x05228 */ u64 msg_err_reg; -#define VXGE_HAL_MSG_ERR_REG_UP_UXP_WAKE_FSM_INTEGRITY_ERR mBIT(0) -#define VXGE_HAL_MSG_ERR_REG_MP_MXP_WAKE_FSM_INTEGRITY_ERR mBIT(1) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_DMA_READ_CMD_FSM_INTEGRITY_ERR mBIT(2) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_DMA_RESP_FSM_INTEGRITY_ERR mBIT(3) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_OWN_FSM_INTEGRITY_ERR mBIT(4) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_PDA_ACC_FSM_INTEGRITY_ERR mBIT(5) -#define VXGE_HAL_MSG_ERR_REG_MP_MXP_PMON_FSM_INTEGRITY_ERR mBIT(6) -#define VXGE_HAL_MSG_ERR_REG_UP_UXP_PMON_FSM_INTEGRITY_ERR mBIT(7) -#define VXGE_HAL_MSG_ERR_REG_UP_UXP_DTAG_SG_ERR mBIT(8) -#define VXGE_HAL_MSG_ERR_REG_UP_UXP_ITAG_SG_ERR mBIT(10) -#define VXGE_HAL_MSG_ERR_REG_MP_MXP_DTAG_SG_ERR mBIT(12) -#define VXGE_HAL_MSG_ERR_REG_MP_MXP_ITAG_SG_ERR mBIT(14) -#define VXGE_HAL_MSG_ERR_REG_UP_UXP_TRACE_SG_ERR mBIT(16) -#define VXGE_HAL_MSG_ERR_REG_MP_MXP_TRACE_SG_ERR mBIT(17) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_CMG2MSG_SG_ERR mBIT(18) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_TXPE2MSG_SG_ERR mBIT(19) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_RXPE2MSG_SG_ERR mBIT(20) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_RPE2MSG_SG_ERR mBIT(21) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_UMQ_SG_ERR mBIT(26) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_BWR_PF_SG_ERR mBIT(27) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_ECC_SG_ERR mBIT(29) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMA_RESP_ECC_SG_ERR mBIT(31) -#define VXGE_HAL_MSG_ERR_REG_MSG_XFMDQRY_FSM_INTEGRITY_ERR mBIT(33) -#define VXGE_HAL_MSG_ERR_REG_MSG_FRMQRY_FSM_INTEGRITY_ERR mBIT(34) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_UMQ_WRITE_FSM_INTEGRITY_ERR mBIT(35) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_UMQ_BWR_PF_FSM_INTEGRITY_ERR mBIT(36) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_REG_RESP_FIFO_ERR mBIT(38) -#define VXGE_HAL_MSG_ERR_REG_UP_UXP_DTAG_DB_ERR mBIT(39) -#define VXGE_HAL_MSG_ERR_REG_UP_UXP_ITAG_DB_ERR mBIT(41) -#define VXGE_HAL_MSG_ERR_REG_MP_MXP_DTAG_DB_ERR mBIT(43) -#define VXGE_HAL_MSG_ERR_REG_MP_MXP_ITAG_DB_ERR mBIT(45) -#define VXGE_HAL_MSG_ERR_REG_UP_UXP_TRACE_DB_ERR mBIT(47) -#define VXGE_HAL_MSG_ERR_REG_MP_MXP_TRACE_DB_ERR mBIT(48) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_CMG2MSG_DB_ERR mBIT(49) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_TXPE2MSG_DB_ERR mBIT(50) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_RXPE2MSG_DB_ERR mBIT(51) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_RPE2MSG_DB_ERR mBIT(52) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_REG_READ_FIFO_ERR mBIT(53) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_MXP2UXP_FIFO_ERR mBIT(54) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_KDFC_SIF_FIFO_ERR mBIT(55) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_CXP2SWIF_FIFO_ERR mBIT(56) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_UMQ_DB_ERR mBIT(57) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_BWR_PF_DB_ERR mBIT(58) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_BWR_SIF_FIFO_ERR mBIT(59) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_ECC_DB_ERR mBIT(60) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMA_READ_FIFO_ERR mBIT(61) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMA_RESP_ECC_DB_ERR mBIT(62) -#define VXGE_HAL_MSG_ERR_REG_MSG_QUE_UXP2MXP_FIFO_ERR mBIT(63) -/* 0x05230 */ u64 msg_err_mask; -/* 0x05238 */ u64 msg_err_alarm; -/* 0x05240 */ u64 msg_xt_ctrl; -#define VXGE_HAL_MSG_XT_CTRL_MXP_CAUSE_INT_IS_CRITICAL mBIT(35) -#define VXGE_HAL_MSG_XT_CTRL_UXP_CAUSE_INT_IS_CRITICAL mBIT(39) -#define VXGE_HAL_MSG_XT_CTRL_MXP_WAKEUP mBIT(46) -#define VXGE_HAL_MSG_XT_CTRL_UXP_WAKEUP mBIT(47) -#define VXGE_HAL_MSG_XT_CTRL_MXP_RUNSTALL mBIT(54) -#define VXGE_HAL_MSG_XT_CTRL_UXP_RUNSTALL mBIT(55) -#define VXGE_HAL_MSG_XT_CTRL_MXP_BRESET mBIT(62) -#define VXGE_HAL_MSG_XT_CTRL_UXP_BRESET mBIT(63) - u8 unused052a8[0x052a8 - 0x05248]; - -/* 0x052a8 */ u64 msg_dispatch; -#define VXGE_HAL_MSG_DISPATCH_MESS_TYPE_ENABLE mBIT(55) -#define VXGE_HAL_MSG_DISPATCH_VPATH_CUTOFF(val) vBIT(val, 59, 5) - u8 unused05340[0x05340 - 0x052b0]; - -/* 0x05340 */ u64 msg_exc_reg; -#define VXGE_HAL_MSG_EXC_REG_MP_MXP_CAUSE_INFO_INT mBIT(50) -#define VXGE_HAL_MSG_EXC_REG_MP_MXP_CAUSE_CRIT_INT mBIT(51) -#define VXGE_HAL_MSG_EXC_REG_UP_UXP_CAUSE_INFO_INT mBIT(54) -#define VXGE_HAL_MSG_EXC_REG_UP_UXP_CAUSE_CRIT_INT mBIT(55) -#define VXGE_HAL_MSG_EXC_REG_MP_MXP_SERR mBIT(62) -#define VXGE_HAL_MSG_EXC_REG_UP_UXP_SERR mBIT(63) -/* 0x05348 */ u64 msg_exc_mask; -/* 0x05350 */ u64 msg_exc_alarm; -/* 0x05358 */ u64 msg_exc_cause; -#define VXGE_HAL_MSG_EXC_CAUSE_MP_MXP(val) vBIT(val, 0, 32) -#define VXGE_HAL_MSG_EXC_CAUSE_UP_UXP(val) vBIT(val, 32, 32) - u8 unused05368[0x05368 - 0x05360]; - -/* 0x05368 */ u64 msg_direct_pic; -#define VXGE_HAL_MSG_DIRECT_PIC_PIPELINE_EN mBIT(55) -#define VXGE_HAL_MSG_DIRECT_PIC_UMQ_WRITE_ENABLE mBIT(56) -#define VXGE_HAL_MSG_DIRECT_PIC_UMQ_VPA(val) vBIT(val, 59, 5) -/* 0x05370 */ u64 umq_ir_test_vpa; -#define VXGE_HAL_UMQ_IR_TEST_VPA_NUMBER(val) vBIT(val, 0, 5) -/* 0x05378 */ u64 umq_ir_test_byte; -#define VXGE_HAL_UMQ_IR_TEST_BYTE_VALUE_START(val) vBIT(val, 0, 32) -/* 0x05380 */ u64 msg_err2_reg; -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_CMG2MSG_DISPATCH_FSM_INTEGRITY_ERR mBIT(0) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_DMQ_DISPATCH_FSM_INTEGRITY_ERR mBIT(1) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_SWIF_DISPATCH_FSM_INTEGRITY_ERR mBIT(2) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_PIC_WRITE_FSM_INTEGRITY_ERR mBIT(3) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_SWIFREG_FSM_INTEGRITY_ERR mBIT(4) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_TIM_WRITE_FSM_INTEGRITY_ERR mBIT(5) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_UMQ_TA_FSM_INTEGRITY_ERR mBIT(6) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_TXPE_TA_FSM_INTEGRITY_ERR mBIT(7) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_RXPE_TA_FSM_INTEGRITY_ERR mBIT(8) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_SWIF_TA_FSM_INTEGRITY_ERR mBIT(9) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_DMA_TA_FSM_INTEGRITY_ERR mBIT(10) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_CP_TA_FSM_INTEGRITY_ERR mBIT(11) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA16_FSM_INTEGRITY_ERR\ - mBIT(12) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA15_FSM_INTEGRITY_ERR\ - mBIT(13) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA14_FSM_INTEGRITY_ERR\ - mBIT(14) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA13_FSM_INTEGRITY_ERR\ - mBIT(15) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA12_FSM_INTEGRITY_ERR\ - mBIT(16) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA11_FSM_INTEGRITY_ERR\ - mBIT(17) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA10_FSM_INTEGRITY_ERR\ - mBIT(18) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA9_FSM_INTEGRITY_ERR mBIT(19) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA8_FSM_INTEGRITY_ERR mBIT(20) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA7_FSM_INTEGRITY_ERR mBIT(21) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA6_FSM_INTEGRITY_ERR mBIT(22) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA5_FSM_INTEGRITY_ERR mBIT(23) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA4_FSM_INTEGRITY_ERR mBIT(24) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA3_FSM_INTEGRITY_ERR mBIT(25) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA2_FSM_INTEGRITY_ERR mBIT(26) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA1_FSM_INTEGRITY_ERR mBIT(27) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA0_FSM_INTEGRITY_ERR mBIT(28) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_FBMC_OWN_FSM_INTEGRITY_ERR mBIT(29) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_TXPE2MSG_DISPATCH_FSM_INTEGRITY_ERR\ - mBIT(30) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_RXPE2MSG_DISPATCH_FSM_INTEGRITY_ERR\ - mBIT(31) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_RPE2MSG_DISPATCH_FSM_INTEGRITY_ERR\ - mBIT(32) -#define VXGE_HAL_MSG_ERR2_REG_MP_MP_PIFT_IF_CREDIT_CNT_ERR mBIT(33) -#define VXGE_HAL_MSG_ERR2_REG_UP_UP_PIFT_IF_CREDIT_CNT_ERR mBIT(34) -#define VXGE_HAL_MSG_ERR2_REG_MSG_QUE_UMQ2PIC_CMD_FIFO_ERR mBIT(62) -#define VXGE_HAL_MSG_ERR2_REG_TIM_TIM2MSG_CMD_FIFO_ERR mBIT(63) -/* 0x05388 */ u64 msg_err2_mask; -/* 0x05390 */ u64 msg_err2_alarm; -/* 0x05398 */ u64 msg_err3_reg; -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_SG_ERR0 mBIT(0) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_SG_ERR1 mBIT(1) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_SG_ERR2 mBIT(2) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_SG_ERR3 mBIT(3) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_SG_ERR4 mBIT(4) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_SG_ERR5 mBIT(5) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_SG_ERR6 mBIT(6) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_SG_ERR7 mBIT(7) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_ICACHE_SG_ERR0 mBIT(8) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_ICACHE_SG_ERR1 mBIT(9) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_SG_ERR0 mBIT(16) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_SG_ERR1 mBIT(17) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_SG_ERR2 mBIT(18) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_SG_ERR3 mBIT(19) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_SG_ERR4 mBIT(20) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_SG_ERR5 mBIT(21) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_SG_ERR6 mBIT(22) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_SG_ERR7 mBIT(23) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_ICACHE_SG_ERR0 mBIT(24) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_ICACHE_SG_ERR1 mBIT(25) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR0 mBIT(32) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR1 mBIT(33) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR2 mBIT(34) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR3 mBIT(35) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR4 mBIT(36) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR5 mBIT(37) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR6 mBIT(38) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR7 mBIT(39) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_ICACHE_DB_ERR0 mBIT(40) -#define VXGE_HAL_MSG_ERR3_REG_UP_UXP_ICACHE_DB_ERR1 mBIT(41) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR0 mBIT(48) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR1 mBIT(49) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR2 mBIT(50) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR3 mBIT(51) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR4 mBIT(52) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR5 mBIT(53) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR6 mBIT(54) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR7 mBIT(55) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_ICACHE_DB_ERR0 mBIT(56) -#define VXGE_HAL_MSG_ERR3_REG_MP_MXP_ICACHE_DB_ERR1 mBIT(57) -/* 0x053a0 */ u64 msg_err3_mask; -/* 0x053a8 */ u64 msg_err3_alarm; -/* 0x053b0 */ u64 umq_ir_test_byte_notify; -#define VXGE_HAL_UMQ_IR_TEST_BYTE_NOTIFY_PULSE mBIT(3) -/* 0x053b8 */ u64 msg_bp_ctrl; -#define VXGE_HAL_MSG_BP_CTRL_RD_XON_EN mBIT(7) -#define VXGE_HAL_MSG_BP_CTRL_WR_XON_E mBIT(15) -#define VXGE_HAL_MSG_BP_CTRL_ROCRC_BYP_EN mBIT(23) -/* 0x053c0 */ u64 umq_bwr_pfch_init[17]; -#define VXGE_HAL_UMQ_BWR_PFCH_INIT_NUMBER(val) vBIT(val, 0, 8) -/* 0x05448 */ u64 umq_bwr_pfch_init_notify[17]; -#define VXGE_HAL_UMQ_BWR_PFCH_INIT_NOTIFY_PULSE mBIT(3) -/* 0x054d0 */ u64 umq_bwr_eol; -#define VXGE_HAL_UMQ_BWR_EOL_POLL_LATENCY(val) vBIT(val, 32, 32) -/* 0x054d8 */ u64 umq_bwr_eol_latency_notify; -#define VXGE_HAL_UMQ_BWR_EOL_LATENCY_NOTIFY_PULSE mBIT(3) - u8 unused05600[0x05600 - 0x054e0]; - -/* 0x05600 */ u64 fau_gen_err_reg; -#define VXGE_HAL_FAU_GEN_ERR_REG_FMPF_PORT0_PERMANENT_STOP mBIT(3) -#define VXGE_HAL_FAU_GEN_ERR_REG_FMPF_PORT1_PERMANENT_STOP mBIT(7) -#define VXGE_HAL_FAU_GEN_ERR_REG_FMPF_PORT2_PERMANENT_STOP mBIT(11) -#define VXGE_HAL_FAU_GEN_ERR_REG_FALR_AUTO_LRO_NOTIF mBIT(15) -/* 0x05608 */ u64 fau_gen_err_mask; -/* 0x05610 */ u64 fau_gen_err_alarm; -/* 0x05618 */ u64 fau_ecc_err_reg; -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT0_FAU_MAC2F_N_SG_ERR mBIT(0) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT0_FAU_MAC2F_N_DB_ERR mBIT(1) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT0_FAU_MAC2F_W_SG_ERR(val)\ - vBIT(val, 2, 2) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT0_FAU_MAC2F_W_DB_ERR(val)\ - vBIT(val, 4, 2) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT1_FAU_MAC2F_N_SG_ERR mBIT(6) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT1_FAU_MAC2F_N_DB_ERR mBIT(7) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT1_FAU_MAC2F_W_SG_ERR(val)\ - vBIT(val, 8, 2) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT1_FAU_MAC2F_W_DB_ERR(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT2_FAU_MAC2F_N_SG_ERR mBIT(12) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT2_FAU_MAC2F_N_DB_ERR mBIT(13) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT2_FAU_MAC2F_W_SG_ERR(val)\ - vBIT(val, 14, 2) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT2_FAU_MAC2F_W_DB_ERR(val)\ - vBIT(val, 16, 2) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_FAU_XFMD_INS_SG_ERR(val) vBIT(val, 18, 2) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAU_FAU_XFMD_INS_DB_ERR(val) vBIT(val, 20, 2) -#define VXGE_HAL_FAU_ECC_ERR_REG_FAUJ_FAU_FSM_ERR mBIT(31) -/* 0x05620 */ u64 fau_ecc_err_mask; -/* 0x05628 */ u64 fau_ecc_err_alarm; - u8 unused05648[0x05648 - 0x05630]; - -/* 0x05648 */ u64 fau_global_cfg; -#define VXGE_HAL_FAU_GLOBAL_CFG_ARB_ALG(val) vBIT(val, 2, 2) -/* 0x05650 */ u64 rx_datapath_util; -#define VXGE_HAL_RX_DATAPATH_UTIL_FAU_RX_UTILIZATION(val) vBIT(val, 7, 9) -#define VXGE_HAL_RX_DATAPATH_UTIL_RX_UTIL_CFG(val) vBIT(val, 16, 4) -#define VXGE_HAL_RX_DATAPATH_UTIL_FAU_RX_FRAC_UTIL(val) vBIT(val, 20, 4) -#define VXGE_HAL_RX_DATAPATH_UTIL_RX_PKT_WEIGHT(val) vBIT(val, 24, 4) -/* 0x05658 */ u64 fau_pa_cfg; -#define VXGE_HAL_FAU_PA_CFG_REPL_L4_COMP_CSUM mBIT(3) -#define VXGE_HAL_FAU_PA_CFG_REPL_L3_INCL_CF mBIT(7) -#define VXGE_HAL_FAU_PA_CFG_REPL_L3_COMP_CSUM mBIT(11) - u8 unused05668[0x05668 - 0x05660]; - -/* 0x05668 */ u64 dbg_stats_fau_rx_path; -#define VXGE_HAL_DBG_STATS_FAU_RX_PATH_RX_PERMITTED_FRMS(val) vBIT(val, 32, 32) -/* 0x05670 */ u64 fau_auto_lro_control; -#define VXGE_HAL_FAU_AUTO_LRO_CONTROL_OPERATION_TYPE mBIT(7) -#define VXGE_HAL_FAU_AUTO_LRO_CONTROL_FRAME_COUNT(val) vBIT(val, 8, 24) -#define VXGE_HAL_FAU_AUTO_LRO_CONTROL_TIMER_VALUE(val) vBIT(val, 32, 32) -/* 0x05678 */ u64 fau_auto_lro_data_0; -#define VXGE_HAL_FAU_AUTO_LRO_DATA_0_SOURCE_VPATH(val) vBIT(val, 3, 5) -#define VXGE_HAL_FAU_AUTO_LRO_DATA_0_HAS_VLAN mBIT(14) -#define VXGE_HAL_FAU_AUTO_LRO_DATA_0_IS_IPV6 mBIT(15) -#define VXGE_HAL_FAU_AUTO_LRO_DATA_0_VLAN_VID(val) vBIT(val, 20, 12) -#define VXGE_HAL_FAU_AUTO_LRO_DATA_0_TCP_DEST_PORT(val) vBIT(val, 32, 16) -#define VXGE_HAL_FAU_AUTO_LRO_DATA_0_TCP_SOURCE_PORT(val) vBIT(val, 48, 16) -/* 0x05680 */ u64 fau_auto_lro_data_1; -#define VXGE_HAL_FAU_AUTO_LRO_DATA_1_IP_SOURCE_ADDR_0(val) vBIT(val, 0, 64) -/* 0x05688 */ u64 fau_auto_lro_data_2; -#define VXGE_HAL_FAU_AUTO_LRO_DATA_2_IP_SOURCE_ADDR_1(val) vBIT(val, 0, 64) -/* 0x05690 */ u64 fau_auto_lro_data_3; -#define VXGE_HAL_FAU_AUTO_LRO_DATA_3_IP_DEST_ADDR_0(val) vBIT(val, 0, 64) -/* 0x05698 */ u64 fau_auto_lro_data_4; -#define VXGE_HAL_FAU_AUTO_LRO_DATA_4_IP_DEST_ADDR_1(val) vBIT(val, 0, 64) - u8 unused056c0[0x056c0 - 0x056a0]; - -/* 0x056c0 */ u64 fau_lag_cfg; -#define VXGE_HAL_FAU_LAG_CFG_COLL_ALG(val) vBIT(val, 2, 2) -#define VXGE_HAL_FAU_LAG_CFG_INCR_RX_AGGR_STATS mBIT(7) - u8 unused05700[0x05700 - 0x056c8]; - -/* 0x05700 */ u64 fau_mpa_cfg; -#define VXGE_HAL_FAU_MPA_CFG_CRC_CHK_EN mBIT(3) -#define VXGE_HAL_FAU_MPA_CFG_MRK_LEN_CHK_EN mBIT(7) - u8 unused057a0[0x057a0 - 0x05708]; - -/* 0x057a0 */ u64 xmac_rx_xgmii_capture_data_port[3]; -#define VXGE_HAL_XMAC_RX_XGMII_CAPTURE_DATA_PORT_COL_INDX(val) vBIT(val, 0, 12) -#define VXGE_HAL_XMAC_RX_XGMII_CAPTURE_DATA_PORT_FAUJ_FLAG(val) vBIT(val, 26, 2) -#define VXGE_HAL_XMAC_RX_XGMII_CAPTURE_DATA_PORT_FAUJ_RXC(val) vBIT(val, 28, 4) -#define VXGE_HAL_XMAC_RX_XGMII_CAPTURE_DATA_PORT_FAUJ_RXD(val) vBIT(val, 32, 32) - u8 unused05800[0x05800 - 0x057b8]; - -/* 0x05800 */ u64 tpa_int_status; -#define VXGE_HAL_TPA_INT_STATUS_ORP_ERR_ORP_INT mBIT(15) -#define VXGE_HAL_TPA_INT_STATUS_PTM_ALARM_PTM_INT mBIT(23) -#define VXGE_HAL_TPA_INT_STATUS_TPA_ERROR_TPA_INT mBIT(31) -/* 0x05808 */ u64 tpa_int_mask; -/* 0x05810 */ u64 orp_err_reg; -#define VXGE_HAL_ORP_ERR_REG_ORP_FIFO_SG_ERR mBIT(3) -#define VXGE_HAL_ORP_ERR_REG_ORP_FIFO_DB_ERR mBIT(7) -#define VXGE_HAL_ORP_ERR_REG_ORP_XFMD_FIFO_UFLOW_ERR mBIT(11) -#define VXGE_HAL_ORP_ERR_REG_ORP_FRM_FIFO_UFLOW_ERR mBIT(15) -#define VXGE_HAL_ORP_ERR_REG_ORP_XFMD_RCV_FSM_ERR mBIT(19) -#define VXGE_HAL_ORP_ERR_REG_ORP_OUTREAD_FSM_ERR mBIT(23) -#define VXGE_HAL_ORP_ERR_REG_ORP_OUTQEM_FSM_ERR mBIT(27) -#define VXGE_HAL_ORP_ERR_REG_ORP_XFMD_RCV_SHADOW_ERR mBIT(31) -#define VXGE_HAL_ORP_ERR_REG_ORP_OUTREAD_SHADOW_ERR mBIT(35) -#define VXGE_HAL_ORP_ERR_REG_ORP_OUTQEM_SHADOW_ERR mBIT(39) -#define VXGE_HAL_ORP_ERR_REG_ORP_OUTFRM_SHADOW_ERR mBIT(43) -#define VXGE_HAL_ORP_ERR_REG_ORP_OPTPRS_SHADOW_ERR mBIT(47) -/* 0x05818 */ u64 orp_err_mask; -/* 0x05820 */ u64 orp_err_alarm; -/* 0x05828 */ u64 ptm_alarm_reg; -#define VXGE_HAL_PTM_ALARM_REG_PTM_RDCTRL_SYNC_ERR mBIT(3) -#define VXGE_HAL_PTM_ALARM_REG_PTM_RDCTRL_FIFO_ERR mBIT(7) -#define VXGE_HAL_PTM_ALARM_REG_XFMD_RD_FIFO_ERR mBIT(11) -#define VXGE_HAL_PTM_ALARM_REG_WDE2MSR_WR_FIFO_ERR mBIT(15) -#define VXGE_HAL_PTM_ALARM_REG_PTM_FRMM_ECC_DB_ERR(val) vBIT(val, 18, 2) -#define VXGE_HAL_PTM_ALARM_REG_PTM_FRMM_ECC_SG_ERR(val) vBIT(val, 22, 2) -/* 0x05830 */ u64 ptm_alarm_mask; -/* 0x05838 */ u64 ptm_alarm_alarm; -/* 0x05840 */ u64 tpa_error_reg; -#define VXGE_HAL_TPA_ERROR_REG_TPA_FSM_ERR_ALARM mBIT(3) -#define VXGE_HAL_TPA_ERROR_REG_TPA_TPA_DA_LKUP_PRT0_DB_ERR mBIT(7) -#define VXGE_HAL_TPA_ERROR_REG_TPA_TPA_DA_LKUP_PRT0_SG_ERR mBIT(11) -/* 0x05848 */ u64 tpa_error_mask; -/* 0x05850 */ u64 tpa_error_alarm; -/* 0x05858 */ u64 tpa_global_cfg; -#define VXGE_HAL_TPA_GLOBAL_CFG_SUPPORT_SNAP_AB_N mBIT(7) -#define VXGE_HAL_TPA_GLOBAL_CFG_ECC_ENABLE_N mBIT(35) -/* 0x05860 */ u64 tx_datapath_util; -#define VXGE_HAL_TX_DATAPATH_UTIL_TPA_TX_UTILIZATION(val) vBIT(val, 7, 9) -#define VXGE_HAL_TX_DATAPATH_UTIL_TX_UTIL_CFG(val) vBIT(val, 16, 4) -#define VXGE_HAL_TX_DATAPATH_UTIL_TPA_TX_FRAC_UTIL(val) vBIT(val, 20, 4) -#define VXGE_HAL_TX_DATAPATH_UTIL_TX_PKT_WEIGHT(val) vBIT(val, 24, 4) -/* 0x05868 */ u64 orp_cfg; -#define VXGE_HAL_ORP_CFG_FIFO_CREDITS(val) vBIT(val, 5, 3) -#define VXGE_HAL_ORP_CFG_ORP_FIFO_ECC_ENABLE_N mBIT(15) -#define VXGE_HAL_ORP_CFG_FIFO_PHASE_EN mBIT(23) -/* 0x05870 */ u64 ptm_ecc_cfg; -#define VXGE_HAL_PTM_ECC_CFG_PTM_FRMM_ECC_EN_N mBIT(3) -/* 0x05878 */ u64 ptm_phase_cfg; -#define VXGE_HAL_PTM_PHASE_CFG_FRMM_WR_PHASE_EN mBIT(3) -#define VXGE_HAL_PTM_PHASE_CFG_FRMM_RD_PHASE_EN mBIT(7) -/* 0x05880 */ u64 orp_lro_events; -#define VXGE_HAL_ORP_LRO_EVENTS_ORP_LRO_EVENTS(val) vBIT(val, 0, 64) -/* 0x05888 */ u64 orp_bs_events; -#define VXGE_HAL_ORP_BS_EVENTS_ORP_BS_EVENTS(val) vBIT(val, 0, 64) -/* 0x05890 */ u64 orp_iwarp_events; -#define VXGE_HAL_ORP_IWARP_EVENTS_ORP_IWARP_EVENTS(val) vBIT(val, 0, 64) -/* 0x05898 */ u64 dbg_stats_tpa_tx_path; -#define VXGE_HAL_DBG_STATS_TPA_TX_PATH_TX_PERMITTED_FRMS(val) vBIT(val, 32, 32) - u8 unused05900[0x05900 - 0x058a0]; - -/* 0x05900 */ u64 tmac_int_status; -#define VXGE_HAL_TMAC_INT_STATUS_TXMAC_GEN_ERR_TXMAC_GEN_INT mBIT(3) -#define VXGE_HAL_TMAC_INT_STATUS_TXMAC_ECC_ERR_TXMAC_ECC_INT mBIT(7) -/* 0x05908 */ u64 tmac_int_mask; -/* 0x05910 */ u64 txmac_gen_err_reg; -#define VXGE_HAL_TXMAC_GEN_ERR_REG_TMACJ_PERMANENT_STOP mBIT(3) -#define VXGE_HAL_TXMAC_GEN_ERR_REG_TMACJ_NO_VALID_VSPORT mBIT(7) -/* 0x05918 */ u64 txmac_gen_err_mask; -/* 0x05920 */ u64 txmac_gen_err_alarm; -/* 0x05928 */ u64 txmac_ecc_err_reg; -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2MAC_SG_ERR mBIT(3) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2MAC_DB_ERR mBIT(7) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2M_SB_SG_ERR mBIT(11) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2M_SB_DB_ERR mBIT(15) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2M_DA_SG_ERR mBIT(19) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2M_DA_DB_ERR mBIT(23) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMAC_TMAC_PORT0_FSM_ERR mBIT(27) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMAC_TMAC_PORT1_FSM_ERR mBIT(31) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMAC_TMAC_PORT2_FSM_ERR mBIT(35) -#define VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMACJ_FSM_ERR mBIT(39) -/* 0x05930 */ u64 txmac_ecc_err_mask; -/* 0x05938 */ u64 txmac_ecc_err_alarm; - u8 unused05948[0x05948-0x05940]; - -/* 0x05948 */ u64 txmac_gen_cfg1; -#define VXGE_HAL_TXMAC_GEN_CFG1_TX_SWITCH_DISABLE mBIT(7) -#define VXGE_HAL_TXMAC_GEN_CFG1_LOSSY_SWITCH mBIT(11) -#define VXGE_HAL_TXMAC_GEN_CFG1_LOSSY_WIRE mBIT(15) -#define VXGE_HAL_TXMAC_GEN_CFG1_SCALE_TMAC_UTIL mBIT(27) -#define VXGE_HAL_TXMAC_GEN_CFG1_DISCARD_WHEN_TMAC_DISABLED mBIT(35) -#define VXGE_HAL_TXMAC_GEN_CFG1_IFS_EN mBIT(39) -#define VXGE_HAL_TXMAC_GEN_CFG1_IFS_STRETCH_RATIO(val) vBIT(val, 40, 16) -#define VXGE_HAL_TXMAC_GEN_CFG1_IFS_NUM_EXTENSION(val) vBIT(val, 59, 5) - u8 unused05958[0x05958 - 0x05950]; - -/* 0x05958 */ u64 txmac_err_inject_cfg; -#define VXGE_HAL_TXMAC_ERR_INJECT_CFG_INJECTOR_ERROR_RATE(val) vBIT(val, 0, 32) -/* 0x05960 */ u64 txmac_frmgen_cfg; -#define VXGE_HAL_TXMAC_FRMGEN_CFG_EN mBIT(3) -#define VXGE_HAL_TXMAC_FRMGEN_CFG_MODE(val) vBIT(val, 6, 2) -#define VXGE_HAL_TXMAC_FRMGEN_CFG_PERIOD(val) vBIT(val, 8, 4) -#define VXGE_HAL_TXMAC_FRMGEN_CFG_SEND_TO_WIRE mBIT(15) -#define VXGE_HAL_TXMAC_FRMGEN_CFG_VPATH_VECTOR(val) vBIT(val, 19, 17) -#define VXGE_HAL_TXMAC_FRMGEN_CFG_SRC_VPATH(val) vBIT(val, 39, 5) -#define VXGE_HAL_TXMAC_FRMGEN_CFG_HOST_STEERING(val) vBIT(val, 44, 2) -#define VXGE_HAL_TXMAC_FRMGEN_CFG_IFS_SEL(val) vBIT(val, 47, 3) -/* 0x05968 */ u64 txmac_frmgen_contents; -#define VXGE_HAL_TXMAC_FRMGEN_CONTENTS_PATTERN_SEL(val) vBIT(val, 2, 2) -#define VXGE_HAL_TXMAC_FRMGEN_CONTENTS_DA_SEL(val) vBIT(val, 6, 2) -#define VXGE_HAL_TXMAC_FRMGEN_CONTENTS_LEN_SEL mBIT(11) -#define VXGE_HAL_TXMAC_FRMGEN_CONTENTS_MIN_LEN(val) vBIT(val, 14, 14) -#define VXGE_HAL_TXMAC_FRMGEN_CONTENTS_MAX_LEN(val) vBIT(val, 30, 14) -#define VXGE_HAL_TXMAC_FRMGEN_CONTENTS_LT_FIELD(val) vBIT(val, 44, 16) -#define VXGE_HAL_TXMAC_FRMGEN_CONTENTS_DATA_SEL(val) vBIT(val, 62, 2) -/* 0x05970 */ u64 txmac_frmgen_data; -#define VXGE_HAL_TXMAC_FRMGEN_DATA_FRMDATA(val) vBIT(val, 0, 64) -/* 0x05978 */ u64 dbg_stat_tx_any_frms; -#define VXGE_HAL_DBG_STAT_TX_ANY_FRMS_PORT0_TX_ANY_FRMS(val) vBIT(val, 0, 8) -#define VXGE_HAL_DBG_STAT_TX_ANY_FRMS_PORT1_TX_ANY_FRMS(val) vBIT(val, 8, 8) -#define VXGE_HAL_DBG_STAT_TX_ANY_FRMS_PORT2_TX_ANY_FRMS(val) vBIT(val, 16, 8) - u8 unused059a0[0x059a0 - 0x05980]; - -/* 0x059a0 */ u64 txmac_link_util_port[3]; -#define VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_TMAC_UTILIZATION(val) vBIT(val, 1, 7) -#define VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_UTIL_CFG(val) vBIT(val, 8, 4) -#define VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_TMAC_FRAC_UTIL(val) vBIT(val, 12, 4) -#define VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_PKT_WEIGHT(val) vBIT(val, 16, 4) -#define VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_TMAC_SCALE_FACTOR mBIT(23) -/* 0x059b8 */ u64 txmac_cfg0_port[3]; -#define VXGE_HAL_TXMAC_CFG0_PORT_TMAC_EN mBIT(3) -#define VXGE_HAL_TXMAC_CFG0_PORT_APPEND_PAD mBIT(7) -#define VXGE_HAL_TXMAC_CFG0_PORT_PAD_BYTE(val) vBIT(val, 8, 8) -/* 0x059d0 */ u64 txmac_cfg1_port[3]; -#define VXGE_HAL_TXMAC_CFG1_PORT_AVG_IPG(val) vBIT(val, 40, 8) -/* 0x059e8 */ u64 txmac_status_port[3]; -#define VXGE_HAL_TXMAC_STATUS_PORT_TMAC_TX_FRM_SENT mBIT(3) - u8 unused05a20[0x05a20 - 0x05a00]; - -/* 0x05a20 */ u64 lag_distrib_dest; -#define VXGE_HAL_LAG_DISTRIB_DEST_MAP_VPATH(n) mBIT(n) -/* 0x05a28 */ u64 lag_marker_cfg; -#define VXGE_HAL_LAG_MARKER_CFG_GEN_RCVR_EN mBIT(3) -#define VXGE_HAL_LAG_MARKER_CFG_RESP_EN mBIT(7) -#define VXGE_HAL_LAG_MARKER_CFG_RESP_TIMEOUT(val) vBIT(val, 16, 16) -#define VXGE_HAL_LAG_MARKER_CFG_SLOW_PROTO_MRKR_MIN_INTERVAL(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_LAG_MARKER_CFG_THROTTLE_MRKR_RESP mBIT(51) -/* 0x05a30 */ u64 lag_tx_cfg; -#define VXGE_HAL_LAG_TX_CFG_INCR_TX_AGGR_STATS mBIT(3) -#define VXGE_HAL_LAG_TX_CFG_DISTRIB_ALG_SEL(val) vBIT(val, 6, 2) -#define VXGE_HAL_LAG_TX_CFG_DISTRIB_REMAP_IF_FAIL mBIT(11) -#define VXGE_HAL_LAG_TX_CFG_COLL_MAX_DELAY(val) vBIT(val, 16, 16) -/* 0x05a38 */ u64 lag_tx_status; -#define VXGE_HAL_LAG_TX_STATUS_TLAG_TIMER_VAL_EMPTIED_LINK(val) vBIT(val, 0, 8) -#define VXGE_HAL_LAG_TX_STATUS_TLAG_TIMER_VAL_SLOW_PROTO_MRKR(val)\ - vBIT(val, 8, 8) -#define VXGE_HAL_LAG_TX_STATUS_TLAG_TIMER_VAL_SLOW_PROTO_MRKRRESP(val)\ - vBIT(val, 16, 8) - u8 unused05a50[0x05a50 - 0x05a40]; - -/* 0x05a50 */ u64 txmac_stats_tx_xgmii_char; -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_CHAR_LANE_CHAR1(val) vBIT(val, 1, 3) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_CHAR_TXC_CHAR1 mBIT(7) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_CHAR_TXD_CHAR1(val) vBIT(val, 8, 8) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_CHAR_LANE_CHAR2(val) vBIT(val, 17, 3) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_CHAR_TXC_CHAR2 mBIT(23) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_CHAR_TXD_CHAR2(val) vBIT(val, 24, 8) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_CHAR_BEHAV_CHAR2_NEAR_CHAR1 mBIT(39) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_CHAR_BEHAV_CHAR2_NUM_CHAR(val)\ - vBIT(val, 40, 16) -/* 0x05a58 */ u64 txmac_stats_tx_xgmii_column1; -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN1_TXC_LANE0 mBIT(7) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN1_TXD_LANE0(val) vBIT(val, 8, 8) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN1_TXC_LANE1 mBIT(23) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN1_TXD_LANE1(val) vBIT(val, 24, 8) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN1_TXC_LANE2 mBIT(39) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN1_TXD_LANE2(val) vBIT(val, 40, 8) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN1_TXC_LANE3 mBIT(55) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN1_TXD_LANE3(val) vBIT(val, 56, 8) -/* 0x05a60 */ u64 txmac_stats_tx_xgmii_column2; -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN2_TXC_LANE0 mBIT(7) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN2_TXD_LANE0(val) vBIT(val, 8, 8) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN2_TXC_LANE1 mBIT(23) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN2_TXD_LANE1(val) vBIT(val, 24, 8) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN2_TXC_LANE2 mBIT(39) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN2_TXD_LANE2(val) vBIT(val, 40, 8) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN2_TXC_LANE3 mBIT(55) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_COLUMN2_TXD_LANE3(val) vBIT(val, 56, 8) -/* 0x05a68 */ u64 txmac_stats_tx_xgmii_behav_column2; -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_BEHAV_COLUMN2_NEAR_COL1 mBIT(7) -#define VXGE_HAL_TXMAC_STATS_TX_XGMII_BEHAV_COLUMN2_NUM_COL(val)\ - vBIT(val, 8, 16) - u8 unused05b00[0x05b00 - 0x05a70]; - -/* 0x05b00 */ u64 sharedio_status; -#define VXGE_HAL_SHAREDIO_STATUS_PCI_NEGOTIATED_ACTIVE_VPLANE(val)\ - vBIT(val, 0, 17) -#define VXGE_HAL_SHAREDIO_STATUS_PCI_NEGOTIATED_VPLANE_COUNT(val)\ - vBIT(val, 20, 8) -#define VXGE_HAL_SHAREDIO_STATUS_PCI_NEGOTIATED_SHC mBIT(31) -#define VXGE_HAL_SHAREDIO_STATUS_PCI_SHARED_IO_MODE mBIT(34) -#define VXGE_HAL_SHAREDIO_STATUS_PCI_RX_ILLEGAL_TLP_VPLANE_VAL(val)\ - vBIT(val, 36, 8) -/* 0x05b08 */ u64 crdt_status1_vplane[17]; -#define VXGE_HAL_CRDT_STATUS1_VPLANE_PCI_ABS_PD(val) vBIT(val, 4, 12) -#define VXGE_HAL_CRDT_STATUS1_VPLANE_PCI_ABS_NPD(val) vBIT(val, 20, 12) -#define VXGE_HAL_CRDT_STATUS1_VPLANE_PCI_ABS_CPLD(val) vBIT(val, 36, 12) -#define VXGE_HAL_CRDT_STATUS1_VPLANE_PCI_ABS_PD_INFINITE mBIT(51) -#define VXGE_HAL_CRDT_STATUS1_VPLANE_PCI_ABS_NPD_INFINITE mBIT(55) -#define VXGE_HAL_CRDT_STATUS1_VPLANE_PCI_ABS_CPLD_INFINITE mBIT(59) -/* 0x05b90 */ u64 crdt_status2_vplane[17]; -#define VXGE_HAL_CRDT_STATUS2_VPLANE_PCI_ABS_PH(val) vBIT(val, 0, 8) -#define VXGE_HAL_CRDT_STATUS2_VPLANE_PCI_ABS_NPH(val) vBIT(val, 8, 8) -#define VXGE_HAL_CRDT_STATUS2_VPLANE_PCI_ABS_CPLH(val) vBIT(val, 16, 8) -#define VXGE_HAL_CRDT_STATUS2_VPLANE_PCI_ABS_PH_INFINITE mBIT(31) -#define VXGE_HAL_CRDT_STATUS2_VPLANE_PCI_ABS_NPH_INFINITE mBIT(35) -#define VXGE_HAL_CRDT_STATUS2_VPLANE_PCI_ABS_CPLH_INFINITE mBIT(39) -/* 0x05c18 */ u64 crdt_status3_vplane[17]; -#define VXGE_HAL_CRDT_STATUS3_VPLANE_PCI_AVAIL_ABS_BUF_PD(val) vBIT(val, 4, 12) -#define VXGE_HAL_CRDT_STATUS3_VPLANE_PCI_AVAIL_ABS_BUF_NPD(val)\ - vBIT(val, 20, 12) -#define VXGE_HAL_CRDT_STATUS3_VPLANE_PCI_AVAIL_ABS_BUF_CPLD(val)\ - vBIT(val, 36, 12) -/* 0x05ca0 */ u64 crdt_status4_vplane[17]; -#define VXGE_HAL_CRDT_STATUS4_VPLANE_PCI_AVAIL_ABS_BUF_PH(val) vBIT(val, 0, 8) -#define VXGE_HAL_CRDT_STATUS4_VPLANE_PCI_AVAIL_ABS_BUF_NPH(val) vBIT(val, 8, 8) -#define VXGE_HAL_CRDT_STATUS4_VPLANE_PCI_AVAIL_ABS_BUF_CPLH(val)\ - vBIT(val, 16, 8) -/* 0x05d28 */ u64 crdt_status5; -#define VXGE_HAL_CRDT_STATUS5_PCI_DEPL_PH(val) vBIT(val, 0, 17) -#define VXGE_HAL_CRDT_STATUS5_PCI_DEPL_NPH(val) vBIT(val, 20, 17) -#define VXGE_HAL_CRDT_STATUS5_PCI_DEPL_CPLH(val) vBIT(val, 40, 17) -/* 0x05d30 */ u64 crdt_status6; -#define VXGE_HAL_CRDT_STATUS6_PCI_DEPL_PD(val) vBIT(val, 0, 17) -#define VXGE_HAL_CRDT_STATUS6_PCI_DEPL_NPD(val) vBIT(val, 20, 17) -#define VXGE_HAL_CRDT_STATUS6_PCI_DEPL_CPLD(val) vBIT(val, 40, 17) -/* 0x05d38 */ u64 crdt_status7; -#define VXGE_HAL_CRDT_STATUS7_PCI_ABS_PD(val) vBIT(val, 4, 12) -#define VXGE_HAL_CRDT_STATUS7_PCI_ABS_NPD(val) vBIT(val, 20, 12) -#define VXGE_HAL_CRDT_STATUS7_PCI_ABS_CPLD(val) vBIT(val, 36, 12) -#define VXGE_HAL_CRDT_STATUS7_PCI_ABS_PD_INFINITE mBIT(51) -#define VXGE_HAL_CRDT_STATUS7_PCI_ABS_NPD_INFINITE mBIT(55) -#define VXGE_HAL_CRDT_STATUS7_PCI_ABS_CPLD_INFINITE mBIT(59) -/* 0x05d40 */ u64 crdt_status8; -#define VXGE_HAL_CRDT_STATUS8_PCI_ABS_PH(val) vBIT(val, 0, 8) -#define VXGE_HAL_CRDT_STATUS8_PCI_ABS_NPH(val) vBIT(val, 8, 8) -#define VXGE_HAL_CRDT_STATUS8_PCI_ABS_CPLH(val) vBIT(val, 16, 8) -#define VXGE_HAL_CRDT_STATUS8_PCI_ABS_PH_INFINITE mBIT(31) -#define VXGE_HAL_CRDT_STATUS8_PCI_ABS_NPH_INFINITE mBIT(35) -#define VXGE_HAL_CRDT_STATUS8_PCI_ABS_CPLH_INFINITE mBIT(39) -/* 0x05d48 */ u64 srpcim_to_mrpcim_vplane_rmsg[17]; -#define VXGE_HAL_SRPCIM_TO_MRPCIM_VPLANE_RMSG_RMSG(val) vBIT(val, 0, 64) - u8 unused06000[0x06000 - 0x05dd0]; - -/* 0x06000 */ u64 pcie_lane_cfg1; -#define VXGE_HAL_PCIE_LANE_CFG1_RX_0_SEL(val) vBIT(val, 1, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_RX_1_SEL(val) vBIT(val, 5, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_RX_2_SEL(val) vBIT(val, 9, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_RX_3_SEL(val) vBIT(val, 13, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_RX_4_SEL(val) vBIT(val, 17, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_RX_5_SEL(val) vBIT(val, 21, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_RX_6_SEL(val) vBIT(val, 25, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_RX_7_SEL(val) vBIT(val, 29, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_TX_0_SEL(val) vBIT(val, 33, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_TX_1_SEL(val) vBIT(val, 37, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_TX_2_SEL(val) vBIT(val, 41, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_TX_3_SEL(val) vBIT(val, 45, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_TX_4_SEL(val) vBIT(val, 49, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_TX_5_SEL(val) vBIT(val, 53, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_TX_6_SEL(val) vBIT(val, 57, 3) -#define VXGE_HAL_PCIE_LANE_CFG1_TX_7_SEL(val) vBIT(val, 61, 3) -/* 0x06008 */ u64 pcie_lane_cfg2; -#define VXGE_HAL_PCIE_LANE_CFG2_STROBE mBIT(0) -/* 0x06010 */ u64 pcicfg_no_to_func_cfg[25]; -#define VXGE_HAL_PCICFG_NO_TO_FUNC_CFG_PCICFG_NO_TO_FUNC_CFG(val)\ - vBIT(val, 3, 5) -/* 0x060d8 */ u64 resource_to_vplane_cfg[17]; -#define VXGE_HAL_RESOURCE_TO_VPLANE_CFG_RESOURCE_TO_VPLANE_CFG(val)\ - vBIT(val, 3, 5) -/* 0x06160 */ u64 pcicfg_no_to_vplane_cfg[25]; -#define VXGE_HAL_PCICFG_NO_TO_VPLANE_CFG_PCICFG_NO_TO_VPLANE_CFG(val)\ - vBIT(val, 3, 5) -/* 0x06228 */ u64 general_cfg; -#define VXGE_HAL_GENERAL_CFG_ENABLE_FLR_ON_MRIOV_DIS mBIT(0) -#define VXGE_HAL_GENERAL_CFG_ENABLE_FLR_ON_SRIOV_DIS mBIT(1) -#define VXGE_HAL_GENERAL_CFG_MULTI_FUNC_8_MODE mBIT(2) -#define VXGE_HAL_GENERAL_CFG_EN_RST_CPLTO_IN_LUT mBIT(3) -#define VXGE_HAL_GENERAL_CFG_RST_CPLTO_VAL(val) vBIT(val, 4, 4) -#define VXGE_HAL_GENERAL_CFG_SHARED_IO_MODE mBIT(11) -#define VXGE_HAL_GENERAL_CFG_INIT_OSD_COUNT(val) vBIT(val, 12, 8) -#define VXGE_HAL_GENERAL_CFG_INIT_SHC(val) vBIT(val, 20, 8) -#define VXGE_HAL_GENERAL_CFG_INITOSD_VERSION(val) vBIT(val, 29, 3) -#define VXGE_HAL_GENERAL_CFG_SNOOP_CPLH_CRDT_ON_BUS mBIT(35) -#define VXGE_HAL_GENERAL_CFG_FC_UPDT_FREQ_VAL(val) vBIT(val, 36, 4) -#define VXGE_HAL_GENERAL_CFG_RX_MEM_ECC_ENABLE_N mBIT(43) -#define VXGE_HAL_GENERAL_CFG_TX_MEM_ECC_ENABLE_N mBIT(47) -#define VXGE_HAL_GENERAL_CFG_MRIOV_CFG_EN mBIT(51) -#define VXGE_HAL_GENERAL_CFG_HIDE_VPD_CAPABILITY mBIT(53) -#define VXGE_HAL_GENERAL_CFG_FORCE_RDS_TO_USE_PF_REQID mBIT(54) -#define VXGE_HAL_GENERAL_CFG_POISON_ADVISORY mBIT(55) -#define VXGE_HAL_GENERAL_CFG_CPL_TIMEOUT_ADVISORY mBIT(56) -#define VXGE_HAL_GENERAL_CFG_UNEXP_CPL_ADVISORY mBIT(57) -#define VXGE_HAL_GENERAL_CFG_UR_ADVISORY mBIT(58) -#define VXGE_HAL_GENERAL_CFG_CA_ADVISORY mBIT(59) -#define VXGE_HAL_GENERAL_CFG_WAIT_FOR_CPLH_CRDT_ON_BUS mBIT(60) -#define VXGE_HAL_GENERAL_CFG_EN_SEND_ERR_MSG_FOR_SERR mBIT(61) -#define VXGE_HAL_GENERAL_CFG_SEND_NF_MSG_FOR_SERR mBIT(62) -#define VXGE_HAL_GENERAL_CFG_VF_MUST_USE_CFG_TYPE0 mBIT(63) -/* 0x06230 */ u64 start_bist; -#define VXGE_HAL_START_BIST_START_BIST mBIT(0) -/* 0x06238 */ u64 bist_cfg; -#define VXGE_HAL_BIST_CFG_IGNORE_MEM_RDY mBIT(3) -#define VXGE_HAL_BIST_CFG_ENABLE mBIT(7) -#define VXGE_HAL_BIST_CFG_JTAG_BIST_COMPLETION_CODE(val) vBIT(val, 8, 4) -/* 0x06240 */ u64 pci_link_control; -#define VXGE_HAL_PCI_LINK_CONTROL_APP_REQ_RETRY_EN mBIT(3) -#define VXGE_HAL_PCI_LINK_CONTROL_APP_LTSSM_EN mBIT(7) -/* 0x06248 */ u64 show_sriov_cap; -#define VXGE_HAL_SHOW_SRIOV_CAP_SHOW_SRIOV_CAP(val) vBIT(val, 0, 9) -/* 0x06250 */ u64 link_rst_wait_cnt; -#define VXGE_HAL_LINK_RST_WAIT_CNT_LINK_RST_WAIT_CNT(val) vBIT(val, 0, 16) -/* 0x06258 */ u64 pcie_based_crdt_cfg1; -#define VXGE_HAL_PCIE_BASED_CRDT_CFG1_INIT_PD(val) vBIT(val, 4, 12) -#define VXGE_HAL_PCIE_BASED_CRDT_CFG1_INIT_NPD(val) vBIT(val, 20, 12) -#define VXGE_HAL_PCIE_BASED_CRDT_CFG1_INIT_CPLD(val) vBIT(val, 36, 12) -/* 0x06260 */ u64 pcie_based_crdt_cfg2; -#define VXGE_HAL_PCIE_BASED_CRDT_CFG2_INIT_PH(val) vBIT(val, 0, 8) -#define VXGE_HAL_PCIE_BASED_CRDT_CFG2_INIT_NPH(val) vBIT(val, 8, 8) -#define VXGE_HAL_PCIE_BASED_CRDT_CFG2_INIT_CPLH(val) vBIT(val, 16, 8) -/* 0x06268 */ u64 sharedio_abs_based_crdt_cfg1_vplane[17]; -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG1_VPLANE_ABS_PD(val)\ - vBIT(val, 4, 12) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG1_VPLANE_ABS_NPD(val)\ - vBIT(val, 20, 12) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG1_VPLANE_ABS_CPLD(val)\ - vBIT(val, 36, 12) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG1_VPLANE_ABS_PD_INFINITE mBIT(51) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG1_VPLANE_ABS_NPD_INFINITE mBIT(55) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG1_VPLANE_ABS_CPLD_INFINITE mBIT(59) -/* 0x062f0 */ u64 sharedio_abs_based_crdt_cfg2_vplane[17]; -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG2_VPLANE_ABS_PH(val)\ - vBIT(val, 0, 8) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG2_VPLANE_ABS_NPH(val)\ - vBIT(val, 8, 8) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG2_VPLANE_ABS_CPLH(val)\ - vBIT(val, 16, 8) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG2_VPLANE_ABS_PH_INFINITE mBIT(31) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG2_VPLANE_ABS_NPH_INFINITE mBIT(35) -#define VXGE_HAL_SHAREDIO_ABS_BASED_CRDT_CFG2_VPLANE_ABS_CPLH_INFINITE mBIT(39) -/* 0x06378 */ u64 arbiter_cfg; -#define VXGE_HAL_ARBITER_CFG_CPL_PRIORITY(val) vBIT(val, 2, 2) -#define VXGE_HAL_ARBITER_CFG_MRD_PRIORITY(val) vBIT(val, 6, 2) -#define VXGE_HAL_ARBITER_CFG_MWR_PRIORITY(val) vBIT(val, 10, 2) -#define VXGE_HAL_ARBITER_CFG_CHK_PRIORITY_MATCH_ONLY mBIT(15) -#define VXGE_HAL_ARBITER_CFG_CALSTATE0_PRIORITY(val) vBIT(val, 18, 2) -#define VXGE_HAL_ARBITER_CFG_CALSTATE1_PRIORITY(val) vBIT(val, 22, 2) -#define VXGE_HAL_ARBITER_CFG_CALSTATE2_PRIORITY(val) vBIT(val, 26, 2) -#define VXGE_HAL_ARBITER_CFG_CALSTATE3_PRIORITY(val) vBIT(val, 30, 2) -#define VXGE_HAL_ARBITER_CFG_CALSTATE4_PRIORITY(val) vBIT(val, 34, 2) -#define VXGE_HAL_ARBITER_CFG_CALSTATE5_PRIORITY(val) vBIT(val, 38, 2) -/* 0x06380 */ u64 serdes_cfg1; -#define VXGE_HAL_SERDES_CFG1_TX_CLOCK_ALIGN(val) vBIT(val, 0, 8) -#define VXGE_HAL_SERDES_CFG1_TX_CALC(val) vBIT(val, 8, 8) -#define VXGE_HAL_SERDES_CFG1_TX_LVL(val) vBIT(val, 19, 5) -#define VXGE_HAL_SERDES_CFG1_LOS_LVL(val) vBIT(val, 27, 5) -/* 0x06388 */ u64 serdes_cfg2; -#define VXGE_HAL_SERDES_CFG2_TX_0_BOOST(val) vBIT(val, 0, 4) -#define VXGE_HAL_SERDES_CFG2_TX_1_BOOST(val) vBIT(val, 4, 4) -#define VXGE_HAL_SERDES_CFG2_TX_2_BOOST(val) vBIT(val, 8, 4) -#define VXGE_HAL_SERDES_CFG2_TX_3_BOOST(val) vBIT(val, 12, 4) -#define VXGE_HAL_SERDES_CFG2_TX_4_BOOST(val) vBIT(val, 16, 4) -#define VXGE_HAL_SERDES_CFG2_TX_5_BOOST(val) vBIT(val, 20, 4) -#define VXGE_HAL_SERDES_CFG2_TX_6_BOOST(val) vBIT(val, 24, 4) -#define VXGE_HAL_SERDES_CFG2_TX_7_BOOST(val) vBIT(val, 28, 4) -#define VXGE_HAL_SERDES_CFG2_TX_0_ATTEN(val) vBIT(val, 33, 3) -#define VXGE_HAL_SERDES_CFG2_TX_1_ATTEN(val) vBIT(val, 37, 3) -#define VXGE_HAL_SERDES_CFG2_TX_2_ATTEN(val) vBIT(val, 41, 3) -#define VXGE_HAL_SERDES_CFG2_TX_3_ATTEN(val) vBIT(val, 45, 3) -#define VXGE_HAL_SERDES_CFG2_TX_4_ATTEN(val) vBIT(val, 49, 3) -#define VXGE_HAL_SERDES_CFG2_TX_5_ATTEN(val) vBIT(val, 53, 3) -#define VXGE_HAL_SERDES_CFG2_TX_6_ATTEN(val) vBIT(val, 57, 3) -#define VXGE_HAL_SERDES_CFG2_TX_7_ATTEN(val) vBIT(val, 61, 3) -/* 0x06390 */ u64 serdes_cfg3; -#define VXGE_HAL_SERDES_CFG3_TX_0_EDGERATE(val) vBIT(val, 2, 2) -#define VXGE_HAL_SERDES_CFG3_TX_1_EDGERATE(val) vBIT(val, 6, 2) -#define VXGE_HAL_SERDES_CFG3_TX_2_EDGERATE(val) vBIT(val, 10, 2) -#define VXGE_HAL_SERDES_CFG3_TX_3_EDGERATE(val) vBIT(val, 14, 2) -#define VXGE_HAL_SERDES_CFG3_TX_4_EDGERATE(val) vBIT(val, 18, 2) -#define VXGE_HAL_SERDES_CFG3_TX_5_EDGERATE(val) vBIT(val, 22, 2) -#define VXGE_HAL_SERDES_CFG3_TX_6_EDGERATE(val) vBIT(val, 26, 2) -#define VXGE_HAL_SERDES_CFG3_TX_7_EDGERATE(val) vBIT(val, 30, 2) -#define VXGE_HAL_SERDES_CFG3_RX_0_EQ_VAL(val) vBIT(val, 33, 3) -#define VXGE_HAL_SERDES_CFG3_RX_1_EQ_VAL(val) vBIT(val, 37, 3) -#define VXGE_HAL_SERDES_CFG3_RX_2_EQ_VAL(val) vBIT(val, 41, 3) -#define VXGE_HAL_SERDES_CFG3_RX_3_EQ_VAL(val) vBIT(val, 45, 3) -#define VXGE_HAL_SERDES_CFG3_RX_4_EQ_VAL(val) vBIT(val, 49, 3) -#define VXGE_HAL_SERDES_CFG3_RX_5_EQ_VAL(val) vBIT(val, 53, 3) -#define VXGE_HAL_SERDES_CFG3_RX_6_EQ_VAL(val) vBIT(val, 57, 3) -#define VXGE_HAL_SERDES_CFG3_RX_7_EQ_VAL(val) vBIT(val, 61, 3) -/* 0x06398 */ u64 vhlabel_to_vplane_cfg[17]; -#define VXGE_HAL_VHLABEL_TO_VPLANE_CFG_VHLABEL_TO_VPLANE_CFG(val)\ - vBIT(val, 3, 5) -/* 0x06420 */ u64 mrpcim_to_srpcim_vplane_wmsg[17]; -#define VXGE_HAL_MRPCIM_TO_SRPCIM_VPLANE_WMSG_WMSG(val) vBIT(val, 0, 64) -/* 0x064a8 */ u64 mrpcim_to_srpcim_vplane_wmsg_trig[17]; -#define VXGE_HAL_MRPCIM_TO_SRPCIM_VPLANE_WMSG_TRIG_TRIG mBIT(0) -/* 0x06530 */ u64 debug_stats0; -#define VXGE_HAL_DEBUG_STATS0_RSTDROP_MSG(val) vBIT(val, 0, 32) -#define VXGE_HAL_DEBUG_STATS0_RSTDROP_CPL(val) vBIT(val, 32, 32) -/* 0x06538 */ u64 debug_stats1; -#define VXGE_HAL_DEBUG_STATS1_RSTDROP_CLIENT0(val) vBIT(val, 0, 32) -#define VXGE_HAL_DEBUG_STATS1_RSTDROP_CLIENT1(val) vBIT(val, 32, 32) -/* 0x06540 */ u64 debug_stats2; -#define VXGE_HAL_DEBUG_STATS2_RSTDROP_CLIENT2(val) vBIT(val, 0, 32) -/* 0x06548 */ u64 debug_stats3_vplane[17]; -#define VXGE_HAL_DEBUG_STATS3_VPLANE_DEPL_PH(val) vBIT(val, 0, 16) -#define VXGE_HAL_DEBUG_STATS3_VPLANE_DEPL_NPH(val) vBIT(val, 16, 16) -#define VXGE_HAL_DEBUG_STATS3_VPLANE_DEPL_CPLH(val) vBIT(val, 32, 16) -/* 0x065d0 */ u64 debug_stats4_vplane[17]; -#define VXGE_HAL_DEBUG_STATS4_VPLANE_DEPL_PD(val) vBIT(val, 0, 16) -#define VXGE_HAL_DEBUG_STATS4_VPLANE_DEPL_NPD(val) vBIT(val, 16, 16) -#define VXGE_HAL_DEBUG_STATS4_VPLANE_DEPL_CPLD(val) vBIT(val, 32, 16) - u8 unused06b00[0x06b00 - 0x06658]; - -/* 0x06b00 */ u64 rc_rxdmem_end_ofst[16]; -#define VXGE_HAL_RC_RXDMEM_END_OFST_RC_RXDMEM_END_OFST(val) vBIT(val, 49, 8) - u8 unused07000[0x07000 - 0x06b80]; - -/* 0x07000 */ u64 mrpcim_general_int_status; -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PIC_INT mBIT(0) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PCI_INT mBIT(1) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_RTDMA_INT mBIT(2) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_WRDMA_INT mBIT(3) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3CMCT_INT mBIT(4) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_GCMG1_INT mBIT(5) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_GCMG2_INT mBIT(6) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_GCMG3_INT mBIT(7) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3CMIFL_INT mBIT(8) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3CMIFU_INT mBIT(9) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PCMG1_INT mBIT(10) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PCMG2_INT mBIT(11) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PCMG3_INT mBIT(12) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_XMAC_INT mBIT(13) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_RXMAC_INT mBIT(14) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_TMAC_INT mBIT(15) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3FBIF_INT mBIT(16) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_FBMC_INT mBIT(17) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3FBCT_INT mBIT(18) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_TPA_INT mBIT(19) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_DRBELL_INT mBIT(20) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_ONE_INT mBIT(21) -#define VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_MSG_INT mBIT(22) -/* 0x07008 */ u64 mrpcim_general_int_mask; -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_PIC_INT mBIT(0) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_PCI_INT mBIT(1) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_RTDMA_INT mBIT(2) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_WRDMA_INT mBIT(3) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_G3CMCT_INT mBIT(4) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_GCMG1_INT mBIT(5) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_GCMG2_INT mBIT(6) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_GCMG3_INT mBIT(7) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_G3CMIFL_INT mBIT(8) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_G3CMIFU_INT mBIT(9) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_PCMG1_INT mBIT(10) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_PCMG2_INT mBIT(11) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_PCMG3_INT mBIT(12) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_XMAC_INT mBIT(13) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_RXMAC_INT mBIT(14) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_TMAC_INT mBIT(15) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_G3FBIF_INT mBIT(16) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_FBMC_INT mBIT(17) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_G3FBCT_INT mBIT(18) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_TPA_INT mBIT(19) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_DRBELL_INT mBIT(20) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_ONE_INT mBIT(21) -#define VXGE_HAL_MRPCIM_GENERAL_INT_MASK_MSG_INT mBIT(22) -/* 0x07010 */ u64 mrpcim_ppif_int_status; -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_INI_ERRORS_INI_INT mBIT(3) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_DMA_ERRORS_DMA_INT mBIT(7) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_TGT_ERRORS_TGT_INT mBIT(11) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CONFIG_ERRORS_CONFIG_INT mBIT(15) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_CRDT_INT mBIT(19) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_MRPCIM_GENERAL_ERRORS_GENERAL_INT\ - mBIT(23) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_PLL_ERRORS_PLL_INT mBIT(27) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE0_CRD_INT_VPLANE0_INT\ - mBIT(31) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE1_CRD_INT_VPLANE1_INT\ - mBIT(32) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE2_CRD_INT_VPLANE2_INT\ - mBIT(33) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE3_CRD_INT_VPLANE3_INT\ - mBIT(34) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE4_CRD_INT_VPLANE4_INT\ - mBIT(35) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE5_CRD_INT_VPLANE5_INT\ - mBIT(36) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE6_CRD_INT_VPLANE6_INT\ - mBIT(37) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE7_CRD_INT_VPLANE7_INT\ - mBIT(38) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE8_CRD_INT_VPLANE8_INT\ - mBIT(39) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE9_CRD_INT_VPLANE9_INT\ - mBIT(40) -#define \ - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE10_CRD_INT_VPLANE10_INT\ - mBIT(41) -#define \ - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE11_CRD_INT_VPLANE11_INT\ - mBIT(42) -#define \ - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE12_CRD_INT_VPLANE12_INT\ - mBIT(43) -#define \ - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE13_CRD_INT_VPLANE13_INT\ - mBIT(44) -#define \ - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE14_CRD_INT_VPLANE14_INT\ - mBIT(45) -#define \ - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE15_CRD_INT_VPLANE15_INT\ - mBIT(46) -#define \ - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_VPLANE16_CRD_INT_VPLANE16_INT\ - mBIT(47) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_SRPCIM_TO_MRPCIM_ALARM_INT mBIT(51) -#define VXGE_HAL_MRPCIM_PPIF_INT_STATUS_VPATH_TO_MRPCIM_ALARM_INT mBIT(55) -/* 0x07018 */ u64 mrpcim_ppif_int_mask; - u8 unused07028[0x07028 - 0x07020]; - -/* 0x07028 */ u64 ini_errors_reg; -#define VXGE_HAL_INI_ERRORS_REG_SCPL_CPL_TIMEOUT_UNUSED_TAG mBIT(3) -#define VXGE_HAL_INI_ERRORS_REG_SCPL_CPL_TIMEOUT mBIT(7) -#define VXGE_HAL_INI_ERRORS_REG_DCPL_FSM_ERR mBIT(11) -#define VXGE_HAL_INI_ERRORS_REG_DCPL_POISON mBIT(12) -#define VXGE_HAL_INI_ERRORS_REG_DCPL_UNSUPPORTED mBIT(15) -#define VXGE_HAL_INI_ERRORS_REG_DCPL_ABORT mBIT(19) -#define VXGE_HAL_INI_ERRORS_REG_INI_TLP_ABORT mBIT(23) -#define VXGE_HAL_INI_ERRORS_REG_INI_DLLP_ABORT mBIT(27) -#define VXGE_HAL_INI_ERRORS_REG_INI_ECRC_ERR mBIT(31) -#define VXGE_HAL_INI_ERRORS_REG_INI_BUF_DB_ERR mBIT(35) -#define VXGE_HAL_INI_ERRORS_REG_INI_BUF_SG_ERR mBIT(39) -#define VXGE_HAL_INI_ERRORS_REG_INI_DATA_OVERFLOW mBIT(43) -#define VXGE_HAL_INI_ERRORS_REG_INI_HDR_OVERFLOW mBIT(47) -#define VXGE_HAL_INI_ERRORS_REG_INI_MRD_SYS_DROP mBIT(51) -#define VXGE_HAL_INI_ERRORS_REG_INI_MWR_SYS_DROP mBIT(55) -#define VXGE_HAL_INI_ERRORS_REG_INI_MRD_CLIENT_DROP mBIT(59) -#define VXGE_HAL_INI_ERRORS_REG_INI_MWR_CLIENT_DROP mBIT(63) -/* 0x07030 */ u64 ini_errors_mask; -/* 0x07038 */ u64 ini_errors_alarm; -/* 0x07040 */ u64 dma_errors_reg; -#define VXGE_HAL_DMA_ERRORS_REG_RDARB_FSM_ERR mBIT(3) -#define VXGE_HAL_DMA_ERRORS_REG_WRARB_FSM_ERR mBIT(7) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_WR_HDR_OVERFLOW mBIT(8) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_WR_HDR_UNDERFLOW mBIT(9) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_WR_DATA_OVERFLOW mBIT(10) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_WR_DATA_UNDERFLOW mBIT(11) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_MSG_WR_HDR_OVERFLOW mBIT(12) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_MSG_WR_HDR_UNDERFLOW mBIT(13) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_MSG_WR_DATA_OVERFLOW mBIT(14) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_MSG_WR_DATA_UNDERFLOW mBIT(15) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_STATS_WR_HDR_OVERFLOW mBIT(16) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_STATS_WR_HDR_UNDERFLOW mBIT(17) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_STATS_WR_DATA_OVERFLOW mBIT(18) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_STATS_WR_DATA_UNDERFLOW mBIT(19) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_WR_HDR_OVERFLOW mBIT(20) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_WR_HDR_UNDERFLOW mBIT(21) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_WR_DATA_OVERFLOW mBIT(22) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_WR_DATA_UNDERFLOW mBIT(23) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_RD_HDR_OVERFLOW mBIT(24) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_RD_HDR_UNDERFLOW mBIT(25) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_RD_HDR_OVERFLOW mBIT(28) -#define VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_RD_HDR_UNDERFLOW mBIT(29) -#define VXGE_HAL_DMA_ERRORS_REG_DBLGEN_FSM_ERR mBIT(32) -#define VXGE_HAL_DMA_ERRORS_REG_DBLGEN_CREDIT_FSM_ERR mBIT(33) -#define VXGE_HAL_DMA_ERRORS_REG_DBLGEN_DMA_WRR_SM_ERR mBIT(34) -/* 0x07048 */ u64 dma_errors_mask; -/* 0x07050 */ u64 dma_errors_alarm; -/* 0x07058 */ u64 tgt_errors_reg; -#define VXGE_HAL_TGT_ERRORS_REG_TGT_VENDOR_MSG mBIT(0) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_MSG_UNLOCK mBIT(1) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_ILLEGAL_TLP_BE mBIT(2) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_BOOT_WRITE mBIT(3) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_PIF_WR_CROSS_QWRANGE mBIT(4) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_PIF_READ_CROSS_QWRANGE mBIT(5) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_KDFC_READ mBIT(6) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_USDC_READ mBIT(7) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_USDC_WR_CROSS_QWRANGE mBIT(8) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_MSIX_BEYOND_RANGE mBIT(9) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_WR_TO_KDFC_POISON mBIT(10) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_WR_TO_USDC_POISON mBIT(11) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_WR_TO_PIF_POISON mBIT(12) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_WR_TO_MSIX_POISON mBIT(13) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_WR_TO_MRIOV_POISON mBIT(14) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_NOT_MEM_TLP mBIT(15) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_UNKNOWN_MEM_TLP mBIT(16) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_REQ_FSM_ERR mBIT(17) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_CPL_FSM_ERR mBIT(18) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_KDFC_PROT_ERR mBIT(19) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_SWIF_PROT_ERR mBIT(20) -#define VXGE_HAL_TGT_ERRORS_REG_TGT_MRIOV_MEM_MAP_CFG_ERR mBIT(21) -/* 0x07060 */ u64 tgt_errors_mask; -/* 0x07068 */ u64 tgt_errors_alarm; -/* 0x07070 */ u64 config_errors_reg; -#define VXGE_HAL_CONFIG_ERRORS_REG_I2C_ILLEGAL_STOP_COND mBIT(3) -#define VXGE_HAL_CONFIG_ERRORS_REG_I2C_ILLEGAL_START_COND mBIT(7) -#define VXGE_HAL_CONFIG_ERRORS_REG_I2C_EXP_RD_CNT mBIT(11) -#define VXGE_HAL_CONFIG_ERRORS_REG_I2C_EXTRA_CYCLE mBIT(15) -#define VXGE_HAL_CONFIG_ERRORS_REG_I2C_MAIN_FSM_ERR mBIT(19) -#define VXGE_HAL_CONFIG_ERRORS_REG_I2C_REQ_COLLISION mBIT(23) -#define VXGE_HAL_CONFIG_ERRORS_REG_I2C_REG_FSM_ERR mBIT(27) -#define VXGE_HAL_CONFIG_ERRORS_REG_CFGM_I2C_TIMEOUT mBIT(31) -#define VXGE_HAL_CONFIG_ERRORS_REG_RIC_I2C_TIMEOUT mBIT(35) -#define VXGE_HAL_CONFIG_ERRORS_REG_CFGM_FSM_ERR mBIT(39) -#define VXGE_HAL_CONFIG_ERRORS_REG_RIC_FSM_ERR mBIT(43) -#define VXGE_HAL_CONFIG_ERRORS_REG_PIFM_ILLEGAL_ACCESS mBIT(47) -#define VXGE_HAL_CONFIG_ERRORS_REG_PIFM_TIMEOUT mBIT(51) -#define VXGE_HAL_CONFIG_ERRORS_REG_PIFM_FSM_ERR mBIT(55) -#define VXGE_HAL_CONFIG_ERRORS_REG_PIFM_TO_FSM_ERR mBIT(59) -#define VXGE_HAL_CONFIG_ERRORS_REG_RIC_RIC_RD_TIMEOUT mBIT(63) -/* 0x07078 */ u64 config_errors_mask; -/* 0x07080 */ u64 config_errors_alarm; - u8 unused07090[0x07090 - 0x07088]; - -/* 0x07090 */ u64 crdt_errors_reg; -#define VXGE_HAL_CRDT_ERRORS_REG_WRCRDTARB_FSM_ERR mBIT(11) -#define VXGE_HAL_CRDT_ERRORS_REG_WRCRDTARB_INTCTL_ILLEGAL_CRD_DEAL mBIT(15) -#define VXGE_HAL_CRDT_ERRORS_REG_WRCRDTARB_PDA_ILLEGAL_CRD_DEAL mBIT(19) -#define VXGE_HAL_CRDT_ERRORS_REG_WRCRDTARB_PCI_MSG_ILLEGAL_CRD_DEAL mBIT(23) -#define VXGE_HAL_CRDT_ERRORS_REG_RDCRDTARB_FSM_ERR mBIT(35) -#define VXGE_HAL_CRDT_ERRORS_REG_RDCRDTARB_RDA_ILLEGAL_CRD_DEAL mBIT(39) -#define VXGE_HAL_CRDT_ERRORS_REG_RDCRDTARB_PDA_ILLEGAL_CRD_DEAL mBIT(43) -#define VXGE_HAL_CRDT_ERRORS_REG_RDCRDTARB_DBLGEN_ILLEGAL_CRD_DEAL mBIT(47) -/* 0x07098 */ u64 crdt_errors_mask; -/* 0x070a0 */ u64 crdt_errors_alarm; - u8 unused070b0[0x070b0 - 0x070a8]; - -/* 0x070b0 */ u64 mrpcim_general_errors_reg; -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_STATSB_FSM_ERR mBIT(3) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_XGEN_FSM_ERR mBIT(7) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_XMEM_FSM_ERR mBIT(11) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_KDFCCTL_FSM_ERR mBIT(15) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_MRIOVCTL_FSM_ERR mBIT(19) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_SPI_FLSH_ERR mBIT(23) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_SPI_IIC_ACK_ERR mBIT(27) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_SPI_IIC_CHKSUM_ERR mBIT(31) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_INI_SERR_DET mBIT(35) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_INTCTL_MSIX_FSM_ERR mBIT(39) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_INTCTL_MSI_OVERFLOW mBIT(43) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_PPIF_PCI_NOT_FLUSH_SW_RESET\ - mBIT(47) -#define VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_PPIF_SW_RESET_FSM_ERR mBIT(51) -/* 0x070b8 */ u64 mrpcim_general_errors_mask; -/* 0x070c0 */ u64 mrpcim_general_errors_alarm; - u8 unused070d0[0x070d0 - 0x070c8]; - -/* 0x070d0 */ u64 pll_errors_reg; -#define VXGE_HAL_PLL_ERRORS_REG_CORE_CMG_PLL_OOL mBIT(3) -#define VXGE_HAL_PLL_ERRORS_REG_CORE_FB_PLL_OOL mBIT(7) -#define VXGE_HAL_PLL_ERRORS_REG_CORE_X_PLL_OOL mBIT(11) -/* 0x070d8 */ u64 pll_errors_mask; -/* 0x070e0 */ u64 pll_errors_alarm; -/* 0x070e8 */ u64 srpcim_to_mrpcim_alarm_reg; -#define VXGE_HAL_SRPCIM_TO_MRPCIM_ALARM_REG_ALARM(val) vBIT(val, 0, 17) -/* 0x070f0 */ u64 srpcim_to_mrpcim_alarm_mask; -/* 0x070f8 */ u64 srpcim_to_mrpcim_alarm_alarm; -/* 0x07100 */ u64 vpath_to_mrpcim_alarm_reg; -#define VXGE_HAL_VPATH_TO_MRPCIM_ALARM_REG_ALARM(val) vBIT(val, 0, 17) -/* 0x07108 */ u64 vpath_to_mrpcim_alarm_mask; -/* 0x07110 */ u64 vpath_to_mrpcim_alarm_alarm; - u8 unused07128[0x07128 - 0x07118]; - -/* 0x07128 */ u64 crdt_errors_vplane_reg[17]; -#define VXGE_HAL_CRDT_ERRORS_VPLANE_REG_WRCRDTARB_P_H_CONSUME_CRDT_ERR mBIT(3) -#define VXGE_HAL_CRDT_ERRORS_VPLANE_REG_WRCRDTARB_P_D_CONSUME_CRDT_ERR mBIT(7) -#define VXGE_HAL_CRDT_ERRORS_VPLANE_REG_WRCRDTARB_P_H_RETURN_CRDT_ERR mBIT(11) -#define VXGE_HAL_CRDT_ERRORS_VPLANE_REG_WRCRDTARB_P_D_RETURN_CRDT_ERR mBIT(15) -#define VXGE_HAL_CRDT_ERRORS_VPLANE_REG_RDCRDTARB_NP_H_CONSUME_CRDT_ERR mBIT(19) -#define VXGE_HAL_CRDT_ERRORS_VPLANE_REG_RDCRDTARB_NP_H_RETURN_CRDT_ERR mBIT(23) -#define VXGE_HAL_CRDT_ERRORS_VPLANE_REG_RDCRDTARB_TAG_CONSUME_TAG_ERR mBIT(27) -#define VXGE_HAL_CRDT_ERRORS_VPLANE_REG_RDCRDTARB_TAG_RETURN_TAG_ERR mBIT(31) -/* 0x07130 */ u64 crdt_errors_vplane_mask[17]; -/* 0x07138 */ u64 crdt_errors_vplane_alarm[17]; - u8 unused072f0[0x072f0 - 0x072c0]; - -/* 0x072f0 */ u64 mrpcim_rst_in_prog; -#define VXGE_HAL_MRPCIM_RST_IN_PROG_MRPCIM_RST_IN_PROG mBIT(7) -/* 0x072f8 */ u64 mrpcim_reg_modified; -#define VXGE_HAL_MRPCIM_REG_MODIFIED_MRPCIM_REG_MODIFIED mBIT(7) -/* 0x07300 */ u64 split_table_status1; -#define VXGE_HAL_SPLIT_TABLE_STATUS1_SCPL_TAG_ENTRY1(val) vBIT(val, 0, 64) -/* 0x07308 */ u64 split_table_status2; -#define VXGE_HAL_SPLIT_TABLE_STATUS2_SCPL_TAG_ENTRY2(val) vBIT(val, 0, 64) -/* 0x07310 */ u64 split_table_status3; -#define VXGE_HAL_SPLIT_TABLE_STATUS3_SCPL_TAG_ENTRY3(val) vBIT(val, 0, 64) -/* 0x07318 */ u64 mrpcim_general_status1; -#define VXGE_HAL_MRPCIM_GENERAL_STATUS1_INI_RCPL_ERRSYND(val) vBIT(val, 0, 8) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS1_XGMAC_MISC_INT_ALARM mBIT(11) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS1_SCPL_NUM_OUTSTANDING_RDS(val)\ - vBIT(val, 18, 6) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS1_TGT_VENDOR_MSG_PAYLOAD(val)\ - vBIT(val, 32, 32) -/* 0x07320 */ u64 mrpcim_general_status2; -#define VXGE_HAL_MRPCIM_GENERAL_STATUS2_CFGM_TIMEOUT_ADDR(val) vBIT(val, 6, 10) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS2_RIC_TIMEOUT_ADDR(val) vBIT(val, 22, 10) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS2_PIFM_ILLEGAL_CLIENT(val)\ - vBIT(val, 34, 2) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS2_PIFM_ILLEGAL_RD_WRN mBIT(39) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS2_PIFM_ILLEGAL_ADDR(val) vBIT(val, 44, 20) -/* 0x07328 */ u64 mrpcim_general_status3; -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_PIFM_TIMEOUT_ADDR(val) vBIT(val, 0, 20) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_TGT_NOT_MEM_TLP_FMT(val)\ - vBIT(val, 21, 2) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_TGT_NOT_MEM_TLP_TYPE(val)\ - vBIT(val, 23, 5) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_TGT_UNKNOWN_MEM_TLP_FMT(val)\ - vBIT(val, 29, 2) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_TGT_UNKNOWN_MEM_TLP_TYPE(val)\ - vBIT(val, 31, 5) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE0\ - mBIT(40) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE1\ - mBIT(41) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE2\ - mBIT(42) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE3\ - mBIT(43) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE4\ - mBIT(44) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE5\ - mBIT(45) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE6\ - mBIT(46) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE7\ - mBIT(47) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE8\ - mBIT(48) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE9\ - mBIT(49) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE10\ - mBIT(50) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE11\ - mBIT(51) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE12\ - mBIT(52) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE13\ - mBIT(53) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE14\ - mBIT(54) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE15\ - mBIT(55) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_TAGS_FOR_VPLANE16\ - mBIT(56) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_TAGS_DEPLETED mBIT(60) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_RDA_TAGS mBIT(61) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_PDA_TAGS mBIT(62) -#define VXGE_HAL_MRPCIM_GENERAL_STATUS3_RDCRDTARB_REACHED_MAX_DBLGEN_TAGS\ - mBIT(63) - u8 unused07338[0x07338 - 0x07330]; - -/* 0x07338 */ u64 test_status; -#define VXGE_HAL_TEST_STATUS_PERR_INS_TX_WR_EP_DONE mBIT(3) -#define VXGE_HAL_TEST_STATUS_PERR_INS_TX_RD_EP_DONE mBIT(7) -#define VXGE_HAL_TEST_STATUS_PERR_INS_TX_CPL_EP_DONE mBIT(11) -#define VXGE_HAL_TEST_STATUS_PERR_INS_TX_ECRCERR_DONE mBIT(15) -#define VXGE_HAL_TEST_STATUS_PERR_INS_TX_LCRCERR_DONE mBIT(19) -#define VXGE_HAL_TEST_STATUS_PERR_INS_RX_ECRCERR_DONE mBIT(23) -#define VXGE_HAL_TEST_STATUS_PERR_INS_RX_LCRCERR_DONE mBIT(27) - u8 unused07348[0x07348 - 0x07340]; - -/* 0x07348 */ u64 kdfcctl_dbg_status; -#define VXGE_HAL_KDFCCTL_DBG_STATUS_KDFCCTL_ADDR_ERR(val) vBIT(val, 2, 22) -#define VXGE_HAL_KDFCCTL_DBG_STATUS_KDFCCTL_FIFO_NO_ERR(val) vBIT(val, 26, 6) -/* 0x07350 */ u64 msix_addr; -#define VXGE_HAL_MSIX_ADDR_MSIX_ADDR(val) vBIT(val, 0, 64) -/* 0x07358 */ u64 msix_table; -#define VXGE_HAL_MSIX_TABLE_DATA(val) vBIT(val, 0, 32) -#define VXGE_HAL_MSIX_TABLE_MASK mBIT(63) -/* 0x07360 */ u64 msix_ctl; -#define VXGE_HAL_MSIX_CTL_VECTOR_NO(val) vBIT(val, 1, 7) -#define VXGE_HAL_MSIX_CTL_WRITE_OR_READ mBIT(15) -/* 0x07368 */ u64 msix_access_table; -#define VXGE_HAL_MSIX_ACCESS_TABLE_MSIX_ACCESS_TABLE mBIT(0) - u8 unused07378[0x07378 - 0x07370]; - -/* 0x07378 */ u64 write_arb_pending; -#define VXGE_HAL_WRITE_ARB_PENDING_WRARB_WRDMA mBIT(3) -#define VXGE_HAL_WRITE_ARB_PENDING_WRARB_RTDMA mBIT(7) -#define VXGE_HAL_WRITE_ARB_PENDING_WRARB_MSG mBIT(11) -#define VXGE_HAL_WRITE_ARB_PENDING_WRARB_STATSB mBIT(15) -#define VXGE_HAL_WRITE_ARB_PENDING_WRARB_INTCTL mBIT(19) -/* 0x07380 */ u64 read_arb_pending; -#define VXGE_HAL_READ_ARB_PENDING_RDARB_WRDMA mBIT(3) -#define VXGE_HAL_READ_ARB_PENDING_RDARB_RTDMA mBIT(7) -#define VXGE_HAL_READ_ARB_PENDING_RDARB_DBLGEN mBIT(11) -/* 0x07388 */ u64 dmaif_dmadbl_pending; -#define VXGE_HAL_DMAIF_DMADBL_PENDING_DMAIF_WRDMA_WR mBIT(0) -#define VXGE_HAL_DMAIF_DMADBL_PENDING_DMAIF_WRDMA_RD mBIT(1) -#define VXGE_HAL_DMAIF_DMADBL_PENDING_DMAIF_RTDMA_WR mBIT(2) -#define VXGE_HAL_DMAIF_DMADBL_PENDING_DMAIF_RTDMA_RD mBIT(3) -#define VXGE_HAL_DMAIF_DMADBL_PENDING_DMAIF_MSG_WR mBIT(4) -#define VXGE_HAL_DMAIF_DMADBL_PENDING_DMAIF_STATS_WR mBIT(5) -#define VXGE_HAL_DMAIF_DMADBL_PENDING_DBLGEN_IN_PROG(val) vBIT(val, 13, 51) -/* 0x07390 */ u64 wrcrdtarb_status0_vplane[17]; -#define VXGE_HAL_WRCRDTARB_STATUS0_VPLANE_WRCRDTARB_ABS_AVAIL_P_H(val)\ - vBIT(val, 0, 8) -/* 0x07418 */ u64 wrcrdtarb_status1_vplane[17]; -#define VXGE_HAL_WRCRDTARB_STATUS1_VPLANE_WRCRDTARB_ABS_AVAIL_P_D(val)\ - vBIT(val, 4, 12) - u8 unused07500[0x07500 - 0x074a0]; - -/* 0x07500 */ u64 mrpcim_general_cfg1; -#define VXGE_HAL_MRPCIM_GENERAL_CFG1_CLEAR_SERR mBIT(7) -/* 0x07508 */ u64 mrpcim_general_cfg2; -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_INS_TX_WR_TD mBIT(3) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_INS_TX_RD_TD mBIT(7) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_INS_TX_CPL_TD mBIT(11) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_INI_TIMEOUT_EN_MWR mBIT(15) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_INI_TIMEOUT_EN_MRD mBIT(19) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_IGNORE_VPATH_RST_FOR_MSIX mBIT(23) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_FLASH_READ_MSB mBIT(27) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_DIS_HOST_PIPELINE_WR mBIT(31) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_MRPCIM_STATS_ENABLE mBIT(43) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_MRPCIM_STATS_MAP_TO_VPATH(val)\ - vBIT(val, 47, 5) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_EN_BLOCK_MSIX_DUE_TO_SERR mBIT(55) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_FORCE_SENDING_INTA mBIT(59) -#define VXGE_HAL_MRPCIM_GENERAL_CFG2_DIS_SWIF_PROT_ON_RDS mBIT(63) -/* 0x07510 */ u64 mrpcim_general_cfg3; -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_PROTECTION_CA_OR_UNSUPN mBIT(0) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_ILLEGAL_RD_CA_OR_UNSUPN mBIT(3) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_RD_BYTE_SWAPEN mBIT(7) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_RD_BIT_FLIPEN mBIT(11) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_WR_BYTE_SWAPEN mBIT(15) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_WR_BIT_FLIPEN mBIT(19) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_MR_MAX_MVFS(val) vBIT(val, 20, 16) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_MR_MVF_TBL_SIZE(val) vBIT(val, 36, 16) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_PF0_SW_RESET_EN mBIT(55) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_REG_MODIFIED_CFG(val) vBIT(val, 56, 2) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_CPL_ECC_ENABLE_N mBIT(59) -#define VXGE_HAL_MRPCIM_GENERAL_CFG3_BYPASS_DAISY_CHAIN mBIT(63) -/* 0x07518 */ u64 mrpcim_stats_start_host_addr; -#define VXGE_HAL_MRPCIM_STATS_START_HOST_ADDR_MRPCIM_STATS_START_HOST_ADDR(val)\ - vBIT(val, 0, 57) -/* 0x07520 */ u64 asic_mode; -#define VXGE_HAL_ASIC_MODE_PIC(val) vBIT(val, 2, 2) -/* 0x07528 */ u64 dis_fw_pipeline_wr; -#define VXGE_HAL_DIS_FW_PIPELINE_WR_DIS_FW_PIPELINE_WR mBIT(0) -/* 0x07530 */ u64 ini_timeout_val; -#define VXGE_HAL_INI_TIMEOUT_VAL_MWR(val) vBIT(val, 0, 32) -#define VXGE_HAL_INI_TIMEOUT_VAL_MRD(val) vBIT(val, 32, 32) -/* 0x07538 */ u64 pic_arbiter_cfg; -#define VXGE_HAL_PIC_ARBITER_CFG_DMA_READ_EN mBIT(3) -#define VXGE_HAL_PIC_ARBITER_CFG_DMA_WRITE_EN mBIT(7) -#define VXGE_HAL_PIC_ARBITER_CFG_DBLGEN_WRR_EN mBIT(11) -#define VXGE_HAL_PIC_ARBITER_CFG_WRCRDTARB_EN mBIT(15) -#define VXGE_HAL_PIC_ARBITER_CFG_RDCRDTARB_EN mBIT(19) -/* 0x07540 */ u64 read_arbiter; -#define VXGE_HAL_READ_ARBITER_WRDMA_PRIORITY(val) vBIT(val, 2, 2) -#define VXGE_HAL_READ_ARBITER_RTDMA_PRIORITY(val) vBIT(val, 6, 2) -#define VXGE_HAL_READ_ARBITER_DBLGEN_PRIORITY(val) vBIT(val, 10, 2) -#define VXGE_HAL_READ_ARBITER_CALSTATE0_PRIORITY(val) vBIT(val, 14, 2) -#define VXGE_HAL_READ_ARBITER_CALSTATE1_PRIORITY(val) vBIT(val, 18, 2) -#define VXGE_HAL_READ_ARBITER_CALSTATE2_PRIORITY(val) vBIT(val, 22, 2) -#define VXGE_HAL_READ_ARBITER_CALSTATE3_PRIORITY(val) vBIT(val, 26, 2) -#define VXGE_HAL_READ_ARBITER_CALSTATE4_PRIORITY(val) vBIT(val, 30, 2) -#define VXGE_HAL_READ_ARBITER_CALSTATE5_PRIORITY(val) vBIT(val, 34, 2) -#define VXGE_HAL_READ_ARBITER_CHECK_PRIORITY_MATCH_ONLY mBIT(39) -/* 0x07548 */ u64 write_arbiter; -#define VXGE_HAL_WRITE_ARBITER_WRDMA_PRIORITY(val) vBIT(val, 2, 2) -#define VXGE_HAL_WRITE_ARBITER_RTDMA_PRIORITY(val) vBIT(val, 6, 2) -#define VXGE_HAL_WRITE_ARBITER_STATS_PRIORITY(val) vBIT(val, 10, 2) -#define VXGE_HAL_WRITE_ARBITER_MSG_PRIORITY(val) vBIT(val, 14, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE0_PRIORITY(val) vBIT(val, 18, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE1_PRIORITY(val) vBIT(val, 22, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE2_PRIORITY(val) vBIT(val, 26, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE3_PRIORITY(val) vBIT(val, 30, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE4_PRIORITY(val) vBIT(val, 34, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE5_PRIORITY(val) vBIT(val, 38, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE6_PRIORITY(val) vBIT(val, 42, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE7_PRIORITY(val) vBIT(val, 46, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE8_PRIORITY(val) vBIT(val, 50, 2) -#define VXGE_HAL_WRITE_ARBITER_CALSTATE9_PRIORITY(val) vBIT(val, 52, 2) -#define VXGE_HAL_WRITE_ARBITER_CHECK_PRIORITY_MATCH_ONLY mBIT(55) -/* 0x07550 */ u64 adapter_control; -#define VXGE_HAL_ADAPTER_CONTROL_ADAPTER_EN mBIT(7) -#define VXGE_HAL_ADAPTER_CONTROL_DISABLE_RIC mBIT(49) -#define VXGE_HAL_ADAPTER_CONTROL_ECC_ENABLE_N mBIT(55) -/* 0x07558 */ u64 program_cfg0; -#define VXGE_HAL_PROGRAM_CFG0_I2C_SLAVE_ADDR(val) vBIT(val, 1, 7) -#define VXGE_HAL_PROGRAM_CFG0_CFGM_TIMEOUT_EN mBIT(11) -#define VXGE_HAL_PROGRAM_CFG0_PIFM_TIMEOUT_EN mBIT(15) -/* 0x07560 */ u64 program_cfg1; -#define VXGE_HAL_PROGRAM_CFG1_CFGM_TIMEOUT_LOAD_VAL(val) vBIT(val, 0, 32) -#define VXGE_HAL_PROGRAM_CFG1_PIFM_TIMEOUT_LOAD_VAL(val) vBIT(val, 32, 32) -/* 0x07568 */ u64 dblgen_wrr_cfg1; -#define VXGE_HAL_DBLGEN_WRR_CFG1_CTRL_SS_0_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG1_CTRL_SS_1_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG1_CTRL_SS_2_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG1_CTRL_SS_3_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG1_CTRL_SS_4_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG1_CTRL_SS_5_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG1_CTRL_SS_6_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG1_CTRL_SS_7_NUM(val) vBIT(val, 59, 5) -/* 0x07570 */ u64 dblgen_wrr_cfg2; -#define VXGE_HAL_DBLGEN_WRR_CFG2_CTRL_SS_8_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG2_CTRL_SS_9_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG2_CTRL_SS_10_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG2_CTRL_SS_11_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG2_CTRL_SS_12_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG2_CTRL_SS_13_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG2_CTRL_SS_14_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG2_CTRL_SS_15_NUM(val) vBIT(val, 59, 5) -/* 0x07578 */ u64 dblgen_wrr_cfg3; -#define VXGE_HAL_DBLGEN_WRR_CFG3_CTRL_SS_16_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG3_CTRL_SS_17_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG3_CTRL_SS_18_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG3_CTRL_SS_19_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG3_CTRL_SS_20_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG3_CTRL_SS_21_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG3_CTRL_SS_22_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG3_CTRL_SS_23_NUM(val) vBIT(val, 59, 5) -/* 0x07580 */ u64 dblgen_wrr_cfg4; -#define VXGE_HAL_DBLGEN_WRR_CFG4_CTRL_SS_24_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG4_CTRL_SS_25_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG4_CTRL_SS_26_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG4_CTRL_SS_27_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG4_CTRL_SS_28_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG4_CTRL_SS_29_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG4_CTRL_SS_30_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG4_CTRL_SS_31_NUM(val) vBIT(val, 59, 5) -/* 0x07588 */ u64 dblgen_wrr_cfg5; -#define VXGE_HAL_DBLGEN_WRR_CFG5_CTRL_SS_32_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG5_CTRL_SS_33_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG5_CTRL_SS_34_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG5_CTRL_SS_35_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG5_CTRL_SS_36_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG5_CTRL_SS_37_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG5_CTRL_SS_38_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG5_CTRL_SS_39_NUM(val) vBIT(val, 59, 5) -/* 0x07590 */ u64 dblgen_wrr_cfg6; -#define VXGE_HAL_DBLGEN_WRR_CFG6_CTRL_SS_40_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG6_CTRL_SS_41_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG6_CTRL_SS_42_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG6_CTRL_SS_43_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG6_CTRL_SS_44_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG6_CTRL_SS_45_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG6_CTRL_SS_46_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG6_CTRL_SS_47_NUM(val) vBIT(val, 59, 5) -/* 0x07598 */ u64 dblgen_wrr_cfg7; -#define VXGE_HAL_DBLGEN_WRR_CFG7_CTRL_SS_48_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG7_CTRL_SS_49_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG7_CTRL_SS_50_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG7_CTRL_SS_51_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG7_CTRL_SS_52_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG7_CTRL_SS_53_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG7_CTRL_SS_54_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG7_CTRL_SS_55_NUM(val) vBIT(val, 59, 5) -/* 0x075a0 */ u64 dblgen_wrr_cfg8; -#define VXGE_HAL_DBLGEN_WRR_CFG8_CTRL_SS_56_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG8_CTRL_SS_57_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG8_CTRL_SS_58_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG8_CTRL_SS_59_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG8_CTRL_SS_60_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG8_CTRL_SS_61_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG8_CTRL_SS_62_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG8_CTRL_SS_63_NUM(val) vBIT(val, 59, 5) -/* 0x075a8 */ u64 dblgen_wrr_cfg9; -#define VXGE_HAL_DBLGEN_WRR_CFG9_CTRL_SS_64_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG9_CTRL_SS_65_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG9_CTRL_SS_66_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG9_CTRL_SS_67_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG9_CTRL_SS_68_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG9_CTRL_SS_69_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG9_CTRL_SS_70_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG9_CTRL_SS_71_NUM(val) vBIT(val, 59, 5) -/* 0x075b0 */ u64 dblgen_wrr_cfg10; -#define VXGE_HAL_DBLGEN_WRR_CFG10_CTRL_SS_72_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG10_CTRL_SS_73_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG10_CTRL_SS_74_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG10_CTRL_SS_75_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG10_CTRL_SS_76_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG10_CTRL_SS_77_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG10_CTRL_SS_78_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG10_CTRL_SS_79_NUM(val) vBIT(val, 59, 5) -/* 0x075b8 */ u64 dblgen_wrr_cfg11; -#define VXGE_HAL_DBLGEN_WRR_CFG11_CTRL_SS_80_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG11_CTRL_SS_81_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG11_CTRL_SS_82_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG11_CTRL_SS_83_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG11_CTRL_SS_84_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG11_CTRL_SS_85_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG11_CTRL_SS_86_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG11_CTRL_SS_87_NUM(val) vBIT(val, 59, 5) -/* 0x075c0 */ u64 dblgen_wrr_cfg12; -#define VXGE_HAL_DBLGEN_WRR_CFG12_CTRL_SS_88_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG12_CTRL_SS_89_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG12_CTRL_SS_90_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG12_CTRL_SS_91_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG12_CTRL_SS_92_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG12_CTRL_SS_93_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG12_CTRL_SS_94_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG12_CTRL_SS_95_NUM(val) vBIT(val, 59, 5) -/* 0x075c8 */ u64 dblgen_wrr_cfg13; -#define VXGE_HAL_DBLGEN_WRR_CFG13_CTRL_SS_96_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG13_CTRL_SS_97_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG13_CTRL_SS_98_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG13_CTRL_SS_99_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG13_CTRL_SS_100_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG13_CTRL_SS_101_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG13_CTRL_SS_102_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG13_CTRL_SS_103_NUM(val) vBIT(val, 59, 5) -/* 0x075d0 */ u64 dblgen_wrr_cfg14; -#define VXGE_HAL_DBLGEN_WRR_CFG14_CTRL_SS_104_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG14_CTRL_SS_105_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG14_CTRL_SS_106_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG14_CTRL_SS_107_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG14_CTRL_SS_108_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG14_CTRL_SS_109_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG14_CTRL_SS_110_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG14_CTRL_SS_111_NUM(val) vBIT(val, 59, 5) -/* 0x075d8 */ u64 dblgen_wrr_cfg15; -#define VXGE_HAL_DBLGEN_WRR_CFG15_CTRL_SS_112_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG15_CTRL_SS_113_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG15_CTRL_SS_114_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG15_CTRL_SS_115_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG15_CTRL_SS_116_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG15_CTRL_SS_117_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG15_CTRL_SS_118_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG15_CTRL_SS_119_NUM(val) vBIT(val, 59, 5) -/* 0x075e0 */ u64 dblgen_wrr_cfg16; -#define VXGE_HAL_DBLGEN_WRR_CFG16_CTRL_SS_120_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG16_CTRL_SS_121_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG16_CTRL_SS_122_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG16_CTRL_SS_123_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG16_CTRL_SS_124_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG16_CTRL_SS_125_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG16_CTRL_SS_126_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG16_CTRL_SS_127_NUM(val) vBIT(val, 59, 5) -/* 0x075e8 */ u64 dblgen_wrr_cfg17; -#define VXGE_HAL_DBLGEN_WRR_CFG17_CTRL_SS_128_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG17_CTRL_SS_129_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG17_CTRL_SS_130_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG17_CTRL_SS_131_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG17_CTRL_SS_132_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG17_CTRL_SS_133_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG17_CTRL_SS_134_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG17_CTRL_SS_135_NUM(val) vBIT(val, 59, 5) -/* 0x075f0 */ u64 dblgen_wrr_cfg18; -#define VXGE_HAL_DBLGEN_WRR_CFG18_CTRL_SS_136_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG18_CTRL_SS_137_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG18_CTRL_SS_138_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG18_CTRL_SS_139_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG18_CTRL_SS_140_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG18_CTRL_SS_141_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG18_CTRL_SS_142_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG18_CTRL_SS_143_NUM(val) vBIT(val, 59, 5) -/* 0x075f8 */ u64 dblgen_wrr_cfg19; -#define VXGE_HAL_DBLGEN_WRR_CFG19_CTRL_SS_144_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG19_CTRL_SS_145_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG19_CTRL_SS_146_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG19_CTRL_SS_147_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG19_CTRL_SS_148_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG19_CTRL_SS_149_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG19_CTRL_SS_150_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_DBLGEN_WRR_CFG19_CTRL_SS_151_NUM(val) vBIT(val, 59, 5) -/* 0x07600 */ u64 dblgen_wrr_cfg20; -#define VXGE_HAL_DBLGEN_WRR_CFG20_CTRL_SS_152_NUM(val) vBIT(val, 3, 5) -/* 0x07608 */ u64 debug_cfg1; -#define VXGE_HAL_DEBUG_CFG1_TAG_TO_OBSERVE(val) vBIT(val, 3, 5) -#define VXGE_HAL_DEBUG_CFG1_DIS_REL_OF_TAG_DUE_TO_ERR mBIT(11) - u8 unused07900[0x07900 - 0x07610]; - -/* 0x07900 */ u64 test_cfg1; -#define VXGE_HAL_TEST_CFG1_PERR_INS_TX_WR_EP mBIT(19) -#define VXGE_HAL_TEST_CFG1_PERR_INS_TX_RD_EP mBIT(23) -#define VXGE_HAL_TEST_CFG1_PERR_INS_TX_CPL_EP mBIT(27) -#define VXGE_HAL_TEST_CFG1_PERR_INS_TX_ECRCERR mBIT(31) -#define VXGE_HAL_TEST_CFG1_PERR_INS_TX_LCRCERR mBIT(35) -#define VXGE_HAL_TEST_CFG1_PERR_INS_RX_ECRCERR mBIT(39) -#define VXGE_HAL_TEST_CFG1_PERR_INS_RX_LCRCERR mBIT(43) -/* 0x07908 */ u64 test_cfg2; -#define VXGE_HAL_TEST_CFG2_PERR_TIMEOUT_VAL(val) vBIT(val, 0, 32) -/* 0x07910 */ u64 test_cfg3; -#define VXGE_HAL_TEST_CFG3_PERR_TRIGGER_TIMER mBIT(0) -/* 0x07918 */ u64 wrcrdtarb_cfg0; -#define VXGE_HAL_WRCRDTARB_CFG0_WAIT_CNT(val) vBIT(val, 48, 4) -#define VXGE_HAL_WRCRDTARB_CFG0_STATS_PRTY_TIMEOUT_EN mBIT(55) -#define VXGE_HAL_WRCRDTARB_CFG0_STATS_DROP_TIMEOUT_EN mBIT(59) -#define VXGE_HAL_WRCRDTARB_CFG0_EN_XON mBIT(63) -/* 0x07920 */ u64 wrcrdtarb_cfg1; -#define VXGE_HAL_WRCRDTARB_CFG1_RST_CREDIT mBIT(0) -/* 0x07928 */ u64 wrcrdtarb_cfg2; -#define VXGE_HAL_WRCRDTARB_CFG2_STATS_PRTY_TIMEOUT_VAL(val) vBIT(val, 0, 32) -#define VXGE_HAL_WRCRDTARB_CFG2_STATS_DROP_TIMEOUT_VAL(val) vBIT(val, 32, 32) -/* 0x07930 */ u64 test_wrcrdtarb_cfg1; -#define VXGE_HAL_TEST_WRCRDTARB_CFG1_BLOCK_VPLANE_TIMEOUT1_VAL(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_TEST_WRCRDTARB_CFG1_BLOCK_VPLANE_TIMEOUT2_VAL(val)\ - vBIT(val, 32, 32) -/* 0x07938 */ u64 test_wrcrdtarb_cfg2; -#define VXGE_HAL_TEST_WRCRDTARB_CFG2_BLOCK_VPLANE_TIMEOUT3_VAL(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_TEST_WRCRDTARB_CFG2_BLOCK_VPLANE_TIMEOUT4_VAL(val)\ - vBIT(val, 32, 32) -/* 0x07940 */ u64 test_wrcrdtarb_cfg3; -#define VXGE_HAL_TEST_WRCRDTARB_CFG3_TIMEOUT1_MAP(val) vBIT(val, 3, 5) -#define VXGE_HAL_TEST_WRCRDTARB_CFG3_TIMEOUT2_MAP(val) vBIT(val, 11, 5) -#define VXGE_HAL_TEST_WRCRDTARB_CFG3_TIMEOUT3_MAP(val) vBIT(val, 19, 5) -#define VXGE_HAL_TEST_WRCRDTARB_CFG3_TIMEOUT4_MAP(val) vBIT(val, 27, 5) -/* 0x07948 */ u64 test_wrcrdtarb_cfg4; -#define VXGE_HAL_TEST_WRCRDTARB_CFG4_BLOCK_VPLANE_TIMEOUT1_EN mBIT(3) -#define VXGE_HAL_TEST_WRCRDTARB_CFG4_BLOCK_VPLANE_TIMEOUT2_EN mBIT(7) -#define VXGE_HAL_TEST_WRCRDTARB_CFG4_BLOCK_VPLANE_TIMEOUT3_EN mBIT(11) -#define VXGE_HAL_TEST_WRCRDTARB_CFG4_BLOCK_VPLANE_TIMEOUT4_EN mBIT(15) -/* 0x07950 */ u64 rdcrdtarb_cfg0; -#define VXGE_HAL_RDCRDTARB_CFG0_RDA_MAX_OUTSTANDING_RDS(val) vBIT(val, 18, 6) -#define VXGE_HAL_RDCRDTARB_CFG0_PDA_MAX_OUTSTANDING_RDS(val) vBIT(val, 26, 6) -#define VXGE_HAL_RDCRDTARB_CFG0_DBLGEN_MAX_OUTSTANDING_RDS(val) vBIT(val, 34, 6) -#define VXGE_HAL_RDCRDTARB_CFG0_WAIT_CNT(val) vBIT(val, 48, 4) -#define VXGE_HAL_RDCRDTARB_CFG0_MAX_OUTSTANDING_RDS(val) vBIT(val, 54, 6) -#define VXGE_HAL_RDCRDTARB_CFG0_EN_XON mBIT(63) -/* 0x07958 */ u64 rdcrdtarb_cfg1; -#define VXGE_HAL_RDCRDTARB_CFG1_RST_CREDIT mBIT(0) -/* 0x07960 */ u64 rdcrdtarb_cfg2; -#define VXGE_HAL_RDCRDTARB_CFG2_SOFTNAK_TIMER_VAL_DIV4(val) vBIT(val, 0, 32) -/* 0x07968 */ u64 test_rdcrdtarb_cfg1; -#define VXGE_HAL_TEST_RDCRDTARB_CFG1_BLOCK_VPLANE_TIMEOUT1_VAL(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_TEST_RDCRDTARB_CFG1_BLOCK_VPLANE_TIMEOUT2_VAL(val)\ - vBIT(val, 32, 32) -/* 0x07970 */ u64 test_rdcrdtarb_cfg2; -#define VXGE_HAL_TEST_RDCRDTARB_CFG2_BLOCK_VPLANE_TIMEOUT3_VAL(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_TEST_RDCRDTARB_CFG2_BLOCK_VPLANE_TIMEOUT4_VAL(val)\ - vBIT(val, 32, 32) -/* 0x07978 */ u64 test_rdcrdtarb_cfg3; -#define VXGE_HAL_TEST_RDCRDTARB_CFG3_TIMEOUT1_MAP(val) vBIT(val, 3, 5) -#define VXGE_HAL_TEST_RDCRDTARB_CFG3_TIMEOUT2_MAP(val) vBIT(val, 11, 5) -#define VXGE_HAL_TEST_RDCRDTARB_CFG3_TIMEOUT3_MAP(val) vBIT(val, 19, 5) -#define VXGE_HAL_TEST_RDCRDTARB_CFG3_TIMEOUT4_MAP(val) vBIT(val, 27, 5) -/* 0x07980 */ u64 test_rdcrdtarb_cfg4; -#define VXGE_HAL_TEST_RDCRDTARB_CFG4_BLOCK_VPLANE_TIMEOUT1_EN mBIT(3) -#define VXGE_HAL_TEST_RDCRDTARB_CFG4_BLOCK_VPLANE_TIMEOUT2_EN mBIT(7) -#define VXGE_HAL_TEST_RDCRDTARB_CFG4_BLOCK_VPLANE_TIMEOUT3_EN mBIT(11) -#define VXGE_HAL_TEST_RDCRDTARB_CFG4_BLOCK_VPLANE_TIMEOUT4_EN mBIT(15) -/* 0x07988 */ u64 pic_debug_control; -#define VXGE_HAL_PIC_DEBUG_CONTROL_DBG_ALL_CLKA_SEL(val) vBIT(val, 0, 4) -#define VXGE_HAL_PIC_DEBUG_CONTROL_DBG_ALL_CLKB_SEL(val) vBIT(val, 4, 4) -#define VXGE_HAL_PIC_DEBUG_CONTROL_DBG_ALL_DA_SEL(val) vBIT(val, 10, 6) -#define VXGE_HAL_PIC_DEBUG_CONTROL_DBG_ALL_DB_SEL(val) vBIT(val, 18, 6) -#define VXGE_HAL_PIC_DEBUG_CONTROL_DBGA_SEL(val) vBIT(val, 28, 4) -#define VXGE_HAL_PIC_DEBUG_CONTROL_DBGB_SEL(val) vBIT(val, 32, 4) - u8 unused079d8[0x079d8 - 0x07990]; - -/* 0x079d8 */ u64 spi_control_3_reg; -#define VXGE_HAL_SPI_CONTROL_3_REG_SECTOR_0_WR_EN(val) vBIT(val, 0, 32) -/* 0x079e0 */ u64 clock_cfg0; -#define VXGE_HAL_CLOCK_CFG0_ONE_LRO_EN mBIT(3) -#define VXGE_HAL_CLOCK_CFG0_ONE_IWARP_EN mBIT(7) -/* 0x079e8 */ u64 stats_bp_ctrl; -#define VXGE_HAL_STATS_BP_CTRL_WR_XON mBIT(7) -/* 0x079f0 */ u64 kdfcdma_bp_ctrl; -#define VXGE_HAL_KDFCDMA_BP_CTRL_RD_XON mBIT(3) -/* 0x079f8 */ u64 intctl_bp_ctrl; -#define VXGE_HAL_INTCTL_BP_CTRL_WR_XON mBIT(3) -/* 0x07a00 */ u64 vector_srpcim_alarm_map[9]; -#define VXGE_HAL_VECTOR_SRPCIM_ALARM_MAP_VECTOR_SRPCIM_ALARM_MAP(val)\ - vBIT(val, 17, 7) - u8 unused07b10[0x07b10 - 0x07a48]; - -/* 0x07b10 */ u64 vplane_rdcrdtarb_cfg0[17]; -#define VXGE_HAL_VPLANE_RDCRDTARB_CFG0_TAGS_THRESHOLD_XOFF(val)\ - vBIT(val, 27, 5) -#define VXGE_HAL_VPLANE_RDCRDTARB_CFG0_MAX_OUTSTANDING_RDS(val)\ - vBIT(val, 34, 6) - u8 unused07ba0[0x07ba0 - 0x07b98]; - -/* 0x07ba0 */ u64 mrpcim_spi_control; -#define VXGE_HAL_MRPCIM_SPI_CONTROL_KEY(val) vBIT(val, 0, 4) -#define VXGE_HAL_MRPCIM_SPI_CONTROL_SEL1 mBIT(4) -#define VXGE_HAL_MRPCIM_SPI_CONTROL_NACK mBIT(5) -#define VXGE_HAL_MRPCIM_SPI_CONTROL_DONE mBIT(6) -#define VXGE_HAL_MRPCIM_SPI_CONTROL_REQ mBIT(7) -#define VXGE_HAL_MRPCIM_SPI_CONTROL_BYTE_CNT(val) vBIT(val, 29, 3) -#define VXGE_HAL_MRPCIM_SPI_CONTROL_CMD(val) vBIT(val, 32, 8) -#define VXGE_HAL_MRPCIM_SPI_CONTROL_ADD(val) vBIT(val, 40, 24) -/* 0x07ba8 */ u64 mrpcim_spi_data; -#define VXGE_HAL_MRPCIM_SPI_DATA_SPI_RWDATA(val) vBIT(val, 0, 64) -/* 0x07bb0 */ u64 mrpcim_spi_write_protect; -#define VXGE_HAL_MRPCIM_SPI_WRITE_PROTECT_HWPE mBIT(7) -#define VXGE_HAL_MRPCIM_SPI_WRITE_PROTECT_SPI_16ADDR_EN mBIT(14) -#define VXGE_HAL_MRPCIM_SPI_WRITE_PROTECT_SPI_2DEV_EN mBIT(15) -#define VXGE_HAL_MRPCIM_SPI_WRITE_PROTECT_SLOWCK mBIT(63) - u8 unused07be0[0x07be0 - 0x07bb8]; - -/* 0x07be0 */ u64 chip_full_reset; -#define VXGE_HAL_CHIP_FULL_RESET_CHIP_FULL_RESET(val) vBIT(val, 0, 8) -/* 0x07be8 */ u64 bf_sw_reset; -#define VXGE_HAL_BF_SW_RESET_BF_SW_RESET(val) vBIT(val, 0, 8) -/* 0x07bf0 */ u64 sw_reset_status; -#define VXGE_HAL_SW_RESET_STATUS_RESET_CMPLT mBIT(7) -#define VXGE_HAL_SW_RESET_STATUS_INIT_CMPLT mBIT(15) - u8 unused07c28[0x07c20 - 0x07bf8]; - -/* 0x07c20 */ u64 sw_reset_cfg1; -#define VXGE_HAL_SW_RESET_CFG1_TYPE mBIT(0) -#define VXGE_HAL_SW_RESET_CFG1_WAIT_TIME_FOR_FLUSH_PCI(val) vBIT(val, 7, 25) -#define VXGE_HAL_SW_RESET_CFG1_SOPR_ASSERT_TIME(val) vBIT(val, 32, 4) -#define VXGE_HAL_SW_RESET_CFG1_WAIT_TIME_AFTER_RESET(val) vBIT(val, 38, 25) -/* 0x07c28 */ u64 ric_timeout; -#define VXGE_HAL_RIC_TIMEOUT_EN mBIT(3) -#define VXGE_HAL_RIC_TIMEOUT_VAL(val) vBIT(val, 32, 32) -/* 0x07c30 */ u64 mrpcim_pci_config_access_cfg1; -#define VXGE_HAL_MRPCIM_PCI_CONFIG_ACCESS_CFG1_ADDRESS(val) vBIT(val, 4, 10) -#define VXGE_HAL_MRPCIM_PCI_CONFIG_ACCESS_CFG1_VPLANE(val) vBIT(val, 19, 5) -#define VXGE_HAL_MRPCIM_PCI_CONFIG_ACCESS_CFG1_FUNC(val) vBIT(val, 27, 5) -#define VXGE_HAL_MRPCIM_PCI_CONFIG_ACCESS_CFG1_RD_OR_WRN mBIT(39) -/* 0x07c38 */ u64 mrpcim_pci_config_access_cfg2; -#define VXGE_HAL_MRPCIM_PCI_CONFIG_ACCESS_CFG2_REQ mBIT(0) -/* 0x07c40 */ u64 mrpcim_pci_config_access_status; -#define VXGE_HAL_MRPCIM_PCI_CONFIG_ACCESS_STATUS_ACCESS_ERR mBIT(0) -#define VXGE_HAL_MRPCIM_PCI_CONFIG_ACCESS_STATUS_DATA(val) vBIT(val, 32, 32) - u8 unused07ca8[0x07ca8 - 0x07c48]; - -/* 0x07ca8 */ u64 rdcrdtarb_status0_vplane[17]; -#define VXGE_HAL_RDCRDTARB_STATUS0_VPLANE_RDCRDTARB_ABS_AVAIL_NP_H(val)\ - vBIT(val, 0, 8) -/* 0x07d30 */ u64 mrpcim_debug_stats0; -#define VXGE_HAL_MRPCIM_DEBUG_STATS0_INI_WR_DROP(val) vBIT(val, 0, 32) -#define VXGE_HAL_MRPCIM_DEBUG_STATS0_INI_RD_DROP(val) vBIT(val, 32, 32) -/* 0x07d38 */ u64 mrpcim_debug_stats1_vplane[17]; -#define VXGE_HAL_MRPCIM_DEBUG_STATS1_VPLANE_WRCRDTARB_PH_CRDT_DEPLETED(val)\ - vBIT(val, 32, 32) -/* 0x07dc0 */ u64 mrpcim_debug_stats2_vplane[17]; -#define VXGE_HAL_MRPCIM_DEBUG_STATS2_VPLANE_WRCRDTARB_PD_CRDT_DEPLETED(val)\ - vBIT(val, 32, 32) -/* 0x07e48 */ u64 mrpcim_debug_stats3_vplane[17]; -#define VXGE_HAL_MRPCIM_DEBUG_STATS3_VPLANE_RDCRDTARB_NPH_CRDT_DEPLETED(val)\ - vBIT(val, 32, 32) -/* 0x07ed0 */ u64 mrpcim_debug_stats4; -#define VXGE_HAL_MRPCIM_DEBUG_STATS4_INI_WR_VPIN_DROP(val) vBIT(val, 0, 32) -#define VXGE_HAL_MRPCIM_DEBUG_STATS4_INI_RD_VPIN_DROP(val) vBIT(val, 32, 32) -/* 0x07ed8 */ u64 genstats_count01; -#define VXGE_HAL_GENSTATS_COUNT01_GENSTATS_COUNT1(val) vBIT(val, 0, 32) -#define VXGE_HAL_GENSTATS_COUNT01_GENSTATS_COUNT0(val) vBIT(val, 32, 32) -/* 0x07ee0 */ u64 genstats_count23; -#define VXGE_HAL_GENSTATS_COUNT23_GENSTATS_COUNT3(val) vBIT(val, 0, 32) -#define VXGE_HAL_GENSTATS_COUNT23_GENSTATS_COUNT2(val) vBIT(val, 32, 32) -/* 0x07ee8 */ u64 genstats_count4; -#define VXGE_HAL_GENSTATS_COUNT4_GENSTATS_COUNT4(val) vBIT(val, 32, 32) -/* 0x07ef0 */ u64 genstats_count5; -#define VXGE_HAL_GENSTATS_COUNT5_GENSTATS_COUNT5(val) vBIT(val, 32, 32) -/* 0x07ef8 */ u64 mrpcim_mmio_cfg1; -#define VXGE_HAL_MRPCIM_MMIO_CFG1_WRITE_DATA(val) vBIT(val, 0, 32) -#define VXGE_HAL_MRPCIM_MMIO_CFG1_ADDRESS(val) vBIT(val, 34, 6) -#define VXGE_HAL_MRPCIM_MMIO_CFG1_MRIOVCTL_READ_DATA(val) vBIT(val, 48, 16) -/* 0x07f00 */ u64 mrpcim_mmio_cfg2; -#define VXGE_HAL_MRPCIM_MMIO_CFG2_WRITE_CS mBIT(0) -/* 0x07f08 */ u64 genstats_cfg[6]; -#define VXGE_HAL_GENSTATS_CFG_DTYPE_SEL(val) vBIT(val, 3, 5) -#define VXGE_HAL_GENSTATS_CFG_CLIENT_NO_SEL(val) vBIT(val, 9, 3) -#define VXGE_HAL_GENSTATS_CFG_WR_RD_CPL_SEL(val) vBIT(val, 14, 2) -#define VXGE_HAL_GENSTATS_CFG_VPATH_SEL(val) vBIT(val, 31, 17) -/* 0x07f38 */ u64 genstat_64bit_cfg; -#define VXGE_HAL_GENSTAT_64BIT_CFG_EN_FOR_GENSTATS0 mBIT(3) -#define VXGE_HAL_GENSTAT_64BIT_CFG_EN_FOR_GENSTATS2 mBIT(7) -/* 0x07f40 */ u64 pll_slip_counters; -#define VXGE_HAL_PLL_SLIP_COUNTERS_CMG(val) vBIT(val, 0, 16) -#define VXGE_HAL_PLL_SLIP_COUNTERS_FB(val) vBIT(val, 16, 16) -#define VXGE_HAL_PLL_SLIP_COUNTERS_X(val) vBIT(val, 32, 16) - u8 unused08000[0x08000 - 0x07f48]; - -/* 0x08000 */ u64 gcmg3_int_status; -#define VXGE_HAL_GCMG3_INT_STATUS_GSTC_ERR0_GSTC0_INT mBIT(0) -#define VXGE_HAL_GCMG3_INT_STATUS_GSTC_ERR1_GSTC1_INT mBIT(1) -#define VXGE_HAL_GCMG3_INT_STATUS_GH2L_ERR0_GH2L0_INT mBIT(2) -#define VXGE_HAL_GCMG3_INT_STATUS_GHSQ_ERR_GH2L1_INT mBIT(3) -#define VXGE_HAL_GCMG3_INT_STATUS_GHSQ_ERR2_GH2L2_INT mBIT(4) -#define VXGE_HAL_GCMG3_INT_STATUS_GH2L_SMERR0_GH2L3_INT mBIT(5) -#define VXGE_HAL_GCMG3_INT_STATUS_GHSQ_ERR3_GH2L4_INT mBIT(6) -/* 0x08008 */ u64 gcmg3_int_mask; -/* 0x08010 */ u64 gstc_err0_reg; -#define VXGE_HAL_GSTC_ERR0_REG_STC_BDM_CACHE_DB_ERR(val) vBIT(val, 0, 3) -#define VXGE_HAL_GSTC_ERR0_REG_STC_BDM_CMRSP_DB_ERR(val) vBIT(val, 3, 5) -#define VXGE_HAL_GSTC_ERR0_REG_STC_ECI_CACHE0_DB_ERR(val) vBIT(val, 8, 4) -#define VXGE_HAL_GSTC_ERR0_REG_STC_ECI_CACHE1_DB_ERR(val) vBIT(val, 12, 4) -#define VXGE_HAL_GSTC_ERR0_REG_STC_H2L_EVENT_DB_ERR(val) vBIT(val, 16, 5) -#define VXGE_HAL_GSTC_ERR0_REG_STC_PRM_EVENT_DB_ERR(val) vBIT(val, 21, 3) -#define VXGE_HAL_GSTC_ERR0_REG_STC_SRCH_MEM_DB_ERR(val) vBIT(val, 24, 2) -#define VXGE_HAL_GSTC_ERR0_REG_STC_CMCIF_RD_DATA_DB_ERR mBIT(26) -#define VXGE_HAL_GSTC_ERR0_REG_STC_BDM_CACHE_SG_ERR(val) vBIT(val, 32, 3) -#define VXGE_HAL_GSTC_ERR0_REG_STC_BDM_CMRSP_SG_ERR(val) vBIT(val, 35, 5) -#define VXGE_HAL_GSTC_ERR0_REG_STC_ECI_CACHE0_SG_ERR(val) vBIT(val, 40, 4) -#define VXGE_HAL_GSTC_ERR0_REG_STC_ECI_CACHE1_SG_ERR(val) vBIT(val, 44, 4) -#define VXGE_HAL_GSTC_ERR0_REG_STC_H2L_EVENT_SG_ERR(val) vBIT(val, 48, 5) -#define VXGE_HAL_GSTC_ERR0_REG_STC_PRM_EVENT_SG_ERR(val) vBIT(val, 53, 3) -#define VXGE_HAL_GSTC_ERR0_REG_STC_SRCH_MEM_SG_ERR(val) vBIT(val, 56, 2) -/* 0x08018 */ u64 gstc_err0_mask; -/* 0x08020 */ u64 gstc_err0_alarm; -/* 0x08028 */ u64 gstc_err1_reg; -#define VXGE_HAL_GSTC_ERR1_REG_STC_RPEIF_REQ_FIFO_ERR mBIT(0) -#define VXGE_HAL_GSTC_ERR1_REG_STC_RPEIF_ECRESP_FIFO_ERR mBIT(1) -#define VXGE_HAL_GSTC_ERR1_REG_STC_RPEIF_BUFFRESP_FIFO_ERR mBIT(2) -#define VXGE_HAL_GSTC_ERR1_REG_STC_H2L_EVENT_FIFO_ERR mBIT(3) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ARB_RPE_FIFO_ERR mBIT(4) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ARB_REQ_FIFO_ERR mBIT(5) -#define VXGE_HAL_GSTC_ERR1_REG_STC_SSM_EVENT_FIFO_ERR mBIT(6) -#define VXGE_HAL_GSTC_ERR1_REG_STC_SSM_CMRSP_FIFO_ERR mBIT(7) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ECI_ARB_FIFO_ERR mBIT(8) -#define VXGE_HAL_GSTC_ERR1_REG_STC_PRM_EVENT_FIFO_ERR mBIT(9) -#define VXGE_HAL_GSTC_ERR1_REG_STC_PRM_PAC_FIFO_ERR mBIT(10) -#define VXGE_HAL_GSTC_ERR1_REG_STC_BDM_EVENT_FIFO_ERR mBIT(11) -#define VXGE_HAL_GSTC_ERR1_REG_STC_BDM_CMRSP_FIFO_ERR mBIT(12) -#define VXGE_HAL_GSTC_ERR1_REG_STC_CMCIF_FIFO_ERR mBIT(13) -#define VXGE_HAL_GSTC_ERR1_REG_STC_CP2STC_FIFO_ERR mBIT(14) -#define VXGE_HAL_GSTC_ERR1_REG_STC_CPIF_CREDIT_FIFO_ERR mBIT(15) -#define VXGE_HAL_GSTC_ERR1_REG_STC_RPEIF_SHADOW_ERR mBIT(16) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ARB_REQ_SHADOW_ERR mBIT(17) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ARB_CTL_SHADOW_ERR mBIT(18) -#define VXGE_HAL_GSTC_ERR1_REG_STC_SCC_SHADOW_ERR mBIT(19) -#define VXGE_HAL_GSTC_ERR1_REG_STC_SSM_SHADOW_ERR mBIT(20) -#define VXGE_HAL_GSTC_ERR1_REG_STC_SSM_SYNC_SHADOW_ERR mBIT(21) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ECI_ARB_SHADOW_ERR mBIT(22) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ECI_SYNC_SHADOW_ERR mBIT(23) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ECI_EPE_SHADOW_ERR mBIT(24) -#define VXGE_HAL_GSTC_ERR1_REG_STC_PRM_PAC_SHADOW_ERR mBIT(25) -#define VXGE_HAL_GSTC_ERR1_REG_STC_PRM_PSM_SHADOW_ERR mBIT(26) -#define VXGE_HAL_GSTC_ERR1_REG_STC_PRM_PRC_SHADOW_ERR mBIT(27) -#define VXGE_HAL_GSTC_ERR1_REG_STC_BDM_SHADOW_ERR mBIT(28) -#define VXGE_HAL_GSTC_ERR1_REG_STC_CMCIF_SHADOW_ERR mBIT(29) -#define VXGE_HAL_GSTC_ERR1_REG_STC_CPIF_SHADOW_ERR mBIT(30) -#define VXGE_HAL_GSTC_ERR1_REG_STC_SCC_CLM_ERR mBIT(32) -#define VXGE_HAL_GSTC_ERR1_REG_STC_SCC_RMM_FSM_ERR mBIT(33) -#define VXGE_HAL_GSTC_ERR1_REG_STC_ECI_EPE_FSM_ERR mBIT(34) -#define VXGE_HAL_GSTC_ERR1_REG_STC_PRM_PAC_PBLESIZE0_ERR mBIT(35) -#define VXGE_HAL_GSTC_ERR1_REG_STC_PRM_PAC_QUOTIENT_ERR mBIT(36) -#define VXGE_HAL_GSTC_ERR1_REG_STC_PRM_PRC_FSM_ERR mBIT(37) -#define VXGE_HAL_GSTC_ERR1_REG_STC_BDM_FSM_ERR mBIT(38) -#define VXGE_HAL_GSTC_ERR1_REG_STC_BDM_WRAP_ERR mBIT(39) -#define VXGE_HAL_GSTC_ERR1_REG_STC_RPEIF_BUFFER_ERR mBIT(40) -#define VXGE_HAL_GSTC_ERR1_REG_STC_CMCIF_FSM_ERR mBIT(41) -#define VXGE_HAL_GSTC_ERR1_REG_STC_UNK_CP_MSG_TYPE mBIT(42) -/* 0x08030 */ u64 gstc_err1_mask; -/* 0x08038 */ u64 gstc_err1_alarm; -/* 0x08040 */ u64 gh2l_err0_reg; -#define VXGE_HAL_GH2L_ERR0_REG_H2L_HOC_DATX_DB_ERR(val) vBIT(val, 0, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_WRDBL0_DB_ERR(val) vBIT(val, 2, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_WRDBL1_DB_ERR(val) vBIT(val, 4, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_WRBUF_DB_ERR(val) vBIT(val, 6, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_RD_RSP_DB_ERR mBIT(8) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_CMCRSP_DB_ERR(val) vBIT(val, 9, 4) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_HOC_HEAD_DB_ERR(val) vBIT(val, 13, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_OD_MEM_PA_DB_ERR mBIT(15) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_OD_MEM_PB_DB_ERR mBIT(16) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_HOC_DATX_SG_ERR(val) vBIT(val, 32, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_WRDBL0_SG_ERR(val) vBIT(val, 34, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_WRDBL1_SG_ERR(val) vBIT(val, 36, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_WRBUF_SG_ERR(val) vBIT(val, 38, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_CMCRSP_SG_ERR(val) vBIT(val, 41, 4) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_HOC_HEAD_SG_ERR(val) vBIT(val, 45, 2) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_OD_MEM_PA_SG_ERR mBIT(47) -#define VXGE_HAL_GH2L_ERR0_REG_H2L_OD_MEM_PB_SG_ERR mBIT(48) -/* 0x08048 */ u64 gh2l_err0_mask; -/* 0x08050 */ u64 gh2l_err0_alarm; -/* 0x08058 */ u64 ghsq_err_reg; -#define VXGE_HAL_GHSQ_ERR_REG_H2L_CMP_WR_COMP_OFLOW_ERR mBIT(0) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_CMP_WR_COMP_UFLOW_ERR mBIT(1) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_DAT_CTL_OFLOW_ERR mBIT(2) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_DAT_CTL_UFLOW_ERR mBIT(3) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_DAT_OFLOW_ERR mBIT(4) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_DAT_UFLOW_ERR mBIT(5) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_WR_DAT224_BB_OFLOW_ERR mBIT(6) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_WR_DAT224_BB_UFLOW_ERR mBIT(7) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_WR_REQ_OFLOW_ERR mBIT(8) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_WR_REQ_UFLOW_ERR mBIT(9) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_WRDBL_OFLOW_ERR mBIT(10) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_WRDBL_UFLOW_ERR mBIT(11) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_HOC_XFER_DATX_UFLOW_ERR mBIT(12) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_HOC_XFER_CTLX_UFLOW_ERR mBIT(13) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_CMP_RD_RSP_OFLOW_ERR mBIT(14) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_CMP_RD_RSP_UFLOW_ERR mBIT(15) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_CMP_RD_TRANS_POPCRDCNT_OFLOW_ERR mBIT(16) -#define VXGE_HAL_GHSQ_ERR_REG_H2L_CMP_RD_TRANS_POPCRDCNT_UFLOW_ERR mBIT(17) -/* 0x08060 */ u64 ghsq_err_mask; -/* 0x08068 */ u64 ghsq_err_alarm; -/* 0x08070 */ u64 ghsq_err2_reg; -#define VXGE_HAL_GHSQ_ERR2_REG_H2L_OFLOW_ERR(n) mBIT(n) -#define VXGE_HAL_GHSQ_ERR2_REG_H2L_UFLOW_ERR(n) mBIT(n) -/* 0x08078 */ u64 ghsq_err2_mask; -/* 0x08080 */ u64 ghsq_err2_alarm; -/* 0x08088 */ u64 ghsq_err3_reg; -#define VXGE_HAL_GHSQ_ERR3_REG_H2L_OFLOW_ERR(n) mBIT(n) -#define VXGE_HAL_GHSQ_ERR3_REG_H2L_UFLOW_ERR(n) mBIT(n) -/* 0x08090 */ u64 ghsq_err3_mask; -/* 0x08098 */ u64 ghsq_err3_alarm; -/* 0x080a0 */ u64 gh2l_smerr0_reg; -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_OAE_HOPIF_SM_ERR mBIT(0) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_OAE_NR_SM_ERR mBIT(1) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_OAE_HOF_SM_ERR mBIT(2) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_OAE_ROP_SM_ERR mBIT(3) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_OAE_OADE_SM_ERR mBIT(4) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_OAE_ODOG_SM_ERR mBIT(5) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_BATCH_DONE_SM_ERROR0 mBIT(6) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_BATCH_DONE_SM_ERROR1 mBIT(7) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_BATCH_DONE_SM_ERROR2 mBIT(8) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_BATCH_DONE_SM_ERROR3 mBIT(9) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_DOGLE_SM_ERROR0 mBIT(10) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_DOGLE_SM_ERROR1 mBIT(11) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_DOGLE_SM_ERROR2 mBIT(12) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_DOGLE_SM_ERROR3 mBIT(13) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_ERR_KILL_SM_ERROR0 mBIT(14) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_ERR_KILL_SM_ERROR1 mBIT(15) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_ERR_KILL_SM_ERROR2 mBIT(16) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_ERR_KILL_SM_ERROR3 mBIT(17) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_MSG_GEN_SM_ERROR0 mBIT(18) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_MSG_GEN_SM_ERROR1 mBIT(19) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_MSG_GEN_SM_ERROR2 mBIT(20) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_MSG_GEN_SM_ERROR3 mBIT(21) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_ORD_SM_ERROR0 mBIT(22) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_ORD_SM_ERROR1 mBIT(23) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_ORD_SM_ERROR2 mBIT(24) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_ORD_SM_ERROR3 mBIT(25) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_DOG_STAG_KILL_SM_ERROR mBIT(26) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_H2L_CPIF_IMP_SM_ERROR mBIT(27) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_H2L_CPIF_OMP_SM_ERROR mBIT(28) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_H2L_CPIF_RECALL_SM_ERROR mBIT(29) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_LOG_CCTL_FIFO_ERR mBIT(30) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_RETXK_CCTL_FIFO_ERR mBIT(31) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_HOP_HCC_HANDSHAKE_ERR mBIT(32) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_HOP_ARB_HANDSHAKE_ERR mBIT(33) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_HOP_RETXK_HANDSHAKE_ERR mBIT(34) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_HOP_OAE_HANDSHAKE_ERR mBIT(35) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_HOP_VPATH_ERR mBIT(36) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_HOP_HO_SIZE_ERR mBIT(37) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_HOP_HO_PARSE_ERR mBIT(38) -#define VXGE_HAL_GH2L_SMERR0_REG_H2L_HOP_ARB_SM_ERR mBIT(39) -/* 0x080a8 */ u64 gh2l_smerr0_mask; -/* 0x080b0 */ u64 gh2l_smerr0_alarm; -/* 0x080b8 */ u64 hcc_alarm_reg; -#define VXGE_HAL_HCC_ALARM_REG_H2L_RWCRA_RW0_SG_ERR(val) vBIT(val, 0, 4) -#define VXGE_HAL_HCC_ALARM_REG_H2L_RWCRA_RW0_DB_ERR(val) vBIT(val, 4, 4) -#define VXGE_HAL_HCC_ALARM_REG_H2L_RWCRA_RW1_SG_ERR(val) vBIT(val, 8, 4) -#define VXGE_HAL_HCC_ALARM_REG_H2L_RWCRA_RW1_DB_ERR(val) vBIT(val, 12, 4) -#define VXGE_HAL_HCC_ALARM_REG_H2L_CWBC_FSM_ERR mBIT(19) -#define VXGE_HAL_HCC_ALARM_REG_H2L_RCC_FSM_ERR mBIT(23) -/* 0x080c0 */ u64 hcc_alarm_mask; -/* 0x080c8 */ u64 hcc_alarm_alarm; -/* 0x080d0 */ u64 gstc_cfg0; -#define VXGE_HAL_GSTC_CFG0_RPE_PF_ENA mBIT(7) -#define VXGE_HAL_GSTC_CFG0_SCC_MODE mBIT(15) -#define VXGE_HAL_GSTC_CFG0_SCC_NBR_FREE_SLOTS(val) vBIT(val, 18, 6) -#define VXGE_HAL_GSTC_CFG0_STC_LEFT_HASH_INDEX(val) vBIT(val, 27, 5) -#define VXGE_HAL_GSTC_CFG0_STC_RIGHT_HASH_INDEX(val) vBIT(val, 35, 5) -#define VXGE_HAL_GSTC_CFG0_INCL_ECI_FIFOS_PBL_SYNC mBIT(47) -#define VXGE_HAL_GSTC_CFG0_MW_LOCAL_ACCESS_ENA mBIT(55) -#define VXGE_HAL_GSTC_CFG0_LD_FW_CTRL_FIELDS mBIT(62) -#define VXGE_HAL_GSTC_CFG0_ONLY_ROW0_DUSE1_WRITABLE mBIT(63) -/* 0x080d8 */ u64 gstc_cfg1; -#define VXGE_HAL_GSTC_CFG1_INDIRECT_MODE(val) vBIT(val, 0, 17) -#define VXGE_HAL_GSTC_CFG1_RPE_PF_COUNTDOWN(val) vBIT(val, 36, 12) -#define VXGE_HAL_GSTC_CFG1_BDM_RATE_CTRL(val) vBIT(val, 54, 2) -#define VXGE_HAL_GSTC_CFG1_BDM_EXTRA_RPE_PRM_RD mBIT(63) -/* 0x080e0 */ u64 gstc_cfg2; -#define VXGE_HAL_GSTC_CFG2_MAX_FRE_CMREQ_ENTRIES(val) vBIT(val, 5, 3) -#define VXGE_HAL_GSTC_CFG2_NO_STAG_KILL_WIRE_INV mBIT(12) -#define VXGE_HAL_GSTC_CFG2_NO_STAG_KILL_CP_INV mBIT(13) -#define VXGE_HAL_GSTC_CFG2_NO_STAG_KILL_CP_DEALLOC mBIT(14) -#define VXGE_HAL_GSTC_CFG2_NO_STAG_KILL_CP_SUSP mBIT(15) -#define VXGE_HAL_GSTC_CFG2_BDM_CACHE_ECC_ENABLE_N mBIT(16) -#define VXGE_HAL_GSTC_CFG2_BDM_CMRSP_ECC_ENABLE_N mBIT(17) -#define VXGE_HAL_GSTC_CFG2_ECI_CACHE0_ECC_ENABLE_N mBIT(18) -#define VXGE_HAL_GSTC_CFG2_ECI_CACHE1_ECC_ENABLE_N mBIT(19) -#define VXGE_HAL_GSTC_CFG2_H2L_EVENT_ECC_ENABLE_N mBIT(20) -#define VXGE_HAL_GSTC_CFG2_PRM_EVENT_ECC_ENABLE_N mBIT(21) -#define VXGE_HAL_GSTC_CFG2_SRCH_MEM_ECC_ENABLE_N mBIT(22) -#define VXGE_HAL_GSTC_CFG2_GPSYNC_WAIT_TOKEN_ENABLE mBIT(29) -#define VXGE_HAL_GSTC_CFG2_GPSYNC_CNTDOWN_TIMER_ENABLE mBIT(30) -#define VXGE_HAL_GSTC_CFG2_GPSYNC_SRC_NOTIFY_ENABLE mBIT(31) -#define VXGE_HAL_GSTC_CFG2_GPSYNC_CNTDOWN_START_VALUE(val) vBIT(val, 36, 4) -/* 0x080e8 */ u64 stc_arb_cfg0; -#define VXGE_HAL_STC_ARB_CFG0_RPE_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_STC_ARB_CFG0_H2L_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_STC_ARB_CFG0_CP_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_STC_ARB_CFG0_CAL0_PRI(val) vBIT(val, 30, 2) -#define VXGE_HAL_STC_ARB_CFG0_CAL1_PRI(val) vBIT(val, 38, 2) -#define VXGE_HAL_STC_ARB_CFG0_CAL2_PRI(val) vBIT(val, 46, 2) -#define VXGE_HAL_STC_ARB_CFG0_CAL3_PRI(val) vBIT(val, 54, 2) -#define VXGE_HAL_STC_ARB_CFG0_CAL4_PRI(val) vBIT(val, 62, 2) -/* 0x080f0 */ u64 stc_arb_cfg1; -#define VXGE_HAL_STC_ARB_CFG1_CAL5_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_STC_ARB_CFG1_CAL6_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_STC_ARB_CFG1_CAL7_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_STC_ARB_CFG1_CAL8_PRI(val) vBIT(val, 30, 2) -/* 0x080f8 */ u64 stc_arb_cfg2; -#define VXGE_HAL_STC_ARB_CFG2_MAX_NBR_H2L0_EVENTS(val) vBIT(val, 4, 4) -#define VXGE_HAL_STC_ARB_CFG2_MAX_NBR_H2L1_EVENTS(val) vBIT(val, 12, 4) -#define VXGE_HAL_STC_ARB_CFG2_MAX_NBR_H2L2_EVENTS(val) vBIT(val, 20, 4) -#define VXGE_HAL_STC_ARB_CFG2_MAX_NBR_H2L3_EVENTS(val) vBIT(val, 28, 4) -#define VXGE_HAL_STC_ARB_CFG2_MAX_NBR_RPE_EVENTS(val) vBIT(val, 35, 5) -#define VXGE_HAL_STC_ARB_CFG2_MAX_NBR_MR_EVENTS(val) vBIT(val, 45, 3) -/* 0x08100 */ u64 stc_arb_cfg3; -#define VXGE_HAL_STC_ARB_CFG3_MAX_NBR_H2L0_FETCHES(val) vBIT(val, 5, 3) -#define VXGE_HAL_STC_ARB_CFG3_MAX_NBR_H2L1_FETCHES(val) vBIT(val, 13, 3) -#define VXGE_HAL_STC_ARB_CFG3_MAX_NBR_H2L2_FETCHES(val) vBIT(val, 21, 3) -#define VXGE_HAL_STC_ARB_CFG3_MAX_NBR_H2L3_FETCHES(val) vBIT(val, 29, 3) -#define VXGE_HAL_STC_ARB_CFG3_MAX_NBR_RPE_FETCHES(val) vBIT(val, 37, 3) -#define VXGE_HAL_STC_ARB_CFG3_MAX_NBR_RPE_PF_FETCHES(val) vBIT(val, 46, 2) -/* 0x08108 */ u64 stc_jhash_cfg; -#define VXGE_HAL_STC_JHASH_CFG_GOLDEN(val) vBIT(val, 0, 32) -#define VXGE_HAL_STC_JHASH_CFG_INIT_VAL(val) vBIT(val, 32, 32) -/* 0x08110 */ u64 stc_smi_arb_cfg0; -#define VXGE_HAL_STC_SMI_ARB_CFG0_RPE_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG0_H2L_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG0_CP_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG0_CAL0_PRI(val) vBIT(val, 30, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG0_CAL1_PRI(val) vBIT(val, 38, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG0_CAL2_PRI(val) vBIT(val, 46, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG0_CAL3_PRI(val) vBIT(val, 54, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG0_CAL4_PRI(val) vBIT(val, 62, 2) -/* 0x08118 */ u64 stc_smi_arb_cfg1; -#define VXGE_HAL_STC_SMI_ARB_CFG1_CAL5_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG1_CAL6_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG1_CAL7_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG1_CAL8_PRI(val) vBIT(val, 30, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG1_CAL9_PRI(val) vBIT(val, 38, 2) -#define VXGE_HAL_STC_SMI_ARB_CFG1_SAME_PRI_B2B_CAL mBIT(48) -/* 0x08120 */ u64 stc_caa_arb_cfg0; -#define VXGE_HAL_STC_CAA_ARB_CFG0_RPE_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG0_H2L_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG0_CP_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG0_CAL0_PRI(val) vBIT(val, 30, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG0_CAL1_PRI(val) vBIT(val, 38, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG0_CAL2_PRI(val) vBIT(val, 46, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG0_CAL3_PRI(val) vBIT(val, 54, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG0_CAL4_PRI(val) vBIT(val, 62, 2) -/* 0x08128 */ u64 stc_caa_arb_cfg1; -#define VXGE_HAL_STC_CAA_ARB_CFG1_CAL5_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG1_CAL6_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG1_CAL7_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG1_CAL8_PRI(val) vBIT(val, 30, 2) -#define VXGE_HAL_STC_CAA_ARB_CFG1_SAME_PRI_B2B_CAL mBIT(39) -/* 0x08130 */ u64 stc_eci_arb_cfg0; -#define VXGE_HAL_STC_ECI_ARB_CFG0_RPE_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG0_H2L_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG0_CP_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG0_CAL0_PRI(val) vBIT(val, 30, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG0_CAL1_PRI(val) vBIT(val, 38, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG0_CAL2_PRI(val) vBIT(val, 46, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG0_CAL3_PRI(val) vBIT(val, 54, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG0_CAL4_PRI(val) vBIT(val, 62, 2) -/* 0x08138 */ u64 stc_eci_arb_cfg1; -#define VXGE_HAL_STC_ECI_ARB_CFG1_CAL5_PRI(val) vBIT(val, 6, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG1_CAL6_PRI(val) vBIT(val, 14, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG1_CAL7_PRI(val) vBIT(val, 22, 2) -#define VXGE_HAL_STC_ECI_ARB_CFG1_CAL8_PRI(val) vBIT(val, 30, 2) -/* 0x08140 */ u64 stc_eci_cfg0; -#define VXGE_HAL_STC_ECI_CFG0_SUSPEND_DEALLOC_STAGS_ENA mBIT(4) -#define VXGE_HAL_STC_ECI_CFG0_MULT_SUSPEND_ERR_ENA mBIT(5) -#define VXGE_HAL_STC_ECI_CFG0_SUSPEND_PDID_CHECK_ENA mBIT(6) -#define VXGE_HAL_STC_ECI_CFG0_UNSUSPEND_PDID_CHECK_ENA mBIT(7) -#define VXGE_HAL_STC_ECI_CFG0_ALTER_NUM_MWS_KEY_CHECK_ENA mBIT(14) -#define VXGE_HAL_STC_ECI_CFG0_ALTER_NUM_MWS_PDID_CHECK_ENA mBIT(15) -#define VXGE_HAL_STC_ECI_CFG0_SET_SHARED_KEY_CHECK_ENA mBIT(23) -#define VXGE_HAL_STC_ECI_CFG0_STAG_WR_FAIL_IF_DEALLOC mBIT(31) -#define VXGE_HAL_STC_ECI_CFG0_PLACEMENT_MR_DEFERRAL_ENA mBIT(34) -#define VXGE_HAL_STC_ECI_CFG0_SUSPEND_MR_DEFERRAL_ENA mBIT(35) -#define VXGE_HAL_STC_ECI_CFG0_ALTER_NUM_MWS_MR_DEFERRAL_ENA mBIT(36) -#define VXGE_HAL_STC_ECI_CFG0_BIND_MW_MR_DEFERRAL_ENA mBIT(37) -#define VXGE_HAL_STC_ECI_CFG0_SET_SHARED_MR_DEFERRAL_ENA mBIT(38) -#define VXGE_HAL_STC_ECI_CFG0_STAG_WR_MR_DEFERRAL_ENA mBIT(39) -#define VXGE_HAL_STC_ECI_CFG0_RESUBMIT_INTERVAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_PLACE_STALL_ENA mBIT(54) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_WIRE_INV_STALL_ENA mBIT(55) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_WIRE_INV_ENA mBIT(56) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_CP_INV_ENA mBIT(57) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_MR_EVENT_ENA mBIT(58) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_DEALLOC_ENA mBIT(59) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_ALTER_NUM_MWS_ENA mBIT(60) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_BIND_MW_ENA mBIT(61) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_SET_SHARED_ENA mBIT(62) -#define VXGE_HAL_STC_ECI_CFG0_SUSP_STAG_STAG_WR_ENA mBIT(63) -/* 0x08148 */ u64 stc_prm_cfg0; -#define VXGE_HAL_STC_PRM_CFG0_PAC_RPE_PRI mBIT(6) -#define VXGE_HAL_STC_PRM_CFG0_PAC_H2L_PRI mBIT(7) -#define VXGE_HAL_STC_PRM_CFG0_PAC_CAL0_PRI mBIT(8) -#define VXGE_HAL_STC_PRM_CFG0_PAC_CAL1_PRI mBIT(9) -#define VXGE_HAL_STC_PRM_CFG0_PAC_CAL2_PRI mBIT(10) -#define VXGE_HAL_STC_PRM_CFG0_PAC_CAL3_PRI mBIT(11) -#define VXGE_HAL_STC_PRM_CFG0_PAC_CAL4_PRI mBIT(12) -#define VXGE_HAL_STC_PRM_CFG0_PAC_CAL5_PRI mBIT(13) -#define VXGE_HAL_STC_PRM_CFG0_PAC_CAL6_PRI mBIT(14) -#define VXGE_HAL_STC_PRM_CFG0_PAC_CAL7_PRI mBIT(15) -#define VXGE_HAL_STC_PRM_CFG0_PRC_RPE_PRI mBIT(22) -#define VXGE_HAL_STC_PRM_CFG0_PRC_H2L_PRI mBIT(23) -#define VXGE_HAL_STC_PRM_CFG0_PRC_CAL0_PRI mBIT(24) -#define VXGE_HAL_STC_PRM_CFG0_PRC_CAL1_PRI mBIT(25) -#define VXGE_HAL_STC_PRM_CFG0_PRC_CAL2_PRI mBIT(26) -#define VXGE_HAL_STC_PRM_CFG0_PRC_CAL3_PRI mBIT(27) -#define VXGE_HAL_STC_PRM_CFG0_PRC_CAL4_PRI mBIT(28) -#define VXGE_HAL_STC_PRM_CFG0_PRC_CAL5_PRI mBIT(29) -#define VXGE_HAL_STC_PRM_CFG0_PRC_CAL6_PRI mBIT(30) -#define VXGE_HAL_STC_PRM_CFG0_PRC_CAL7_PRI mBIT(31) -#define VXGE_HAL_STC_PRM_CFG0_RDUSE_ENA mBIT(39) -/* 0x08150 */ u64 h2l_misc_cfg; -#define VXGE_HAL_H2L_MISC_CFG_HSQ_FORCE_CMP mBIT(0) -#define VXGE_HAL_H2L_MISC_CFG_HOP_IPID_MSB mBIT(1) -#define VXGE_HAL_H2L_MISC_CFG_HOP_ARB_ENABLE mBIT(2) -#define VXGE_HAL_H2L_MISC_CFG_HOP_ENFORCE_HSN mBIT(3) -#define VXGE_HAL_H2L_MISC_CFG_HOP_ENFORCE_RD_XON mBIT(4) -#define VXGE_HAL_H2L_MISC_CFG_HOP_ENFORCE_PDA_VPBP mBIT(5) -#define VXGE_HAL_H2L_MISC_CFG_OAE_VPBP_CHECK_ENA mBIT(6) -#define VXGE_HAL_H2L_MISC_CFG_OAE_XON_CHECK_ENA mBIT(7) -#define VXGE_HAL_H2L_MISC_CFG_HOCHEAD_RD_THRES(val) vBIT(val, 10, 6) -#define VXGE_HAL_H2L_MISC_CFG_HCC_WB_THRESHOLD(val) vBIT(val, 19, 5) -#define VXGE_HAL_H2L_MISC_CFG_HOP_BCK_STATS_MODE(val) vBIT(val, 25, 2) -#define VXGE_HAL_H2L_MISC_CFG_HOP_BCK_STATS_VPATH(val) vBIT(val, 27, 5) -#define VXGE_HAL_H2L_MISC_CFG_HOC_DATX_ECC_ENABLE_N mBIT(35) -#define VXGE_HAL_H2L_MISC_CFG_WRDBL_ECC_ENABLE_N mBIT(36) -#define VXGE_HAL_H2L_MISC_CFG_WRBUF_ECC_ENABLE_N mBIT(37) -#define VXGE_HAL_H2L_MISC_CFG_CMCRSP_ECC_ENABLE_N mBIT(38) -#define VXGE_HAL_H2L_MISC_CFG_HOC_HEAD_ECC_ENABLE_N mBIT(39) -#define VXGE_HAL_H2L_MISC_CFG_OD_MEM_ECC_ENABLE_N mBIT(40) -#define VXGE_HAL_H2L_MISC_CFG_RW_CACHE_ECC_ENABLE_N mBIT(41) -/* 0x08158 */ u64 hsq_cfg[17]; -#define VXGE_HAL_HSQ_CFG_BASE_ADDR(val) vBIT(val, 8, 24) -#define VXGE_HAL_HSQ_CFG_SIZE224(val) vBIT(val, 40, 24) -/* 0x081e0 */ u64 usdc_vpbp_cfg; -#define VXGE_HAL_USDC_VPBP_CFG_THRES224(val) vBIT(val, 8, 24) -#define VXGE_HAL_USDC_VPBP_CFG_HYST224(val) vBIT(val, 40, 24) -/* 0x081e8 */ u64 kdfc_vpbp_cfg; -#define VXGE_HAL_KDFC_VPBP_CFG_THRES224(val) vBIT(val, 8, 24) -#define VXGE_HAL_KDFC_VPBP_CFG_HYST224(val) vBIT(val, 40, 24) -/* 0x081f0 */ u64 txpe_vpbp_cfg; -#define VXGE_HAL_TXPE_VPBP_CFG_THRES224(val) vBIT(val, 8, 24) -#define VXGE_HAL_TXPE_VPBP_CFG_HYST224(val) vBIT(val, 40, 24) -/* 0x081f8 */ u64 one_vpbp_cfg; -#define VXGE_HAL_ONE_VPBP_CFG_THRES224(val) vBIT(val, 8, 24) -#define VXGE_HAL_ONE_VPBP_CFG_HYST224(val) vBIT(val, 40, 24) -/* 0x08200 */ u64 hoparb_wrr_ctrl_0; -#define VXGE_HAL_HOPARB_WRR_CTRL_0_SS_0_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_0_SS_1_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_0_SS_2_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_0_SS_3_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_0_SS_4_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_0_SS_5_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_0_SS_6_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_0_SS_7_NUM(val) vBIT(val, 59, 5) -/* 0x08208 */ u64 hoparb_wrr_ctrl_1; -#define VXGE_HAL_HOPARB_WRR_CTRL_1_SS_8_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_1_SS_9_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_1_SS_10_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_1_SS_11_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_1_SS_12_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_1_SS_13_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_1_SS_14_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_1_SS_15_NUM(val) vBIT(val, 59, 5) -/* 0x08210 */ u64 hoparb_wrr_ctrl_2; -#define VXGE_HAL_HOPARB_WRR_CTRL_2_SS_16_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_2_SS_17_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_2_SS_18_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_2_SS_19_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_2_SS_20_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_2_SS_21_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_2_SS_22_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_2_SS_23_NUM(val) vBIT(val, 59, 5) -/* 0x08218 */ u64 hoparb_wrr_ctrl_3; -#define VXGE_HAL_HOPARB_WRR_CTRL_3_SS_24_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_3_SS_25_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_3_SS_26_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_3_SS_27_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_3_SS_28_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_3_SS_29_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_3_SS_30_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_3_SS_31_NUM(val) vBIT(val, 59, 5) -/* 0x08220 */ u64 hoparb_wrr_ctrl_4; -#define VXGE_HAL_HOPARB_WRR_CTRL_4_SS_32_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_4_SS_33_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_4_SS_34_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_4_SS_35_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_4_SS_36_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_4_SS_37_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_4_SS_38_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_4_SS_39_NUM(val) vBIT(val, 59, 5) -/* 0x08228 */ u64 hoparb_wrr_ctrl_5; -#define VXGE_HAL_HOPARB_WRR_CTRL_5_SS_40_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_5_SS_41_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_5_SS_42_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_5_SS_43_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_5_SS_44_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_5_SS_45_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_5_SS_46_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_5_SS_47_NUM(val) vBIT(val, 59, 5) -/* 0x08230 */ u64 hoparb_wrr_ctrl_6; -#define VXGE_HAL_HOPARB_WRR_CTRL_6_SS_48_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_6_SS_49_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_6_SS_50_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_6_SS_51_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_6_SS_52_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_6_SS_53_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_6_SS_54_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_6_SS_55_NUM(val) vBIT(val, 59, 5) -/* 0x08238 */ u64 hoparb_wrr_ctrl_7; -#define VXGE_HAL_HOPARB_WRR_CTRL_7_SS_56_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_7_SS_57_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_7_SS_58_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_7_SS_59_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_7_SS_60_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_7_SS_61_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_7_SS_62_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_7_SS_63_NUM(val) vBIT(val, 59, 5) -/* 0x08240 */ u64 hoparb_wrr_ctrl_8; -#define VXGE_HAL_HOPARB_WRR_CTRL_8_SS_64_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_8_SS_65_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_8_SS_66_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_8_SS_67_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_8_SS_68_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_8_SS_69_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_8_SS_70_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_8_SS_71_NUM(val) vBIT(val, 59, 5) -/* 0x08248 */ u64 hoparb_wrr_ctrl_9; -#define VXGE_HAL_HOPARB_WRR_CTRL_9_SS_72_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_9_SS_73_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_9_SS_74_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_9_SS_75_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_9_SS_76_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_9_SS_77_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_9_SS_78_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_9_SS_79_NUM(val) vBIT(val, 59, 5) -/* 0x08250 */ u64 hoparb_wrr_ctrl_10; -#define VXGE_HAL_HOPARB_WRR_CTRL_10_SS_80_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_10_SS_81_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_10_SS_82_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_10_SS_83_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_10_SS_84_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_10_SS_85_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_10_SS_86_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_10_SS_87_NUM(val) vBIT(val, 59, 5) -/* 0x08258 */ u64 hoparb_wrr_ctrl_11; -#define VXGE_HAL_HOPARB_WRR_CTRL_11_SS_88_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_11_SS_89_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_11_SS_90_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_11_SS_91_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_11_SS_92_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_11_SS_93_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_11_SS_94_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_11_SS_95_NUM(val) vBIT(val, 59, 5) -/* 0x08260 */ u64 hoparb_wrr_ctrl_12; -#define VXGE_HAL_HOPARB_WRR_CTRL_12_SS_96_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_12_SS_97_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_12_SS_98_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_12_SS_99_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_12_SS_100_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_12_SS_101_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_12_SS_102_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_12_SS_103_NUM(val) vBIT(val, 59, 5) -/* 0x08268 */ u64 hoparb_wrr_ctrl_13; -#define VXGE_HAL_HOPARB_WRR_CTRL_13_SS_104_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_13_SS_105_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_13_SS_106_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_13_SS_107_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_13_SS_108_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_13_SS_109_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_13_SS_110_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_13_SS_111_NUM(val) vBIT(val, 59, 5) -/* 0x08270 */ u64 hoparb_wrr_ctrl_14; -#define VXGE_HAL_HOPARB_WRR_CTRL_14_SS_112_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_14_SS_113_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_14_SS_114_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_14_SS_115_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_14_SS_116_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_14_SS_117_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_14_SS_118_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_14_SS_119_NUM(val) vBIT(val, 59, 5) -/* 0x08278 */ u64 hoparb_wrr_ctrl_15; -#define VXGE_HAL_HOPARB_WRR_CTRL_15_SS_120_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_15_SS_121_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_15_SS_122_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_15_SS_123_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_15_SS_124_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_15_SS_125_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_15_SS_126_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_15_SS_127_NUM(val) vBIT(val, 59, 5) -/* 0x08280 */ u64 hoparb_wrr_ctrl_16; -#define VXGE_HAL_HOPARB_WRR_CTRL_16_SS_128_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_16_SS_129_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_16_SS_130_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_16_SS_131_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_16_SS_132_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_16_SS_133_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_16_SS_134_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_16_SS_135_NUM(val) vBIT(val, 59, 5) -/* 0x08288 */ u64 hoparb_wrr_ctrl_17; -#define VXGE_HAL_HOPARB_WRR_CTRL_17_SS_136_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_17_SS_137_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_17_SS_138_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_17_SS_139_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_17_SS_140_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_17_SS_141_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_17_SS_142_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_17_SS_143_NUM(val) vBIT(val, 59, 5) -/* 0x08290 */ u64 hoparb_wrr_ctrl_18; -#define VXGE_HAL_HOPARB_WRR_CTRL_18_SS_144_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_18_SS_145_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_18_SS_146_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_18_SS_147_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_18_SS_148_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_18_SS_149_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_18_SS_150_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CTRL_18_SS_151_NUM(val) vBIT(val, 59, 5) -/* 0x08298 */ u64 hoparb_wrr_ctrl_19; -#define VXGE_HAL_HOPARB_WRR_CTRL_19_SS_152_NUM(val) vBIT(val, 3, 5) -/* 0x082a0 */ u64 hoparb_wrr_cmp_0; -#define VXGE_HAL_HOPARB_WRR_CMP_0_VP0_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_0_VP1_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_0_VP2_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_0_VP3_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_0_VP4_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_0_VP5_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_0_VP6_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_0_VP7_NUM(val) vBIT(val, 59, 5) -/* 0x082a8 */ u64 hoparb_wrr_cmp_1; -#define VXGE_HAL_HOPARB_WRR_CMP_1_VP8_NUM(val) vBIT(val, 3, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_1_VP9_NUM(val) vBIT(val, 11, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_1_VP10_NUM(val) vBIT(val, 19, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_1_VP11_NUM(val) vBIT(val, 27, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_1_VP12_NUM(val) vBIT(val, 35, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_1_VP13_NUM(val) vBIT(val, 43, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_1_VP14_NUM(val) vBIT(val, 51, 5) -#define VXGE_HAL_HOPARB_WRR_CMP_1_VP15_NUM(val) vBIT(val, 59, 5) -/* 0x082b0 */ u64 hoparb_wrr_cmp_2; -#define VXGE_HAL_HOPARB_WRR_CMP_2_VP16_NUM(val) vBIT(val, 3, 5) - u8 unused082e8[0x082e8 - 0x082b8]; - -/* 0x082e8 */ u64 hop_bck_stats0; -#define VXGE_HAL_HOP_BCK_STATS0_HO_DISPATCH_CNT(val) vBIT(val, 0, 32) -#define VXGE_HAL_HOP_BCK_STATS0_HO_DROP_CNT(val) vBIT(val, 32, 32) - u8 unused08400[0x08400 - 0x082f0]; - -/* 0x08400 */ u64 pcmg3_int_status; -#define VXGE_HAL_PCMG3_INT_STATUS_DAM_ERR_DAM_INT mBIT(0) -#define VXGE_HAL_PCMG3_INT_STATUS_PSTC_ERR_PSTC_INT mBIT(1) -#define VXGE_HAL_PCMG3_INT_STATUS_PH2L_ERR0_PH2L_INT mBIT(2) -/* 0x08408 */ u64 pcmg3_int_mask; -/* 0x08410 */ u64 dam_err_reg; -#define VXGE_HAL_DAM_ERR_REG_DAM_RDSB_ECC_SG_ERR mBIT(0) -#define VXGE_HAL_DAM_ERR_REG_DAM_WRSB_ECC_SG_ERR mBIT(1) -#define VXGE_HAL_DAM_ERR_REG_DAM_HPPEDAT_ECC_SG_ERR mBIT(3) -#define VXGE_HAL_DAM_ERR_REG_DAM_LPPEDAT_ECC_SG_ERR mBIT(4) -#define VXGE_HAL_DAM_ERR_REG_DAM_WRRESP_ECC_SG_ERR mBIT(5) -#define VXGE_HAL_DAM_ERR_REG_DAM_RDSB_ECC_DB_ERR mBIT(32) -#define VXGE_HAL_DAM_ERR_REG_DAM_WRSB_ECC_DB_ERR mBIT(33) -#define VXGE_HAL_DAM_ERR_REG_DAM_HPPEDAT_ECC_DB_ERR mBIT(34) -#define VXGE_HAL_DAM_ERR_REG_DAM_LPPEDAT_ECC_DB_ERR mBIT(35) -#define VXGE_HAL_DAM_ERR_REG_DAM_WRRESP_ECC_DB_ERR mBIT(36) -#define VXGE_HAL_DAM_ERR_REG_DAM_HPRD_ERR mBIT(40) -#define VXGE_HAL_DAM_ERR_REG_DAM_LPRD_0_ERR mBIT(41) -#define VXGE_HAL_DAM_ERR_REG_DAM_LPRD_1_ERR mBIT(42) -#define VXGE_HAL_DAM_ERR_REG_DAM_HPPEDAT_OVERFLOW_ERR mBIT(48) -#define VXGE_HAL_DAM_ERR_REG_DAM_LPPEDAT_OVERFLOW_ERR mBIT(49) -#define VXGE_HAL_DAM_ERR_REG_DAM_WRRESP_OVERFLOW_ERR mBIT(50) -#define VXGE_HAL_DAM_ERR_REG_DAM_SM_ERR mBIT(56) -/* 0x08418 */ u64 dam_err_mask; -/* 0x08420 */ u64 dam_err_alarm; -/* 0x08428 */ u64 pstc_err_reg; -#define VXGE_HAL_PSTC_ERR_REG_STC_RPEIF_REQ_FIFO_ERR mBIT(0) -#define VXGE_HAL_PSTC_ERR_REG_STC_RPEIF_ECRESP_FIFO_ERR mBIT(1) -#define VXGE_HAL_PSTC_ERR_REG_STC_RPEIF_BUFFRESP_FIFO_ERR mBIT(2) -#define VXGE_HAL_PSTC_ERR_REG_STC_ARB_RPE_FIFO_ERR mBIT(3) -#define VXGE_HAL_PSTC_ERR_REG_STC_CP2STC_FIFO_ERR mBIT(4) -/* 0x08430 */ u64 pstc_err_mask; -/* 0x08438 */ u64 pstc_err_alarm; -/* 0x08440 */ u64 ph2l_err0_reg; -#define VXGE_HAL_PH2L_ERR0_REG_H2L_HOC_XFER_DATX_OFLOW_ERR mBIT(0) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_HOC_XFER_CTLX_OFLOW_ERR mBIT(1) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_HOC_XFER_PARSE_ERR mBIT(2) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_HOC_XFER_TCPOP_BYTES_ERR mBIT(3) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_HOC_XFER_IDATA_BYTES_ERR mBIT(4) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_HOC_XFER_PLDTYPE_ERR mBIT(5) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_HOC_XFER_OD_ODLIST_LEN_ERR mBIT(6) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_HOC_XFER_VPATH_ERR mBIT(7) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_PHDR_MEM_DB_ERR(val) vBIT(val, 8, 2) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_IDATA_MEM_DB_ERR(val) vBIT(val, 10, 2) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RO_CACHE_DB_ERR(val) vBIT(val, 12, 3) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_TBL_DB_ERR mBIT(15) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_MUX_FIFO_ERR mBIT(16) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_CCTL_FIFO_ERR mBIT(17) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_CCTL_FIFO_ERR mBIT(18) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_MUX_CRED_CNT_ERR mBIT(19) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_PDI_CRED_CNT_ERR mBIT(20) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_PCTL_SHADOW_ERR mBIT(21) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_OPC_SHADOW_ERR mBIT(22) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_MUX_SHADOW_ERR mBIT(23) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_PDI_SHADOW_ERR mBIT(24) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_LCTL_SHADOW_ERR mBIT(26) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_TXI_SHADOW_ERR mBIT(27) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_RXI_SHADOW_ERR mBIT(28) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_HPI_SHADOW_ERR mBIT(29) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_CCTL_SHADOW_ERR mBIT(30) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_PCTL_FSM_ERR mBIT(31) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_MUX_FSM_ERR mBIT(32) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_LOG_LO_COMPL_ERR mBIT(33) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_LCTL_FSM_ERR mBIT(34) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_TXI_FSM_ERR mBIT(35) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_SLOT_MGMT_ERR mBIT(36) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_HPI_FSM_ERR mBIT(37) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_CCTL_FSM_ERR mBIT(38) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_ROCRC_HOP_OFLOW_ERR mBIT(39) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_PDA_H2L_DONE_FIFO_OVERFLOW mBIT(40) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_PHDR_MEM_SG_ERR(val) vBIT(val, 48, 2) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_IDATA_MEM_SG_ERR(val) vBIT(val, 50, 2) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RO_CACHE_SG_ERR(val) vBIT(val, 52, 3) -#define VXGE_HAL_PH2L_ERR0_REG_H2L_RETXK_TBL_SG_ERR mBIT(55) -/* 0x08448 */ u64 ph2l_err0_mask; -/* 0x08450 */ u64 ph2l_err0_alarm; -/* 0x08458 */ u64 dam_bypass_queue_0; -#define VXGE_HAL_DAM_BYPASS_QUEUE_0_ENABLE mBIT(0) -#define VXGE_HAL_DAM_BYPASS_QUEUE_0_BASE(val) vBIT(val, 8, 24) -#define VXGE_HAL_DAM_BYPASS_QUEUE_0_LENGTH(val) vBIT(val, 40, 24) -/* 0x08460 */ u64 dam_bypass_queue_1; -#define VXGE_HAL_DAM_BYPASS_QUEUE_1_BASE(val) vBIT(val, 8, 24) -#define VXGE_HAL_DAM_BYPASS_QUEUE_1_LENGTH(val) vBIT(val, 40, 24) -/* 0x08468 */ u64 dam_bypass_queue_2; -#define VXGE_HAL_DAM_BYPASS_QUEUE_2_BASE(val) vBIT(val, 8, 24) -#define VXGE_HAL_DAM_BYPASS_QUEUE_2_LENGTH(val) vBIT(val, 40, 24) -/* 0x08470 */ u64 dam_ecc_ctrl; -#define VXGE_HAL_DAM_ECC_CTRL_DISABLE mBIT(0) -/* 0x08478 */ u64 ph2l_cfg0; -#define VXGE_HAL_PH2L_CFG0_PHDR_MEM_ECC_ENABLE_N mBIT(15) -#define VXGE_HAL_PH2L_CFG0_IDATA_MEM_ECC_ENABLE_N mBIT(23) -#define VXGE_HAL_PH2L_CFG0_RO_CACHE_ECC_ENABLE_N mBIT(31) -#define VXGE_HAL_PH2L_CFG0_RETXK_TBL_ECC_ENABLE_N mBIT(39) -#define VXGE_HAL_PH2L_CFG0_LOG_XON_CHECK_ENA mBIT(47) -#define VXGE_HAL_PH2L_CFG0_LOG_VPBP_CHECK_ENA mBIT(55) -#define VXGE_HAL_PH2L_CFG0_NBR_RETX_SLOTS_PER_VP(val) vBIT(val, 62, 2) -/* 0x08480 */ u64 pstc_cfg0; -#define VXGE_HAL_PSTC_CFG0_PGSYNC_WAIT_TOKEN_ENABLE mBIT(5) -#define VXGE_HAL_PSTC_CFG0_PGSYNC_CNTDOWN_TIMER_ENABLE mBIT(6) -#define VXGE_HAL_PSTC_CFG0_PGSYNC_SRC_NOTIFY_ENABLE mBIT(7) -#define VXGE_HAL_PSTC_CFG0_PGSYNC_CNTDOWN_START_VALUE(val) vBIT(val, 12, 4) - u8 unused08510[0x08510 - 0x08488]; - -/* 0x08510 */ u64 neterion_membist_control; -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_CMG1 mBIT(0) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_CMG2 mBIT(1) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_CMG3 mBIT(2) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_DRBELL mBIT(3) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_FBIF mBIT(4) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_MSG mBIT(5) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_ONE mBIT(6) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_PCI mBIT(7) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_RTDMA mBIT(8) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_WRDMA mBIT(9) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_XGMAC mBIT(10) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_FB mBIT(11) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INC_CM mBIT(12) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_OVERRIDE_FB_DONE mBIT(16) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_OVERRIDE_CM_DONE mBIT(17) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_INCLUDE_PCIE_MEMS mBIT(24) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_LAUNCH mBIT(31) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_NMBC_DONE mBIT(48) -#define VXGE_HAL_NETERION_MEMBIST_CONTROL_NMBC_ERROR(val) vBIT(val, 56, 4) -/* 0x08518 */ u64 neterion_membist_errors; -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_CMG1(val) vBIT(val, 0, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_CMG2(val) vBIT(val, 3, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_CMG3(val) vBIT(val, 6, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_DRBELL(val) vBIT(val, 9, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_FBif (val) vBIT(val, 12, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_MSG(val) vBIT(val, 15, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_ONE(val) vBIT(val, 18, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_PCI(val) vBIT(val, 21, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_RTDMA(val) vBIT(val, 24, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_WRDMA(val) vBIT(val, 27, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_XGMAC(val) vBIT(val, 30, 3) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_FB mBIT(33) -#define VXGE_HAL_NETERION_MEMBIST_ERRORS_NMBC_CM mBIT(34) -/* 0x08520 */ u64 rr_cqm_cache_rtl_top_0; -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08528 */ u64 rr_cqm_cache_rtl_top_1; -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_CQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08530 */ u64 rr_sqm_cache_rtl_top_0; -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_0_CMG1_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08538 */ u64 rr_sqm_cache_rtl_top_1; -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_SQM_CACHE_RTL_TOP_1_CMG1_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08540 */ u64 rf_sqm_lprpedat_rtl_top_0; -#define VXGE_HAL_RF_SQM_LPRPEDAT_RTL_TOP_0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SQM_LPRPEDAT_RTL_TOP_0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08548 */ u64 rf_sqm_lprpedat_rtl_top_1; -#define VXGE_HAL_RF_SQM_LPRPEDAT_RTL_TOP_1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SQM_LPRPEDAT_RTL_TOP_1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08550 */ u64 rr_sqm_dmawqersp_rtl_top_0; -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_0_CMG1_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_0_CMG1_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_0_CMG1_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_0_CMG1_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x08558 */ u64 rr_sqm_dmawqersp_rtl_top_1; -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_1_CMG1_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_1_CMG1_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_1_CMG1_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_SQM_DMAWQERSP_RTL_TOP_1_CMG1_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x08560 */ u64 rf_cqm_dmacqersp_rtl_top; -#define VXGE_HAL_RF_CQM_DMACQERSP_RTL_TOP_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CQM_DMACQERSP_RTL_TOP_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08568 */ u64 rf_sqm_rpereqdat_rtl_top_0; -#define VXGE_HAL_RF_SQM_RPEREQDAT_RTL_TOP_0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SQM_RPEREQDAT_RTL_TOP_0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08570 */ u64 rf_sqm_rpereqdat_rtl_top_1; -#define VXGE_HAL_RF_SQM_RPEREQDAT_RTL_TOP_1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SQM_RPEREQDAT_RTL_TOP_1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08578 */ u64 rf_sscc_ssr_rtl_top_0_0; -#define VXGE_HAL_RF_SSCC_SSR_RTL_TOP_0_0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSCC_SSR_RTL_TOP_0_0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08580 */ u64 rf_sscc_ssr_rtl_top_1_0; -#define VXGE_HAL_RF_SSCC_SSR_RTL_TOP_1_0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSCC_SSR_RTL_TOP_1_0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08588 */ u64 rf_sscc_ssr_rtl_top_0_1; -#define VXGE_HAL_RF_SSCC_SSR_RTL_TOP_0_1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSCC_SSR_RTL_TOP_0_1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08590 */ u64 rf_sscc_ssr_rtl_top_1_1; -#define VXGE_HAL_RF_SSCC_SSR_RTL_TOP_1_1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSCC_SSR_RTL_TOP_1_1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08598 */ u64 rf_ssc_cm_resp_rtl_top_1_ssc0; -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_1_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_1_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085a0 */ u64 rf_ssc_cm_resp_rtl_top_0_ssc1; -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_0_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_0_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085a8 */ u64 rf_ssc_cm_resp_rtl_top_1_sscl; -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_1_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_1_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085b0 */ u64 rf_ssc_cm_resp_rtl_top_0_ssc0; -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_0_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_0_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085b8 */ u64 rf_ssc_cm_resp_rtl_top_1_ssc1; -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_1_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_1_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085c0 */ u64 rf_ssc_cm_resp_rtl_top_0_sscl; -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_0_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_CM_RESP_RTL_TOP_0_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085c8 */ u64 rf_ssc_ssr_resp_rtl_top_ssc0; -#define VXGE_HAL_RF_SSC_SSR_RESP_RTL_TOP_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_SSR_RESP_RTL_TOP_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085d0 */ u64 rf_ssc_ssr_resp_rtl_top_ssc1; -#define VXGE_HAL_RF_SSC_SSR_RESP_RTL_TOP_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_SSR_RESP_RTL_TOP_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085d8 */ u64 rf_ssc_ssr_resp_rtl_top_sscl; -#define VXGE_HAL_RF_SSC_SSR_RESP_RTL_TOP_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_SSR_RESP_RTL_TOP_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085e0 */ u64 rf_ssc_tsr_resp_rtl_top_1_ssc0; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_1_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_1_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085e8 */ u64 rf_ssc_tsr_resp_rtl_top_2_ssc0; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_2_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_2_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085f0 */ u64 rf_ssc_tsr_resp_rtl_top_2_ssc1; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_2_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_2_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x085f8 */ u64 rf_ssc_tsr_resp_rtl_top_0_sscl; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_0_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_0_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08600 */ u64 rf_ssc_tsr_resp_rtl_top_0_ssc0; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_0_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_0_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08608 */ u64 rf_ssc_tsr_resp_rtl_top_0_ssc1; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_0_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_0_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08610 */ u64 rf_ssc_tsr_resp_rtl_top_1_ssc1; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_1_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_1_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08618 */ u64 rf_ssc_tsr_resp_rtl_top_1_sscl; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_1_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_1_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08620 */ u64 rf_ssc_tsr_resp_rtl_top_2_sscl; -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_2_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_TSR_RESP_RTL_TOP_2_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08628 */ u64 rf_ssc_state_rtl_top_1_ssc0; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_1_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_1_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08630 */ u64 rf_ssc_state_rtl_top_2_ssc0; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_2_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_2_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08638 */ u64 rf_ssc_state_rtl_top_1_ssc1; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_1_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_1_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08640 */ u64 rf_ssc_state_rtl_top_2_ssc1; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_2_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_2_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08648 */ u64 rf_ssc_state_rtl_top_1_sscl; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_1_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_1_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08650 */ u64 rf_ssc_state_rtl_top_2_sscl; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_2_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_2_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08658 */ u64 rf_ssc_state_rtl_top_0_ssc0; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_0_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_0_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08660 */ u64 rf_ssc_state_rtl_top_3_ssc0; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_3_SSC0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_3_SSC0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08668 */ u64 rf_ssc_state_rtl_top_0_ssc1; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_0_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_0_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08670 */ u64 rf_ssc_state_rtl_top_3_ssc1; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_3_SSC1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_3_SSC1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08678 */ u64 rf_ssc_state_rtl_top_0_sscl; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_0_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_0_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08680 */ u64 rf_ssc_state_rtl_top_3_sscl; -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_3_SSCL_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSC_STATE_RTL_TOP_3_SSCL_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08688 */ u64 rf_sscc_tsr_rtl_top_0; -#define VXGE_HAL_RF_SSCC_TSR_RTL_TOP_0_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSCC_TSR_RTL_TOP_0_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08690 */ u64 rf_sscc_tsr_rtl_top_1; -#define VXGE_HAL_RF_SSCC_TSR_RTL_TOP_1_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSCC_TSR_RTL_TOP_1_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08698 */ u64 rf_sscc_tsr_rtl_top_2; -#define VXGE_HAL_RF_SSCC_TSR_RTL_TOP_2_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_SSCC_TSR_RTL_TOP_2_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x086a0 */ u64 rf_uqm_cmcreq_rtl_top; -#define VXGE_HAL_RF_UQM_CMCREQ_RTL_TOP_CMG1_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UQM_CMCREQ_RTL_TOP_CMG1_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x086a8 */ u64 rr0_g3if_cm_ctrl_rtl_top; -#define VXGE_HAL_RR0_G3IF_CM_CTRL_RTL_TOP_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR0_G3IF_CM_CTRL_RTL_TOP_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x086b0 */ u64 rr1_g3if_cm_ctrl_rtl_top; -#define VXGE_HAL_RR1_G3IF_CM_CTRL_RTL_TOP_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR1_G3IF_CM_CTRL_RTL_TOP_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x086b8 */ u64 rr2_g3if_cm_ctrl_rtl_top; -#define VXGE_HAL_RR2_G3IF_CM_CTRL_RTL_TOP_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR2_G3IF_CM_CTRL_RTL_TOP_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x086c0 */ u64 rf_g3if_cm_rd_rtl_top0; -#define VXGE_HAL_RF_G3IF_CM_RD_RTL_TOP0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_G3IF_CM_RD_RTL_TOP0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x086c8 */ u64 rf_g3if_cm_rd_rtl_top1; -#define VXGE_HAL_RF_G3IF_CM_RD_RTL_TOP1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_G3IF_CM_RD_RTL_TOP1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x086d0 */ u64 rf_g3if_cm_rd_rtl_top2; -#define VXGE_HAL_RF_G3IF_CM_RD_RTL_TOP2_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_G3IF_CM_RD_RTL_TOP2_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x086d8 */ u64 rf_cmg_msg2cmg_rtl_top_0_0; -#define VXGE_HAL_RF_CMG_MSG2CMG_RTL_TOP_0_0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CMG_MSG2CMG_RTL_TOP_0_0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x086e0 */ u64 rf_cmg_msg2cmg_rtl_top_1_0; -#define VXGE_HAL_RF_CMG_MSG2CMG_RTL_TOP_1_0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CMG_MSG2CMG_RTL_TOP_1_0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x086e8 */ u64 rf_cmg_msg2cmg_rtl_top_0_1; -#define VXGE_HAL_RF_CMG_MSG2CMG_RTL_TOP_0_1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CMG_MSG2CMG_RTL_TOP_0_1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x086f0 */ u64 rf_cmg_msg2cmg_rtl_top_1_1; -#define VXGE_HAL_RF_CMG_MSG2CMG_RTL_TOP_1_1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CMG_MSG2CMG_RTL_TOP_1_1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x086f8 */ u64 rf_cp_dma_resp_rtl_top_0; -#define VXGE_HAL_RF_CP_DMA_RESP_RTL_TOP_0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_DMA_RESP_RTL_TOP_0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08700 */ u64 rf_cp_dma_resp_rtl_top_1; -#define VXGE_HAL_RF_CP_DMA_RESP_RTL_TOP_1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_DMA_RESP_RTL_TOP_1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08708 */ u64 rf_cp_dma_resp_rtl_top_2; -#define VXGE_HAL_RF_CP_DMA_RESP_RTL_TOP_2_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_DMA_RESP_RTL_TOP_2_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08710 */ u64 rf_cp_qcc2cxp_rtl_top; -#define VXGE_HAL_RF_CP_QCC2CXP_RTL_TOP_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_QCC2CXP_RTL_TOP_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08718 */ u64 rf_cp_stc2cp_rtl_top; -#define VXGE_HAL_RF_CP_STC2CP_RTL_TOP_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_STC2CP_RTL_TOP_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08720 */ u64 rf_cp_xt_trace_rtl_top; -#define VXGE_HAL_RF_CP_XT_TRACE_RTL_TOP_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_TRACE_RTL_TOP_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08728 */ u64 rf_cp_xt_dtag_rtl_top; -#define VXGE_HAL_RF_CP_XT_DTAG_RTL_TOP_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_DTAG_RTL_TOP_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08730 */ u64 rf_cp_xt_icache_rtl_top_0_0; -#define VXGE_HAL_RF_CP_XT_ICACHE_RTL_TOP_0_0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_ICACHE_RTL_TOP_0_0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08738 */ u64 rf_cp_xt_icache_rtl_top_1_0; -#define VXGE_HAL_RF_CP_XT_ICACHE_RTL_TOP_1_0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_ICACHE_RTL_TOP_1_0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08740 */ u64 rf_cp_xt_icache_rtl_top_0_1; -#define VXGE_HAL_RF_CP_XT_ICACHE_RTL_TOP_0_1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_ICACHE_RTL_TOP_0_1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08748 */ u64 rf_cp_xt_icache_rtl_top_1_1; -#define VXGE_HAL_RF_CP_XT_ICACHE_RTL_TOP_1_1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_ICACHE_RTL_TOP_1_1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08750 */ u64 rf_cp_xt_itag_rtl_top; -#define VXGE_HAL_RF_CP_XT_ITAG_RTL_TOP_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_ITAG_RTL_TOP_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08758 */ u64 rf_cp_xt_dcache_rtl_top_0_0; -#define VXGE_HAL_RF_CP_XT_DCACHE_RTL_TOP_0_0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_DCACHE_RTL_TOP_0_0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08760 */ u64 rf_cp_xt_dcache_rtl_top_1_0; -#define VXGE_HAL_RF_CP_XT_DCACHE_RTL_TOP_1_0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_DCACHE_RTL_TOP_1_0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08768 */ u64 rf_cp_xt_dcache_rtl_top_0_1; -#define VXGE_HAL_RF_CP_XT_DCACHE_RTL_TOP_0_1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_DCACHE_RTL_TOP_0_1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08770 */ u64 rf_cp_xt_dcache_rtl_top_1_1; -#define VXGE_HAL_RF_CP_XT_DCACHE_RTL_TOP_1_1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_CP_XT_DCACHE_RTL_TOP_1_1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08778 */ u64 rf_xtmc_bdt_mem_rtl_top_0; -#define VXGE_HAL_RF_XTMC_BDT_MEM_RTL_TOP_0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_XTMC_BDT_MEM_RTL_TOP_0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08780 */ u64 rf_xtmc_bdt_mem_rtl_top_1; -#define VXGE_HAL_RF_XTMC_BDT_MEM_RTL_TOP_1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_XTMC_BDT_MEM_RTL_TOP_1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08788 */ u64 rf_xt_pif_sram_rtl_top_sram0; -#define VXGE_HAL_RF_XT_PIF_SRAM_RTL_TOP_SRAM0_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_XT_PIF_SRAM_RTL_TOP_SRAM0_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08790 */ u64 rf_xt_pif_sram_rtl_top_sram1; -#define VXGE_HAL_RF_XT_PIF_SRAM_RTL_TOP_SRAM1_CMG2_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_XT_PIF_SRAM_RTL_TOP_SRAM1_CMG2_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08798 */ u64 rf_stc_srch_mem_rtl_top_0_0; -#define VXGE_HAL_RF_STC_SRCH_MEM_RTL_TOP_0_0_CMG3_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_STC_SRCH_MEM_RTL_TOP_0_0_CMG3_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x087a0 */ u64 rf_stc_srch_mem_rtl_top_1_0; -#define VXGE_HAL_RF_STC_SRCH_MEM_RTL_TOP_1_0_CMG3_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_STC_SRCH_MEM_RTL_TOP_1_0_CMG3_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x087a8 */ u64 rf_stc_srch_mem_rtl_top_0_1; -#define VXGE_HAL_RF_STC_SRCH_MEM_RTL_TOP_0_1_CMG3_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_STC_SRCH_MEM_RTL_TOP_0_1_CMG3_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x087b0 */ u64 rf_stc_srch_mem_rtl_top_1_1; -#define VXGE_HAL_RF_STC_SRCH_MEM_RTL_TOP_1_1_CMG3_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_STC_SRCH_MEM_RTL_TOP_1_1_CMG3_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x087b8 */ u64 rf_dam_wrresp_rtl_top; -#define VXGE_HAL_RF_DAM_WRRESP_RTL_TOP_CMG3_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_DAM_WRRESP_RTL_TOP_CMG3_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x087c0 */ u64 rf_dam_rdsb_fifo_rtl_top; -#define VXGE_HAL_RF_DAM_RDSB_FIFO_RTL_TOP_CMG3_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_DAM_RDSB_FIFO_RTL_TOP_CMG3_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x087c8 */ u64 rf_dam_wrsb_fifo_rtl_top; -#define VXGE_HAL_RF_DAM_WRSB_FIFO_RTL_TOP_CMG3_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_DAM_WRSB_FIFO_RTL_TOP_CMG3_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x087d0 */ u64 rr_dbf_ladd_0_dbl_rtl_top; -#define VXGE_HAL_RR_DBF_LADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_DBF_LADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_DBF_LADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 5) -#define VXGE_HAL_RR_DBF_LADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 6) -#define VXGE_HAL_RR_DBF_LADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 5) -/* 0x087d8 */ u64 rr_dbf_ladd_1_dbl_rtl_top; -#define VXGE_HAL_RR_DBF_LADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_DBF_LADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_DBF_LADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 5) -#define VXGE_HAL_RR_DBF_LADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 6) -#define VXGE_HAL_RR_DBF_LADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 5) -/* 0x087e0 */ u64 rr_dbf_ladd_2_dbl_rtl_top; -#define VXGE_HAL_RR_DBF_LADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_DBF_LADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_DBF_LADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 5) -#define VXGE_HAL_RR_DBF_LADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 6) -#define VXGE_HAL_RR_DBF_LADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 5) -/* 0x087e8 */ u64 rr_dbf_hadd_0_dbl_rtl_top; -#define VXGE_HAL_RR_DBF_HADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_DBF_HADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_DBF_HADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 5) -#define VXGE_HAL_RR_DBF_HADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 6) -#define VXGE_HAL_RR_DBF_HADD_0_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 5) -/* 0x087f0 */ u64 rr_dbf_hadd_1_dbl_rtl_top; -#define VXGE_HAL_RR_DBF_HADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_DBF_HADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_DBF_HADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 5) -#define VXGE_HAL_RR_DBF_HADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 6) -#define VXGE_HAL_RR_DBF_HADD_1_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 5) -/* 0x087f8 */ u64 rr_dbf_hadd_2_dbl_rtl_top; -#define VXGE_HAL_RR_DBF_HADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_DBF_HADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_DBF_HADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 5) -#define VXGE_HAL_RR_DBF_HADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 6) -#define VXGE_HAL_RR_DBF_HADD_2_DBL_RTL_TOP_DRBELL_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 5) -/* 0x08800 */ u64 rf_usdc_0_fifo_rtl_top; -#define VXGE_HAL_RF_USDC_0_FIFO_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_USDC_0_FIFO_RTL_TOP_DRBELL_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08808 */ u64 rf_usdc_1_fifo_rtl_top; -#define VXGE_HAL_RF_USDC_1_FIFO_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_USDC_1_FIFO_RTL_TOP_DRBELL_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08810 */ u64 rf_usdc_0_wa_rtl_top; -#define VXGE_HAL_RF_USDC_0_WA_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_USDC_0_WA_RTL_TOP_DRBELL_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08818 */ u64 rf_usdc_1_wa_rtl_top; -#define VXGE_HAL_RF_USDC_1_WA_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_USDC_1_WA_RTL_TOP_DRBELL_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08820 */ u64 rf_usdc_0_sa_rtl_top; -#define VXGE_HAL_RF_USDC_0_SA_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_USDC_0_SA_RTL_TOP_DRBELL_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08828 */ u64 rf_usdc_1_sa_rtl_top; -#define VXGE_HAL_RF_USDC_1_SA_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_USDC_1_SA_RTL_TOP_DRBELL_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08830 */ u64 rf_usdc_0_ca_rtl_top; -#define VXGE_HAL_RF_USDC_0_CA_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_USDC_0_CA_RTL_TOP_DRBELL_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08838 */ u64 rf_usdc_1_ca_rtl_top; -#define VXGE_HAL_RF_USDC_1_CA_RTL_TOP_DRBELL_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_USDC_1_CA_RTL_TOP_DRBELL_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08840 */ u64 rf_g3if_fb_rd1; -#define VXGE_HAL_RF_G3IF_FB_RD1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_G3IF_FB_RD1_FBIF_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 8) -/* 0x08848 */ u64 rf_g3if_fb_rd2; -#define VXGE_HAL_RF_G3IF_FB_RD2_FBIF_NMB_IO_REPAIR_STATUS(val) vBIT(val, 0, 2) -#define VXGE_HAL_RF_G3IF_FB_RD2_FBIF_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 8) -/* 0x08850 */ u64 rf_g3if_fb_ctrl_rtl_top1; -#define VXGE_HAL_RF_G3IF_FB_CTRL_RTL_TOP1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_G3IF_FB_CTRL_RTL_TOP1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08858 */ u64 rf_g3if_fb_ctrl_rtl_top; -#define VXGE_HAL_RF_G3IF_FB_CTRL_RTL_TOP_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_G3IF_FB_CTRL_RTL_TOP_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08860 */ u64 rr_rocrc_frmbuf_rtl_top_0; -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_0_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_0_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_0_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_0_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08868 */ u64 rr_rocrc_frmbuf_rtl_top_1; -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_1_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_1_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_1_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_ROCRC_FRMBUF_RTL_TOP_1_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08870 */ u64 rr_fau_xfmd_ins_rtl_top; -#define VXGE_HAL_RR_FAU_XFMD_INS_RTL_TOP_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_FAU_XFMD_INS_RTL_TOP_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_FAU_XFMD_INS_RTL_TOP_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_FAU_XFMD_INS_RTL_TOP_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_FAU_XFMD_INS_RTL_TOP_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08878 */ u64 rf_fbmc_xfmd_rtl_top_a1; -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_A1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_A1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08880 */ u64 rf_fbmc_xfmd_rtl_top_a2; -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_A2_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_A2_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08888 */ u64 rf_fbmc_xfmd_rtl_top_a3; -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_A3_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_A3_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08890 */ u64 rf_fbmc_xfmd_rtl_top_b1; -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_B1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_B1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08898 */ u64 rf_fbmc_xfmd_rtl_top_b2; -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_B2_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_B2_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x088a0 */ u64 rf_fbmc_xfmd_rtl_top_b3; -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_B3_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_FBMC_XFMD_RTL_TOP_B3_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x088a8 */ u64 rr_fau_mac2f_w_h_rtl_top_port0; -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT0_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT0_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT0_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT0_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x088b0 */ u64 rr_fau_mac2f_w_h_rtl_top_port1; -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT1_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT1_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT1_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_FAU_MAC2F_W_H_RTL_TOP_PORT1_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x088b8 */ u64 rr_fau_mac2f_n_h_rtl_top_port0; -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT0_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT0_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT0_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT0_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x088c0 */ u64 rr_fau_mac2f_n_h_rtl_top_port1; -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT1_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT1_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT1_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_FAU_MAC2F_N_H_RTL_TOP_PORT1_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x088c8 */ u64 rr_fau_mac2f_w_l_rtl_top_port2; -#define VXGE_HAL_RR_FAU_MAC2F_W_L_RTL_TOP_PORT2_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_FAU_MAC2F_W_L_RTL_TOP_PORT2_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_FAU_MAC2F_W_L_RTL_TOP_PORT2_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_FAU_MAC2F_W_L_RTL_TOP_PORT2_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_FAU_MAC2F_W_L_RTL_TOP_PORT2_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x088d0 */ u64 rr_fau_mac2f_n_l_rtl_top_port2; -#define VXGE_HAL_RR_FAU_MAC2F_N_L_RTL_TOP_PORT2_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_FAU_MAC2F_N_L_RTL_TOP_PORT2_FBIF_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_FAU_MAC2F_N_L_RTL_TOP_PORT2_FBIF_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_FAU_MAC2F_N_L_RTL_TOP_PORT2_FBIF_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_FAU_MAC2F_N_L_RTL_TOP_PORT2_FBIF_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x088d8 */ u64 rf_orp_frm_fifo_rtl_top_0; -#define VXGE_HAL_RF_ORP_FRM_FIFO_RTL_TOP_0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ORP_FRM_FIFO_RTL_TOP_0_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x088e0 */ u64 rf_orp_frm_fifo_rtl_top_1; -#define VXGE_HAL_RF_ORP_FRM_FIFO_RTL_TOP_1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ORP_FRM_FIFO_RTL_TOP_1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x088e8 */ u64 rf_tpa_da_lkp_rtl_top_0_0; -#define VXGE_HAL_RF_TPA_DA_LKP_RTL_TOP_0_0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TPA_DA_LKP_RTL_TOP_0_0_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x088f0 */ u64 rf_tpa_da_lkp_rtl_top_1_0; -#define VXGE_HAL_RF_TPA_DA_LKP_RTL_TOP_1_0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TPA_DA_LKP_RTL_TOP_1_0_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x088f8 */ u64 rf_tpa_da_lkp_rtl_top_0_1; -#define VXGE_HAL_RF_TPA_DA_LKP_RTL_TOP_0_1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TPA_DA_LKP_RTL_TOP_0_1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08900 */ u64 rf_tpa_da_lkp_rtl_top_1_1; -#define VXGE_HAL_RF_TPA_DA_LKP_RTL_TOP_1_1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TPA_DA_LKP_RTL_TOP_1_1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08908 */ u64 rf_tmac_tpa2mac_rtl_top_0_0; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_0_0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_0_0_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08910 */ u64 rf_tmac_tpa2mac_rtl_top_1_0; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_1_0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_1_0_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08918 */ u64 rf_tmac_tpa2mac_rtl_top_2_0; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_2_0_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_2_0_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08920 */ u64 rf_tmac_tpa2mac_rtl_top_0_1; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_0_1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_0_1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08928 */ u64 rf_tmac_tpa2mac_rtl_top_1_1; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_1_1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_1_1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08930 */ u64 rf_tmac_tpa2mac_rtl_top_2_1; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_2_1_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_2_1_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08938 */ u64 rf_tmac_tpa2mac_rtl_top_0_2; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_0_2_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_0_2_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08940 */ u64 rf_tmac_tpa2mac_rtl_top_1_2; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_1_2_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_1_2_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08948 */ u64 rf_tmac_tpa2mac_rtl_top_2_2; -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_2_2_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2MAC_RTL_TOP_2_2_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08950 */ u64 rf_tmac_tpa2m_da_rtl_top; -#define VXGE_HAL_RF_TMAC_TPA2M_DA_RTL_TOP_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2M_DA_RTL_TOP_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08958 */ u64 rf_tmac_tpa2m_sb_rtl_top; -#define VXGE_HAL_RF_TMAC_TPA2M_SB_RTL_TOP_FBIF_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TMAC_TPA2M_SB_RTL_TOP_FBIF_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08960 */ u64 rf_xt_trace_rtl_top_mp; -#define VXGE_HAL_RF_XT_TRACE_RTL_TOP_MP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_XT_TRACE_RTL_TOP_MP_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08968 */ u64 rf_mp_xt_dtag_rtl_top; -#define VXGE_HAL_RF_MP_XT_DTAG_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_DTAG_RTL_TOP_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 6) -/* 0x08970 */ u64 rf_mp_xt_icache_rtl_top_0_0; -#define VXGE_HAL_RF_MP_XT_ICACHE_RTL_TOP_0_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_ICACHE_RTL_TOP_0_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08978 */ u64 rf_mp_xt_icache_rtl_top_1_0; -#define VXGE_HAL_RF_MP_XT_ICACHE_RTL_TOP_1_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_ICACHE_RTL_TOP_1_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08980 */ u64 rf_mp_xt_icache_rtl_top_0_1; -#define VXGE_HAL_RF_MP_XT_ICACHE_RTL_TOP_0_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_ICACHE_RTL_TOP_0_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08988 */ u64 rf_mp_xt_icache_rtl_top_1_1; -#define VXGE_HAL_RF_MP_XT_ICACHE_RTL_TOP_1_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_ICACHE_RTL_TOP_1_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08990 */ u64 rf_mp_xt_itag_rtl_top; -#define VXGE_HAL_RF_MP_XT_ITAG_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_ITAG_RTL_TOP_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 6) -/* 0x08998 */ u64 rf_mp_xt_dcache_rtl_top_0_0; -#define VXGE_HAL_RF_MP_XT_DCACHE_RTL_TOP_0_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_DCACHE_RTL_TOP_0_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x089a0 */ u64 rf_mp_xt_dcache_rtl_top_1_0; -#define VXGE_HAL_RF_MP_XT_DCACHE_RTL_TOP_1_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_DCACHE_RTL_TOP_1_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x089a8 */ u64 rf_mp_xt_dcache_rtl_top_0_1; -#define VXGE_HAL_RF_MP_XT_DCACHE_RTL_TOP_0_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_DCACHE_RTL_TOP_0_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x089b0 */ u64 rf_mp_xt_dcache_rtl_top_1_1; -#define VXGE_HAL_RF_MP_XT_DCACHE_RTL_TOP_1_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MP_XT_DCACHE_RTL_TOP_1_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x089b8 */ u64 rf_msg_bwr_pf_rtl_top_0; -#define VXGE_HAL_RF_MSG_BWR_PF_RTL_TOP_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_BWR_PF_RTL_TOP_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x089c0 */ u64 rf_msg_bwr_pf_rtl_top_1; -#define VXGE_HAL_RF_MSG_BWR_PF_RTL_TOP_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_BWR_PF_RTL_TOP_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x089c8 */ u64 rf_msg_umq_rtl_top_0; -#define VXGE_HAL_RF_MSG_UMQ_RTL_TOP_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_UMQ_RTL_TOP_0_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 7) -/* 0x089d0 */ u64 rf_msg_umq_rtl_top_1; -#define VXGE_HAL_RF_MSG_UMQ_RTL_TOP_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_UMQ_RTL_TOP_1_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 7) -/* 0x089d8 */ u64 rf_msg_dmq_rtl_top_0; -#define VXGE_HAL_RF_MSG_DMQ_RTL_TOP_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_DMQ_RTL_TOP_0_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 6) -/* 0x089e0 */ u64 rf_msg_dmq_rtl_top_1; -#define VXGE_HAL_RF_MSG_DMQ_RTL_TOP_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_DMQ_RTL_TOP_1_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 6) -/* 0x089e8 */ u64 rf_msg_dmq_rtl_top_2; -#define VXGE_HAL_RF_MSG_DMQ_RTL_TOP_2_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_DMQ_RTL_TOP_2_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 6) -/* 0x089f0 */ u64 rf_msg_dma_resp_rtl_top_0; -#define VXGE_HAL_RF_MSG_DMA_RESP_RTL_TOP_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_DMA_RESP_RTL_TOP_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x089f8 */ u64 rf_msg_dma_resp_rtl_top_1; -#define VXGE_HAL_RF_MSG_DMA_RESP_RTL_TOP_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_DMA_RESP_RTL_TOP_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a00 */ u64 rf_msg_dma_resp_rtl_top_2; -#define VXGE_HAL_RF_MSG_DMA_RESP_RTL_TOP_2_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_DMA_RESP_RTL_TOP_2_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a08 */ u64 rf_msg_cmg2msg_rtl_top_0_0; -#define VXGE_HAL_RF_MSG_CMG2MSG_RTL_TOP_0_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_CMG2MSG_RTL_TOP_0_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a10 */ u64 rf_msg_cmg2msg_rtl_top_1_0; -#define VXGE_HAL_RF_MSG_CMG2MSG_RTL_TOP_1_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_CMG2MSG_RTL_TOP_1_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a18 */ u64 rf_msg_cmg2msg_rtl_top_0_1; -#define VXGE_HAL_RF_MSG_CMG2MSG_RTL_TOP_0_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_CMG2MSG_RTL_TOP_0_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a20 */ u64 rf_msg_cmg2msg_rtl_top_1_1; -#define VXGE_HAL_RF_MSG_CMG2MSG_RTL_TOP_1_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_CMG2MSG_RTL_TOP_1_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a28 */ u64 rf_msg_txpe2msg_rtl_top; -#define VXGE_HAL_RF_MSG_TXPE2MSG_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_TXPE2MSG_RTL_TOP_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08a30 */ u64 rf_msg_rxpe2msg_rtl_top; -#define VXGE_HAL_RF_MSG_RXPE2MSG_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_RXPE2MSG_RTL_TOP_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08a38 */ u64 rf_msg_rpe2msg_rtl_top; -#define VXGE_HAL_RF_MSG_RPE2MSG_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_MSG_RPE2MSG_RTL_TOP_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08a40 */ u64 rr_tim_bmap_rtl_top; -#define VXGE_HAL_RR_TIM_BMAP_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_TIM_BMAP_RTL_TOP_MSG_NMB_IO_BANK1_FUSE(val) vBIT(val, 2, 8) -#define VXGE_HAL_RR_TIM_BMAP_RTL_TOP_MSG_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_TIM_BMAP_RTL_TOP_MSG_NMB_IO_BANK0_FUSE(val) vBIT(val, 12, 8) -#define VXGE_HAL_RR_TIM_BMAP_RTL_TOP_MSG_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08a48 */ u64 rf_tim_vbls_rtl_top; -#define VXGE_HAL_RF_TIM_VBLS_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_VBLS_RTL_TOP_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 8) -/* 0x08a50 */ u64 rf_tim_bmap_msg_rtl_top_0_0; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a58 */ u64 rf_tim_bmap_msg_rtl_top_1_0; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a60 */ u64 rf_tim_bmap_msg_rtl_top_2_0; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a68 */ u64 rf_tim_bmap_msg_rtl_top_0_1; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a70 */ u64 rf_tim_bmap_msg_rtl_top_1_1; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a78 */ u64 rf_tim_bmap_msg_rtl_top_2_1; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a80 */ u64 rf_tim_bmap_msg_rtl_top_0_2; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_2_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_2_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a88 */ u64 rf_tim_bmap_msg_rtl_top_1_2; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_2_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_2_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a90 */ u64 rf_tim_bmap_msg_rtl_top_2_2; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_2_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_2_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08a98 */ u64 rf_tim_bmap_msg_rtl_top_0_3; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_3_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_3_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08aa0 */ u64 rf_tim_bmap_msg_rtl_top_1_3; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_3_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_3_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08aa8 */ u64 rf_tim_bmap_msg_rtl_top_2_3; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_3_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_3_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08ab0 */ u64 rf_tim_bmap_msg_rtl_top_0_4; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_4_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_0_4_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08ab8 */ u64 rf_tim_bmap_msg_rtl_top_1_4; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_4_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_1_4_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08ac0 */ u64 rf_tim_bmap_msg_rtl_top_2_4; -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_4_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TIM_BMAP_MSG_RTL_TOP_2_4_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08ac8 */ u64 rf_xt_trace_rtl_top_up; -#define VXGE_HAL_RF_XT_TRACE_RTL_TOP_UP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_XT_TRACE_RTL_TOP_UP_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08ad0 */ u64 rf_up_xt_dtag_rtl_top; -#define VXGE_HAL_RF_UP_XT_DTAG_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_DTAG_RTL_TOP_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 6) -/* 0x08ad8 */ u64 rf_up_xt_icache_rtl_top_0_0; -#define VXGE_HAL_RF_UP_XT_ICACHE_RTL_TOP_0_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_ICACHE_RTL_TOP_0_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ae0 */ u64 rf_up_xt_icache_rtl_top_1_0; -#define VXGE_HAL_RF_UP_XT_ICACHE_RTL_TOP_1_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_ICACHE_RTL_TOP_1_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ae8 */ u64 rf_up_xt_icache_rtl_top_0_1; -#define VXGE_HAL_RF_UP_XT_ICACHE_RTL_TOP_0_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_ICACHE_RTL_TOP_0_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08af0 */ u64 rf_up_xt_icache_rtl_top_1_1; -#define VXGE_HAL_RF_UP_XT_ICACHE_RTL_TOP_1_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_ICACHE_RTL_TOP_1_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08af8 */ u64 rf_up_xt_itag_rtl_top; -#define VXGE_HAL_RF_UP_XT_ITAG_RTL_TOP_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_ITAG_RTL_TOP_MSG_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 6) -/* 0x08b00 */ u64 rf_up_xt_dcache_rtl_top_0_0; -#define VXGE_HAL_RF_UP_XT_DCACHE_RTL_TOP_0_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_DCACHE_RTL_TOP_0_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08b08 */ u64 rf_up_xt_dcache_rtl_top_1_0; -#define VXGE_HAL_RF_UP_XT_DCACHE_RTL_TOP_1_0_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_DCACHE_RTL_TOP_1_0_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08b10 */ u64 rf_up_xt_dcache_rtl_top_0_1; -#define VXGE_HAL_RF_UP_XT_DCACHE_RTL_TOP_0_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_DCACHE_RTL_TOP_0_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08b18 */ u64 rf_up_xt_dcache_rtl_top_1_1; -#define VXGE_HAL_RF_UP_XT_DCACHE_RTL_TOP_1_1_MSG_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_UP_XT_DCACHE_RTL_TOP_1_1_MSG_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08b20 */ u64 rr_rxpe_xt0_iram_rtl_top_0; -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_0_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_0_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_0_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 4) -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_0_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 7) -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_0_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 4) -/* 0x08b28 */ u64 rr_rxpe_xt0_iram_rtl_top_1; -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_1_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_1_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_1_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 4) -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_1_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 7) -#define VXGE_HAL_RR_RXPE_XT0_IRAM_RTL_TOP_1_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 4) -/* 0x08b30 */ u64 rr_rxpe_xt_dram_rtl_top_0; -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_0_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_0_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_0_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_0_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_0_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x08b38 */ u64 rr_rxpe_xt_dram_rtl_top_1; -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_1_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_1_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_1_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_1_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_RXPE_XT_DRAM_RTL_TOP_1_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x08b40 */ u64 rf_rxpe_msg2rxpe_rtl_top_0; -#define VXGE_HAL_RF_RXPE_MSG2RXPE_RTL_TOP_0_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RXPE_MSG2RXPE_RTL_TOP_0_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08b48 */ u64 rf_rxpe_msg2rxpe_rtl_top_1; -#define VXGE_HAL_RF_RXPE_MSG2RXPE_RTL_TOP_1_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RXPE_MSG2RXPE_RTL_TOP_1_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08b50 */ u64 rf_rxpe_xt0_frm_rtl_top; -#define VXGE_HAL_RF_RXPE_XT0_FRM_RTL_TOP_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RXPE_XT0_FRM_RTL_TOP_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08b58 */ u64 rf_rpe_pdm_rcmd_rtl_top; -#define VXGE_HAL_RF_RPE_PDM_RCMD_RTL_TOP_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RPE_PDM_RCMD_RTL_TOP_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08b60 */ u64 rf_rpe_rcq_rtl_top; -#define VXGE_HAL_RF_RPE_RCQ_RTL_TOP_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RPE_RCQ_RTL_TOP_ONE_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 8) -/* 0x08b68 */ u64 rf_rpe_rco_pble_rtl_top; -#define VXGE_HAL_RF_RPE_RCO_PBLE_RTL_TOP_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RPE_RCO_PBLE_RTL_TOP_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08b70 */ u64 rr_rxpe_xt1_iram_rtl_top_0; -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_0_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_0_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_0_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 4) -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_0_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 7) -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_0_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 4) -/* 0x08b78 */ u64 rr_rxpe_xt1_iram_rtl_top_1; -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_1_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_1_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_1_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 4) -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_1_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 13, 7) -#define VXGE_HAL_RR_RXPE_XT1_IRAM_RTL_TOP_1_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 4) -/* 0x08b80 */ u64 rr_rpe_sccm_rtl_top_0; -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_0_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_0_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_0_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_0_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_0_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08b88 */ u64 rr_rpe_sccm_rtl_top_1; -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_1_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_1_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_1_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_1_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_RPE_SCCM_RTL_TOP_1_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08b90 */ u64 rr_pe_pet_timer_rtl_top_0; -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_0_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_0_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_0_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_0_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_0_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x08b98 */ u64 rr_pe_pet_timer_rtl_top_1; -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_1_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_1_ONE_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_1_ONE_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_1_ONE_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 7) -#define VXGE_HAL_RR_PE_PET_TIMER_RTL_TOP_1_ONE_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 19, 3) -/* 0x08ba0 */ u64 rf_pe_dlm_lwrq_rtl_top_0; -#define VXGE_HAL_RF_PE_DLM_LWRQ_RTL_TOP_0_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PE_DLM_LWRQ_RTL_TOP_0_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08ba8 */ u64 rf_pe_dlm_lwrq_rtl_top_1; -#define VXGE_HAL_RF_PE_DLM_LWRQ_RTL_TOP_1_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PE_DLM_LWRQ_RTL_TOP_1_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08bb0 */ u64 rf_txpe_msg2txpe_rtl_top_0; -#define VXGE_HAL_RF_TXPE_MSG2TXPE_RTL_TOP_0_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TXPE_MSG2TXPE_RTL_TOP_0_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08bb8 */ u64 rf_txpe_msg2txpe_rtl_top_1; -#define VXGE_HAL_RF_TXPE_MSG2TXPE_RTL_TOP_1_ONE_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_TXPE_MSG2TXPE_RTL_TOP_1_ONE_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08bc0 */ u64 rf_pci_retry_buf_rtl_top_0; -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_0_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_0_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08bc8 */ u64 rf_pci_retry_buf_rtl_top_1; -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_1_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_1_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08bd0 */ u64 rf_pci_retry_buf_rtl_top_2; -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_2_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_2_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08bd8 */ u64 rf_pci_retry_buf_rtl_top_3; -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_3_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_3_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08be0 */ u64 rf_pci_retry_buf_rtl_top_4; -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_4_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_4_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08be8 */ u64 rf_pci_retry_buf_rtl_top_5; -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_5_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RETRY_BUF_RTL_TOP_5_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08bf0 */ u64 rf_pci_sot_buf_rtl_top; -#define VXGE_HAL_RF_PCI_SOT_BUF_RTL_TOP_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_SOT_BUF_RTL_TOP_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08bf8 */ u64 rf_pci_rx_ph_rtl_top; -#define VXGE_HAL_RF_PCI_RX_PH_RTL_TOP_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PH_RTL_TOP_PCI_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 8) -/* 0x08c00 */ u64 rf_pci_rx_nph_rtl_top; -#define VXGE_HAL_RF_PCI_RX_NPH_RTL_TOP_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_NPH_RTL_TOP_PCI_NMB_IO_ALL_FUSE(val) vBIT(val, 2, 8) -/* 0x08c08 */ u64 rf_pci_rx_pd_rtl_top_0; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_0_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_0_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c10 */ u64 rf_pci_rx_pd_rtl_top_1; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_1_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_1_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c18 */ u64 rf_pci_rx_pd_rtl_top_2; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_2_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_2_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c20 */ u64 rf_pci_rx_pd_rtl_top_3; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_3_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_3_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c28 */ u64 rf_pci_rx_pd_rtl_top_4; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_4_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_4_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c30 */ u64 rf_pci_rx_pd_rtl_top_5; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_5_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_5_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c38 */ u64 rf_pci_rx_pd_rtl_top_6; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_6_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_6_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c40 */ u64 rf_pci_rx_pd_rtl_top_7; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_7_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_7_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c48 */ u64 rf_pci_rx_pd_rtl_top_8; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_8_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_8_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c50 */ u64 rf_pci_rx_pd_rtl_top_9; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_9_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_9_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c58 */ u64 rf_pci_rx_pd_rtl_top_10; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_10_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_10_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c60 */ u64 rf_pci_rx_pd_rtl_top_11; -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_11_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_PD_RTL_TOP_11_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c68 */ u64 rf_pci_rx_npd_rtl_top_0; -#define VXGE_HAL_RF_PCI_RX_NPD_RTL_TOP_0_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_NPD_RTL_TOP_0_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c70 */ u64 rf_pci_rx_npd_rtl_top_1; -#define VXGE_HAL_RF_PCI_RX_NPD_RTL_TOP_1_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCI_RX_NPD_RTL_TOP_1_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08c78 */ u64 rf_pic_kdfc_dbl_rtl_top_0; -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_0_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_0_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08c80 */ u64 rf_pic_kdfc_dbl_rtl_top_1; -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_1_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_1_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08c88 */ u64 rf_pic_kdfc_dbl_rtl_top_2; -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_2_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_2_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08c90 */ u64 rf_pic_kdfc_dbl_rtl_top_3; -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_3_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_3_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08c98 */ u64 rf_pic_kdfc_dbl_rtl_top_4; -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_4_PCI_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PIC_KDFC_DBL_RTL_TOP_4_PCI_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08ca0 */ u64 rf_pcc_txdo_rtl_top_pcc0; -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC0_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC0_RTDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08ca8 */ u64 rf_pcc_txdo_rtl_top_pcc1; -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC1_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC1_RTDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08cb0 */ u64 rf_pcc_txdo_rtl_top_pcc2; -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC2_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC2_RTDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08cb8 */ u64 rf_pcc_txdo_rtl_top_pcc3; -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC3_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC3_RTDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08cc0 */ u64 rf_pcc_txdo_rtl_top_pcc4; -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC4_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC4_RTDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08cc8 */ u64 rf_pcc_txdo_rtl_top_pcc5; -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC5_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC5_RTDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08cd0 */ u64 rf_pcc_txdo_rtl_top_pcc6; -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC6_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC6_RTDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08cd8 */ u64 rf_pcc_txdo_rtl_top_pcc7; -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC7_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_PCC_TXDO_RTL_TOP_PCC7_RTDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08ce0 */ u64 rr_pcc_ass_buf_rtl_top_pcc1; -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC1_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC1_RTDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC1_RTDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC1_RTDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC1_RTDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08ce8 */ u64 rr_pcc_ass_buf_rtl_top_pcc3; -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC3_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC3_RTDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC3_RTDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC3_RTDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC3_RTDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08cf0 */ u64 rr_pcc_ass_buf_rtl_top_pcc5; -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC5_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC5_RTDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC5_RTDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC5_RTDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC5_RTDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08cf8 */ u64 rr_pcc_ass_buf_rtl_top_pcc7; -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC7_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC7_RTDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC7_RTDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC7_RTDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC7_RTDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08d00 */ u64 rr_pcc_ass_buf_rtl_top_pcc0; -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC0_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC0_RTDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC0_RTDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC0_RTDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC0_RTDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08d08 */ u64 rr_pcc_ass_buf_rtl_top_pcc2; -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC2_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC2_RTDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC2_RTDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC2_RTDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC2_RTDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08d10 */ u64 rr_pcc_ass_buf_rtl_top_pcc6; -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC6_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC6_RTDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC6_RTDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC6_RTDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC6_RTDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08d18 */ u64 rr_pcc_ass_buf_rtl_top_pcc4; -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC4_RTDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC4_RTDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC4_RTDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC4_RTDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_PCC_ASS_BUF_RTL_TOP_PCC4_RTDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08d20 */ u64 rf_rocrc_cmdq_bp_rtl_top_0_wrapper0; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_0_W0_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_0_W0_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d28 */ u64 rf_rocrc_cmdq_bp_rtl_top_1_wrapper0; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_1_W0_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_1_W0_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d30 */ u64 rf_rocrc_cmdq_bp_rtl_top_2_wrapper0; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_2_W0_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_2_WRAPPER0_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d38 */ u64 rf_rocrc_cmdq_bp_rtl_top_0_wrapper1; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_0_W1_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_0_W1_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d40 */ u64 rf_rocrc_cmdq_bp_rtl_top_1_wrapper1; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_1_W1_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_1_W1_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d48 */ u64 rf_rocrc_cmdq_bp_rtl_top_2_wrapper1; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_2_W1_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_2_W1_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d50 */ u64 rf_rocrc_cmdq_bp_rtl_top_0_wrapper2; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_0_W2_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_0_WRAPPER2_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d58 */ u64 rf_rocrc_cmdq_bp_rtl_top_1_wrapper2; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_1_W2_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_1_W2_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d60 */ u64 rf_rocrc_cmdq_bp_rtl_top_2_wrapper2; -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_2_W2_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_CMDQ_BP_RTL_TOP_2_W2_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d68 */ u64 rr_rocrc_rxd_rtl_top_rxd0; -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD0_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD0_WRDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD0_WRDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD0_WRDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD0_WRDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08d70 */ u64 rr_rocrc_rxd_rtl_top_rxd1; -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD1_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD1_WRDMA_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 8) -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD1_WRDMA_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 10, 2) -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD1_WRDMA_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 12, 8) -#define VXGE_HAL_RR_ROCRC_RXD_RTL_TOP_RXD1_WRDMA_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 20, 2) -/* 0x08d78 */ u64 rf_rocrc_umq_mdq_rtl_top_0; -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_0_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_0_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d80 */ u64 rf_rocrc_umq_mdq_rtl_top_1; -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_1_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_1_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d88 */ u64 rf_rocrc_umq_mdq_rtl_top_2; -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_2_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_2_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d90 */ u64 rf_rocrc_umq_mdq_rtl_top_3; -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_3_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_3_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08d98 */ u64 rf_rocrc_umq_mdq_rtl_top_4; -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_4_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_4_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08da0 */ u64 rf_rocrc_umq_mdq_rtl_top_5; -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_5_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_5_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08da8 */ u64 rf_rocrc_umq_mdq_rtl_top_6; -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_6_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_6_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08db0 */ u64 rf_rocrc_umq_mdq_rtl_top_7; -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_7_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_UMQ_MDQ_RTL_TOP_7_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08db8 */ u64 rf_rocrc_immdbuf_rtl_top; -#define VXGE_HAL_RF_ROCRC_IMMDBUF_RTL_TOP_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_IMMDBUF_RTL_TOP_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08dc0 */ u64 rf_rocrc_qcc_byp_rtl_top_0; -#define VXGE_HAL_RF_ROCRC_QCC_BYP_RTL_TOP_0_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_QCC_BYP_RTL_TOP_0_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08dc8 */ u64 rf_rocrc_qcc_byp_rtl_top_1; -#define VXGE_HAL_RF_ROCRC_QCC_BYP_RTL_TOP_1_WRDMA_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_ROCRC_QCC_BYP_RTL_TOP_1_WRDMA_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08dd0 */ u64 rr_rmac_da_lkp_rtl_top_0; -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_0_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_0_XGMAC_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_0_XGMAC_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 2) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_0_XGMAC_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 10, 6) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_0_XGMAC_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 16, 2) -/* 0x08dd8 */ u64 rr_rmac_da_lkp_rtl_top_1; -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_1_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_1_XGMAC_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_1_XGMAC_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 2) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_1_XGMAC_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 10, 6) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_1_XGMAC_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 16, 2) -/* 0x08de0 */ u64 rr_rmac_da_lkp_rtl_top_2; -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_2_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_2_XGMAC_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_2_XGMAC_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 2) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_2_XGMAC_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 10, 6) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_2_XGMAC_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 16, 2) -/* 0x08de8 */ u64 rr_rmac_da_lkp_rtl_top_3; -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_3_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_3_XGMAC_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 6) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_3_XGMAC_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 8, 2) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_3_XGMAC_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 10, 6) -#define VXGE_HAL_RR_RMAC_DA_LKP_RTL_TOP_3_XGMAC_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 16, 2) -/* 0x08df0 */ u64 rr_rmac_pn_lkp_d_rtl_top; -#define VXGE_HAL_RR_RMAC_PN_LKP_D_RTL_TOP_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RR_RMAC_PN_LKP_D_RTL_TOP_XGMAC_NMB_IO_BANK1_FUSE(val)\ - vBIT(val, 2, 7) -#define VXGE_HAL_RR_RMAC_PN_LKP_D_RTL_TOP_XGMAC_NMB_IO_BANK1_ADD_FUSE(val)\ - vBIT(val, 9, 2) -#define VXGE_HAL_RR_RMAC_PN_LKP_D_RTL_TOP_XGMAC_NMB_IO_BANK0_FUSE(val)\ - vBIT(val, 11, 7) -#define VXGE_HAL_RR_RMAC_PN_LKP_D_RTL_TOP_XGMAC_NMB_IO_BANK0_ADD_FUSE(val)\ - vBIT(val, 18, 2) -/* 0x08df8 */ u64 rf_rmac_pn_lkp_s_rtl_top_0; -#define VXGE_HAL_RF_RMAC_PN_LKP_S_RTL_TOP_0_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_PN_LKP_S_RTL_TOP_0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08e00 */ u64 rf_rmac_pn_lkp_s_rtl_top_1; -#define VXGE_HAL_RF_RMAC_PN_LKP_S_RTL_TOP_1_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_PN_LKP_S_RTL_TOP_1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08e08 */ u64 rf_rmac_rth_lkp_rtl_top_0_0; -#define VXGE_HAL_RF_RMAC_RTH_LKP_RTL_TOP_0_0_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTH_LKP_RTL_TOP_0_0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e10 */ u64 rf_rmac_rth_lkp_rtl_top_1_0; -#define VXGE_HAL_RF_RMAC_RTH_LKP_RTL_TOP_1_0_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTH_LKP_RTL_TOP_1_0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e18 */ u64 rf_rmac_rth_lkp_rtl_top_0_1; -#define VXGE_HAL_RF_RMAC_RTH_LKP_RTL_TOP_0_1_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTH_LKP_RTL_TOP_0_1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e20 */ u64 rf_rmac_rth_lkp_rtl_top_1_1; -#define VXGE_HAL_RF_RMAC_RTH_LKP_RTL_TOP_1_1_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTH_LKP_RTL_TOP_1_1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e28 */ u64 rf_rmac_ds_lkp_rtl_top; -#define VXGE_HAL_RF_RMAC_DS_LKP_RTL_TOP_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_DS_LKP_RTL_TOP_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08e30 */ u64 rf_rmac_rts_part_rtl_top_0_rmac0; -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_0_RMAC0_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_0_RMAC0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e38 */ u64 rf_rmac_rts_part_rtl_top_1_rmac0; -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_1_RMAC0_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_1_RMAC0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e40 */ u64 rf_rmac_rts_part_rtl_top_0_rmac1; -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_0_RMAC1_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_0_RMAC1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e48 */ u64 rf_rmac_rts_part_rtl_top_1_rmac1; -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_1_RMAC1_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_1_RMAC1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e50 */ u64 rf_rmac_rts_part_rtl_top_0_rmac2; -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_0_RMAC2_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_0_RMAC2_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e58 */ u64 rf_rmac_rts_part_rtl_top_1_rmac2; -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_1_RMAC2_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTS_PART_RTL_TOP_1_RMAC2_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e60 */ u64 rf_rmac_rth_mask_rtl_top_0; -#define VXGE_HAL_RF_RMAC_RTH_MASK_RTL_TOP_0_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTH_MASK_RTL_TOP_0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e68 */ u64 rf_rmac_rth_mask_rtl_top_1; -#define VXGE_HAL_RF_RMAC_RTH_MASK_RTL_TOP_1_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTH_MASK_RTL_TOP_1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e70 */ u64 rf_rmac_rth_mask_rtl_top_2; -#define VXGE_HAL_RF_RMAC_RTH_MASK_RTL_TOP_2_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTH_MASK_RTL_TOP_2_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e78 */ u64 rf_rmac_rth_mask_rtl_top_3; -#define VXGE_HAL_RF_RMAC_RTH_MASK_RTL_TOP_3_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_RTH_MASK_RTL_TOP_3_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 8) -/* 0x08e80 */ u64 rf_rmac_vid_lkp_rtl_top_0; -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_0_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08e88 */ u64 rf_rmac_vid_lkp_rtl_top_1; -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_1_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08e90 */ u64 rf_rmac_vid_lkp_rtl_top_2; -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_2_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_2_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08e98 */ u64 rf_rmac_vid_lkp_rtl_top_3; -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_3_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_3_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08ea0 */ u64 rf_rmac_vid_lkp_rtl_top_4; -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_4_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_4_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08ea8 */ u64 rf_rmac_vid_lkp_rtl_top_5; -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_5_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_5_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08eb0 */ u64 rf_rmac_vid_lkp_rtl_top_6; -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_6_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_6_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08eb8 */ u64 rf_rmac_vid_lkp_rtl_top_7; -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_7_XGMAC_NMB_IO_REPAIR_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_VID_LKP_RTL_TOP_7_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 6) -/* 0x08ec0 */ u64 rf_rmac_stats_rtl_top_0_stats_0; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_0_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ec8 */ u64 rf_rmac_stats_rtl_top_1_stats_0; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_0_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_0_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ed0 */ u64 rf_rmac_stats_rtl_top_0_stats_1; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_1_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ed8 */ u64 rf_rmac_stats_rtl_top_1_stats_1; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_1_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_1_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ee0 */ u64 rf_rmac_stats_rtl_top_0_stats_2; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_2_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_2_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ee8 */ u64 rf_rmac_stats_rtl_top_1_stats_2; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_2_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_2_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ef0 */ u64 rf_rmac_stats_rtl_top_0_stats_3; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_3_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_3_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08ef8 */ u64 rf_rmac_stats_rtl_top_1_stats_3; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_3_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_3_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08f00 */ u64 rf_rmac_stats_rtl_top_0_stats_4; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_4_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_0_STATS_4_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) -/* 0x08f08 */ u64 rf_rmac_stats_rtl_top_1_stats_4; -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_4_XGMAC_NMB_IO_REP_STATUS(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_RF_RMAC_STATS_RTL_TOP_1_STATS_4_XGMAC_NMB_IO_ALL_FUSE(val)\ - vBIT(val, 2, 7) - u8 unused09000[0x09000 - 0x08f10]; - -/* 0x09000 */ u64 g3ifcmd_fb_int_status; -#define VXGE_HAL_G3IFCMD_FB_INT_STATUS_ERR_G3IF_INT mBIT(0) -/* 0x09008 */ u64 g3ifcmd_fb_int_mask; -/* 0x09010 */ u64 g3ifcmd_fb_err_reg; -#define VXGE_HAL_G3IFCMD_FB_ERR_REG_G3IF_CK_DLL_LOCK mBIT(6) -#define VXGE_HAL_G3IFCMD_FB_ERR_REG_G3IF_SM_ERR mBIT(7) -#define VXGE_HAL_G3IFCMD_FB_ERR_REG_G3IF_RWDQS_DLL_LOCK(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3IFCMD_FB_ERR_REG_G3IF_IOCAL_FAULT mBIT(55) -/* 0x09018 */ u64 g3ifcmd_fb_err_mask; -/* 0x09020 */ u64 g3ifcmd_fb_err_alarm; -/* 0x09028 */ u64 g3ifcmd_fb_dll_ck0; -#define VXGE_HAL_G3IFCMD_FB_DLL_CK0_DLL_0_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFCMD_FB_DLL_CK0_DLL_0_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFCMD_FB_DLL_CK0_ROLL mBIT(23) -#define VXGE_HAL_G3IFCMD_FB_DLL_CK0_CMD_ADD_DLL_0_S(val) vBIT(val, 25, 7) -#define VXGE_HAL_G3IFCMD_FB_DLL_CK0_DLL_ENABLE mBIT(39) -#define VXGE_HAL_G3IFCMD_FB_DLL_CK0_DLL_UPD(val) vBIT(val, 44, 4) -/* 0x09030 */ u64 g3ifcmd_fb_io_ctrl; -#define VXGE_HAL_G3IFCMD_FB_IO_CTRL_DRIVE mBIT(7) -#define VXGE_HAL_G3IFCMD_FB_IO_CTRL_TERM(val) vBIT(val, 13, 3) -/* 0x09038 */ u64 g3ifcmd_fb_iocal; -#define VXGE_HAL_G3IFCMD_FB_IOCAL_RST_CYCLES(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFCMD_FB_IOCAL_RST_VALUE(val) vBIT(val, 17, 7) -#define VXGE_HAL_G3IFCMD_FB_IOCAL_CORR_VALUE(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3IFCMD_FB_IOCAL_IOCAL_CTRL_CAL_VALUE0(val) vBIT(val, 33, 7) -#define VXGE_HAL_G3IFCMD_FB_IOCAL_IOCAL_CTRL_CAL_VALUE1(val) vBIT(val, 41, 7) -#define VXGE_HAL_G3IFCMD_FB_IOCAL_IOCAL_CTRL_CAL_VALUE2(val) vBIT(val, 49, 7) -#define VXGE_HAL_G3IFCMD_FB_IOCAL_IOCAL_CTRL_CAL_VALUE3(val) vBIT(val, 57, 7) -/* 0x09040 */ u64 g3ifcmd_fb_master_dll_ck; -#define VXGE_HAL_G3IFCMD_FB_MASTER_DLL_CK_DDR_GR_RAW(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3IFCMD_FB_MASTER_DLL_CK_SAMPLE(val) vBIT(val, 8, 8) -/* 0x09048 */ u64 g3ifcmd_fb_dll_training; -#define VXGE_HAL_G3IFCMD_FB_DLL_TRAINING_TRA_START mBIT(6) -#define VXGE_HAL_G3IFCMD_FB_DLL_TRAINING_TRA_DISABLE mBIT(7) -#define VXGE_HAL_G3IFCMD_FB_DLL_TRAINING_START_CODE(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3IFCMD_FB_DLL_TRAINING_END_CODE(val) vBIT(val, 17, 7) - u8 unused09110[0x09110 - 0x09050]; - -/* 0x09110 */ u64 g3ifgr01_fb_group0_dll_rdqs; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09118 */ u64 g3ifgr01_fb_group0_dll_rdqs1; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09120 */ u64 g3ifgr01_fb_group0_dll_wdqs; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09128 */ u64 g3ifgr01_fb_group0_dll_wdqs1; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_WDQS1_SEL_MASTER_WDQS_CKN mBIT(31) -/* 0x09130 */ u64 g3ifgr01_fb_group0_dll_training1; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x09138 */ u64 g3ifgr01_fb_group0_dll_training2; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x09140 */ u64 g3ifgr01_fb_group0_dll_training3; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x09148 */ u64 g3ifgr01_fb_group0_dll_act_training5; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x09150 */ u64 g3ifgr01_fb_group0_dll_training6; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x09158 */ u64 g3ifgr01_fb_group0_dll_atra_offset; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x09160 */ u64 g3ifgr01_fb_group0_dll_tra_hold; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09168 */ u64 g3ifgr01_fb_group0_dll_atra_hold; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09170 */ u64 g3ifgr01_fb_group0_dll_master_codes; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x09178 */ u64 g3ifgr01_fb_group0_dll_atra_timer; -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ATRA_TIMER_VALUE(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_FB_GROUP0_DLL_ATRA_TIMER_ENABLED mBIT(23) -/* 0x09180 */ u64 g3ifgr01_fb_group1_dll_rdqs; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS_SA_CAL(val)\ - vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS_SB_CAL(val)\ - vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS_ATRA_SA_CAL(val)\ - vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS_ATRA_SB_CAL(val)\ - vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS_DDR_DLL_S(val)\ - vBIT(val, 57, 7) -/* 0x09188 */ u64 g3ifgr01_fb_group1_dll_rdqs1; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09190 */ u64 g3ifgr01_fb_group1_dll_wdqs; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09198 */ u64 g3ifgr01_fb_group1_dll_wdqs1; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_WDQS1_SEL_MASTER_WDQS_CKN mBIT(31) -/* 0x091a0 */ u64 g3ifgr01_fb_group1_dll_training1; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x091a8 */ u64 g3ifgr01_fb_group1_dll_training2; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x091b0 */ u64 g3ifgr01_fb_group1_dll_training3; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x091b8 */ u64 g3ifgr01_fb_group1_dll_act_training5; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ACT_TRAINING5_TCNT(val) vBIT(val, 28, 4) -/* 0x091c0 */ u64 g3ifgr01_fb_group1_dll_training6; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORRECTION\ - mBIT(23) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORRECTION\ - mBIT(31) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x091c8 */ u64 g3ifgr01_fb_group1_dll_atra_offset; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x091d0 */ u64 g3ifgr01_fb_group1_dll_tra_hold; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x091d8 */ u64 g3ifgr01_fb_group1_dll_atra_hold; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x091e0 */ u64 g3ifgr01_fb_group1_dll_master_codes; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x091e8 */ u64 g3ifgr01_fb_group1_dll_atra_timer; -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_FB_GROUP1_DLL_ATRA_TIMER_ENABLED mBIT(23) - u8 unused09210[0x09210 - 0x091f0]; - -/* 0x09210 */ u64 g3ifgr23_fb_group2_dll_rdqs; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09218 */ u64 g3ifgr23_fb_group2_dll_rdqs1; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09220 */ u64 g3ifgr23_fb_group2_dll_wdqs; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09228 */ u64 g3ifgr23_fb_group2_dll_wdqs1; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_WDQS1_SEL_MASTER_WDQS_CKN mBIT(31) -/* 0x09230 */ u64 g3ifgr23_fb_group2_dll_training1; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x09238 */ u64 g3ifgr23_fb_group2_dll_training2; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x09240 */ u64 g3ifgr23_fb_group2_dll_training3; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x09248 */ u64 g3ifgr23_fb_group2_dll_act_training5; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x09250 */ u64 g3ifgr23_fb_group2_dll_training6; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORRECTION\ - mBIT(23) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORRECTION\ - mBIT(31) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x09258 */ u64 g3ifgr23_fb_group2_dll_atra_offset; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x09260 */ u64 g3ifgr23_fb_group2_dll_tra_hold; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09268 */ u64 g3ifgr23_fb_group2_dll_atra_hold; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09270 */ u64 g3ifgr23_fb_group2_dll_master_codes; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x09278 */ u64 g3ifgr23_fb_group2_dll_atra_timer; -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_FB_GROUP2_DLL_ATRA_TIMER_ENABLED mBIT(23) -/* 0x09280 */ u64 g3ifgr23_fb_group3_dll_rdqs; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09288 */ u64 g3ifgr23_fb_group3_dll_rdqs1; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09290 */ u64 g3ifgr23_fb_group3_dll_wdqs; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09298 */ u64 g3ifgr23_fb_group3_dll_wdqs1; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_WDQS1_SEL_MASTER_WDQS_CKN mBIT(31) -/* 0x092a0 */ u64 g3ifgr23_fb_group3_dll_training1; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x092a8 */ u64 g3ifgr23_fb_group3_dll_training2; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x092b0 */ u64 g3ifgr23_fb_group3_dll_training3; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x092b8 */ u64 g3ifgr23_fb_group3_dll_act_training5; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ACT_TRAINING5_TCNT(val) vBIT(val, 28, 4) -/* 0x092c0 */ u64 g3ifgr23_fb_group3_dll_training6; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORRECTION\ - mBIT(23) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORRECTION\ - mBIT(31) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x092c8 */ u64 g3ifgr23_fb_group3_dll_atra_offset; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x092d0 */ u64 g3ifgr23_fb_group3_dll_tra_hold; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x092d8 */ u64 g3ifgr23_fb_group3_dll_atra_hold; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x092e0 */ u64 g3ifgr23_fb_group3_dll_master_codes; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x092e8 */ u64 g3ifgr23_fb_group3_dll_atra_timer; -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_FB_GROUP3_DLL_ATRA_TIMER_ENABLED mBIT(23) - u8 unused09400[0x09400 - 0x092f0]; - -/* 0x09400 */ u64 g3ifcmd_cmu_int_status; -#define VXGE_HAL_G3IFCMD_CMU_INT_STATUS_ERR_G3IF_INT mBIT(0) -/* 0x09408 */ u64 g3ifcmd_cmu_int_mask; -/* 0x09410 */ u64 g3ifcmd_cmu_err_reg; -#define VXGE_HAL_G3IFCMD_CMU_ERR_REG_G3IF_CK_DLL_LOCK mBIT(6) -#define VXGE_HAL_G3IFCMD_CMU_ERR_REG_G3IF_SM_ERR mBIT(7) -#define VXGE_HAL_G3IFCMD_CMU_ERR_REG_G3IF_RWDQS_DLL_LOCK(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3IFCMD_CMU_ERR_REG_G3IF_IOCAL_FAULT mBIT(55) -/* 0x09418 */ u64 g3ifcmd_cmu_err_mask; -/* 0x09420 */ u64 g3ifcmd_cmu_err_alarm; -/* 0x09428 */ u64 g3ifcmd_cmu_dll_ck0; -#define VXGE_HAL_G3IFCMD_CMU_DLL_CK0_DLL_0_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFCMD_CMU_DLL_CK0_DLL_0_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFCMD_CMU_DLL_CK0_ROLL mBIT(23) -#define VXGE_HAL_G3IFCMD_CMU_DLL_CK0_CMD_ADD_DLL_0_S(val) vBIT(val, 25, 7) -#define VXGE_HAL_G3IFCMD_CMU_DLL_CK0_DLL_ENABLE mBIT(39) -#define VXGE_HAL_G3IFCMD_CMU_DLL_CK0_DLL_UPD(val) vBIT(val, 44, 4) -/* 0x09430 */ u64 g3ifcmd_cmu_io_ctrl; -#define VXGE_HAL_G3IFCMD_CMU_IO_CTRL_DRIVE mBIT(7) -#define VXGE_HAL_G3IFCMD_CMU_IO_CTRL_TERM(val) vBIT(val, 13, 3) -/* 0x09438 */ u64 g3ifcmd_cmu_iocal; -#define VXGE_HAL_G3IFCMD_CMU_IOCAL_RST_CYCLES(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFCMD_CMU_IOCAL_RST_VALUE(val) vBIT(val, 17, 7) -#define VXGE_HAL_G3IFCMD_CMU_IOCAL_CORR_VALUE(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3IFCMD_CMU_IOCAL_IOCAL_CTRL_CAL_VALUE0(val) vBIT(val, 33, 7) -#define VXGE_HAL_G3IFCMD_CMU_IOCAL_IOCAL_CTRL_CAL_VALUE1(val) vBIT(val, 41, 7) -#define VXGE_HAL_G3IFCMD_CMU_IOCAL_IOCAL_CTRL_CAL_VALUE2(val) vBIT(val, 49, 7) -#define VXGE_HAL_G3IFCMD_CMU_IOCAL_IOCAL_CTRL_CAL_VALUE3(val) vBIT(val, 57, 7) -/* 0x09440 */ u64 g3ifcmd_cmu_master_dll_ck; -#define VXGE_HAL_G3IFCMD_CMU_MASTER_DLL_CK_DDR_GR_RAW(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3IFCMD_CMU_MASTER_DLL_CK_SAMPLE(val) vBIT(val, 8, 8) -/* 0x09448 */ u64 g3ifcmd_cmu_dll_training; -#define VXGE_HAL_G3IFCMD_CMU_DLL_TRAINING_TRA_START mBIT(6) -#define VXGE_HAL_G3IFCMD_CMU_DLL_TRAINING_TRA_DISABLE mBIT(7) -#define VXGE_HAL_G3IFCMD_CMU_DLL_TRAINING_START_CODE(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3IFCMD_CMU_DLL_TRAINING_END_CODE(val) vBIT(val, 17, 7) - u8 unused09510[0x09510 - 0x09450]; - -/* 0x09510 */ u64 g3ifgr01_cmu_group0_dll_rdqs; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09518 */ u64 g3ifgr01_cmu_group0_dll_rdqs1; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09520 */ u64 g3ifgr01_cmu_group0_dll_wdqs; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09528 */ u64 g3ifgr01_cmu_group0_dll_wdqs1; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_WDQS1_SEL_MASTER_WDQS_CKN\ - mBIT(31) -/* 0x09530 */ u64 g3ifgr01_cmu_group0_dll_training1; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x09538 */ u64 g3ifgr01_cmu_group0_dll_training2; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x09540 */ u64 g3ifgr01_cmu_group0_dll_training3; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x09548 */ u64 g3ifgr01_cmu_group0_dll_act_training5; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x09550 */ u64 g3ifgr01_cmu_group0_dll_training6; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x09558 */ u64 g3ifgr01_cmu_group0_dll_atra_offset; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x09560 */ u64 g3ifgr01_cmu_group0_dll_tra_hold; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09568 */ u64 g3ifgr01_cmu_group0_dll_atra_hold; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09570 */ u64 g3ifgr01_cmu_group0_dll_master_codes; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x09578 */ u64 g3ifgr01_cmu_group0_dll_atra_timer; -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_CMU_GROUP0_DLL_ATRA_TIMER_ENABLED mBIT(23) -/* 0x09580 */ u64 g3ifgr01_cmu_group1_dll_rdqs; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09588 */ u64 g3ifgr01_cmu_group1_dll_rdqs1; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09590 */ u64 g3ifgr01_cmu_group1_dll_wdqs; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09598 */ u64 g3ifgr01_cmu_group1_dll_wdqs1; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_WDQS1_SEL_MASTER_WDQS_CKN mBIT(31) -/* 0x095a0 */ u64 g3ifgr01_cmu_group1_dll_training1; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x095a8 */ u64 g3ifgr01_cmu_group1_dll_training2; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x095b0 */ u64 g3ifgr01_cmu_group1_dll_training3; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x095b8 */ u64 g3ifgr01_cmu_group1_dll_act_training5; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x095c0 */ u64 g3ifgr01_cmu_group1_dll_training6; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x095c8 */ u64 g3ifgr01_cmu_group1_dll_atra_offset; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x095d0 */ u64 g3ifgr01_cmu_group1_dll_tra_hold; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x095d8 */ u64 g3ifgr01_cmu_group1_dll_atra_hold; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x095e0 */ u64 g3ifgr01_cmu_group1_dll_master_codes; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x095e8 */ u64 g3ifgr01_cmu_group1_dll_atra_timer; -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_CMU_GROUP1_DLL_ATRA_TIMER_ENABLED mBIT(23) - u8 unused09610[0x09610 - 0x095f0]; - -/* 0x09610 */ u64 g3ifgr23_cmu_group2_dll_rdqs; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09618 */ u64 g3ifgr23_cmu_group2_dll_rdqs1; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09620 */ u64 g3ifgr23_cmu_group2_dll_wdqs; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09628 */ u64 g3ifgr23_cmu_group2_dll_wdqs1; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_WDQS1_DLL_ENABLE\ - mBIT(15) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_WDQS1_DLL_UPD(val)\ - vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_WDQS1_SEL_MASTER_WDQS_CKN\ - mBIT(31) -/* 0x09630 */ u64 g3ifgr23_cmu_group2_dll_training1; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x09638 */ u64 g3ifgr23_cmu_group2_dll_training2; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x09640 */ u64 g3ifgr23_cmu_group2_dll_training3; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x09648 */ u64 g3ifgr23_cmu_group2_dll_act_training5; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x09650 */ u64 g3ifgr23_cmu_group2_dll_training6; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x09658 */ u64 g3ifgr23_cmu_group2_dll_atra_offset; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x09660 */ u64 g3ifgr23_cmu_group2_dll_tra_hold; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09668 */ u64 g3ifgr23_cmu_group2_dll_atra_hold; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09670 */ u64 g3ifgr23_cmu_group2_dll_master_codes; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x09678 */ u64 g3ifgr23_cmu_group2_dll_atra_timer; -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_CMU_GROUP2_DLL_ATRA_TIMER_ENABLED mBIT(23) -/* 0x09680 */ u64 g3ifgr23_cmu_group3_dll_rdqs; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09688 */ u64 g3ifgr23_cmu_group3_dll_rdqs1; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09690 */ u64 g3ifgr23_cmu_group3_dll_wdqs; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09698 */ u64 g3ifgr23_cmu_group3_dll_wdqs1; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_WDQS1_SEL_MASTER_WDQS_CKN mBIT(31) -/* 0x096a0 */ u64 g3ifgr23_cmu_group3_dll_training1; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x096a8 */ u64 g3ifgr23_cmu_group3_dll_training2; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x096b0 */ u64 g3ifgr23_cmu_group3_dll_training3; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x096b8 */ u64 g3ifgr23_cmu_group3_dll_act_training5; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ACT_TRAINING5_DISABLE\ - mBIT(23) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x096c0 */ u64 g3ifgr23_cmu_group3_dll_training6; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x096c8 */ u64 g3ifgr23_cmu_group3_dll_atra_offset; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x096d0 */ u64 g3ifgr23_cmu_group3_dll_tra_hold; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x096d8 */ u64 g3ifgr23_cmu_group3_dll_atra_hold; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x096e0 */ u64 g3ifgr23_cmu_group3_dll_master_codes; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x096e8 */ u64 g3ifgr23_cmu_group3_dll_atra_timer; -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_CMU_GROUP3_DLL_ATRA_TIMER_ENABLED mBIT(23) - u8 unused09800[0x09800 - 0x096f0]; - -/* 0x09800 */ u64 g3ifcmd_cml_int_status; -#define VXGE_HAL_G3IFCMD_CML_INT_STATUS_ERR_G3IF_INT mBIT(0) -/* 0x09808 */ u64 g3ifcmd_cml_int_mask; -/* 0x09810 */ u64 g3ifcmd_cml_err_reg; -#define VXGE_HAL_G3IFCMD_CML_ERR_REG_G3IF_CK_DLL_LOCK mBIT(6) -#define VXGE_HAL_G3IFCMD_CML_ERR_REG_G3IF_SM_ERR mBIT(7) -#define VXGE_HAL_G3IFCMD_CML_ERR_REG_G3IF_RWDQS_DLL_LOCK(val)\ - vBIT(val, 24, 8) -#define VXGE_HAL_G3IFCMD_CML_ERR_REG_G3IF_IOCAL_FAULT mBIT(55) -/* 0x09818 */ u64 g3ifcmd_cml_err_mask; -/* 0x09820 */ u64 g3ifcmd_cml_err_alarm; -/* 0x09828 */ u64 g3ifcmd_cml_dll_ck0; -#define VXGE_HAL_G3IFCMD_CML_DLL_CK0_DLL_0_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFCMD_CML_DLL_CK0_DLL_0_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFCMD_CML_DLL_CK0_ROLL mBIT(23) -#define VXGE_HAL_G3IFCMD_CML_DLL_CK0_CMD_ADD_DLL_0_S(val) vBIT(val, 25, 7) -#define VXGE_HAL_G3IFCMD_CML_DLL_CK0_DLL_ENABLE mBIT(39) -#define VXGE_HAL_G3IFCMD_CML_DLL_CK0_DLL_UPD(val) vBIT(val, 44, 4) -/* 0x09830 */ u64 g3ifcmd_cml_io_ctrl; -#define VXGE_HAL_G3IFCMD_CML_IO_CTRL_DRIVE mBIT(7) -#define VXGE_HAL_G3IFCMD_CML_IO_CTRL_TERM(val) vBIT(val, 13, 3) -/* 0x09838 */ u64 g3ifcmd_cml_iocal; -#define VXGE_HAL_G3IFCMD_CML_IOCAL_RST_CYCLES(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFCMD_CML_IOCAL_RST_VALUE(val) vBIT(val, 17, 7) -#define VXGE_HAL_G3IFCMD_CML_IOCAL_CORR_VALUE(val) vBIT(val, 24, 8) -#define VXGE_HAL_G3IFCMD_CML_IOCAL_IOCAL_CTRL_CAL_VALUE0(val)\ - vBIT(val, 33, 7) -#define VXGE_HAL_G3IFCMD_CML_IOCAL_IOCAL_CTRL_CAL_VALUE1(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFCMD_CML_IOCAL_IOCAL_CTRL_CAL_VALUE2(val)\ - vBIT(val, 49, 7) -#define VXGE_HAL_G3IFCMD_CML_IOCAL_IOCAL_CTRL_CAL_VALUE3(val)\ - vBIT(val, 57, 7) -/* 0x09840 */ u64 g3ifcmd_cml_master_dll_ck; -#define VXGE_HAL_G3IFCMD_CML_MASTER_DLL_CK_DDR_GR_RAW(val) vBIT(val, 1, 7) -#define VXGE_HAL_G3IFCMD_CML_MASTER_DLL_CK_SAMPLE(val) vBIT(val, 8, 8) -/* 0x09848 */ u64 g3ifcmd_cml_dll_training; -#define VXGE_HAL_G3IFCMD_CML_DLL_TRAINING_TRA_START mBIT(6) -#define VXGE_HAL_G3IFCMD_CML_DLL_TRAINING_TRA_DISABLE mBIT(7) -#define VXGE_HAL_G3IFCMD_CML_DLL_TRAINING_START_CODE(val) vBIT(val, 9, 7) -#define VXGE_HAL_G3IFCMD_CML_DLL_TRAINING_END_CODE(val) vBIT(val, 17, 7) - u8 unused09910[0x09910 - 0x09850]; - -/* 0x09910 */ u64 g3ifgr01_cml_group0_dll_rdqs; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS_ATRA_SA_CAL(val)\ - vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS_ATRA_SB_CAL(val)\ - vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09918 */ u64 g3ifgr01_cml_group0_dll_rdqs1; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09920 */ u64 g3ifgr01_cml_group0_dll_wdqs; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09928 */ u64 g3ifgr01_cml_group0_dll_wdqs1; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_WDQS1_SEL_MASTER_WDQS_CKN\ - mBIT(31) -/* 0x09930 */ u64 g3ifgr01_cml_group0_dll_training1; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x09938 */ u64 g3ifgr01_cml_group0_dll_training2; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x09940 */ u64 g3ifgr01_cml_group0_dll_training3; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x09948 */ u64 g3ifgr01_cml_group0_dll_act_training5; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x09950 */ u64 g3ifgr01_cml_group0_dll_training6; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x09958 */ u64 g3ifgr01_cml_group0_dll_atra_offset; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x09960 */ u64 g3ifgr01_cml_group0_dll_tra_hold; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09968 */ u64 g3ifgr01_cml_group0_dll_atra_hold; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09970 */ u64 g3ifgr01_cml_group0_dll_master_codes; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x09978 */ u64 g3ifgr01_cml_group0_dll_atra_timer; -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_CML_GROUP0_DLL_ATRA_TIMER_ENABLED mBIT(23) -/* 0x09980 */ u64 g3ifgr01_cml_group1_dll_rdqs; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09988 */ u64 g3ifgr01_cml_group1_dll_rdqs1; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09990 */ u64 g3ifgr01_cml_group1_dll_wdqs; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09998 */ u64 g3ifgr01_cml_group1_dll_wdqs1; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_WDQS1_SEL_MASTER_WDQS_CKN mBIT(31) -/* 0x099a0 */ u64 g3ifgr01_cml_group1_dll_training1; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x099a8 */ u64 g3ifgr01_cml_group1_dll_training2; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x099b0 */ u64 g3ifgr01_cml_group1_dll_training3; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x099b8 */ u64 g3ifgr01_cml_group1_dll_act_training5; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x099c0 */ u64 g3ifgr01_cml_group1_dll_training6; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x099c8 */ u64 g3ifgr01_cml_group1_dll_atra_offset; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x099d0 */ u64 g3ifgr01_cml_group1_dll_tra_hold; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x099d8 */ u64 g3ifgr01_cml_group1_dll_atra_hold; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x099e0 */ u64 g3ifgr01_cml_group1_dll_master_codes; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x099e8 */ u64 g3ifgr01_cml_group1_dll_atra_timer; -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ATRA_TIMER_VALUE(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR01_CML_GROUP1_DLL_ATRA_TIMER_ENABLED mBIT(23) - u8 unused09a10[0x09a10 - 0x099f0]; - -/* 0x09a10 */ u64 g3ifgr23_cml_group2_dll_rdqs; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09a18 */ u64 g3ifgr23_cml_group2_dll_rdqs1; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09a20 */ u64 g3ifgr23_cml_group2_dll_wdqs; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09a28 */ u64 g3ifgr23_cml_group2_dll_wdqs1; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_WDQS1_SEL_MASTER_WDQS_CKN\ - mBIT(31) -/* 0x09a30 */ u64 g3ifgr23_cml_group2_dll_training1; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x09a38 */ u64 g3ifgr23_cml_group2_dll_training2; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x09a40 */ u64 g3ifgr23_cml_group2_dll_training3; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x09a48 */ u64 g3ifgr23_cml_group2_dll_act_training5; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ACT_TRAINING5_TCNT(val) \ - vBIT(val, 28, 4) -/* 0x09a50 */ u64 g3ifgr23_cml_group2_dll_training6; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x09a58 */ u64 g3ifgr23_cml_group2_dll_atra_offset; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x09a60 */ u64 g3ifgr23_cml_group2_dll_tra_hold; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09a68 */ u64 g3ifgr23_cml_group2_dll_atra_hold; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09a70 */ u64 g3ifgr23_cml_group2_dll_master_codes; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x09a78 */ u64 g3ifgr23_cml_group2_dll_atra_timer; -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_CML_GROUP2_DLL_ATRA_TIMER_ENABLED mBIT(23) -/* 0x09a80 */ u64 g3ifgr23_cml_group3_dll_rdqs; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS_ATRA_SA_CAL(val) vBIT(val, 32, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS_ATRA_SB_CAL(val) vBIT(val, 40, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09a88 */ u64 g3ifgr23_cml_group3_dll_rdqs1; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS1_DLL_ENABLE mBIT(14) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS1_DLL_ENABLE_ATRA mBIT(15) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_RDQS1_DLL_UPD(val) vBIT(val, 21, 3) -/* 0x09a90 */ u64 g3ifgr23_cml_group3_dll_wdqs; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_WDQS_SA_CAL(val) vBIT(val, 0, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_WDQS_SB_CAL(val) vBIT(val, 8, 8) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_WDQS_DDR_DLL_S(val) vBIT(val, 57, 7) -/* 0x09a98 */ u64 g3ifgr23_cml_group3_dll_wdqs1; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_WDQS1_ROLL mBIT(7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_WDQS1_DLL_ENABLE mBIT(15) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_WDQS1_DLL_UPD(val) vBIT(val, 21, 3) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_WDQS1_SEL_MASTER_WDQS_CKN mBIT(31) -/* 0x09aa0 */ u64 g3ifgr23_cml_group3_dll_training1; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING1_DDR_TRA_STATUS(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING1_DDR_TRA_MIN(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING1_DDR_TRA_MAX(val)\ - vBIT(val, 17, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING1_DDR_ATRA_STATUS(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING1_DDR_ATRA_MIN(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING1_DDR_ATRA_MAX(val)\ - vBIT(val, 49, 7) -/* 0x09aa8 */ u64 g3ifgr23_cml_group3_dll_training2; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING2_DDR_ATRA_PASS_CNT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING2_DDR_ATRA_FAIL_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING2_DDR_ATRA_TIMER_FAIL_CNT(val)\ - vBIT(val, 48, 16) -/* 0x09ab0 */ u64 g3ifgr23_cml_group3_dll_training3; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING3_DLL_TRA_DATA00(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING3_DLL_TRA_DATA01(val)\ - vBIT(val, 16, 16) -/* 0x09ab8 */ u64 g3ifgr23_cml_group3_dll_act_training5; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ACT_TRAINING5_START_CODE(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ACT_TRAINING5_END_CODE(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ACT_TRAINING5_DISABLE mBIT(23) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ACT_TRAINING5_TCNT(val)\ - vBIT(val, 28, 4) -/* 0x09ac0 */ u64 g3ifgr23_cml_group3_dll_training6; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING6_DLL_TRA_EN_HALF_EYE_VALID\ - mBIT(7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING6_DLL_ATRA_EN_HALF_EYE_VALID\ - mBIT(15) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING6_DLL_TRA_EN_MASTER_CORR\ - mBIT(23) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING6_DLL_ATRA_EN_MASTER_CORR\ - mBIT(31) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING6_DLL_SEL_TRA_ONLY mBIT(39) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRAINING6_DLL_EN_MOVING_AVR mBIT(47) -/* 0x09ac8 */ u64 g3ifgr23_cml_group3_dll_atra_offset; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ATRA_OFFSET_EQUATION(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ATRA_OFFSET_DDR_VALUE(val)\ - vBIT(val, 8, 8) -/* 0x09ad0 */ u64 g3ifgr23_cml_group3_dll_tra_hold; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_TRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09ad8 */ u64 g3ifgr23_cml_group3_dll_atra_hold; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ATRA_HOLD_DDR_MASTER_MIN(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ATRA_HOLD_DDR_MASTER_MAX(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ATRA_HOLD_DDR_TIME(val)\ - vBIT(val, 16, 24) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ATRA_HOLD_DDR_UPDATES(val)\ - vBIT(val, 40, 24) -/* 0x09ae0 */ u64 g3ifgr23_cml_group3_dll_master_codes; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_MASTER_CODES_DDR_RDQS_TRA_HOLD(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_MASTER_CODES_DDR_RDQS_ATRA_HOLD(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_MASTER_CODES_DDR_WDQS_RAW(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_MASTER_CODES_DDR_RDQS_RAW(val)\ - vBIT(val, 57, 7) -/* 0x09ae8 */ u64 g3ifgr23_cml_group3_dll_atra_timer; -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ATRA_TIMER_VALUE(val) vBIT(val, 0, 16) -#define VXGE_HAL_G3IFGR23_CML_GROUP3_DLL_ATRA_TIMER_ENABLED mBIT(23) - u8 unused09b00[0x09b00 - 0x09af0]; - -/* 0x09b00 */ u64 vpath_to_vplane_map[17]; -#define VXGE_HAL_VPATH_TO_VPLANE_MAP_VPATH_TO_VPLANE_MAP(val) vBIT(val, 3, 5) - u8 unused09c30[0x09c30 - 0x09b88]; - -/* 0x09c30 */ u64 xgxs_cfg_port[2]; -#define VXGE_HAL_XGXS_CFG_PORT_SIG_DETECT_FORCE_LOS(val) vBIT(val, 16, 4) -#define VXGE_HAL_XGXS_CFG_PORT_SIG_DETECT_FORCE_VALID(val) vBIT(val, 20, 4) -#define VXGE_HAL_XGXS_CFG_PORT_SEL_INFO_0 mBIT(27) -#define VXGE_HAL_XGXS_CFG_PORT_SEL_INFO_1(val) vBIT(val, 29, 3) -#define VXGE_HAL_XGXS_CFG_PORT_TX_LANE0_SKEW(val) vBIT(val, 32, 4) -#define VXGE_HAL_XGXS_CFG_PORT_TX_LANE1_SKEW(val) vBIT(val, 36, 4) -#define VXGE_HAL_XGXS_CFG_PORT_TX_LANE2_SKEW(val) vBIT(val, 40, 4) -#define VXGE_HAL_XGXS_CFG_PORT_TX_LANE3_SKEW(val) vBIT(val, 44, 4) -/* 0x09c40 */ u64 xgxs_rxber_cfg_port[2]; -#define VXGE_HAL_XGXS_RXBER_CFG_PORT_INTERVAL_DUR(val) vBIT(val, 0, 4) -#define VXGE_HAL_XGXS_RXBER_CFG_PORT_RXGXS_INTERVAL_CNT(val) vBIT(val, 16, 48) -/* 0x09c50 */ u64 xgxs_rxber_status_port[2]; -#define VXGE_HAL_XGXS_RXBER_STATUS_PORT_RXGXS_RXGXS_LANE_A_ERR_CNT(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_XGXS_RXBER_STATUS_PORT_RXGXS_RXGXS_LANE_B_ERR_CNT(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_XGXS_RXBER_STATUS_PORT_RXGXS_RXGXS_LANE_C_ERR_CNT(val)\ - vBIT(val, 32, 16) -#define VXGE_HAL_XGXS_RXBER_STATUS_PORT_RXGXS_RXGXS_LANE_D_ERR_CNT(val)\ - vBIT(val, 48, 16) -/* 0x09c60 */ u64 xgxs_status_port[2]; -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_TX_ACTIVITY(val) vBIT(val, 0, 4) -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_RX_ACTIVITY(val) vBIT(val, 4, 4) -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_CTC_FIFO_ERR BIT(11) -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_BYTE_SYNC_LOST(val) vBIT(val, 12, 4) -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_CTC_ERR(val) vBIT(val, 16, 4) -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_ALIGNMENT_ERR mBIT(23) -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_DEC_ERR(val) vBIT(val, 24, 8) -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_SKIP_INS_REQ(val) vBIT(val, 32, 4) -#define VXGE_HAL_XGXS_STATUS_PORT_XMACJ_PCS_SKIP_DEL_REQ(val) vBIT(val, 36, 4) -/* 0x09c70 */ u64 xgxs_pma_reset_port[2]; -#define VXGE_HAL_XGXS_PMA_RESET_PORT_SERDES_RESET(val) vBIT(val, 0, 8) - u8 unused09c90[0x09c90 - 0x09c80]; - -/* 0x09c90 */ u64 xgxs_static_cfg_port[2]; -#define VXGE_HAL_XGXS_STATIC_CFG_PORT_FW_CTRL_SERDES mBIT(3) - u8 unused09cc0[0x09cc0 - 0x09ca0]; - -/* 0x09cc0 */ u64 xgxs_serdes_fw_cfg_port[2]; -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_TX_EN_LANE0(val) vBIT(val, 1, 3) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_TX_EN_LANE1(val) vBIT(val, 5, 3) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_TX_EN_LANE2(val) vBIT(val, 9, 3) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_TX_EN_LANE3(val) vBIT(val, 13, 3) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_EN_LANE0 mBIT(16) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_EN_LANE1 mBIT(17) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_EN_LANE2 mBIT(18) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_EN_LANE3 mBIT(19) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_PLL_PWRON_LANE0 mBIT(20) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_PLL_PWRON_LANE1 mBIT(21) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_PLL_PWRON_LANE2 mBIT(22) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_PLL_PWRON_LANE3 mBIT(23) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_TERM_EN_LANE0 mBIT(24) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_TERM_EN_LANE1 mBIT(25) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_TERM_EN_LANE2 mBIT(26) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_TERM_EN_LANE3 mBIT(27) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_MPLL_CK_OFF mBIT(31) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_MPLL_PWRON mBIT(35) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_CKO_WORD_CON(val) vBIT(val, 37, 3) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RESET_N mBIT(43) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_CKO_WORD_READY mBIT(47) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_CK_READY_LANE0 mBIT(48) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_CK_READY_LANE1 mBIT(49) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_CK_READY_LANE2 mBIT(50) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_RX_CK_READY_LANE3 mBIT(51) -#define VXGE_HAL_XGXS_SERDES_FW_CFG_PORT_TRUST_HW_RX_CK_READY mBIT(55) -/* 0x09cd0 */ u64 xgxs_serdes_tx_cfg_port[2]; -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_BOOST_LANE0(val) vBIT(val, 0, 4) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_BOOST_LANE1(val) vBIT(val, 4, 4) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_BOOST_LANE2(val) vBIT(val, 8, 4) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_BOOST_LANE3(val) vBIT(val, 12, 4) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_ATTEN_LANE0(val) vBIT(val, 17, 3) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_ATTEN_LANE1(val) vBIT(val, 21, 3) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_ATTEN_LANE2(val) vBIT(val, 25, 3) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_ATTEN_LANE3(val) vBIT(val, 29, 3) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CALC_LANE0 mBIT(32) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CALC_LANE1 mBIT(33) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CALC_LANE2 mBIT(34) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CALC_LANE3 mBIT(35) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CLK_ALIGN_LANE0 mBIT(36) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CLK_ALIGN_LANE1 mBIT(37) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CLK_ALIGN_LANE2 mBIT(38) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CLK_ALIGN_LANE3 mBIT(39) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CKO_EN_LANE0 mBIT(40) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CKO_EN_LANE1 mBIT(41) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CKO_EN_LANE2 mBIT(42) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_CKO_EN_LANE3 mBIT(43) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_EDGERATE_LANE0(val) vBIT(val, 44, 2) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_EDGERATE_LANE1(val) vBIT(val, 46, 2) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_EDGERATE_LANE2(val) vBIT(val, 48, 2) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_EDGERATE_LANE3(val) vBIT(val, 50, 2) -#define VXGE_HAL_XGXS_SERDES_TX_CFG_PORT_TX_LVL(val) vBIT(val, 55, 5) -/* 0x09ce0 */ u64 xgxs_serdes_rx_cfg_port[2]; -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_ALIGN_EN_LANE0 mBIT(0) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_ALIGN_EN_LANE1 mBIT(1) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_ALIGN_EN_LANE2 mBIT(2) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_ALIGN_EN_LANE3 mBIT(3) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_EQ_VAL_LANE0(val) vBIT(val, 5, 3) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_EQ_VAL_LANE1(val) vBIT(val, 9, 3) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_EQ_VAL_LANE2(val) vBIT(val, 13, 3) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_EQ_VAL_LANE3(val) vBIT(val, 17, 3) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_DPLL_MODE_LANE0(val)\ - vBIT(val, 21, 3) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_DPLL_MODE_LANE1(val)\ - vBIT(val, 25, 3) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_DPLL_MODE_LANE2(val)\ - vBIT(val, 29, 3) -#define VXGE_HAL_XGXS_SERDES_RX_CFG_PORT_RX_DPLL_MODE_LANE3(val)\ - vBIT(val, 33, 3) -/* 0x09cf0 */ u64 xgxs_serdes_extra_cfg_port[2]; -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_DPLL_RESET_LANE0 mBIT(0) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_DPLL_RESET_LANE1 mBIT(1) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_DPLL_RESET_LANE2 mBIT(2) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_DPLL_RESET_LANE3 mBIT(3) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_LOS_CTL_LANE0(val) vBIT(val, 4, 2) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_LOS_CTL_LANE1(val) vBIT(val, 6, 2) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_LOS_CTL_LANE2(val) vBIT(val, 8, 2) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_LOS_CTL_LANE3(val) vBIT(val, 10, 2) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_WIDE_XFACE mBIT(14) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_RTUNE_DO_TUNE mBIT(15) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_LOS_LVL(val) vBIT(val, 19, 5) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_CKO_ALIVE_CON(val) vBIT(val, 28, 2) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_MPLL_SS_EN mBIT(32) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_MPLL_INT_CTL(val) vBIT(val, 33, 3) -#define VXGE_HAL_XGXS_SERDES_EXTRA_CFG_PORT_MPLL_PROP_CTL(val) vBIT(val, 37, 3) -/* 0x09d00 */ u64 xgxs_serdes_status_port[2]; -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_COMMA_DET_LANE0(val)\ - vBIT(val, 0, 2) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_COMMA_DET_LANE1(val)\ - vBIT(val, 2, 2) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_COMMA_DET_LANE2(val)\ - vBIT(val, 4, 2) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_COMMA_DET_LANE3(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_TX_RXPRES_LANE0 mBIT(8) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_TX_RXPRES_LANE1 mBIT(9) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_TX_RXPRES_LANE2 mBIT(10) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_TX_RXPRES_LANE3 mBIT(11) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_TX_DONE_LANE0 mBIT(12) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_TX_DONE_LANE1 mBIT(13) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_TX_DONE_LANE2 mBIT(14) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_TX_DONE_LANE3 mBIT(15) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_PLL_STATE_LANE0 mBIT(16) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_PLL_STATE_LANE1 mBIT(17) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_PLL_STATE_LANE2 mBIT(18) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_PLL_STATE_LANE3 mBIT(19) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_VALID_LANE0 mBIT(20) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_VALID_LANE1 mBIT(21) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_VALID_LANE2 mBIT(22) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_RX_VALID_LANE3 mBIT(23) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_LOS_LANE0 mBIT(24) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_LOS_LANE1 mBIT(25) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_LOS_LANE2 mBIT(26) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_LOS_LANE3 mBIT(27) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_OP_DONE_ASSERTED mBIT(30) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_OP_DONE_DEASSERTED mBIT(31) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_POWER_GOOD mBIT(35) -#define VXGE_HAL_XGXS_SERDES_STATUS_PORT_XPRG_SERDES_INIT_COMPLETE mBIT(39) -/* 0x09d10 */ u64 xgxs_serdes_cr_access_port[2]; -#define VXGE_HAL_XGXS_SERDES_CR_ACCESS_PORT_WE mBIT(3) -#define VXGE_HAL_XGXS_SERDES_CR_ACCESS_PORT_STROBE mBIT(7) -#define VXGE_HAL_XGXS_SERDES_CR_ACCESS_PORT_ADDR(val) vBIT(val, 16, 16) -#define VXGE_HAL_XGXS_SERDES_CR_ACCESS_PORT_DATA(val) vBIT(val, 48, 16) - u8 unused09d40[0x09d40 - 0x09d20]; - -/* 0x09d40 */ u64 xgxs_info_port[2]; -#define VXGE_HAL_XGXS_INFO_PORT_XMACJ_INFO_0(val) vBIT(val, 0, 32) -#define VXGE_HAL_XGXS_INFO_PORT_XMACJ_INFO_1(val) vBIT(val, 32, 32) -/* 0x09d50 */ u64 ratemgmt_cfg_port[2]; -#define VXGE_HAL_RATEMGMT_CFG_PORT_MODE(val) vBIT(val, 2, 2) -#define VXGE_HAL_RATEMGMT_CFG_PORT_RATE mBIT(7) -#define VXGE_HAL_RATEMGMT_CFG_PORT_FIXED_USE_FSM mBIT(11) -#define VXGE_HAL_RATEMGMT_CFG_PORT_ANTP_USE_FSM mBIT(15) -#define VXGE_HAL_RATEMGMT_CFG_PORT_ANBE_USE_FSM mBIT(19) -/* 0x09d60 */ u64 ratemgmt_status_port[2]; -#define VXGE_HAL_RATEMGMT_STATUS_PORT_RATEMGMT_COMPLETE mBIT(3) -#define VXGE_HAL_RATEMGMT_STATUS_PORT_RATEMGMT_RATE mBIT(7) -#define VXGE_HAL_RATEMGMT_STATUS_PORT_RATEMGMT_MAC_MATCHES_PHY mBIT(11) - u8 unused09d80[0x09d80 - 0x09d70]; - -/* 0x09d80 */ u64 ratemgmt_fixed_cfg_port[2]; -#define VXGE_HAL_RATEMGMT_FIXED_CFG_PORT_RESTART mBIT(7) -/* 0x09d90 */ u64 ratemgmt_antp_cfg_port[2]; -#define VXGE_HAL_RATEMGMT_ANTP_CFG_PORT_RESTART mBIT(7) -#define VXGE_HAL_RATEMGMT_ANTP_CFG_PORT_USE_PREAMBLE_EXT_PHY mBIT(11) -#define VXGE_HAL_RATEMGMT_ANTP_CFG_PORT_USE_ACT_SEL mBIT(15) -#define VXGE_HAL_RATEMGMT_ANTP_CFG_PORT_T_RETRY_PHY_QUERY(val)\ - vBIT(val, 16, 4) -#define VXGE_HAL_RATEMGMT_ANTP_CFG_PORT_T_WAIT_MDIO_RESP(val)\ - vBIT(val, 20, 4) -#define VXGE_HAL_RATEMGMT_ANTP_CFG_PORT_T_LDOWN_REAUTO_RESP(val)\ - vBIT(val, 24, 4) -#define VXGE_HAL_RATEMGMT_ANTP_CFG_PORT_ADVERTISE_10G mBIT(31) -#define VXGE_HAL_RATEMGMT_ANTP_CFG_PORT_ADVERTISE_1G mBIT(35) -/* 0x09da0 */ u64 ratemgmt_anbe_cfg_port[2]; -#define VXGE_HAL_RATEMGMT_ANBE_CFG_PORT_RESTART mBIT(7) -#define VXGE_HAL_RATEMGMT_ANBE_CFG_PORT_PARALLEL_DETECT_10G_KX4_ENABLE mBIT(11) -#define VXGE_HAL_RATEMGMT_ANBE_CFG_PORT_PARALLEL_DETECT_1G_KX_ENABLE mBIT(15) -#define VXGE_HAL_RATEMGMT_ANBE_CFG_PORT_T_SYNC_10G_KX4(val) vBIT(val, 16, 4) -#define VXGE_HAL_RATEMGMT_ANBE_CFG_PORT_T_SYNC_1G_KX(val) vBIT(val, 20, 4) -#define VXGE_HAL_RATEMGMT_ANBE_CFG_PORT_T_DME_EXCHANGE(val) vBIT(val, 24, 4) -#define VXGE_HAL_RATEMGMT_ANBE_CFG_PORT_ADVERTISE_10G_KX4 mBIT(31) -#define VXGE_HAL_RATEMGMT_ANBE_CFG_PORT_ADVERTISE_1G_KX mBIT(35) -/* 0x09db0 */ u64 anbe_cfg_port[2]; -#define VXGE_HAL_ANBE_CFG_PORT_RESET_CFG_REGS(val) vBIT(val, 0, 8) -#define VXGE_HAL_ANBE_CFG_PORT_ALIGN_10G_KX4_OVERRIDE(val) vBIT(val, 10, 2) -#define VXGE_HAL_ANBE_CFG_PORT_SYNC_1G_KX_OVERRIDE(val) vBIT(val, 14, 2) -/* 0x09dc0 */ u64 anbe_mgr_ctrl_port[2]; -#define VXGE_HAL_ANBE_MGR_CTRL_PORT_WE mBIT(3) -#define VXGE_HAL_ANBE_MGR_CTRL_PORT_STROBE mBIT(7) -#define VXGE_HAL_ANBE_MGR_CTRL_PORT_ADDR(val) vBIT(val, 15, 9) -#define VXGE_HAL_ANBE_MGR_CTRL_PORT_DATA(val) vBIT(val, 32, 32) - u8 unused09de0[0x09de0 - 0x09dd0]; - -/* 0x09de0 */ u64 anbe_fw_mstr_port[2]; -#define VXGE_HAL_ANBE_FW_MSTR_PORT_CONNECT_BEAN_TO_SERDES mBIT(3) -#define VXGE_HAL_ANBE_FW_MSTR_PORT_TX_ZEROES_TO_SERDES mBIT(7) -/* 0x09df0 */ u64 anbe_hwfsm_gen_status_port[2]; -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_CHOSE_10G_KX4_USING_PD\ - mBIT(3) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_CHOSE_10G_KX4_USING_DME\ - mBIT(7) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_CHOSE_1G_KX_USING_PD\ - mBIT(11) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_CHOSE_1G_KX_USING_DME\ - mBIT(15) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_ANBEFSM_STATE(val)\ - vBIT(val, 18, 6) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_BEAN_NEXT_PAGE_RECEIVED\ - mBIT(27) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_BEAN_PARALLEL_DETECT_FAULT\ - mBIT(31) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_BEAN_BASE_PAGE_RECEIVED\ - mBIT(35) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_BEAN_AUTONEG_COMPLETE\ - mBIT(39) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXP_NP_BEFORE_BP\ - mBIT(43) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXP_AN_COMPL_BEFORE_BP\ - mBIT(47) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXP_AN_COMPL_BEFORE_NP\ - mBIT(51) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXP_MODE_WHEN_AN_COMPL\ - mBIT(55) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_COUNT_BP(val)\ - vBIT(val, 56, 4) -#define VXGE_HAL_ANBE_HWFSM_GEN_STATUS_PORT_RATEMGMT_COUNT_NP(val)\ - vBIT(val, 60, 4) -/* 0x09e00 */ u64 anbe_hwfsm_bp_status_port[2]; -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_FEC_ENABLE mBIT(32) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_FEC_ABILITY mBIT(33) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_10G_KR_CAPABLE mBIT(40) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_10G_KX4_CAPABLE mBIT(41) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_1G_KX_CAPABLE mBIT(42) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_TX_NONCE(val)\ - vBIT(val, 43, 5) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_NP mBIT(48) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_ACK mBIT(49) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_REMOTE_FAULT mBIT(50) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_ASM_DIR mBIT(51) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_PAUSE mBIT(53) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_ECHOED_NONCE(val)\ - vBIT(val, 54, 5) -#define VXGE_HAL_ANBE_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_SELECTOR_FIELD(val)\ - vBIT(val, 59, 5) -/* 0x09e10 */ u64 anbe_hwfsm_np_status_port[2]; -#define VXGE_HAL_ANBE_HWFSM_NP_STATUS_PORT_RATEMGMT_NP_BITS_47_TO_32(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_ANBE_HWFSM_NP_STATUS_PORT_RATEMGMT_NP_BITS_31_TO_0(val)\ - vBIT(val, 32, 32) - u8 unused09e30[0x09e30 - 0x09e20]; - -/* 0x09e30 */ u64 antp_gen_cfg_port[2]; -/* 0x09e40 */ u64 antp_hwfsm_gen_status_port[2]; -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_CHOSE_10G mBIT(3) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_CHOSE_1G mBIT(7) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_ANTPFSM_STATE(val)\ - vBIT(val, 10, 6) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXPECTED_TIMEOUT mBIT(19) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_AUTONEG_COMPLETE mBIT(23) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXPECTED_NO_LP_XNP\ - mBIT(27) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_GOT_LP_XNP mBIT(31) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXPECTED_MESSAGE_CODE\ - mBIT(35) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_GOT_LP_MESSAGE_CODE_10G_1K\ - mBIT(39) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXPECTED_NO_HCD mBIT(43) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_FOUND_HCD mBIT(47) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_UNEXPECTED_INVALID_RATE\ - mBIT(51) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_VALID_RATE mBIT(55) -#define VXGE_HAL_ANTP_HWFSM_GEN_STATUS_PORT_RATEMGMT_PERSISTENT_LDOWN mBIT(59) -/* 0x09e50 */ u64 antp_hwfsm_bp_status_port[2]; -#define VXGE_HAL_ANTP_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_NP mBIT(0) -#define VXGE_HAL_ANTP_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_ACK mBIT(1) -#define VXGE_HAL_ANTP_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_RF mBIT(2) -#define VXGE_HAL_ANTP_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_XNP mBIT(3) -#define VXGE_HAL_ANTP_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_ABILITY_FIELD(val)\ - vBIT(val, 4, 7) -#define VXGE_HAL_ANTP_HWFSM_BP_STATUS_PORT_RATEMGMT_BP_SELECTOR_FIELD(val)\ - vBIT(val, 11, 5) -/* 0x09e60 */ u64 antp_hwfsm_xnp_status_port[2]; -#define VXGE_HAL_ANTP_HWFSM_XNP_STATUS_PORT_RATEMGMT_XNP_NP mBIT(0) -#define VXGE_HAL_ANTP_HWFSM_XNP_STATUS_PORT_RATEMGMT_XNP_ACK mBIT(1) -#define VXGE_HAL_ANTP_HWFSM_XNP_STATUS_PORT_RATEMGMT_XNP_MP mBIT(2) -#define VXGE_HAL_ANTP_HWFSM_XNP_STATUS_PORT_RATEMGMT_XNP_ACK2 mBIT(3) -#define VXGE_HAL_ANTP_HWFSM_XNP_STATUS_PORT_RATEMGMT_XNP_TOGGLE mBIT(4) -#define VXGE_HAL_ANTP_HWFSM_XNP_STATUS_PORT_RATEMGMT_XNP_MESSAGE_CODE(val)\ - vBIT(val, 5, 11) -#define VXGE_HAL_ANTP_HWFSM_XNP_STATUS_PORT_RATEMGMT_XNP_UNF_CODE_FIELD1(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_ANTP_HWFSM_XNP_STATUS_PORT_RATEMGMT_XNP_UNF_CODE_FIELD2(val)\ - vBIT(val, 32, 16) -/* 0x09e70 */ u64 mdio_mgr_access_port[2]; -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_STROBE_ONE mBIT(3) -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE(val) vBIT(val, 5, 3) -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD(val) vBIT(val, 11, 5) -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR(val) vBIT(val, 16, 16) -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_DATA(val) vBIT(val, 32, 16) -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ST_PATTERN(val) vBIT(val, 49, 2) -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_PREAMBLE mBIT(51) -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_PRTAD(val) vBIT(val, 55, 5) -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_STROBE_TWO mBIT(63) - u8 unused09ea0[0x09ea0 - 0x09e80]; - -/* 0x09ea0 */ u64 mdio_gen_cfg_port[2]; - - u8 unused0a200[0x0a200 - 0x09eb0]; - -/* 0x0a200 */ u64 xmac_vsport_choices_vh[17]; -#define VXGE_HAL_XMAC_VSPORT_CHOICES_VH_VSPORT_VECTOR(val) vBIT(val, 0, 17) - u8 unused0a400[0x0a400 - 0x0a288]; - -/* 0x0a400 */ u64 rx_thresh_cfg_vp[17]; -#define VXGE_HAL_RX_THRESH_CFG_VP_PAUSE_LOW_THR(val) vBIT(val, 0, 8) -#define VXGE_HAL_RX_THRESH_CFG_VP_PAUSE_HIGH_THR(val) vBIT(val, 8, 8) -#define VXGE_HAL_RX_THRESH_CFG_VP_RED_THR_0(val) vBIT(val, 16, 8) -#define VXGE_HAL_RX_THRESH_CFG_VP_RED_THR_1(val) vBIT(val, 24, 8) -#define VXGE_HAL_RX_THRESH_CFG_VP_RED_THR_2(val) vBIT(val, 32, 8) -#define VXGE_HAL_RX_THRESH_CFG_VP_RED_THR_3(val) vBIT(val, 40, 8) - u8 unused0ac00[0x0ac00 - 0x0a488]; - -/* 0x0ac00 */ u64 fau_adaptive_lro_vpath_enable; -#define VXGE_HAL_FAU_ADAPTIVE_LRO_VPATH_ENABLE_EN(val) vBIT(val, 0, 17) -/* 0x0ac08 */ u64 fau_adaptive_lro_base_sid_vp[17]; -#define VXGE_HAL_FAU_ADAPTIVE_LRO_BASE_SID_VP_VALUE(val) vBIT(val, 2, 6) -#define VXGE_HAL_FAU_ADAPTIVE_LRO_BASE_SID_VP_USE_HASH_WIDTH(val)\ - vBIT(val, 11, 5) - -} vxge_hal_mrpcim_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_MRPCIM_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-mrpcim.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-mrpcim.h +++ sys/dev/vxge/vxgehal/vxgehal-mrpcim.h @@ -1,137 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_MRPCIM_H -#define VXGE_HAL_MRPCIM_H - -__EXTERN_BEGIN_DECLS - -/* - * __hal_mrpcim_t - * - * HAL mrpcim object. Represents privileged mode device. - */ -typedef struct __hal_mrpcim_t { - u32 mdio_phy_prtad0; - u32 mdio_phy_prtad1; - u32 mdio_dte_prtad0; - u32 mdio_dte_prtad1; - vxge_hal_vpd_data_t vpd_data; - __hal_blockpool_entry_t *mrpcim_stats_block; - vxge_hal_mrpcim_stats_hw_info_t *mrpcim_stats; - vxge_hal_mrpcim_stats_hw_info_t mrpcim_stats_sav; - vxge_hal_mrpcim_xpak_stats_t xpak_stats[VXGE_HAL_MAC_MAX_WIRE_PORTS]; -} __hal_mrpcim_t; - -#define VXGE_HAL_MRPCIM_STATS_PIO_READ(loc, offset) { \ - status = vxge_hal_mrpcim_stats_access(devh, \ - VXGE_HAL_STATS_OP_READ, \ - loc, \ - offset, \ - &val64); \ - \ - if (status != VXGE_HAL_OK) { \ - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", \ - __FILE__, __func__, __LINE__, status); \ - return (status); \ - } \ -} - -#define VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(reg) \ - vxge_os_pio_mem_write64( \ - hldev->header.pdev, \ - hldev->header.regh0, \ - VXGE_HAL_INTR_MASK_ALL, \ - (reg)); - -#define VXGE_HAL_MRPCIM_ERROR_REG_MASK(reg) \ - vxge_os_pio_mem_write64( \ - hldev->header.pdev, \ - hldev->header.regh0, \ - VXGE_HAL_INTR_MASK_ALL, \ - (reg)); - -#define VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(mask, reg) \ - vxge_os_pio_mem_write64( \ - hldev->header.pdev, \ - hldev->header.regh0, \ - ~mask, \ - (reg)); - -vxge_hal_status_e -__hal_mrpcim_mdio_access( - vxge_hal_device_h devh, - u32 port, - u32 operation, - u32 device, - u16 addr, - u16 *data); - -vxge_hal_status_e -__hal_mrpcim_rts_table_access( - vxge_hal_device_h devh, - u32 action, - u32 rts_table, - u32 offset, - u64 *data1, - u64 *data2, - u64 *vpath_vector); - -vxge_hal_status_e -__hal_mrpcim_initialize(__hal_device_t *hldev); - -vxge_hal_status_e -__hal_mrpcim_terminate(__hal_device_t *hldev); - -void -__hal_mrpcim_get_vpd_data(__hal_device_t *hldev); - -void -__hal_mrpcim_xpak_counter_check(__hal_device_t *hldev, - u32 port, u32 type, u32 value); - -vxge_hal_status_e -__hal_mrpcim_stats_get( - __hal_device_t *hldev, - vxge_hal_mrpcim_stats_hw_info_t *mrpcim_stats); - -vxge_hal_status_e -__hal_mrpcim_mac_configure(__hal_device_t *hldev); - -vxge_hal_status_e -__hal_mrpcim_lag_configure(__hal_device_t *hldev); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_MRPCIM_H */ Index: sys/dev/vxge/vxgehal/vxgehal-mrpcim.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-mrpcim.c +++ sys/dev/vxge/vxgehal/vxgehal-mrpcim.c @@ -1,6640 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * vxge_hal_mrpcim_serial_number_get - Returns the serial number - * @devh: HAL device handle. - * - * Return the serial number - */ -const u8 * -vxge_hal_mrpcim_serial_number_get(vxge_hal_device_h devh) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (NULL); - } - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (hldev->mrpcim->vpd_data.serial_num); -} - -/* - * vxge_hal_mrpcim_vpath_map_get - Returns the assigned vpaths map - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @bar0: Address of BAR0 in PCI config - * @func: Function Number - * - * Returns the assigned vpaths map - */ -u64 -vxge_hal_mrpcim_vpath_map_get( - pci_dev_h pdev, - pci_reg_h regh0, - u8 *bar0, - u32 func) -{ - u64 val64; - vxge_hal_legacy_reg_t *legacy_reg; - vxge_hal_toc_reg_t *toc_reg; - vxge_hal_vpath_reg_t *vpath_reg; - - vxge_assert(bar0 != NULL); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "bar0 = 0x"VXGE_OS_STXFMT", func = %d", - (ptr_t) pdev, (ptr_t) regh0, (ptr_t) bar0, func); - - legacy_reg = (vxge_hal_legacy_reg_t *) - vxge_hal_device_get_legacy_reg(pdev, regh0, bar0); - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &legacy_reg->toc_first_pointer); - - toc_reg = (vxge_hal_toc_reg_t *) ((void *)(bar0 + val64)); - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &toc_reg->toc_vpath_pointer[0]); - - vpath_reg = (vxge_hal_vpath_reg_t *) ((void *)(bar0 + val64)); - - val64 = __hal_vpath_vpath_map_get(pdev, regh0, 0, 0, func, vpath_reg); - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (val64); -} - -/* - * vxge_hal_mrpcim_pcie_func_mode_set - Set PCI-E function mode - * @devh: Device Handle. - * @func_mode: PCI-E func mode. Please see vxge_hal_pcie_function_mode_e{} - * - * Set PCI-E function mode. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_pcie_func_mode_set( - vxge_hal_device_h devh, - vxge_hal_pcie_function_mode_e func_mode) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - u32 fmode; - vxge_hal_status_e status; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver("devh = 0x"VXGE_OS_STXFMT - ",func_mode = %d", (ptr_t) devh, func_mode); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - switch (func_mode) { - case VXGE_HAL_PCIE_FUNC_MODE_SF1_VP17: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_SF1_VP17; - break; - case VXGE_HAL_PCIE_FUNC_MODE_MF8_VP2: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF8_VP2; - break; - case VXGE_HAL_PCIE_FUNC_MODE_SR17_VP1: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_SR17_VP1; - break; - case VXGE_HAL_PCIE_FUNC_MODE_MR17_VP1: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MR17_VP1; - break; - case VXGE_HAL_PCIE_FUNC_MODE_MR8_VP2: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MR8_VP2; - break; - case VXGE_HAL_PCIE_FUNC_MODE_MF17_VP1: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF17_VP1; - break; - case VXGE_HAL_PCIE_FUNC_MODE_SR8_VP2: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_SR8_VP2; - break; - case VXGE_HAL_PCIE_FUNC_MODE_SR4_VP4: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_SR4_VP4; - break; - case VXGE_HAL_PCIE_FUNC_MODE_MF2_VP8: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF2_VP8; - break; - case VXGE_HAL_PCIE_FUNC_MODE_MF4_VP4: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF4_VP4; - break; - case VXGE_HAL_PCIE_FUNC_MODE_MR4_VP4: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MR4_VP4; - break; - case VXGE_HAL_PCIE_FUNC_MODE_MF8P_VP2: - fmode = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF8P_VP2; - break; - default: - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_TYPE); - - return (VXGE_HAL_ERR_INVALID_TYPE); - } - - status = __hal_vpath_pcie_func_mode_set(hldev, hldev->first_vp_id, fmode); - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (status); - -} - -/* - * vxge_hal_mrpcim_fw_upgrade - Upgrade firmware - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @bar0: Address of BAR0 in PCI config - * @buffer: Buffer containing F/W image - * @length: F/W image length - * - * Upgrade firmware - */ -vxge_hal_status_e -vxge_hal_mrpcim_fw_upgrade( - pci_dev_h pdev, - pci_reg_h regh0, - u8 *bar0, - u8 *buffer, - u32 length) -{ - u64 val64, vpath_mask; - u32 host_type, func_id, i; - vxge_hal_legacy_reg_t *legacy_reg; - vxge_hal_toc_reg_t *toc_reg; - vxge_hal_mrpcim_reg_t *mrpcim_reg; - vxge_hal_common_reg_t *common_reg; - vxge_hal_vpmgmt_reg_t *vpmgmt_reg; - vxge_hal_vpath_reg_t *vpath_reg; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((bar0 != NULL) && (buffer != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "bar0 = 0x"VXGE_OS_STXFMT", buffer = 0x"VXGE_OS_STXFMT", " - "length = %d", (ptr_t) pdev, (ptr_t) regh0, (ptr_t) bar0, - (ptr_t) buffer, length); - - legacy_reg = (vxge_hal_legacy_reg_t *) - vxge_hal_device_get_legacy_reg(pdev, regh0, bar0); - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &legacy_reg->toc_first_pointer); - - toc_reg = (vxge_hal_toc_reg_t *) ((void *)(bar0 + val64)); - - val64 = - vxge_os_pio_mem_read64(pdev, regh0, &toc_reg->toc_common_pointer); - - common_reg = (vxge_hal_common_reg_t *) ((void *)(bar0 + val64)); - - vpath_mask = vxge_os_pio_mem_read64(pdev, regh0, - &common_reg->vpath_assignments); - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &common_reg->host_type_assignments); - - host_type = (u32) - VXGE_HAL_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS(val64); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!((vpath_mask) & mBIT(i))) - continue; - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &toc_reg->toc_vpmgmt_pointer[i]); - - vpmgmt_reg = (vxge_hal_vpmgmt_reg_t *) ((void *)(bar0 + val64)); - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &vpmgmt_reg->vpath_to_func_map_cfg1); - - func_id = (u32) VXGE_HAL_VPATH_TO_FUNC_MAP_CFG1_GET_CFG1(val64); - - if (!(__hal_device_access_rights_get(host_type, func_id) & - VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &toc_reg->toc_vpath_pointer[i]); - - vpath_reg = (vxge_hal_vpath_reg_t *) ((void *)(bar0 + val64)); - - status = __hal_vpath_fw_upgrade(pdev, regh0, - i, vpath_reg, buffer, length); - - break; - } - - if (status == VXGE_HAL_OK) { - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &toc_reg->toc_mrpcim_pointer); - - mrpcim_reg = (vxge_hal_mrpcim_reg_t *) ((void *)(bar0 + val64)); - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &mrpcim_reg->sw_reset_cfg1); - - val64 |= VXGE_HAL_SW_RESET_CFG1_TYPE; - - vxge_os_pio_mem_write64(pdev, regh0, - val64, - &mrpcim_reg->sw_reset_cfg1); - - vxge_os_pio_mem_write64(pdev, regh0, - VXGE_HAL_PF_SW_RESET_PF_SW_RESET( - VXGE_HAL_PF_SW_RESET_COMMAND), - &mrpcim_reg->bf_sw_reset); - - vxge_os_mdelay(100); - } - - vxge_hal_trace_log_driver("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_mrpcim_vpath_qos_set - Set the priority, Guaranteed and maximum - * bandwidth for a vpath. - * @devh: HAL device handle. - * @vp_id: Vpath Id. - * @priority: Priority - * @min_bandwidth: Minimum Bandwidth - * @max_bandwidth: Maximum Bandwidth - * - * Set the Guaranteed and maximum bandwidth for a given vpath - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_vpath_qos_set( - vxge_hal_device_h devh, - u32 vp_id, - u32 priority, - u32 min_bandwidth, - u32 max_bandwidth) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_vpath_qos_config_t config; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT", vp_id = %d, " - "priority = %d, min_bandwidth = %d, max_bandwidth = %d", - (ptr_t) devh, vp_id, priority, min_bandwidth, max_bandwidth); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - if (vp_id >= VXGE_HAL_MAX_VIRTUAL_PATHS) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - - return (VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - } - - config.priority = priority; - config.min_bandwidth = min_bandwidth; - config.max_bandwidth = max_bandwidth; - - if ((status = __hal_vpath_qos_config_check(&config)) != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (status == VXGE_HAL_OK) { - hldev->header.config.mrpcim_config.vp_qos[vp_id].priority = - priority; - hldev->header.config.mrpcim_config.vp_qos[vp_id].min_bandwidth = - min_bandwidth; - hldev->header.config.mrpcim_config.vp_qos[vp_id].max_bandwidth = - max_bandwidth; - } - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mrpcim_vpath_qos_get - Get the priority, Guaranteed and maximum - * bandwidth for a vpath. - * @devh: HAL device handle. - * @vp_id: Vpath Id. - * @priority: Buffer to return Priority - * @min_bandwidth: Buffer to return Minimum Bandwidth - * @max_bandwidth: Buffer to return Maximum Bandwidth - * - * Get the Guaranteed and maximum bandwidth for a given vpath - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_vpath_qos_get( - vxge_hal_device_h devh, - u32 vp_id, - u32 *priority, - u32 *min_bandwidth, - u32 *max_bandwidth) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", vp_id = %d, " - "priority = 0x"VXGE_OS_STXFMT", " - "min_bandwidth = 0x"VXGE_OS_STXFMT", " - "max_bandwidth = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, vp_id, (ptr_t) priority, - (ptr_t) min_bandwidth, (ptr_t) max_bandwidth); - - if (vp_id >= VXGE_HAL_MAX_VIRTUAL_PATHS) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - - return (VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - } - - *priority = - hldev->header.config.mrpcim_config.vp_qos[vp_id].min_bandwidth; - - *min_bandwidth = - hldev->header.config.mrpcim_config.vp_qos[vp_id].min_bandwidth; - - *max_bandwidth = - hldev->header.config.mrpcim_config.vp_qos[vp_id].max_bandwidth; - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_mrpcim_mdio_access - Access the MDIO device - * @devh: HAL Device handle. - * @port: Port id - * @operation: Type of operation - * @device: MMD device address - * @addr: MMD address - * @data: MMD data - * - * Access the data from a MDIO Device. - * - */ -vxge_hal_status_e -__hal_mrpcim_mdio_access( - vxge_hal_device_h devh, - u32 port, - u32 operation, - u32 device, - u16 addr, - u16 *data) -{ - u64 val64; - u32 prtad; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (data != NULL)); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", operation = %d, " - "device = %d, addr = %d, data = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, operation, device, addr, (ptr_t) data); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - if (device == VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_DTE_XS) { - if (port == 0) - prtad = hldev->mrpcim->mdio_dte_prtad0; - else - prtad = hldev->mrpcim->mdio_dte_prtad1; - } else { - if (port == 0) - prtad = hldev->mrpcim->mdio_phy_prtad0; - else - prtad = hldev->mrpcim->mdio_phy_prtad1; - } - - val64 = VXGE_HAL_MDIO_MGR_ACCESS_PORT_STROBE_ONE | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE(operation) | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD(device) | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR(addr) | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DATA(*data) | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ST_PATTERN(0) | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_PREAMBLE | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_PRTAD(prtad) | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_STROBE_TWO; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->mdio_mgr_access_port[port]); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mdio_mgr_access_port[port], - 0, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_STROBE_ONE | - VXGE_HAL_MDIO_MGR_ACCESS_PORT_STROBE_TWO, - hldev->header.config.device_poll_millis); - - if ((status == VXGE_HAL_OK) && - ((operation == VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_READ_INCR) || - (operation == VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_READ) || - (operation == - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ_INCR) || - (operation == VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ))) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mdio_mgr_access_port[port]); - - *data = (u16) VXGE_HAL_MDIO_MGR_ACCESS_GET_PORT_DATA(val64); - - } else { - *data = 0; - } - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mrpcim_intr_enable - Enable the interrupts on mrpcim. - * @devh: HAL device handle. - * - * Enable mrpcim interrupts - * - * See also: vxge_hal_mrpcim_intr_disable(). - */ -vxge_hal_status_e -vxge_hal_mrpcim_intr_enable(vxge_hal_device_h devh) -{ - u32 i; - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_mrpcim_reg_t *mrpcim_reg; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - mrpcim_reg = hldev->mrpcim_reg; - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->ini_errors_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->dma_errors_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->tgt_errors_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->config_errors_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->crdt_errors_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->mrpcim_general_errors_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->pll_errors_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->mrpcim_ppif_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->dbecc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->general_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->pcipif_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->pda_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->pcc_error_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->lso_error_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->sm_error_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rtdma_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rc_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rxdrm_sm_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rxdcm_sm_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rxdwm_sm_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rda_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rda_ecc_db_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rqa_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->frf_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rocrc_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->wde0_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->wde1_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->wde2_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->wde3_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->wrdma_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3cmct_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3cmct_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->gsscc_err_reg); - - for (i = 0; i < 3; i++) { - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->gssc_err0_reg[i]); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->gssc_err1_reg[i]); - - } - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->gcmg1_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->gxtmc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->gcp_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->cmc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->gcmg2_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3ifcmd_cml_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3ifcmd_cml_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3ifcmd_cmu_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3ifcmd_cmu_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->psscc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->pcmg1_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->pxtmc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->cp_exc_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->cp_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->pcmg2_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->dam_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->pcmg3_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->xmac_gen_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->xgxs_gen_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->asic_ntwk_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->xgmac_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rxmac_ecc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rxmac_various_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->rxmac_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->txmac_gen_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->txmac_ecc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->tmac_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3ifcmd_fb_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3ifcmd_fb_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->mc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->grocrc_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->fau_ecc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->mc_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3fbct_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->g3fbct_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->orp_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->ptm_alarm_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->tpa_error_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->tpa_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->kdfc_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->doorbell_int_status); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->tim_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->msg_exc_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->msg_err_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->msg_err2_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->msg_err3_reg); - - VXGE_HAL_MRPCIM_ERROR_REG_CLEAR(&mrpcim_reg->msg_int_status); - - vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &mrpcim_reg->mrpcim_general_int_status); - - /* unmask interrupts */ - val64 = VXGE_HAL_INI_ERRORS_REG_DCPL_FSM_ERR | - VXGE_HAL_INI_ERRORS_REG_INI_BUF_DB_ERR | - VXGE_HAL_INI_ERRORS_REG_INI_DATA_OVERFLOW | - VXGE_HAL_INI_ERRORS_REG_INI_HDR_OVERFLOW; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->ini_errors_mask); - - val64 = VXGE_HAL_DMA_ERRORS_REG_RDARB_FSM_ERR | - VXGE_HAL_DMA_ERRORS_REG_WRARB_FSM_ERR | - VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_WR_HDR_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_WR_HDR_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_WR_DATA_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_WR_DATA_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_MSG_WR_HDR_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_MSG_WR_HDR_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_MSG_WR_DATA_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_MSG_WR_DATA_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_STATS_WR_HDR_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_STATS_WR_HDR_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_STATS_WR_DATA_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_STATS_WR_DATA_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_WR_HDR_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_WR_HDR_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_WR_DATA_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_WR_DATA_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_RD_HDR_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_WRDMA_RD_HDR_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_RD_HDR_OVERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DMA_RTDMA_RD_HDR_UNDERFLOW | - VXGE_HAL_DMA_ERRORS_REG_DBLGEN_FSM_ERR | - VXGE_HAL_DMA_ERRORS_REG_DBLGEN_CREDIT_FSM_ERR | - VXGE_HAL_DMA_ERRORS_REG_DBLGEN_DMA_WRR_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->dma_errors_mask); - - val64 = VXGE_HAL_TGT_ERRORS_REG_TGT_REQ_FSM_ERR | - VXGE_HAL_TGT_ERRORS_REG_TGT_CPL_FSM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->tgt_errors_mask); - - val64 = VXGE_HAL_CONFIG_ERRORS_REG_I2C_MAIN_FSM_ERR | - VXGE_HAL_CONFIG_ERRORS_REG_I2C_REG_FSM_ERR | - VXGE_HAL_CONFIG_ERRORS_REG_CFGM_I2C_TIMEOUT | - VXGE_HAL_CONFIG_ERRORS_REG_RIC_I2C_TIMEOUT | - VXGE_HAL_CONFIG_ERRORS_REG_CFGM_FSM_ERR | - VXGE_HAL_CONFIG_ERRORS_REG_RIC_FSM_ERR | - VXGE_HAL_CONFIG_ERRORS_REG_PIFM_TIMEOUT | - VXGE_HAL_CONFIG_ERRORS_REG_PIFM_FSM_ERR | - VXGE_HAL_CONFIG_ERRORS_REG_PIFM_TO_FSM_ERR | - VXGE_HAL_CONFIG_ERRORS_REG_RIC_RIC_RD_TIMEOUT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->config_errors_mask); - - val64 = VXGE_HAL_CRDT_ERRORS_REG_WRCRDTARB_FSM_ERR | - VXGE_HAL_CRDT_ERRORS_REG_WRCRDTARB_INTCTL_ILLEGAL_CRD_DEAL | - VXGE_HAL_CRDT_ERRORS_REG_WRCRDTARB_PDA_ILLEGAL_CRD_DEAL | - VXGE_HAL_CRDT_ERRORS_REG_WRCRDTARB_PCI_MSG_ILLEGAL_CRD_DEAL | - VXGE_HAL_CRDT_ERRORS_REG_RDCRDTARB_FSM_ERR | - VXGE_HAL_CRDT_ERRORS_REG_RDCRDTARB_RDA_ILLEGAL_CRD_DEAL | - VXGE_HAL_CRDT_ERRORS_REG_RDCRDTARB_PDA_ILLEGAL_CRD_DEAL | - VXGE_HAL_CRDT_ERRORS_REG_RDCRDTARB_DBLGEN_ILLEGAL_CRD_DEAL; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->crdt_errors_mask); - - val64 = VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_STATSB_FSM_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_XGEN_FSM_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_XMEM_FSM_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_KDFCCTL_FSM_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_MRIOVCTL_FSM_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_SPI_FLSH_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_SPI_IIC_ACK_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_SPI_IIC_CHKSUM_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_INI_SERR_DET | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_INTCTL_MSIX_FSM_ERR | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_INTCTL_MSI_OVERFLOW | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_PPIF_PCI_NOT_FLUSH_SW_RESET | - VXGE_HAL_MRPCIM_GENERAL_ERRORS_REG_PPIF_SW_RESET_FSM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->mrpcim_general_errors_mask); - - val64 = VXGE_HAL_PLL_ERRORS_REG_CORE_CMG_PLL_OOL | - VXGE_HAL_PLL_ERRORS_REG_CORE_FB_PLL_OOL | - VXGE_HAL_PLL_ERRORS_REG_CORE_X_PLL_OOL; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->pll_errors_mask); - - val64 = VXGE_HAL_MRPCIM_PPIF_INT_STATUS_INI_ERRORS_INI_INT | - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_DMA_ERRORS_DMA_INT | - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_TGT_ERRORS_TGT_INT | - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CONFIG_ERRORS_CONFIG_INT | - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_CRDT_ERRORS_CRDT_INT | - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_MRPCIM_GENERAL_ERRORS_GENERAL_INT | - VXGE_HAL_MRPCIM_PPIF_INT_STATUS_PLL_ERRORS_PLL_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->mrpcim_ppif_int_mask); - - val64 = VXGE_HAL_DBECC_ERR_REG_PCI_RETRY_BUF_DB_ERR | - VXGE_HAL_DBECC_ERR_REG_PCI_RETRY_SOT_DB_ERR | - VXGE_HAL_DBECC_ERR_REG_PCI_P_HDR_DB_ERR | - VXGE_HAL_DBECC_ERR_REG_PCI_P_DATA_DB_ERR | - VXGE_HAL_DBECC_ERR_REG_PCI_NP_HDR_DB_ERR | - VXGE_HAL_DBECC_ERR_REG_PCI_NP_DATA_DB_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->dbecc_err_mask); - - val64 = VXGE_HAL_GENERAL_ERR_REG_PCI_LINK_RST_FSM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->general_err_mask); - - val64 = VXGE_HAL_PCIPIF_INT_STATUS_DBECC_ERR_DBECC_ERR_INT | - VXGE_HAL_PCIPIF_INT_STATUS_GENERAL_ERR_GENERAL_ERR_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->pcipif_int_mask); - - val64 = VXGE_HAL_PDA_ALARM_REG_PDA_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->pda_alarm_mask); - - val64 = 0; - - for (i = 0; i < 8; i++) { - val64 |= VXGE_HAL_PCC_ERROR_REG_PCC_PCC_FRM_BUF_DBE(i) | - VXGE_HAL_PCC_ERROR_REG_PCC_PCC_TXDO_DBE(i) | - VXGE_HAL_PCC_ERROR_REG_PCC_PCC_FSM_ERR_ALARM(i) | - VXGE_HAL_PCC_ERROR_REG_PCC_PCC_SERR(i); - } - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->pcc_error_mask); - - val64 = 0; - - for (i = 0; i < 8; i++) { - val64 |= VXGE_HAL_LSO_ERROR_REG_PCC_LSO_FSM_ERR_ALARM(i); - } - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->lso_error_mask); - - val64 = VXGE_HAL_SM_ERROR_REG_SM_FSM_ERR_ALARM; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->sm_error_mask); - - val64 = VXGE_HAL_RTDMA_INT_STATUS_PDA_ALARM_PDA_INT | - VXGE_HAL_RTDMA_INT_STATUS_PCC_ERROR_PCC_INT | - VXGE_HAL_RTDMA_INT_STATUS_LSO_ERROR_LSO_INT | - VXGE_HAL_RTDMA_INT_STATUS_SM_ERROR_SM_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rtdma_int_mask); - - val64 = VXGE_HAL_RC_ALARM_REG_FTC_SM_ERR | - VXGE_HAL_RC_ALARM_REG_FTC_SM_PHASE_ERR | - VXGE_HAL_RC_ALARM_REG_BTDWM_SM_ERR | - VXGE_HAL_RC_ALARM_REG_BTC_SM_ERR | - VXGE_HAL_RC_ALARM_REG_BTDCM_SM_ERR | - VXGE_HAL_RC_ALARM_REG_BTDRM_SM_ERR | - VXGE_HAL_RC_ALARM_REG_RMM_RXD_RC_ECC_DB_ERR | - VXGE_HAL_RC_ALARM_REG_RHS_RXD_RHS_ECC_DB_ERR | - VXGE_HAL_RC_ALARM_REG_RMM_SM_ERR | - VXGE_HAL_RC_ALARM_REG_BTC_VPATH_MISMATCH_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rc_alarm_mask); - - val64 = 0; - - for (i = 0; i < 17; i++) { - val64 |= VXGE_HAL_RXDRM_SM_ERR_REG_PRC_VP(i); - } - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rxdrm_sm_err_mask); - - val64 = 0; - - for (i = 0; i < 17; i++) { - val64 |= VXGE_HAL_RXDCM_SM_ERR_REG_PRC_VP(i); - } - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rxdcm_sm_err_mask); - - val64 = 0; - - for (i = 0; i < 17; i++) { - val64 |= VXGE_HAL_RXDWM_SM_ERR_REG_PRC_VP(i); - } - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rxdwm_sm_err_mask); - - val64 = VXGE_HAL_RDA_ERR_REG_RDA_SM0_ERR_ALARM | - VXGE_HAL_RDA_ERR_REG_RDA_RXD_ECC_DB_ERR | - VXGE_HAL_RDA_ERR_REG_RDA_FRM_ECC_DB_ERR | - VXGE_HAL_RDA_ERR_REG_RDA_UQM_ECC_DB_ERR | - VXGE_HAL_RDA_ERR_REG_RDA_IMM_ECC_DB_ERR | - VXGE_HAL_RDA_ERR_REG_RDA_TIM_ECC_DB_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rda_err_mask); - - val64 = 0; - - for (i = 0; i < 17; i++) { - val64 |= VXGE_HAL_RDA_ECC_DB_REG_RDA_RXD_ERR(i); - } - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rda_ecc_db_mask); - - val64 = VXGE_HAL_RQA_ERR_REG_RQA_SM_ERR_ALARM; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rqa_err_mask); - - val64 = 0; - - for (i = 0; i < 17; i++) { - val64 |= VXGE_HAL_FRF_ALARM_REG_PRC_VP_FRF_SM_ERR(i); - } - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->frf_alarm_mask); - - val64 = VXGE_HAL_ROCRC_ALARM_REG_QCQ_QCC_BYP_ECC_DB | - VXGE_HAL_ROCRC_ALARM_REG_NOA_NMA_SM_ERR | - VXGE_HAL_ROCRC_ALARM_REG_NOA_IMMM_ECC_DB | - VXGE_HAL_ROCRC_ALARM_REG_UDQ_UMQM_ECC_DB | - VXGE_HAL_ROCRC_ALARM_REG_NOA_RCBM_ECC_DB | - VXGE_HAL_ROCRC_ALARM_REG_NOA_WCT_CMD_FIFO_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rocrc_alarm_mask); - - val64 = VXGE_HAL_WDE0_ALARM_REG_WDE0_DCC_SM_ERR | - VXGE_HAL_WDE0_ALARM_REG_WDE0_PRM_SM_ERR | - VXGE_HAL_WDE0_ALARM_REG_WDE0_CP_SM_ERR | - VXGE_HAL_WDE0_ALARM_REG_WDE0_CP_CMD_ERR | - VXGE_HAL_WDE0_ALARM_REG_WDE0_PCR_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->wde0_alarm_mask); - - val64 = VXGE_HAL_WDE1_ALARM_REG_WDE1_DCC_SM_ERR | - VXGE_HAL_WDE1_ALARM_REG_WDE1_PRM_SM_ERR | - VXGE_HAL_WDE1_ALARM_REG_WDE1_CP_SM_ERR | - VXGE_HAL_WDE1_ALARM_REG_WDE1_CP_CMD_ERR | - VXGE_HAL_WDE1_ALARM_REG_WDE1_PCR_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->wde1_alarm_mask); - - val64 = VXGE_HAL_WDE2_ALARM_REG_WDE2_DCC_SM_ERR | - VXGE_HAL_WDE2_ALARM_REG_WDE2_PRM_SM_ERR | - VXGE_HAL_WDE2_ALARM_REG_WDE2_CP_SM_ERR | - VXGE_HAL_WDE2_ALARM_REG_WDE2_CP_CMD_ERR | - VXGE_HAL_WDE2_ALARM_REG_WDE2_PCR_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->wde2_alarm_mask); - - val64 = VXGE_HAL_WDE3_ALARM_REG_WDE3_DCC_SM_ERR | - VXGE_HAL_WDE3_ALARM_REG_WDE3_PRM_SM_ERR | - VXGE_HAL_WDE3_ALARM_REG_WDE3_CP_SM_ERR | - VXGE_HAL_WDE3_ALARM_REG_WDE3_CP_CMD_ERR | - VXGE_HAL_WDE3_ALARM_REG_WDE3_PCR_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->wde3_alarm_mask); - - val64 = VXGE_HAL_WRDMA_INT_STATUS_RC_ALARM_RC_INT | - VXGE_HAL_WRDMA_INT_STATUS_RXDRM_SM_ERR_RXDRM_INT | - VXGE_HAL_WRDMA_INT_STATUS_RXDCM_SM_ERR_RXDCM_SM_INT | - VXGE_HAL_WRDMA_INT_STATUS_RXDWM_SM_ERR_RXDWM_INT | - VXGE_HAL_WRDMA_INT_STATUS_RDA_ERR_RDA_INT | - VXGE_HAL_WRDMA_INT_STATUS_RDA_ECC_DB_RDA_ECC_DB_INT | - VXGE_HAL_WRDMA_INT_STATUS_FRF_ALARM_FRF_INT | - VXGE_HAL_WRDMA_INT_STATUS_ROCRC_ALARM_ROCRC_INT | - VXGE_HAL_WRDMA_INT_STATUS_WDE0_ALARM_WDE0_INT | - VXGE_HAL_WRDMA_INT_STATUS_WDE1_ALARM_WDE1_INT | - VXGE_HAL_WRDMA_INT_STATUS_WDE2_ALARM_WDE2_INT | - VXGE_HAL_WRDMA_INT_STATUS_WDE3_ALARM_WDE3_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->wrdma_int_mask); - - val64 = VXGE_HAL_G3CMCT_ERR_REG_G3IF_SM_ERR | - VXGE_HAL_G3CMCT_ERR_REG_G3IF_GDDR3_DECC | - VXGE_HAL_G3CMCT_ERR_REG_G3IF_GDDR3_U_DECC | - VXGE_HAL_G3CMCT_ERR_REG_G3IF_CTRL_FIFO_DECC; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->g3cmct_err_mask); - - val64 = VXGE_HAL_G3CMCT_INT_STATUS_ERR_G3IF_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->g3cmct_int_mask); - - val64 = VXGE_HAL_GSSCC_ERR_REG_SSCC_SSR_DB_ERR(0x3) | - VXGE_HAL_GSSCC_ERR_REG_SSCC_TSR_DB_ERR(0x3f) | - VXGE_HAL_GSSCC_ERR_REG_SSCC_CP2STE_UFLOW_ERR | - VXGE_HAL_GSSCC_ERR_REG_SSCC_CP2TTE_UFLOW_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->gsscc_err_mask); - - for (i = 0; i < 3; i++) { - - val64 = VXGE_HAL_GSSC_ERR0_REG_SSCC_STATE_DB_ERR(0xff) | - VXGE_HAL_GSSC_ERR0_REG_SSCC_CM_RESP_DB_ERR(0xf) | - VXGE_HAL_GSSC_ERR0_REG_SSCC_SSR_RESP_DB_ERR(0x3) | - VXGE_HAL_GSSC_ERR0_REG_SSCC_TSR_RESP_DB_ERR(0x3f); - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->gssc_err0_mask[i]); - - val64 = VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_RESP_DB_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_SCREQ_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_RESP_OFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_RESP_R_WN_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_RESP_UFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_REQ_OFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_CM_REQ_UFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_FSM_OFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_FSM_UFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_REQ_OFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_REQ_UFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_RESP_OFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_RESP_R_WN_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_SSR_RESP_UFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_REQ_OFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_REQ_UFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_RESP_OFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_RESP_R_WN_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_TSR_RESP_UFLOW_ERR | - VXGE_HAL_GSSC_ERR1_REG_SSCC_SCRESP_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->gssc_err1_mask[i]); - - } - - val64 = VXGE_HAL_GCMG1_INT_STATUS_GSSCC_ERR_GSSCC_INT | - VXGE_HAL_GCMG1_INT_STATUS_GSSC0_ERR0_GSSC0_0_INT | - VXGE_HAL_GCMG1_INT_STATUS_GSSC0_ERR1_GSSC0_1_INT | - VXGE_HAL_GCMG1_INT_STATUS_GSSC1_ERR0_GSSC1_0_INT | - VXGE_HAL_GCMG1_INT_STATUS_GSSC1_ERR1_GSSC1_1_INT | - VXGE_HAL_GCMG1_INT_STATUS_GSSC2_ERR0_GSSC2_0_INT | - VXGE_HAL_GCMG1_INT_STATUS_GSSC2_ERR1_GSSC2_1_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->gcmg1_int_mask); - - val64 = VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_MEM_DB_ERR(0xf) | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CMC_RD_DATA_DB_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_REQ_FIFO_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_REQ_DATA_FIFO_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_WR_RSP_FIFO_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_RD_RSP_FIFO_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_WRP_FIFO_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_WRP_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_RRP_FIFO_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_RRP_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_DATA_SM_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_CMC0_IF_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_CFC_SM_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_DFETCH_CREDIT_OVERFLOW | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_DFETCH_CREDIT_UNDERFLOW | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_DFETCH_SM_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_RCTRL_CREDIT_OVERFLOW | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_RCTRL_CREDIT_UNDERFLOW | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_RCTRL_SM_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_WCOMPL_SM_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_WCOMPL_TAG_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_WREQ_SM_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_BDT_CMI_WREQ_FIFO_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CP2BDT_RFIFO_POP_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_XTMC_BDT_CMI_OP_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_XTMC_BDT_DFETCH_OP_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_XTMC_BDT_DFIFO_ERR | - VXGE_HAL_GXTMC_ERR_REG_XTMC_CMI_ARB_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->gxtmc_err_mask); - - val64 = VXGE_HAL_GCP_ERR_REG_CP_H2L2CP_FIFO_ERR | - VXGE_HAL_GCP_ERR_REG_CP_STC2CP_FIFO_ERR | - VXGE_HAL_GCP_ERR_REG_CP_STE2CP_FIFO_ERR | - VXGE_HAL_GCP_ERR_REG_CP_TTE2CP_FIFO_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->gcp_err_mask); - - val64 = VXGE_HAL_CMC_ERR_REG_CMC_CMC_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->cmc_err_mask); - - val64 = VXGE_HAL_GCMG2_INT_STATUS_GXTMC_ERR_GXTMC_INT | - VXGE_HAL_GCMG2_INT_STATUS_GCP_ERR_GCP_INT | - VXGE_HAL_GCMG2_INT_STATUS_CMC_ERR_CMC_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->gcmg2_int_mask); - - val64 = VXGE_HAL_G3IFCMD_CML_ERR_REG_G3IF_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->g3ifcmd_cml_err_mask); - - val64 = VXGE_HAL_G3IFCMD_CML_INT_STATUS_ERR_G3IF_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->g3ifcmd_cml_int_mask); - - val64 = VXGE_HAL_G3IFCMD_CMU_ERR_REG_G3IF_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->g3ifcmd_cmu_err_mask); - - val64 = VXGE_HAL_G3IFCMD_CMU_INT_STATUS_ERR_G3IF_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->g3ifcmd_cmu_int_mask); - - val64 = VXGE_HAL_PSSCC_ERR_REG_SSCC_CP2STE_OFLOW_ERR | - VXGE_HAL_PSSCC_ERR_REG_SSCC_CP2TTE_OFLOW_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->psscc_err_mask); - - val64 = VXGE_HAL_PCMG1_INT_STATUS_PSSCC_ERR_PSSCC_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->pcmg1_int_mask); - - val64 = VXGE_HAL_PXTMC_ERR_REG_XTMC_XT_PIF_SRAM_DB_ERR(0x3) | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_REQ_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_PRSP_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_WRSP_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_REQ_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_PRSP_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_WRSP_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_REQ_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_PRSP_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_WRSP_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_REQ_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_REQ_DATA_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_WR_RSP_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_RD_RSP_FIFO_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_REQ_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_RSP_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_REQ_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_RSP_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_REQ_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_RSP_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_XIL_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_ARB_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_RAM_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CMW_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CMR_SHADOW_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_REQ_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MPT_RSP_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_REQ_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UPT_RSP_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_REQ_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CPT_RSP_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_XIL_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_ARB_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CMW_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CMR_FSM_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_RD_PROT_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_RD_PROT_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_RD_PROT_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_WR_PROT_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_WR_PROT_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_WR_PROT_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_MXP_INV_ADDR_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_UXP_INV_ADDR_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CXP_INV_ADDR_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CP2BDT_DFIFO_PUSH_ERR | - VXGE_HAL_PXTMC_ERR_REG_XTMC_CP2BDT_RFIFO_PUSH_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->pxtmc_err_mask); - - val64 = VXGE_HAL_CP_EXC_REG_CP_CP_CAUSE_CRIT_INT | - VXGE_HAL_CP_EXC_REG_CP_CP_SERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->cp_exc_mask); - - val64 = VXGE_HAL_CP_ERR_REG_CP_CP_DCACHE_DB_ERR(0xff) | - VXGE_HAL_CP_ERR_REG_CP_CP_ICACHE_DB_ERR(0x3) | - VXGE_HAL_CP_ERR_REG_CP_CP_DTAG_DB_ERR | - VXGE_HAL_CP_ERR_REG_CP_CP_ITAG_DB_ERR | - VXGE_HAL_CP_ERR_REG_CP_CP_TRACE_DB_ERR | - VXGE_HAL_CP_ERR_REG_CP_DMA2CP_DB_ERR | - VXGE_HAL_CP_ERR_REG_CP_MP2CP_DB_ERR | - VXGE_HAL_CP_ERR_REG_CP_QCC2CP_DB_ERR | - VXGE_HAL_CP_ERR_REG_CP_STC2CP_DB_ERR(0x3) | - VXGE_HAL_CP_ERR_REG_CP_H2L2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_STC2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_STE2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_TTE2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_SWIF2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_CP2DMA_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_DAM2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_MP2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_QCC2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_DMA2CP_FIFO_ERR | - VXGE_HAL_CP_ERR_REG_CP_CP_WAKE_FSM_INTEGRITY_ERR | - VXGE_HAL_CP_ERR_REG_CP_CP_PMON_FSM_INTEGRITY_ERR | - VXGE_HAL_CP_ERR_REG_CP_DMA_RD_SHADOW_ERR | - VXGE_HAL_CP_ERR_REG_CP_PIFT_CREDIT_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->cp_err_mask); - - val64 = VXGE_HAL_PCMG2_INT_STATUS_PXTMC_ERR_PXTMC_INT | - VXGE_HAL_PCMG2_INT_STATUS_CP_EXC_CP_XT_EXC_INT | - VXGE_HAL_PCMG2_INT_STATUS_CP_ERR_CP_ERR_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->pcmg2_int_mask); - - val64 = VXGE_HAL_DAM_ERR_REG_DAM_RDSB_ECC_DB_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_WRSB_ECC_DB_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_HPPEDAT_ECC_DB_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_LPPEDAT_ECC_DB_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_WRRESP_ECC_DB_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_HPRD_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_LPRD_0_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_LPRD_1_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_HPPEDAT_OVERFLOW_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_LPPEDAT_OVERFLOW_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_WRRESP_OVERFLOW_ERR | - VXGE_HAL_DAM_ERR_REG_DAM_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->dam_err_mask); - - val64 = VXGE_HAL_PCMG3_INT_STATUS_DAM_ERR_DAM_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->pcmg3_int_mask); - - val64 = VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE0_DB_ERR(0x3) | - VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE1_DB_ERR(0x3) | - VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE2_DB_ERR(0x3) | - VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE3_DB_ERR(0x3) | - VXGE_HAL_XMAC_GEN_ERR_REG_XSTATS_RMAC_STATS_TILE4_DB_ERR(0x3) | - VXGE_HAL_XMAC_GEN_ERR_REG_XMACJ_XMAC_FSM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->xmac_gen_err_mask); - - val64 = VXGE_HAL_XGXS_GEN_ERR_REG_XGXS_XGXS_FSM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->xgxs_gen_err_mask); - - val64 = VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_DOWN | - VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_UP | - VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_WENT_DOWN | - VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_WENT_UP | - VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_REAFFIRMED_FAULT | - VXGE_HAL_ASIC_NTWK_ERR_REG_XMACJ_NTWK_REAFFIRMED_OK; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->asic_ntwk_err_mask); - - val64 = VXGE_HAL_XGMAC_INT_STATUS_XMAC_GEN_ERR_XMAC_GEN_INT | - VXGE_HAL_XGMAC_INT_STATUS_XGXS_GEN_ERR_XGXS_GEN_INT | - VXGE_HAL_XGMAC_INT_STATUS_ASIC_NTWK_ERR_ASIC_NTWK_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->xgmac_int_mask); - - val64 = - VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT0_RMAC_RTS_PART_DB_ERR(0xf) | - VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT1_RMAC_RTS_PART_DB_ERR(0xf) | - VXGE_HAL_RXMAC_ECC_ERR_REG_RMAC_PORT2_RMAC_RTS_PART_DB_ERR(0xf) | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DA_LKP_PRT0_DB_ERR(0x3) | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DA_LKP_PRT1_DB_ERR(0x3) | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_VID_LKP_DB_ERR | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT0_DB_ERR | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT1_DB_ERR | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_PN_LKP_PRT2_DB_ERR | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_RTH_MASK_DB_ERR(0x3f) | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_RTH_LKP_DB_ERR(0x7) | - VXGE_HAL_RXMAC_ECC_ERR_REG_RTSJ_RMAC_DS_LKP_DB_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->rxmac_ecc_err_mask); - - val64 = VXGE_HAL_RXMAC_VARIOUS_ERR_REG_RMAC_RMAC_PORT0_FSM_ERR | - VXGE_HAL_RXMAC_VARIOUS_ERR_REG_RMAC_RMAC_PORT1_FSM_ERR | - VXGE_HAL_RXMAC_VARIOUS_ERR_REG_RMAC_RMAC_PORT2_FSM_ERR | - VXGE_HAL_RXMAC_VARIOUS_ERR_REG_RMACJ_RMACJ_FSM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->rxmac_various_err_mask); - - val64 = VXGE_HAL_RXMAC_INT_STATUS_RXMAC_ECC_ERR_RXMAC_ECC_INT | - VXGE_HAL_RXMAC_INT_STATUS_RXMAC_VARIOUS_ERR_RXMAC_VARIOUS_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->rxmac_int_mask); - - val64 = VXGE_HAL_TXMAC_GEN_ERR_REG_TMACJ_PERMANENT_STOP; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->txmac_gen_err_mask); - - val64 = VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2MAC_DB_ERR | - VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2M_SB_DB_ERR | - VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMAC_TPA2M_DA_DB_ERR | - VXGE_HAL_TXMAC_ECC_ERR_REG_TMAC_TMAC_PORT0_FSM_ERR | - VXGE_HAL_TXMAC_ECC_ERR_REG_TMAC_TMAC_PORT1_FSM_ERR | - VXGE_HAL_TXMAC_ECC_ERR_REG_TMAC_TMAC_PORT2_FSM_ERR | - VXGE_HAL_TXMAC_ECC_ERR_REG_TMACJ_TMACJ_FSM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->txmac_ecc_err_mask); - - val64 = VXGE_HAL_TMAC_INT_STATUS_TXMAC_GEN_ERR_TXMAC_GEN_INT | - VXGE_HAL_TMAC_INT_STATUS_TXMAC_ECC_ERR_TXMAC_ECC_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->tmac_int_mask); - - val64 = VXGE_HAL_G3IFCMD_FB_ERR_REG_G3IF_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->g3ifcmd_fb_err_mask); - - val64 = VXGE_HAL_G3IFCMD_FB_INT_STATUS_ERR_G3IF_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, - &mrpcim_reg->g3ifcmd_fb_int_mask); - - val64 = VXGE_HAL_MC_ERR_REG_MC_XFMD_MEM_ECC_DB_ERR_A | - VXGE_HAL_MC_ERR_REG_MC_XFMD_MEM_ECC_DB_ERR_B | - VXGE_HAL_MC_ERR_REG_MC_G3IF_RD_FIFO_ECC_DB_ERR | - VXGE_HAL_MC_ERR_REG_MC_MIRI_ECC_DB_ERR_0 | - VXGE_HAL_MC_ERR_REG_MC_MIRI_ECC_DB_ERR_1 | - VXGE_HAL_MC_ERR_REG_MC_SM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->mc_err_mask); - - val64 = VXGE_HAL_GROCRC_ALARM_REG_XFMD_WR_FIFO_ERR | - VXGE_HAL_GROCRC_ALARM_REG_WDE2MSR_RD_FIFO_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->grocrc_alarm_mask); - - val64 = VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT0_FAU_MAC2F_N_DB_ERR | - VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT0_FAU_MAC2F_W_DB_ERR(0x3) | - VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT1_FAU_MAC2F_N_DB_ERR | - VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT1_FAU_MAC2F_W_DB_ERR(0x3) | - VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT2_FAU_MAC2F_N_DB_ERR | - VXGE_HAL_FAU_ECC_ERR_REG_FAU_PORT2_FAU_MAC2F_W_DB_ERR(0x3) | - VXGE_HAL_FAU_ECC_ERR_REG_FAU_FAU_XFMD_INS_DB_ERR(0x3) | - VXGE_HAL_FAU_ECC_ERR_REG_FAUJ_FAU_FSM_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->fau_ecc_err_mask); - - val64 = VXGE_HAL_MC_INT_STATUS_MC_ERR_MC_INT | - VXGE_HAL_MC_INT_STATUS_GROCRC_ALARM_ROCRC_INT | - VXGE_HAL_MC_INT_STATUS_FAU_ECC_ERR_FAU_ECC_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->mc_int_mask); - - val64 = VXGE_HAL_G3FBCT_ERR_REG_G3IF_SM_ERR | - VXGE_HAL_G3FBCT_ERR_REG_G3IF_GDDR3_DECC | - VXGE_HAL_G3FBCT_ERR_REG_G3IF_GDDR3_U_DECC | - VXGE_HAL_G3FBCT_ERR_REG_G3IF_CTRL_FIFO_DECC; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->g3fbct_err_mask); - - val64 = VXGE_HAL_G3FBCT_INT_STATUS_ERR_G3IF_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->g3fbct_int_mask); - - val64 = VXGE_HAL_ORP_ERR_REG_ORP_FIFO_DB_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_XFMD_FIFO_UFLOW_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_FRM_FIFO_UFLOW_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_XFMD_RCV_FSM_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_OUTREAD_FSM_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_OUTQEM_FSM_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_XFMD_RCV_SHADOW_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_OUTREAD_SHADOW_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_OUTQEM_SHADOW_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_OUTFRM_SHADOW_ERR | - VXGE_HAL_ORP_ERR_REG_ORP_OPTPRS_SHADOW_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->orp_err_mask); - - val64 = VXGE_HAL_PTM_ALARM_REG_PTM_RDCTRL_SYNC_ERR | - VXGE_HAL_PTM_ALARM_REG_PTM_RDCTRL_FIFO_ERR | - VXGE_HAL_PTM_ALARM_REG_XFMD_RD_FIFO_ERR | - VXGE_HAL_PTM_ALARM_REG_WDE2MSR_WR_FIFO_ERR | - VXGE_HAL_PTM_ALARM_REG_PTM_FRMM_ECC_DB_ERR(0x3); - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->ptm_alarm_mask); - - val64 = VXGE_HAL_TPA_ERROR_REG_TPA_FSM_ERR_ALARM | - VXGE_HAL_TPA_ERROR_REG_TPA_TPA_DA_LKUP_PRT0_DB_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->tpa_error_mask); - - val64 = VXGE_HAL_TPA_INT_STATUS_ORP_ERR_ORP_INT | - VXGE_HAL_TPA_INT_STATUS_PTM_ALARM_PTM_INT | - VXGE_HAL_TPA_INT_STATUS_TPA_ERROR_TPA_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->tpa_int_mask); - - val64 = VXGE_HAL_KDFC_ERR_REG_KDFC_KDFC_ECC_DB_ERR | - VXGE_HAL_KDFC_ERR_REG_KDFC_KDFC_SM_ERR_ALARM; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->kdfc_err_mask); - - val64 = VXGE_HAL_DOORBELL_INT_STATUS_KDFC_ERR_REG_TXDMA_KDFC_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->doorbell_int_mask); - - val64 = VXGE_HAL_TIM_ERR_REG_TIM_VBLS_DB_ERR | - VXGE_HAL_TIM_ERR_REG_TIM_BMAP_PA_DB_ERR | - VXGE_HAL_TIM_ERR_REG_TIM_BMAP_PB_DB_ERR | - VXGE_HAL_TIM_ERR_REG_TIM_BMAP_MSG_DB_ERR | - VXGE_HAL_TIM_ERR_REG_TIM_BMAP_MEM_CNTRL_SM_ERR | - VXGE_HAL_TIM_ERR_REG_TIM_BMAP_MSG_MEM_CNTRL_SM_ERR | - VXGE_HAL_TIM_ERR_REG_TIM_MPIF_PCIWR_ERR | - VXGE_HAL_TIM_ERR_REG_TIM_ROCRC_BMAP_UPDT_FIFO_ERR | - VXGE_HAL_TIM_ERR_REG_TIM_CREATE_BMAPMSG_FIFO_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->tim_err_mask); - - val64 = VXGE_HAL_MSG_EXC_REG_MP_MXP_CAUSE_CRIT_INT | - VXGE_HAL_MSG_EXC_REG_UP_UXP_CAUSE_CRIT_INT | - VXGE_HAL_MSG_EXC_REG_MP_MXP_SERR | - VXGE_HAL_MSG_EXC_REG_UP_UXP_SERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->msg_exc_mask); - - val64 = VXGE_HAL_MSG_ERR_REG_UP_UXP_WAKE_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MP_MXP_WAKE_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_DMA_READ_CMD_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_DMA_RESP_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_OWN_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_PDA_ACC_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MP_MXP_PMON_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_UP_UXP_PMON_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_XFMDQRY_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_FRMQRY_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_UMQ_WRITE_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_UMQ_BWR_PF_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_REG_RESP_FIFO_ERR | - VXGE_HAL_MSG_ERR_REG_UP_UXP_DTAG_DB_ERR | - VXGE_HAL_MSG_ERR_REG_UP_UXP_ITAG_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MP_MXP_DTAG_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MP_MXP_ITAG_DB_ERR | - VXGE_HAL_MSG_ERR_REG_UP_UXP_TRACE_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MP_MXP_TRACE_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_CMG2MSG_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_TXPE2MSG_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_RXPE2MSG_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_RPE2MSG_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_REG_READ_FIFO_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_MXP2UXP_FIFO_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_KDFC_SIF_FIFO_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_CXP2SWIF_FIFO_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_UMQ_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_BWR_PF_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_BWR_SIF_FIFO_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMQ_ECC_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMA_READ_FIFO_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_DMA_RESP_ECC_DB_ERR | - VXGE_HAL_MSG_ERR_REG_MSG_QUE_UXP2MXP_FIFO_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->msg_err_mask); - - val64 = - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_CMG2MSG_DISPATCH_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_DMQ_DISPATCH_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_SWIF_DISPATCH_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_PIC_WRITE_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_SWIFREG_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_TIM_WRITE_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_UMQ_TA_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_TXPE_TA_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_RXPE_TA_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_SWIF_TA_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_DMA_TA_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_CP_TA_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA16_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA15_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA14_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA13_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA12_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA11_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA10_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA9_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA8_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA7_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA6_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA5_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA4_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA3_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA2_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA1_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_LONGTERMUMQ_TA0_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_FBMC_OWN_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_TXPE2MSG_DISPATCH_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_RXPE2MSG_DISPATCH_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_RPE2MSG_DISPATCH_FSM_INTEGRITY_ERR | - VXGE_HAL_MSG_ERR2_REG_MP_MP_PIFT_IF_CREDIT_CNT_ERR | - VXGE_HAL_MSG_ERR2_REG_UP_UP_PIFT_IF_CREDIT_CNT_ERR | - VXGE_HAL_MSG_ERR2_REG_MSG_QUE_UMQ2PIC_CMD_FIFO_ERR | - VXGE_HAL_MSG_ERR2_REG_TIM_TIM2MSG_CMD_FIFO_ERR; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->msg_err2_mask); - - val64 = VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR0 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR1 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR2 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR3 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR4 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR5 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR6 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_DCACHE_DB_ERR7 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_ICACHE_DB_ERR0 | - VXGE_HAL_MSG_ERR3_REG_UP_UXP_ICACHE_DB_ERR1 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR0 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR1 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR2 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR3 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR4 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR5 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR6 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_DCACHE_DB_ERR7 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_ICACHE_DB_ERR0 | - VXGE_HAL_MSG_ERR3_REG_MP_MXP_ICACHE_DB_ERR1; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->msg_err3_mask); - - val64 = VXGE_HAL_MSG_INT_STATUS_TIM_ERR_TIM_INT | - VXGE_HAL_MSG_INT_STATUS_MSG_EXC_MSG_XT_EXC_INT | - VXGE_HAL_MSG_INT_STATUS_MSG_ERR3_MSG_ERR3_INT | - VXGE_HAL_MSG_INT_STATUS_MSG_ERR2_MSG_ERR2_INT | - VXGE_HAL_MSG_INT_STATUS_MSG_ERR_MSG_ERR_INT; - - VXGE_HAL_MRPCIM_ERROR_REG_UNMASK(val64, &mrpcim_reg->msg_int_mask); - - val64 = VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PIC_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PCI_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_RTDMA_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_WRDMA_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3CMCT_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_GCMG1_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_GCMG2_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3CMIFL_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3CMIFU_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PCMG1_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PCMG2_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_PCMG3_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_XMAC_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_RXMAC_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_TMAC_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3FBIF_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_FBMC_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_G3FBCT_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_TPA_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_DRBELL_INT | - VXGE_HAL_MRPCIM_GENERAL_INT_STATUS_MSG_INT; - - vxge_hal_pio_mem_write32_upper( - hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(~val64, 0), - &mrpcim_reg->mrpcim_general_int_mask); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_mrpcim_intr_disable - Disable the interrupts on mrpcim. - * @devh: HAL device handle. - * - * Disable mrpcim interrupts - * - * See also: vxge_hal_mrpcim_intr_enable(). - */ -vxge_hal_status_e -vxge_hal_mrpcim_intr_disable(vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_mrpcim_reg_t *mrpcim_reg; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - mrpcim_reg = hldev->mrpcim_reg; - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->ini_errors_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->dma_errors_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->tgt_errors_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->config_errors_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->crdt_errors_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->mrpcim_general_errors_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->pll_errors_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->mrpcim_ppif_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->dbecc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->general_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->pcipif_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->pda_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->pcc_error_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->lso_error_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->sm_error_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rtdma_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rc_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rxdrm_sm_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rxdcm_sm_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rxdwm_sm_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rda_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rda_ecc_db_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rqa_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->frf_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rocrc_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->wde0_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->wde1_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->wde2_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->wde3_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->wrdma_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3cmct_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3cmct_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->gsscc_err_mask); - - for (i = 0; i < 3; i++) { - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->gssc_err0_mask[i]); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->gssc_err1_mask[i]); - - } - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->gcmg1_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->gxtmc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->gcp_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->cmc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->gcmg2_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3ifcmd_cml_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3ifcmd_cml_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3ifcmd_cmu_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3ifcmd_cmu_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->psscc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->pcmg1_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->pxtmc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->cp_exc_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->cp_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->pcmg2_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->dam_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->pcmg3_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->xmac_gen_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->xgxs_gen_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->asic_ntwk_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->xgmac_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rxmac_ecc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rxmac_various_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->rxmac_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->txmac_gen_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->txmac_ecc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->tmac_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3ifcmd_fb_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3ifcmd_fb_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->mc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->grocrc_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->fau_ecc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->mc_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3fbct_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->g3fbct_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->orp_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->ptm_alarm_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->tpa_error_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->tpa_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->kdfc_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->doorbell_int_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->tim_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->msg_exc_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->msg_err_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->msg_err2_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->msg_err3_mask); - - VXGE_HAL_MRPCIM_ERROR_REG_MASK(&mrpcim_reg->msg_int_mask); - - vxge_hal_pio_mem_write32_upper( - hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &mrpcim_reg->mrpcim_general_int_mask); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_mrpcim_reset - Reset the entire device. - * @devh: HAL device handle. - * - * Soft-reset the device, reset the device stats except reset_cnt. - * - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_mrpcim_reset(vxge_hal_device_h devh) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - if (!hldev->header.is_initialized) - return (VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - - if (hldev->device_resetting == 1) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_RESET_IN_PROGRESS); - - return (VXGE_HAL_ERR_RESET_IN_PROGRESS); - } - - (void) __hal_ifmsg_wmsg_post(hldev, - hldev->first_vp_id, - VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_BEGIN, - 0); - - vxge_os_mdelay(100); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->sw_reset_cfg1); - - val64 |= VXGE_HAL_SW_RESET_CFG1_TYPE; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->sw_reset_cfg1); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_PF_SW_RESET_PF_SW_RESET( - VXGE_HAL_PF_SW_RESET_COMMAND), - &hldev->mrpcim_reg->bf_sw_reset); - - hldev->stats.sw_dev_info_stats.soft_reset_cnt++; - - hldev->device_resetting = 1; - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_PENDING); - - return (VXGE_HAL_PENDING); -} - -/* - * vxge_hal_mrpcim_reset_poll - Poll the device for reset complete. - * @devh: HAL device handle. - * - * Soft-reset the device, reset the device stats except reset_cnt. - * - * After reset is done, will try to re-initialize HW. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED - Device is not initialized. - * VXGE_HAL_ERR_RESET_FAILED - Reset failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_mrpcim_reset_poll(vxge_hal_device_h devh) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - if (!hldev->header.is_initialized) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - return (VXGE_HAL_ERR_DEVICE_NOT_INITIALIZED); - } - - if ((status = __hal_device_reg_addr_get(hldev)) != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - hldev->device_resetting = 0; - return (status); - } - - __hal_device_id_get(hldev); - - __hal_device_host_info_get(hldev); - - hldev->hw_is_initialized = 0; - - hldev->device_resetting = 0; - - vxge_os_memzero(hldev->mrpcim->mrpcim_stats, - sizeof(vxge_hal_mrpcim_stats_hw_info_t)); - - vxge_os_memzero(&hldev->mrpcim->mrpcim_stats_sav, - sizeof(vxge_hal_mrpcim_stats_hw_info_t)); - - status = __hal_mrpcim_mac_configure(hldev); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_mrpcim_lag_configure(hldev); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mdio_gen_cfg_port[0]); - - hldev->mrpcim->mdio_phy_prtad0 = - (u32) VXGE_HAL_MDIO_GEN_CFG_PORT_GET_MDIO_PHY_PRTAD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mdio_gen_cfg_port[1]); - - hldev->mrpcim->mdio_phy_prtad1 = - (u32) VXGE_HAL_MDIO_GEN_CFG_PORT_GET_MDIO_PHY_PRTAD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xgxs_static_cfg_port[0]); - - hldev->mrpcim->mdio_dte_prtad0 = - (u32) VXGE_HAL_XGXS_STATIC_CFG_PORT_GET_MDIO_DTE_PRTAD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xgxs_static_cfg_port[1]); - - hldev->mrpcim->mdio_dte_prtad1 = - (u32) VXGE_HAL_XGXS_STATIC_CFG_PORT_GET_MDIO_DTE_PRTAD(val64); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - hldev->mrpcim->mrpcim_stats_block->dma_addr, - &hldev->mrpcim_reg->mrpcim_stats_start_host_addr); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - hldev->vpath_assignments, - &hldev->mrpcim_reg->rxmac_authorize_all_addr); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - hldev->vpath_assignments, - &hldev->mrpcim_reg->rxmac_authorize_all_vid); - - (void) __hal_ifmsg_wmsg_post(hldev, - hldev->first_vp_id, - VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_END, - 0); - - (void) vxge_hal_device_reset_poll(devh); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_mrpcim_xpak_counter_check - check the Xpak error count and log the msg - * @hldev: pointer to __hal_device_t structure - * @port: Port number - * @type: xpak stats error type - * @value: xpak stats value - * - * It is used to log the error message based on the xpak stats value - * Return value: - * None - */ -void -__hal_mrpcim_xpak_counter_check(__hal_device_t *hldev, - u32 port, u32 type, u32 value) -{ - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "hldev = 0x"VXGE_OS_STXFMT", port = %d, type = %d, value = %d", - (ptr_t) hldev, port, type, value); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, - __LINE__, VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return; - - } - - /* - * If the value is high for three consecutive cylce, - * log a error message - */ - if (value == 3) { - switch (type) { - case VXGE_HAL_XPAK_ALARM_EXCESS_TEMP: - hldev->mrpcim->xpak_stats[port].excess_temp = 0; - - /* - * Notify the ULD on Excess Xpak temperature alarm msg - */ - if (g_vxge_hal_driver->uld_callbacks.xpak_alarm_log) { - g_vxge_hal_driver->uld_callbacks.xpak_alarm_log( - hldev->header.upper_layer_data, - port, - VXGE_HAL_XPAK_ALARM_EXCESS_TEMP); - } - break; - case VXGE_HAL_XPAK_ALARM_EXCESS_BIAS_CURRENT: - hldev->mrpcim->xpak_stats[port].excess_bias_current = 0; - - /* - * Notify the ULD on Excess xpak bias current alarm msg - */ - if (g_vxge_hal_driver->uld_callbacks.xpak_alarm_log) { - g_vxge_hal_driver->uld_callbacks.xpak_alarm_log( - hldev->header.upper_layer_data, - port, - VXGE_HAL_XPAK_ALARM_EXCESS_BIAS_CURRENT); - } - break; - case VXGE_HAL_XPAK_ALARM_EXCESS_LASER_OUTPUT: - hldev->mrpcim->xpak_stats[port].excess_laser_output = 0; - - /* - * Notify the ULD on Excess Xpak Laser o/p power - * alarm msg - */ - if (g_vxge_hal_driver->uld_callbacks.xpak_alarm_log) { - g_vxge_hal_driver->uld_callbacks.xpak_alarm_log( - hldev->header.upper_layer_data, - port, - VXGE_HAL_XPAK_ALARM_EXCESS_LASER_OUTPUT); - } - break; - default: - vxge_hal_info_log_stats("%s", - "Incorrect XPAK Alarm type"); - } - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_mrpcim_xpak_stats_poll - Poll and update the Xpak error count. - * @devh: HAL device handle - * @port: Port number - * - * It is used to update the xpak stats value - */ -vxge_hal_status_e -vxge_hal_mrpcim_xpak_stats_poll( - vxge_hal_device_h devh, u32 port) -{ - u16 val; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("hldev = 0x"VXGE_OS_STXFMT", port = %d", - (ptr_t) hldev, port); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - /* Loading the DOM register to MDIO register */ - - val = 0; - - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_WRITE, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT, - &val); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT, - &val); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* - * Reading the Alarm flags - */ - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG, - &val); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (val & - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_TEMP_HIGH) { - hldev->mrpcim->xpak_stats[port].alarm_transceiver_temp_high++; - hldev->mrpcim->xpak_stats[port].excess_temp++; - __hal_mrpcim_xpak_counter_check(hldev, port, - VXGE_HAL_XPAK_ALARM_EXCESS_TEMP, - hldev->mrpcim->xpak_stats[port].excess_temp); - } else { - hldev->mrpcim->xpak_stats[port].excess_temp = 0; - } - - if (val & - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_TEMP_LOW) { - hldev->mrpcim->xpak_stats[port].alarm_transceiver_temp_low++; - } - - if (val & - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_CUR_HIGH) { - hldev->mrpcim->xpak_stats[port].alarm_laser_bias_current_high++; - hldev->mrpcim->xpak_stats[port].excess_bias_current++; - __hal_mrpcim_xpak_counter_check(hldev, port, - VXGE_HAL_XPAK_ALARM_EXCESS_BIAS_CURRENT, - hldev->mrpcim->xpak_stats[port].excess_bias_current); - } else { - hldev->mrpcim->xpak_stats[port].excess_bias_current = 0; - } - - if (val & - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_CUR_LOW) { - hldev->mrpcim->xpak_stats[port].alarm_laser_bias_current_low++; - } - - if (val & - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_PWR_HIGH) { - hldev->mrpcim->xpak_stats[port].alarm_laser_output_power_high++; - hldev->mrpcim->xpak_stats[port].excess_laser_output++; - __hal_mrpcim_xpak_counter_check(hldev, port, - VXGE_HAL_XPAK_ALARM_EXCESS_LASER_OUTPUT, - hldev->mrpcim->xpak_stats[port].excess_laser_output); - } else { - hldev->mrpcim->xpak_stats[port].excess_laser_output = 0; - } - - if (val & - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_PWR_LOW) { - hldev->mrpcim->xpak_stats[port].alarm_laser_output_power_low++; - } - - /* - * Reading the warning flags - */ - status = __hal_mrpcim_mdio_access(devh, port, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD, - VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG, - &val); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (val & VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_TEMP_HIGH) - hldev->mrpcim->xpak_stats[port].warn_transceiver_temp_high++; - if (val & VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_TEMP_LOW) - hldev->mrpcim->xpak_stats[port].warn_transceiver_temp_low++; - if (val & VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_CUR_HIGH) - hldev->mrpcim->xpak_stats[port].warn_laser_bias_current_high++; - if (val & VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_CUR_LOW) - hldev->mrpcim->xpak_stats[port].warn_laser_bias_current_low++; - if (val & VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_PWR_HIGH) - hldev->mrpcim->xpak_stats[port].warn_laser_output_power_high++; - if (val & VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_PWR_LOW) - hldev->mrpcim->xpak_stats[port].warn_laser_output_power_low++; - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mrpcim_stats_enable - Enable mrpcim statistics. - * @devh: HAL Device. - * - * Enable the DMA mrpcim statistics for the device. The function is to be called - * to re-enable the adapter to update stats into the host memory - * - * See also: vxge_hal_mrpcim_stats_disable() - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_enable(vxge_hal_device_h devh) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - vxge_os_memcpy(&hldev->mrpcim->mrpcim_stats_sav, - hldev->mrpcim->mrpcim_stats, - sizeof(vxge_hal_mrpcim_stats_hw_info_t)); - - if (hldev->header.config.stats_read_method == - VXGE_HAL_STATS_READ_METHOD_DMA) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_general_cfg2); - - val64 |= VXGE_HAL_MRPCIM_GENERAL_CFG2_MRPCIM_STATS_ENABLE; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->mrpcim_general_cfg2); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->stats_cfg0); - - val64 |= VXGE_HAL_STATS_CFG0_STATS_ENABLE( - (1 << (16 - hldev->first_vp_id))); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->stats_cfg0); - } else { - status = __hal_mrpcim_stats_get( - hldev, - hldev->mrpcim->mrpcim_stats); - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mrpcim_stats_disable - Disable mrpcim statistics. - * @devh: HAL Device. - * - * Enable the DMA mrpcim statistics for the device. The function is to be called - * to disable the adapter to update stats into the host memory. This function - * is not needed to be called, normally. - * - * See also: vxge_hal_mrpcim_stats_enable() - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_disable(vxge_hal_device_h devh) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_general_cfg2); - - val64 &= ~VXGE_HAL_MRPCIM_GENERAL_CFG2_MRPCIM_STATS_ENABLE; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->mrpcim_general_cfg2); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mrpcim_stats_get - Get the device mrpcim statistics. - * @devh: HAL Device. - * @stats: mrpcim stats - * - * Returns the device mrpcim stats for the device. - * - * See also: vxge_hal_device_stats_get() - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_get( - vxge_hal_device_h devh, - vxge_hal_mrpcim_stats_hw_info_t *stats) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((hldev != NULL) && (stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "devh = 0x"VXGE_OS_STXFMT", stats = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) stats); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - if (hldev->header.config.stats_read_method == - VXGE_HAL_STATS_READ_METHOD_DMA) { - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->stats_cfg0, - 0, - VXGE_HAL_STATS_CFG0_STATS_ENABLE( - (1 << (16 - hldev->first_vp_id))), - hldev->header.config.device_poll_millis); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_general_cfg2); - - val64 &= ~VXGE_HAL_MRPCIM_GENERAL_CFG2_MRPCIM_STATS_ENABLE; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->mrpcim_general_cfg2); - } - - if (status == VXGE_HAL_OK) { - vxge_os_memcpy(stats, - hldev->mrpcim->mrpcim_stats, - sizeof(vxge_hal_mrpcim_stats_hw_info_t)); - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mrpcim_stats_access - Access the statistics from the given location - * and offset and perform an operation - * @devh: HAL Device handle. - * @operation: Operation to be performed - * @location: Location (one of vpath id, aggregate or port) - * @offset: Offset with in the location - * @stat: Pointer to a buffer to return the value - * - * Get the statistics from the given location and offset. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_access( - vxge_hal_device_h devh, - u32 operation, - u32 location, - u32 offset, - u64 *stat) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (stat != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT", operation = %d, " - "location = %d, offset = %d, stat = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, operation, location, offset, (ptr_t) stat); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - val64 = VXGE_HAL_XMAC_STATS_SYS_CMD_OP(operation) | - VXGE_HAL_XMAC_STATS_SYS_CMD_STROBE | - VXGE_HAL_XMAC_STATS_SYS_CMD_LOC_SEL(location) | - VXGE_HAL_XMAC_STATS_SYS_CMD_OFFSET_SEL(offset); - - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &hldev->mrpcim_reg->xmac_stats_sys_cmd); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->mrpcim_reg->xmac_stats_sys_cmd); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xmac_stats_sys_cmd, - 0, - VXGE_HAL_XMAC_STATS_SYS_CMD_STROBE, - hldev->header.config.device_poll_millis); - - if ((status == VXGE_HAL_OK) && (operation == VXGE_HAL_STATS_OP_READ)) { - - *stat = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xmac_stats_sys_data); - - } else { - *stat = 0; - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mrpcim_xmac_aggr_stats_get - Get the Statistics on aggregate port - * @devh: HAL device handle. - * @port: Number of the port (0 or 1) - * @aggr_stats: Buffer to return Statistics on aggregate port. - * - * Get the Statistics on aggregate port - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_xmac_aggr_stats_get(vxge_hal_device_h devh, - u32 port, - vxge_hal_xmac_aggr_stats_t *aggr_stats) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (aggr_stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT", port = %d, " - "aggr_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, port, (ptr_t) aggr_stats); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_TX_FRMS_OFFSET(port)); - - aggr_stats->tx_frms = - VXGE_HAL_STATS_GET_AGGRn_TX_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_TX_DATA_OCTETS_OFFSET(port)); - - aggr_stats->tx_data_octets = - VXGE_HAL_STATS_GET_AGGRn_TX_DATA_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_TX_MCAST_FRMS_OFFSET(port)); - - aggr_stats->tx_mcast_frms = - VXGE_HAL_STATS_GET_AGGRn_TX_MCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_TX_BCAST_FRMS_OFFSET(port)); - - aggr_stats->tx_bcast_frms = - VXGE_HAL_STATS_GET_AGGRn_TX_BCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_TX_DISCARDED_FRMS_OFFSET(port)); - - aggr_stats->tx_discarded_frms = - VXGE_HAL_STATS_GET_AGGRn_TX_DISCARDED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_TX_ERRORED_FRMS_OFFSET(port)); - - aggr_stats->tx_errored_frms = - VXGE_HAL_STATS_GET_AGGRn_TX_ERRORED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_RX_FRMS_OFFSET(port)); - - aggr_stats->rx_frms = - VXGE_HAL_STATS_GET_AGGRn_RX_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_RX_DATA_OCTETS_OFFSET(port)); - - aggr_stats->rx_data_octets = - VXGE_HAL_STATS_GET_AGGRn_RX_DATA_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_RX_MCAST_FRMS_OFFSET(port)); - - aggr_stats->rx_mcast_frms = - VXGE_HAL_STATS_GET_AGGRn_RX_MCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_RX_BCAST_FRMS_OFFSET(port)); - - aggr_stats->rx_bcast_frms = - VXGE_HAL_STATS_GET_AGGRn_RX_BCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_RX_DISCARDED_FRMS_OFFSET(port)); - - aggr_stats->rx_discarded_frms = - VXGE_HAL_STATS_GET_AGGRn_RX_DISCARDED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_RX_ERRORED_FRMS_OFFSET(port)); - - aggr_stats->rx_errored_frms = - VXGE_HAL_STATS_GET_AGGRn_RX_ERRORED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_AGGRn_RX_U_SLOW_PROTO_FRMS_OFFSET(port)); - - aggr_stats->rx_unknown_slow_proto_frms = - VXGE_HAL_STATS_GET_AGGRn_RX_U_SLOW_PROTO_FRMS(val64); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (VXGE_HAL_OK); -} - - -/* - * vxge_hal_mrpcim_xmac_port_stats_get - Get the Statistics on a port - * @devh: HAL device handle. - * @port: Number of the port (wire 0, wire 1 or LAG) - * @port_stats: Buffer to return Statistics on a port. - * - * Get the Statistics on port - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_xmac_port_stats_get(vxge_hal_device_h devh, - u32 port, - vxge_hal_xmac_port_stats_t *port_stats) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert((devh != NULL) && (port_stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT", port = %d, " - "port_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, port, (ptr_t) port_stats); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_TTL_FRMS_OFFSET(port)); - - port_stats->tx_ttl_frms = - VXGE_HAL_STATS_GET_PORTn_TX_TTL_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_TTL_FRMS_OFFSET(port)); - - port_stats->tx_ttl_octets = - VXGE_HAL_STATS_GET_PORTn_TX_TTL_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_DATA_OCTETS_OFFSET(port)); - - port_stats->tx_data_octets = - VXGE_HAL_STATS_GET_PORTn_TX_DATA_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_MCAST_FRMS_OFFSET(port)); - - port_stats->tx_mcast_frms = - VXGE_HAL_STATS_GET_PORTn_TX_MCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_BCAST_FRMS_OFFSET(port)); - - port_stats->tx_bcast_frms = - VXGE_HAL_STATS_GET_PORTn_TX_BCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_UCAST_FRMS_OFFSET(port)); - - port_stats->tx_ucast_frms = - VXGE_HAL_STATS_GET_PORTn_TX_UCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_TAGGED_FRMS_OFFSET(port)); - - port_stats->tx_tagged_frms = - VXGE_HAL_STATS_GET_PORTn_TX_TAGGED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_VLD_IP_OFFSET(port)); - - port_stats->tx_vld_ip = - VXGE_HAL_STATS_GET_PORTn_TX_VLD_IP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_VLD_IP_OCTETS_OFFSET(port)); - - port_stats->tx_vld_ip_octets = - VXGE_HAL_STATS_GET_PORTn_TX_VLD_IP_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_ICMP_OFFSET(port)); - - port_stats->tx_icmp = - VXGE_HAL_STATS_GET_PORTn_TX_ICMP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_TCP_OFFSET(port)); - - port_stats->tx_tcp = - VXGE_HAL_STATS_GET_PORTn_TX_TCP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_RST_TCP_OFFSET(port)); - - port_stats->tx_rst_tcp = - VXGE_HAL_STATS_GET_PORTn_TX_RST_TCP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_UDP_OFFSET(port)); - - port_stats->tx_udp = - VXGE_HAL_STATS_GET_PORTn_TX_UDP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_UNKNOWN_PROTOCOL_OFFSET(port)); - - port_stats->tx_unknown_protocol = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_UNKNOWN_PROTOCOL(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_PARSE_ERROR_OFFSET(port)); - - port_stats->tx_parse_error = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_PARSE_ERROR(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_PAUSE_CTRL_FRMS_OFFSET(port)); - - port_stats->tx_pause_ctrl_frms = - VXGE_HAL_STATS_GET_PORTn_TX_PAUSE_CTRL_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_LACPDU_FRMS_OFFSET(port)); - - port_stats->tx_lacpdu_frms = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_LACPDU_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_MRKR_PDU_FRMS_OFFSET(port)); - - port_stats->tx_marker_pdu_frms = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_MRKR_PDU_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_MRKR_RESP_PDU_FRMS_OFFSET(port)); - - port_stats->tx_marker_resp_pdu_frms = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_MRKR_RESP_PDU_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_DROP_IP_OFFSET(port)); - - port_stats->tx_drop_ip = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_DROP_IP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_XGMII_CHAR1_MATCH_OFFSET(port)); - - port_stats->tx_xgmii_char1_match = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_XGMII_CHAR1_MATCH(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_XGMII_CHAR2_MATCH_OFFSET(port)); - - port_stats->tx_xgmii_char2_match = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_XGMII_CHAR2_MATCH(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_XGMII_COL1_MATCH_OFFSET(port)); - - port_stats->tx_xgmii_column1_match = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_XGMII_COL1_MATCH(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_XGMII_COL2_MATCH_OFFSET(port)); - - port_stats->tx_xgmii_column2_match = - (u32) VXGE_HAL_STATS_GET_PORTn_TX_XGMII_COL2_MATCH(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_DROP_FRMS_OFFSET(port)); - - port_stats->tx_drop_frms = - (u16) VXGE_HAL_STATS_GET_PORTn_TX_DROP_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_TX_ANY_ERR_FRMS_OFFSET(port)); - - port_stats->tx_any_err_frms = - (u16) VXGE_HAL_STATS_GET_PORTn_TX_ANY_ERR_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_FRMS_OFFSET(port)); - - port_stats->rx_ttl_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_VLD_FRMS_OFFSET(port)); - - port_stats->rx_vld_frms = - VXGE_HAL_STATS_GET_PORTn_RX_VLD_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_OFFLOAD_FRMS_OFFSET(port)); - - port_stats->rx_offload_frms = - VXGE_HAL_STATS_GET_PORTn_RX_OFFLOAD_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_OCTETS_OFFSET(port)); - - port_stats->rx_ttl_octets = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_DATA_OCTETS_OFFSET(port)); - - port_stats->rx_data_octets = - VXGE_HAL_STATS_GET_PORTn_RX_DATA_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_OFFLOAD_OCTETS_OFFSET(port)); - - port_stats->rx_offload_octets = - VXGE_HAL_STATS_GET_PORTn_RX_OFFLOAD_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_VLD_MCAST_FRMS_OFFSET(port)); - - port_stats->rx_vld_mcast_frms = - VXGE_HAL_STATS_GET_PORTn_RX_VLD_MCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_VLD_BCAST_FRMS_OFFSET(port)); - - port_stats->rx_vld_bcast_frms = - VXGE_HAL_STATS_GET_PORTn_RX_VLD_BCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_ACC_UCAST_FRMS_OFFSET(port)); - - port_stats->rx_accepted_ucast_frms = - VXGE_HAL_STATS_GET_PORTn_RX_ACC_UCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_ACC_NUCAST_FRMS_OFFSET(port)); - - port_stats->rx_accepted_nucast_frms = - VXGE_HAL_STATS_GET_PORTn_RX_ACC_NUCAST_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TAGGED_FRMS_OFFSET(port)); - - port_stats->rx_tagged_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TAGGED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_LONG_FRMS_OFFSET(port)); - - port_stats->rx_long_frms = - VXGE_HAL_STATS_GET_PORTn_RX_LONG_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_USIZED_FRMS_OFFSET(port)); - - port_stats->rx_usized_frms = - VXGE_HAL_STATS_GET_PORTn_RX_USIZED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_OSIZED_FRMS_OFFSET(port)); - - port_stats->rx_osized_frms = - VXGE_HAL_STATS_GET_PORTn_RX_OSIZED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_FRAG_FRMS_OFFSET(port)); - - port_stats->rx_frag_frms = - VXGE_HAL_STATS_GET_PORTn_RX_FRAG_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_JABBER_FRMS_OFFSET(port)); - - port_stats->rx_jabber_frms = - VXGE_HAL_STATS_GET_PORTn_RX_JABBER_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_64_FRMS_OFFSET(port)); - - port_stats->rx_ttl_64_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_64_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_65_127_FRMS_OFFSET(port)); - - port_stats->rx_ttl_65_127_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_65_127_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_128_255_FRMS_OFFSET(port)); - - port_stats->rx_ttl_128_255_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_128_255_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_256_511_FRMS_OFFSET(port)); - - port_stats->rx_ttl_256_511_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_256_511_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_512_1023_FRMS_OFFSET(port)); - - port_stats->rx_ttl_512_1023_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_512_1023_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_1024_1518_FRMS_OFFSET(port)); - - port_stats->rx_ttl_1024_1518_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_1024_1518_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_1519_4095_FRMS_OFFSET(port)); - - port_stats->rx_ttl_1519_4095_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_1519_4095_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_4096_81915_FRMS_OFFSET(port)); - - port_stats->rx_ttl_4096_8191_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_4096_8191_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_8192_MAX_FRMS_OFFSET(port)); - - port_stats->rx_ttl_8192_max_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_8192_MAX_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TTL_GT_MAX_FRMS_OFFSET(port)); - - port_stats->rx_ttl_gt_max_frms = - VXGE_HAL_STATS_GET_PORTn_RX_TTL_GT_MAX_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_IP_OFFSET(port)); - - port_stats->rx_ip = VXGE_HAL_STATS_GET_PORTn_RX_IP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_ACC_IP_OFFSET(port)); - - port_stats->rx_accepted_ip = - VXGE_HAL_STATS_GET_PORTn_RX_ACC_IP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_IP_OCTETS_OFFSET(port)); - - port_stats->rx_ip_octets = - VXGE_HAL_STATS_GET_PORTn_RX_IP_OCTETS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_ERR_IP_OFFSET(port)); - - port_stats->rx_err_ip = - VXGE_HAL_STATS_GET_PORTn_RX_ERR_IP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_ICMP_OFFSET(port)); - - port_stats->rx_icmp = VXGE_HAL_STATS_GET_PORTn_RX_ICMP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TCP_OFFSET(port)); - - port_stats->rx_tcp = VXGE_HAL_STATS_GET_PORTn_RX_TCP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_UDP_OFFSET(port)); - - port_stats->rx_udp = VXGE_HAL_STATS_GET_PORTn_RX_UDP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_ERR_TCP_OFFSET(port)); - - port_stats->rx_err_tcp = VXGE_HAL_STATS_GET_PORTn_RX_ERR_TCP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_PAUSE_CNT_OFFSET(port)); - - port_stats->rx_pause_count = - VXGE_HAL_STATS_GET_PORTn_RX_PAUSE_CNT(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_PAUSE_CTRL_FRMS_OFFSET(port)); - - port_stats->rx_pause_ctrl_frms = - VXGE_HAL_STATS_GET_PORTn_RX_PAUSE_CTRL_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_UNSUP_CTRL_FRMS_OFFSET(port)); - - port_stats->rx_unsup_ctrl_frms = - VXGE_HAL_STATS_GET_PORTn_RX_UNSUP_CTRL_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_FCS_ERR_FRMS_OFFSET(port)); - - port_stats->rx_fcs_err_frms = - VXGE_HAL_STATS_GET_PORTn_RX_FCS_ERR_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_IN_RNG_LEN_ERR_FRMS_OFFSET(port)); - - port_stats->rx_in_rng_len_err_frms = - VXGE_HAL_STATS_GET_PORTn_RX_IN_RNG_LEN_ERR_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_OUT_RNG_LEN_ERR_FRMS_OFFSET(port)); - - port_stats->rx_out_rng_len_err_frms = - VXGE_HAL_STATS_GET_PORTn_RX_OUT_RNG_LEN_ERR_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_DROP_FRMS_OFFSET(port)); - - port_stats->rx_drop_frms = - VXGE_HAL_STATS_GET_PORTn_RX_DROP_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_DISCARDED_FRMS_OFFSET(port)); - - port_stats->rx_discarded_frms = - VXGE_HAL_STATS_GET_PORTn_RX_DISCARDED_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_DROP_IP_OFFSET(port)); - - port_stats->rx_drop_ip = - VXGE_HAL_STATS_GET_PORTn_RX_DROP_IP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_DRP_UDP_OFFSET(port)); - - port_stats->rx_drop_udp = - VXGE_HAL_STATS_GET_PORTn_RX_DRP_UDP(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_LACPDU_FRMS_OFFSET(port)); - - port_stats->rx_lacpdu_frms = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_LACPDU_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_MRKR_PDU_FRMS_OFFSET(port)); - - port_stats->rx_marker_pdu_frms = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_MRKR_PDU_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_MRKR_RESP_PDU_FRMS_OFFSET(port)); - - port_stats->rx_marker_resp_pdu_frms = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_MRKR_RESP_PDU_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_UNKNOWN_PDU_FRMS_OFFSET(port)); - - port_stats->rx_unknown_pdu_frms = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_UNKNOWN_PDU_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_ILLEGAL_PDU_FRMS_OFFSET(port)); - - port_stats->rx_illegal_pdu_frms = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_ILLEGAL_PDU_FRMS(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_FCS_DISCARD_OFFSET(port)); - - port_stats->rx_fcs_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_FCS_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_LEN_DISCARD_OFFSET(port)); - - port_stats->rx_len_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_LEN_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_SWITCH_DISCARD_OFFSET(port)); - - port_stats->rx_switch_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_SWITCH_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_L2_MGMT_DISCARD_OFFSET(port)); - - port_stats->rx_l2_mgmt_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_L2_MGMT_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_RPA_DISCARD_OFFSET(port)); - - port_stats->rx_rpa_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_RPA_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_TRASH_DISCARD_OFFSET(port)); - - port_stats->rx_trash_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_TRASH_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_RTS_DISCARD_OFFSET(port)); - - port_stats->rx_rts_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_RTS_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_RED_DISCARD_OFFSET(port)); - - port_stats->rx_red_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_RED_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_BUFF_FULL_DISCARD_OFFSET(port)); - - port_stats->rx_buff_full_discard = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_BUFF_FULL_DISCARD(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_XGMII_DATA_ERR_CNT_OFFSET(port)); - - port_stats->rx_xgmii_data_err_cnt = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_XGMII_DATA_ERR_CNT(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_XGMII_CTRL_ERR_CNT_OFFSET(port)); - - port_stats->rx_xgmii_ctrl_err_cnt = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CTRL_ERR_CNT(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_XGMII_ERR_SYM_OFFSET(port)); - - port_stats->rx_xgmii_err_sym = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_XGMII_ERR_SYM(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_XGMII_CHAR1_MATCH_OFFSET(port)); - - port_stats->rx_xgmii_char1_match = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CHAR1_MATCH(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_XGMII_CHAR2_MATCH_OFFSET(port)); - - port_stats->rx_xgmii_char2_match = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CHAR2_MATCH(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_XGMII_COL1_MATCH_OFFSET(port)); - - port_stats->rx_xgmii_column1_match = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_XGMII_COL1_MATCH(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_XGMII_COL2_MATCH_OFFSET(port)); - - port_stats->rx_xgmii_column2_match = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_XGMII_COL2_MATCH(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_LOCAL_FAULT_OFFSET(port)); - - port_stats->rx_local_fault = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_LOCAL_FAULT(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_REMOTE_FAULT_OFFSET(port)); - - port_stats->rx_remote_fault = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_REMOTE_FAULT(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_PORT, - VXGE_HAL_STATS_PORTn_RX_JETTISON_OFFSET(port)); - - port_stats->rx_jettison = - (u32) VXGE_HAL_STATS_GET_PORTn_RX_JETTISON(val64); - - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (VXGE_HAL_OK); -} - - -/* - * vxge_hal_mrpcim_xmac_stats_get - Get the XMAC Statistics - * @devh: HAL device handle. - * @xmac_stats: Buffer to return XMAC Statistics. - * - * Get the XMAC Statistics - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_xmac_stats_get(vxge_hal_device_h devh, - vxge_hal_mrpcim_xmac_stats_t *xmac_stats) -{ - u32 i; - __hal_device_t *hldev = (__hal_device_t *) devh; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((devh != NULL) && (xmac_stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "hldev = 0x"VXGE_OS_STXFMT", mrpcim_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) xmac_stats); - - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - status = vxge_hal_mrpcim_xmac_aggr_stats_get(devh, - 0, - &xmac_stats->aggr_stats[0]); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = vxge_hal_mrpcim_xmac_aggr_stats_get(devh, - 1, - &xmac_stats->aggr_stats[1]); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - for (i = 0; i < VXGE_HAL_MAC_MAX_PORTS; i++) { - - status = vxge_hal_mrpcim_xmac_port_stats_get(devh, - i, - &xmac_stats->port_stats[i]); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * _hal_mrpcim_stats_get - Get the mrpcim statistics using PIO - * @hldev: hal device. - * @mrpcim_stats: MRPCIM stats - * - * Returns the mrpcim stats. - * - * See also: vxge_hal_mrpcim_stats_enable(), vxge_hal_mrpcim_stats_disable() - */ -vxge_hal_status_e -__hal_mrpcim_stats_get( - __hal_device_t *hldev, - vxge_hal_mrpcim_stats_hw_info_t *mrpcim_stats) -{ - u32 i; - u64 val64; - vxge_hal_device_h devh = (vxge_hal_device_h) hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((hldev != NULL) && (mrpcim_stats != NULL)); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "hldev = 0x"VXGE_OS_STXFMT", mrpcim_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev, (ptr_t) mrpcim_stats); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_debug_stats0); - - mrpcim_stats->pic_ini_rd_drop = - (u32) VXGE_HAL_MRPCIM_DEBUG_STATS0_GET_INI_RD_DROP(val64); - - mrpcim_stats->pic_ini_wr_drop = - (u32) VXGE_HAL_MRPCIM_DEBUG_STATS0_GET_INI_WR_DROP(val64); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_debug_stats1_vplane[i]); - - mrpcim_stats->pic_wrcrdtarb_ph_crdt_depleted_vplane[i]. - pic_wrcrdtarb_ph_crdt_depleted = (u32) - VXGE_HAL_MRPCIM_DEBUG_STATS1_GET_VPLANE_WRCRDTARB_PH_CRDT_DEPLETED( - val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_debug_stats2_vplane[i]); - - mrpcim_stats->pic_wrcrdtarb_pd_crdt_depleted_vplane[i]. - pic_wrcrdtarb_pd_crdt_depleted = (u32) - VXGE_HAL_MRPCIM_DEBUG_STATS2_GET_VPLANE_WRCRDTARB_PD_CRDT_DEPLETED( - val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_debug_stats3_vplane[i]); - - mrpcim_stats->pic_rdcrdtarb_nph_crdt_depleted_vplane[i]. - pic_rdcrdtarb_nph_crdt_depleted = (u32) - VXGE_HAL_MRPCIM_DEBUG_STATS3_GET_VPLANE_RDCRDTARB_NPH_CRDT_DEPLETED( - val64); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_debug_stats4); - - mrpcim_stats->pic_ini_rd_vpin_drop = - (u32) VXGE_HAL_MRPCIM_DEBUG_STATS4_GET_INI_RD_VPIN_DROP(val64); - - mrpcim_stats->pic_ini_wr_vpin_drop = - (u32) VXGE_HAL_MRPCIM_DEBUG_STATS4_GET_INI_WR_VPIN_DROP(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->genstats_count01); - - mrpcim_stats->pic_genstats_count0 = - (u32) VXGE_HAL_GENSTATS_COUNT01_GET_GENSTATS_COUNT0(val64); - - mrpcim_stats->pic_genstats_count1 = - (u32) VXGE_HAL_GENSTATS_COUNT01_GET_GENSTATS_COUNT1(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->genstats_count23); - - mrpcim_stats->pic_genstats_count2 = - (u32) VXGE_HAL_GENSTATS_COUNT23_GET_GENSTATS_COUNT2(val64); - - mrpcim_stats->pic_genstats_count3 = - (u32) VXGE_HAL_GENSTATS_COUNT23_GET_GENSTATS_COUNT3(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->genstats_count4); - - mrpcim_stats->pic_genstats_count4 = - (u32) VXGE_HAL_GENSTATS_COUNT4_GET_GENSTATS_COUNT4(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->genstats_count5); - - mrpcim_stats->pic_genstats_count5 = - (u32) VXGE_HAL_GENSTATS_COUNT5_GET_GENSTATS_COUNT5(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->debug_stats0); - - mrpcim_stats->pci_rstdrop_cpl = - (u32) VXGE_HAL_DEBUG_STATS0_GET_RSTDROP_CPL(val64); - - mrpcim_stats->pci_rstdrop_msg = - (u32) VXGE_HAL_DEBUG_STATS0_GET_RSTDROP_MSG(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->debug_stats1); - - mrpcim_stats->pci_rstdrop_client0 = - (u32) VXGE_HAL_DEBUG_STATS1_GET_RSTDROP_CLIENT0(val64); - - mrpcim_stats->pci_rstdrop_client1 = - (u32) VXGE_HAL_DEBUG_STATS1_GET_RSTDROP_CLIENT1(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->debug_stats2); - - mrpcim_stats->pci_rstdrop_client2 = - (u32) VXGE_HAL_DEBUG_STATS2_GET_RSTDROP_CLIENT2(val64); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->debug_stats3_vplane); - - mrpcim_stats->pci_depl_h_vplane[i].pci_depl_cplh = - (u16) VXGE_HAL_DEBUG_STATS3_GET_VPLANE_DEPL_CPLH(val64); - - mrpcim_stats->pci_depl_h_vplane[i].pci_depl_nph = - (u16) VXGE_HAL_DEBUG_STATS3_GET_VPLANE_DEPL_NPH(val64); - - mrpcim_stats->pci_depl_h_vplane[i].pci_depl_ph = - (u16) VXGE_HAL_DEBUG_STATS3_GET_VPLANE_DEPL_PH(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->debug_stats4_vplane); - - mrpcim_stats->pci_depl_d_vplane[i].pci_depl_cpld = - (u16) VXGE_HAL_DEBUG_STATS4_GET_VPLANE_DEPL_CPLD(val64); - - mrpcim_stats->pci_depl_d_vplane[i].pci_depl_npd = - (u16) VXGE_HAL_DEBUG_STATS4_GET_VPLANE_DEPL_NPD(val64); - - mrpcim_stats->pci_depl_d_vplane[i].pci_depl_pd = - (u16) VXGE_HAL_DEBUG_STATS4_GET_VPLANE_DEPL_PD(val64); - } - - status = vxge_hal_mrpcim_xmac_aggr_stats_get(hldev, - 0, - &mrpcim_stats->xgmac_aggr[0]); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = vxge_hal_mrpcim_xmac_aggr_stats_get(hldev, - 1, - &mrpcim_stats->xgmac_aggr[1]); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - for (i = 0; i < VXGE_HAL_MAC_MAX_PORTS; i++) { - - status = vxge_hal_mrpcim_xmac_port_stats_get(hldev, - i, - &mrpcim_stats->xgmac_port[i]); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - } - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_GLOBAL_PROG_EVENT_GNUM0_OFFSET); - - mrpcim_stats->xgmac_global_prog_event_gnum0 = - VXGE_HAL_STATS_GET_GLOBAL_PROG_EVENT_GNUM0(val64); - - VXGE_HAL_MRPCIM_STATS_PIO_READ(VXGE_HAL_STATS_LOC_AGGR, - VXGE_HAL_STATS_GLOBAL_PROG_EVENT_GNUM1_OFFSET); - - mrpcim_stats->xgmac_global_prog_event_gnum1 = - VXGE_HAL_STATS_GET_GLOBAL_PROG_EVENT_GNUM1(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->orp_lro_events); - - mrpcim_stats->xgmac_orp_lro_events = - VXGE_HAL_ORP_LRO_EVENTS_GET_ORP_LRO_EVENTS(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->orp_bs_events); - - mrpcim_stats->xgmac_orp_bs_events = - VXGE_HAL_ORP_BS_EVENTS_GET_ORP_BS_EVENTS(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->orp_iwarp_events); - - mrpcim_stats->xgmac_orp_iwarp_events = - VXGE_HAL_ORP_IWARP_EVENTS_GET_ORP_IWARP_EVENTS(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->dbg_stats_tpa_tx_path); - - mrpcim_stats->xgmac_tx_permitted_frms = - (u32) VXGE_HAL_DBG_STATS_TPA_TX_PATH_GET_TX_PERMITTED_FRMS(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->dbg_stat_tx_any_frms); - - mrpcim_stats->xgmac_port0_tx_any_frms = - (u8) VXGE_HAL_DBG_STAT_TX_ANY_FRMS_GET_PORT0_TX_ANY_FRMS(val64); - - mrpcim_stats->xgmac_port1_tx_any_frms = - (u8) VXGE_HAL_DBG_STAT_TX_ANY_FRMS_GET_PORT1_TX_ANY_FRMS(val64); - - mrpcim_stats->xgmac_port2_tx_any_frms = - (u8) VXGE_HAL_DBG_STAT_TX_ANY_FRMS_GET_PORT2_TX_ANY_FRMS(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->dbg_stat_rx_any_frms); - - mrpcim_stats->xgmac_port0_rx_any_frms = - (u8) VXGE_HAL_DBG_STAT_RX_ANY_FRMS_GET_PORT0_RX_ANY_FRMS(val64); - - mrpcim_stats->xgmac_port1_rx_any_frms = - (u8) VXGE_HAL_DBG_STAT_RX_ANY_FRMS_GET_PORT1_RX_ANY_FRMS(val64); - - mrpcim_stats->xgmac_port2_rx_any_frms = - (u8) VXGE_HAL_DBG_STAT_RX_ANY_FRMS_GET_PORT2_RX_ANY_FRMS(val64); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_mrpcim_stats_clear - Clear the statistics of the device - * @devh: HAL Device handle. - * - * Clear the statistics of the given Device. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_stats_clear(vxge_hal_device_h devh) -{ - u32 i; - u64 stat; - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - vxge_os_memcpy(&hldev->mrpcim->mrpcim_stats_sav, - hldev->mrpcim->mrpcim_stats, - sizeof(vxge_hal_mrpcim_stats_hw_info_t)); - - vxge_os_memzero(hldev->mrpcim->mrpcim_stats, - sizeof(vxge_hal_mrpcim_stats_hw_info_t)); - - vxge_os_memzero(&hldev->stats.sw_dev_err_stats, - sizeof(vxge_hal_device_stats_sw_err_t)); - - hldev->stats.sw_dev_info_stats.soft_reset_cnt = 0; - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (!(hldev->vpaths_deployed & mBIT(i))) - continue; - - (void) vxge_hal_vpath_stats_clear( - VXGE_HAL_VIRTUAL_PATH_HANDLE(&hldev->virtual_paths[i])); - - } - - status = vxge_hal_mrpcim_stats_access( - devh, - VXGE_HAL_STATS_OP_CLEAR_ALL_STATS, - 0, - 0, - &stat); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_mrpcim_udp_rth_enable - Enable UDP/RTH. - * @devh: HAL device handle. - * - * enable udp rth - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_udp_rth_enable( - vxge_hal_device_h devh) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - status = __hal_vpath_udp_rth_set(hldev, - hldev->first_vp_id, - TRUE); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_mrpcim_mac_configure - Initialize mac - * @hldev: hal device. - * - * Initializes mac - * - */ -vxge_hal_status_e -__hal_mrpcim_mac_configure(__hal_device_t *hldev) -{ - u64 val64; - u32 i, port_id; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_mac_config_t *mac_config = - &hldev->header.config.mrpcim_config.mac_config; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - for (i = 0; i < VXGE_HAL_MAC_MAX_WIRE_PORTS; i++) { - - port_id = mac_config->wire_port_config[i].port_id; - - if (mac_config->wire_port_config[i].tmac_en == - VXGE_HAL_WIRE_PORT_TMAC_DEFAULT) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->txmac_cfg0_port[port_id]); - - if (val64 & VXGE_HAL_TXMAC_CFG0_PORT_TMAC_EN) { - mac_config->wire_port_config[i].tmac_en = - VXGE_HAL_WIRE_PORT_TMAC_ENABLE; - } else { - mac_config->wire_port_config[i].tmac_en = - VXGE_HAL_WIRE_PORT_TMAC_DISABLE; - } - - } - - if (mac_config->wire_port_config[i].rmac_en == - VXGE_HAL_WIRE_PORT_RMAC_DEFAULT) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_cfg0_port[port_id]); - - if (val64 & VXGE_HAL_RXMAC_CFG0_PORT_RMAC_EN) { - mac_config->wire_port_config[i].rmac_en = - VXGE_HAL_WIRE_PORT_RMAC_ENABLE; - } else { - mac_config->wire_port_config[i].rmac_en = - VXGE_HAL_WIRE_PORT_RMAC_DISABLE; - } - - } - - if ((!(mac_config->wire_port_config[i].rmac_en)) && - (!(mac_config->wire_port_config[i].tmac_en))) - val64 = 0; - else - val64 = VXGE_HAL_XGMAC_MAIN_CFG_PORT_PORT_EN; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->xgmac_main_cfg_port[port_id]); - - if (!val64) - continue; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_cfg0_port[port_id]); - - if (mac_config->wire_port_config[i].rmac_en) - val64 |= VXGE_HAL_RXMAC_CFG0_PORT_RMAC_EN; - else - val64 &= ~VXGE_HAL_RXMAC_CFG0_PORT_RMAC_EN; - - if (mac_config->wire_port_config[i].rmac_strip_fcs != - VXGE_HAL_WIRE_PORT_RMAC_STRIP_FCS_DEFAULT) { - if (mac_config->wire_port_config[i].rmac_strip_fcs) - val64 |= VXGE_HAL_RXMAC_CFG0_PORT_STRIP_FCS; - else - val64 &= ~VXGE_HAL_RXMAC_CFG0_PORT_STRIP_FCS; - } - - if (mac_config->wire_port_config[i].rmac_discard_pfrm != - VXGE_HAL_WIRE_PORT_RMAC_DISCARD_PFRM_DEFAULT) { - if (mac_config->wire_port_config[i].rmac_discard_pfrm) - val64 |= VXGE_HAL_RXMAC_CFG0_PORT_DISCARD_PFRM; - else - val64 &= ~VXGE_HAL_RXMAC_CFG0_PORT_DISCARD_PFRM; - } - - if (mac_config->wire_port_config[i].mtu != - VXGE_HAL_WIRE_PORT_DEF_INITIAL_MTU) { - - val64 &= - ~VXGE_HAL_RXMAC_CFG0_PORT_MAX_PYLD_LEN(0x3fff); - - val64 |= VXGE_HAL_RXMAC_CFG0_PORT_MAX_PYLD_LEN( - mac_config->wire_port_config[i].mtu); - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_cfg0_port[port_id]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_cfg2_port[port_id]); - - if (mac_config->wire_port_config[i].rmac_prom_en != - VXGE_HAL_WIRE_PORT_RMAC_PROM_EN_DEFAULT) { - if (mac_config->wire_port_config[i].rmac_prom_en) - val64 |= VXGE_HAL_RXMAC_CFG2_PORT_PROM_EN; - else - val64 &= ~VXGE_HAL_RXMAC_CFG2_PORT_PROM_EN; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_cfg2_port[port_id]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_pause_cfg_port[port_id]); - - if (mac_config->wire_port_config[i].rmac_pause_gen_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_GEN_EN_DEFAULT) { - if (mac_config->wire_port_config[i].rmac_pause_gen_en) - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_GEN_EN; - else - val64 &= ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_GEN_EN; - - } - - if (mac_config->wire_port_config[i].rmac_pause_rcv_en != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_RCV_EN_DEFAULT) { - if (mac_config->wire_port_config[i].rmac_pause_rcv_en) - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_RCV_EN; - else - val64 &= ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_RCV_EN; - - } - - if (mac_config->wire_port_config[i].rmac_pause_time != - VXGE_HAL_WIRE_PORT_DEF_RMAC_HIGH_PTIME) { - val64 &= - ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_HIGH_PTIME(0xffff); - - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_HIGH_PTIME( - mac_config->wire_port_config[i].rmac_pause_time); - - } - - if (mac_config->wire_port_config[i].rmac_pause_time != - VXGE_HAL_WIRE_PORT_RMAC_PAUSE_LIMITER_DEFAULT) { - if (mac_config->wire_port_config[i].limiter_en) - val64 |= - VXGE_HAL_RXMAC_PAUSE_CFG_PORT_LIMITER_EN; - else - val64 &= - ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_LIMITER_EN; - - } - - if (mac_config->wire_port_config[i].max_limit != - VXGE_HAL_WIRE_PORT_DEF_RMAC_MAX_LIMIT) { - val64 &= ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_MAX_LIMIT(0xff); - - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_MAX_LIMIT( - mac_config->wire_port_config[i].max_limit); - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_pause_cfg_port[port_id]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_link_util_port[port_id]); - - if (mac_config->wire_port_config[i].rmac_util_period != - VXGE_HAL_WIRE_PORT_DEF_TMAC_UTIL_PERIOD) { - val64 &= - ~VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_UTIL_CFG(0xf); - - val64 |= VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_UTIL_CFG( - mac_config->wire_port_config[i].rmac_util_period); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_link_util_port[port_id]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xgmac_debounce_port[port_id]); - - if (mac_config->wire_port_config[i].link_stability_period != - VXGE_HAL_WIRE_PORT_DEF_LINK_STABILITY_PERIOD) { - val64 &= - ~(VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_LINK_UP(0xf) | - VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_LINK_DOWN(0xf)); - - val64 |= VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_LINK_UP( - mac_config->wire_port_config[i].link_stability_period) | - VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_LINK_DOWN( - mac_config->wire_port_config[i].link_stability_period); - } - - if (mac_config->wire_port_config[i].port_stability_period != - VXGE_HAL_WIRE_PORT_DEF_PORT_STABILITY_PERIOD) { - val64 &= - ~(VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_PORT_UP(0xf) | - VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_PORT_DOWN(0xf)); - - val64 |= VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_PORT_UP( - mac_config->wire_port_config[i].port_stability_period) | - VXGE_HAL_XGMAC_DEBOUNCE_PORT_PERIOD_PORT_DOWN( - mac_config->wire_port_config[i].port_stability_period); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->xgmac_debounce_port[port_id]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->txmac_cfg0_port[port_id]); - - if (mac_config->wire_port_config[i].tmac_en) - val64 |= VXGE_HAL_TXMAC_CFG0_PORT_TMAC_EN; - else - val64 &= ~VXGE_HAL_TXMAC_CFG0_PORT_TMAC_EN; - - if (mac_config->wire_port_config[i].tmac_pad != - VXGE_HAL_WIRE_PORT_TMAC_PAD_DEFAULT) { - if (mac_config->wire_port_config[i].tmac_pad) - val64 |= VXGE_HAL_TXMAC_CFG0_PORT_APPEND_PAD; - else - val64 &= ~VXGE_HAL_TXMAC_CFG0_PORT_APPEND_PAD; - } - - if (mac_config->wire_port_config[i].tmac_pad_byte != - VXGE_HAL_WIRE_PORT_TMAC_PAD_DEFAULT) { - val64 &= ~VXGE_HAL_TXMAC_CFG0_PORT_PAD_BYTE(0xff); - - val64 |= VXGE_HAL_TXMAC_CFG0_PORT_PAD_BYTE( - mac_config->wire_port_config[i].tmac_pad_byte); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->txmac_cfg0_port[port_id]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->txmac_link_util_port); - - if (mac_config->wire_port_config[i].tmac_util_period != - VXGE_HAL_WIRE_PORT_DEF_TMAC_UTIL_PERIOD) { - val64 &= - ~VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_UTIL_CFG(0xf); - - val64 |= VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_UTIL_CFG( - mac_config->wire_port_config[i].tmac_util_period); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->txmac_link_util_port[port_id]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->ratemgmt_cfg_port); - - if (mac_config->wire_port_config[i].autoneg_mode != - VXGE_HAL_WIRE_PORT_AUTONEG_MODE_DEFAULT) { - - val64 &= ~VXGE_HAL_RATEMGMT_CFG_PORT_MODE(0x3); - - val64 |= VXGE_HAL_RATEMGMT_CFG_PORT_MODE( - mac_config->wire_port_config[i].autoneg_mode); - } - - if (mac_config->wire_port_config[i].autoneg_rate != - VXGE_HAL_WIRE_PORT_AUTONEG_RATE_DEFAULT) { - - if (mac_config->wire_port_config[i].autoneg_rate) - val64 |= VXGE_HAL_RATEMGMT_CFG_PORT_RATE; - else - val64 &= ~VXGE_HAL_RATEMGMT_CFG_PORT_RATE; - - } - - if (mac_config->wire_port_config[i].fixed_use_fsm != - VXGE_HAL_WIRE_PORT_FIXED_USE_FSM_DEFAULT) { - - if (mac_config->wire_port_config[i].fixed_use_fsm) - val64 |= - VXGE_HAL_RATEMGMT_CFG_PORT_FIXED_USE_FSM; - else - val64 &= - ~VXGE_HAL_RATEMGMT_CFG_PORT_FIXED_USE_FSM; - - } - - if (mac_config->wire_port_config[i].antp_use_fsm != - VXGE_HAL_WIRE_PORT_ANTP_USE_FSM_DEFAULT) { - - if (mac_config->wire_port_config[i].antp_use_fsm) - val64 |= - VXGE_HAL_RATEMGMT_CFG_PORT_ANTP_USE_FSM; - else - val64 &= - ~VXGE_HAL_RATEMGMT_CFG_PORT_ANTP_USE_FSM; - - } - - if (mac_config->wire_port_config[i].anbe_use_fsm != - VXGE_HAL_WIRE_PORT_ANBE_USE_FSM_DEFAULT) { - - if (mac_config->wire_port_config[i].anbe_use_fsm) - val64 |= - VXGE_HAL_RATEMGMT_CFG_PORT_ANBE_USE_FSM; - else - val64 &= - ~VXGE_HAL_RATEMGMT_CFG_PORT_ANBE_USE_FSM; - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->ratemgmt_cfg_port[port_id]); - - } - - if (mac_config->switch_port_config.tmac_en == - VXGE_HAL_SWITCH_PORT_TMAC_DEFAULT) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->txmac_cfg0_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - if (val64 & VXGE_HAL_TXMAC_CFG0_PORT_TMAC_EN) { - mac_config->switch_port_config.tmac_en = - VXGE_HAL_SWITCH_PORT_TMAC_ENABLE; - } else { - mac_config->switch_port_config.tmac_en = - VXGE_HAL_SWITCH_PORT_TMAC_DISABLE; - } - - } - - if (mac_config->switch_port_config.rmac_en == - VXGE_HAL_SWITCH_PORT_RMAC_DEFAULT) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_cfg0_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - if (val64 & VXGE_HAL_RXMAC_CFG0_PORT_RMAC_EN) { - mac_config->switch_port_config.rmac_en = - VXGE_HAL_SWITCH_PORT_RMAC_ENABLE; - } else { - mac_config->switch_port_config.rmac_en = - VXGE_HAL_SWITCH_PORT_RMAC_DISABLE; - } - - } - - if (mac_config->switch_port_config.rmac_en || - mac_config->switch_port_config.tmac_en) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_cfg0_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - if (mac_config->switch_port_config.rmac_en) - val64 |= VXGE_HAL_RXMAC_CFG0_PORT_RMAC_EN; - else - val64 &= ~VXGE_HAL_RXMAC_CFG0_PORT_RMAC_EN; - - if (mac_config->switch_port_config.rmac_strip_fcs != - VXGE_HAL_SWITCH_PORT_RMAC_STRIP_FCS_DEFAULT) { - if (mac_config->switch_port_config.rmac_strip_fcs) - val64 |= VXGE_HAL_RXMAC_CFG0_PORT_STRIP_FCS; - else - val64 &= ~VXGE_HAL_RXMAC_CFG0_PORT_STRIP_FCS; - } - - if (mac_config->switch_port_config.rmac_discard_pfrm != - VXGE_HAL_SWITCH_PORT_RMAC_DISCARD_PFRM_DEFAULT) { - if (mac_config->switch_port_config.rmac_discard_pfrm) - val64 |= VXGE_HAL_RXMAC_CFG0_PORT_DISCARD_PFRM; - else - val64 &= ~VXGE_HAL_RXMAC_CFG0_PORT_DISCARD_PFRM; - } - - if (mac_config->switch_port_config.mtu != - VXGE_HAL_SWITCH_PORT_DEF_INITIAL_MTU) { - - val64 &= ~VXGE_HAL_RXMAC_CFG0_PORT_MAX_PYLD_LEN(0x3fff); - - val64 |= VXGE_HAL_RXMAC_CFG0_PORT_MAX_PYLD_LEN( - mac_config->switch_port_config.mtu); - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_cfg0_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_cfg2_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - if (mac_config->switch_port_config.rmac_prom_en != - VXGE_HAL_SWITCH_PORT_RMAC_PROM_EN_DEFAULT) { - if (mac_config->switch_port_config.rmac_prom_en) - val64 |= VXGE_HAL_RXMAC_CFG2_PORT_PROM_EN; - else - val64 &= ~VXGE_HAL_RXMAC_CFG2_PORT_PROM_EN; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_cfg2_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_pause_cfg_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - if (mac_config->switch_port_config.rmac_pause_gen_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_GEN_EN_DEFAULT) { - if (mac_config->switch_port_config.rmac_pause_gen_en) - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_GEN_EN; - else - val64 &= ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_GEN_EN; - - } - - if (mac_config->switch_port_config.rmac_pause_rcv_en != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_RCV_EN_DEFAULT) { - if (mac_config->switch_port_config.rmac_pause_rcv_en) - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_RCV_EN; - else - val64 &= ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_RCV_EN; - - } - - if (mac_config->switch_port_config.rmac_pause_time != - VXGE_HAL_SWITCH_PORT_DEF_RMAC_HIGH_PTIME) { - val64 &= - ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_HIGH_PTIME(0xffff); - - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_HIGH_PTIME( - mac_config->switch_port_config.rmac_pause_time); - - } - - if (mac_config->switch_port_config.rmac_pause_time != - VXGE_HAL_SWITCH_PORT_RMAC_PAUSE_LIMITER_DEFAULT) { - if (mac_config->switch_port_config.limiter_en) - val64 |= - VXGE_HAL_RXMAC_PAUSE_CFG_PORT_LIMITER_EN; - else - val64 &= - ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_LIMITER_EN; - - } - - if (mac_config->switch_port_config.max_limit != - VXGE_HAL_SWITCH_PORT_DEF_RMAC_MAX_LIMIT) { - val64 &= ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_MAX_LIMIT(0xff); - - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_MAX_LIMIT( - mac_config->switch_port_config.max_limit); - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_pause_cfg_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_link_util_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - if (mac_config->switch_port_config.rmac_util_period != - VXGE_HAL_SWITCH_PORT_DEF_TMAC_UTIL_PERIOD) { - val64 &= - ~VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_UTIL_CFG(0xf); - - val64 |= VXGE_HAL_RXMAC_LINK_UTIL_PORT_RMAC_UTIL_CFG( - mac_config->switch_port_config.rmac_util_period); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_link_util_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->txmac_cfg0_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - if (mac_config->switch_port_config.tmac_en) - val64 |= VXGE_HAL_TXMAC_CFG0_PORT_TMAC_EN; - else - val64 &= ~VXGE_HAL_TXMAC_CFG0_PORT_TMAC_EN; - - if (mac_config->switch_port_config.tmac_pad != - VXGE_HAL_SWITCH_PORT_TMAC_PAD_DEFAULT) { - if (mac_config->switch_port_config.tmac_pad) - val64 |= VXGE_HAL_TXMAC_CFG0_PORT_APPEND_PAD; - else - val64 &= ~VXGE_HAL_TXMAC_CFG0_PORT_APPEND_PAD; - } - - if (mac_config->switch_port_config.tmac_pad_byte != - VXGE_HAL_SWITCH_PORT_TMAC_PAD_DEFAULT) { - val64 &= ~VXGE_HAL_TXMAC_CFG0_PORT_PAD_BYTE(0xff); - - val64 |= VXGE_HAL_TXMAC_CFG0_PORT_PAD_BYTE( - mac_config->switch_port_config.tmac_pad_byte); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->txmac_cfg0_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->txmac_link_util_port); - - if (mac_config->switch_port_config.tmac_util_period != - VXGE_HAL_SWITCH_PORT_DEF_TMAC_UTIL_PERIOD) { - val64 &= - ~VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_UTIL_CFG(0xf); - - val64 |= VXGE_HAL_TXMAC_LINK_UTIL_PORT_TMAC_UTIL_CFG( - mac_config->switch_port_config.tmac_util_period); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->txmac_link_util_port[ - VXGE_HAL_MAC_SWITCH_PORT]); - - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->txmac_gen_cfg1); - - if (mac_config->tmac_perma_stop_en != - VXGE_HAL_MAC_TMAC_PERMA_STOP_DEFAULT) { - - if (mac_config->tmac_perma_stop_en) - val64 |= VXGE_HAL_TXMAC_GEN_CFG1_TMAC_PERMA_STOP_EN; - else - val64 &= ~VXGE_HAL_TXMAC_GEN_CFG1_TMAC_PERMA_STOP_EN; - - } - - if (mac_config->tmac_tx_switch_dis != - VXGE_HAL_MAC_TMAC_TX_SWITCH_DEFAULT) { - - if (mac_config->tmac_tx_switch_dis) - val64 |= VXGE_HAL_TXMAC_GEN_CFG1_TX_SWITCH_DISABLE; - else - val64 &= ~VXGE_HAL_TXMAC_GEN_CFG1_TX_SWITCH_DISABLE; - - } - - if (mac_config->tmac_lossy_switch_en != - VXGE_HAL_MAC_TMAC_LOSSY_SWITCH_DEFAULT) { - - if (mac_config->tmac_lossy_switch_en) - val64 |= VXGE_HAL_TXMAC_GEN_CFG1_LOSSY_SWITCH; - else - val64 &= ~VXGE_HAL_TXMAC_GEN_CFG1_LOSSY_SWITCH; - - } - - if (mac_config->tmac_lossy_switch_en != - VXGE_HAL_MAC_TMAC_LOSSY_WIRE_DEFAULT) { - - if (mac_config->tmac_lossy_wire_en) - val64 |= VXGE_HAL_TXMAC_GEN_CFG1_LOSSY_WIRE; - else - val64 &= ~VXGE_HAL_TXMAC_GEN_CFG1_LOSSY_WIRE; - - } - - if (mac_config->tmac_bcast_to_wire_dis != - VXGE_HAL_MAC_TMAC_BCAST_TO_WIRE_DEFAULT) { - - if (mac_config->tmac_bcast_to_wire_dis) - val64 |= VXGE_HAL_TXMAC_GEN_CFG1_BLOCK_BCAST_TO_WIRE; - else - val64 &= ~VXGE_HAL_TXMAC_GEN_CFG1_BLOCK_BCAST_TO_WIRE; - - } - - if (mac_config->tmac_bcast_to_wire_dis != - VXGE_HAL_MAC_TMAC_BCAST_TO_SWITCH_DEFAULT) { - - if (mac_config->tmac_bcast_to_switch_dis) - val64 |= VXGE_HAL_TXMAC_GEN_CFG1_BLOCK_BCAST_TO_SWITCH; - else - val64 &= ~VXGE_HAL_TXMAC_GEN_CFG1_BLOCK_BCAST_TO_SWITCH; - - } - - if (mac_config->tmac_host_append_fcs_en != - VXGE_HAL_MAC_TMAC_HOST_APPEND_FCS_DEFAULT) { - - if (mac_config->tmac_host_append_fcs_en) - val64 |= VXGE_HAL_TXMAC_GEN_CFG1_HOST_APPEND_FCS; - else - val64 &= ~VXGE_HAL_TXMAC_GEN_CFG1_HOST_APPEND_FCS; - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->txmac_gen_cfg1); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_rx_pa_cfg0); - - if (mac_config->rpa_ignore_frame_err != - VXGE_HAL_MAC_RPA_IGNORE_FRAME_ERR_DEFAULT) { - - if (mac_config->rpa_ignore_frame_err) - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG0_IGNORE_FRAME_ERR; - else - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG0_IGNORE_FRAME_ERR; - - } - - if (mac_config->rpa_support_snap_ab_n != - VXGE_HAL_MAC_RPA_SUPPORT_SNAP_AB_N_DEFAULT) { - - if (mac_config->rpa_support_snap_ab_n) - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG0_SUPPORT_SNAP_AB_N; - else - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG0_SUPPORT_SNAP_AB_N; - - } - - if (mac_config->rpa_search_for_hao != - VXGE_HAL_MAC_RPA_SEARCH_FOR_HAO_DEFAULT) { - - if (mac_config->rpa_search_for_hao) - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG0_SEARCH_FOR_HAO; - else - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG0_SEARCH_FOR_HAO; - - } - - if (mac_config->rpa_support_ipv6_mobile_hdrs != - VXGE_HAL_MAC_RPA_SUPPORT_IPV6_MOBILE_HDRS_DEFAULT) { - - if (mac_config->rpa_support_ipv6_mobile_hdrs) - val64 |= - VXGE_HAL_RXMAC_RX_PA_CFG0_SUPPORT_MOBILE_IPV6_HDRS; - else - val64 &= - ~VXGE_HAL_RXMAC_RX_PA_CFG0_SUPPORT_MOBILE_IPV6_HDRS; - - } - - if (mac_config->rpa_ipv6_stop_searching != - VXGE_HAL_MAC_RPA_IPV6_STOP_SEARCHING_DEFAULT) { - - if (mac_config->rpa_ipv6_stop_searching) - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG0_IPV6_STOP_SEARCHING; - else - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG0_IPV6_STOP_SEARCHING; - - } - - if (mac_config->rpa_no_ps_if_unknown != - VXGE_HAL_MAC_RPA_NO_PS_IF_UNKNOWN_DEFAULT) { - - if (mac_config->rpa_no_ps_if_unknown) - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG0_NO_PS_IF_UNKNOWN; - else - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG0_NO_PS_IF_UNKNOWN; - - } - - if (mac_config->rpa_search_for_etype != - VXGE_HAL_MAC_RPA_SEARCH_FOR_ETYPE_DEFAULT) { - - if (mac_config->rpa_search_for_etype) - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG0_SEARCH_FOR_ETYPE; - else - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG0_SEARCH_FOR_ETYPE; - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_rx_pa_cfg0); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->fau_pa_cfg); - - if (mac_config->rpa_repl_l4_comp_csum != - VXGE_HAL_MAC_RPA_REPL_l4_COMP_CSUM_DEFAULT) { - - if (mac_config->rpa_repl_l4_comp_csum) - val64 |= VXGE_HAL_FAU_PA_CFG_REPL_L4_COMP_CSUM; - else - val64 &= ~VXGE_HAL_FAU_PA_CFG_REPL_L4_COMP_CSUM; - - } - - if (mac_config->rpa_repl_l3_incl_cf != - VXGE_HAL_MAC_RPA_REPL_L3_INCL_CF_DEFAULT) { - - if (mac_config->rpa_repl_l3_incl_cf) - val64 |= VXGE_HAL_FAU_PA_CFG_REPL_L3_INCL_CF; - else - val64 &= ~VXGE_HAL_FAU_PA_CFG_REPL_L3_INCL_CF; - - } - - if (mac_config->rpa_repl_l3_comp_csum != - VXGE_HAL_MAC_RPA_REPL_l3_COMP_CSUM_DEFAULT) { - - if (mac_config->rpa_repl_l3_comp_csum) - val64 |= VXGE_HAL_FAU_PA_CFG_REPL_L3_COMP_CSUM; - else - val64 &= ~VXGE_HAL_FAU_PA_CFG_REPL_L3_COMP_CSUM; - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->fau_pa_cfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_rx_pa_cfg1); - - if (mac_config->rpa_repl_ipv4_tcp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV4_TCP_INCL_PH_DEFAULT) { - - if (mac_config->rpa_repl_ipv4_tcp_incl_ph) - val64 |= - VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV4_TCP_INCL_PH; - else - val64 &= - ~VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV4_TCP_INCL_PH; - - } - - if (mac_config->rpa_repl_ipv6_tcp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV6_TCP_INCL_PH_DEFAULT) { - - if (mac_config->rpa_repl_ipv6_tcp_incl_ph) - val64 |= - VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV6_TCP_INCL_PH; - else - val64 &= - ~VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV6_TCP_INCL_PH; - - } - - if (mac_config->rpa_repl_ipv4_udp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV4_UDP_INCL_PH_DEFAULT) { - - if (mac_config->rpa_repl_ipv4_udp_incl_ph) - val64 |= - VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV4_UDP_INCL_PH; - else - val64 &= - ~VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV4_UDP_INCL_PH; - - } - - if (mac_config->rpa_repl_ipv6_udp_incl_ph != - VXGE_HAL_MAC_RPA_REPL_IPV6_UDP_INCL_PH_DEFAULT) { - - if (mac_config->rpa_repl_ipv6_udp_incl_ph) - val64 |= - VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV6_UDP_INCL_PH; - else - val64 &= - ~VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_IPV6_UDP_INCL_PH; - - } - - if (mac_config->rpa_repl_l4_incl_cf != - VXGE_HAL_MAC_RPA_REPL_L4_INCL_CF_DEFAULT) { - - if (mac_config->rpa_repl_l4_incl_cf) - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_L4_INCL_CF; - else - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_L4_INCL_CF; - - } - - if (mac_config->rpa_repl_strip_vlan_tag != - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_DEFAULT) { - - if (mac_config->rpa_repl_strip_vlan_tag) - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_STRIP_VLAN_TAG; - else - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_STRIP_VLAN_TAG; - - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_rx_pa_cfg1); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xmac_gen_cfg); - - if (mac_config->network_stability_period != - VXGE_HAL_MAC_DEF_NETWORK_STABILITY_PERIOD) { - - val64 &= ~(VXGE_HAL_XMAC_GEN_CFG_PERIOD_NTWK_DOWN(0xf) | - VXGE_HAL_XMAC_GEN_CFG_PERIOD_NTWK_UP(0xf)); - - val64 |= VXGE_HAL_XMAC_GEN_CFG_PERIOD_NTWK_DOWN( - mac_config->network_stability_period) | - VXGE_HAL_XMAC_GEN_CFG_PERIOD_NTWK_UP( - mac_config->network_stability_period); - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->xmac_gen_cfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->tpa_global_cfg); - - if (mac_config->tpa_support_snap_ab_n != - VXGE_HAL_MAC_TPA_SUPPORT_SNAP_AB_N_DEFAULT) { - - if (mac_config->tpa_support_snap_ab_n) - val64 |= VXGE_HAL_TPA_GLOBAL_CFG_SUPPORT_SNAP_AB_N; - else - val64 &= ~VXGE_HAL_TPA_GLOBAL_CFG_SUPPORT_SNAP_AB_N; - - } - - if (mac_config->tpa_ecc_enable_n != - VXGE_HAL_MAC_TPA_ECC_ENABLE_N_DEFAULT) { - - if (mac_config->tpa_ecc_enable_n) - val64 |= VXGE_HAL_TPA_GLOBAL_CFG_ECC_ENABLE_N; - else - val64 &= ~VXGE_HAL_TPA_GLOBAL_CFG_ECC_ENABLE_N; - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->tpa_global_cfg); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - -} - -/* - * __hal_mrpcim_lag_configure - Initialize LAG registers - * @hldev: hal device. - * - * Initializes LAG registers - * - */ -vxge_hal_status_e -__hal_mrpcim_lag_configure(__hal_device_t *hldev) -{ - u64 val64; - u64 mac_addr; - u32 i, j; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_lag_config_t *lag_config = - &hldev->header.config.mrpcim_config.lag_config; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_cfg); - - if (lag_config->lag_en == VXGE_HAL_LAG_LAG_EN_DEFAULT) { - - if (val64 & VXGE_HAL_LAG_CFG_EN) - lag_config->lag_en = VXGE_HAL_LAG_LAG_EN_ENABLE; - else - lag_config->lag_en = VXGE_HAL_LAG_LAG_EN_DISABLE; - - } - - if (lag_config->lag_en == VXGE_HAL_LAG_LAG_EN_DISABLE) { - - if (val64 & VXGE_HAL_LAG_CFG_EN) { - val64 &= ~VXGE_HAL_LAG_CFG_EN; - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_cfg); - } - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); - - } - - if (lag_config->lag_mode != VXGE_HAL_LAG_LAG_MODE_DEFAULT) { - val64 &= ~VXGE_HAL_LAG_CFG_MODE(0x3); - val64 |= VXGE_HAL_LAG_CFG_MODE(lag_config->lag_mode); - } else { - lag_config->lag_mode = (u32) VXGE_HAL_LAG_CFG_GET_MODE(val64); - } - - if (lag_config->la_mode_config.tx_discard != - VXGE_HAL_LAG_TX_DISCARD_DEFAULT) { - if (lag_config->la_mode_config.tx_discard == - VXGE_HAL_LAG_TX_DISCARD_ENABLE) - val64 |= VXGE_HAL_LAG_CFG_TX_DISCARD_BEHAV; - else - val64 &= ~VXGE_HAL_LAG_CFG_TX_DISCARD_BEHAV; - } - - if (lag_config->la_mode_config.rx_discard != - VXGE_HAL_LAG_RX_DISCARD_DEFAULT) { - if (lag_config->la_mode_config.rx_discard == - VXGE_HAL_LAG_RX_DISCARD_ENABLE) - val64 |= VXGE_HAL_LAG_CFG_RX_DISCARD_BEHAV; - else - val64 &= ~VXGE_HAL_LAG_CFG_RX_DISCARD_BEHAV; - } - - if (lag_config->sl_mode_config.pref_indiv_port != - VXGE_HAL_LAG_PREF_INDIV_PORT_DEFAULT) { - if (lag_config->sl_mode_config.pref_indiv_port == - VXGE_HAL_LAG_RX_DISCARD_ENABLE) - val64 |= VXGE_HAL_LAG_CFG_PREF_INDIV_PORT_NUM; - else - val64 &= ~VXGE_HAL_LAG_CFG_PREF_INDIV_PORT_NUM; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_cfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_tx_cfg); - - if (lag_config->incr_tx_aggr_stats != - VXGE_HAL_LAG_INCR_TX_AGGR_STATS_DEFAULT) { - if (lag_config->incr_tx_aggr_stats == - VXGE_HAL_LAG_INCR_TX_AGGR_STATS_ENABLE) - val64 |= VXGE_HAL_LAG_TX_CFG_INCR_TX_AGGR_STATS; - else - val64 &= ~VXGE_HAL_LAG_TX_CFG_INCR_TX_AGGR_STATS; - } - - if (lag_config->la_mode_config.distrib_alg_sel != - VXGE_HAL_LAG_DISTRIB_ALG_SEL_DEFAULT) { - val64 &= ~VXGE_HAL_LAG_TX_CFG_DISTRIB_ALG_SEL(0x3); - val64 |= VXGE_HAL_LAG_TX_CFG_DISTRIB_ALG_SEL( - lag_config->la_mode_config.distrib_alg_sel); - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - lag_config->la_mode_config.distrib_dest, - &hldev->mrpcim_reg->lag_distrib_dest); - } else { - lag_config->la_mode_config.distrib_alg_sel = - (u32) VXGE_HAL_LAG_TX_CFG_GET_DISTRIB_ALG_SEL(val64); - lag_config->la_mode_config.distrib_dest = - vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_distrib_dest); - } - - if (lag_config->la_mode_config.distrib_remap_if_fail != - VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_DEFAULT) { - if (lag_config->la_mode_config.distrib_remap_if_fail == - VXGE_HAL_LAG_DISTRIB_REMAP_IF_FAIL_ENABLE) - val64 |= VXGE_HAL_LAG_TX_CFG_DISTRIB_REMAP_IF_FAIL; - else - val64 &= ~VXGE_HAL_LAG_TX_CFG_DISTRIB_REMAP_IF_FAIL; - } - - if (lag_config->la_mode_config.coll_max_delay != - VXGE_HAL_LAG_DEF_COLL_MAX_DELAY) { - val64 &= ~VXGE_HAL_LAG_TX_CFG_COLL_MAX_DELAY(0xffff); - val64 |= VXGE_HAL_LAG_TX_CFG_DISTRIB_ALG_SEL( - lag_config->la_mode_config.coll_max_delay); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_tx_cfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_active_passive_cfg); - - if (lag_config->ap_mode_config.hot_standby != - VXGE_HAL_LAG_HOT_STANDBY_DEFAULT) { - if (lag_config->ap_mode_config.hot_standby == - VXGE_HAL_LAG_HOT_STANDBY_KEEP_UP_PORT) - val64 |= VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_HOT_STANDBY; - else - val64 &= ~VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_HOT_STANDBY; - } - - if (lag_config->ap_mode_config.lacp_decides != - VXGE_HAL_LAG_LACP_DECIDES_DEFAULT) { - if (lag_config->ap_mode_config.lacp_decides == - VXGE_HAL_LAG_LACP_DECIDES_ENBALE) - val64 |= VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_LACP_DECIDES; - else - val64 &= ~VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_LACP_DECIDES; - } - - if (lag_config->ap_mode_config.pref_active_port != - VXGE_HAL_LAG_PREF_ACTIVE_PORT_DEFAULT) { - if (lag_config->ap_mode_config.pref_active_port == - VXGE_HAL_LAG_PREF_ACTIVE_PORT_1) - val64 |= - VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_PREF_ACTIVE_PORT_NUM; - else - val64 &= - ~VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_PREF_ACTIVE_PORT_NUM; - } - - if (lag_config->ap_mode_config.auto_failback != - VXGE_HAL_LAG_AUTO_FAILBACK_DEFAULT) { - if (lag_config->ap_mode_config.auto_failback == - VXGE_HAL_LAG_AUTO_FAILBACK_ENBALE) - val64 |= VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_AUTO_FAILBACK; - else - val64 &= ~VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_AUTO_FAILBACK; - } - - if (lag_config->ap_mode_config.failback_en != - VXGE_HAL_LAG_FAILBACK_EN_DEFAULT) { - if (lag_config->ap_mode_config.failback_en == - VXGE_HAL_LAG_FAILBACK_EN_ENBALE) - val64 |= VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_FAILBACK_EN; - else - val64 &= ~VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_FAILBACK_EN; - } - - if (lag_config->ap_mode_config.cold_failover_timeout != - VXGE_HAL_LAG_DEF_COLD_FAILOVER_TIMEOUT) { - val64 &= ~VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_COLD_FAILOVER_TIMEOUT( - 0xffff); - val64 |= VXGE_HAL_LAG_ACTIVE_PASSIVE_CFG_COLD_FAILOVER_TIMEOUT( - lag_config->ap_mode_config.cold_failover_timeout); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_active_passive_cfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_lacp_cfg); - - if (lag_config->lacp_config.lacp_en != - VXGE_HAL_LAG_LACP_EN_DEFAULT) { - if (lag_config->lacp_config.lacp_en == - VXGE_HAL_LAG_LACP_EN_ENABLE) - val64 |= VXGE_HAL_LAG_LACP_CFG_EN; - else - val64 &= ~VXGE_HAL_LAG_LACP_CFG_EN; - } - - if (lag_config->lacp_config.lacp_begin != - VXGE_HAL_LAG_LACP_BEGIN_DEFAULT) { - if (lag_config->lacp_config.lacp_begin == - VXGE_HAL_LAG_LACP_BEGIN_RESET) - val64 |= VXGE_HAL_LAG_LACP_CFG_LACP_BEGIN; - else - val64 &= ~VXGE_HAL_LAG_LACP_CFG_LACP_BEGIN; - } - - if (lag_config->lacp_config.discard_lacp != - VXGE_HAL_LAG_DISCARD_LACP_DEFAULT) { - if (lag_config->lacp_config.discard_lacp == - VXGE_HAL_LAG_DISCARD_LACP_ENABLE) - val64 |= VXGE_HAL_LAG_LACP_CFG_DISCARD_LACP; - else - val64 &= ~VXGE_HAL_LAG_LACP_CFG_DISCARD_LACP; - } - - if (lag_config->lacp_config.liberal_len_chk != - VXGE_HAL_LAG_LIBERAL_LEN_CHK_DEFAULT) { - if (lag_config->lacp_config.liberal_len_chk == - VXGE_HAL_LAG_LIBERAL_LEN_CHK_ENABLE) - val64 |= VXGE_HAL_LAG_LACP_CFG_LIBERAL_LEN_CHK; - else - val64 &= ~VXGE_HAL_LAG_LACP_CFG_LIBERAL_LEN_CHK; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_lacp_cfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_marker_cfg); - - if (lag_config->lacp_config.marker_gen_recv_en != - VXGE_HAL_LAG_MARKER_GEN_RECV_EN_DEFAULT) { - if (lag_config->lacp_config.marker_gen_recv_en == - VXGE_HAL_LAG_MARKER_GEN_RECV_EN_ENABLE) - val64 |= VXGE_HAL_LAG_MARKER_CFG_GEN_RCVR_EN; - else - val64 &= ~VXGE_HAL_LAG_MARKER_CFG_GEN_RCVR_EN; - } - - if (lag_config->lacp_config.marker_resp_en != - VXGE_HAL_LAG_MARKER_RESP_EN_DEFAULT) { - if (lag_config->lacp_config.marker_resp_en == - VXGE_HAL_LAG_MARKER_RESP_EN_ENABLE) - val64 |= VXGE_HAL_LAG_MARKER_CFG_RESP_EN; - else - val64 &= ~VXGE_HAL_LAG_MARKER_CFG_RESP_EN; - } - - if (lag_config->lacp_config.marker_resp_timeout != - VXGE_HAL_LAG_DEF_MARKER_RESP_TIMEOUT) { - val64 &= ~VXGE_HAL_LAG_MARKER_CFG_RESP_TIMEOUT(0xffff); - val64 |= VXGE_HAL_LAG_MARKER_CFG_RESP_TIMEOUT( - lag_config->lacp_config.marker_resp_timeout); - } - - if (lag_config->lacp_config.slow_proto_mrkr_min_interval != - VXGE_HAL_LAG_DEF_SLOW_PROTO_MRKR_MIN_INTERVAL) { - val64 &= ~VXGE_HAL_LAG_MARKER_CFG_SLOW_PROTO_MRKR_MIN_INTERVAL( - 0xffff); - val64 |= VXGE_HAL_LAG_MARKER_CFG_SLOW_PROTO_MRKR_MIN_INTERVAL( - lag_config->lacp_config.slow_proto_mrkr_min_interval); - } - - if (lag_config->lacp_config.throttle_mrkr_resp != - VXGE_HAL_LAG_THROTTLE_MRKR_RESP_DEFAULT) { - if (lag_config->lacp_config.throttle_mrkr_resp == - VXGE_HAL_LAG_THROTTLE_MRKR_RESP_ENABLE) - val64 |= VXGE_HAL_LAG_MARKER_CFG_THROTTLE_MRKR_RESP; - else - val64 &= ~VXGE_HAL_LAG_MARKER_CFG_THROTTLE_MRKR_RESP; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_marker_cfg); - - for (i = 0; i < VXGE_HAL_LAG_PORT_MAX_PORTS; i++) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_port_cfg[i]); - - if (lag_config->port_config[i].lag_en != - VXGE_HAL_LAG_PORT_LAG_EN_DEFAULT) { - if (lag_config->port_config[i].lag_en == - VXGE_HAL_LAG_PORT_LAG_EN_ENABLE) - val64 |= VXGE_HAL_LAG_PORT_CFG_EN; - else - val64 &= ~VXGE_HAL_LAG_PORT_CFG_EN; - } - - if (lag_config->port_config[i].discard_slow_proto != - VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_DEFAULT) { - if (lag_config->port_config[i].discard_slow_proto == - VXGE_HAL_LAG_PORT_DISCARD_SLOW_PROTO_ENABLE) - val64 |= - VXGE_HAL_LAG_PORT_CFG_DISCARD_SLOW_PROTO; - else - val64 &= - ~VXGE_HAL_LAG_PORT_CFG_DISCARD_SLOW_PROTO; - } - - if (lag_config->port_config[i].host_chosen_aggr != - VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_DEFAULT) { - if (lag_config->port_config[i].host_chosen_aggr == - VXGE_HAL_LAG_PORT_HOST_CHOSEN_AGGR_1) - val64 |= - VXGE_HAL_LAG_PORT_CFG_HOST_CHOSEN_AGGR; - else - val64 &= - ~VXGE_HAL_LAG_PORT_CFG_HOST_CHOSEN_AGGR; - } - - if (lag_config->port_config[i].discard_unknown_slow_proto != - VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_DEFAULT) { - if (lag_config->port_config[i].discard_unknown_slow_proto == - VXGE_HAL_LAG_PORT_DISCARD_UNKNOWN_SLOW_PROTO_ENABLE) - val64 |= - VXGE_HAL_LAG_PORT_CFG_DISCARD_UNKNOWN_SLOW_PROTO; - else - val64 &= - ~VXGE_HAL_LAG_PORT_CFG_DISCARD_UNKNOWN_SLOW_PROTO; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_port_cfg[i]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_port_actor_admin_cfg[i]); - - if (lag_config->port_config[i].actor_port_num != - VXGE_HAL_LAG_PORT_DEF_ACTOR_PORT_NUM) { - val64 &= ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_PORT_NUM( - 0xffff); - val64 |= VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_PORT_NUM( - lag_config->port_config[i].actor_port_num); - } - - if (lag_config->port_config[i].actor_port_priority != - VXGE_HAL_LAG_PORT_DEF_ACTOR_PORT_PRIORITY) { - val64 &= ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_PORT_PRI( - 0xffff); - val64 |= VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_PORT_PRI( - lag_config->port_config[i].actor_port_priority); - } - - if (lag_config->port_config[i].actor_key_10g != - VXGE_HAL_LAG_PORT_DEF_ACTOR_KEY_10G) { - val64 &= ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_KEY_10G( - 0xffff); - val64 |= VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_KEY_10G( - lag_config->port_config[i].actor_key_10g); - } - - if (lag_config->port_config[i].actor_key_1g != - VXGE_HAL_LAG_PORT_DEF_ACTOR_KEY_1G) { - val64 &= ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_KEY_1G( - 0xffff); - val64 |= VXGE_HAL_LAG_PORT_ACTOR_ADMIN_CFG_KEY_1G( - lag_config->port_config[i].actor_key_1g); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_port_actor_admin_cfg[i]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_port_actor_admin_state[i]); - - if (lag_config->port_config[i].actor_lacp_activity != - VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_DEFAULT) { - if (lag_config->port_config[i].actor_lacp_activity == - VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_ACTIVE) - val64 |= - VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_LACP_ACTIVITY; - else - val64 &= - ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_LACP_ACTIVITY; - } - - if (lag_config->port_config[i].actor_lacp_timeout != - VXGE_HAL_LAG_PORT_ACTOR_LACP_ACTIVITY_DEFAULT) { - if (lag_config->port_config[i].actor_lacp_timeout == - VXGE_HAL_LAG_PORT_ACTOR_LACP_TIMEOUT_SHORT) - val64 |= - VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_LACP_TIMEOUT; - else - val64 &= - ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_LACP_TIMEOUT; - } - - if (lag_config->port_config[i].actor_aggregation != - VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_DEFAULT) { - if (lag_config->port_config[i].actor_aggregation == - VXGE_HAL_LAG_PORT_ACTOR_AGGREGATION_AGGREGATEABLE) - val64 |= - VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_AGGREGATION; - else - val64 &= - ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_AGGREGATION; - } - - if (lag_config->port_config[i].actor_synchronization != - VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_DEFAULT) { - if (lag_config->port_config[i].actor_aggregation == - VXGE_HAL_LAG_PORT_ACTOR_SYNCHRONIZATION_IN_SYNC) - val64 |= VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_SYNCHRONIZATION; - else - val64 &= ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_SYNCHRONIZATION; - } - - if (lag_config->port_config[i].actor_collecting != - VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_DEFAULT) { - if (lag_config->port_config[i].actor_collecting == - VXGE_HAL_LAG_PORT_ACTOR_COLLECTING_ENABLE) - val64 |= - VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_COLLECTING; - else - val64 &= - ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_COLLECTING; - } - - if (lag_config->port_config[i].actor_distributing != - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_DEFAULT) { - if (lag_config->port_config[i].actor_distributing == - VXGE_HAL_LAG_PORT_ACTOR_DISTRIBUTING_ENABLE) - val64 |= - VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_DISTRIBUTING; - else - val64 &= - ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_DISTRIBUTING; - } - - if (lag_config->port_config[i].actor_defaulted != - VXGE_HAL_LAG_PORT_ACTOR_DEFAULTED_DEFAULT) { - if (lag_config->port_config[i].actor_defaulted == - VXGE_HAL_LAG_PORT_ACTOR_NOT_DEFAULTED) - val64 |= VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_DEFAULTED; - else - val64 &= ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_DEFAULTED; - } - - if (lag_config->port_config[i].actor_expired != - VXGE_HAL_LAG_PORT_ACTOR_EXPIRED_DEFAULT) { - if (lag_config->port_config[i].actor_expired == - VXGE_HAL_LAG_PORT_ACTOR_NOT_EXPIRED) - val64 |= VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_EXPIRED; - else - val64 &= ~VXGE_HAL_LAG_PORT_ACTOR_ADMIN_STATE_EXPIRED; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_port_actor_admin_state[i]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_port_partner_admin_cfg[i]); - - if (lag_config->port_config[i].partner_sys_pri != - VXGE_HAL_LAG_PORT_DEF_PARTNER_SYS_PRI) { - val64 &= ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_SYS_PRI( - 0xffff); - val64 |= VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_SYS_PRI( - lag_config->port_config[i].partner_sys_pri); - } - - if (lag_config->port_config[i].partner_key != - VXGE_HAL_LAG_PORT_DEF_PARTNER_KEY) { - val64 &= ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_KEY( - 0xffff); - val64 |= VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_KEY( - lag_config->port_config[i].partner_key); - } - - if (lag_config->port_config[i].partner_port_num != - VXGE_HAL_LAG_PORT_DEF_PARTNER_PORT_NUM) { - val64 &= ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_PORT_NUM( - 0xffff); - val64 |= VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_PORT_NUM( - lag_config->port_config[i].partner_port_num); - } - - if (lag_config->port_config[i].partner_port_priority != - VXGE_HAL_LAG_PORT_DEF_PARTNER_PORT_PRIORITY) { - val64 &= ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_PORT_PRI( - 0xffff); - val64 |= VXGE_HAL_LAG_PORT_PARTNER_ADMIN_CFG_PORT_PRI( - lag_config->port_config[i].actor_port_priority); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_port_partner_admin_cfg[i]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_port_partner_admin_state[i]); - - if (lag_config->port_config[i].partner_lacp_activity != - VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_DEFAULT) { - if (lag_config->port_config[i].partner_lacp_activity == - VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_ACTIVE) - val64 |= VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_LACP_ACTIVITY; - else - val64 &= ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_LACP_ACTIVITY; - } - - if (lag_config->port_config[i].partner_lacp_timeout != - VXGE_HAL_LAG_PORT_PARTNER_LACP_ACTIVITY_DEFAULT) { - if (lag_config->port_config[i].partner_lacp_timeout == - VXGE_HAL_LAG_PORT_PARTNER_LACP_TIMEOUT_SHORT) - val64 |= - VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_LACP_TIMEOUT; - else - val64 &= - ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_LACP_TIMEOUT; - } - - if (lag_config->port_config[i].partner_aggregation != - VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_DEFAULT) { - if (lag_config->port_config[i].partner_aggregation == - VXGE_HAL_LAG_PORT_PARTNER_AGGREGATION_AGGREGATEABLE) - val64 |= - VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_AGGREGATION; - else - val64 &= - ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_AGGREGATION; - } - - if (lag_config->port_config[i].partner_synchronization != - VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_DEFAULT) { - if (lag_config->port_config[i].partner_aggregation == - VXGE_HAL_LAG_PORT_PARTNER_SYNCHRONIZATION_IN_SYNC) - val64 |= VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_SYNCHRONIZATION; - else - val64 &= ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_SYNCHRONIZATION; - } - - if (lag_config->port_config[i].partner_collecting != - VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_DEFAULT) { - if (lag_config->port_config[i].partner_collecting == - VXGE_HAL_LAG_PORT_PARTNER_COLLECTING_ENABLE) - val64 |= - VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_COLLECTING; - else - val64 &= - ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_COLLECTING; - } - - if (lag_config->port_config[i].partner_distributing != - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_DEFAULT) { - if (lag_config->port_config[i].partner_distributing == - VXGE_HAL_LAG_PORT_PARTNER_DISTRIBUTING_ENABLE) - val64 |= - VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_DISTRIBUTING; - else - val64 &= - ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_DISTRIBUTING; - } - - if (lag_config->port_config[i].partner_defaulted != - VXGE_HAL_LAG_PORT_PARTNER_DEFAULTED_DEFAULT) { - if (lag_config->port_config[i].partner_defaulted == - VXGE_HAL_LAG_PORT_PARTNER_NOT_DEFAULTED) - val64 |= - VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_DEFAULTED; - else - val64 &= - ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_DEFAULTED; - } - - if (lag_config->port_config[i].partner_expired != - VXGE_HAL_LAG_PORT_PARTNER_EXPIRED_DEFAULT) { - if (lag_config->port_config[i].partner_expired == - VXGE_HAL_LAG_PORT_PARTNER_NOT_EXPIRED) - val64 |= VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_EXPIRED; - else - val64 &= ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_STATE_EXPIRED; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_port_partner_admin_state[i]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_port_partner_admin_sys_id[i]); - - mac_addr = 0; - - for (j = 0; j < VXGE_HAL_ETH_ALEN; j++) { - mac_addr <<= 8; - mac_addr |= - (u8) lag_config->port_config[i].partner_mac_addr[j]; - } - - if (mac_addr != 0xffffffffffffULL) { - val64 &= ~VXGE_HAL_LAG_PORT_PARTNER_ADMIN_SYS_ID_ADDR( - 0xffffffffffffULL); - val64 |= VXGE_HAL_LAG_PORT_PARTNER_ADMIN_SYS_ID_ADDR( - mac_addr); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_port_partner_admin_sys_id[i]); - - } - - for (i = 0; i < VXGE_HAL_LAG_AGGR_MAX_PORTS; i++) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_aggr_id_cfg[i]); - - val64 &= ~VXGE_HAL_LAG_AGGR_ID_CFG_ID(0xffff); - val64 |= VXGE_HAL_LAG_AGGR_ID_CFG_ID( - lag_config->aggr_config[i].aggr_id); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_aggr_id_cfg[i]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_aggr_addr_cfg[i]); - - mac_addr = 0; - - for (j = 0; j < VXGE_HAL_ETH_ALEN; j++) { - mac_addr <<= 8; - mac_addr |= (u8) lag_config->aggr_config[i].mac_addr[j]; - } - - if (mac_addr != 0xffffffffffffULL) { - val64 &= - ~VXGE_HAL_LAG_AGGR_ADDR_CFG_ADDR(0xffffffffffffULL); - val64 |= VXGE_HAL_LAG_AGGR_ADDR_CFG_ADDR(mac_addr); - } - - if (lag_config->aggr_config[i].use_port_mac_addr != - VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_DEFAULT) { - if (lag_config->aggr_config[i].use_port_mac_addr == - VXGE_HAL_LAG_AGGR_USE_PORT_MAC_ADDR_ENABLE) - val64 |= - VXGE_HAL_LAG_AGGR_ADDR_CFG_USE_PORT_ADDR; - else - val64 &= - ~VXGE_HAL_LAG_AGGR_ADDR_CFG_USE_PORT_ADDR; - } - - if (lag_config->aggr_config[i].mac_addr_sel != - VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_DEFAULT) { - if (lag_config->aggr_config[i].mac_addr_sel == - VXGE_HAL_LAG_AGGR_MAC_ADDR_SEL_PORT_1) - val64 |= VXGE_HAL_LAG_AGGR_ADDR_CFG_ADDR_SEL; - else - val64 &= ~VXGE_HAL_LAG_AGGR_ADDR_CFG_ADDR_SEL; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_aggr_addr_cfg[i]); - - if (lag_config->aggr_config[i].admin_key == - VXGE_HAL_LAG_AGGR_DEF_ADMIN_KEY) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_aggr_admin_key[i]); - - val64 &= ~VXGE_HAL_LAG_AGGR_ADMIN_KEY_KEY(0xffff); - val64 |= VXGE_HAL_LAG_AGGR_ADMIN_KEY_KEY( - lag_config->aggr_config[i].admin_key); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_aggr_admin_key[i]); - } - } - - if (lag_config->sys_pri != VXGE_HAL_LAG_DEF_SYS_PRI) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_sys_cfg); - - val64 &= ~VXGE_HAL_LAG_SYS_CFG_SYS_PRI(0xffff); - val64 |= VXGE_HAL_LAG_SYS_CFG_SYS_PRI( - lag_config->sys_pri); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_sys_cfg); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_sys_id); - - mac_addr = 0; - - for (j = 0; j < VXGE_HAL_ETH_ALEN; j++) { - mac_addr <<= 8; - mac_addr |= (u8) lag_config->mac_addr[j]; - } - - if (mac_addr != 0xffffffffffffULL) { - val64 &= ~VXGE_HAL_LAG_SYS_ID_ADDR(0xffffffffffffULL); - val64 |= VXGE_HAL_LAG_SYS_ID_ADDR(mac_addr); - } - - if (lag_config->use_port_mac_addr != - VXGE_HAL_LAG_USE_PORT_MAC_ADDR_DEFAULT) { - if (lag_config->use_port_mac_addr == - VXGE_HAL_LAG_USE_PORT_MAC_ADDR_ENABLE) - val64 |= VXGE_HAL_LAG_SYS_ID_USE_PORT_ADDR; - else - val64 &= ~VXGE_HAL_LAG_SYS_ID_USE_PORT_ADDR; - } - - if (lag_config->mac_addr_sel != VXGE_HAL_LAG_MAC_ADDR_SEL_DEFAULT) { - if (lag_config->mac_addr_sel == - VXGE_HAL_LAG_MAC_ADDR_SEL_PORT_1) - val64 |= VXGE_HAL_LAG_SYS_ID_ADDR_SEL; - else - val64 &= ~VXGE_HAL_LAG_SYS_ID_ADDR_SEL; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_sys_id); - - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_aggr_alt_admin_key); - - if (lag_config->ap_mode_config.alt_admin_key != - VXGE_HAL_LAG_DEF_ALT_ADMIN_KEY) { - val64 &= ~VXGE_HAL_LAG_AGGR_ALT_ADMIN_KEY_KEY(0xffff); - val64 |= VXGE_HAL_LAG_AGGR_ALT_ADMIN_KEY_KEY( - lag_config->ap_mode_config.alt_admin_key); - } - - if (lag_config->ap_mode_config.alt_aggr != - VXGE_HAL_LAG_ALT_AGGR_DEFAULT) { - if (lag_config->ap_mode_config.alt_aggr == - VXGE_HAL_LAG_ALT_AGGR_1) - val64 |= VXGE_HAL_LAG_AGGR_ALT_ADMIN_KEY_ALT_AGGR; - else - val64 &= ~VXGE_HAL_LAG_AGGR_ALT_ADMIN_KEY_ALT_AGGR; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_aggr_alt_admin_key); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_timer_cfg_1); - - if (lag_config->fast_per_time != VXGE_HAL_LAG_DEF_FAST_PER_TIME) { - val64 &= ~VXGE_HAL_LAG_TIMER_CFG_1_FAST_PER(0xffff); - val64 |= VXGE_HAL_LAG_TIMER_CFG_1_FAST_PER( - lag_config->fast_per_time); - } - - if (lag_config->slow_per_time != VXGE_HAL_LAG_DEF_SLOW_PER_TIME) { - val64 &= ~VXGE_HAL_LAG_TIMER_CFG_1_SLOW_PER(0xffff); - val64 |= VXGE_HAL_LAG_TIMER_CFG_1_SLOW_PER( - lag_config->slow_per_time); - } - - if (lag_config->short_timeout != VXGE_HAL_LAG_DEF_SHORT_TIMEOUT) { - val64 &= ~VXGE_HAL_LAG_TIMER_CFG_1_SHORT_TIMEOUT(0xffff); - val64 |= VXGE_HAL_LAG_TIMER_CFG_1_SHORT_TIMEOUT( - lag_config->short_timeout); - } - - if (lag_config->long_timeout != VXGE_HAL_LAG_DEF_LONG_TIMEOUT) { - val64 &= ~VXGE_HAL_LAG_TIMER_CFG_1_LONG_TIMEOUT(0xffff); - val64 |= VXGE_HAL_LAG_TIMER_CFG_1_LONG_TIMEOUT( - lag_config->short_timeout); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_timer_cfg_1); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->lag_timer_cfg_2); - - if (lag_config->churn_det_time != VXGE_HAL_LAG_DEF_CHURN_DET_TIME) { - val64 &= ~VXGE_HAL_LAG_TIMER_CFG_2_CHURN_DET(0xffff); - val64 |= VXGE_HAL_LAG_TIMER_CFG_2_CHURN_DET( - lag_config->churn_det_time); - } - - if (lag_config->aggr_wait_time != VXGE_HAL_LAG_DEF_AGGR_WAIT_TIME) { - val64 &= ~VXGE_HAL_LAG_TIMER_CFG_2_AGGR_WAIT(0xffff); - val64 |= VXGE_HAL_LAG_TIMER_CFG_2_AGGR_WAIT( - lag_config->slow_per_time); - } - - if (lag_config->short_timer_scale != - VXGE_HAL_LAG_SHORT_TIMER_SCALE_DEFAULT) { - val64 &= ~VXGE_HAL_LAG_TIMER_CFG_2_SHORT_TIMER_SCALE(0xffff); - val64 |= VXGE_HAL_LAG_TIMER_CFG_2_SHORT_TIMER_SCALE( - lag_config->short_timer_scale); - } - - if (lag_config->long_timer_scale != - VXGE_HAL_LAG_LONG_TIMER_SCALE_DEFAULT) { - val64 &= ~VXGE_HAL_LAG_TIMER_CFG_2_LONG_TIMER_SCALE(0xffff); - val64 |= VXGE_HAL_LAG_TIMER_CFG_2_LONG_TIMER_SCALE( - lag_config->long_timer_scale); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->lag_timer_cfg_2); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - -} - -/* - * __hal_mrpcim_get_vpd_data - Getting vpd_data. - * - * @hldev: HAL device handle. - * - * Getting product name and serial number from vpd capabilites structure - * - */ -void -__hal_mrpcim_get_vpd_data(__hal_device_t *hldev) -{ - u8 *vpd_data; - u16 data; - u32 data32; - u32 i, j, count, fail = 0; - u32 addr_offset, data_offset; - u32 max_count = hldev->header.config.device_poll_millis * 10; - - vxge_assert(hldev); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - addr_offset = hldev->pci_caps.vpd_cap_offset + - vxge_offsetof(vxge_hal_vpid_capability_le_t, vpd_address); - - data_offset = hldev->pci_caps.vpd_cap_offset + - vxge_offsetof(vxge_hal_vpid_capability_le_t, vpd_data); - - vxge_os_strlcpy((char *) hldev->mrpcim->vpd_data.product_name, - "10 Gigabit Ethernet Adapter", - sizeof(hldev->mrpcim->vpd_data.product_name)); - vxge_os_strlcpy((char *) hldev->mrpcim->vpd_data.serial_num, - "not available", - sizeof(hldev->mrpcim->vpd_data.serial_num)); - - if (hldev->func_id != 0) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return; - } - vpd_data = (u8 *) vxge_os_malloc(hldev->header.pdev, - VXGE_HAL_VPD_BUFFER_SIZE + 16); - if (vpd_data == NULL) - return; - - for (i = 0; i < VXGE_HAL_VPD_BUFFER_SIZE; i += 4) { - vxge_os_pci_write16(hldev->header.pdev, - hldev->header.cfgh, - addr_offset, (u16) i); - for (count = 0; count < max_count; count++) { - vxge_os_udelay(100); - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - addr_offset, 2, &data); - if (data & VXGE_HAL_PCI_VPID_COMPL_FALG) - break; - } - - if (count >= max_count) { - vxge_hal_info_log_device("%s:ERR, \ - Reading VPD data failed", __func__); - fail = 1; - break; - } - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - data_offset, - 4, - &data32); - - for (j = 0; j < 4; j++) { - vpd_data[i + j] = (u8) (data32 & 0xff); - data32 >>= 8; - } - } - - if (!fail) { - - /* read serial number of adapter */ - for (count = 0; count < VXGE_HAL_VPD_BUFFER_SIZE; count++) { - if ((vpd_data[count] == 'S') && - (vpd_data[count + 1] == 'N') && - (vpd_data[count + 2] < VXGE_HAL_VPD_LENGTH)) { - vxge_os_memzero( - hldev->mrpcim->vpd_data.serial_num, - VXGE_HAL_VPD_LENGTH); - vxge_os_memcpy( - hldev->mrpcim->vpd_data.serial_num, - &vpd_data[count + 3], - vpd_data[count + 2]); - break; - } - } - - if (vpd_data[1] < VXGE_HAL_VPD_LENGTH) { - vxge_os_memzero( - hldev->mrpcim->vpd_data.product_name, vpd_data[1]); - vxge_os_memcpy(hldev->mrpcim->vpd_data.product_name, - &vpd_data[3], vpd_data[1]); - } - } - - vxge_os_free(hldev->header.pdev, - vpd_data, - VXGE_HAL_VPD_BUFFER_SIZE + 16); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, fail); -} - -/* - * __hal_mrpcim_rts_table_access - Get/Set the entries from RTS access tables - * @devh: Device handle. - * @action: Write Enable. 0 - Read Operation; 1 - Write Operation - * @rts_table: Data structure select. Identifies the RTS data structure - * (i.e. lookup table) to access. - * 0; DA; Destination Address - * 1; VID; VLAN ID - * 2; ETYPE; Ethertype - * 3; PN; Layer 4 Port Number - * 4; RANGE_PN; Range of Layer 4 Port Numbers - * 5; RTH_GEN_CFG; Receive-Traffic Hashing General Configuration - * 6; RTH_SOLO_IT; Receive-Traffic Hashing Indirection Table - * (Single Bucket Programming) - * 7; RTH_JHASH_CFG; Receive-Traffic Hashing Jenkins Hash Config - * 8; RTH_MASK; Receive-Traffic Hashing Mask - * 9; RTH_KEY; Receive-Traffic Hashing Key - * 10; QOS; VLAN Quality of Service - * 11; DS; IP Differentiated Services - * @offset: Offset (into the data structure) to execute the command on. - * @data1: Pointer to the data 1 to be read from the table - * @data2: Pointer to the data 2 to be read from the table - * @vpath_vector: Identifies the candidate VPATH(s) for the given entry. - * These VPATH(s) determine the set of target destinations for - * a frame that matches this steering entry. Any or all bits - * can be set, which handles 16+1 virtual paths in an 'n-hot' - * basis. VPATH 0 is the MSbit. - * - * Read from the RTS table - * - */ -vxge_hal_status_e -__hal_mrpcim_rts_table_access( - vxge_hal_device_h devh, - u32 action, - u32 rts_table, - u32 offset, - u64 *data1, - u64 *data2, - u64 *vpath_vector) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((devh != NULL) && (data1 != NULL) && - (data2 != NULL) && (vpath_vector != NULL)); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", action = %d, rts_table = %d, " - "offset = %d, data1 = 0x"VXGE_OS_STXFMT", " - "data2 = 0x"VXGE_OS_STXFMT", vpath_vector = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, action, rts_table, offset, (ptr_t) data1, - (ptr_t) data2, (ptr_t) vpath_vector); - - val64 = VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL(rts_table) | - VXGE_HAL_RTS_MGR_STEER_CTRL_STROBE | - VXGE_HAL_RTS_MGR_STEER_CTRL_OFFSET(offset); - - if (action == VXGE_HAL_RTS_MGR_STEER_CTRL_WE_WRITE) - val64 = VXGE_HAL_RTS_MGR_STEER_CTRL_WE; - - if ((rts_table == - VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_SOLO_IT) || - (rts_table == - VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT) || - (rts_table == - VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_MASK) || - (rts_table == - VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_KEY)) { - val64 |= VXGE_HAL_RTS_MGR_STEER_CTRL_TABLE_SEL; - } - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &hldev->mrpcim_reg->rts_mgr_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->mrpcim_reg->rts_mgr_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll( - hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rts_mgr_steer_ctrl, 0, - VXGE_HAL_RTS_MGR_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rts_mgr_steer_ctrl); - - if ((val64 & VXGE_HAL_RTS_MGR_STEER_CTRL_RMACJ_STATUS) && - (action == VXGE_HAL_RTS_MGR_STEER_CTRL_WE_READ)) { - - *data1 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rts_mgr_steer_data0); - - *data2 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rts_mgr_steer_data1); - - *vpath_vector = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rts_mgr_steer_vpath_vector); - - status = VXGE_HAL_OK; - - } else { - status = VXGE_HAL_FAIL; - } - - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - return (status); -} - -/* - * vxge_hal_mrpcim_mac_addr_add - Add the mac address entry - * into MAC address table. - * @devh: Device handle. - * @offset: Index into the DA table to add the mac address. - * @macaddr: MAC address to be added for this vpath into the list - * @macaddr_mask: MAC address mask for macaddr - * @vpath_vector: Bit mask specifying the vpaths to which - * the mac address applies - * @duplicate_mode: Duplicate MAC address add mode. Please see - * vxge_hal_vpath_mac_addr_add_mode_e {} - * - * Adds the given mac address, mac address mask and vpath vector into the list - * - * see also: vxge_hal_mrpcim_mac_addr_get - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_mac_addr_add( - vxge_hal_device_h devh, - u32 offset, - macaddr_t macaddr, - macaddr_t macaddr_mask, - u64 vpath_vector, - u32 duplicate_mode) -{ - u32 i; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", offset = %d, " - "macaddr = %02x-%02x-%02x-%02x-%02x-%02x, " - "macaddr_mask = %02x-%02x-%02x-%02x-%02x-%02x, " - "vpath_vector = 0x"VXGE_OS_LLXFMT, - (ptr_t) devh, offset, macaddr[0], macaddr[1], macaddr[2], - macaddr[3], macaddr[4], macaddr[5], macaddr_mask[0], - macaddr_mask[1], macaddr_mask[2], macaddr_mask[3], - macaddr_mask[4], macaddr_mask[5], vpath_vector); - - for (i = 0; i < VXGE_HAL_ETH_ALEN; i++) { - data1 <<= 8; - data1 |= (u8) macaddr[i]; - } - - data1 = VXGE_HAL_RTS_MGR_STEER_DATA0_DA_MAC_ADDR(data1); - - for (i = 0; i < VXGE_HAL_ETH_ALEN; i++) { - data2 <<= 8; - data2 |= (u8) macaddr_mask[i]; - } - - switch (duplicate_mode) { - case VXGE_HAL_VPATH_MAC_ADDR_ADD_DUPLICATE: - i = 0; - break; - case VXGE_HAL_VPATH_MAC_ADDR_DISCARD_DUPLICATE: - i = 1; - break; - case VXGE_HAL_VPATH_MAC_ADDR_REPLACE_DUPLICATE: - i = 2; - break; - default: - i = 0; - break; - } - - data2 = VXGE_HAL_RTS_MGR_STEER_DATA1_DA_MAC_ADDR_MASK(data2) | - VXGE_HAL_RTS_MGR_STEER_DATA1_DA_MAC_ADDR_MODE(i); - - status = __hal_mrpcim_rts_table_access(devh, - VXGE_HAL_RTS_MGR_STEER_CTRL_WE_WRITE, - VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_DA, - offset, - &data1, - &data2, - &vpath_vector); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_mrpcim_mac_addr_get - Read the mac address entry into - * MAC address table. - * @devh: Device handle. - * @offset: Index into the DA table to execute the command on. - * @macaddr: Buffer to return MAC address to be added for this vpath - * into the list - * @macaddr_mask: Buffer to return MAC address mask for macaddr - * @vpath_vector: Buffer to return Bit mask specifying the vpaths - * to which the mac address applies - * - * Reads the mac address, mac address mask and vpath vector from - * the given offset - * - * see also: vxge_hal_mrpcim_mac_addr_add - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_mac_addr_get( - vxge_hal_device_h devh, - u32 offset, - macaddr_t macaddr, - macaddr_t macaddr_mask, - u64 *vpath_vector) -{ - u32 i; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - status = __hal_mrpcim_rts_table_access(devh, - VXGE_HAL_RTS_MGR_STEER_CTRL_WE_WRITE, - VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_DA, - offset, - &data1, - &data2, - vpath_vector); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - data1 = VXGE_HAL_RTS_MGR_STEER_DATA0_GET_DA_MAC_ADDR(data1); - - data2 = VXGE_HAL_RTS_MGR_STEER_DATA1_GET_DA_MAC_ADDR_MASK(data2); - - for (i = VXGE_HAL_ETH_ALEN; i > 0; i--) { - macaddr[i - 1] = (u8) (data1 & 0xFF); - data1 >>= 8; - } - - for (i = VXGE_HAL_ETH_ALEN; i > 0; i--) { - macaddr_mask[i - 1] = (u8) (data2 & 0xFF); - data2 >>= 8; - } - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_mrpcim_strip_repl_vlan_tag_enable - Enable strip Repl vlan tag. - * @devh: Device handle. - * - * Enable X3100 strip Repl vlan tag. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_strip_repl_vlan_tag_enable( - vxge_hal_device_h devh) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - if (hldev->header.config.mrpcim_config.mac_config. - rpa_repl_strip_vlan_tag == - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_ENABLE) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_rx_pa_cfg1); - - val64 |= VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_STRIP_VLAN_TAG; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_rx_pa_cfg1); - - hldev->header.config.mrpcim_config.mac_config.rpa_repl_strip_vlan_tag = - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_ENABLE; - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mrpcim_strip_repl_vlan_tag_disable - Disable strip Repl vlan tag. - * @devh: Device handle. - * - * Disable X3100 strip Repl vlan tag. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_strip_repl_vlan_tag_disable( - vxge_hal_device_h devh) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - if (hldev->header.config.mrpcim_config.mac_config. - rpa_repl_strip_vlan_tag == - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_DISABLE) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_rx_pa_cfg1); - - val64 &= ~VXGE_HAL_RXMAC_RX_PA_CFG1_REPL_STRIP_VLAN_TAG; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rxmac_rx_pa_cfg1); - - hldev->header.config.mrpcim_config.mac_config.rpa_repl_strip_vlan_tag = - VXGE_HAL_MAC_RPA_REPL_STRIP_VLAN_TAG_DISABLE; - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mrpcim_lag_config_get - Get the LAG config. - * @devh: Device handle. - * @lconfig: LAG Configuration - * - * Returns the current LAG configuration. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_lag_config_get( - vxge_hal_device_h devh, - vxge_hal_lag_config_t *lconfig) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", lconfig = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) lconfig); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - vxge_os_memcpy(lconfig, - &hldev->header.config.mrpcim_config.lag_config, - sizeof(vxge_hal_lag_config_t)); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mrpcim_lag_config_set - Set the LAG config. - * @devh: Device handle. - * @lconfig: LAG Configuration - * - * Sets the LAG configuration. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_mrpcim_lag_config_set( - vxge_hal_device_h devh, - vxge_hal_lag_config_t *lconfig) -{ - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", lconfig = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) lconfig); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - status = __hal_device_lag_config_check(lconfig); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vxge_os_memcpy(&hldev->header.config.mrpcim_config.lag_config, - lconfig, - sizeof(vxge_hal_lag_config_t)); - - status = __hal_mrpcim_lag_configure(hldev); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mrpcim_getpause_data -Pause frame frame generation and reception. - * @devh: HAL device handle. - * @port : Port number 0, 1, or 2 - * @tx : A field to return the pause generation capability of the NIC. - * @rx : A field to return the pause reception capability of the NIC. - * - * Returns the Pause frame generation and reception capability of the NIC. - * Return value: - * status - */ -vxge_hal_status_e -vxge_hal_mrpcim_getpause_data( - vxge_hal_device_h devh, - u32 port, - u32 *tx, - u32 *rx) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", port = %d, tx = 0x"VXGE_OS_STXFMT", " - "rx = 0x"VXGE_OS_STXFMT, (ptr_t) devh, port, (ptr_t) tx, - (ptr_t) rx); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (port >= VXGE_HAL_MAC_MAX_PORTS) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_PORT); - return (VXGE_HAL_ERR_INVALID_PORT); - } - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_pause_cfg_port[port]); - - if (val64 & VXGE_HAL_RXMAC_PAUSE_CFG_PORT_GEN_EN) - *tx = 1; - - if (val64 & VXGE_HAL_RXMAC_PAUSE_CFG_PORT_RCV_EN) - *rx = 1; - - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mrpcim_setpause_data - set/reset pause frame generation. - * @devh: HAL device handle. - * @port : Port number 0, 1, or 2 - * @tx: A field that indicates the pause generation capability to be - * set on the NIC. - * @rx: A field that indicates the pause reception capability to be - * set on the NIC. - * - * It can be used to set or reset Pause frame generation or reception - * support of the NIC. - * Return value: - * int, returns 0 on Success - */ - -vxge_hal_status_e -vxge_hal_mrpcim_setpause_data( - vxge_hal_device_h devh, - u32 port, - u32 tx, - u32 rx) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim( - "devh = 0x"VXGE_OS_STXFMT", port = %d, tx = %d, rx = %d", - (ptr_t) devh, port, tx, rx); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (port >= VXGE_HAL_MAC_MAX_PORTS) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_PORT); - return (VXGE_HAL_ERR_INVALID_PORT); - } - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, hldev->header.regh0, - &hldev->mrpcim_reg->rxmac_pause_cfg_port[port]); - if (tx) - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_GEN_EN; - else - val64 &= ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_GEN_EN; - if (rx) - val64 |= VXGE_HAL_RXMAC_PAUSE_CFG_PORT_RCV_EN; - else - val64 &= ~VXGE_HAL_RXMAC_PAUSE_CFG_PORT_RCV_EN; - - vxge_os_pio_mem_write64(hldev->header.pdev, hldev->header.regh0, - val64, &hldev->mrpcim_reg->rxmac_pause_cfg_port[port]); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_mrpcim_bist_test - invokes the MemBist test of the card . - * @devh: HAL device handle. - * vxge_nic structure. - * @data:variable that returns the result of each of the test conducted by - * the driver. - * - * This invokes the MemBist test of the card. We give around - * 2 secs time for the Test to complete. If it's still not complete - * within this peiod, we consider that the test failed. - * Return value: - * 0 on success and -1 on failure. - */ -vxge_hal_status_e -vxge_hal_mrpcim_bist_test(vxge_hal_device_h devh, u64 *data) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - u8 bist = 0; - int retry = 0; - vxge_hal_status_e status = VXGE_HAL_FAIL; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t)devh); - - if (hldev->header.magic != VXGE_HAL_DEVICE_MAGIC) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_DEVICE); - return (VXGE_HAL_ERR_INVALID_DEVICE); - } - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - vxge_offsetof(vxge_hal_pci_config_le_t, bist), - 1, - &bist); - bist |= 0x40; - vxge_os_pci_write8(hldev->header.pdev, hldev->header.cfgh, - vxge_offsetof(vxge_hal_pci_config_le_t, bist), bist); - - while (retry < 20) { - (void) __hal_vpath_pci_read(hldev, - hldev->first_vp_id, - vxge_offsetof(vxge_hal_pci_config_le_t, bist), - 1, - &bist); - if (!(bist & 0x40)) { - *data = (bist & 0x0f); - status = VXGE_HAL_OK; - break; - } - vxge_os_mdelay(100); - retry++; - } - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_mrpcim_initialize - Initialize mrpcim - * @hldev: hal device. - * - * Initializes mrpcim - * - * See also: __hal_mrpcim_terminate() - */ -vxge_hal_status_e -__hal_mrpcim_initialize(__hal_device_t *hldev) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t)hldev); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM)) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - hldev->mrpcim = (__hal_mrpcim_t *) - vxge_os_malloc(hldev->header.pdev, sizeof(__hal_mrpcim_t)); - - if (hldev->mrpcim == NULL) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - vxge_os_memzero(hldev->mrpcim, sizeof(__hal_mrpcim_t)); - - __hal_mrpcim_get_vpd_data(hldev); - - hldev->mrpcim->mrpcim_stats_block = - __hal_blockpool_block_allocate(hldev, VXGE_OS_HOST_PAGE_SIZE); - - if (hldev->mrpcim->mrpcim_stats_block == NULL) { - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - - } - - hldev->mrpcim->mrpcim_stats = (vxge_hal_mrpcim_stats_hw_info_t *) - hldev->mrpcim->mrpcim_stats_block->memblock; - - vxge_os_memzero(hldev->mrpcim->mrpcim_stats, - sizeof(vxge_hal_mrpcim_stats_hw_info_t)); - - vxge_os_memzero(&hldev->mrpcim->mrpcim_stats_sav, - sizeof(vxge_hal_mrpcim_stats_hw_info_t)); - - status = __hal_mrpcim_mac_configure(hldev); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_mrpcim_lag_configure(hldev); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mdio_gen_cfg_port[0]); - - hldev->mrpcim->mdio_phy_prtad0 = - (u32) VXGE_HAL_MDIO_GEN_CFG_PORT_GET_MDIO_PHY_PRTAD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mdio_gen_cfg_port[1]); - - hldev->mrpcim->mdio_phy_prtad1 = - (u32) VXGE_HAL_MDIO_GEN_CFG_PORT_GET_MDIO_PHY_PRTAD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xgxs_static_cfg_port[0]); - - hldev->mrpcim->mdio_dte_prtad0 = - (u32) VXGE_HAL_XGXS_STATIC_CFG_PORT_GET_MDIO_DTE_PRTAD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->xgxs_static_cfg_port[1]); - - hldev->mrpcim->mdio_dte_prtad1 = - (u32) VXGE_HAL_XGXS_STATIC_CFG_PORT_GET_MDIO_DTE_PRTAD(val64); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - hldev->mrpcim->mrpcim_stats_block->dma_addr, - &hldev->mrpcim_reg->mrpcim_stats_start_host_addr); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->mrpcim_general_cfg2); - - val64 &= ~VXGE_HAL_MRPCIM_GENERAL_CFG2_MRPCIM_STATS_MAP_TO_VPATH(0x1f); - val64 |= VXGE_HAL_MRPCIM_GENERAL_CFG2_MRPCIM_STATS_MAP_TO_VPATH( - hldev->first_vp_id); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->mrpcim_general_cfg2); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - vBIT(0xFFFFFFFFFFFFFFFFULL, 0, VXGE_HAL_MAX_VIRTUAL_PATHS), - &hldev->mrpcim_reg->rxmac_authorize_all_addr); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - vBIT(0xFFFFFFFFFFFFFFFFULL, 0, VXGE_HAL_MAX_VIRTUAL_PATHS), - &hldev->mrpcim_reg->rxmac_authorize_all_vid); - - if (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->rdcrdtarb_cfg0); - - /* Set MOST to 8 for HP-ISS platform */ - val64 &= ~VXGE_HAL_RDCRDTARB_CFG0_MAX_OUTSTANDING_RDS(0x3f); - - val64 |= VXGE_HAL_RDCRDTARB_CFG0_MAX_OUTSTANDING_RDS(8); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->mrpcim_reg->rdcrdtarb_cfg0); - } - - (void) __hal_ifmsg_wmsg_post(hldev, - hldev->first_vp_id, - VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_PRIV_DRIVER_UP, - 0); - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - -} - -/* - * __hal_mrpcim_terminate - Terminates mrpcim - * @hldev: hal device. - * - * Terminates mrpcim. - * - * See also: __hal_mrpcim_initialize() - */ -vxge_hal_status_e -__hal_mrpcim_terminate(__hal_device_t *hldev) -{ - vxge_hal_device_h devh = (vxge_hal_device_h) hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((hldev != NULL) && (hldev->mrpcim != NULL)); - - vxge_hal_trace_log_mrpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_mrpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - if (hldev->mrpcim == NULL) { - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - (void) __hal_ifmsg_wmsg_post(hldev, - hldev->first_vp_id, - VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_PRIV_DRIVER_DOWN, - 0); - - if (hldev->mrpcim->mrpcim_stats_block != NULL) { - __hal_blockpool_block_free(devh, - hldev->mrpcim->mrpcim_stats_block); - hldev->mrpcim->mrpcim_stats_block = NULL; - } - - vxge_os_free(hldev->header.pdev, - hldev->mrpcim, sizeof(__hal_mrpcim_t)); - - hldev->mrpcim = NULL; - - vxge_hal_trace_log_mrpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); -} Index: sys/dev/vxge/vxgehal/vxgehal-pcicfgmgmt-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-pcicfgmgmt-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-pcicfgmgmt-reg.h @@ -1,60 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_PCICFGMGMT_REGS_H -#define VXGE_HAL_PCICFGMGMT_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_pcicfgmgmt_reg_t { - -/* 0x00000 */ u64 resource_no; -#define VXGE_HAL_RESOURCE_NO_PFN_OR_VF BIT(3) -/* 0x00008 */ u64 bargrp_pf_or_vf_bar0_mask; -#define VXGE_HAL_BARGRP_PF_OR_VF_BAR0_MASK_BARGRP_PF_OR_VF_BAR0_MASK(val)\ - vBIT(val, 2, 6) -/* 0x00010 */ u64 bargrp_pf_or_vf_bar1_mask; -#define VXGE_HAL_BARGRP_PF_OR_VF_BAR1_MASK_BARGRP_PF_OR_VF_BAR1_MASK(val)\ - vBIT(val, 2, 6) -/* 0x00018 */ u64 bargrp_pf_or_vf_bar2_mask; -#define VXGE_HAL_BARGRP_PF_OR_VF_BAR2_MASK_BARGRP_PF_OR_VF_BAR2_MASK(val)\ - vBIT(val, 2, 6) -/* 0x00020 */ u64 msixgrp_no; -#define VXGE_HAL_MSIXGRP_NO_TABLE_SIZE(val) vBIT(val, 5, 11) - -} vxge_hal_pcicfgmgmt_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_PCICFGMGMT_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-regdefs.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-regdefs.h +++ sys/dev/vxge/vxgehal/vxgehal-regdefs.h @@ -1,782 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_REGDEFS_H -#define VXGE_HAL_REGDEFS_H - -__EXTERN_BEGIN_DECLS - -#define VXGE_HAL_TITAN_ASIC_ID_GET_INITIAL_DEVICE_ID(bits) bVAL16(bits, 0) -#define VXGE_HAL_TITAN_ASIC_ID_GET_INITIAL_MAJOR_REVISION(bits) bVAL8(bits, 48) -#define VXGE_HAL_TITAN_ASIC_ID_GET_INITIAL_MINOR_REVISION(bits) bVAL8(bits, 56) - -#define VXGE_HAL_VPD_LEN 80 -#define VXGE_HAL_CARD_TITAN_VPD_ADDR 0x80 -#define VPD_READ_COMPLETE 0x80 - -#define VXGE_HAL_VPATH_TO_FUNC_MAP_CFG1_GET_CFG1(bits) bVAL5(bits, 3) - -#define VXGE_HAL_DEBUG_ASSIGNMENTS_GET_VHLABEL(bits) bVAL5(bits, 3) -#define VXGE_HAL_DEBUG_ASSIGNMENTS_GET_VPLANE(bits) bVAL5(bits, 11) -#define VXGE_HAL_DEBUG_ASSIGNMENTS_GET_FUNC(bits) bVAL5(bits, 19) - -#define VXGE_HAL_HOST_TYPE_ASSIGNMENTS_GET_HOST_TYPE_ASSIGNMENTS(bits)\ - bVAL3(bits, 5) -#define VXGE_HAL_VPLANE_ASSIGNMENTS_GET_VPLANE_ASSIGNMENTS(bits) \ - bVAL5(bits, 3) - -#define VXGE_HAL_PF_SW_RESET_COMMAND 0xA5 - -#define VXGE_HAL_TITAN_PCICFGMGMT_REG_SPACES 17 -#define VXGE_HAL_TITAN_SRPCIM_REG_SPACES 17 -#define VXGE_HAL_TITAN_VPMGMT_REG_SPACES 17 -#define VXGE_HAL_TITAN_VPATH_REG_SPACES 17 - -#define VXGE_HAL_PRIV_VPATH_ACTION 5 -#define VXGE_HAL_BW_CONTROL 12 -#define VXGE_HAL_RTS_ACCESS_FW_MEMO_ACTION_NON_PRIV_BANDWIDTH_CTRL 32 -#define VXGE_HAL_RTS_ACCESS_FW_MEMO_ACTION_PRIV_NWIF 17 -#define VXGE_HAL_API_FUNC_MODE_COMMIT 21 - -#define VXGE_HAL_ASIC_MODE_RESERVED 0 -#define VXGE_HAL_ASIC_MODE_NO_IOV 1 -#define VXGE_HAL_ASIC_MODE_SR_IOV 2 -#define VXGE_HAL_ASIC_MODE_MR_IOV 3 - -#define VXGE_HAL_TXMAC_GEN_CFG1_TMAC_PERMA_STOP_EN mBIT(3) -#define VXGE_HAL_TXMAC_GEN_CFG1_BLOCK_BCAST_TO_WIRE mBIT(19) -#define VXGE_HAL_TXMAC_GEN_CFG1_BLOCK_BCAST_TO_SWITCH mBIT(23) -#define VXGE_HAL_TXMAC_GEN_CFG1_HOST_APPEND_FCS mBIT(31) - -#define VXGE_HAL_VPATH_IS_FIRST_GET_VPATH_IS_FIRST(bits) bVAL1(bits, 3) - -#define VXGE_HAL_TIM_VPATH_ASSIGNMENT_GET_BMAP_ROOT(bits) bVAL32(bits, 0) - -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_GET_MAX_PYLD_LEN(bits)\ - bVAL14(bits, 50) - -#define VXGE_HAL_XMAC_VSPORT_CHOICES_VP_GET_VSPORT_VECTOR(bits) bVAL17(bits, 0) - -#define VXGE_HAL_XMAC_VPATH_TO_VSPORT_VPMGMT_CLONE_GET_VSPORT_NUMBER(bits)\ - bVAL5(bits, 3) - -#define VXGE_HAL_KDFC_DRBL_TRIPLET_TOTAL_GET_KDFC_MAX_SIZE(bits)\ - bVAL15(bits, 17) - -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_MODE_LEGACY_MODE 0 -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_MODE_NON_OFFLOAD_ONLY 1 -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_MODE_MULTI_OP_MODE 2 - -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_MODE_MESSAGES_ONLY 0 -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_MODE_MULTI_OP_MODE 1 - -#define VXGE_HAL_TOC_GET_KDFC_INITIAL_OFFSET(val)\ - (val&~VXGE_HAL_TOC_KDFC_INITIAL_BIR(7)) -#define VXGE_HAL_TOC_GET_KDFC_INITIAL_BIR(val) bVAL3(val, 61) -#define VXGE_HAL_TOC_GET_USDC_INITIAL_OFFSET(val)\ - (val&~VXGE_HAL_TOC_USDC_INITIAL_BIR(7)) -#define VXGE_HAL_TOC_GET_USDC_INITIAL_BIR(val) bVAL3(val, 61) - -#define VXGE_HAL_LAG_CFG_GET_MODE(bits) bVAL2(bits, 6) -#define VXGE_HAL_LAG_TX_CFG_GET_DISTRIB_ALG_SEL(bits) bVAL2(bits, 6) - -#define VXGE_HAL_TOC_KDFC_VPATH_STRIDE_GET_TOC_KDFC_VPATH_STRIDE(bits) bits -#define VXGE_HAL_TOC_KDFC_FIFO_STRIDE_GET_TOC_KDFC_FIFO_STRIDE(bits) bits - -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_GET_KDFC_RCTR0(bits) bVAL15(bits, 1) -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_GET_KDFC_RCTR1(bits) bVAL15(bits, 17) -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_GET_KDFC_RCTR2(bits) bVAL15(bits, 33) - -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_KDFC_VAPTH_NUM(val) vBIT(val, 42, 5) -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_KDFC_FIFO_NUM(val) vBIT(val, 47, 2) -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_KDFC_FIFO_OFFSET(val) vBIT(val, 49, 15) - -#define VXGE_HAL_PRC_CFG4_RING_MODE_ONE_BUFFER 0 -#define VXGE_HAL_PRC_CFG4_RING_MODE_THREE_BUFFER 1 -#define VXGE_HAL_PRC_CFG4_RING_MODE_FIVE_BUFFER 2 - -#define VXGE_HAL_PRC_CFG7_SCATTER_MODE_A 0 -#define VXGE_HAL_PRC_CFG7_SCATTER_MODE_B 2 -#define VXGE_HAL_PRC_CFG7_SCATTER_MODE_C 1 - -#define VXGE_HAL_RTDMA_BW_CTRL_GET_DESIRED_BW(bits) bVAL18(bits, 46) - -#define VXGE_HAL_RTS_MGR_STEER_CTRL_WE_READ 0 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_WE_WRITE 1 - -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_DA 0 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_VID 1 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_ETYPE 2 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_PN 3 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RANGE_PN 4 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_GEN_CFG 5 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_SOLO_IT 6 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_JHASH_CFG 7 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_MASK 8 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_KEY 9 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_QOS 10 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_DS 11 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT 12 -#define VXGE_HAL_RTS_MGR_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO 13 - -#define VXGE_HAL_RTS_MGR_STEER_DATA0_GET_DA_MAC_ADDR(bits) bVAL48(bits, 0) -#define VXGE_HAL_RTS_MGR_STEER_DATA0_DA_MAC_ADDR(val) vBIT(val, 0, 48) - -#define VXGE_HAL_RTS_MGR_STEER_DATA1_GET_DA_MAC_ADDR_MASK(bits) bVAL48(bits, 0) -#define VXGE_HAL_RTS_MGR_STEER_DATA1_DA_MAC_ADDR_MASK(val) vBIT(val, 0, 48) -#define VXGE_HAL_RTS_MGR_STEER_DATA1_DA_MAC_ADDR_ADD_PRIVILEGED_MODE mBIT(54) -#define VXGE_HAL_RTS_MGR_STEER_DATA1_GET_DA_MAC_ADDR_ADD_VPATH(bits)\ - bVAL5(bits, 55) -#define VXGE_HAL_RTS_MGR_STEER_DATA1_DA_MAC_ADDR_ADD_VPATH(val) vBIT(val, 55, 5) -#define VXGE_HAL_RTS_MGR_STEER_DATA1_GET_DA_MAC_ADDR_ADD_MODE(bits)\ - bVAL2(bits, 62) -#define VXGE_HAL_RTS_MGR_STEER_DATA1_DA_MAC_ADDR_MODE(val) vBIT(val, 62, 2) - -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_ADD_ENTRY 0 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_DELETE_ENTRY 1 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY 2 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY 3 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY 0 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY 1 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_CLEAR_TABLE 2 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_VERSION 0 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO 3 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LED_CONTROL 4 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_VPATH_MAP 5 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_PCI_CONFIG 6 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_UDP_RTH 10 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FUNC_MODE 11 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_SEND_MSG 15 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_UPGRADE 16 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_PORT_CTRL 17 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_PORT_INFO 18 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_COMMIT 21 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_GET_FUNC_COUNT 24 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_GET_FUNC_MODE 29 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_ALL_CLEAR 172 - -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA 0 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_VID 1 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_ETYPE 2 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_PN 3 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_GEN_CFG 5 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_SOLO_IT 6 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_JHASH_CFG 7 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MASK 8 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_KEY 9 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_QOS 10 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DS 11 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT 12 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO 13 -#define VXGE_HAL_MSG_SEND_TO_VPATH_MASK 0xFFFFFFFFUL -#define VXGE_HAL_MSG_SEND_RETRY 100 - -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET_FW_UPGRADE_MODE 2 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET_FW_UPGRADE_DATA 3 -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET_FW_UPGRADE_COMMIT 4 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_STREAM_SKIP mBIT(63) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE(bits) \ - bVAL8(bits, 56) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE_OK 0 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE_DONE 1 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE_ERROR 2 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE_SKIP 3 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_SUB_CODE(bits) \ - bVAL8(bits, 48) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_SUB_SUB_CODE(bits) \ - bVAL8(bits, 40) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_SKIP_BYTES(bits) \ - bVAL32(bits, 24) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_FW_UPGRADE_GET_TOTAL_STEPS(bits) \ - bVAL32(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_FW_UPGRADE_GET_COMPL_STEPS(bits) \ - bVAL32(bits, 32) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_DA_MAC_ADDR(bits) bVAL48(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_DA_MAC_ADDR(val) vBIT(val, 0, 48) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_VLAN_ID(bits) bVAL11(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_VLAN_ID(val) vBIT(val, 0, 12) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_ETYPE(bits) bVAL11(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_ETYPE(val) vBIT(val, 0, 16) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEND_MSG_TYPE(val) vBIT(val, 0, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEND_MSG_DEST(val) vBIT(val, 8, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEND_MSG_SRC(val) vBIT(val, 16, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEND_MSG_DATA(val) vBIT(val, 32, 32) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_SRC_DEST_SEL(bits) bVAL1(bits, 3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_SRC_DEST_SEL mBIT(3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_TCP_UDP_SEL(bits) bVAL1(bits, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_TCP_UDP_SEL mBIT(7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_PORT_NUM(bits) bVAL16(bits, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_PORT_NUM(val) vBIT(val, 8, 16) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_EN(bits) bVAL1(bits, 3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_EN mBIT(3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_BUCKET_SIZE(bits)\ - bVAL4(bits, 4) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_BUCKET_SIZE(val) vBIT(val, 4, 4) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_ALG_SEL(bits)\ - bVAL2(bits, 10) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_ALG_SEL(val) vBIT(val, 10, 2) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_ALG_SEL_JENKINS 0 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_ALG_SEL_MS_RSS 1 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_ALG_SEL_CRC32C 2 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_TCP_IPV4_EN(bits)\ - bVAL1(bits, 15) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_TCP_IPV4_EN mBIT(15) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_IPV4_EN(bits)\ - bVAL1(bits, 19) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_IPV4_EN mBIT(19) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_TCP_IPV6_EN(bits)\ - bVAL1(bits, 23) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_TCP_IPV6_EN mBIT(23) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_IPV6_EN(bits)\ - bVAL1(bits, 27) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_IPV6_EN mBIT(27) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_TCP_IPV6_EX_EN(bits)\ - bVAL1(bits, 31) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_TCP_IPV6_EX_EN mBIT(31) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_IPV6_EX_EN(bits)\ - bVAL1(bits, 35) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_IPV6_EX_EN mBIT(35) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_ACTIVE_TABLE(bits)\ - bVAL1(bits, 39) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_ACTIVE_TABLE mBIT(39) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_REPL_ENTRY_EN(bits)\ - bVAL1(bits, 43) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_REPL_ENTRY_EN mBIT(43) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_SOLO_IT_ENTRY_EN(bits)\ - bVAL1(bits, 3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_SOLO_IT_ENTRY_EN mBIT(3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_SOLO_IT_BUCKET_DATA(bits)\ - bVAL7(bits, 9) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_SOLO_IT_BUCKET_DATA(val)\ - vBIT(val, 9, 7) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_ITEM0_BUCKET_NUM(bits)\ - bVAL8(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM0_BUCKET_NUM(val)\ - vBIT(val, 0, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_ITEM0_ENTRY_EN(bits)\ - bVAL1(bits, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM0_ENTRY_EN mBIT(8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_ITEM0_BUCKET_DATA(bits)\ - bVAL7(bits, 9) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM0_BUCKET_DATA(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_ITEM1_BUCKET_NUM(bits)\ - bVAL8(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM1_BUCKET_NUM(val)\ - vBIT(val, 16, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_ITEM1_ENTRY_EN(bits)\ - bVAL1(bits, 24) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM1_ENTRY_EN mBIT(24) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_ITEM1_BUCKET_DATA(bits)\ - bVAL7(bits, 25) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM1_BUCKET_DATA(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM0_BUCKET_NUM(bits)\ - bVAL8(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM0_BUCKET_NUM(val)\ - vBIT(val, 0, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM0_ENTRY_EN(bits)\ - bVAL1(bits, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM0_ENTRY_EN mBIT(8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM0_BUCKET_DATA(bits)\ - bVAL7(bits, 9) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM0_BUCKET_DATA(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM1_BUCKET_NUM(bits)\ - bVAL8(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM1_BUCKET_NUM(val)\ - vBIT(val, 16, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM1_ENTRY_EN(bits)\ - bVAL1(bits, 24) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM1_ENTRY_EN mBIT(24) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM1_BUCKET_DATA(bits)\ - bVAL7(bits, 25) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM1_BUCKET_DATA(val)\ - vBIT(val, 25, 7) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_JHASH_CFG_GOLDEN_RATIO(bits)\ - bVAL32(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_JHASH_CFG_GOLDEN_RATIO(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_JHASH_CFG_INIT_VALUE(bits)\ - bVAL32(bits, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_JHASH_CFG_INIT_VALUE(val)\ - vBIT(val, 32, 32) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_MASK_IPV6_SA_MASK(bits)\ - bVAL16(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV6_SA_MASK(val)\ - vBIT(val, 0, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_MASK_IPV6_DA_MASK(bits)\ - bVAL16(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV6_DA_MASK(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_MASK_IPV4_SA_MASK(bits)\ - bVAL4(bits, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV4_SA_MASK(val)\ - vBIT(val, 32, 4) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_MASK_IPV4_DA_MASK(bits)\ - bVAL4(bits, 36) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV4_DA_MASK(val)\ - vBIT(val, 36, 4) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_MASK_L4SP_MASK(bits)\ - bVAL2(bits, 40) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_L4SP_MASK(val) vBIT(val, 40, 2) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_MASK_L4DP_MASK(bits)\ - bVAL2(bits, 42) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_L4DP_MASK(val) vBIT(val, 42, 2) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_KEY_KEY(bits) bVAL64(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_KEY_KEY vBIT(val, 0, 64) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_QOS_ENTRY_EN(bits) bVAL1(bits, 3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_QOS_ENTRY_EN mBIT(3) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_DS_ENTRY_EN(bits) bVAL1(bits, 3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_DS_ENTRY_EN mBIT(3) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_MASK(bits)\ - bVAL48(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_DA_MAC_ADDR_MASK(val) vBIT(val, 0, 48) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_DA_MAC_ADDR_ADD_PRIVILEGED_MODE mBIT(54) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_ADD_VPATH(bits)\ - bVAL5(bits, 55) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_DA_MAC_ADDR_ADD_VPATH(val)\ - vBIT(val, 55, 5) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_ADD_MODE(bits)\ - bVAL2(bits, 62) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_DA_MAC_ADDR_MODE(val) vBIT(val, 62, 2) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM4_BUCKET_NUM(bits)\ - bVAL8(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM4_BUCKET_NUM(val)\ - vBIT(val, 0, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM4_ENTRY_EN(bits)\ - bVAL1(bits, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM4_ENTRY_EN mBIT(8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM4_BUCKET_DATA(bits)\ - bVAL7(bits, 9) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM4_BUCKET_DATA(val)\ - vBIT(val, 9, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM5_BUCKET_NUM(bits)\ - bVAL8(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM5_BUCKET_NUM(val)\ - vBIT(val, 16, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM5_ENTRY_EN(bits)\ - bVAL1(bits, 24) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM5_ENTRY_EN mBIT(24) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM5_BUCKET_DATA(bits)\ - bVAL7(bits, 25) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM5_BUCKET_DATA(val)\ - vBIT(val, 25, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM6_BUCKET_NUM(bits)\ - bVAL8(bits, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM6_BUCKET_NUM(val)\ - vBIT(val, 32, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM6_ENTRY_EN(bits)\ - bVAL1(bits, 40) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM6_ENTRY_EN mBIT(40) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM6_BUCKET_DATA(bits)\ - bVAL7(bits, 41) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM6_BUCKET_DATA(val)\ - vBIT(val, 41, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM7_BUCKET_NUM(bits)\ - bVAL8(bits, 48) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM7_BUCKET_NUM(val)\ - vBIT(val, 48, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM7_ENTRY_EN(bits)\ - bVAL1(bits, 56) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM7_ENTRY_EN mBIT(56) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM7_BUCKET_DATA(bits)\ - bVAL7(bits, 57) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM7_BUCKET_DATA(val)\ - vBIT(val, 57, 7) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_FW_VERSION 0 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PART_NUMBER 0 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_SERIAL_NUMBER 1 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_FLASH_VERSION 2 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PCI_MODE 3 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_0 4 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_1 5 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_2 6 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_3 7 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORTS 8 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT0_PMD_TYPE 10 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT0_PMD_VENDOR 11 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT0_PMD_PARTNO 13 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT0_PMD_SERNO 14 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT1_PMD_TYPE 20 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT1_PMD_VENDOR 21 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT1_PMD_PARTNO 23 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT1_PMD_SERNO 24 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_LAG_MODE 1 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_ACTIVE_PORT 2 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MEMO_ITEM_STATUS(bits) \ - bVAL8(bits, 56) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_STATUS(val) \ - vBIT(val, 56, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_STATUS_SUCCESS 1 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_STATUS_FAIL 0 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_MEMO_ITEM_GET_LAG_MODE(bits) \ - bVAL3(bits, 61) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_MEMO_ITEM_LAG_MODE(val) \ - vBIT(val, 61, 3) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_MEMO_ITEM_PREFFERRED_PORT mBIT(62) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_MEMO_ITEM_ACTIVE_PORT mBIT(63) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_LED_CONTROL_ON 1 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_LED_CONTROL_OFF 0 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PCI_ADDR(bits) bVAL16(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_PCI_ADDR(val) vBIT(val, 16, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_PCI_CONFIG_READ 0 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_PCI_CONFIG_WRITE mBIT(39) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_BYTE_COUNT(bits) bVAL8(bits, 40) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_BYTE_COUNT(val) vBIT(val, 40, 8) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_VH(bits) bVAL8(bits, 48) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_VH(val) vBIT(val, 48, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FUNCTION(bits) bVAL8(bits, 56) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNCTION(val) vBIT(val, 56, 8) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PCI_DATA(bits) bVAL32(bits, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_PCI_DATA(val) vBIT(val, 32, 32) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_PCI_DATA(bits) bVAL32(bits, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_PCI_DATA(val) vBIT(val, 32, 32) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_IS_VPATH_ASSIGNED(vpid) mBIT((63-vpid)) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_IGNORE_IN_SVC_CHECK mBIT(0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MSG_TYPE(bits) bVAL7(bits, 1) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE(val) vBIT(val, 1, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_UNKNOWN 0 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_BEGIN 1 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_DEVICE_RESET_END 2 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_VPATH_RESET_BEGIN 3 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_VPATH_RESET_END 4 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_PRIV_DRIVER_UP 5 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_PRIV_DRIVER_DOWN 6 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_ACK 127 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MSG_DEST(bits) bVAL8(bits, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_DEST(val) vBIT(val, 8, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_MRPCIM 0xfe -#define VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST 0xff -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MSG_SRC(bits) bVAL8(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_SRC(val) vBIT(val, 16, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_SEQ_NUM(bits) bVAL32(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEQ_NUM(val) vBIT(val, 32, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MSG_DATA(bits) bVAL16(bits, 48) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_DATA(val) vBIT(val, 48, 16) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_ERROR_PENDING 0 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_ERROR_NOT_IN_SVC 1 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_UDP_RTH_ENABLE mBIT(63) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_VHN(val) vBIT(val, 48, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_VFID(val) vBIT(val, 56, 8) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RX_PRIORITY(bits) bVAL3(bits, 45) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RX_MIN_BW(bits) bVAL8(bits, 48) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RX_MAX_BW(bits) bVAL8(bits, 56) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_RX_PRIORITY(val) vBIT(val, 45, 3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_RX_MIN_BW(val) vBIT(val, 48, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_RX_MAX_BW(val) vBIT(val, 56, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_VPATH_OR_FUNC(val) vBIT(val, 0, 8) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_TX_PRIORITY(bits) bVAL3(bits, 21) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_TX_MIN_BW(bits) bVAL8(bits, 24) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_TX_MAX_BW(bits) bVAL8(bits, 32) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_TX_PRIORITY(val) vBIT(val, 21, 3) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_TX_MIN_BW(val) vBIT(val, 24, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_TX_MAX_BW(val) vBIT(val, 32, 8) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_NUM_FUNC(bits) bVAL8(bits, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FUNC_MODE(bits) bVAL8(bits, 56) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE(val) vBIT(val, 56, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_SF1_VP17 0 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF8_VP2 1 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_SR17_VP1 2 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MR17_VP1 3 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MR8_VP2 4 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF17_VP1 5 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_SR8_VP2 6 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_SR4_VP4 7 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF2_VP8 8 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF4_VP4 9 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MR4_VP4 10 -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE_MF8P_VP2 11 - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_DAY(bits)\ - bVAL8(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_VER_DAY(val) vBIT(val, 0, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MONTH(bits)\ - bVAL8(bits, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_VER_MONTH(val) vBIT(val, 8, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_YEAR(bits) bVAL16(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_VER_YEAR(val) vBIT(val, 16, 16) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MAJOR(bits)\ - bVAL8(bits, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_VER_MAJOR vBIT(val, 32, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MINOR(bits)\ - bVAL8(bits, 40) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_VER_MINOR vBIT(val, 40, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_BUILD(bits)\ - bVAL16(bits, 48) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_VER_BUILD vBIT(val, 48, 16) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_DAY(bits)\ - bVAL8(bits, 0) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FLASH_VER_DAY(val) vBIT(val, 0, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_MONTH(bits)\ - bVAL8(bits, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FLASH_VER_MONTH(val) vBIT(val, 8, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_YEAR(bits)\ - bVAL16(bits, 16) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FLASH_VER_YEAR(val) vBIT(val, 16, 16) - -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_MAJOR(bits)\ - bVAL8(bits, 32) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FLASH_VER_MAJOR vBIT(val, 32, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_MINOR(bits)\ - bVAL8(bits, 40) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FLASH_VER_MINOR vBIT(val, 40, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_BUILD(bits)\ - bVAL16(bits, 48) -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_FLASH_VER_BUILD vBIT(val, 48, 16) - -/* Netork port control API related */ -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_SET_NWIF_CMD(val) vBIT(val, 0, 8) - -/* Bandwidth & priority related MACROS */ -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_API_VER(bits) \ - vxge_bVALn(bits, 0, 8) - -#define VXGE_HAL_ASIC_NTWK_VP_CTRL_GET_XMACJ_SHOW_PORT_INFO(bits)\ - bVAL1(bits, 55) -#define VXGE_HAL_ASIC_NTWK_VP_CTRL_GET_XMACJ_PORT_NUM(bits) bVAL1(bits, 63) - -#define VXGE_HAL_SRPCIM_TO_VPATH_ALARM_REG_GET_ALARM(bits) bVAL17(bits, 0) - -#define VXGE_HAL_RX_MULTI_CAST_STATS_GET_FRAME_DISCARD(bits) bVAL16(bits, 48) -#define VXGE_HAL_RX_FRM_TRANSFERRED_GET_RX_FRM_TRANSFERRED(bits)\ - bVAL32(bits, 32) -#define VXGE_HAL_RXD_RETURNED_GET_RXD_RETURNED(bits) bVAL16(bits, 48) -#define VXGE_HAL_PRC_RXD_DOORBELL_GET_NEW_QW_CNT(bits) bVAL16(bits, 48) -#define VXGE_HAL_PRC_CFG6_GET_RXD_SPAT(bits) bVAL9(bits, 36) -#define VXGE_HAL_VPATH_DEBUG_STATS0_GET_INI_NUM_MWR_SENT(bits) bVAL32(bits, 0) -#define VXGE_HAL_VPATH_DEBUG_STATS1_GET_INI_NUM_MRD_SENT(bits) bVAL32(bits, 0) -#define VXGE_HAL_VPATH_DEBUG_STATS2_GET_INI_NUM_CPL_RCVD(bits) bVAL32(bits, 0) -#define VXGE_HAL_VPATH_DEBUG_STATS3_GET_INI_NUM_MWR_BYTE_SENT(bits) (bits) -#define VXGE_HAL_VPATH_DEBUG_STATS4_GET_INI_NUM_CPL_BYTE_RCVD(bits) (bits) -#define VXGE_HAL_VPATH_DEBUG_STATS5_GET_WRCRDTARB_XOFF(bits) bVAL32(bits, 32) -#define VXGE_HAL_VPATH_DEBUG_STATS6_GET_RDCRDTARB_XOFF(bits) bVAL32(bits, 32) -#define VXGE_HAL_VPATH_GENSTATS_COUNT01_GET_PPIF_VPATH_GENSTATS_COUNT1(bits)\ - bVAL32(bits, 0) -#define VXGE_HAL_VPATH_GENSTATS_COUNT01_GET_PPIF_VPATH_GENSTATS_COUNT0(bits)\ - bVAL32(bits, 32) -#define VXGE_HAL_VPATH_GENSTATS_COUNT23_GET_PPIF_VPATH_GENSTATS_COUNT3(bits)\ - bVAL32(bits, 0) -#define VXGE_HAL_VPATH_GENSTATS_COUNT23_GET_PPIF_VPATH_GENSTATS_COUNT2(bits)\ - bVAL32(bits, 32) -#define VXGE_HAL_VPATH_GENSTATS_COUNT4_GET_PPIF_VPATH_GENSTATS_COUNT4(bits)\ - bVAL32(bits, 0) -#define VXGE_HAL_VPATH_GENSTATS_COUNT5_GET_PPIF_VPATH_GENSTATS_COUNT5(bits)\ - bVAL32(bits, 32) -#define \ - VXGE_HAL_TX_VP_RESET_DISCARDED_FRMS_GET_TX_VP_RESET_DISCARDED_FRMS(bits)\ - bVAL16(bits, 48) -#define VXGE_HAL_DBG_STATS_GET_RX_MPA_CRC_FAIL_FRMS(bits) bVAL16(bits, 0) -#define VXGE_HAL_DBG_STATS_GET_RX_MPA_MRK_FAIL_FRMS(bits) bVAL16(bits, 16) -#define VXGE_HAL_DBG_STATS_GET_RX_MPA_LEN_FAIL_FRMS(bits) bVAL16(bits, 32) -#define VXGE_HAL_DBG_STATS_GET_RX_FAU_RX_WOL_FRMS(bits) bVAL16(bits, 0) -#define VXGE_HAL_DBG_STATS_GET_RX_FAU_RX_VP_RESET_DISCARDED_FRMS(bits)\ - bVAL16(bits, 16) -#define VXGE_HAL_DBG_STATS_GET_RX_FAU_RX_PERMITTED_FRMS(bits) bVAL16(bits, 32) - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR 0x0 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_WRITE 0x1 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_READ_INCR 0x2 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_READ 0x3 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_RESERVED 0x4 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_WRITE 0x5 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ_INCR 0x6 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_OP_TYPE_ADDR_READ 0x7 - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_PMA_CONTROL_1 0x0000 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_PMA_CONTROL_1_LOOPBACK 0x01 - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL 0x8000 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_1_BYTE 0x02 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_256_BYTES 0x03 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_COMPLETE 0x04 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_PROGRESS 0x08 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_FAILED 0x0C -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_STAT_MASK 0x0C -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_READ 0x00 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_WRITE 0x20 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_CONTROL_ADDR(val) (val<<8) - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_DATA_XFP_TEMP_1 0x8067 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_DATA_XFP_TEMP_2 0x8068 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_EEPROM_NVR_DATA_DATA(val)\ - (val&0xff) - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG 0xA070 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_PWR_LOW 0x01 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_PWR_HIGH 0x02 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_CUR_LOW 0x04 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_CUR_HIGH 0x08 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_TEMP_LOW 0x40 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_ALARM_FLAG_TEMP_HIGH 0x80 - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG 0xA074 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_PWR_LOW 0x01 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_PWR_HIGH 0x02 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_CUR_LOW 0x04 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_CUR_HIGH 0x08 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_TEMP_LOW 0x40 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_TX_WARN_FLAG_TEMP_HIGH 0x80 - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT 0xA100 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_SINGLE_UPDATE 0x0000 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_SLOW_PER_UPDATE 0x0001 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_INT_PER_UPDATE 0x0002 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_FAST_PER_UPDATE 0x0003 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_READ_IDLE 0x0000 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_READ_COMPLETE 0x0004 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_READ_PROGRESS 0x0008 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_READ_FAILED 0x000C -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_UPLOAD_EN 0x0010 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_256_BYTES 0x0000 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_1_BYTES 0x0100 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_WRITE_IDLE 0x0000 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_WRITE_COMPLETE 0x1000 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_WRITE_PROGRESS 0x2000 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_DOM_CMD_STAT_WRITE_FAILED 0x3000 - - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_TX_LED 0xD006 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_RX_LED 0xD007 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_ADDR_LINK_LED 0xD008 - -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PMA_PMD 1 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PCS 3 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_PHY_XS 4 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_DTE_XS 5 -#define VXGE_HAL_MDIO_MGR_ACCESS_PORT_DEVAD_AN 7 - -#define VXGE_HAL_MDIO_GEN_CFG_PORT_GET_MDIO_PHY_PRTAD(bits) bVAL5(bits, 19) -#define VXGE_HAL_MDIO_GEN_CFG_PORT_MDIO_PHY_PRTAD(val) vBIT(val, 19, 5) - -#define VXGE_HAL_XGXS_STATIC_CFG_PORT_GET_MDIO_DTE_PRTAD(bits) bVAL5(bits, 7) -#define VXGE_HAL_XGXS_STATIC_CFG_PORT_MDIO_DTE_PRTAD(val) vBIT(val, 7, 5) - -#define VXGE_HAL_MDIO_MGR_ACCESS_GET_PORT_DATA(bits) bVAL16(bits, 32) - -#define VXGE_HAL_MRPCIM_DEBUG_STATS0_GET_INI_WR_DROP(bits) bVAL32(bits, 0) -#define VXGE_HAL_MRPCIM_DEBUG_STATS0_GET_INI_RD_DROP(bits) bVAL32(bits, 32) -#define \ - VXGE_HAL_MRPCIM_DEBUG_STATS1_GET_VPLANE_WRCRDTARB_PH_CRDT_DEPLETED(bits)\ - bVAL32(bits, 32) -#define \ - VXGE_HAL_MRPCIM_DEBUG_STATS2_GET_VPLANE_WRCRDTARB_PD_CRDT_DEPLETED(bits)\ - bVAL32(bits, 32) -#define \ - VXGE_HAL_MRPCIM_DEBUG_STATS3_GET_VPLANE_RDCRDTARB_NPH_CRDT_DEPLETED(bits)\ - bVAL32(bits, 32) -#define VXGE_HAL_MRPCIM_DEBUG_STATS4_GET_INI_WR_VPIN_DROP(bits) bVAL32(bits, 0) -#define VXGE_HAL_MRPCIM_DEBUG_STATS4_GET_INI_RD_VPIN_DROP(bits) bVAL32(bits, 32) -#define VXGE_HAL_GENSTATS_COUNT01_GET_GENSTATS_COUNT1(bits) bVAL32(bits, 0) -#define VXGE_HAL_GENSTATS_COUNT01_GET_GENSTATS_COUNT0(bits) bVAL32(bits, 32) -#define VXGE_HAL_GENSTATS_COUNT23_GET_GENSTATS_COUNT3(bits) bVAL32(bits, 0) -#define VXGE_HAL_GENSTATS_COUNT23_GET_GENSTATS_COUNT2(bits) bVAL32(bits, 32) -#define VXGE_HAL_GENSTATS_COUNT4_GET_GENSTATS_COUNT4(bits) bVAL32(bits, 32) -#define VXGE_HAL_GENSTATS_COUNT5_GET_GENSTATS_COUNT5(bits) bVAL32(bits, 32) - -#define VXGE_HAL_DEBUG_STATS0_GET_RSTDROP_MSG(bits) bVAL32(bits, 0) -#define VXGE_HAL_DEBUG_STATS0_GET_RSTDROP_CPL(bits) bVAL32(bits, 32) -#define VXGE_HAL_DEBUG_STATS1_GET_RSTDROP_CLIENT0(bits) bVAL32(bits, 0) -#define VXGE_HAL_DEBUG_STATS1_GET_RSTDROP_CLIENT1(bits) bVAL32(bits, 32) -#define VXGE_HAL_DEBUG_STATS2_GET_RSTDROP_CLIENT2(bits) bVAL32(bits, 0) -#define VXGE_HAL_DEBUG_STATS3_GET_VPLANE_DEPL_PH(bits) bVAL16(bits, 0) -#define VXGE_HAL_DEBUG_STATS3_GET_VPLANE_DEPL_NPH(bits) bVAL16(bits, 16) -#define VXGE_HAL_DEBUG_STATS3_GET_VPLANE_DEPL_CPLH(bits) bVAL16(bits, 32) -#define VXGE_HAL_DEBUG_STATS4_GET_VPLANE_DEPL_PD(bits) bVAL16(bits, 0) -#define VXGE_HAL_DEBUG_STATS4_GET_VPLANE_DEPL_NPD(bits) bVAL16(bits, 16) -#define VXGE_HAL_DEBUG_STATS4_GET_VPLANE_DEPL_CPLD(bits) bVAL16(bits, 32) - -#define VXGE_HAL_ORP_LRO_EVENTS_GET_ORP_LRO_EVENTS(bits) (bits) -#define VXGE_HAL_ORP_BS_EVENTS_GET_ORP_BS_EVENTS(bits) (bits) -#define VXGE_HAL_ORP_IWARP_EVENTS_GET_ORP_IWARP_EVENTS(bits) (bits) -#define VXGE_HAL_DBG_STATS_TPA_TX_PATH_GET_TX_PERMITTED_FRMS(bits)\ - bVAL32(bits, 32) - -#define VXGE_HAL_DBG_STAT_TX_ANY_FRMS_GET_PORT0_TX_ANY_FRMS(bits)\ - bVAL8(bits, 0) -#define VXGE_HAL_DBG_STAT_TX_ANY_FRMS_GET_PORT1_TX_ANY_FRMS(bits)\ - bVAL8(bits, 8) -#define VXGE_HAL_DBG_STAT_TX_ANY_FRMS_GET_PORT2_TX_ANY_FRMS(bits)\ - bVAL8(bits, 16) - -#define VXGE_HAL_DBG_STAT_RX_ANY_FRMS_GET_PORT0_RX_ANY_FRMS(bits)\ - bVAL8(bits, 0) -#define VXGE_HAL_DBG_STAT_RX_ANY_FRMS_GET_PORT1_RX_ANY_FRMS(bits)\ - bVAL8(bits, 8) -#define VXGE_HAL_DBG_STAT_RX_ANY_FRMS_GET_PORT2_RX_ANY_FRMS(bits)\ - bVAL8(bits, 16) - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_REGDEFS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-regs.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-regs.h +++ sys/dev/vxge/vxgehal/vxgehal-regs.h @@ -1,1233 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_REGS_H -#define VXGE_HAL_REGS_H - -__EXTERN_BEGIN_DECLS - -#pragma pack(1) -/* Using this strcture to calculate offsets */ -typedef struct vxge_hal_pci_config_le_t { - u16 vendor_id; /* 0x00 */ - u16 device_id; /* 0x02 */ - - u16 command; /* 0x04 */ - u16 status; /* 0x06 */ - - u8 revision; /* 0x08 */ - u8 pciClass[3]; /* 0x09 */ - - u8 cache_line_size; /* 0x0c */ - u8 latency_timer; /* 0x0d */ - u8 header_type; /* 0x0e */ - u8 bist; /* 0x0f */ - - u32 base_addr0_lo; /* 0x10 */ - u32 base_addr0_hi; /* 0x14 */ - - u32 base_addr1_lo; /* 0x18 */ - u32 base_addr1_hi; /* 0x1C */ - - u32 base_addr2_lo; /* 0x20 */ - u32 base_addr2_hi; /* 0x24 */ - - u32 cardbus_cis_pointer; /* 0x28 */ - - u16 subsystem_vendor_id; /* 0x2c */ - u16 subsystem_id; /* 0x2e */ - - u32 rom_base; /* 0x30 */ - u8 capabilities_pointer; /* 0x34 */ - u8 rsvd_35[3]; /* 0x35 */ - u32 rsvd_38; /* 0x38 */ - - u8 interrupt_line; /* 0x3c */ - u8 interrupt_pin; /* 0x3d */ - u8 min_grant; /* 0x3e */ - u8 max_latency; /* 0x3f */ - - u8 rsvd_b1[VXGE_HAL_PCI_CONFIG_SPACE_SIZE - 0x40]; -} vxge_hal_pci_config_le_t; /* 0x100 */ - -typedef struct vxge_hal_pci_config_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u16 device_id; /* 0x02 */ - u16 vendor_id; /* 0x00 */ - - u16 status; /* 0x06 */ - u16 command; /* 0x04 */ - - u8 pciClass[3]; /* 0x09 */ - u8 revision; /* 0x08 */ - - u8 bist; /* 0x0f */ - u8 header_type; /* 0x0e */ - u8 latency_timer; /* 0x0d */ - u8 cache_line_size; /* 0x0c */ - - u32 base_addr0_lo; /* 0x10 */ - u32 base_addr0_hi; /* 0x14 */ - - u32 base_addr1_lo; /* 0x18 */ - u32 base_addr1_hi; /* 0x1C */ - - u32 not_Implemented1; /* 0x20 */ - u32 not_Implemented2; /* 0x24 */ - - u32 cardbus_cis_pointer; /* 0x28 */ - - u16 subsystem_id; /* 0x2e */ - u16 subsystem_vendor_id; /* 0x2c */ - - u32 rom_base; /* 0x30 */ - u8 rsvd_35[3]; /* 0x35 */ - u8 capabilities_pointer; /* 0x34 */ - u32 rsvd_38; /* 0x38 */ - - u8 max_latency; /* 0x3f */ - u8 min_grant; /* 0x3e */ - u8 interrupt_pin; /* 0x3d */ - u8 interrupt_line; /* 0x3c */ -#else - u16 vendor_id; /* 0x00 */ - u16 device_id; /* 0x02 */ - - u16 command; /* 0x04 */ - u16 status; /* 0x06 */ - - u8 revision; /* 0x08 */ - u8 pciClass[3]; /* 0x09 */ - - u8 cache_line_size; /* 0x0c */ - u8 latency_timer; /* 0x0d */ - u8 header_type; /* 0x0e */ - u8 bist; /* 0x0f */ - - u32 base_addr0_lo; /* 0x10 */ - u32 base_addr0_hi; /* 0x14 */ - - u32 base_addr1_lo; /* 0x18 */ - u32 base_addr1_hi; /* 0x1C */ - - u32 not_Implemented1; /* 0x20 */ - u32 not_Implemented2; /* 0x24 */ - - u32 cardbus_cis_pointer; /* 0x28 */ - - u16 subsystem_vendor_id; /* 0x2c */ - u16 subsystem_id; /* 0x2e */ - - u32 rom_base; /* 0x30 */ - u8 capabilities_pointer; /* 0x34 */ - u8 rsvd_35[3]; /* 0x35 */ - u32 rsvd_38; /* 0x38 */ - - u8 interrupt_line; /* 0x3c */ - u8 interrupt_pin; /* 0x3d */ - u8 min_grant; /* 0x3e */ - u8 max_latency; /* 0x3f */ - -#endif - u8 rsvd_b1[VXGE_HAL_PCI_CONFIG_SPACE_SIZE - 0x40]; -} vxge_hal_pci_config_t; /* 0x100 */ - -#define VXGE_HAL_EEPROM_SIZE (0x01 << 11) - -#if defined(VXGE_OS_HOST_BIG_ENDIAN) -#define VXGE_HAL_PCI_CAP_ID(ptr) *((ptr) + 3) -#define VXGE_HAL_PCI_CAP_NEXT(ptr) *((ptr) + 2) -#else -#define VXGE_HAL_PCI_CAP_ID(ptr) *(ptr) -#define VXGE_HAL_PCI_CAP_NEXT(ptr) *((ptr) + 1) -#endif - -/* Capability lists */ - -#define VXGE_HAL_PCI_CAP_LIST_ID 0 /* Capability ID */ -#define VXGE_HAL_PCI_CAP_ID_PM 0x01 /* Power Management */ -#define VXGE_HAL_PCI_CAP_ID_AGP 0x02 /* Accelerated Graphics Port */ -#define VXGE_HAL_PCI_CAP_ID_VPD 0x03 /* Vital Product Data */ -#define VXGE_HAL_PCI_CAP_ID_SLOTID 0x04 /* Slot Identification */ -#define VXGE_HAL_PCI_CAP_ID_MSI 0x05 /* Message Signalled Intr */ -#define VXGE_HAL_PCI_CAP_ID_CHSWP 0x06 /* CompactPCI HotSwap */ -#define VXGE_HAL_PCI_CAP_ID_PCIX 0x07 /* PCIX */ -#define VXGE_HAL_PCI_CAP_ID_HT 0x08 /* Hypertransport */ -#define VXGE_HAL_PCI_CAP_ID_VS 0x09 /* Vendor Specific */ -#define VXGE_HAL_PCI_CAP_ID_DBGPORT 0x0A /* Debug Port */ -#define VXGE_HAL_PCI_CAP_ID_CPCICSR 0x0B /* CompPCI central res ctrl */ -#define VXGE_HAL_PCI_CAP_ID_SHPC 0x0C /* PCI Standard Hot-Plug Ctrl */ -#define VXGE_HAL_PCI_CAP_ID_PCIBSVID 0x0D /* PCI Bridge Subsys Vendr Id */ -#define VXGE_HAL_PCI_CAP_ID_AGP8X 0x0E /* AGP 8x */ -#define VXGE_HAL_PCI_CAP_ID_SECDEV 0x0F /* Secure Device */ -#define VXGE_HAL_PCI_CAP_ID_PCIE 0x10 /* PCI Express */ -#define VXGE_HAL_PCI_CAP_ID_MSIX 0x11 /* MSI-X */ -#define VXGE_HAL_PCI_CAP_LIST_NEXT 1 /* Next cap in the list */ -#define VXGE_HAL_PCI_CAP_FLAGS 2 /* Cap defined flags(16 bits) */ - -typedef struct vxge_hal_pm_capability_le_t { - u8 capability_id; - u8 next_capability_ptr; - u16 capabilities_reg; -#define VXGE_HAL_PCI_PM_CAP_VER_MASK 0x0007 /* Version */ -#define VXGE_HAL_PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */ -#define VXGE_HAL_PCI_PM_CAP_AUX_POWER 0x0010 /* Auxiliary power support */ -#define VXGE_HAL_PCI_PM_CAP_DSI 0x0020 /* Device specific init */ -#define VXGE_HAL_PCI_PM_AUX_CURRENT 0x01C0 /* Auxiliary current reqs */ -#define VXGE_HAL_PCI_PM_CAP_D1 0x0200 /* D1 power state support */ -#define VXGE_HAL_PCI_PM_CAP_D2 0x0400 /* D2 power state support */ -#define VXGE_HAL_PCI_PM_CAP_PME_D0 0x0800 /* PME# assertable from D0 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D1 0x1000 /* PME# assertable from D1 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D2 0x2000 /* PME# assertable from D2 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D3_HOT 0x4000 /* PME# assertable from D3hot */ -#define VXGE_HAL_PCI_PM_CAP_PME_D3_COLD 0x8000 /* PME# assertable from D3cold */ - u16 pm_ctrl; -#define VXGE_HAL_PCI_PM_CTRL_STATE_MASK 0x0003 /* Curr power state(D0 to D3) */ -#define VXGE_HAL_PCI_PM_CTRL_NO_SOFT_RESET 0x0008 /* trans from D3hot to D0 */ -#define VXGE_HAL_PCI_PM_CTRL_PME_ENABLE 0x0100 /* PME pin enable */ -#define VXGE_HAL_PCI_PM_CTRL_DATA_SEL_MASK 0x1e00 /* Data select (??) */ -#define VXGE_HAL_PCI_PM_CTRL_DATA_SCALE_MASK 0x6000 /* Data scale (??) */ -#define VXGE_HAL_PCI_PM_CTRL_PME_STATUS 0x8000 /* PME pin status */ - u8 pm_ppb_ext; -#define VXGE_HAL_PCI_PM_PPB_B2_B3 0x40 /* Stop clk when in D3hot(??) */ -#define VXGE_HAL_PCI_PM_BPCC_ENABLE 0x80 /* Bus pwr/clk ctrl enable(??) */ - u8 pm_data_reg; -} vxge_hal_pm_capability_le_t; - -typedef struct vxge_hal_pm_capability_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u16 capabilities_reg; -#define VXGE_HAL_PCI_PM_CAP_VER_MASK 0x0007 /* Version */ -#define VXGE_HAL_PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */ -#define VXGE_HAL_PCI_PM_CAP_AUX_POWER 0x0010 /* Auxiliary power support */ -#define VXGE_HAL_PCI_PM_CAP_DSI 0x0020 /* Dev specific init */ -#define VXGE_HAL_PCI_PM_AUX_CURRENT 0x01C0 /* Auxiliary current reqs */ -#define VXGE_HAL_PCI_PM_CAP_D1 0x0200 /* D1 power state support */ -#define VXGE_HAL_PCI_PM_CAP_D2 0x0400 /* D2 power state support */ -#define VXGE_HAL_PCI_PM_CAP_PME_D0 0x0800 /* PME# assertable from D0 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D1 0x1000 /* PME# assertable from D1 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D2 0x2000 /* PME# assertable from D2 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D3_HOT 0x4000 /* PME# assertable from D3hot */ -#define VXGE_HAL_PCI_PM_CAP_PME_D3_COLD 0x8000 /* PME# assertable from D3cold */ - u8 next_capability_ptr; - u8 capability_id; - u8 pm_data_reg; - u8 pm_ppb_ext; -#define VXGE_HAL_PCI_PM_PPB_B2_B3 0x40 /* Stop clk when in D3hot(??) */ -#define VXGE_HAL_PCI_PM_BPCC_ENABLE 0x80 /* Bus pwr/clk ctrl enable(??) */ - u16 pm_ctrl; -#define VXGE_HAL_PCI_PM_CTRL_STATE_MASK 0x0003 /* Curr pwr state (D0 to D3) */ -#define VXGE_HAL_PCI_PM_CTRL_NO_SOFT_RESET 0x0008 /* dev trans D3hot to D0 */ -#define VXGE_HAL_PCI_PM_CTRL_PME_ENABLE 0x0100 /* PME pin enable */ -#define VXGE_HAL_PCI_PM_CTRL_DATA_SEL_MASK 0x1e00 /* Data select (??) */ -#define VXGE_HAL_PCI_PM_CTRL_DATA_SCALE_MASK 0x6000 /* Data scale (??) */ -#define VXGE_HAL_PCI_PM_CTRL_PME_STATUS 0x8000 /* PME pin status */ -#else - u8 capability_id; - u8 next_capability_ptr; - u16 capabilities_reg; -#define VXGE_HAL_PCI_PM_CAP_VER_MASK 0x0007 /* Version */ -#define VXGE_HAL_PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */ -#define VXGE_HAL_PCI_PM_CAP_AUX_POWER 0x0010 /* Auxiliary power support */ -#define VXGE_HAL_PCI_PM_CAP_DSI 0x0020 /* Dev specific init */ -#define VXGE_HAL_PCI_PM_AUX_CURRENT 0x01C0 /* Auxiliary curr reqs */ -#define VXGE_HAL_PCI_PM_CAP_D1 0x0200 /* D1 power state support */ -#define VXGE_HAL_PCI_PM_CAP_D2 0x0400 /* D2 power state support */ -#define VXGE_HAL_PCI_PM_CAP_PME_D0 0x0800 /* PME# assertable from D0 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D1 0x1000 /* PME# assertable from D1 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D2 0x2000 /* PME# assertable from D2 */ -#define VXGE_HAL_PCI_PM_CAP_PME_D3_HOT 0x4000 /* PME# assertable from D3hot */ -#define VXGE_HAL_PCI_PM_CAP_PME_D3_COLD 0x8000 /* PME# assertable from D3cold */ - u16 pm_ctrl; -#define VXGE_HAL_PCI_PM_CTRL_STATE_MASK 0x0003 /* Curr pwr state (D0 to D3) */ -#define VXGE_HAL_PCI_PM_CTRL_NO_SOFT_RESET 0x0008 /* dev trans D3hot to D0 */ -#define VXGE_HAL_PCI_PM_CTRL_PME_ENABLE 0x0100 /* PME pin enable */ -#define VXGE_HAL_PCI_PM_CTRL_DATA_SEL_MASK 0x1e00 /* Data select (??) */ -#define VXGE_HAL_PCI_PM_CTRL_DATA_SCALE_MASK 0x6000 /* Data scale (??) */ -#define VXGE_HAL_PCI_PM_CTRL_PME_STATUS 0x8000 /* PME pin status */ - u8 pm_ppb_ext; -#define VXGE_HAL_PCI_PM_PPB_B2_B3 0x40 /* Stop clk when in D3hot(??) */ -#define VXGE_HAL_PCI_PM_BPCC_ENABLE 0x80 /* Bus pwr/clk ctrl enable(??) */ - u8 pm_data_reg; -#endif -} vxge_hal_pm_capability_t; - -typedef struct vxge_hal_vpid_capability_le_t { - u8 capability_id; - u8 next_capability_ptr; - u16 vpd_address; -#define VXGE_HAL_PCI_VPID_COMPL_FALG 0x8000 /* Read Completion Flag */ - u32 vpd_data; -} vxge_hal_vpid_capability_le_t; - -typedef struct vxge_hal_vpid_capability_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u16 vpd_address; -#define VXGE_HAL_PCI_VPID_COMPL_FALG 0x8000 /* Read Completion Flag */ - u8 next_capability_ptr; - u8 capability_id; - u32 vpd_data; -#else - u8 capability_id; - u8 next_capability_ptr; - u16 vpd_address; -#define VXGE_HAL_PCI_VPID_COMPL_FALG 0x8000 /* Read Completion Flag */ - u32 vpd_data; -#endif -} vxge_hal_vpid_capability_t; - -typedef struct vxge_hal_sid_capability_le_t { - u8 capability_id; - u8 next_capability_ptr; - u8 sid_esr; -#define VXGE_HAL_PCI_SID_ESR_NSLOTS 0x1f /* Num of exp slots avail */ -#define VXGE_HAL_PCI_SID_ESR_FIC 0x20 /* First In Chassis Flag */ - u8 sid_chasis_nr; -} vxge_hal_sid_capability_le_t; - -typedef struct vxge_hal_sid_capability_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u8 sid_chasis_nr; - u8 sid_esr; -#define VXGE_HAL_PCI_SID_ESR_NSLOTS 0x1f /* Num of exp slots avail */ -#define VXGE_HAL_PCI_SID_ESR_FIC 0x20 /* First In Chassis Flag */ - u8 next_capability_ptr; - u8 capability_id; -#else - u8 capability_id; - u8 next_capability_ptr; - u8 sid_esr; -#define VXGE_HAL_PCI_SID_ESR_NSLOTS 0x1f /* Num of exp slots avail */ -#define VXGE_HAL_PCI_SID_ESR_FIC 0x20 /* First In Chassis Flag */ - u8 sid_chasis_nr; -#endif -} vxge_hal_sid_capability_t; - -typedef struct vxge_hal_msi_capability_le_t { - u8 capability_id; - u8 next_capability_ptr; - u16 msi_control; -#define VXGE_HAL_PCI_MSI_FLAGS_PVMASK 0x0100 /* Per Vector Masking Capable */ -#define VXGE_HAL_PCI_MSI_FLAGS_64BIT 0x0080 /* 64-bit addresses allowed */ -#define VXGE_HAL_PCI_MSI_FLAGS_QSIZE 0x0070 /* Msg queue size configured */ -#define VXGE_HAL_PCI_MSI_FLAGS_QMASK 0x000e /* Max queue size available */ -#define VXGE_HAL_PCI_MSI_FLAGS_ENABLE 0x0001 /* MSI feature enabled */ - union { - struct { - u32 msi_addr; - u16 msi_data; - u16 msi_unused; - } ma32_no_pvm; - struct { - u32 msi_addr; - u16 msi_data; - u16 msi_unused; - u32 msi_mask; - u32 msi_pending; - } ma32_pvm; - struct { - u32 msi_addr_lo; - u32 msi_addr_hi; - u16 msi_data; - u16 msi_unused; - } ma64_no_pvm; - struct { - u32 msi_addr_lo; - u32 msi_addr_hi; - u16 msi_data; - u16 msi_unused; - u32 msi_mask; - u32 msi_pending; - } ma64_pvm; - } au; -} vxge_hal_msi_capability_le_t; - -typedef struct vxge_hal_msi_capability_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u16 msi_control; -#define VXGE_HAL_PCI_MSI_FLAGS_PVMASK 0x0100 /* Per Vector Masking Capable */ -#define VXGE_HAL_PCI_MSI_FLAGS_64BIT 0x0080 /* 64-bit addresses allowed */ -#define VXGE_HAL_PCI_MSI_FLAGS_QSIZE 0x0070 /* Msg queue size configured */ -#define VXGE_HAL_PCI_MSI_FLAGS_QMASK 0x000e /* Max queue size available */ -#define VXGE_HAL_PCI_MSI_FLAGS_ENABLE 0x0001 /* MSI feature enabled */ - u8 next_capability_ptr; - u8 capability_id; - union { - struct { - u32 msi_addr; - u16 msi_unused; - u16 msi_data; - } ma32_no_pvm; - struct { - u32 msi_addr; - u16 msi_unused; - u16 msi_data; - u32 msi_mask; - u32 msi_pending; - } ma32_pvm; - struct { - u32 msi_addr_lo; - u32 msi_addr_hi; - u16 msi_unused; - u16 msi_data; - } ma64_no_pvm; - struct { - u32 msi_addr_lo; - u32 msi_addr_hi; - u16 msi_unused; - u16 msi_data; - u32 msi_mask; - u32 msi_pending; - } ma64_pvm; - } au; -#else - u8 capability_id; - u8 next_capability_ptr; - u16 msi_control; -#define VXGE_HAL_PCI_MSI_FLAGS_PVMASK 0x0100 /* Per Vector Masking Capable */ -#define VXGE_HAL_PCI_MSI_FLAGS_64BIT 0x0080 /* 64-bit addresses allowed */ -#define VXGE_HAL_PCI_MSI_FLAGS_QSIZE 0x0070 /* Msg queue size configured */ -#define VXGE_HAL_PCI_MSI_FLAGS_QMASK 0x000e /* Max queue size available */ -#define VXGE_HAL_PCI_MSI_FLAGS_ENABLE 0x0001 /* MSI feature enabled */ - union { - struct { - u32 msi_addr; - u16 msi_data; - u16 msi_unused; - } ma32_no_pvm; - struct { - u32 msi_addr; - u16 msi_data; - u16 msi_unused; - u32 msi_mask; - u32 msi_pending; - } ma32_pvm; - struct { - u32 msi_addr_lo; - u32 msi_addr_hi; - u16 msi_data; - u16 msi_unused; - } ma64_no_pvm; - struct { - u32 msi_addr_lo; - u32 msi_addr_hi; - u16 msi_data; - u16 msi_unused; - u32 msi_mask; - u32 msi_pending; - } ma64_pvm; - } au; -#endif -} vxge_hal_msi_capability_t; - -typedef struct vxge_hal_chswp_capability_le_t { - u8 capability_id; - u8 next_capability_ptr; - u8 chswp_csr; -#define VXGE_HAL_PCI_CHSWP_DHA 0x01 /* Device Hiding Arm */ -#define VXGE_HAL_PCI_CHSWP_EIM 0x02 /* ENUM# Signal Mask */ -#define VXGE_HAL_PCI_CHSWP_PIE 0x04 /* Pending Insert or Extract */ -#define VXGE_HAL_PCI_CHSWP_LOO 0x08 /* LED On / Off */ -#define VXGE_HAL_PCI_CHSWP_PI 0x30 /* Programming Interface */ -#define VXGE_HAL_PCI_CHSWP_EXT 0x40 /* ENUM# status - extraction */ -#define VXGE_HAL_PCI_CHSWP_INS 0x80 /* ENUM# status - insertion */ -} vxge_hal_chswp_capability_le_t; - -typedef struct vxge_hal_chswp_capability_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u8 chswp_csr; -#define VXGE_HAL_PCI_CHSWP_DHA 0x01 /* Device Hiding Arm */ -#define VXGE_HAL_PCI_CHSWP_EIM 0x02 /* ENUM# Signal Mask */ -#define VXGE_HAL_PCI_CHSWP_PIE 0x04 /* Pending Insert or Extract */ -#define VXGE_HAL_PCI_CHSWP_LOO 0x08 /* LED On / Off */ -#define VXGE_HAL_PCI_CHSWP_PI 0x30 /* Programming Interface */ -#define VXGE_HAL_PCI_CHSWP_EXT 0x40 /* ENUM# status - extraction */ -#define VXGE_HAL_PCI_CHSWP_INS 0x80 /* ENUM# status - insertion */ - u8 next_capability_ptr; - u8 capability_id; -#else - u8 capability_id; - u8 next_capability_ptr; - u8 chswp_csr; -#define VXGE_HAL_PCI_CHSWP_DHA 0x01 /* Device Hiding Arm */ -#define VXGE_HAL_PCI_CHSWP_EIM 0x02 /* ENUM# Signal Mask */ -#define VXGE_HAL_PCI_CHSWP_PIE 0x04 /* Pending Insert or Extract */ -#define VXGE_HAL_PCI_CHSWP_LOO 0x08 /* LED On / Off */ -#define VXGE_HAL_PCI_CHSWP_PI 0x30 /* Programming Interface */ -#define VXGE_HAL_PCI_CHSWP_EXT 0x40 /* ENUM# status - extraction */ -#define VXGE_HAL_PCI_CHSWP_INS 0x80 /* ENUM# status - insertion */ -#endif -} vxge_hal_chswp_capability_t; - -typedef struct vxge_hal_shpc_capability_le_t { - u8 capability_id; - u8 next_capability_ptr; -} vxge_hal_shpc_capability_le_t; - -typedef struct vxge_hal_shpc_capability_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u8 next_capability_ptr; - u8 capability_id; -#else - u8 capability_id; - u8 next_capability_ptr; -#endif -} vxge_hal_shpc_capability_t; - -typedef struct vxge_hal_msix_capability_le_t { - u8 capability_id; - u8 next_capability_ptr; - u16 msix_control; -#define VXGE_HAL_PCI_MSIX_FLAGS_ENABLE 0x8000 /* MSIX Enable */ -#define VXGE_HAL_PCI_MSIX_FLAGS_MASK 0x4000 /* Mask all vectors */ -#define VXGE_HAL_PCI_MSIX_FLAGS_TSIZE 0x001f /* Table Size */ - u32 table_offset; -#define VXGE_HAL_PCI_MSIX_TABLE_OFFSET 0xFFFFFFF8 /* Table offset mask */ -#define VXGE_HAL_PCI_MSIX_TABLE_BIR 0x00000007 /* Table BIR mask */ - u32 pba_offset; -#define VXGE_HAL_PCI_MSIX_PBA_OFFSET 0xFFFFFFF8 /* Table offset mask */ -#define VXGE_HAL_PCI_MSIX_PBA_BIR 0x00000007 /* Table BIR mask */ -} vxge_hal_msix_capability_le_t; - -typedef struct vxge_hal_msix_capability_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u16 msix_control; -#define VXGE_HAL_PCI_MSIX_FLAGS_ENABLE 0x8000 /* MSIX Enable */ -#define VXGE_HAL_PCI_MSIX_FLAGS_MASK 0x4000 /* Mask all vectors */ -#define VXGE_HAL_PCI_MSIX_FLAGS_TSIZE 0x001f /* Table Size */ - u8 next_capability_ptr; - u8 capability_id; - u32 table_offset; -#define VXGE_HAL_PCI_MSIX_TABLE_OFFSET 0xFFFFFFF8 /* Table offset mask */ -#define VXGE_HAL_PCI_MSIX_TABLE_BIR 0x00000007 /* Table BIR mask */ - u32 pba_offset; -#define VXGE_HAL_PCI_MSIX_PBA_OFFSET 0xFFFFFFF8 /* Table offset mask */ -#define VXGE_HAL_PCI_MSIX_PBA_BIR 0x00000007 /* Table BIR mask */ -#else - u8 capability_id; - u8 next_capability_ptr; - u16 msix_control; -#define VXGE_HAL_PCI_MSIX_FLAGS_ENABLE 0x8000 /* MSIX Enable */ -#define VXGE_HAL_PCI_MSIX_FLAGS_MASK 0x4000 /* Mask all vectors */ -#define VXGE_HAL_PCI_MSIX_FLAGS_TSIZE 0x001f /* Table Size */ - u32 table_offset; -#define VXGE_HAL_PCI_MSIX_TABLE_OFFSET 0xFFFFFFF8 /* Table offset mask */ -#define VXGE_HAL_PCI_MSIX_TABLE_BIR 0x00000007 /* Table BIR mask */ - u32 pba_offset; -#define VXGE_HAL_PCI_MSIX_PBA_OFFSET 0xFFFFFFF8 /* Table offset mask */ -#define VXGE_HAL_PCI_MSIX_PBA_BIR 0x00000007 /* Table BIR mask */ -#endif -} vxge_hal_msix_capability_t; - -typedef struct vxge_hal_pci_caps_offset_t { - u32 pm_cap_offset; - u32 vpd_cap_offset; - u32 sid_cap_offset; - u32 msi_cap_offset; - u32 vs_cap_offset; - u32 shpc_cap_offset; - u32 msix_cap_offset; -} vxge_hal_pci_caps_offset_t; - -typedef struct vxge_hal_pci_e_capability_le_t { - u8 capability_id; - u8 next_capability_ptr; - u16 pci_e_flags; -#define VXGE_HAL_PCI_EXP_FLAGS_VERS 0x000f /* Capability version */ -#define VXGE_HAL_PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ -#define VXGE_HAL_PCI_EXP_TYPE_ENDPOINT 0x0 /* Express Endpoint */ -#define VXGE_HAL_PCI_EXP_TYPE_LEG_END 0x1 /* Legacy Endpoint */ -#define VXGE_HAL_PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ -#define VXGE_HAL_PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */ -#define VXGE_HAL_PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */ -#define VXGE_HAL_PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCI/PCI-X Bridge */ -#define VXGE_HAL_PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */ -#define VXGE_HAL_PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt msg number */ - u32 pci_e_devcap; -#define VXGE_HAL_PCI_EXP_DEVCAP_PAYLOAD 0x07 /* Max_Payload_Size */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PHANTOM 0x18 /* Phantom functions */ -#define VXGE_HAL_PCI_EXP_DEVCAP_EXT_TAG 0x20 /* Extended tags */ -#define VXGE_HAL_PCI_EXP_DEVCAP_L0S 0x1c0 /* L0s Acceptable Latency */ -#define VXGE_HAL_PCI_EXP_DEVCAP_L1 0xe00 /* L1 Acceptable Latency */ -#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_BUT 0x1000 /* Attention Button Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_IND 0x2000 /* Attention Ind Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_IND 0x4000 /* Power Indicator Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */ - u16 pci_e_devctl; -#define VXGE_HAL_PCI_EXP_DEVCTL_CERE 0x0001 /* Correctable Err Report En. */ -#define VXGE_HAL_PCI_EXP_DEVCTL_NFERE 0x0002 /* Non-Fatal Err Report En */ -#define VXGE_HAL_PCI_EXP_DEVCTL_FERE 0x0004 /* Fatal Error Report En */ -#define VXGE_HAL_PCI_EXP_DEVCTL_URRE 0x0008 /* Unsupported Req Report En. */ -#define VXGE_HAL_PCI_EXP_DEVCTL_RELAX_EN 0x0010 /* Enable relaxed ordering */ -#define VXGE_HAL_PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */ -#define VXGE_HAL_PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_PHANTOM 0x0200 /* Phantom Functions Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_AUX_PME 0x0400 /* Auxiliary Power PM Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800 /* Enable No Snoop */ -#define VXGE_HAL_PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */ - u16 pci_e_devsta; -#define VXGE_HAL_PCI_EXP_DEVSTA_CED 0x01 /* Correctable Error Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_NFED 0x02 /* Non-Fatal Error Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_FED 0x04 /* Fatal Error Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_URD 0x08 /* Unsupported Req Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_AUXPD 0x10 /* AUX Power Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */ - u32 pci_e_lnkcap; -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_SPEED 0xf /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LS_2_5 0x1 /* 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LS_5 0x2 /* 5 and 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_RES 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X1 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X4 0x4 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X8 0x8 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X12 0xa /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X16 0x10 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X32 0x20 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ASPM 0xc00 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES1 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_LO 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_L0_L1 0x3 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LAT 0x7000 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LT_64 0x0 /* Less than 64ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_64_128 0x1 /* 64ns to less than 128ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_128_256 0x2 /* 128ns to less than 256ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_256_512 0x3 /* 256ns to less than 512ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_512_1us 0x4 /* 512ns to less than 1s. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_1us_2us 0x5 /* 1s to less than 2s. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_2us_4us 0x6 /* 2s-4s. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_GT_4us 0x7 /* More than 4s. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LAT 0x38000 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LT_1us 0x0 /* Less than 1us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_1us_2us 0x1 /* 1us to less than 2us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_2us_4us 0x2 /* 2us to less than 4us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_4us_8us 0x3 /* 4us to less than 8us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_8us_16us 0x4 /* 8us to less than 16us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_16us_32us 0x5 /* 16us to less than 32us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_32us_64us 0x6 /* 32us-64us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_GT_64us 0x7 /* More than 64us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_CLK_PWR_MGMT 0x40000 /* Clk power management. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_DOWN_ERR_CAP 0x80000 /* Down error capable. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ACT_CAP 0x100000 /* DL active rep cap. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_BW_CAP 0x200000 /* DL bw reporting cap. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_PORT_NUM 0xff000000 /* Port number. */ - u16 pci_e_lnkctl; -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM 0x3 /* ASPM Control. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_DISABLED 0x0 /* Disabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_EN 0x1 /* L0 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L1_EN 0x2 /* L1 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_L1_EN 0x3 /* L0 & L1 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB 0x8 /* Read Completion Boundary. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_64 0x0 /* RCB 64 bytes. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_128 0x1 /* RCB 128 bytes. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_DISABLED 0x10 /* Disables the link. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RETRAIN 0x20 /* Retrain the link. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_CCCFG 0x40 /* Common clock config. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_EXT_SYNC 0x80 /* Extended Sync. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_CLK_PWRMGMT 0x100 /* Enable clk pwr mgmt. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_HW_AUTO_DIS 0x200 /* Hw autonomous with dis */ -#define VXGE_HAL_PCI_EXP_LNKCTL_BWM_INTR_EN 0x400 /* Bw mgt interrupt enable */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ABW_INTR_EN 0x800 /* Autonomous BW intr en */ - u16 pci_e_lnksta; -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_SPEED 0xf /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LS_2_5 0x1 /* 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LS_5 0x2 /* 5 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_RES 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X1 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X4 0x4 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X8 0x8 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X12 0xa /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X16 0x10 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X32 0x20 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_TRAIN 0x800 /* Link training. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_SCLK_CFG 0x1000 /* Slot Clock Config. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_DLL_ACTIVE 0x2000 /* Data LL Active. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_BWM_STA 0x4000 /* Bw mgmt intr enable */ -#define VXGE_HAL_PCI_EXP_LNKSTA_ABW_STA 0x8000 /* Autonomous BW intr en */ - u32 pci_e_stlcap; -#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_BTTN 0x1 /* Attention Button Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_PWR_CTRL 0x2 /* Power Control Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_MRL_SENS 0x4 /* MRL Sesor Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_IND 0x8 /* Attention Ind Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_PWR_IND 0x10 /* Power Indicator Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_HP_SURP 0x20 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_HP_CAP 0x40 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_VAL 0x7F80 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_250 0xF0 /* 250 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_275 0xF1 /* 275 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_300 0xF2 /* 300 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_LIM 0x18000 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_1X 0x0 /* 1.0x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY10 0x1 /* 0.1x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY100 0x2 /* 0.01x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY1000 0x3 /* 0.001x */ -#define VXGE_HAL_PCI_EXP_STLCAP_EM_INTR_LOCK 0x20000 /* Ele-mec Intrlock Pres */ -#define VXGE_HAL_PCI_EXP_STLCAP_NO_CMD_CMPL 0x40000 /* No Cmd Compl Support */ -#define VXGE_HAL_PCI_EXP_STLCAP_PHY_SL_NO 0xFFF80000 /* Phys Slot Number */ - u16 pci_e_stlctl; -#define VXGE_HAL_PCI_EXP_STLCTL_ATTN_BTN_EN 0x1 /* Atten Btn pressed enable */ -#define VXGE_HAL_PCI_EXP_STLCTL_PF_DET_EN 0x2 /* Power Fault Detected En */ -#define VXGE_HAL_PCI_EXP_STLCTL_MRL_SENS_EN 0x4 /* MRL Sensor Changed Enable */ -#define VXGE_HAL_PCI_EXP_STLCTL_PDET_CH_EN 0x8 /* Presence Detect Change En */ -#define VXGE_HAL_PCI_EXP_STLCTL_CC_INTR_EN 0x10 /* Cmd Compl Intr Enable */ -#define VXGE_HAL_PCI_EXP_STLCTL_HP_INTR_EN 0x20 /* Hot-Plug Intr Enable */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_CTRL 0xC0 /* Attention Ind Control */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_RES 0x0 /* Reserved */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_ON 0x1 /* On */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_BLNK 0x2 /* Blink */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_OFF 0x3 /* Off */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_CTRL 0x300 /* POwer Indicator Control */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_RES 0x0 /* Reserved */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_ON 0x1 /* On */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_BLNK 0x2 /* Blink */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_OFF 0x3 /* Off */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_CTRL 0x400 /* Power Controller Ctrl */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_on 0x0 /* Power on */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_off 0x1 /* Power off */ -#define VXGE_HAL_PCI_EXP_STLCTL_EM_IL_CTRL 0x800 /* Ele-mec Interlock Crl */ -#define VXGE_HAL_PCI_EXP_STLCTL_DLL_ST_CH_EN 0x1000 /* DL Layer State Ch En */ - u16 pci_e_stlsta; -#define VXGE_HAL_PCI_EXP_STLSTA_ATTN_BTN 0x1 /* Attention Button Pressed */ -#define VXGE_HAL_PCI_EXP_STLSTA_PF_DET 0x2 /* Power Fault Detected */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CH 0x4 /* MRL Sensor Changed */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_CH 0x8 /* Presence Detect Changed */ -#define VXGE_HAL_PCI_EXP_STLSTA_CMD_COMPL 0x10 /* Command Completed */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_STA 0x20 /* MRL Sensor State */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CL 0x0 /* MRL Sensor State - closed */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_OP 0x1 /* MRL Sensor State - open */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_STA 0x400 /* Presence Detect State */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_EMPTY 0x0 /* Clost Empty */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_PRESENT 0x1 /* Card Present */ -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_STA 0x80 /* Ele-mec Intrlock Control */ -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_DIS 0x0 /* Disengaged */ -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_EN 0x1 /* Engaged */ -#define VXGE_HAL_PCI_EXP_STLSTA_DLL_ST_CH 0x100 /* DL Layer State Changed */ - u16 pci_e_rtctl; -#define VXGE_HAL_PCI_EXP_RTCTL_SECEE 0x01 /* Sys Err on Correctable Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_SENFEE 0x02 /* Sys Err on Non-Fatal Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_SEFEE 0x04 /* Sys Err on Fatal Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_PMEIE 0x08 /* PME Interrupt Enable */ -#define VXGE_HAL_PCI_EXP_RTCTL_CRSSVE 0x10 /* CRS SW Visibility Enable */ - u16 pci_e_rtcap; -#define VXGE_HAL_PCI_EXP_RTCAP_CRS_SW_VIS 0x01 /* CRS SW Visibility */ - u32 pci_e_rtsta; -#define VXGE_HAL_PCI_EXP_RTSTA_PME_REQ_ID 0xFFFF /* PME Requestor ID */ -#define VXGE_HAL_PCI_EXP_RTSTA_PME_STATUS 0x10000 /* PME status */ -#define VXGE_HAL_PCI_EXP_RTSTA_PME_PENDING 0x20000 /* PME Pending */ -} vxge_hal_pci_e_capability_le_t; - -typedef struct vxge_hal_pci_e_capability_t { -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - u16 pci_e_flags; -#define VXGE_HAL_PCI_EXP_FLAGS_VERS 0x000f /* Capability version */ -#define VXGE_HAL_PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ -#define VXGE_HAL_PCI_EXP_TYPE_ENDPOINT 0x0 /* Express Endpoint */ -#define VXGE_HAL_PCI_EXP_TYPE_LEG_END 0x1 /* Legacy Endpoint */ -#define VXGE_HAL_PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ -#define VXGE_HAL_PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */ -#define VXGE_HAL_PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */ -#define VXGE_HAL_PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCI/PCI-X Bridge */ -#define VXGE_HAL_PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */ -#define VXGE_HAL_PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */ - u8 next_capability_ptr; - u8 capability_id; - u32 pci_e_devcap; -#define VXGE_HAL_PCI_EXP_DEVCAP_PAYLOAD 0x07 /* Max_Payload_Size */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PHANTOM 0x18 /* Phantom functions */ -#define VXGE_HAL_PCI_EXP_DEVCAP_EXT_TAG 0x20 /* Extended tags */ -#define VXGE_HAL_PCI_EXP_DEVCAP_L0S 0x1c0 /* L0s Acceptable Latency */ -#define VXGE_HAL_PCI_EXP_DEVCAP_L1 0xe00 /* L1 Acceptable Latency */ -#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_BUT 0x1000 /* Attention Button Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_IND 0x2000 /* Attention Ind Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_IND 0x4000 /* Power Indicator Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */ - u16 pci_e_devsta; -#define VXGE_HAL_PCI_EXP_DEVSTA_CED 0x01 /* Correctable Err Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_NFED 0x02 /* Non-Fatal Error Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_FED 0x04 /* Fatal Error Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_URD 0x08 /* Unsupported Req Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_AUXPD 0x10 /* AUX Power Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */ - u16 pci_e_devctl; -#define VXGE_HAL_PCI_EXP_DEVCTL_CERE 0x0001 /* Corr'ble Err Reporting En. */ -#define VXGE_HAL_PCI_EXP_DEVCTL_NFERE 0x0002 /* Non-Fatal Err Reporting En */ -#define VXGE_HAL_PCI_EXP_DEVCTL_FERE 0x0004 /* Fatal Error Reporting En */ -#define VXGE_HAL_PCI_EXP_DEVCTL_URRE 0x0008 /* Unsupp Req Reporting En. */ -#define VXGE_HAL_PCI_EXP_DEVCTL_RELAX_EN 0x0010 /* Enable relaxed ordering */ -#define VXGE_HAL_PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */ -#define VXGE_HAL_PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_PHANTOM 0x0200 /* Phantom Functions Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_AUX_PME 0x0400 /* Auxiliary Power PM Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800 /* Enable No Snoop */ -#define VXGE_HAL_PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */ - u32 pci_e_lnkcap; -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_SPEED 0xf /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LS_2_5 0x1 /* 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LS_5 0x2 /* 5 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_RES 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X1 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X4 0x4 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X8 0x8 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X12 0xa /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X16 0x10 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X32 0x20 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ASPM 0xc00 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES1 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_LO 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_L0_L1 0x3 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LAT 0x7000 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LT_64 0x0 /* Less than 64 ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_64_128 0x1 /* 64 ns to less than 128 ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_128_256 0x2 /* 128 ns to less than 256 ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_256_512 0x3 /* 256 ns to less than 512 ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_512_1us 0x4 /* 512 ns to less than 1us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_1us_2us 0x5 /* 1us to less than 2us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_2us_4us 0x6 /* 2us-4us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_GT_4us 0x7 /* More than 4us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LAT 0x38000 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LT_1us 0x0 /* Less than 1us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_1us_2us 0x1 /* 1us to less than 2us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_2us_4us 0x2 /* 2us to less than 4us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_4us_8us 0x3 /* 4us to less than 8us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_8us_16us 0x4 /* 8us to less than 16us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_16us_32us 0x5 /* 16us to less than 32us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_32us_64us 0x6 /* 32us-64s. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_GT_64us 0x7 /* More than 64us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_CLK_PWR_MGMT 0x40000 /* Clk power management. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_DOWN_ERR_CAP 0x80000 /* Down error capable. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ACT_CAP 0x100000 /* DL active rep cap. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_BW_CAP 0x200000 /* DL bw rep cap. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_PORT_NUM 0xff000000 /* Port number. */ - u16 pci_e_lnksta; -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_SPEED 0xf /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LS_2_5 0x1 /* 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LS_5 0x2 /* 5 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_RES 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X1 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X4 0x4 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X8 0x8 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X12 0xa /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X16 0x10 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X32 0x20 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_TRAIN 0x800 /* Link training. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_SCLK_CFG 0x1000 /* Slot Clock Config. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_DLL_ACTIVE 0x2000 /* Data LL Active. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_BWM_STA 0x4000 /* Bw mgmt interrupt enable */ -#define VXGE_HAL_PCI_EXP_LNKSTA_ABW_STA 0x8000 /* Autonomous BW intr en */ - u16 pci_e_lnkctl; -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM 0x3 /* ASPM Control. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_DISABLED 0x0 /* Disabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_EN 0x1 /* L0 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L1_EN 0x2 /* L1 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_L1_EN 0x3 /* L0 & L1 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB 0x8 /* Read Compl Boundary. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_64 0x0 /* RCB 64 bytes. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_128 0x1 /* RCB 128 bytes. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_DISABLED 0x10 /* Disables the link. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RETRAIN 0x20 /* Retrain the link. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_CCCFG 0x40 /* Common clock config. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_EXT_SYNC 0x80 /* Extended Sync. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_CLK_PWRMGMT 0x100 /* Enable clk pwr mgmt. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_HW_AUTO_DIS 0x200 /* Hw autonomous w/dis */ -#define VXGE_HAL_PCI_EXP_LNKCTL_BWM_INTR_EN 0x400 /* Bw mgmt intr enable */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ABW_INTR_EN 0x800 /* Autonomous BW int en */ - u32 pci_e_stlcap; -#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_BTTN 0x1 /* Attention Button Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_PWR_CTRL 0x2 /* Power Control Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_MRL_SENS 0x4 /* MRL Sesor Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_IND 0x8 /* Attention Ind Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_PWR_IND 0x10 /* Power Indicator Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_HP_SURP 0x20 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_HP_CAP 0x40 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_VAL 0x7F80 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_250 0xF0 /* 250 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_275 0xF1 /* 275 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_300 0xF2 /* 300 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_LIM 0x18000 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_1X 0x0 /* 1.0x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY10 0x1 /* 0.1x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY100 0x2 /* 0.01x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY1000 0x3 /* 0.001x */ -#define VXGE_HAL_PCI_EXP_STLCAP_EM_INTR_LOCK 0x20000 /* Ele-mec Intrlock Pres */ -#define VXGE_HAL_PCI_EXP_STLCAP_NO_CMD_CMPL 0x40000 /* No Command Compl Supp */ -#define VXGE_HAL_PCI_EXP_STLCAP_PHY_SL_NO 0xFFF80000 /* Phy Slot Number */ - u16 pci_e_stlsta; -#define VXGE_HAL_PCI_EXP_STLSTA_ATTN_BTN 0x1 /* Attention Button Pressed */ -#define VXGE_HAL_PCI_EXP_STLSTA_PF_DET 0x2 /* Power Fault Detected */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CH 0x4 /* MRL Sensor Changed */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_CH 0x8 /* Presence Detect Changed */ -#define VXGE_HAL_PCI_EXP_STLSTA_CMD_COMPL 0x10 /* Command Completed */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_STA 0x20 /* MRL Sensor State */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CL 0x0 /* MRL Sensor State - closed */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_OP 0x1 /* MRL Sensor State - open */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_STA 0x400 /* Presence Detect State */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_EMPTY 0x0 /* Clost Empty */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_PRESENT 0x1 /* Card Present */ -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_STA 0x80 /* Ele-mec Intrlock Ctrl */ -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_DIS 0x0 /* Disengaged */ -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_EN 0x1 /* Engaged */ -#define VXGE_HAL_PCI_EXP_STLSTA_DLL_ST_CH 0x100 /* DL State Changed */ - u16 pci_e_stlctl; -#define VXGE_HAL_PCI_EXP_STLCTL_ATTN_BTN_EN 0x1 /* Atten Btn pressed en */ -#define VXGE_HAL_PCI_EXP_STLCTL_PF_DET_EN 0x2 /* Pwr Fault Detected En */ -#define VXGE_HAL_PCI_EXP_STLCTL_MRL_SENS_EN 0x4 /* MRL Sensor Changed En */ -#define VXGE_HAL_PCI_EXP_STLCTL_PDET_CH_EN 0x8 /* Presence Detect Changed En */ -#define VXGE_HAL_PCI_EXP_STLCTL_CC_INTR_EN 0x10 /* Cmmd Completed Intr En */ -#define VXGE_HAL_PCI_EXP_STLCTL_HP_INTR_EN 0x20 /* Hot-Plug Intr Enable */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_CTRL 0xC0 /* Attention Ind Ctrl */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_RES 0x0 /* Reserved */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_ON 0x1 /* On */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_BLNK 0x2 /* Blink */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_OFF 0x3 /* Off */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_CTRL 0x300 /* POwer Ind Control */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_RES 0x0 /* Reserved */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_ON 0x1 /* On */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_BLNK 0x2 /* Blink */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_OFF 0x3 /* Off */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_CTRL 0x400 /* Power Controller Ctrl */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_on 0x0 /* Power on */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_off 0x1 /* Power off */ -#define VXGE_HAL_PCI_EXP_STLCTL_EM_IL_CTRL 0x800 /* Ele-mec Intrlock Ctrl */ -#define VXGE_HAL_PCI_EXP_STLCTL_DLL_ST_CH_EN 0x1000 /* DL State Changed En */ - u16 pci_e_rtcap; -#define VXGE_HAL_PCI_EXP_RTCAP_CRS_SW_VIS 0x01 /* CRS Software Visibility */ - u16 pci_e_rtctl; -#define VXGE_HAL_PCI_EXP_RTCTL_SECEE 0x01 /* Sys Err on Correctable Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_SENFEE 0x02 /* Sys Err on Non-Fatal Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_SEFEE 0x04 /* Sys Err on Fatal Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_PMEIE 0x08 /* PME Intr Enable */ -#define VXGE_HAL_PCI_EXP_RTCTL_CRSSVE 0x10 /* CRS SW Visibility Enable */ - u32 pci_e_rtsta; -#define VXGE_HAL_PCI_EXP_RTSTA_PME_REQ_ID 0xFFFF /* PME Requestor ID */ -#define VXGE_HAL_PCI_EXP_RTSTA_PME_STATUS 0x10000 /* PME status */ -#define VXGE_HAL_PCI_EXP_RTSTA_PME_PENDING 0x20000 /* PME Pending */ -#else - u8 capability_id; - u8 next_capability_ptr; - u16 pci_e_flags; -#define VXGE_HAL_PCI_EXP_FLAGS_VERS 0x000f /* Capability version */ -#define VXGE_HAL_PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ -#define VXGE_HAL_PCI_EXP_TYPE_ENDPOINT 0x0 /* Express Endpoint */ -#define VXGE_HAL_PCI_EXP_TYPE_LEG_END 0x1 /* Legacy Endpoint */ -#define VXGE_HAL_PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ -#define VXGE_HAL_PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */ -#define VXGE_HAL_PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */ -#define VXGE_HAL_PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCI/PCI-X Bridge */ -#define VXGE_HAL_PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */ -#define VXGE_HAL_PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */ - u32 pci_e_devcap; -#define VXGE_HAL_PCI_EXP_DEVCAP_PAYLOAD 0x07 /* Max_Payload_Size */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PHANTOM 0x18 /* Phantom functions */ -#define VXGE_HAL_PCI_EXP_DEVCAP_EXT_TAG 0x20 /* Extended tags */ -#define VXGE_HAL_PCI_EXP_DEVCAP_L0S 0x1c0 /* L0s Acceptable Latency */ -#define VXGE_HAL_PCI_EXP_DEVCAP_L1 0xe00 /* L1 Acceptable Latency */ -#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_BUT 0x1000 /* Attention Button Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_IND 0x2000 /* Attention Ind Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_IND 0x4000 /* Power Indicator Present */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */ -#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */ - u16 pci_e_devctl; -#define VXGE_HAL_PCI_EXP_DEVCTL_CERE 0x0001 /* Corr'ble Err Reporting En. */ -#define VXGE_HAL_PCI_EXP_DEVCTL_NFERE 0x0002 /* Non-Fatal Err Reporting En */ -#define VXGE_HAL_PCI_EXP_DEVCTL_FERE 0x0004 /* Fatal Err Reporting En */ -#define VXGE_HAL_PCI_EXP_DEVCTL_URRE 0x0008 /* Unsupp Req Reporting En. */ -#define VXGE_HAL_PCI_EXP_DEVCTL_RELAX_EN 0x0010 /* Enable relaxed ordering */ -#define VXGE_HAL_PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */ -#define VXGE_HAL_PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_PHANTOM 0x0200 /* Phantom Functions Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_AUX_PME 0x0400 /* Auxiliary Power PM Enable */ -#define VXGE_HAL_PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800 /* Enable No Snoop */ -#define VXGE_HAL_PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */ - u16 pci_e_devsta; -#define VXGE_HAL_PCI_EXP_DEVSTA_CED 0x01 /* Correctable Error Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_NFED 0x02 /* Non-Fatal Error Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_FED 0x04 /* Fatal Error Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_URD 0x08 /* Unsupp Request Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_AUXPD 0x10 /* AUX Power Detected */ -#define VXGE_HAL_PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */ - u32 pci_e_lnkcap; -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_SPEED 0xf /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LS_2_5 0x1 /* 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LS_5 0x2 /* 5 and 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_RES 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X1 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X4 0x4 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X8 0x8 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X12 0xa /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X16 0x10 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X32 0x20 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ASPM 0xc00 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES1 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_LO 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_L0_L1 0x3 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LAT 0x7000 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LT_64 0x0 /* Less than 64 ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_64_128 0x1 /* 64ns to less than 128ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_128_256 0x2 /* 128ns to less than 256ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_256_512 0x3 /* 256ns to less than 512ns. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_512_1us 0x4 /* 512ns to less than 1us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_1us_2us 0x5 /* 1us to less than 2us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_2us_4us 0x6 /* 2us-4us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L0_GT_4us 0x7 /* More than 4us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LAT 0x38000 /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LT_1us 0x0 /* Less than 1us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_1us_2us 0x1 /* 1us to less than 2us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_2us_4us 0x2 /* 2us to less than 4us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_4us_8us 0x3 /* 4us to less than 8us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_8us_16us 0x4 /* 8us to less than 16us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_16us_32us 0x5 /* 16us to less than 32us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_32us_64us 0x6 /* 32us-64us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_L1_GT_64us 0x7 /* More than 64us. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_CLK_PWR_MGMT 0x40000 /* Clock power mgmt */ -#define VXGE_HAL_PCI_EXP_LNKCAP_DOWN_ERR_CAP 0x80000 /* Down error capable. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ACT_CAP 0x100000 /* DL active rep cap. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_BW_CAP 0x200000 /* DL bw rep cap. */ -#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_PORT_NUM 0xff000000 /* Port number. */ - u16 pci_e_lnkctl; -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM 0x3 /* ASPM Control. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_DISABLED 0x0 /* Disabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_EN 0x1 /* L0 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L1_EN 0x2 /* L1 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_L1_EN 0x3 /* L0 & L1 entry enabled. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB 0x8 /* Read Completion Boundary. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_64 0x0 /* RCB 64 bytes. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_128 0x1 /* RCB 128 bytes. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_DISABLED 0x10 /* Disables the link. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_RETRAIN 0x20 /* Retrain the link. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_CCCFG 0x40 /* Common clock config. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_EXT_SYNC 0x80 /* Extended Sync. */ -#define VXGE_HAL_PCI_EXP_LNKCTL_CLK_PWRMGMT 0x100 /* Enable clock power mgmt */ -#define VXGE_HAL_PCI_EXP_LNKCTL_HW_AUTO_DIS 0x200 /* HW autonomous with dis */ -#define VXGE_HAL_PCI_EXP_LNKCTL_BWM_INTR_EN 0x400 /* Bw mgmt interrupt enable */ -#define VXGE_HAL_PCI_EXP_LNKCTL_ABW_INTR_EN 0x800 /* Autonomous BW int enable */ - u16 pci_e_lnksta; -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_SPEED 0xf /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LS_2_5 0x1 /* 2.5 Gb/s supported. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LS_5 0x2 /* 5 and 2.5 Gb/s supported */ - /* Supported Link speeds. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_WIDTH 0x3f0 -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_RES 0x0 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X1 0x1 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X2 0x2 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X4 0x4 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X8 0x8 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X12 0xa /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X16 0x10 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X32 0x20 /* Reserved. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_TRAIN 0x800 /* Link training. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_SCLK_CFG 0x1000 /* Slot Clock Config. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_DLL_ACTIVE 0x2000 /* Data LL Active. */ -#define VXGE_HAL_PCI_EXP_LNKSTA_BWM_STA 0x4000 /* Bw mgmt intr enable */ -#define VXGE_HAL_PCI_EXP_LNKSTA_ABW_STA 0x8000 /* Autonomous BW intr en */ - u32 pci_e_stlcap; -#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_BTTN 0x1 /* Attention Button Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_PWR_CTRL 0x2 /* Power Control Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_MRL_SENS 0x4 /* MRL Sesor Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_IND 0x8 /* Attention Ind Present */ - /* Power Indicator Present */ -#define VXGE_HAL_PCI_EXP_STLCAP_PWR_IND 0x10 -#define VXGE_HAL_PCI_EXP_STLCAP_HP_SURP 0x20 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_HP_CAP 0x40 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_VAL 0x7F80 /* Hot-Plug Surprise */ - /* 250 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_250 0xF0 - /* 275 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_275 0xF1 - /* 300 W Slot Power Limit */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_300 0xF2 -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_LIM 0x18000 /* Hot-Plug Surprise */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_1X 0x0 /* 1.0x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY10 0x1 /* 0.1x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY100 0x2 /* 0.01x */ -#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY1000 0x3 /* 0.001x */ -#define VXGE_HAL_PCI_EXP_STLCAP_EM_INTR_LOCK 0x20000 /* Ele-mec Intrlock Pres */ -#define VXGE_HAL_PCI_EXP_STLCAP_NO_CMD_CMPL 0x40000 /* No Cmd Completed Supp */ -#define VXGE_HAL_PCI_EXP_STLCAP_PHY_SL_NO 0xFFF80000 /* Phys Slot Number */ - u16 pci_e_stlctl; -#define VXGE_HAL_PCI_EXP_STLCTL_ATTN_BTN_EN 0x1 /* Atten Bttn pressed en */ -#define VXGE_HAL_PCI_EXP_STLCTL_PF_DET_EN 0x2 /* Power Fault Detected En */ -#define VXGE_HAL_PCI_EXP_STLCTL_MRL_SENS_EN 0x4 /* MRL Sensor Changed Enable */ -#define VXGE_HAL_PCI_EXP_STLCTL_PDET_CH_EN 0x8 /* Presence Detect Changed En */ -#define VXGE_HAL_PCI_EXP_STLCTL_CC_INTR_EN 0x10 /* Cmd Compl Intr Enable */ -#define VXGE_HAL_PCI_EXP_STLCTL_HP_INTR_EN 0x20 /* Hot-Plug Intr Enable */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_CTRL 0xC0 /* Atten Ind Control */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_RES 0x0 /* Reserved */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_ON 0x1 /* On */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_BLNK 0x2 /* Blink */ -#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_OFF 0x3 /* Off */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_CTRL 0x300 /* Power Ind Control */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_RES 0x0 /* Reserved */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_ON 0x1 /* On */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_BLNK 0x2 /* Blink */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_OFF 0x3 /* Off */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_CTRL 0x400 /* Power Controller Ctrl */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_on 0x0 /* Power on */ -#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_off 0x1 /* Power off */ -#define VXGE_HAL_PCI_EXP_STLCTL_EM_IL_CTRL 0x800 /* Ele-mec Intrlock Ctrl */ -#define VXGE_HAL_PCI_EXP_STLCTL_DLL_ST_CH_EN 0x1000 /* DL State Changed En */ - u16 pci_e_stlsta; -#define VXGE_HAL_PCI_EXP_STLSTA_ATTN_BTN 0x1 /* Attention Button Pressed */ -#define VXGE_HAL_PCI_EXP_STLSTA_PF_DET 0x2 /* Power Fault Detected */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CH 0x4 /* MRL Sensor Changed */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_CH 0x8 /* Presence Detect Changed */ -#define VXGE_HAL_PCI_EXP_STLSTA_CMD_COMPL 0x10 /* Command Completed */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_STA 0x20 /* MRL Sensor State */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CL 0x0 /* MRL Sensor State - closed */ -#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_OP 0x1 /* MRL Sensor State - open */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_STA 0x400 /* Presence Detect State */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_EMPTY 0x0 /* Clost Empty */ -#define VXGE_HAL_PCI_EXP_STLSTA_PDET_PRESENT 0x1 /* Card Present */ - /* Ele-mec Interlock Control */ -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_STA 0x80 -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_DIS 0x0 /* Disengaged */ -#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_EN 0x1 /* Engaged */ - /* DL Layer State Changed */ -#define VXGE_HAL_PCI_EXP_STLSTA_DLL_ST_CH 0x100 - u16 pci_e_rtctl; -#define VXGE_HAL_PCI_EXP_RTCTL_SECEE 0x01 /* Sys Err on Correctable Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_SENFEE 0x02 /* Sys Err on Non-Fatal Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_SEFEE 0x04 /* Sys Err on Fatal Error */ -#define VXGE_HAL_PCI_EXP_RTCTL_PMEIE 0x08 /* PME Interrupt Enable */ -#define VXGE_HAL_PCI_EXP_RTCTL_CRSSVE 0x10 /* CRS SW Visibility Enable */ - u16 pci_e_rtcap; -#define VXGE_HAL_PCI_EXP_RTCAP_CRS_SW_VIS 0x01 /* CRS SW Visibility */ - u32 pci_e_rtsta; -#define VXGE_HAL_PCI_EXP_RTSTA_PME_REQ_ID 0xFFFF /* PME Requestor ID */ -#define VXGE_HAL_PCI_EXP_RTSTA_PME_STATUS 0x10000 /* PME status */ -#define VXGE_HAL_PCI_EXP_RTSTA_PME_PENDING 0x20000 /* PME Pending */ -#endif -} vxge_hal_pci_e_capability_t; - -typedef u32 vxge_hal_pci_e_caps_offset_t; - -#define VXGE_HAL_PCI_EXT_CAP_ID(header) (header & 0x0000ffff) -#define VXGE_HAL_PCI_EXT_CAP_VER(header) ((header >> 16) & 0xf) -#define VXGE_HAL_PCI_EXT_CAP_NEXT(header) ((header >> 20) & 0xffc) - -#define VXGE_HAL_PCI_EXT_CAP_ID_ERR 1 -#define VXGE_HAL_PCI_EXT_CAP_ID_VC 2 -#define VXGE_HAL_PCI_EXT_CAP_ID_DSN 3 -#define VXGE_HAL_PCI_EXT_CAP_ID_PWR 4 - -typedef struct vxge_hal_err_capability_t { - u32 pci_err_header; - u32 pci_err_uncor_status; -#define VXGE_HAL_PCI_ERR_UNC_TRAIN 0x00000001 /* Training */ -#define VXGE_HAL_PCI_ERR_UNC_DLP 0x00000010 /* Data Link Protocol */ -#define VXGE_HAL_PCI_ERR_UNC_POISON_TLP 0x00001000 /* Poisoned TLP */ -#define VXGE_HAL_PCI_ERR_UNC_FCP 0x00002000 /* Flow Control Protocol */ -#define VXGE_HAL_PCI_ERR_UNC_COMP_TIME 0x00004000 /* Completion Timeout */ -#define VXGE_HAL_PCI_ERR_UNC_COMP_ABORT 0x00008000 /* Completer Abort */ -#define VXGE_HAL_PCI_ERR_UNC_UNX_COMP 0x00010000 /* Unexpected Completion */ -#define VXGE_HAL_PCI_ERR_UNC_RX_OVER 0x00020000 /* Receiver Overflow */ -#define VXGE_HAL_PCI_ERR_UNC_MALF_TLP 0x00040000 /* Malformed TLP */ -#define VXGE_HAL_PCI_ERR_UNC_ECRC 0x00080000 /* ECRC Error Status */ -#define VXGE_HAL_PCI_ERR_UNC_UNSUP 0x00100000 /* Unsupported Request */ - u32 pci_err_uncor_mask; - u32 pci_err_uncor_server; - u32 pci_err_cor_status; -#define VXGE_HAL_PCI_ERR_COR_RCVR 0x00000001 /* Receiver Error Status */ -#define VXGE_HAL_PCI_ERR_COR_BAD_TLP 0x00000040 /* Bad TLP Status */ -#define VXGE_HAL_PCI_ERR_COR_BAD_DLLP 0x00000080 /* Bad DLLP Status */ -#define VXGE_HAL_PCI_ERR_COR_REP_ROLL 0x00000100 /* REPLAY_NUM Rollover */ -#define VXGE_HAL_PCI_ERR_COR_REP_TIMER 0x00001000 /* Replay Timer Timeout */ -#define VXGE_HAL_PCI_ERR_COR_MASK 20 /* Correctable Error Mask */ - u32 pci_err_cap; -#define VXGE_HAL_PCI_ERR_CAP_FEP(x) ((x) & 31) /* First Error Pointer */ - /* ECRC Generation Capable */ -#define VXGE_HAL_PCI_ERR_CAP_ECRC_GENC 0x00000020 - -#define VXGE_HAL_PCI_ERR_CAP_ECRC_GENE 0x00000040 /* ECRC Generation Enable */ -#define VXGE_HAL_PCI_ERR_CAP_ECRC_CHKC 0x00000080 /* ECRC Check Capable */ -#define VXGE_HAL_PCI_ERR_CAP_ECRC_CHKE 0x00000100 /* ECRC Check Enable */ - u32 err_header_log; -#define VXGE_HAL_PCI_ERR_HEADER_LOG(x) ((x) >> 31) /* Error Header Log */ - u32 unused2[3]; - u32 pci_err_root_command; - u32 pci_err_root_status; - u32 pci_err_root_cor_src; - u32 pci_err_root_src; -} vxge_hal_err_capability_t; - -typedef struct vxge_hal_vc_capability_t { - u32 pci_vc_header; - u32 pci_vc_port_reg1; - u32 pci_vc_port_reg2; - u32 pci_vc_port_ctrl; - u32 pci_vc_port_status; - u32 pci_vc_res_cap; - u32 pci_vc_res_ctrl; - u32 pci_vc_res_status; -} vxge_hal_vc_capability_t; - -typedef struct vxge_hal_pwr_budget_capability_t { - u32 pci_pwr_header; - u32 pci_pwr_dsr; - u32 pci_pwr_data; -#define VXGE_HAL_PCI_PWR_DATA_BASE(x) ((x) & 0xff) /* Base Power */ -#define VXGE_HAL_PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3) /* Data Scale */ -#define VXGE_HAL_PCI_PWR_DATA_PM_SUB(x) (((x) >> 10) & 7) /* PM Sub State */ -#define VXGE_HAL_PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3) /* PM State */ -#define VXGE_HAL_PCI_PWR_DATA_TYPE(x) (((x) >> 15) & 7) /* Type */ -#define VXGE_HAL_PCI_PWR_DATA_RAIL(x) (((x) >> 18) & 7) /* Power Rail */ - u32 pci_pwr_cap; -#define VXGE_HAL_PCI_PWR_CAP_BUDGET(x) ((x) & 1) /* Include in sys budget */ -} vxge_hal_pwr_budget_capability_t; - -typedef struct vxge_hal_pci_e_ext_caps_offset_t { - u32 err_cap_offset; - u32 vc_cap_offset; - u32 dsn_cap_offset; - u32 pwr_budget_cap_offset; -} vxge_hal_pci_e_ext_caps_offset_t; - -#pragma pack() - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-ring.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-ring.h +++ sys/dev/vxge/vxgehal/vxgehal-ring.h @@ -1,203 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_RING_H -#define VXGE_HAL_RING_H - -__EXTERN_BEGIN_DECLS - -typedef u8 vxge_hal_ring_block_t[VXGE_OS_HOST_PAGE_SIZE]; - -#define VXGE_HAL_RING_NEXT_BLOCK_POINTER_OFFSET (VXGE_OS_HOST_PAGE_SIZE-8) -#define VXGE_HAL_RING_MEMBLOCK_IDX_OFFSET (VXGE_OS_HOST_PAGE_SIZE-16) - -/* - * struct __hal_ring_rxd_priv_t - Receive descriptor HAL-private data. - * @dma_addr: DMA (mapped) address of _this_ descriptor. - * @dma_handle: DMA handle used to map the descriptor onto device. - * @dma_offset: Descriptor's offset in the memory block. HAL allocates - * descriptors in memory blocks of %VXGE_OS_HOST_PAGE_SIZE - * bytes. Each memblock is contiguous DMA-able memory. Each - * memblock contains 1 or more 4KB RxD blocks visible to the - * X3100 hardware. - * @dma_object: DMA address and handle of the memory block that contains - * the descriptor. This member is used only in the "checked" - * version of the HAL (to enforce certain assertions); - * otherwise it gets compiled out. - * @allocated: True if the descriptor is reserved, 0 otherwise. Internal usage. - * @db_bytes: Number of doorbell bytes to be posted for this Rxd. This includes - * next RxD block pointers - * - * Per-receive decsriptor HAL-private data. HAL uses the space to keep DMA - * information associated with the descriptor. Note that ULD can ask HAL - * to allocate additional per-descriptor space for its own (ULD-specific) - * purposes. - */ -typedef struct __hal_ring_rxd_priv_t { - dma_addr_t dma_addr; - pci_dma_h dma_handle; - ptrdiff_t dma_offset; -#if defined(VXGE_DEBUG_ASSERT) - vxge_hal_mempool_dma_t *dma_object; -#endif -#if defined(VXGE_OS_MEMORY_CHECK) - u32 allocated; -#endif - u32 db_bytes; -} __hal_ring_rxd_priv_t; - - -/* - * struct __hal_ring_t - Ring channel. - * @channel: Channel "base" of this ring, the common part of all HAL - * channels. - * @mempool: Memory pool, the pool from which descriptors get allocated. - * (See vxge_hal_mm.h). - * @config: Ring configuration, part of device configuration - * (see vxge_hal_device_config_t {}). - * @ring_length: Length of the ring - * @buffer_mode: 1, 3, or 5. The value specifies a receive buffer mode, - * as per X3100 User Guide. - * @indicate_max_pkts: Maximum number of packets processed within a single - * interrupt. Can be used to limit the time spent inside hw interrupt. - * @rxd_size: RxD sizes for 1-, 3- or 5- buffer modes. As per X3100 spec, - * 1-buffer mode descriptor is 32 byte long, etc. - * @rxd_priv_size: Per RxD size reserved (by HAL) for ULD to keep per-descriptor - * data (e.g., DMA handle for Solaris) - * @per_rxd_space: Per rxd space requested by ULD - * @rxds_per_block: Number of descriptors per hardware-defined RxD - * block. Depends on the (1-, 3-, 5-) buffer mode. - * @rxdblock_priv_size: Reserved at the end of each RxD block. HAL internal - * usage. Not to confuse with @rxd_priv_size. - * @rxd_mem_avail: Available RxD memory - * @db_byte_count: Number of doorbell bytes to be posted - * @cmpl_cnt: Completion counter. Is reset to zero upon entering the ISR. - * Used in conjunction with @indicate_max_pkts. - * @active_sw_lros: List of Software LRO sessions in progess - * @active_sw_lro_count: Number of Software LRO sessions in progess - * @free_sw_lros: List of Software LRO sessions free - * @free_sw_lro_count: Number of Software LRO sessions free - * @sw_lro_lock: LRO session lists' lock - * @callback: Channel completion callback. HAL invokes the callback when there - * are new completions on that channel. In many implementations - * the @callback executes in the hw interrupt context. - * @rxd_init: Channel's descriptor-initialize callback. - * See vxge_hal_ring_rxd_init_f {}. - * If not NULL, HAL invokes the callback when opening the ring. - * @rxd_term: Channel's descriptor-terminate callback. If not NULL, - * HAL invokes the callback when closing the corresponding channel. - * See also vxge_hal_channel_rxd_term_f {}. - * @stats: Statistics for ring - * Ring channel. - * - * Note: The structure is cache line aligned to better utilize - * CPU cache performance. - */ -typedef struct __hal_ring_t { - __hal_channel_t channel; - vxge_hal_mempool_t *mempool; - vxge_hal_ring_config_t *config; - u32 ring_length; - u32 buffer_mode; - u32 indicate_max_pkts; - u32 rxd_size; - u32 rxd_priv_size; - u32 per_rxd_space; - u32 rxds_per_block; - u32 rxdblock_priv_size; - u32 rxd_mem_avail; - u32 db_byte_count; - u32 cmpl_cnt; - vxge_hal_ring_callback_f callback; - vxge_hal_ring_rxd_init_f rxd_init; - vxge_hal_ring_rxd_term_f rxd_term; - vxge_hal_vpath_stats_sw_ring_info_t *stats; -} __vxge_os_attr_cacheline_aligned __hal_ring_t; - -#define VXGE_HAL_RING_ULD_PRIV(ring, rxdh) \ - ring->channel.dtr_arr[ \ - ((vxge_hal_ring_rxd_5_t *)(rxdh))->host_control].uld_priv - -#define VXGE_HAL_RING_HAL_PRIV(ring, rxdh) \ - ((__hal_ring_rxd_priv_t *)(ring->channel.dtr_arr[ \ - ((vxge_hal_ring_rxd_5_t *)(rxdh))->host_control].hal_priv)) - -#define VXGE_HAL_RING_POST_DOORBELL(vph, ringh) \ -{ \ - if (((__hal_ring_t *)(ringh))->config->post_mode == \ - VXGE_HAL_RING_POST_MODE_DOORBELL) { \ - vxge_hal_ring_rxd_post_post_db(vph); \ - } \ -} - -#define VXGE_HAL_RING_RXD_INDEX(rxdp) \ - (u32)((vxge_hal_ring_rxd_5_t *)rxdp)->host_control - -/* ========================== RING PRIVATE API ============================ */ - -u64 -__hal_ring_first_block_address_get( - vxge_hal_ring_h ringh); - -vxge_hal_status_e -__hal_ring_create( - vxge_hal_vpath_h vpath_handle, - vxge_hal_ring_attr_t *attr); - -void -__hal_ring_abort( - vxge_hal_ring_h ringh, - vxge_hal_reopen_e reopen); - -vxge_hal_status_e -__hal_ring_reset( - vxge_hal_ring_h ringh); - -void -__hal_ring_delete( - vxge_hal_vpath_h vpath_handle); - -vxge_hal_status_e -vxge_hal_ring_initial_replenish( - __hal_ring_t *ring, - vxge_hal_reopen_e reopen); - -vxge_hal_status_e -__hal_ring_frame_length_set( - __hal_virtualpath_t *vpath, - u32 new_frmlen); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_RING_H */ Index: sys/dev/vxge/vxgehal/vxgehal-ring.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-ring.c +++ sys/dev/vxge/vxgehal/vxgehal-ring.c @@ -1,1817 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * __hal_ring_block_memblock_idx - Return the memblock index - * @block: Virtual address of memory block - * - * This function returns the index of memory block - */ -static inline u32 -__hal_ring_block_memblock_idx( - vxge_hal_ring_block_t block) -{ - return (u32)*((u64 *) ((void *)((u8 *) block + - VXGE_HAL_RING_MEMBLOCK_IDX_OFFSET))); -} - -/* - * __hal_ring_block_memblock_idx_set - Sets the memblock index - * @block: Virtual address of memory block - * @memblock_idx: Index of memory block - * - * This function sets index to a memory block - */ -static inline void -__hal_ring_block_memblock_idx_set( - vxge_hal_ring_block_t block, - u32 memblock_idx) -{ - *((u64 *) ((void *)((u8 *) block + - VXGE_HAL_RING_MEMBLOCK_IDX_OFFSET))) = memblock_idx; -} - -#if 0 -/* - * __hal_ring_block_next_pointer - Returns the dma address of next block - * @block: RxD block - * - * Returns the dma address of next block stored in the RxD block - */ -static inline dma_addr_t -/* LINTED */ -__hal_ring_block_next_pointer( - vxge_hal_ring_block_t *block) -{ - return (dma_addr_t)*((u64 *) ((void *)((u8 *) block + - VXGE_HAL_RING_NEXT_BLOCK_POINTER_OFFSET))); -} -#endif - -/* - * __hal_ring_block_next_pointer_set - Sets the next block pointer in RxD block - * @block: RxD block - * @dma_next: dma address of next block - * - * Sets the next block pointer in RxD block - */ -static inline void -__hal_ring_block_next_pointer_set( - vxge_hal_ring_block_t *block, - dma_addr_t dma_next) -{ - *((u64 *) ((void *)((u8 *) block + - VXGE_HAL_RING_NEXT_BLOCK_POINTER_OFFSET))) = dma_next; -} - -/* - * __hal_ring_first_block_address_get - Returns the dma address of the - * first block - * @ringh: Handle to the ring - * - * Returns the dma address of the first RxD block - */ -u64 -__hal_ring_first_block_address_get( - vxge_hal_ring_h ringh) -{ - __hal_ring_t *ring = (__hal_ring_t *) ringh; - vxge_hal_mempool_dma_t *dma_object; - - dma_object = __hal_mempool_memblock_dma(ring->mempool, 0); - - vxge_assert(dma_object != NULL); - - return (dma_object->addr); -} - - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_RXD_STREAMING) -/* - * __hal_ring_item_dma_offset - Return the dma offset of an item - * @mempoolh: Handle to the memory pool of the ring - * @item: Item for which to get the dma offset - * - * This function returns the dma offset of a given item - */ -static ptrdiff_t -__hal_ring_item_dma_offset( - vxge_hal_mempool_h mempoolh, - void *item) -{ - u32 memblock_idx; - void *memblock; - vxge_hal_mempool_t *mempool = (vxge_hal_mempool_t *) mempoolh; - __hal_device_t *hldev; - - vxge_assert((mempoolh != NULL) && (item != NULL) && - (dma_handle != NULL)); - - hldev = (__hal_device_t *) mempool->devh; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "mempoolh = 0x"VXGE_OS_STXFMT", item = 0x"VXGE_OS_STXFMT, - (ptr_t) mempoolh, (ptr_t) item); - - /* get owner memblock index */ - memblock_idx = __hal_ring_block_memblock_idx(item); - - /* get owner memblock by memblock index */ - memblock = __hal_mempool_memblock(mempoolh, memblock_idx); - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return ((u8 *) item - (u8 *) memblock); -} -#endif - -/* - * __hal_ring_item_dma_addr - Return the dma address of an item - * @mempoolh: Handle to the memory pool of the ring - * @item: Item for which to get the dma offset - * @dma_handle: dma handle - * - * This function returns the dma address of a given item - */ -static dma_addr_t -__hal_ring_item_dma_addr( - vxge_hal_mempool_h mempoolh, - void *item, - pci_dma_h *dma_handle) -{ - u32 memblock_idx; - void *memblock; - vxge_hal_mempool_dma_t *memblock_dma_object; - vxge_hal_mempool_t *mempool = (vxge_hal_mempool_t *) mempoolh; - __hal_device_t *hldev; - ptrdiff_t dma_item_offset; - - vxge_assert((mempoolh != NULL) && (item != NULL) && - (dma_handle != NULL)); - - hldev = (__hal_device_t *) mempool->devh; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "mempoolh = 0x"VXGE_OS_STXFMT", item = 0x"VXGE_OS_STXFMT", " - "dma_handle = 0x"VXGE_OS_STXFMT, (ptr_t) mempoolh, - (ptr_t) item, (ptr_t) dma_handle); - - /* get owner memblock index */ - memblock_idx = __hal_ring_block_memblock_idx((u8 *) item); - - /* get owner memblock by memblock index */ - memblock = __hal_mempool_memblock( - (vxge_hal_mempool_t *) mempoolh, memblock_idx); - - /* get memblock DMA object by memblock index */ - memblock_dma_object = __hal_mempool_memblock_dma( - (vxge_hal_mempool_t *) mempoolh, memblock_idx); - - /* calculate offset in the memblock of this item */ - /* LINTED */ - dma_item_offset = (u8 *) item - (u8 *) memblock; - - *dma_handle = memblock_dma_object->handle; - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (memblock_dma_object->addr + dma_item_offset); -} - -/* - * __hal_ring_rxdblock_link - Link the RxD blocks - * @mempoolh: Handle to the memory pool of the ring - * @ring: ring - * @from: RxD block from which to link - * @to: RxD block to which to link to - * - * This function returns the dma address of a given item - */ -static void -__hal_ring_rxdblock_link( - vxge_hal_mempool_h mempoolh, - __hal_ring_t *ring, - u32 from, - u32 to) -{ - vxge_hal_ring_block_t *to_item, *from_item; - dma_addr_t to_dma, from_dma; - pci_dma_h to_dma_handle, from_dma_handle; - __hal_device_t *hldev; - - vxge_assert((mempoolh != NULL) && (ring != NULL)); - - hldev = (__hal_device_t *) ring->channel.devh; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "mempoolh = 0x"VXGE_OS_STXFMT", ring = 0x"VXGE_OS_STXFMT", " - "from = %d, to = %d", (ptr_t) mempoolh, (ptr_t) ring, from, to); - - /* get "from" RxD block */ - from_item = (vxge_hal_ring_block_t *) __hal_mempool_item( - (vxge_hal_mempool_t *) mempoolh, from); - vxge_assert(from_item); - - /* get "to" RxD block */ - to_item = (vxge_hal_ring_block_t *) __hal_mempool_item( - (vxge_hal_mempool_t *) mempoolh, to); - vxge_assert(to_item); - - /* return address of the beginning of previous RxD block */ - to_dma = __hal_ring_item_dma_addr(mempoolh, to_item, &to_dma_handle); - - /* - * set next pointer for this RxD block to point on - * previous item's DMA start address - */ - __hal_ring_block_next_pointer_set(from_item, to_dma); - - /* return "from" RxD block's DMA start address */ - from_dma = __hal_ring_item_dma_addr( - mempoolh, from_item, &from_dma_handle); - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_RXD_STREAMING) - /* we must sync "from" RxD block, so hardware will see it */ - vxge_os_dma_sync(ring->channel.pdev, - from_dma_handle, - from_dma + VXGE_HAL_RING_NEXT_BLOCK_POINTER_OFFSET, - __hal_ring_item_dma_offset(mempoolh, from_item) + - VXGE_HAL_RING_NEXT_BLOCK_POINTER_OFFSET, - sizeof(u64), - VXGE_OS_DMA_DIR_TODEVICE); -#endif - - vxge_hal_info_log_ring( - "block%d:0x"VXGE_OS_STXFMT" => block%d:0x"VXGE_OS_STXFMT, - from, (ptr_t) from_dma, to, (ptr_t) to_dma); - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - -} - -/* - * __hal_ring_mempool_item_alloc - Allocate List blocks for RxD block callback - * @mempoolh: Handle to memory pool - * @memblock: Address of this memory block - * @memblock_index: Index of this memory block - * @dma_object: dma object for this block - * @item: Pointer to this item - * @index: Index of this item in memory block - * @is_last: If this is last item in the block - * @userdata: Specific data of user - * - * This function is callback passed to __hal_mempool_create to create memory - * pool for RxD block - */ -static vxge_hal_status_e -__hal_ring_mempool_item_alloc( - vxge_hal_mempool_h mempoolh, - void *memblock, - u32 memblock_index, - vxge_hal_mempool_dma_t *dma_object, - void *item, - u32 item_index, - u32 is_last, - void *userdata) -{ - u32 i; - __hal_ring_t *ring = (__hal_ring_t *) userdata; - __hal_device_t *hldev; - - vxge_assert((item != NULL) && (ring != NULL)); - - hldev = (__hal_device_t *) ring->channel.devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool( - "mempoolh = 0x"VXGE_OS_STXFMT", memblock = 0x"VXGE_OS_STXFMT", " - "memblock_index = %d, dma_object = 0x"VXGE_OS_STXFMT", " - "item = 0x"VXGE_OS_STXFMT", item_index = %d, is_last = %d, " - "userdata = 0x"VXGE_OS_STXFMT, (ptr_t) mempoolh, (ptr_t) memblock, - memblock_index, (ptr_t) dma_object, (ptr_t) item, item_index, is_last, - (ptr_t) userdata); - - /* format rxds array */ - for (i = 0; i < ring->rxds_per_block; i++) { - - void *uld_priv; - void *rxdblock_priv; - __hal_ring_rxd_priv_t *rxd_priv; - vxge_hal_ring_rxd_1_t *rxdp; - u32 memblock_item_idx; - u32 dtr_index = item_index * ring->rxds_per_block + i; - - ring->channel.dtr_arr[dtr_index].dtr = - ((u8 *) item) + i * ring->rxd_size; - - /* - * Note: memblock_item_idx is index of the item within - * the memblock. For instance, in case of three RxD-blocks - * per memblock this value can be 0, 1 or 2. - */ - rxdblock_priv = __hal_mempool_item_priv( - (vxge_hal_mempool_t *) mempoolh, - memblock_index, - item, - &memblock_item_idx); - - rxdp = (vxge_hal_ring_rxd_1_t *) - ring->channel.dtr_arr[dtr_index].dtr; - - uld_priv = ((u8 *) rxdblock_priv + ring->rxd_priv_size * i); - rxd_priv = - (__hal_ring_rxd_priv_t *) ((void *)(((char *) uld_priv) + - ring->per_rxd_space)); - - ((vxge_hal_ring_rxd_5_t *) rxdp)->host_control = dtr_index; - - ring->channel.dtr_arr[dtr_index].uld_priv = (void *)uld_priv; - ring->channel.dtr_arr[dtr_index].hal_priv = (void *)rxd_priv; - - /* pre-format per-RxD Ring's private */ - /* LINTED */ - rxd_priv->dma_offset = (u8 *) rxdp - (u8 *) memblock; - rxd_priv->dma_addr = dma_object->addr + rxd_priv->dma_offset; - rxd_priv->dma_handle = dma_object->handle; -#if defined(VXGE_DEBUG_ASSERT) - rxd_priv->dma_object = dma_object; -#endif - rxd_priv->db_bytes = ring->rxd_size; - - if (i == (ring->rxds_per_block - 1)) { - rxd_priv->db_bytes += - (((vxge_hal_mempool_t *) mempoolh)->memblock_size - - (ring->rxds_per_block * ring->rxd_size)); - } - } - - __hal_ring_block_memblock_idx_set((u8 *) item, memblock_index); - if (is_last) { - /* link last one with first one */ - __hal_ring_rxdblock_link(mempoolh, ring, item_index, 0); - } - - if (item_index > 0) { - /* link this RxD block with previous one */ - __hal_ring_rxdblock_link(mempoolh, ring, item_index - 1, item_index); - } - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * __hal_ring_mempool_item_free - Free RxD blockt callback - * @mempoolh: Handle to memory pool - * @memblock: Address of this memory block - * @memblock_index: Index of this memory block - * @dma_object: dma object for this block - * @item: Pointer to this item - * @index: Index of this item in memory block - * @is_last: If this is last item in the block - * @userdata: Specific data of user - * - * This function is callback passed to __hal_mempool_free to destroy memory - * pool for RxD block - */ -static vxge_hal_status_e -__hal_ring_mempool_item_free( - vxge_hal_mempool_h mempoolh, - void *memblock, - u32 memblock_index, - vxge_hal_mempool_dma_t *dma_object, - void *item, - u32 item_index, - u32 is_last, - void *userdata) -{ - __hal_ring_t *ring = (__hal_ring_t *) userdata; - __hal_device_t *hldev; - - vxge_assert((item != NULL) && (ring != NULL)); - - hldev = (__hal_device_t *) ring->channel.devh; - - vxge_hal_trace_log_pool("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_pool( - "mempoolh = 0x"VXGE_OS_STXFMT", memblock = 0x"VXGE_OS_STXFMT", " - "memblock_index = %d, dma_object = 0x"VXGE_OS_STXFMT", " - "item = 0x"VXGE_OS_STXFMT", item_index = %d, is_last = %d, " - "userdata = 0x"VXGE_OS_STXFMT, (ptr_t) mempoolh, (ptr_t) memblock, - memblock_index, (ptr_t) dma_object, (ptr_t) item, item_index, is_last, - (ptr_t) userdata); - - vxge_hal_trace_log_pool("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * __hal_ring_initial_replenish - Initial replenish of RxDs - * @ring: ring - * @reopen: Flag to denote if it is open or repopen - * - * This function replenishes the RxDs from reserve array to work array - */ -static vxge_hal_status_e -__hal_ring_initial_replenish( - __hal_ring_t *ring, - vxge_hal_reopen_e reopen) -{ - vxge_hal_rxd_h rxd; - void *uld_priv; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert(ring != NULL); - - hldev = (__hal_device_t *) ring->channel.devh; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring("ring = 0x"VXGE_OS_STXFMT", reopen = %d", - (ptr_t) ring, reopen); - - while (vxge_hal_ring_rxd_reserve(ring->channel.vph, &rxd, &uld_priv) == - VXGE_HAL_OK) { - - if (ring->rxd_init) { - status = ring->rxd_init(ring->channel.vph, - rxd, - uld_priv, - VXGE_HAL_RING_RXD_INDEX(rxd), - ring->channel.userdata, - reopen); - if (status != VXGE_HAL_OK) { - vxge_hal_ring_rxd_free(ring->channel.vph, rxd); - vxge_hal_trace_log_ring("<== %s:%s:%d \ - Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - } - - vxge_hal_ring_rxd_post(ring->channel.vph, rxd); - } - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * __hal_ring_create - Create a Ring - * @vpath_handle: Handle returned by virtual path open - * @attr: Ring configuration parameters structure - * - * This function creates Ring and initializes it. - * - */ -vxge_hal_status_e -__hal_ring_create( - vxge_hal_vpath_h vpath_handle, - vxge_hal_ring_attr_t *attr) -{ - vxge_hal_status_e status; - __hal_ring_t *ring; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - vxge_hal_ring_config_t *config; - __hal_device_t *hldev; - - vxge_assert((vpath_handle != NULL) && (attr != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", attr = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) attr); - - if ((vpath_handle == NULL) || (attr == NULL)) { - vxge_hal_err_log_ring("null pointer passed == > %s : %d", - __func__, __LINE__); - vxge_hal_trace_log_ring("<== %s:%s:%d Result:1", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_FAIL); - } - - config = - &vp->vpath->hldev->header.config.vp_config[vp->vpath->vp_id].ring; - - config->ring_length = ((config->ring_length + - vxge_hal_ring_rxds_per_block_get(config->buffer_mode) - 1) / - vxge_hal_ring_rxds_per_block_get(config->buffer_mode)) * - vxge_hal_ring_rxds_per_block_get(config->buffer_mode); - - ring = (__hal_ring_t *) vxge_hal_channel_allocate( - (vxge_hal_device_h) vp->vpath->hldev, - vpath_handle, - VXGE_HAL_CHANNEL_TYPE_RING, - config->ring_length, - attr->per_rxd_space, - attr->userdata); - - if (ring == NULL) { - vxge_hal_err_log_ring("Memory allocation failed == > %s : %d", - __func__, __LINE__); - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - vp->vpath->ringh = (vxge_hal_ring_h) ring; - - ring->stats = &vp->vpath->sw_stats->ring_stats; - - ring->config = config; - ring->callback = attr->callback; - ring->rxd_init = attr->rxd_init; - ring->rxd_term = attr->rxd_term; - - ring->indicate_max_pkts = config->indicate_max_pkts; - ring->buffer_mode = config->buffer_mode; - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock_init(&ring->channel.post_lock, hldev->pdev); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_init_irq(&ring->channel.post_lock, hldev->irqh); -#endif - - ring->rxd_size = vxge_hal_ring_rxd_size_get(config->buffer_mode); - ring->rxd_priv_size = - sizeof(__hal_ring_rxd_priv_t) + attr->per_rxd_space; - ring->per_rxd_space = attr->per_rxd_space; - - ring->rxd_priv_size = - ((ring->rxd_priv_size + __vxge_os_cacheline_size - 1) / - __vxge_os_cacheline_size) * __vxge_os_cacheline_size; - - /* - * how many RxDs can fit into one block. Depends on configured - * buffer_mode. - */ - ring->rxds_per_block = - vxge_hal_ring_rxds_per_block_get(config->buffer_mode); - - /* calculate actual RxD block private size */ - ring->rxdblock_priv_size = ring->rxd_priv_size * ring->rxds_per_block; - - ring->rxd_mem_avail = - ((__hal_vpath_handle_t *) ring->channel.vph)->vpath->rxd_mem_size; - - ring->db_byte_count = 0; - - ring->mempool = vxge_hal_mempool_create( - (vxge_hal_device_h) vp->vpath->hldev, - VXGE_OS_HOST_PAGE_SIZE, - VXGE_OS_HOST_PAGE_SIZE, - ring->rxdblock_priv_size, - ring->config->ring_length / ring->rxds_per_block, - ring->config->ring_length / ring->rxds_per_block, - __hal_ring_mempool_item_alloc, - __hal_ring_mempool_item_free, - ring); - - if (ring->mempool == NULL) { - __hal_ring_delete(vpath_handle); - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - status = vxge_hal_channel_initialize(&ring->channel); - if (status != VXGE_HAL_OK) { - __hal_ring_delete(vpath_handle); - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - - /* - * Note: - * Specifying rxd_init callback means two things: - * 1) rxds need to be initialized by ULD at channel-open time; - * 2) rxds need to be posted at channel-open time - * (that's what the initial_replenish() below does) - * Currently we don't have a case when the 1) is done without the 2). - */ - if (ring->rxd_init) { - if ((status = __hal_ring_initial_replenish( - ring, - VXGE_HAL_OPEN_NORMAL)) - != VXGE_HAL_OK) { - __hal_ring_delete(vpath_handle); - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - } - - /* - * initial replenish will increment the counter in its post() routine, - * we have to reset it - */ - ring->stats->common_stats.usage_cnt = 0; - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * __hal_ring_abort - Returns the RxD - * @ringh: Ring to be reset - * @reopen: See vxge_hal_reopen_e {}. - * - * This function terminates the RxDs of ring - */ -void -__hal_ring_abort( - vxge_hal_ring_h ringh, - vxge_hal_reopen_e reopen) -{ - u32 i = 0; - vxge_hal_rxd_h rxdh; - - __hal_device_t *hldev; - __hal_ring_t *ring = (__hal_ring_t *) ringh; - - vxge_assert(ringh != NULL); - - hldev = (__hal_device_t *) ring->channel.devh; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring("ring = 0x"VXGE_OS_STXFMT", reopen = %d", - (ptr_t) ringh, reopen); - - if (ring->rxd_term) { - __hal_channel_for_each_dtr(&ring->channel, rxdh, i) { - if (!__hal_channel_is_posted_dtr(&ring->channel, i)) { - ring->rxd_term(ring->channel.vph, rxdh, - VXGE_HAL_RING_ULD_PRIV(ring, rxdh), - VXGE_HAL_RXD_STATE_FREED, - ring->channel.userdata, - reopen); - } - } - } - - for (;;) { - __hal_channel_dtr_try_complete(&ring->channel, &rxdh); - if (rxdh == NULL) - break; - - __hal_channel_dtr_complete(&ring->channel); - if (ring->rxd_term) { - ring->rxd_term(ring->channel.vph, rxdh, - VXGE_HAL_RING_ULD_PRIV(ring, rxdh), - VXGE_HAL_RXD_STATE_POSTED, - ring->channel.userdata, - reopen); - } - __hal_channel_dtr_free(&ring->channel, - VXGE_HAL_RING_RXD_INDEX(rxdh)); - } - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_ring_reset - Resets the ring - * @ringh: Ring to be reset - * - * This function resets the ring during vpath reset operation - */ -vxge_hal_status_e -__hal_ring_reset( - vxge_hal_ring_h ringh) -{ - __hal_ring_t *ring = (__hal_ring_t *) ringh; - __hal_device_t *hldev; - vxge_hal_status_e status; - __hal_vpath_handle_t *vph = (__hal_vpath_handle_t *) ring->channel.vph; - - vxge_assert(ringh != NULL); - - hldev = (__hal_device_t *) ring->channel.devh; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring("ring = 0x"VXGE_OS_STXFMT, - (ptr_t) ringh); - - __hal_ring_abort(ringh, VXGE_HAL_RESET_ONLY); - - status = __hal_channel_reset(&ring->channel); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - - } - ring->rxd_mem_avail = vph->vpath->rxd_mem_size; - ring->db_byte_count = 0; - - - if (ring->rxd_init) { - if ((status = __hal_ring_initial_replenish( - ring, - VXGE_HAL_RESET_ONLY)) - != VXGE_HAL_OK) { - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - } - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * __hal_ring_delete - Removes the ring - * @vpath_handle: Virtual path handle to which this queue belongs - * - * This function freeup the memory pool and removes the ring - */ -void -__hal_ring_delete( - vxge_hal_vpath_h vpath_handle) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - __hal_ring_t *ring; - - vxge_assert(vpath_handle != NULL); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_assert(ring != NULL); - - vxge_assert(ring->channel.pdev); - - __hal_ring_abort(vp->vpath->ringh, VXGE_HAL_OPEN_NORMAL); - - - if (ring->mempool) { - vxge_hal_mempool_destroy(ring->mempool); - } - - vxge_hal_channel_terminate(&ring->channel); - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock_destroy(&ring->channel.post_lock, hldev->pdev); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_destroy_irq(&ring->channel.post_lock, hldev->pdev); -#endif - - vxge_hal_channel_free(&ring->channel); - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - -} - -/* - * __hal_ring_frame_length_set - Set the maximum frame length of recv frames. - * @vpath: virtual Path - * @new_frmlen: New frame length - * - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_OUT_OF_DESCRIPTORS - Currently no descriptors available. - * - */ -vxge_hal_status_e -__hal_ring_frame_length_set( - __hal_virtualpath_t *vpath, - u32 new_frmlen) -{ - u64 val64; - __hal_device_t *hldev; - - vxge_assert(vpath != NULL); - - hldev = (__hal_device_t *) vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath = 0x"VXGE_OS_STXFMT", new_frmlen = %d", - (ptr_t) vpath, new_frmlen); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - - } - - val64 = vxge_os_pio_mem_read64( - vpath->hldev->header.pdev, - vpath->hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 &= ~VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN(0x3fff); - - if (vpath->vp_config->ring.max_frm_len != - VXGE_HAL_MAX_RING_FRM_LEN_USE_MTU) { - - val64 |= VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN( - vpath->vp_config->ring.max_frm_len + - VXGE_HAL_MAC_HEADER_MAX_SIZE); - - } else { - - val64 |= VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN(new_frmlen + - VXGE_HAL_MAC_HEADER_MAX_SIZE); - } - - vxge_os_pio_mem_write64( - vpath->hldev->header.pdev, - vpath->hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_ring_rxd_reserve - Reserve ring descriptor. - * @vpath_handle: virtual Path handle. - * @rxdh: Reserved descriptor. On success HAL fills this "out" parameter - * with a valid handle. - * @rxd_priv: Buffer to return pointer to per rxd private space - * - * Reserve Rx descriptor for the subsequent filling-in (by upper layer - * driver (ULD)) and posting on the corresponding channel (@channelh) - * via vxge_hal_ring_rxd_post(). - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_OUT_OF_DESCRIPTORS - Currently no descriptors available. - * - */ -vxge_hal_status_e -vxge_hal_ring_rxd_reserve( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h * rxdh, - void **rxd_priv) -{ - vxge_hal_status_e status; -#if defined(VXGE_HAL_RX_MULTI_POST_IRQ) - unsigned long flags; -#endif - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - __hal_ring_t *ring; - - vxge_assert((vpath_handle != NULL) && (rxdh != NULL) && - (rxd_priv != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", rxdh = 0x"VXGE_OS_STXFMT", " - "rxd_priv = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle, - (ptr_t) rxdh, (ptr_t) rxd_priv); - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_assert(ring != NULL); - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&ring->channel.post_lock, flags); -#endif - - status = __hal_channel_dtr_reserve(&ring->channel, rxdh); - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_unlock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&ring->channel.post_lock, flags); -#endif - - if (status == VXGE_HAL_OK) { - vxge_hal_ring_rxd_1_t *rxdp = (vxge_hal_ring_rxd_1_t *)*rxdh; - - /* instead of memset: reset this RxD */ - rxdp->control_0 = rxdp->control_1 = 0; - - *rxd_priv = VXGE_HAL_RING_ULD_PRIV(ring, rxdp); - -#if defined(VXGE_OS_MEMORY_CHECK) - VXGE_HAL_RING_HAL_PRIV(ring, rxdp)->allocated = 1; -#endif - } - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (status); -} - -/* - * vxge_hal_ring_rxd_pre_post - Prepare rxd and post - * @vpath_handle: virtual Path handle. - * @rxdh: Descriptor handle. - * - * This routine prepares a rxd and posts - */ -void -vxge_hal_ring_rxd_pre_post( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh) -{ - -#if defined(VXGE_DEBUG_ASSERT) - vxge_hal_ring_rxd_1_t *rxdp = (vxge_hal_ring_rxd_1_t *) rxdh; - -#endif - -#if defined(VXGE_HAL_RX_MULTI_POST_IRQ) - unsigned long flags; - -#endif - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - __hal_ring_t *ring; - - vxge_assert((vpath_handle != NULL) && (rxdh != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", rxdh = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) rxdh); - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_assert(ring != NULL); - -#if defined(VXGE_DEBUG_ASSERT) - /* make sure device overwrites the (illegal) t_code on completion */ - rxdp->control_0 |= - VXGE_HAL_RING_RXD_T_CODE(VXGE_HAL_RING_RXD_T_CODE_UNUSED); -#endif - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&ring->channel.post_lock, flags); -#endif - -#if defined(VXGE_DEBUG_ASSERT) && defined(VXGE_HAL_RING_ENFORCE_ORDER) - if (TRUE) { - if (VXGE_HAL_RING_RXD_INDEX(rxdp) != 0) { - vxge_hal_rxd_h prev_rxdh; - __hal_ring_rxd_priv_t *rxdp_priv; - u32 index; - - rxdp_priv = VXGE_HAL_RING_HAL_PRIV(ring, rxdp); - - if (VXGE_HAL_RING_RXD_INDEX(rxdp) == 0) - index = ring->channel.length; - else - index = VXGE_HAL_RING_RXD_INDEX(rxdp) - 1; - - prev_rxdh = ring->channel.dtr_arr[index].dtr; - - if (prev_rxdh != NULL && - (rxdp_priv->dma_offset & (~0xFFF)) != - rxdp_priv->dma_offset) { - vxge_assert((char *) prev_rxdh + - ring->rxd_size == rxdh); - } - } - } -#endif - - __hal_channel_dtr_post(&ring->channel, VXGE_HAL_RING_RXD_INDEX(rxdh)); - - ring->db_byte_count += - VXGE_HAL_RING_HAL_PRIV(ring, rxdh)->db_bytes; - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_unlock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&ring->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_ring_rxd_post_post - Process rxd after post. - * @vpath_handle: virtual Path handle. - * @rxdh: Descriptor handle. - * - * Processes rxd after post - */ -void -vxge_hal_ring_rxd_post_post( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh) -{ - vxge_hal_ring_rxd_1_t *rxdp = (vxge_hal_ring_rxd_1_t *) rxdh; - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_RXD_STREAMING) - __hal_ring_rxd_priv_t *priv; - -#endif - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - __hal_ring_t *ring; - - vxge_assert((vpath_handle != NULL) && (rxdh != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", rxdh = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) rxdh); - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_assert(ring != NULL); - - /* do POST */ - rxdp->control_0 |= VXGE_HAL_RING_RXD_LIST_OWN_ADAPTER; - - rxdp->control_1 |= VXGE_HAL_RING_RXD_LIST_TAIL_OWN_ADAPTER; - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_RXD_STREAMING) - priv = __hal_ring_rxd_priv(ring, rxdp); - vxge_os_dma_sync(ring->channel.pdev, - priv->dma_handle, - priv->dma_addr, - priv->dma_offset, - ring->rxd_size, - VXGE_OS_DMA_DIR_TODEVICE); -#endif - if (ring->stats->common_stats.usage_cnt > 0) - ring->stats->common_stats.usage_cnt--; - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_ring_rxd_post - Post descriptor on the ring. - * @vpath_handle: virtual Path handle. - * @rxdh: Descriptor obtained via vxge_hal_ring_rxd_reserve(). - * - * Post descriptor on the ring. - * Prior to posting the descriptor should be filled in accordance with - * Host/X3100 interface specification for a given service (LL, etc.). - * - */ -void -vxge_hal_ring_rxd_post( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh) -{ - vxge_hal_ring_rxd_1_t *rxdp = (vxge_hal_ring_rxd_1_t *) rxdh; - -#if defined(VXGE_HAL_RX_MULTI_POST_IRQ) - unsigned long flags; -#endif - - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - __hal_ring_t *ring; - - vxge_assert((vpath_handle != NULL) && (rxdh != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", rxdh = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) rxdh); - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_assert(ring != NULL); - - /* Based on Titan HW bugzilla # 3039, we need to reset the tcode */ - rxdp->control_0 = 0; - -#if defined(VXGE_DEBUG_ASSERT) - /* make sure device overwrites the (illegal) t_code on completion */ - rxdp->control_0 |= - VXGE_HAL_RING_RXD_T_CODE(VXGE_HAL_RING_RXD_T_CODE_UNUSED); -#endif - - rxdp->control_1 |= VXGE_HAL_RING_RXD_LIST_TAIL_OWN_ADAPTER; - rxdp->control_0 |= VXGE_HAL_RING_RXD_LIST_OWN_ADAPTER; - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_RXD_STREAMING) - { - __hal_ring_rxd_priv_t *rxdp_temp1; - rxdp_temp1 = VXGE_HAL_RING_HAL_PRIV(ring, rxdp); - vxge_os_dma_sync(ring->channel.pdev, - rxdp_temp1->dma_handle, - rxdp_temp1->dma_addr, - rxdp_temp1->dma_offset, - ring->rxd_size, - VXGE_OS_DMA_DIR_TODEVICE); - } -#endif - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&ring->channel.post_lock, flags); -#endif - -#if defined(VXGE_DEBUG_ASSERT) && defined(VXGE_HAL_RING_ENFORCE_ORDER) - if (TRUE) { - if (VXGE_HAL_RING_RXD_INDEX(rxdp) != 0) { - - vxge_hal_rxd_h prev_rxdh; - __hal_ring_rxd_priv_t *rxdp_temp2; - - rxdp_temp2 = VXGE_HAL_RING_HAL_PRIV(ring, rxdp); - prev_rxdh = - ring->channel.dtr_arr[VXGE_HAL_RING_RXD_INDEX(rxdp) - 1].dtr; - - if (prev_rxdh != NULL && - (rxdp_temp2->dma_offset & (~0xFFF)) != rxdp_temp2->dma_offset) - vxge_assert((char *) prev_rxdh + ring->rxd_size == rxdh); - } - } -#endif - - __hal_channel_dtr_post(&ring->channel, VXGE_HAL_RING_RXD_INDEX(rxdh)); - - ring->db_byte_count += - VXGE_HAL_RING_HAL_PRIV(ring, rxdp)->db_bytes; - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_unlock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&ring->channel.post_lock, flags); -#endif - - if (ring->stats->common_stats.usage_cnt > 0) - ring->stats->common_stats.usage_cnt--; - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_ring_rxd_post_post_wmb - Process rxd after post with memory barrier - * @vpath_handle: virtual Path handle. - * @rxdh: Descriptor handle. - * - * Processes rxd after post with memory barrier. - */ -void -vxge_hal_ring_rxd_post_post_wmb( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - - vxge_assert((vpath_handle != NULL) && (rxdh != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", rxdh = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) rxdh); - - /* Do memory barrier before changing the ownership */ - vxge_os_wmb(); - - vxge_hal_ring_rxd_post_post(vpath_handle, rxdh); - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_ring_rxd_post_post_db - Post Doorbell after posting the rxd(s). - * @vpath_handle: virtual Path handle. - * - * Post Doorbell after posting the rxd(s). - */ -void -vxge_hal_ring_rxd_post_post_db( - vxge_hal_vpath_h vpath_handle) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - __hal_ring_t *ring; - - vxge_assert(vpath_handle != NULL); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&ring->channel.post_lock, flags); -#endif - - if (ring->db_byte_count <= ring->rxd_mem_avail) { - __hal_rxd_db_post(vpath_handle, ring->db_byte_count); - ring->rxd_mem_avail -= ring->db_byte_count; - ring->db_byte_count = 0; - } else { - __hal_rxd_db_post(vpath_handle, ring->rxd_mem_avail); - ring->db_byte_count -= ring->rxd_mem_avail; - ring->rxd_mem_avail = 0; - } - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_unlock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&ring->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_ring_is_next_rxd_completed - Check if the next rxd is completed - * @vpath_handle: Virtual Path handle. - * - * Checks if the _next_ completed descriptor is in host memory - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS - No completed descriptors - * are currently available for processing. - */ -vxge_hal_status_e -vxge_hal_ring_is_next_rxd_completed( - vxge_hal_vpath_h vpath_handle) -{ - __hal_ring_t *ring; - vxge_hal_rxd_h rxdh; - vxge_hal_ring_rxd_1_t *rxdp; /* doesn't matter 1, 3 or 5... */ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_assert(ring != NULL); - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&ring->channel.post_lock, flags); -#endif - - __hal_channel_dtr_try_complete(&ring->channel, &rxdh); - - rxdp = (vxge_hal_ring_rxd_1_t *) rxdh; - - if (rxdp != NULL) { - - /* check whether it is not the end */ - if ((!(rxdp->control_0 & VXGE_HAL_RING_RXD_LIST_OWN_ADAPTER)) && - (!(rxdp->control_1 & - VXGE_HAL_RING_RXD_LIST_TAIL_OWN_ADAPTER))) { - - status = VXGE_HAL_OK; - } - } - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_unlock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&ring->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_ring_rxd_next_completed - Get the _next_ completed descriptor. - * @channelh: Channel handle. - * @rxdh: Descriptor handle. Returned by HAL. - * @rxd_priv: Buffer to return a pointer to the per rxd space allocated - * @t_code: Transfer code, as per X3100 User Guide, - * Receive Descriptor Format. Returned by HAL. - * - * Retrieve the _next_ completed descriptor. - * HAL uses ring callback (*vxge_hal_ring_callback_f) to notifiy - * upper-layer driver (ULD) of new completed descriptors. After that - * the ULD can use vxge_hal_ring_rxd_next_completed to retrieve the rest - * completions (the very first completion is passed by HAL via - * vxge_hal_ring_callback_f). - * - * Implementation-wise, the upper-layer driver is free to call - * vxge_hal_ring_rxd_next_completed either immediately from inside the - * ring callback, or in a deferred fashion and separate (from HAL) - * context. - * - * Non-zero @t_code means failure to fill-in receive buffer(s) - * of the descriptor. - * For instance, parity error detected during the data transfer. - * In this case X3100 will complete the descriptor and indicate - * for the host that the received data is not to be used. - * For details please refer to X3100 User Guide. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS - No completed descriptors - * are currently available for processing. - * - * See also: vxge_hal_ring_callback_f {}, - * vxge_hal_fifo_rxd_next_completed(), vxge_hal_status_e {}. - */ -vxge_hal_status_e -vxge_hal_ring_rxd_next_completed( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h *rxdh, - void **rxd_priv, - u8 *t_code) -{ - __hal_ring_t *ring; - vxge_hal_ring_rxd_5_t *rxdp; /* doesn't matter 1, 3 or 5... */ -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_RXD_STREAMING) - __hal_ring_rxd_priv_t *priv; -#endif - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_INF_NO_MORE_COMPLETED_DESCRIPTORS; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - u64 own, control_0, control_1; - - vxge_assert((vpath_handle != NULL) && (rxdh != NULL) && - (rxd_priv != NULL) && (t_code != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", rxdh = 0x"VXGE_OS_STXFMT", " - "rxd_priv = 0x"VXGE_OS_STXFMT", t_code = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) rxdh, (ptr_t) rxd_priv, - (ptr_t) t_code); - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_assert(ring != NULL); - - *rxdh = 0; - *rxd_priv = NULL; - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&ring->channel.post_lock, flags); -#endif - - __hal_channel_dtr_try_complete(&ring->channel, rxdh); - - rxdp = (vxge_hal_ring_rxd_5_t *)*rxdh; - if (rxdp != NULL) { - -#if defined(VXGE_OS_DMA_REQUIRES_SYNC) && defined(VXGE_HAL_DMA_RXD_STREAMING) - /* - * Note: 24 bytes at most means: - * - Control_3 in case of 5-buffer mode - * - Control_1 and Control_2 - * - * This is the only length needs to be invalidated - * type of channels. - */ - priv = __hal_ring_rxd_priv(ring, rxdp); - vxge_os_dma_sync(ring->channel.pdev, - priv->dma_handle, - priv->dma_addr, - priv->dma_offset, - 24, - VXGE_OS_DMA_DIR_FROMDEVICE); -#endif - *t_code = (u8) VXGE_HAL_RING_RXD_T_CODE_GET(rxdp->control_0); - - control_0 = rxdp->control_0; - control_1 = rxdp->control_1; - own = control_0 & VXGE_HAL_RING_RXD_LIST_OWN_ADAPTER; - - /* check whether it is not the end */ - if ((!own && !(control_1 & VXGE_HAL_RING_RXD_LIST_TAIL_OWN_ADAPTER)) || - (*t_code == VXGE_HAL_RING_RXD_T_CODE_FRM_DROP)) { - -#ifndef VXGE_HAL_IRQ_POLLING - if (++ring->cmpl_cnt > ring->indicate_max_pkts) { - /* - * reset it. since we don't want to return - * garbage to the ULD - */ - *rxdh = 0; - status = VXGE_HAL_COMPLETIONS_REMAIN; - } else { -#endif - __hal_channel_dtr_complete(&ring->channel); - - *rxd_priv = VXGE_HAL_RING_ULD_PRIV(ring, rxdp); - - ring->rxd_mem_avail += - (VXGE_HAL_RING_HAL_PRIV(ring, rxdp))->db_bytes; - - ring->stats->common_stats.usage_cnt++; - if (ring->stats->common_stats.usage_max < - ring->stats->common_stats.usage_cnt) - ring->stats->common_stats.usage_max = - ring->stats->common_stats.usage_cnt; - - switch (ring->buffer_mode) { - case VXGE_HAL_RING_RXD_BUFFER_MODE_1: - ring->channel.poll_bytes += - (u32) VXGE_HAL_RING_RXD_1_BUFFER0_SIZE_GET( - rxdp->control_1); - break; - case VXGE_HAL_RING_RXD_BUFFER_MODE_3: - ring->channel.poll_bytes += - (u32) VXGE_HAL_RING_RXD_3_BUFFER0_SIZE_GET( - rxdp->control_1) + - (u32) VXGE_HAL_RING_RXD_3_BUFFER1_SIZE_GET( - rxdp->control_1) + - (u32) VXGE_HAL_RING_RXD_3_BUFFER2_SIZE_GET( - rxdp->control_1); - break; - case VXGE_HAL_RING_RXD_BUFFER_MODE_5: - ring->channel.poll_bytes += - (u32) VXGE_HAL_RING_RXD_5_BUFFER0_SIZE_GET( - rxdp->control_1) + - (u32) VXGE_HAL_RING_RXD_5_BUFFER1_SIZE_GET( - rxdp->control_1) + - (u32) VXGE_HAL_RING_RXD_5_BUFFER2_SIZE_GET( - rxdp->control_1) + - (u32) VXGE_HAL_RING_RXD_5_BUFFER3_SIZE_GET( - rxdp->control_2) + - (u32) VXGE_HAL_RING_RXD_5_BUFFER4_SIZE_GET( - rxdp->control_2); - break; - } - - status = VXGE_HAL_OK; -#ifndef VXGE_HAL_IRQ_POLLING - } -#endif - } - } - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_unlock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&ring->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - - -/* - * vxge_hal_ring_handle_tcode - Handle transfer code. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * @t_code: One of the enumerated (and documented in the X3100 user guide) - * "transfer codes". - * - * Handle descriptor's transfer code. The latter comes with each completed - * descriptor. - * - * Returns: one of the vxge_hal_status_e {} enumerated types. - * VXGE_HAL_OK - for success. - * VXGE_HAL_ERR_CRITICAL - when encounters critical error. - */ -vxge_hal_status_e -vxge_hal_ring_handle_tcode( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh, - u8 t_code) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (rxdh != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", " - "rxdh = 0x"VXGE_OS_STXFMT", t_code = 0x%d", - (ptr_t) vpath_handle, (ptr_t) rxdh, t_code); - - switch (t_code) { - case 0x0: - /* 0x0: Transfer ok. */ - break; - case 0x1: - /* - * 0x1: Layer 3 checksum presentation - * configuration mismatch. - */ - break; - case 0x2: - /* - * 0x2: Layer 4 checksum presentation - * configuration mismatch. - */ - break; - case 0x3: - /* - * 0x3: Layer 3 and Layer 4 checksum - * presentation configuration mismatch. - */ - break; - case 0x4: - /* 0x4: Reserved. */ - break; - case 0x5: - /* - * 0x5: Layer 3 error unparseable packet, - * such as unknown IPv6 header. - */ - break; - case 0x6: - /* - * 0x6: Layer 2 error frame integrity - * error, such as FCS or ECC). - */ - break; - case 0x7: - /* - * 0x7: Buffer size error the RxD buffer(s) - * were not appropriately sized and - * data loss occurred. - */ - break; - case 0x8: - /* 0x8: Internal ECC error RxD corrupted. */ - __hal_device_handle_error(vp->vpath->hldev, - vp->vpath->vp_id, VXGE_HAL_EVENT_ECCERR); - break; - case 0x9: - /* - * 0x9: Benign overflow the contents of - * Segment1 exceeded the capacity of - * Buffer1 and the remainder was placed - * in Buffer2. Segment2 now starts in - * Buffer3. No data loss or errors occurred. - */ - break; - case 0xA: - /* - * 0xA: Buffer size 0 one of the RxDs - * assigned buffers has a size of 0 bytes. - */ - break; - case 0xB: - /* 0xB: Reserved. */ - break; - case 0xC: - /* - * 0xC: Frame dropped either due to - * VPath Reset or because of a VPIN mismatch. - */ - break; - case 0xD: - /* 0xD: Reserved. */ - break; - case 0xE: - /* 0xE: Reserved. */ - break; - case 0xF: - /* - * 0xF: Multiple errors more than one - * transfer code condition occurred. - */ - break; - default: - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_TCODE); - return (VXGE_HAL_ERR_INVALID_TCODE); - } - - vp->vpath->sw_stats->ring_stats.rxd_t_code_err_cnt[t_code]++; - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_OK); - return (VXGE_HAL_OK); -} - - -/* - * vxge_hal_ring_rxd_private_get - Get ULD private per-descriptor data. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * - * Returns: private ULD info associated with the descriptor. - * ULD requests per-descriptor space via vxge_hal_ring_attr. - * - */ -void * -vxge_hal_ring_rxd_private_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - return (VXGE_HAL_RING_ULD_PRIV( - ((__hal_ring_t *) vp->vpath->ringh), rxdh)); - -} - -/* - * vxge_hal_ring_rxd_free - Free descriptor. - * @vpath_handle: Virtual Path handle. - * @rxdh: Descriptor handle. - * - * Free the reserved descriptor. This operation is "symmetrical" to - * vxge_hal_ring_rxd_reserve. The "free-ing" completes the descriptor's - * lifecycle. - * - * After free-ing (see vxge_hal_ring_rxd_free()) the descriptor again can - * be: - * - * - reserved (vxge_hal_ring_rxd_reserve); - * - * - posted (vxge_hal_ring_rxd_post); - * - * - completed (vxge_hal_ring_rxd_next_completed); - * - * - and recycled again (vxge_hal_ring_rxd_free). - * - * For alternative state transitions and more details please refer to - * the design doc. - * - */ -void -vxge_hal_ring_rxd_free( - vxge_hal_vpath_h vpath_handle, - vxge_hal_rxd_h rxdh) -{ -#if defined(VXGE_HAL_RX_MULTI_POST_IRQ) - unsigned long flags; - -#endif - __hal_ring_t *ring; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (rxdh != NULL)); - - hldev = (__hal_device_t *) vp->vpath->hldev; - - vxge_hal_trace_log_ring("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_ring( - "vpath_handle = 0x"VXGE_OS_STXFMT", rxdh = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) rxdh); - - ring = (__hal_ring_t *) vp->vpath->ringh; - - vxge_assert(ring != NULL); - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_lock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_lock_irq(&ring->channel.post_lock, flags); -#endif - - __hal_channel_dtr_free(&ring->channel, VXGE_HAL_RING_RXD_INDEX(rxdh)); -#if defined(VXGE_OS_MEMORY_CHECK) - VXGE_HAL_RING_HAL_PRIV(ring, rxdh)->allocated = 0; -#endif - -#if defined(VXGE_HAL_RX_MULTI_POST) - vxge_os_spin_unlock(&ring->channel.post_lock); -#elif defined(VXGE_HAL_RX_MULTI_POST_IRQ) - vxge_os_spin_unlock_irq(&ring->channel.post_lock, flags); -#endif - - vxge_hal_trace_log_ring("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} Index: sys/dev/vxge/vxgehal/vxgehal-srpcim-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-srpcim-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-srpcim-reg.h @@ -1,238 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_SRPCIM_REGS_H -#define VXGE_HAL_SRPCIM_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_srpcim_reg_t { - -/* 0x00000 */ u64 tim_mr2sr_resource_assignment_vh; -#define VXGE_HAL_TIM_MR2SR_RESOURCE_ASSIGNMENT_VH_BMAP_ROOT(val)\ - vBIT(val, 0, 32) - u8 unused00100[0x00100 - 0x00008]; - -/* 0x00100 */ u64 srpcim_pcipif_int_status; -#define VXGE_HAL_SRPCIM_PCIPIF_INT_STATUS_MRPCIM_MSG_INT mBIT(3) -#define VXGE_HAL_SRPCIM_PCIPIF_INT_STATUS_VPATH_MSG_VPATH_MSG_INT mBIT(7) -#define VXGE_HAL_SRPCIM_PCIPIF_INT_STATUS_SRPCIM_SPARE_R1_SRPCIM_SPARE_R1_INT\ - mBIT(11) -/* 0x00108 */ u64 srpcim_pcipif_int_mask; -/* 0x00110 */ u64 mrpcim_msg_reg; -#define VXGE_HAL_MRPCIM_MSG_REG_SWIF_MRPCIM_TO_SRPCIM_RMSG_INT mBIT(3) -/* 0x00118 */ u64 mrpcim_msg_mask; -/* 0x00120 */ u64 mrpcim_msg_alarm; -/* 0x00128 */ u64 vpath_msg_reg; -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH0_TO_SRPCIM_RMSG_INT mBIT(0) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH1_TO_SRPCIM_RMSG_INT mBIT(1) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH2_TO_SRPCIM_RMSG_INT mBIT(2) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH3_TO_SRPCIM_RMSG_INT mBIT(3) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH4_TO_SRPCIM_RMSG_INT mBIT(4) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH5_TO_SRPCIM_RMSG_INT mBIT(5) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH6_TO_SRPCIM_RMSG_INT mBIT(6) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH7_TO_SRPCIM_RMSG_INT mBIT(7) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH8_TO_SRPCIM_RMSG_INT mBIT(8) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH9_TO_SRPCIM_RMSG_INT mBIT(9) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH10_TO_SRPCIM_RMSG_INT mBIT(10) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH11_TO_SRPCIM_RMSG_INT mBIT(11) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH12_TO_SRPCIM_RMSG_INT mBIT(12) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH13_TO_SRPCIM_RMSG_INT mBIT(13) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH14_TO_SRPCIM_RMSG_INT mBIT(14) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH15_TO_SRPCIM_RMSG_INT mBIT(15) -#define VXGE_HAL_VPATH_MSG_REG_SWIF_VPATH16_TO_SRPCIM_RMSG_INT mBIT(16) -/* 0x00130 */ u64 vpath_msg_mask; -/* 0x00138 */ u64 vpath_msg_alarm; - u8 unused00158[0x00158 - 0x00140]; - -/* 0x00158 */ u64 vf_bargrp_no; -#define VXGE_HAL_VF_BARGRP_NO_IDENTIFIER_LSB_FOR_BAR0(val) vBIT(val, 11, 5) -#define VXGE_HAL_VF_BARGRP_NO_IDENTIFIER_LSB_FOR_BAR1(val) vBIT(val, 19, 5) -#define VXGE_HAL_VF_BARGRP_NO_IDENTIFIER_LSB_FOR_BAR2(val) vBIT(val, 26, 6) -#define VXGE_HAL_VF_BARGRP_NO_FIRST_VF_OFFSET(val) vBIT(val, 32, 4) -#define VXGE_HAL_VF_BARGRP_NO_MASK(val) vBIT(val, 36, 4) -/* 0x00160 */ u64 srpcim_to_mrpcim_wmsg; -#define VXGE_HAL_SRPCIM_TO_MRPCIM_WMSG_SRPCIM_TO_MRPCIM_WMSG(val)\ - vBIT(val, 0, 64) -/* 0x00168 */ u64 srpcim_to_mrpcim_wmsg_trig; -#define VXGE_HAL_SRPCIM_TO_MRPCIM_WMSG_TRIG_SRPCIM_TO_MRPCIM_WMSG_TRIG mBIT(0) -/* 0x00170 */ u64 mrpcim_to_srpcim_rmsg; -#define VXGE_HAL_MRPCIM_TO_SRPCIM_RMSG_SWIF_MRPCIM_TO_SRPCIM_RMSG(val)\ - vBIT(val, 0, 64) -/* 0x00178 */ u64 vpath_to_srpcim_rmsg_sel; -#define VXGE_HAL_VPATH_TO_SRPCIM_RMSG_SEL_SEL(val) vBIT(val, 0, 5) -/* 0x00180 */ u64 vpath_to_srpcim_rmsg; -#define VXGE_HAL_VPATH_TO_SRPCIM_RMSG_SWIF_VPATH_TO_SRPCIM_RMSG(val)\ - vBIT(val, 0, 64) - u8 unused00200[0x00200 - 0x00188]; - -/* 0x00200 */ u64 srpcim_general_int_status; -#define VXGE_HAL_SRPCIM_GENERAL_INT_STATUS_PIC_INT mBIT(0) -#define VXGE_HAL_SRPCIM_GENERAL_INT_STATUS_PCI_INT mBIT(3) -#define VXGE_HAL_SRPCIM_GENERAL_INT_STATUS_XMAC_INT mBIT(7) - u8 unused00210[0x00210 - 0x00208]; - -/* 0x00210 */ u64 srpcim_general_int_mask; -#define VXGE_HAL_SRPCIM_GENERAL_INT_MASK_PIC_INT mBIT(0) -#define VXGE_HAL_SRPCIM_GENERAL_INT_MASK_PCI_INT mBIT(3) -#define VXGE_HAL_SRPCIM_GENERAL_INT_MASK_XMAC_INT mBIT(7) - u8 unused00220[0x00220 - 0x00218]; - -/* 0x00220 */ u64 srpcim_ppif_int_status; -#define VXGE_HAL_SRPCIM_PPIF_INT_STATUS_SRPCIM_GEN_ERRORS_INT\ - mBIT(3) -#define VXGE_HAL_SRPCIM_PPIF_INT_STATUS_MRPCIM_TO_SRPCIM_ALARM mBIT(7) -#define VXGE_HAL_SRPCIM_PPIF_INT_STATUS_VPATH_TO_SRPCIM_ALARM_INT mBIT(11) -/* 0x00228 */ u64 srpcim_ppif_int_mask; -/* 0x00230 */ u64 srpcim_gen_errors_reg; -#define VXGE_HAL_SRPCIM_GEN_ERRORS_REG_PCICONFIG_PF_STATUS_ERR mBIT(3) -#define VXGE_HAL_SRPCIM_GEN_ERRORS_REG_PCICONFIG_PF_UNCOR_ERR mBIT(7) -#define VXGE_HAL_SRPCIM_GEN_ERRORS_REG_PCICONFIG_PF_COR_ERR mBIT(11) -#define VXGE_HAL_SRPCIM_GEN_ERRORS_REG_INTCTRL_SCHED_INT mBIT(15) -#define VXGE_HAL_SRPCIM_GEN_ERRORS_REG_INI_SERR_DET mBIT(19) -#define VXGE_HAL_SRPCIM_GEN_ERRORS_REG_TGT_PF_ILLEGAL_ACCESS mBIT(23) -/* 0x00238 */ u64 srpcim_gen_errors_mask; -/* 0x00240 */ u64 srpcim_gen_errors_alarm; -/* 0x00248 */ u64 mrpcim_to_srpcim_alarm_reg; -#define VXGE_HAL_MRPCIM_TO_SRPCIM_ALARM_REG_PPIF_MRPCIM_TO_SRPCIM_ALARM mBIT(3) -/* 0x00250 */ u64 mrpcim_to_srpcim_alarm_mask; -/* 0x00258 */ u64 mrpcim_to_srpcim_alarm_alarm; -/* 0x00260 */ u64 vpath_to_srpcim_alarm_reg; -#define VXGE_HAL_VPATH_TO_SRPCIM_ALARM_REG_PPIF_VPATH_TO_SRPCIM_ALARM(val)\ - vBIT(val, 0, 17) -/* 0x00268 */ u64 vpath_to_srpcim_alarm_mask; -/* 0x00270 */ u64 vpath_to_srpcim_alarm_alarm; - u8 unused00280[0x00280 - 0x00278]; - -/* 0x00280 */ u64 pf_sw_reset; -#define VXGE_HAL_PF_SW_RESET_PF_SW_RESET(val) vBIT(val, 0, 8) -/* 0x00288 */ u64 srpcim_general_cfg1; -#define VXGE_HAL_SRPCIM_GENERAL_CFG1_BOOT_BYTE_SWAPEN mBIT(19) -#define VXGE_HAL_SRPCIM_GENERAL_CFG1_BOOT_BIT_FLIPEN mBIT(23) -#define VXGE_HAL_SRPCIM_GENERAL_CFG1_MSIX_ADDR_SWAPEN mBIT(27) -#define VXGE_HAL_SRPCIM_GENERAL_CFG1_MSIX_ADDR_FLIPEN mBIT(31) -#define VXGE_HAL_SRPCIM_GENERAL_CFG1_MSIX_DATA_SWAPEN mBIT(35) -#define VXGE_HAL_SRPCIM_GENERAL_CFG1_MSIX_DATA_FLIPEN mBIT(39) -/* 0x00290 */ u64 srpcim_interrupt_cfg1; -#define VXGE_HAL_SRPCIM_INTERRUPT_CFG1_ALARM_MAP_TO_MSG(val) vBIT(val, 1, 7) -#define VXGE_HAL_SRPCIM_INTERRUPT_CFG1_TRAFFIC_CLASS(val) vBIT(val, 9, 3) -/* 0x00298 */ u64 srpcim_interrupt_cfg2; -#define VXGE_HAL_SRPCIM_INTERRUPT_CFG2_MSIX_FOR_SCHED_INT(val)\ - vBIT(val, 1, 7) -#define VXGE_HAL_SRPCIM_INTERRUPT_CFG2_SCHED_ONE_SHOT mBIT(11) -#define VXGE_HAL_SRPCIM_INTERRUPT_CFG2_SCHED_TIMER_EN mBIT(15) -#define VXGE_HAL_SRPCIM_INTERRUPT_CFG2_SCHED_INT_PERIOD(val) vBIT(val, 32, 32) - u8 unused002a8[0x002a8 - 0x002a0]; - -/* 0x002a8 */ u64 srpcim_clear_msix_mask; -#define VXGE_HAL_SRPCIM_CLEAR_MSIX_MASK_SRPCIM_CLEAR_MSIX_MASK mBIT(0) -/* 0x002b0 */ u64 srpcim_set_msix_mask; -#define VXGE_HAL_SRPCIM_SET_MSIX_MASK_SRPCIM_SET_MSIX_MASK mBIT(0) -/* 0x002b8 */ u64 srpcim_clr_msix_one_shot; -#define VXGE_HAL_SRPCIM_CLR_MSIX_ONE_SHOT_SRPCIM_CLR_MSIX_ONE_SHOT mBIT(0) -/* 0x002c0 */ u64 srpcim_rst_in_prog; -#define VXGE_HAL_SRPCIM_RST_IN_PROG_SRPCIM_RST_IN_PROG mBIT(7) -/* 0x002c8 */ u64 srpcim_reg_modified; -#define VXGE_HAL_SRPCIM_REG_MODIFIED_SRPCIM_REG_MODIFIED mBIT(7) -/* 0x002d0 */ u64 tgt_pf_illegal_access; -#define VXGE_HAL_TGT_PF_ILLEGAL_ACCESS_SWIF_REGION(val) vBIT(val, 1, 7) -/* 0x002d8 */ u64 srpcim_msix_status; -#define VXGE_HAL_SRPCIM_MSIX_STATUS_INTCTL_SRPCIM_MSIX_MASK mBIT(3) -#define VXGE_HAL_SRPCIM_MSIX_STATUS_INTCTL_SRPCIM_MSIX_PENDING_VECTOR mBIT(7) - u8 unused00318[0x00318 - 0x002e0]; - -/* 0x00318 */ u64 usdc_vpl; -#define VXGE_HAL_USDC_VPL_SGRP_OWN(val) vBIT(val, 0, 32) - u8 unused00600[0x00600 - 0x00320]; - -/* 0x00600 */ u64 one_cfg_sr_copy; -#define VXGE_HAL_ONE_CFG_SR_COPY_ONE_CFG_RDY mBIT(7) -/* 0x00608 */ u64 sgrp_allocated; -#define VXGE_HAL_SGRP_ALLOCATED_SGRP_ALLOC(val) vBIT(val, 0, 64) -/* 0x00610 */ u64 sgrp_iwarp_lro_allocated; -#define VXGE_HAL_SGRP_IWARP_LRO_ALLOCATED_ENABLE_IWARP mBIT(7) -#define VXGE_HAL_SGRP_IWARP_LRO_ALLOCATED_LAST_IWARP_SGRP(val) vBIT(val, 11, 5) - u8 unused00880[0x00880 - 0x00618]; - -/* 0x00880 */ u64 xgmac_sr_int_status; -#define VXGE_HAL_XGMAC_SR_INT_STATUS_ASIC_NTWK_SR_ERR_INT mBIT(3) -/* 0x00888 */ u64 xgmac_sr_int_mask; -/* 0x00890 */ u64 asic_ntwk_sr_err_reg; -#define VXGE_HAL_ASIC_NTWK_SR_ERR_REG_XMACJ_NTWK_SUSTAINED_FAULT mBIT(3) -#define VXGE_HAL_ASIC_NTWK_SR_ERR_REG_XMACJ_NTWK_SUSTAINED_OK mBIT(7) -#define VXGE_HAL_ASIC_NTWK_SR_ERR_REG_XMACJ_NTWK_SUSTAINED_FAULT_OCCURRED\ - mBIT(11) -#define VXGE_HAL_ASIC_NTWK_SR_ERR_REG_XMACJ_NTWK_SUSTAINED_OK_OCCURRED mBIT(15) -/* 0x00898 */ u64 asic_ntwk_sr_err_mask; -/* 0x008a0 */ u64 asic_ntwk_sr_err_alarm; - u8 unused008c0[0x008c0 - 0x008a8]; - -/* 0x008c0 */ u64 xmac_vsport_choices_sr_clone; -#define VXGE_HAL_XMAC_VSPORT_CHOICES_SR_CLONE_VSPORT_VECTOR(val)\ - vBIT(val, 0, 17) - u8 unused00900[0x00900 - 0x008c8]; - -/* 0x00900 */ u64 mr_rqa_top_prty_for_vh; -#define VXGE_HAL_MR_RQA_TOP_PRTY_FOR_VH_RQA_TOP_PRTY_FOR_VH(val)\ - vBIT(val, 59, 5) -/* 0x00908 */ u64 umq_vh_data_list_empty; -#define VXGE_HAL_UMQ_VH_DATA_LIST_EMPTY_ROCRC_UMQ_VH_DATA_LIST_EMPTY mBIT(0) -/* 0x00910 */ u64 wde_cfg; -#define VXGE_HAL_WDE_CFG_NS0_FORCE_MWB_START mBIT(0) -#define VXGE_HAL_WDE_CFG_NS0_FORCE_MWB_END mBIT(1) -#define VXGE_HAL_WDE_CFG_NS0_FORCE_QB_START mBIT(2) -#define VXGE_HAL_WDE_CFG_NS0_FORCE_QB_END mBIT(3) -#define VXGE_HAL_WDE_CFG_NS0_FORCE_MPSB_START mBIT(4) -#define VXGE_HAL_WDE_CFG_NS0_FORCE_MPSB_END mBIT(5) -#define VXGE_HAL_WDE_CFG_NS0_MWB_OPT_EN mBIT(6) -#define VXGE_HAL_WDE_CFG_NS0_QB_OPT_EN mBIT(7) -#define VXGE_HAL_WDE_CFG_NS0_MPSB_OPT_EN mBIT(8) -#define VXGE_HAL_WDE_CFG_NS1_FORCE_MWB_START mBIT(9) -#define VXGE_HAL_WDE_CFG_NS1_FORCE_MWB_END mBIT(10) -#define VXGE_HAL_WDE_CFG_NS1_FORCE_QB_START mBIT(11) -#define VXGE_HAL_WDE_CFG_NS1_FORCE_QB_END mBIT(12) -#define VXGE_HAL_WDE_CFG_NS1_FORCE_MPSB_START mBIT(13) -#define VXGE_HAL_WDE_CFG_NS1_FORCE_MPSB_END mBIT(14) -#define VXGE_HAL_WDE_CFG_NS1_MWB_OPT_EN mBIT(15) -#define VXGE_HAL_WDE_CFG_NS1_QB_OPT_EN mBIT(16) -#define VXGE_HAL_WDE_CFG_NS1_MPSB_OPT_EN mBIT(17) -#define VXGE_HAL_WDE_CFG_DISABLE_QPAD_FOR_UNALIGNED_ADDR mBIT(19) -#define VXGE_HAL_WDE_CFG_ALIGNMENT_PREFERENCE(val) vBIT(val, 30, 2) -#define VXGE_HAL_WDE_CFG_MEM_WORD_SIZE(val) vBIT(val, 46, 2) - -} vxge_hal_srpcim_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_SRPCIM_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-srpcim.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-srpcim.h +++ sys/dev/vxge/vxgehal/vxgehal-srpcim.h @@ -1,86 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_SRPCIM_H -#define VXGE_HAL_SRPCIM_H - -__EXTERN_BEGIN_DECLS - -/* - * __hal_srpcim_vpath_t - * - * HAL srpcim vpath messaging state. - */ -typedef struct __hal_srpcim_vpath_t { - u32 registered; - u32 srpcim_id; -} __hal_srpcim_vpath_t; - -/* - * __hal_srpcim_t - * - * HAL srpcim object. Represents privileged mode srpcim device. - */ -typedef struct __hal_srpcim_t { - __hal_srpcim_vpath_t vpath_state[VXGE_HAL_MAX_VIRTUAL_PATHS]; -} __hal_srpcim_t; - - -vxge_hal_status_e -__hal_srpcim_alarm_process( - __hal_device_t *hldev, - u32 srpcim_id, - u32 skip_alarms); - -vxge_hal_status_e -__hal_srpcim_intr_enable( - __hal_device_t *hldev, - u32 srpcim_id); - -vxge_hal_status_e -__hal_srpcim_intr_disable( - __hal_device_t *hldev, - u32 srpcim_id); - -vxge_hal_status_e -__hal_srpcim_initialize( - __hal_device_t *hldev); - -vxge_hal_status_e -__hal_srpcim_terminate( - __hal_device_t *hldev); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_SRPCIM_H */ Index: sys/dev/vxge/vxgehal/vxgehal-srpcim.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-srpcim.c +++ sys/dev/vxge/vxgehal/vxgehal-srpcim.c @@ -1,789 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * __hal_srpcim_alarm_process - Process Alarms. - * @hldev: HAL Device - * @srpcim_id: srpcim index - * @skip_alarms: Flag to indicate if not to clear the alarms - * - * Process srpcim alarms. - * - */ -vxge_hal_status_e -__hal_srpcim_alarm_process( - __hal_device_t * hldev, - u32 srpcim_id, - u32 skip_alarms) -{ - u64 val64; - u64 alarm_status; - u64 pic_status; - u64 xgmac_status; - vxge_hal_srpcim_reg_t *srpcim_reg; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_srpcim_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim_irq("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - srpcim_reg = hldev->srpcim_reg[srpcim_id]; - - alarm_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &srpcim_reg->srpcim_general_int_status); - - vxge_hal_info_log_srpcim_irq("alarm_status = 0x"VXGE_OS_STXFMT, - (ptr_t) alarm_status); - - if (alarm_status & VXGE_HAL_SRPCIM_GENERAL_INT_STATUS_XMAC_INT) { - - xgmac_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &srpcim_reg->xgmac_sr_int_status); - - vxge_hal_info_log_srpcim_irq("xgmac_status = 0x"VXGE_OS_STXFMT, - (ptr_t) xgmac_status); - - if (xgmac_status & - VXGE_HAL_XGMAC_SR_INT_STATUS_ASIC_NTWK_SR_ERR_INT) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &srpcim_reg->asic_ntwk_sr_err_reg); - - vxge_hal_info_log_srpcim_irq("asic_ntwk_sr_err_reg = \ - 0x"VXGE_OS_STXFMT, (ptr_t) val64); - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->asic_ntwk_sr_err_reg); - - } - } - - if (alarm_status & VXGE_HAL_SRPCIM_GENERAL_INT_STATUS_PIC_INT) { - - pic_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &srpcim_reg->srpcim_ppif_int_status); - - vxge_hal_info_log_srpcim_irq("pic_status = 0x"VXGE_OS_STXFMT, - (ptr_t) pic_status); - - if (pic_status & - VXGE_HAL_SRPCIM_PPIF_INT_STATUS_SRPCIM_GEN_ERRORS_INT) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &srpcim_reg->srpcim_gen_errors_reg); - - vxge_hal_info_log_srpcim_irq("srpcim_gen_errors_reg = \ - 0x"VXGE_OS_STXFMT, (ptr_t) val64); - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->srpcim_gen_errors_reg); - } - - if (pic_status & - VXGE_HAL_SRPCIM_PPIF_INT_STATUS_MRPCIM_TO_SRPCIM_ALARM) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &srpcim_reg->mrpcim_to_srpcim_alarm_reg); - - vxge_hal_info_log_srpcim_irq("mrpcim_to_srpcim_alarm_reg = \ - 0x"VXGE_OS_STXFMT, (ptr_t) val64); - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->mrpcim_to_srpcim_alarm_reg); - - } - } - - if (alarm_status & ~( - VXGE_HAL_SRPCIM_GENERAL_INT_STATUS_PIC_INT | - VXGE_HAL_SRPCIM_GENERAL_INT_STATUS_XMAC_INT)) { - vxge_hal_trace_log_srpcim_irq("%s:%s:%d Unknown Alarm", - __FILE__, __func__, __LINE__); - } - - vxge_hal_trace_log_srpcim_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_srpcim_alarm_process - Process srpcim Alarms. - * @devh: Device Handle. - * @skip_alarms: Flag to indicate if not to clear the alarms - * - * Process srpcim alarms. - * - */ -vxge_hal_status_e -vxge_hal_srpcim_alarm_process( - vxge_hal_device_h devh, - u32 skip_alarms) -{ - u32 i; - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_srpcim_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim_irq("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - vxge_hal_trace_log_srpcim_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->mrpcim_reg->srpcim_to_mrpcim_alarm_reg); - - vxge_hal_trace_log_srpcim_irq("srpcim_to_mrpcim_alarm_reg = \ - 0x"VXGE_OS_STXFMT, (ptr_t) val64); - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - - if (val64 & mBIT(i)) { - status = __hal_srpcim_alarm_process(hldev, - i, skip_alarms); - } - } - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &hldev->mrpcim_reg->srpcim_to_mrpcim_alarm_reg); - } else { - status = __hal_srpcim_alarm_process(hldev, - hldev->srpcim_id, skip_alarms); - } - - vxge_hal_trace_log_srpcim_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_srpcim_intr_enable - Enable srpcim interrupts. - * @hldev: Hal Device. - * @srpcim_id: SRPCIM Id - * - * Enable srpcim interrupts. - * - * See also: __hal_srpcim_intr_disable() - */ -vxge_hal_status_e -__hal_srpcim_intr_enable( - __hal_device_t * hldev, - u32 srpcim_id) -{ - vxge_hal_srpcim_reg_t *srpcim_reg; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - srpcim_reg = hldev->srpcim_reg[srpcim_id]; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->srpcim_gen_errors_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->mrpcim_to_srpcim_alarm_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->vpath_to_srpcim_alarm_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->srpcim_ppif_int_status); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->mrpcim_msg_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->vpath_msg_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->srpcim_pcipif_int_status); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->asic_ntwk_sr_err_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->xgmac_sr_int_status); - - vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &srpcim_reg->srpcim_general_int_status); - - /* Unmask the individual interrupts. */ - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &srpcim_reg->vpath_msg_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &srpcim_reg->srpcim_pcipif_int_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(~VXGE_HAL_SRPCIM_GENERAL_INT_MASK_PCI_INT, 0), - &srpcim_reg->srpcim_general_int_mask); - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_srpcim_intr_enable - Enable srpcim interrupts. - * @devh: Hal Device. - * - * Enable srpcim interrupts. - * - * See also: vxge_hal_srpcim_intr_disable() - */ -vxge_hal_status_e -vxge_hal_srpcim_intr_enable( - vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - - status = __hal_srpcim_intr_enable(hldev, i); - - } - - } else { - status = __hal_srpcim_intr_enable(hldev, hldev->srpcim_id); - } - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_srpcim_intr_disable - Disable srpcim interrupts. - * @hldev: Hal Device. - * @srpcim_id: SRPCIM Id - * - * Disable srpcim interrupts. - * - * See also: __hal_srpcim_intr_enable() - */ -vxge_hal_status_e -__hal_srpcim_intr_disable( - __hal_device_t * hldev, - u32 srpcim_id) -{ - vxge_hal_srpcim_reg_t *srpcim_reg; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - srpcim_reg = hldev->srpcim_reg[srpcim_id]; - - /* Mask the individual interrupts. */ - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->vpath_msg_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->srpcim_pcipif_int_mask); - - vxge_hal_pio_mem_write32_upper( - hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &srpcim_reg->srpcim_general_int_mask); - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); - -} - -/* - * vxge_hal_srpcim_intr_disable - Disable srpcim interrupts. - * @devh: Hal Device. - * - * Disable srpcim interrupts. - * - * See also: vxge_hal_srpcim_intr_enable() - */ -vxge_hal_status_e -vxge_hal_srpcim_intr_disable( - vxge_hal_device_h devh) -{ - u32 i; - vxge_hal_status_e status; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - - status = __hal_srpcim_intr_disable(hldev, i); - - } - - } else { - status = __hal_srpcim_intr_disable(hldev, hldev->srpcim_id); - } - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_srpcim_msix_set - Associate MSIX vector with srpcim alarm - * @hldev: HAL device. - * @alarm_msix_id: MSIX vector for alarm. - * - * This API will associate a given MSIX vector numbers with srpcim alarm - */ -vxge_hal_status_e -vxge_hal_srpcim_msix_set(vxge_hal_device_h devh, int alarm_msix_id) -{ - u32 i; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32( - VXGE_HAL_SRPCIM_INTERRUPT_CFG1_ALARM_MAP_TO_MSG( - alarm_msix_id), - 0), - &hldev->srpcim_reg[i]->srpcim_interrupt_cfg1); - - } - - } else { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32( - VXGE_HAL_SRPCIM_INTERRUPT_CFG1_ALARM_MAP_TO_MSG( - alarm_msix_id), - 0), - &hldev->srpcim_reg[hldev->srpcim_id]-> - srpcim_interrupt_cfg1); - } - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_srpcim_msix_mask - Mask MSIX Vector. - * @hldev: HAL device. - * - * The function masks the srpcim msix interrupt - * - */ -void -vxge_hal_srpcim_msix_mask(vxge_hal_device_h devh) -{ - u32 i; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return; - - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32( - VXGE_HAL_SRPCIM_SET_MSIX_MASK_SRPCIM_SET_MSIX_MASK, - 0), - &hldev->srpcim_reg[i]->srpcim_set_msix_mask); - - } - - } else { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32( - VXGE_HAL_SRPCIM_SET_MSIX_MASK_SRPCIM_SET_MSIX_MASK, - 0), - &hldev->srpcim_reg[hldev->srpcim_id]->srpcim_set_msix_mask); - } - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_srpcim_msix_clear - Clear MSIX Vector. - * @hldev: HAL device. - * - * The function clears the srpcim msix interrupt - * - */ -void -vxge_hal_srpcim_msix_clear(vxge_hal_device_h devh) -{ - u32 i; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return; - - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32( - VXGE_HAL_SRPCIM_CLEAR_MSIX_MASK_SRPCIM_CLEAR_MSIX_MASK, - 0), - &hldev->srpcim_reg[i]->srpcim_clear_msix_mask); - - } - - } else { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32( - VXGE_HAL_SRPCIM_CLEAR_MSIX_MASK_SRPCIM_CLEAR_MSIX_MASK, - 0), - &hldev->srpcim_reg[hldev->srpcim_id]-> - srpcim_clear_msix_mask); - } - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_srpcim_msix_unmask - Unmask MSIX Vector. - * @hldev: HAL device. - * - * The function unmasks the srpcim msix interrupt - * - */ -void -vxge_hal_srpcim_msix_unmask(vxge_hal_device_h devh) -{ - u32 i; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("devh = 0x"VXGE_OS_STXFMT, - (ptr_t) devh); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - - return; - - } - - if (hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_MRPCIM) { - - for (i = 0; i < VXGE_HAL_TITAN_SRPCIM_REG_SPACES; i++) { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32( - VXGE_HAL_SRPCIM_CLR_MSIX_ONE_SHOT_SRPCIM_CLR_MSIX_ONE_SHOT, - 0), - &hldev->srpcim_reg[i]->srpcim_clr_msix_one_shot); - - } - - } else { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32( - VXGE_HAL_SRPCIM_CLR_MSIX_ONE_SHOT_SRPCIM_CLR_MSIX_ONE_SHOT, - 0), - &hldev->srpcim_reg[hldev->srpcim_id]-> - srpcim_clr_msix_one_shot); - } - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_srpcim_initialize - Initialize srpcim. - * @hldev: HAL Device - * - * Initialize srpcim. - * - */ -vxge_hal_status_e -__hal_srpcim_initialize( - __hal_device_t * hldev) -{ - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - if (!(hldev->access_rights & VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM)) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - return (VXGE_HAL_ERR_PRIVILAGED_OPEARATION); - } - - hldev->srpcim = (__hal_srpcim_t *) - vxge_os_malloc(hldev->header.pdev, sizeof(__hal_srpcim_t)); - - if (hldev->srpcim == NULL) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_OUT_OF_MEMORY); - return (VXGE_HAL_ERR_OUT_OF_MEMORY); - } - - vxge_os_memzero(hldev->srpcim, sizeof(__hal_srpcim_t)); - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * __hal_srpcim_terminate - Terminate srpcim. - * @hldev: HAL Device - * - * Terminate srpcim. - * - */ -vxge_hal_status_e -__hal_srpcim_terminate( - __hal_device_t * hldev) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_srpcim("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_srpcim("hldev = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev); - - if (hldev->srpcim == NULL) { - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vxge_os_free(hldev->header.pdev, - hldev->srpcim, sizeof(__hal_srpcim_t)); - - hldev->srpcim = NULL; - - vxge_hal_trace_log_srpcim("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} Index: sys/dev/vxge/vxgehal/vxgehal-swapper.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-swapper.h +++ sys/dev/vxge/vxgehal/vxgehal-swapper.h @@ -1,74 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_SWAPPER_H -#define VXGE_HAL_SWAPPER_H - -__EXTERN_BEGIN_DECLS - -#define VXGE_HAL_SWAPPER_INITIAL_VALUE 0x0123456789abcdefULL -#define VXGE_HAL_SWAPPER_BYTE_SWAPPED 0xefcdab8967452301ULL -#define VXGE_HAL_SWAPPER_BIT_FLIPPED 0x80c4a2e691d5b3f7ULL -#define VXGE_HAL_SWAPPER_BYTE_SWAPPED_BIT_FLIPPED 0xf7b3d591e6a2c480ULL - -#define VXGE_HAL_SWAPPER_READ_BYTE_SWAP_ENABLE 0xFFFFFFFFFFFFFFFFULL -#define VXGE_HAL_SWAPPER_READ_BYTE_SWAP_DISABLE 0x0000000000000000ULL - -#define VXGE_HAL_SWAPPER_READ_BIT_FLAP_ENABLE 0xFFFFFFFFFFFFFFFFULL -#define VXGE_HAL_SWAPPER_READ_BIT_FLAP_DISABLE 0x0000000000000000ULL - -#define VXGE_HAL_SWAPPER_WRITE_BYTE_SWAP_ENABLE 0xFFFFFFFFFFFFFFFFULL -#define VXGE_HAL_SWAPPER_WRITE_BYTE_SWAP_DISABLE 0x0000000000000000ULL - -#define VXGE_HAL_SWAPPER_WRITE_BIT_FLAP_ENABLE 0xFFFFFFFFFFFFFFFFULL -#define VXGE_HAL_SWAPPER_WRITE_BIT_FLAP_DISABLE 0x0000000000000000ULL - -vxge_hal_status_e -__hal_legacy_swapper_set( - pci_dev_h pdev, - pci_reg_h regh, - vxge_hal_legacy_reg_t *legacy_reg); -vxge_hal_status_e -__hal_vpath_swapper_set( - vxge_hal_device_t *hldev, - u32 vp_id); - -vxge_hal_status_e -__hal_kdfc_swapper_set( - vxge_hal_device_t *hldev, - u32 vp_id); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_SWAPPER_H */ Index: sys/dev/vxge/vxgehal/vxgehal-swapper.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-swapper.c +++ sys/dev/vxge/vxgehal/vxgehal-swapper.c @@ -1,245 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include - -/* - * _hal_legacy_swapper_set - Set the swapper bits for the legacy secion. - * @pdev: PCI device object. - * @regh: BAR0 mapped memory handle (Solaris), or simply PCI device @pdev - * (Linux and the rest.) - * @legacy_reg: Address of the legacy register space. - * - * Set the swapper bits appropriately for the lagacy section. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_SWAPPER_CTRL - failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -__hal_legacy_swapper_set( - pci_dev_h pdev, - pci_reg_h regh, - vxge_hal_legacy_reg_t *legacy_reg) -{ - u64 val64; - vxge_hal_status_e status; - - vxge_assert(legacy_reg != NULL); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh = 0x"VXGE_OS_STXFMT", " - "legacy_reg = 0x"VXGE_OS_STXFMT, (ptr_t) pdev, (ptr_t) regh, - (ptr_t) legacy_reg); - - val64 = vxge_os_pio_mem_read64(pdev, regh, &legacy_reg->toc_swapper_fb); - - vxge_hal_info_log_driver("TOC Swapper Fb: 0x"VXGE_OS_LLXFMT, val64); - - vxge_os_wmb(); - - switch (val64) { - - case VXGE_HAL_SWAPPER_INITIAL_VALUE: - return (VXGE_HAL_OK); - - case VXGE_HAL_SWAPPER_BYTE_SWAPPED_BIT_FLIPPED: - vxge_os_pio_mem_write64(pdev, regh, - VXGE_HAL_SWAPPER_READ_BYTE_SWAP_ENABLE, - &legacy_reg->pifm_rd_swap_en); - vxge_os_pio_mem_write64(pdev, regh, - VXGE_HAL_SWAPPER_READ_BIT_FLAP_ENABLE, - &legacy_reg->pifm_rd_flip_en); - vxge_os_pio_mem_write64(pdev, regh, - VXGE_HAL_SWAPPER_WRITE_BYTE_SWAP_ENABLE, - &legacy_reg->pifm_wr_swap_en); - vxge_os_pio_mem_write64(pdev, regh, - VXGE_HAL_SWAPPER_WRITE_BIT_FLAP_ENABLE, - &legacy_reg->pifm_wr_flip_en); - break; - - case VXGE_HAL_SWAPPER_BYTE_SWAPPED: - vxge_os_pio_mem_write64(pdev, regh, - VXGE_HAL_SWAPPER_READ_BYTE_SWAP_ENABLE, - &legacy_reg->pifm_rd_swap_en); - vxge_os_pio_mem_write64(pdev, regh, - VXGE_HAL_SWAPPER_WRITE_BYTE_SWAP_ENABLE, - &legacy_reg->pifm_wr_swap_en); - break; - - case VXGE_HAL_SWAPPER_BIT_FLIPPED: - vxge_os_pio_mem_write64(pdev, regh, - VXGE_HAL_SWAPPER_READ_BIT_FLAP_ENABLE, - &legacy_reg->pifm_rd_flip_en); - vxge_os_pio_mem_write64(pdev, regh, - VXGE_HAL_SWAPPER_WRITE_BIT_FLAP_ENABLE, - &legacy_reg->pifm_wr_flip_en); - break; - - } - - vxge_os_wmb(); - - val64 = vxge_os_pio_mem_read64(pdev, regh, &legacy_reg->toc_swapper_fb); - - if (val64 == VXGE_HAL_SWAPPER_INITIAL_VALUE) { - status = VXGE_HAL_OK; - } else { - vxge_hal_err_log_driver("%s:TOC Swapper setting failed", - __func__); - status = VXGE_HAL_ERR_SWAPPER_CTRL; - } - - vxge_hal_info_log_driver("TOC Swapper Fb: 0x"VXGE_OS_LLXFMT, val64); - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_swapper_set - Set the swapper bits for the vpath. - * @hldev: HAL device object. - * @vp_id: Vpath Id - * - * Set the swapper bits appropriately for the vpath. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_SWAPPER_CTRL - failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -__hal_vpath_swapper_set( - vxge_hal_device_t *hldev, - u32 vp_id) -{ -#if !defined(VXGE_OS_HOST_BIG_ENDIAN) - u64 val64; - vxge_hal_vpath_reg_t *vpath_reg; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "hldev = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) hldev, vp_id); - - vpath_reg = ((__hal_device_t *) hldev)->vpath_reg[vp_id]; - - val64 = vxge_os_pio_mem_read64(hldev->pdev, hldev->regh0, - &vpath_reg->vpath_general_cfg1); - - vxge_os_wmb(); - - val64 |= VXGE_HAL_VPATH_GENERAL_CFG1_CTL_BYTE_SWAPEN; - - vxge_os_pio_mem_write64(hldev->pdev, hldev->regh0, - val64, - &vpath_reg->vpath_general_cfg1); - vxge_os_wmb(); - - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -#endif - return (VXGE_HAL_OK); -} - - -/* - * __hal_kdfc_swapper_set - Set the swapper bits for the kdfc. - * @hldev: HAL device object. - * @vp_id: Vpath Id - * - * Set the swapper bits appropriately for the vpath. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_SWAPPER_CTRL - failed. - * - * See also: vxge_hal_status_e {}. - */ -vxge_hal_status_e -__hal_kdfc_swapper_set( - vxge_hal_device_t *hldev, - u32 vp_id) -{ - u64 val64; - vxge_hal_vpath_reg_t *vpath_reg; - vxge_hal_legacy_reg_t *legacy_reg; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("hldev = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) hldev, vp_id); - - vpath_reg = ((__hal_device_t *) hldev)->vpath_reg[vp_id]; - legacy_reg = ((__hal_device_t *) hldev)->legacy_reg; - - val64 = vxge_os_pio_mem_read64(hldev->pdev, hldev->regh0, - &legacy_reg->pifm_wr_swap_en); - - if (val64 == VXGE_HAL_SWAPPER_WRITE_BYTE_SWAP_ENABLE) { - - val64 = vxge_os_pio_mem_read64(hldev->pdev, hldev->regh0, - &vpath_reg->kdfcctl_cfg0); - - vxge_os_wmb(); - - val64 |= VXGE_HAL_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO0 | - VXGE_HAL_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO1 | - VXGE_HAL_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO2; - - vxge_os_pio_mem_write64(hldev->pdev, hldev->regh0, - val64, - &vpath_reg->kdfcctl_cfg0); - vxge_os_wmb(); - - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} Index: sys/dev/vxge/vxgehal/vxgehal-toc-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-toc-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-toc-reg.h @@ -1,83 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_TOC_REGS_H -#define VXGE_HAL_TOC_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_toc_reg_t { - - u8 unused00050[0x00050]; - -/* 0x00050 */ u64 toc_common_pointer; -#define VXGE_HAL_TOC_COMMON_POINTER_INITIAL_VAL(val) vBIT(val, 0, 64) -/* 0x00058 */ u64 toc_memrepair_pointer; -#define VXGE_HAL_TOC_MEMREPAIR_POINTER_INITIAL_VAL(val) vBIT(val, 0, 64) -/* 0x00060 */ u64 toc_pcicfgmgmt_pointer[17]; -#define VXGE_HAL_TOC_PCICFGMGMT_POINTER_INITIAL_VAL(val) vBIT(val, 0, 64) - u8 unused001e0[0x001e0 - 0x000e8]; - -/* 0x001e0 */ u64 toc_mrpcim_pointer; -#define VXGE_HAL_TOC_MRPCIM_POINTER_INITIAL_VAL(val) vBIT(val, 0, 64) -/* 0x001e8 */ u64 toc_srpcim_pointer[17]; -#define VXGE_HAL_TOC_SRPCIM_POINTER_INITIAL_VAL(val) vBIT(val, 0, 64) - u8 unused00278[0x00278 - 0x00270]; - -/* 0x00278 */ u64 toc_vpmgmt_pointer[17]; -#define VXGE_HAL_TOC_VPMGMT_POINTER_INITIAL_VAL(val) vBIT(val, 0, 64) - u8 unused00390[0x00390 - 0x00300]; - -/* 0x00390 */ u64 toc_vpath_pointer[17]; -#define VXGE_HAL_TOC_VPATH_POINTER_INITIAL_VAL(val) vBIT(val, 0, 64) - u8 unused004a0[0x004a0 - 0x00418]; - -/* 0x004a0 */ u64 toc_kdfc; -#define VXGE_HAL_TOC_KDFC_INITIAL_OFFSET(val) vBIT(val, 0, 61) -#define VXGE_HAL_TOC_KDFC_INITIAL_BIR(val) vBIT(val, 61, 3) -/* 0x004a8 */ u64 toc_usdc; -#define VXGE_HAL_TOC_USDC_INITIAL_OFFSET(val) vBIT(val, 0, 61) -#define VXGE_HAL_TOC_USDC_INITIAL_BIR(val) vBIT(val, 61, 3) -/* 0x004b0 */ u64 toc_kdfc_vpath_stride; -#define VXGE_HAL_TOC_KDFC_VPATH_STRIDE_INITIAL_TOC_KDFC_VPATH_STRIDE(val)\ - vBIT(val, 0, 64) -/* 0x004b8 */ u64 toc_kdfc_fifo_stride; -#define VXGE_HAL_TOC_KDFC_FIFO_STRIDE_INITIAL_TOC_KDFC_FIFO_STRIDE(val)\ - vBIT(val, 0, 64) - -} vxge_hal_toc_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_TOC_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-virtualpath.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-virtualpath.h +++ sys/dev/vxge/vxgehal/vxgehal-virtualpath.h @@ -1,427 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_VIRTUALPATH_H -#define VXGE_HAL_VIRTUALPATH_H - -__EXTERN_BEGIN_DECLS - -struct __hal_device_t; - - -/* - * struct __hal_virtualpath_t - Virtual Path - * - * @vp_id: Virtual path id - * @vp_open: This flag specifies if vxge_hal_vp_open is called from LL Driver - * @hldev: Hal device - * @vp_config: Virtual Path Config - * @vp_reg: VPATH Register map address in BAR0 - * @vpmgmt_reg: VPATH_MGMT register map address - * @is_first_vpath: 1 if this first vpath in this vfunc, 0 otherwise - * @promisc_en: Promisc mode state flag. - * @min_bandwidth: Guaranteed Band Width in Mbps - * @max_bandwidth: Maximum Band Width in Mbps - * @max_mtu: Max mtu that can be supported - * @sess_grps_available: The mask of available session groups for this vpath - * @bmap_root_assigned: The bitmap root for this vpath - * @vsport_choices: The mask of vsports that are available for this vpath - * @vsport_number: vsport attached to this vpath - * @sess_grp_start: Session oid start - * @sess_grp_end: session oid end - * @max_kdfc_db: Maximum kernel mode doorbells - * @max_nofl_db: Maximum non offload doorbells - * @max_ofl_db: Maximum offload doorbells - * @max_msg_db: Maximum message doorbells - * @rxd_mem_size: Maximum RxD memory size - * @tx_intr_num: Interrupt Number associated with the TX - * @rx_intr_num: Interrupt Number associated with the RX - * @einta_intr_num: Interrupt Number associated with Emulated MSIX DeAssert IntA - * @bmap_intr_num: Interrupt Number associated with the bitmap - * @nce_oid_db: NCE ID database - * @session_oid_db: Session Object Id database - * @active_lros: Active LRO session list - * @active_lro_count: Active LRO count - * @free_lros: Free LRO session list - * @free_lro_count: Free LRO count - * @lro_lock: LRO session lists' lock - * @sqs: List of send queues - * @sq_lock: Lock for operations on sqs - * @srqs: List of SRQs - * @srq_lock: Lock for operations on srqs - * @srq_oid_db: DRQ object id database - * @cqrqs: CQRQs - * @cqrq_lock: Lock for operations on cqrqs - * @cqrq_oid_db: CQRQ object id database - * @umqh: UP Message Queue - * @dmqh: Down Message Queue - * @umq_dmq_ir: The adapter will overwrite and update this location as Messages - * are read from DMQ and written into UMQ. - * @umq_dmq_ir_reg_entry: Reg entry of umq_dmq_ir_t - * @ringh: Ring Queue - * @fifoh: FIFO Queue - * @vpath_handles: Virtual Path handles list - * @vpath_handles_lock: Lock for operations on Virtual Path handles list - * @stats_block: Memory for DMAing stats - * @stats: Vpath statistics - * - * Virtual path structure to encapsulate the data related to a virtual path. - * Virtual paths are allocated by the HAL upon getting configuration from the - * driver and inserted into the list of virtual paths. - */ -typedef struct __hal_virtualpath_t { - u32 vp_id; - - u32 vp_open; -#define VXGE_HAL_VP_NOT_OPEN 0 -#define VXGE_HAL_VP_OPEN 1 - - struct __hal_device_t *hldev; - vxge_hal_vp_config_t *vp_config; - vxge_hal_vpath_reg_t *vp_reg; - vxge_hal_vpmgmt_reg_t *vpmgmt_reg; - __hal_non_offload_db_wrapper_t *nofl_db; - __hal_messaging_db_wrapper_t *msg_db; - u32 is_first_vpath; - - u32 promisc_en; -#define VXGE_HAL_VP_PROMISC_ENABLE 1 -#define VXGE_HAL_VP_PROMISC_DISABLE 0 - - u32 min_bandwidth; - u32 max_bandwidth; - - u32 max_mtu; - u64 sess_grps_available; - u32 bmap_root_assigned; - u32 vsport_choices; - u32 vsport_number; - u32 sess_grp_start; - u32 sess_grp_end; - u32 max_kdfc_db; - u32 max_nofl_db; - u32 max_ofl_db; - u32 max_msg_db; - u32 rxd_mem_size; - u32 tx_intr_num; - u32 rx_intr_num; - u32 einta_intr_num; - u32 bmap_intr_num; - - u64 tim_tti_cfg1_saved; - u64 tim_tti_cfg3_saved; - u64 tim_rti_cfg1_saved; - u64 tim_rti_cfg3_saved; - - - vxge_hal_ring_h ringh; - vxge_hal_fifo_h fifoh; - vxge_list_t vpath_handles; - spinlock_t vpath_handles_lock; - __hal_blockpool_entry_t *stats_block; - vxge_hal_vpath_stats_hw_info_t *hw_stats; - vxge_hal_vpath_stats_hw_info_t *hw_stats_sav; - vxge_hal_vpath_stats_sw_info_t *sw_stats; -} __hal_virtualpath_t; - -/* - * struct __hal_vpath_handle_t - List item to store callback information - * @item: List head to keep the item in linked list - * @vpath: Virtual path to which this item belongs - * @cb_fn: Callback function to be called - * @client_handle: Client handle to be returned with the callback - * - * This structure is used to store the callback information. - */ -typedef struct __hal_vpath_handle_t { - vxge_list_t item; - __hal_virtualpath_t *vpath; - vxge_hal_vpath_callback_f cb_fn; - vxge_hal_client_h client_handle; -} __hal_vpath_handle_t; - - -#define VXGE_HAL_VIRTUAL_PATH_HANDLE(vpath) \ - ((vxge_hal_vpath_h)(vpath)->vpath_handles.next) - -#define VXGE_HAL_VPATH_STATS_PIO_READ(offset) { \ - status = __hal_vpath_stats_access(vpath, \ - VXGE_HAL_STATS_OP_READ, \ - offset, \ - &val64); \ - if (status != VXGE_HAL_OK) { \ - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", \ - __FILE__, __func__, __LINE__, status); \ - return (status); \ - } \ -} - -vxge_hal_status_e -__hal_vpath_size_quantum_set( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vpath_mgmt_read( - struct __hal_device_t *hldev, - __hal_virtualpath_t *vpath); - -vxge_hal_status_e -__hal_vpath_pci_read( - struct __hal_device_t *hldev, - u32 vp_id, - u32 offset, - u32 length, - void *val); - -vxge_hal_status_e -__hal_vpath_reset_check( - __hal_virtualpath_t *vpath); - -vxge_hal_status_e -__hal_vpath_fw_memo_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - u32 action, - u64 param_index, - u64 *data0, - u64 *data1); - -vxge_hal_status_e -__hal_vpath_fw_flash_ver_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - vxge_hal_device_version_t *fw_version, - vxge_hal_device_date_t *fw_date, - vxge_hal_device_version_t *flash_version, - vxge_hal_device_date_t *flash_date); - -vxge_hal_status_e -__hal_vpath_card_info_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - u8 *serial_number, - u8 *part_number, - u8 *product_description); - -vxge_hal_status_e -__hal_vpath_pmd_info_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - u32 *ports, - vxge_hal_device_pmd_info_t *pmd_port0, - vxge_hal_device_pmd_info_t *pmd_port1); - -u64 -__hal_vpath_pci_func_mode_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg); - -vxge_hal_device_lag_mode_e -__hal_vpath_lag_mode_get( - __hal_virtualpath_t *vpath); - -u64 -__hal_vpath_vpath_map_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - u32 vh, - u32 func, - vxge_hal_vpath_reg_t *vpath_reg); - -vxge_hal_status_e -__hal_vpath_fw_upgrade( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - u8 *buffer, - u32 length); - -vxge_hal_status_e -__hal_vpath_pcie_func_mode_set( - struct __hal_device_t *hldev, - u32 vp_id, - u32 func_mode); - -vxge_hal_status_e -__hal_vpath_flick_link_led( - struct __hal_device_t *hldev, - u32 vp_id, - u32 port, - u32 on_off); - -vxge_hal_status_e -__hal_vpath_udp_rth_set( - struct __hal_device_t *hldev, - u32 vp_id, - u32 on_off); - -vxge_hal_status_e -__hal_vpath_rts_table_get( - vxge_hal_vpath_h vpath_handle, - u32 action, - u32 rts_table, - u32 offset, - u64 *data1, - u64 *data2); - -vxge_hal_status_e -__hal_vpath_rts_table_set( - vxge_hal_vpath_h vpath_handle, - u32 action, - u32 rts_table, - u32 offset, - u64 data1, - u64 data2); - - -vxge_hal_status_e -__hal_vpath_hw_reset( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vpath_sw_reset( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vpath_prc_configure( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vpath_kdfc_configure( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vpath_mac_configure( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vpath_tim_configure( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vpath_hw_initialize( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vp_initialize( - vxge_hal_device_h devh, - u32 vp_id, - vxge_hal_vp_config_t *config); - -void -__hal_vp_terminate( - vxge_hal_device_h devh, - u32 vp_id); - -vxge_hal_status_e -__hal_vpath_hw_addr_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - macaddr_t macaddr, - macaddr_t macaddr_mask); - - -vxge_hal_status_e -__hal_vpath_intr_enable( - __hal_virtualpath_t *vpath); - -vxge_hal_status_e -__hal_vpath_intr_disable( - __hal_virtualpath_t *vpath); - -vxge_hal_device_link_state_e -__hal_vpath_link_state_test( - __hal_virtualpath_t *vpath); - -vxge_hal_device_link_state_e -__hal_vpath_link_state_poll( - __hal_virtualpath_t *vpath); - -vxge_hal_device_data_rate_e -__hal_vpath_data_rate_poll( - __hal_virtualpath_t *vpath); - -vxge_hal_status_e -__hal_vpath_alarm_process( - __hal_virtualpath_t *vpath, - u32 skip_alarms); - -vxge_hal_status_e -__hal_vpath_stats_access( - __hal_virtualpath_t *vpath, - u32 operation, - u32 offset, - u64 *stat); - -vxge_hal_status_e -__hal_vpath_xmac_tx_stats_get( - __hal_virtualpath_t *vpath, - vxge_hal_xmac_vpath_tx_stats_t *vpath_tx_stats); - -vxge_hal_status_e -__hal_vpath_xmac_rx_stats_get( - __hal_virtualpath_t *vpath, - vxge_hal_xmac_vpath_rx_stats_t *vpath_rx_stats); - - -vxge_hal_status_e -__hal_vpath_hw_stats_get( - __hal_virtualpath_t *vpath, - vxge_hal_vpath_stats_hw_info_t *hw_stats); - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_VIRTUALPATH_H */ Index: sys/dev/vxge/vxgehal/vxgehal-virtualpath.c =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-virtualpath.c +++ sys/dev/vxge/vxgehal/vxgehal-virtualpath.c @@ -1,12145 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ -#include - - -/* - * __hal_vpath_fw_memo_get - Get the fw memo interface parameters - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle, or simply PCI device @pdev - * (Linux and the rest.) - * @vp_id: Vpath id - * @vpath_reg: Pointer to vpath registers - * @action: Action for FW Interface - * @param_index: Index of the parameter - * @data0: Buffer to return data 0 register contents - * @data1: Buffer to return data 1 register contents - * - * Returns FW memo interface parameters - * - */ -vxge_hal_status_e -__hal_vpath_fw_memo_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - u32 action, - u64 param_index, - u64 *data0, - u64 *data1) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((vpath_reg != NULL) && (data0 != NULL) && (data1 != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "vp_id = %d, vpath_reg = 0x"VXGE_OS_STXFMT", action = %d, " - "param_index = %lld, data0 = 0x"VXGE_OS_STXFMT", " - "data1 = 0x"VXGE_OS_STXFMT, (ptr_t) pdev, (ptr_t) regh0, - vp_id, (ptr_t) vpath_reg, action, param_index, - (ptr_t) data0, (ptr_t) data1); - - vxge_os_pio_mem_write64(pdev, - regh0, - 0, - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_os_pio_mem_write64(pdev, - regh0, - param_index, - &vpath_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(pdev, - regh0, - 0, - &vpath_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION(action) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(0); - - vxge_hal_pio_mem_write32_lower(pdev, - regh0, - (u32) bVAL32(val64, 32), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(pdev, - regh0, - (u32) bVAL32(val64, 0), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl); - - if (val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS) { - - *data0 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_data0); - - *data1 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_data1); - - status = VXGE_HAL_OK; - - } else { - status = VXGE_HAL_FAIL; - } - - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_fw_flash_ver_get - Get the fw version - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle, or simply PCI device @pdev - * (Linux and the rest.) - * @vp_id: Vpath id - * @vpath_reg: Pointer to vpath registers - * @fw_version: Buffer to return FW Version (Major) - * @fw_date: Buffer to return FW Version (date) - * @flash_version: Buffer to return FW Version (Major) - * @flash_date: Buffer to return FW Version (date) - * - * Returns FW Version - * - */ -vxge_hal_status_e -__hal_vpath_fw_flash_ver_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - vxge_hal_device_version_t *fw_version, - vxge_hal_device_date_t *fw_date, - vxge_hal_device_version_t *flash_version, - vxge_hal_device_date_t *flash_date) -{ - u64 data1 = 0ULL; - u64 data2 = 0ULL; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((vpath_reg != NULL) && (fw_version != NULL) && - (fw_date != NULL) && (flash_version != NULL) && - (flash_date != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "vp_id = %d, vpath_reg = 0x"VXGE_OS_STXFMT", " - "fw_version = 0x"VXGE_OS_STXFMT", " - "fw_date = 0x"VXGE_OS_STXFMT", " - "flash_version = 0x"VXGE_OS_STXFMT", " - "flash_date = 0x"VXGE_OS_STXFMT, - (ptr_t) pdev, (ptr_t) regh0, vp_id, (ptr_t) vpath_reg, - (ptr_t) fw_version, (ptr_t) fw_date, - (ptr_t) flash_version, (ptr_t) flash_date); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_VERSION, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_FW_VERSION, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - fw_date->day = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_DAY(data1); - fw_date->month = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MONTH(data1); - fw_date->year = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_YEAR(data1); - - (void) vxge_os_snprintf(fw_date->date, sizeof(fw_date->date), - "%2.2d/%2.2d/%4.4d", - fw_date->month, fw_date->day, fw_date->year); - - fw_version->major = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MAJOR(data1); - fw_version->minor = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_MINOR(data1); - fw_version->build = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FW_VER_BUILD(data1); - - (void) vxge_os_snprintf(fw_version->version, - sizeof(fw_version->version), - "%d.%d.%d", fw_version->major, - fw_version->minor, fw_version->build); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_FLASH_VERSION, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - flash_date->day = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_DAY(data1); - flash_date->month = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_MONTH(data1); - flash_date->year = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_YEAR(data1); - - (void) vxge_os_snprintf(flash_date->date, sizeof(flash_date->date), - "%2.2d/%2.2d/%4.4d", flash_date->month, flash_date->day, - flash_date->year); - - flash_version->major = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_MAJOR(data1); - flash_version->minor = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_MINOR(data1); - flash_version->build = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FLASH_VER_BUILD(data1); - - (void) vxge_os_snprintf(flash_version->version, - sizeof(flash_version->version), - "%d.%d.%d", flash_version->major, - flash_version->minor, flash_version->build); - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_card_info_get - Get the card infor - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle, or simply PCI device @pdev - * (Linux and the rest.) - * @vp_id: Vpath id - * @vpath_reg: Pointer to vpath registers - * @serial_number: Buffer to return card serial number - * @part_number: Buffer to return card part number - * @product_description: Buffer to return card description - * - * Returns Card Info - * - */ -vxge_hal_status_e -__hal_vpath_card_info_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - u8 *serial_number, - u8 *part_number, - u8 *product_description) -{ - u32 i, j; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((vpath_reg != NULL) && (serial_number != NULL) && - (part_number != NULL) && (product_description != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "vp_id = %d, vpath_reg = 0x"VXGE_OS_STXFMT", " - "serial_number = 0x"VXGE_OS_STXFMT", " - "part_number = 0x"VXGE_OS_STXFMT", " - "product_description = 0x"VXGE_OS_STXFMT, - (ptr_t) pdev, (ptr_t) regh0, vp_id, (ptr_t) vpath_reg, - (ptr_t) serial_number, (ptr_t) part_number, - (ptr_t) product_description); - - *serial_number = 0; - *part_number = 0; - *product_description = 0; - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_SERIAL_NUMBER, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) serial_number)[0] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) serial_number)[1] = vxge_os_ntohll(data2); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PART_NUMBER, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) part_number)[0] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) part_number)[1] = vxge_os_ntohll(data2); - - j = 0; - - for (i = VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_0; - i <= VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_DESC_3; - i++) { - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - i, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) product_description)[j++] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) product_description)[j++] = vxge_os_ntohll(data2); - - } - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_pmd_info_get - Get the PMD info - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle, or simply PCI device @pdev - * (Linux and the rest.) - * @vp_id: Vpath id - * @vpath_reg: Pointer to vpath registers - * @ports: Number of ports supported - * @pmd_port0: Buffer to return PMD info for port 0 - * @pmd_port1: Buffer to return PMD info for port 1 - * - * Returns PMD Info - * - */ -vxge_hal_status_e -__hal_vpath_pmd_info_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - u32 *ports, - vxge_hal_device_pmd_info_t *pmd_port0, - vxge_hal_device_pmd_info_t *pmd_port1) -{ - u64 data1 = 0ULL; - u64 data2 = 0ULL; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((vpath_reg != NULL) && - (pmd_port0 != NULL) && (pmd_port1 != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "vp_id = %d, vpath_reg = 0x"VXGE_OS_STXFMT", " - "ports = 0x"VXGE_OS_STXFMT", " - "pmd_port0 = 0x"VXGE_OS_STXFMT", " - "pmd_port1 = 0x"VXGE_OS_STXFMT, - (ptr_t) pdev, (ptr_t) regh0, vp_id, (ptr_t) vpath_reg, - (ptr_t) ports, (ptr_t) pmd_port0, (ptr_t) pmd_port1); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORTS, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - *ports = (u32) data1; - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT0_PMD_TYPE, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (data1) { - - pmd_port0->type = (u32) data1; - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT0_PMD_VENDOR, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) pmd_port0->vendor)[0] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) pmd_port0->vendor)[1] = vxge_os_ntohll(data2); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT0_PMD_PARTNO, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) pmd_port0->part_num)[0] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) pmd_port0->part_num)[1] = vxge_os_ntohll(data2); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT0_PMD_SERNO, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) pmd_port0->ser_num)[0] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) pmd_port0->ser_num)[1] = vxge_os_ntohll(data2); - } else { - vxge_os_memzero(pmd_port0, sizeof(vxge_hal_device_pmd_info_t)); - } - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT1_PMD_TYPE, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (data1) { - - pmd_port1->type = (u32) data1; - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT1_PMD_VENDOR, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) pmd_port1->vendor)[0] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) pmd_port1->vendor)[1] = vxge_os_ntohll(data2); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT1_PMD_PARTNO, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) pmd_port1->part_num)[0] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) pmd_port1->part_num)[1] = vxge_os_ntohll(data2); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_MEMO_CARD_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PORT1_PMD_SERNO, - &data1, &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - /* LINTED */ - ((u64 *) pmd_port1->ser_num)[0] = vxge_os_ntohll(data1); - - /* LINTED */ - ((u64 *) pmd_port1->ser_num)[1] = vxge_os_ntohll(data2); - - } else { - vxge_os_memzero(pmd_port1, sizeof(vxge_hal_device_pmd_info_t)); - } - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_pci_func_mode_get - Get the pci mode - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle, or simply PCI device @pdev - * (Linux and the rest.) - * @vp_id: Vpath id - * @vpath_reg: Pointer to vpath registers - * - * Returns pci function mode - * - */ -u64 -__hal_vpath_pci_func_mode_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg) -{ - u64 data1 = 0ULL; - u64 data2 = 0ULL; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath_reg != NULL); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "vp_id = %d, vpath_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) pdev, (ptr_t) regh0, vp_id, (ptr_t) vpath_reg); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_GET_FUNC_MODE, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_PCI_MODE, - &data1, &data2); - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (data1); -} - -/* - * __hal_vpath_lag_mode_get - Get the LAG mode - * @vpath: VIrtual Path - * - * Returns the LAG mode in use - */ -vxge_hal_device_lag_mode_e -__hal_vpath_lag_mode_get(__hal_virtualpath_t *vpath) -{ - u64 data1 = 0ULL; - u64 data2 = 0ULL; - u32 lag_mode = VXGE_HAL_DEVICE_LAG_MODE_UNKNOWN; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - (void) __hal_vpath_fw_memo_get(hldev->header.pdev, hldev->header.regh0, - vpath->vp_id, vpath->vp_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_PORT_INFO, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_LAG_MODE, - &data1, &data2); - - if (VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_MEMO_ITEM_STATUS(data1) == - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MEMO_ITEM_STATUS_SUCCESS) { - lag_mode = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA1_MEMO_ITEM_GET_LAG_MODE(data2); - status = VXGE_HAL_OK; - } else { - status = VXGE_HAL_FAIL; - } - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return ((vxge_hal_device_lag_mode_e) lag_mode); -} - -/* - * __hal_vpath_vpath_map_get - Get the vpath map - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle, or simply PCI device @pdev - * (Linux and the rest.) - * @vp_id: Vpath id - * @vh: Virtual Hierrachy - * @func: Function number - * @vpath_reg: Pointer to vpath registers - * - * Returns vpath map for a give hierarchy and function - * - */ -u64 -__hal_vpath_vpath_map_get(pci_dev_h pdev, pci_reg_h regh0, - u32 vp_id, u32 vh, u32 func, - vxge_hal_vpath_reg_t *vpath_reg) -{ - u64 i; - u64 val64 = 0ULL; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath_reg != NULL); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "vp_id = %d, vh = %d, func = %d, vpath_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) pdev, (ptr_t) regh0, vp_id, vh, func, (ptr_t) vpath_reg); - - status = __hal_vpath_fw_memo_get(pdev, regh0, vp_id, vpath_reg, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_VPATH_MAP, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_VH(vh) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNCTION(func), - &data1, &data2); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - if (data2 & VXGE_HAL_RTS_ACCESS_STEER_DATA1_IS_VPATH_ASSIGNED(i)) - val64 |= mBIT(i); - } - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (val64); -} - -/* - * __hal_vpath_pci_read - Read the content of given address - * in pci config space. - * @vpath: Virtual Path object. - * @offset: Configuration address(offset)to read from - * @length: Length of the data (1, 2 or 4 bytes) - * @val: Pointer to a buffer to return the content of the address - * - * Read from the vpath pci config space. - * - */ -vxge_hal_status_e -__hal_vpath_pci_read(struct __hal_device_t *hldev, - u32 vp_id, u32 offset, - u32 length, void *val) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((hldev != NULL) && (val != NULL)); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("hldev = 0x"VXGE_OS_STXFMT", vp_id = %d, " - "offset = %d, val = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev, vp_id, offset, (ptr_t) val); - - switch (length) { - case 1: - vxge_os_pci_read8(hldev->header.pdev, - hldev->header.cfgh, - offset, - ((u8 *) val)); - break; - case 2: - vxge_os_pci_read16(hldev->header.pdev, - hldev->header.cfgh, - offset, - ((u16 *) val)); - break; - case 4: - vxge_os_pci_read32(hldev->header.pdev, - hldev->header.cfgh, - offset, - ((u32 *) val)); - break; - default: - status = VXGE_HAL_FAIL; - vxge_os_memzero(val, length); - break; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_fw_upgrade - Upgrade the firmware - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle, or simply PCI device @pdev - * (Linux and the rest.) - * @vp_id: Vpath id - * @vpath_reg: Pointer to vpath registers - * @buffer: Buffer containing F/W image - * @length: Length of F/W image - * - * Upgrade the firmware - * - */ -vxge_hal_status_e -__hal_vpath_fw_upgrade( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - u8 *buffer, - u32 length) -{ - u32 i = 0; - u64 val64; - u32 not_done = TRUE; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((vpath_reg != NULL) && (buffer != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "vp_id = %d, vpath_reg = 0x"VXGE_OS_STXFMT", " - "buffer = 0x"VXGE_OS_STXFMT", length = %d\n", - (ptr_t) pdev, (ptr_t) regh0, vp_id, (ptr_t) vpath_reg, - (ptr_t) buffer, length); - - vxge_os_pio_mem_write64(pdev, - regh0, - 0, - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_os_pio_mem_write64(pdev, - regh0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_STREAM_SKIP, - &vpath_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(pdev, - regh0, - 0, - &vpath_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_UPGRADE) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET_FW_UPGRADE_MODE); - - vxge_hal_pio_mem_write32_lower(pdev, regh0, - (u32) bVAL32(val64, 32), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(pdev, regh0, - (u32) bVAL32(val64, 0), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = __hal_device_register_stall(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl); - - if (!(val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS)) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - while (not_done) { - if ((i + 16) > length) { - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - vxge_os_pio_mem_write64(pdev, regh0, ((u64) (buffer[i])) | - ((u64) (buffer[i + 1]) << 8) | - ((u64) (buffer[i + 2]) << 16) | - ((u64) (buffer[i + 3]) << 24) | - ((u64) (buffer[i + 4]) << 32) | - ((u64) (buffer[i + 5]) << 40) | - ((u64) (buffer[i + 6]) << 48) | - ((u64) (buffer[i + 7]) << 56), - &vpath_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(pdev, regh0, - ((u64) (buffer[i + 8])) | - ((u64) (buffer[i + 9]) << 8) | - ((u64) (buffer[i + 10]) << 16) | - ((u64) (buffer[i + 11]) << 24) | - ((u64) (buffer[i + 12]) << 32) | - ((u64) (buffer[i + 13]) << 40) | - ((u64) (buffer[i + 14]) << 48) | - ((u64) (buffer[i + 15]) << 56), - &vpath_reg->rts_access_steer_data1); - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_UPGRADE) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET_FW_UPGRADE_DATA); - vxge_hal_pio_mem_write32_lower(pdev, regh0, - (u32) bVAL32(val64, 32), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(pdev, regh0, - (u32) bVAL32(val64, 0), &vpath_reg->rts_access_steer_ctrl); - vxge_os_wmb(); - - status = __hal_device_register_stall(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl); - if (!(val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS)) { - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_data0); - switch (VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE(val64)) { - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE_OK: - i += 16; - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE_DONE: - not_done = FALSE; - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE_SKIP: - i += 16; - i += (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_SKIP_BYTES(val64); - break; - case VXGE_HAL_RTS_ACCESS_STEER_DATA0_FW_UPGRADE_GET_RET_CODE_ERROR: - default: - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - } - - vxge_os_pio_mem_write64(pdev, - regh0, - 0, - &vpath_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(pdev, - regh0, - 0, - &vpath_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FW_UPGRADE) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET_FW_UPGRADE_COMMIT); - - vxge_hal_pio_mem_write32_lower(pdev, - regh0, - (u32) bVAL32(val64, 32), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(pdev, - regh0, - (u32) bVAL32(val64, 0), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = __hal_device_register_stall(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - 100 * VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl); - - if (!(val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS)) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_OK); - - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_flick_link_led - Flick (blink) link LED. - * @hldev: HAL device. - * @vp_id: Vpath Id - * @port : Port number 0, or 1 - * @on_off: TRUE if flickering to be on, FALSE to be off - * - * Flicker the link LED. - */ -vxge_hal_status_e -__hal_vpath_flick_link_led(struct __hal_device_t *hldev, - u32 vp_id, u32 port, u32 on_off) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_vpath_reg_t *vp_reg; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "hldev = 0x"VXGE_OS_STXFMT", vp_id = %d, port = %d, on_off = %d", - (ptr_t) hldev, vp_id, port, on_off); - - vp_reg = hldev->vpath_reg[vp_id]; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) on_off, - &vp_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LED_CONTROL) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(0); - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_udp_rth_set - Enable or Disable UDP/RTH. - * @hldev: HAL device. - * @vp_id: Vpath Id - * @on_off: TRUE if UDP/RTH to be enabled, FALSE to be disabled - * - * Enable or Disable UDP/RTH. - */ -vxge_hal_status_e -__hal_vpath_udp_rth_set( - struct __hal_device_t *hldev, - u32 vp_id, - u32 on_off) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_vpath_reg_t *vp_reg; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "hldev = 0x"VXGE_OS_STXFMT", vp_id = %d, on_off = %d", - (ptr_t) hldev, vp_id, on_off); - - vp_reg = hldev->vpath_reg[vp_id]; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - ((on_off) ? VXGE_HAL_RTS_ACCESS_STEER_DATA0_UDP_RTH_ENABLE : 0), - &vp_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_UDP_RTH) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(0); - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_pcie_func_mode_set - Set PCI-E function mode. - * @hldev: HAL device. - * @vp_id: Vpath Id - * @func_mode: func_mode to be set - * - * Set PCI-E function mode. - */ -vxge_hal_status_e -__hal_vpath_pcie_func_mode_set(struct __hal_device_t *hldev, - u32 vp_id, u32 func_mode) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_vpath_reg_t *vp_reg; - - vxge_assert(hldev != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "hldev = 0x"VXGE_OS_STXFMT", vp_id = %d, func_mode = %d", - (ptr_t) hldev, vp_id, func_mode); - - vp_reg = hldev->vpath_reg[vp_id]; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_FUNC_MODE(func_mode), - &vp_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_FUNC_MODE) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(0); - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl); - - if (!(val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS)) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vp_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_COMMIT) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(0); - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl); - - if (val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS) { - status = VXGE_HAL_OK; - } else { - status = VXGE_HAL_FAIL; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_udp_rth_disable - Enable UDP/RTH. - * @vpath_handle: Vpath handle. - * - * Disable udp rth - * - */ -vxge_hal_status_e -vxge_hal_vpath_udp_rth_disable(vxge_hal_vpath_h vpath_handle) -{ - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - status = __hal_vpath_udp_rth_set(hldev, - vpath->vp_id, - FALSE); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * __hal_vpath_rts_table_get - Get the entries from RTS access tables - * @vpath_handle: Vpath handle. - * @action: Identifies the action to take on the specified entry. The - * interpretation of this field depends on the DATA_STRUCT_SEL field - * DA, VID, ETYPE, PN, RANGE_PN: - * 8'd0 - ADD_ENTRY (Add an entry to the table. This command may be - * rejected by management/administration). - * 8'd1 - DELETE_ENTRY (Add an entry to the table. This command may - * be rejected by management/administration) - * 8'd2 - LIST_FIRST_ENTRY - * 8'd3 - LIST_NEXT_ENTRY - * RTH_GEN_CFG, RTH_IT, RTH_JHASH_CFG, RTH_MASK, RTH_KEY, QOS, DS: - * 8'd0 - READ_ENTRY - * 8'd1 - WRITE_ENTRY - * Note: This field is updated by the H/W during an operation and - * is used to report additional TBD status information back to the - * host. - * @rts_table: Identifies the RTS data structure (i.e. lookup table) to access. - * 0; DA; Destination Address 1; VID; VLAN ID 2; ETYPE; Ethertype - * 3; PN; Layer 4 Port Number 4; Reserved 5; RTH_GEN_CFG; Receive - * Traffic Hashing General Configuration 6; RTH_IT; Receive Traffic - * Hashing Indirection Table 7; RTH_JHASH_CFG; Receive-Traffic - * Hashing Jenkins Hash Configuration 8; RTH_MASK; Receive Traffic - * Hashing Mask 9; RTH_KEY; Receive-Traffic Hashing Key 10; QOS; - * VLAN Quality of Service 11; DS; IP Differentiated Services - * @offset: Applies to RTH_IT, RTH_MASK, RTH_KEY, QOS, DS structures only. - * The interpretation of this field depends on the DATA_STRUCT_SEL - * field: - * RTH_IT - {BUCKET_NUM[0:7]} (Bucket Number) - * RTH_MASK - {5'b0, - * INDEX_8BYTE} (8-byte Index) - * RTH_KEY - {5'b0, INDEX_8BYTE} (8-byte Index) - * QOS - {5'b0, PRI} (Priority) - * DS - {5'b0, CP} (Codepoint) - * @data1: Pointer to the data 1 to be read from the table - * @data2: Pointer to the data 2 to be read from the table - * - * Read from the RTS table - * - */ -vxge_hal_status_e -__hal_vpath_rts_table_get( - vxge_hal_vpath_h vpath_handle, - u32 action, - u32 rts_table, - u32 offset, - u64 *data1, - u64 *data2) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((vpath_handle != NULL) && - (data1 != NULL) && (data2 != NULL)); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", action = %d, rts_table = %d, " - "offset = %d, data1 = 0x"VXGE_OS_STXFMT", data2 = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, action, rts_table, offset, (ptr_t) data1, - (ptr_t) data2); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION(action) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(rts_table) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(offset); - - - if ((rts_table == - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_SOLO_IT) || - (rts_table == - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT) || - (rts_table == - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MASK) || - (rts_table == - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_KEY)) { - val64 |= VXGE_HAL_RTS_ACCESS_STEER_CTRL_TABLE_SEL; - } - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &vpath->vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vpath->vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rts_access_steer_ctrl); - - if (!(val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS)) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_FAIL); - return (VXGE_HAL_FAIL); - } - - *data1 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rts_access_steer_data0); - - if ((rts_table == - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA) || - (rts_table == - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT)) { - *data2 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rts_access_steer_data1); - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_rts_table_set - Set the entries of RTS access tables - * @vpath_handle: Vpath handle. - * @action: Identifies the action to take on the specified entry. The - * interpretation of this field depends on DATA_STRUCT_SEL field - * DA, VID, ETYPE, PN, RANGE_PN: - * 8'd0 - ADD_ENTRY (Add an entry to the table. This command may be - * rejected by management/administration). - * 8'd1 - DELETE_ENTRY (Add an entry to the table. This command may - * be rejected by management/administration) - * 8'd2 - LIST_FIRST_ENTRY - * 8'd3 - LIST_NEXT_ENTRY - * RTH_GEN_CFG, RTH_IT, RTH_JHASH_CFG, RTH_MASK, RTH_KEY, QOS, DS: - * 8'd0 - READ_ENTRY - * 8'd1 - WRITE_ENTRY - * Note: This field is updated by the H/W during an operation and - * is used to report additional TBD status information back to the - * host. - * @rts_table: Identifies the RTS data structure (i.e. lookup table) to access. - * 0; DA; Destination Address 1; VID; VLAN ID 2; ETYPE; Ethertype - * 3; PN; Layer 4 Port Number 4; Reserved 5; RTH_GEN_CFG; Receive - * Traffic Hashing General Configuration 6; RTH_IT; Receive Traffic - * Hashing Indirection Table 7; RTH_JHASH_CFG; Receive-Traffic - * Hashing Jenkins Hash Configuration 8; RTH_MASK; Receive Traffic - * Hashing Mask 9; RTH_KEY; Receive-Traffic Hashing Key 10; QOS; - * VLAN Quality of Service 11; DS; IP Differentiated Services - * @offset: Applies to RTH_IT, RTH_MASK, RTH_KEY, QOS, DS structures only. - * The interpretation of this field depends on the DATA_STRUCT_SEL - * field: - * RTH_IT - {BUCKET_NUM[0:7]} (Bucket Number) - * RTH_MASK - {5'b0, - * INDEX_8BYTE} (8-byte Index) - * RTH_KEY - {5'b0, INDEX_8BYTE} (8-byte Index) - * QOS - {5'b0, PRI} (Priority) - * DS - {5'b0, CP} (Codepoint) - * @data1: data 1 to be written to the table - * @data2: data 2 to be written to the table - * - * Read from the RTS table - * - */ -vxge_hal_status_e -__hal_vpath_rts_table_set( - vxge_hal_vpath_h vpath_handle, - u32 action, - u32 rts_table, - u32 offset, - u64 data1, - u64 data2) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", action = %d, rts_table = %d, " - "offset = %d, data1 = 0x"VXGE_OS_LLXFMT", data2 = 0x"VXGE_OS_LLXFMT, - (ptr_t) vpath_handle, action, rts_table, offset, data1, data2); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - data1, - &vpath->vp_reg->rts_access_steer_data0); - vxge_os_wmb(); - - if ((rts_table == - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA) || - (rts_table == - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT)) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - data2, - &vpath->vp_reg->rts_access_steer_data1); - vxge_os_wmb(); - - } - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION(action) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(rts_table) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(offset); - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &vpath->vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vpath->vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rts_access_steer_ctrl); - - if (val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS) { - - status = VXGE_HAL_OK; - - } else { - status = VXGE_HAL_FAIL; - } - - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - - -/* - * vxge_hal_vpath_mac_addr_add - Add the mac address entry for this vpath - * to MAC address table. - * @vpath_handle: Vpath handle. - * @macaddr: MAC address to be added for this vpath into the list - * @macaddr_mask: MAC address mask for macaddr - * @duplicate_mode: Duplicate MAC address add mode. Please see - * vxge_hal_vpath_mac_addr_add_mode_e {} - * - * Adds the given mac address and mac address mask into the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_delete, vxge_hal_vpath_mac_addr_get and - * vxge_hal_vpath_mac_addr_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_mac_addr_add( - vxge_hal_vpath_h vpath_handle, - macaddr_t macaddr, - macaddr_t macaddr_mask, - vxge_hal_vpath_mac_addr_add_mode_e duplicate_mode) -{ - u32 i; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT", " - "macaddr = %02x-%02x-%02x-%02x-%02x-%02x, " - "macaddr_mask = %02x-%02x-%02x-%02x-%02x-%02x", - (ptr_t) vpath_handle, macaddr[0], macaddr[1], macaddr[2], - macaddr[3], macaddr[4], macaddr[5], macaddr_mask[0], - macaddr_mask[1], macaddr_mask[2], macaddr_mask[3], - macaddr_mask[4], macaddr_mask[5]); - - for (i = 0; i < VXGE_HAL_ETH_ALEN; i++) { - data1 <<= 8; - data1 |= (u8) macaddr[i]; - } - - for (i = 0; i < VXGE_HAL_ETH_ALEN; i++) { - data2 <<= 8; - data2 |= (u8) macaddr_mask[i]; - } - - switch (duplicate_mode) { - case VXGE_HAL_VPATH_MAC_ADDR_ADD_DUPLICATE: - i = 0; - break; - - case VXGE_HAL_VPATH_MAC_ADDR_DISCARD_DUPLICATE: - i = 1; - break; - - case VXGE_HAL_VPATH_MAC_ADDR_REPLACE_DUPLICATE: - i = 2; - break; - - default: - i = 0; - break; - } - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_ADD_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA, - 0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_DA_MAC_ADDR(data1), - VXGE_HAL_RTS_ACCESS_STEER_DATA1_DA_MAC_ADDR_MASK(data2) | - VXGE_HAL_RTS_ACCESS_STEER_DATA1_DA_MAC_ADDR_MODE(i)); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * __hal_vpath_hw_addr_get - Get the hw address entry for this vpath - * from MAC address table. - * @pdev: PCI device object. - * @regh0: BAR0 mapped memory handle, or simply PCI device @pdev - * (Linux and the rest.) - * @vp_id: Vpath id - * @vpath_reg: Pointer to vpath registers - * @macaddr: First MAC address entry for this vpath in the list - * @macaddr_mask: MAC address mask for macaddr - * - * Returns the first mac address and mac address mask in the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_get_next - * - */ -vxge_hal_status_e -__hal_vpath_hw_addr_get( - pci_dev_h pdev, - pci_reg_h regh0, - u32 vp_id, - vxge_hal_vpath_reg_t *vpath_reg, - macaddr_t macaddr, - macaddr_t macaddr_mask) -{ - u32 i; - u64 val64; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - u64 action = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((vpath_reg != NULL) && (macaddr != NULL) && - (macaddr_mask != NULL)); - - vxge_hal_trace_log_driver("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_driver( - "pdev = 0x"VXGE_OS_STXFMT", regh0 = 0x"VXGE_OS_STXFMT", " - "vp_id = %d, vpath_reg = 0x"VXGE_OS_STXFMT", " - "macaddr = 0x"VXGE_OS_STXFMT", macaddr_mask = 0x"VXGE_OS_STXFMT, - (ptr_t) pdev, (ptr_t) regh0, vp_id, (ptr_t) vpath_reg, - (ptr_t) macaddr, (ptr_t) macaddr_mask); - - /* CONSTCOND */ - while (TRUE) { - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION(action) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL( - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(0); - - vxge_hal_pio_mem_write32_lower(pdev, - regh0, - (u32) bVAL32(val64, 32), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(pdev, - regh0, - (u32) bVAL32(val64, 0), - &vpath_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * VXGE_HAL_DEF_DEVICE_POLL_MILLIS); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_ctrl); - - if (val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS) { - data1 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_data0); - data2 = vxge_os_pio_mem_read64(pdev, regh0, - &vpath_reg->rts_access_steer_data1); - data1 = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_DA_MAC_ADDR(data1); - data2 = - VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_MASK(data2); - - if (VXGE_HAL_IS_UNICAST(data1)) { - - for (i = VXGE_HAL_ETH_ALEN; i > 0; i--) { - macaddr[i - 1] = (u8) (data1 & 0xFF); - data1 >>= 8; - } - for (i = VXGE_HAL_ETH_ALEN; i > 0; i--) { - macaddr_mask[i - 1] = (u8) (data2 & 0xFF); - data2 >>= 8; - } - status = VXGE_HAL_OK; - break; - } - action = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY; - } else { - status = VXGE_HAL_FAIL; - break; - } - } - - vxge_hal_trace_log_driver("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_mac_addr_get - Get the first mac address entry for this vpath - * from MAC address table. - * @vpath_handle: Vpath handle. - * @macaddr: First MAC address entry for this vpath in the list - * @macaddr_mask: MAC address mask for macaddr - * - * Returns the first mac address and mac address mask in the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_mac_addr_get( - vxge_hal_vpath_h vpath_handle, - macaddr_t macaddr, - macaddr_t macaddr_mask) -{ - u32 i; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA, - 0, - &data1, - &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - data1 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_DA_MAC_ADDR(data1); - - data2 = VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_MASK(data2); - - for (i = VXGE_HAL_ETH_ALEN; i > 0; i--) { - macaddr[i - 1] = (u8) (data1 & 0xFF); - data1 >>= 8; - } - - for (i = VXGE_HAL_ETH_ALEN; i > 0; i--) { - macaddr_mask[i - 1] = (u8) (data2 & 0xFF); - data2 >>= 8; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * vxge_hal_vpath_mac_addr_get_next - Get the next mac address entry for vpath - * from MAC address table. - * @vpath_handle: Vpath handle. - * @macaddr: Next MAC address entry for this vpath in the list - * @macaddr_mask: MAC address mask for macaddr - * - * Returns the next mac address and mac address mask in the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_get - * - */ -vxge_hal_status_e -vxge_hal_vpath_mac_addr_get_next( - vxge_hal_vpath_h vpath_handle, - macaddr_t macaddr, - macaddr_t macaddr_mask) -{ - u32 i; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA, - 0, - &data1, - &data2); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - data1 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_DA_MAC_ADDR(data1); - - data2 = VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_DA_MAC_ADDR_MASK(data2); - - for (i = VXGE_HAL_ETH_ALEN; i > 0; i--) { - macaddr[i - 1] = (u8) (data1 & 0xFF); - data1 >>= 8; - } - - for (i = VXGE_HAL_ETH_ALEN; i > 0; i--) { - macaddr_mask[i - 1] = (u8) (data2 & 0xFF); - data2 >>= 8; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - - -/* - * vxge_hal_vpath_mac_addr_delete - Delete the mac address entry for this vpath - * to MAC address table. - * @vpath_handle: Vpath handle. - * @macaddr: MAC address to be added for this vpath into the list - * @macaddr_mask: MAC address mask for macaddr - * - * Delete the given mac address and mac address mask into the list for this - * vpath. - * see also: vxge_hal_vpath_mac_addr_add, vxge_hal_vpath_mac_addr_get and - * vxge_hal_vpath_mac_addr_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_mac_addr_delete( - vxge_hal_vpath_h vpath_handle, - macaddr_t macaddr, - macaddr_t macaddr_mask) -{ - u32 i; - u64 data1 = 0ULL; - u64 data2 = 0ULL; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT", " - "macaddr = %02x-%02x-%02x-%02x-%02x-%02x, " - "macaddr_mask = %02x-%02x-%02x-%02x-%02x-%02x", - (ptr_t) vpath_handle, macaddr[0], macaddr[1], macaddr[2], - macaddr[3], macaddr[4], macaddr[5], macaddr_mask[0], - macaddr_mask[1], macaddr_mask[2], macaddr_mask[3], - macaddr_mask[4], macaddr_mask[5]); - - for (i = 0; i < VXGE_HAL_ETH_ALEN; i++) { - data1 <<= 8; - data1 |= (u8) macaddr[i]; - } - - for (i = 0; i < VXGE_HAL_ETH_ALEN; i++) { - data2 <<= 8; - data2 |= (u8) macaddr_mask[i]; - } - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_DELETE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_DA, - 0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_DA_MAC_ADDR(data1), - VXGE_HAL_RTS_ACCESS_STEER_DATA1_DA_MAC_ADDR_MASK(data2)); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_vid_add - Add the vlan id entry for this vpath - * to vlan id table. - * @vpath_handle: Vpath handle. - * @vid: vlan id to be added for this vpath into the list - * - * Adds the given vlan id into the list for this vpath. - * see also: vxge_hal_vpath_vid_delete, vxge_hal_vpath_vid_get and - * vxge_hal_vpath_vid_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_vid_add( - vxge_hal_vpath_h vpath_handle, - u64 vid) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT", vid = %d", - (ptr_t) vpath_handle, (u32) vid); - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_ADD_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_VID, - 0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_VLAN_ID(vid), - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_vid_get - Get the first vid entry for this vpath - * from vlan id table. - * @vpath_handle: Vpath handle. - * @vid: Buffer to return vlan id - * - * Returns the first vlan id in the list for this vpath. - * see also: vxge_hal_vpath_vid_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_vid_get( - vxge_hal_vpath_h vpath_handle, - u64 *vid) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (vid != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", vid = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) vid); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_VID, - 0, - vid, - NULL); - - *vid = VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_VLAN_ID(*vid); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * vxge_hal_vpath_vid_get_next - Get the next vid entry for this vpath - * from vlan id table. - * @vpath_handle: Vpath handle. - * @vid: Buffer to return vlan id - * - * Returns the next vlan id in the list for this vpath. - * see also: vxge_hal_vpath_vid_get - * - */ -vxge_hal_status_e -vxge_hal_vpath_vid_get_next( - vxge_hal_vpath_h vpath_handle, - u64 *vid) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (vid != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", vid = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) vid); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_VID, - 0, - vid, - NULL); - - *vid = VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_VLAN_ID(*vid); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_vid_delete - Delete the vlan id entry for this vpath - * to vlan id table. - * @vpath_handle: Vpath handle. - * @vid: vlan id to be added for this vpath into the list - * - * Adds the given vlan id into the list for this vpath. - * see also: vxge_hal_vpath_vid_add, vxge_hal_vpath_vid_get and - * vxge_hal_vpath_vid_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_vid_delete( - vxge_hal_vpath_h vpath_handle, - u64 vid) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT", vid = %d", - (ptr_t) vpath_handle, (u32) vid); - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_DELETE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_VID, - 0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_VLAN_ID(vid), - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * vxge_hal_vpath_etype_add - Add the Ethertype entry for this vpath - * to Ethertype table. - * @vpath_handle: Vpath handle. - * @etype: ethertype to be added for this vpath into the list - * - * Adds the given Ethertype into the list for this vpath. - * see also: vxge_hal_vpath_etype_delete, vxge_hal_vpath_etype_get and - * vxge_hal_vpath_etype_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_etype_add( - vxge_hal_vpath_h vpath_handle, - u64 etype) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x" - VXGE_OS_STXFMT", etype = %d", - (ptr_t) vpath_handle, (u32) etype); - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_ADD_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_ETYPE, - 0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_ETYPE(etype), - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_etype_get - Get the first ethertype entry for this vpath - * from Ethertype table. - * @vpath_handle: Vpath handle. - * @etype: Buffer to return Ethertype - * - * Returns the first ethype entry in the list for this vpath. - * see also: vxge_hal_vpath_etype_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_etype_get( - vxge_hal_vpath_h vpath_handle, - u64 *etype) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (etype != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", etype = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) etype); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_ETYPE, - 0, - etype, - NULL); - - *etype = VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_ETYPE(*etype); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_etype_get_next - Get the next Ethertype entry for this vpath - * from Ethertype table. - * @vpath_handle: Vpath handle. - * @etype: Buffer to return Ethwrtype - * - * Returns the next Ethwrtype in the list for this vpath. - * see also: vxge_hal_vpath_etype_get - * - */ -vxge_hal_status_e -vxge_hal_vpath_etype_get_next( - vxge_hal_vpath_h vpath_handle, - u64 *etype) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (etype != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", etype = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) etype); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_ETYPE, - 0, - etype, - NULL); - - *etype = VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_ETYPE(*etype); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * vxge_hal_vpath_etype_delete - Delete the Ethertype entry for this vpath - * to Ethertype table. - * @vpath_handle: Vpath handle. - * @etype: ethertype to be added for this vpath into the list - * - * Adds the given Ethertype into the list for this vpath. - * see also: vxge_hal_vpath_etype_add, vxge_hal_vpath_etype_get and - * vxge_hal_vpath_etype_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_etype_delete(vxge_hal_vpath_h vpath_handle, u64 etype) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x" - VXGE_OS_STXFMT", etype = %d", - (ptr_t) vpath_handle, (u32) etype); - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_DELETE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_ETYPE, - 0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_ETYPE(etype), - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_port_add - Add the port entry for this vpath - * to port number table. - * @vpath_handle: Vpath handle. - * @port_type: if 0 - Src port or 1 - Dest port - * @protocol: if 0 - TCP or 1 - UDP - * @port: port to be added for this vpath into the list - * - * Adds the given port into the list for this vpath. - * see also: vxge_hal_vpath_port_delete, vxge_hal_vpath_port_get and - * vxge_hal_vpath_port_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_port_add( - vxge_hal_vpath_h vpath_handle, - u32 port_type, - u32 protocol, - u32 port) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", port_type = %d, " - "protocol = %d, port = %d", (ptr_t) vpath_handle, port_type, - protocol, port); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_PORT_NUM(port); - - if (port_type) - val64 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_SRC_DEST_SEL; - - if (protocol) - val64 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_TCP_UDP_SEL; - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_ADD_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_PN, - 0, - val64, - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * vxge_hal_vpath_port_get - * Get the first port number entry for this vpath from port number table. - * @vpath_handle: Vpath handle. - * @port_type: Buffer to return if 0 - Src port or 1 - Dest port - * @protocol: Buffer to return if 0 - TCP or 1 - UDP - * @port: Buffer to return port number - * - * Returns the first port number entry in the list for this vpath. - * see also: vxge_hal_vpath_port_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_port_get( - vxge_hal_vpath_h vpath_handle, - u32 *port_type, - u32 *protocol, - u32 *port) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (port_type != NULL) && - (protocol != NULL) && (port != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", port_type = 0x"VXGE_OS_STXFMT - ", protocol = 0x"VXGE_OS_STXFMT", port = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) port_type, (ptr_t) protocol, - (ptr_t) port); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_FIRST_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_PN, - 0, - &val64, - NULL); - - *port_type = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_SRC_DEST_SEL(val64); - *protocol = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_TCP_UDP_SEL(val64); - *port = (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_PORT_NUM(val64); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * vxge_hal_vpath_port_get_next - * Get the next port number entry for this vpath from port number table. - * @vpath_handle: Vpath handle. - * @port_type: Buffer to return if 0 - Src port or 1 - Dest port - * @protocol: Buffer to return if 0 - TCP or 1 - UDP - * @port: Buffer to return port number - * - * Returns the next port number entry in the list for this vpath. - * see also: vxge_hal_vpath_port_get - */ -vxge_hal_status_e -vxge_hal_vpath_port_get_next( - vxge_hal_vpath_h vpath_handle, - u32 *port_type, - u32 *protocol, - u32 *port) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (port_type != NULL) && - (protocol != NULL) && (port != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", port_type = 0x"VXGE_OS_STXFMT - ", protocol = 0x"VXGE_OS_STXFMT", port = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) port_type, (ptr_t) protocol, - (ptr_t) port); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_LIST_NEXT_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_PN, - 0, - &val64, - NULL); - - *port_type = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_SRC_DEST_SEL(val64); - - *protocol = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_TCP_UDP_SEL(val64); - - *port = (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_PN_PORT_NUM(val64); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); -} - -/* - * vxge_hal_vpath_port_delete - * Delete the port entry for this vpath to port number table. - * @vpath_handle: Vpath handle. - * @port_type: if 0 - Src port or 1 - Dest port - * @protocol: if 0 - TCP or 1 - UDP - * @port: port to be added for this vpath into the list - * - * Adds the given port into the list for this vpath. - * see also: vxge_hal_vpath_port_add, vxge_hal_vpath_port_get and - * vxge_hal_vpath_port_get_next - * - */ -vxge_hal_status_e -vxge_hal_vpath_port_delete( - vxge_hal_vpath_h vpath_handle, - u32 port_type, - u32 protocol, - u32 port) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", port_type = %d, " - "protocol = %d, port = %d", (ptr_t) vpath_handle, port_type, - protocol, port); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_PORT_NUM(port); - - if (port_type) - val64 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_SRC_DEST_SEL; - - if (protocol) - val64 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_PN_TCP_UDP_SEL; - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_DELETE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_PN, - 0, - val64, - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_set - Set/configure RTS hashing. - * @vpath_handle: Virtual Path handle. - * @algorithm: Algorithm Select - * @hash_type: Hash Type - * @bucket_size: no of least significant bits to be used for hashing. - * @it_switch: Itable switch required - * - * Used to set/configure all RTS hashing related stuff. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_itable_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_set(vxge_hal_vpath_h vpath_handle, - vxge_hal_rth_algoritms_t algorithm, - vxge_hal_rth_hash_types_t *hash_type, - u16 bucket_size, - u16 it_switch) -{ - u64 data0, data1; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp; - - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath_handle != NULL); - - vp = (__hal_vpath_handle_t *) vpath_handle; - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", algorithm = %d, " - "hash_type = 0x"VXGE_OS_STXFMT", bucket_size = %d", - (ptr_t) vpath_handle, algorithm, (ptr_t) hash_type, - bucket_size); - - (void) __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_GEN_CFG, - 0, - &data0, - &data1); - - if (algorithm == RTH_ALG_NONE) { - - data0 &= ~VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_EN; - - } else { - - if (it_switch) { - - if (VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_ACTIVE_TABLE( - data0)) - data0 = 0; - else - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_ACTIVE_TABLE; - - } else { - data0 &= VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_ACTIVE_TABLE; - - } - - data0 |= VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_EN | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_BUCKET_SIZE(bucket_size) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_ALG_SEL(algorithm); - - if (hash_type->hash_type_tcpipv4_en) - data0 |= - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_TCP_IPV4_EN; - - if (hash_type->hash_type_ipv4_en) - data0 |= VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_IPV4_EN; - - if (hash_type->hash_type_tcpipv6_en) - data0 |= - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_TCP_IPV6_EN; - - if (hash_type->hash_type_ipv6_en) - data0 |= VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_IPV6_EN; - - if (hash_type->hash_type_tcpipv6ex_en) - data0 |= - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_TCP_IPV6_EX_EN; - - if (hash_type->hash_type_ipv6ex_en) - data0 |= VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_GEN_RTH_IPV6_EX_EN; - - } - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_GEN_CFG, - 0, - data0, - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_get - Read RTS hashing. - * @vpath_handle: Virtual Path handle. - * @algorithm: Buffer to return Algorithm Select - * @hash_type: Buffer to return Hash Type - * @table_select: Buffer to return active Table - * @bucket_size: Buffer to return no of least significant bits used for hashing. - * - * Used to read all RTS hashing related stuff. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_itable_set(), - * vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_get(vxge_hal_vpath_h vpath_handle, - vxge_hal_rth_algoritms_t *algorithm, - vxge_hal_rth_hash_types_t *hash_type, - u8 *table_select, - u16 *bucket_size) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", algorithm = 0x"VXGE_OS_STXFMT - ", hash_type = 0x"VXGE_OS_STXFMT", " - "table_select = 0x"VXGE_OS_STXFMT", " - "bucket_size = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle, - (ptr_t) algorithm, (ptr_t) hash_type, - (ptr_t) table_select, (ptr_t) bucket_size); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_GEN_CFG, - 0, - &val64, - NULL); - - *algorithm = (vxge_hal_rth_algoritms_t) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_ALG_SEL(val64); - - hash_type->hash_type_tcpipv4_en = ((u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_TCP_IPV4_EN(val64)) - ? 1 : 0; - - hash_type->hash_type_ipv4_en = ((u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_IPV4_EN(val64)) - ? 1 : 0; - - hash_type->hash_type_tcpipv6_en = ((u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_TCP_IPV6_EN(val64)) - ? 1 : 0; - - hash_type->hash_type_ipv6_en = ((u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_IPV6_EN(val64)) - ? 1 : 0; - - hash_type->hash_type_tcpipv6ex_en = ((u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_TCP_IPV6_EX_EN( - val64)) ? 1 : 0; - - hash_type->hash_type_ipv6ex_en = ((u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_RTH_IPV6_EX_EN(val64)) - ? 1 : 0; - - *table_select = ((u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_ACTIVE_TABLE(val64)) - ? 1 : 0; - - *bucket_size = (u16) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_GEN_BUCKET_SIZE(val64); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_key_set - Configure 40byte secret for hash calc. - * - * @vpath_handle: Virtual Path ahandle. - * @KeySize: Number of 64-bit words - * @Key: up to 40-byte array of 64-bit values - * This function configures the 40-byte secret which is used for hash - * calculation. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_key_set(vxge_hal_vpath_h vpath_handle, - u8 KeySize, u64 *Key) -{ - u32 i; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (Key != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", KeySize = %d" - ", Key = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle, KeySize, - (ptr_t) Key); - - for (i = 0; i < KeySize; i++) { - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_KEY, - i, - vxge_os_htonll(*Key++), - 0); - - if (status != VXGE_HAL_OK) - break; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_key_get - Read 40byte secret for hash calc. - * - * @vpath_handle: Virtual Path ahandle. - * @KeySize: Number of 64-bit words - * @Key: Buffer to return the key - * This function reads the 40-byte secret which is used for hash - * calculation. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(), - * vxge_hal_vpath_rts_rth_key_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_key_get(vxge_hal_vpath_h vpath_handle, - u8 KeySize, u64 *Key) -{ - u32 i; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (Key != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", KeySize = %d" - ", Key = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle, KeySize, - (ptr_t) Key); - - for (i = 0; i < KeySize; i++) { - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_KEY, - i, - Key++, - NULL); - - if (status != VXGE_HAL_OK) - break; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_jhash_cfg_set - Configure JHASH algorithm - * - * @vpath_handle: Virtual Path ahandle. - * @golden_ratio: Golden ratio - * @init_value: Initial value - * This function configures JENKIN's HASH algorithm - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_jhash_cfg_set(vxge_hal_vpath_h vpath_handle, - u32 golden_ratio, u32 init_value) -{ - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", golden_ratio = %d" - ", init_value = %d", (ptr_t) vpath_handle, golden_ratio, - init_value); - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_JHASH_CFG, - 0, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_JHASH_CFG_GOLDEN_RATIO( - golden_ratio) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_JHASH_CFG_INIT_VALUE( - init_value), - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_jhash_cfg_get - Read JHASH algorithm - * - * @vpath_handle: Virtual Path ahandle. - * @golden_ratio: Buffer to return Golden ratio - * @init_value: Buffer to return Initial value - * This function reads JENKIN's HASH algorithm - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(), - * vxge_hal_vpath_rts_rth_jhash_cfg_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_jhash_cfg_get(vxge_hal_vpath_h vpath_handle, - u32 * golden_ratio, u32 *init_value) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", " - "golden_ratio = 0x"VXGE_OS_STXFMT", init_value = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) golden_ratio, (ptr_t) init_value); - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_JHASH_CFG, - 0, - &val64, - NULL); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - *golden_ratio = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_JHASH_CFG_GOLDEN_RATIO( - val64); - - *init_value = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_JHASH_CFG_INIT_VALUE( - val64); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_mask_set - Set/configure JHASH mask. - * @vpath_handle: Virtual Path ahandle. - * @table_size: Size of the mask table - * @hash_mask_ipv6sa: IPv6SA Hash Mask - * @hash_mask_ipv6da: IPv6DA Hash Mask - * @hash_mask_ipv4sa: IPv4SA Hash Mask - * @hash_mask_ipv4da: IPv4DA Hash Mask - * @hash_mask_l4sp: L4SP Hash Mask - * @hash_mask_l4dp: L4DP Hash Mask - * - * Used to set/configure indirection table. - * It enables the required no of entries in the IT. - * It adds entries to the IT. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_mask_set(vxge_hal_vpath_h vpath_handle, - u32 table_size, - u32 *hash_mask_ipv6sa, - u32 *hash_mask_ipv6da, - u32 *hash_mask_ipv4sa, - u32 *hash_mask_ipv4da, - u32 *hash_mask_l4sp, - u32 *hash_mask_l4dp) -{ - u32 i; - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (hash_mask_ipv6sa != NULL) && - (hash_mask_ipv6da != NULL) && (hash_mask_ipv4sa != NULL) && - (hash_mask_ipv4da != NULL) && (hash_mask_l4sp != NULL) && - (hash_mask_l4dp != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", " - "table_size = %d, hash_mask_ipv6sa = 0x"VXGE_OS_STXFMT - ", hash_mask_ipv6da = 0x"VXGE_OS_STXFMT - ", hash_mask_ipv4sa = 0x"VXGE_OS_STXFMT - ", hash_mask_ipv4da = 0x"VXGE_OS_STXFMT - ", hash_mask_l4sp = 0x"VXGE_OS_STXFMT - ", hash_mask_l4dp = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, table_size, (ptr_t) hash_mask_ipv6sa, - (ptr_t) hash_mask_ipv6da, (ptr_t) hash_mask_ipv4sa, - (ptr_t) hash_mask_ipv4da, (ptr_t) hash_mask_l4sp, - (ptr_t) hash_mask_l4dp); - - for (i = 0; i < table_size; i++) { - - val64 = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV6_SA_MASK( - *hash_mask_ipv6sa++) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV6_DA_MASK( - *hash_mask_ipv6da++) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV4_SA_MASK( - *hash_mask_ipv4sa++) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV4_DA_MASK( - *hash_mask_ipv4da++) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_L4SP_MASK( - *hash_mask_l4sp++) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_L4DP_MASK( - *hash_mask_l4dp++); - - status = __hal_vpath_rts_table_set(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MASK, - i, - val64, - 0); - - if (status != VXGE_HAL_OK) - break; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_mask_get - Read JHASH mask. - * @vpath_handle: Virtual Path ahandle. - * @table_size: Size of the mask table - * @hash_mask_ipv6sa: Buffer to return IPv6SA Hash Mask - * @hash_mask_ipv6da: Buffer to return IPv6DA Hash Mask - * @hash_mask_ipv4sa: Buffer to return IPv4SA Hash Mask - * @hash_mask_ipv4da: Buffer to return IPv4DA Hash Mask - * @hash_mask_l4sp: Buffer to return L4SP Hash Mask - * @hash_mask_l4dp: Buffer to return L4DP Hash Mask - * - * Used to read rth mask. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(), - * vxge_hal_vpath_rts_rth_mask_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_mask_get(vxge_hal_vpath_h vpath_handle, - u32 table_size, - u32 *hash_mask_ipv6sa, - u32 *hash_mask_ipv6da, - u32 *hash_mask_ipv4sa, - u32 *hash_mask_ipv4da, - u32 *hash_mask_l4sp, - u32 *hash_mask_l4dp) -{ - u32 i; - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (hash_mask_ipv6sa != NULL) && - (hash_mask_ipv6da != NULL) && (hash_mask_ipv4sa != NULL) && - (hash_mask_ipv4da != NULL) && (hash_mask_l4sp != NULL) && - (hash_mask_l4dp != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", " - "table_size = %d, hash_mask_ipv6sa = 0x"VXGE_OS_STXFMT - ", hash_mask_ipv6da = 0x"VXGE_OS_STXFMT - ", hash_mask_ipv4sa = 0x"VXGE_OS_STXFMT - ", hash_mask_ipv4da = 0x"VXGE_OS_STXFMT - ", hash_mask_l4sp = 0x"VXGE_OS_STXFMT - ", hash_mask_l4dp = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, table_size, (ptr_t) hash_mask_ipv6sa, - (ptr_t) hash_mask_ipv6da, (ptr_t) hash_mask_ipv4sa, - (ptr_t) hash_mask_ipv4da, (ptr_t) hash_mask_l4sp, - (ptr_t) hash_mask_l4dp); - - for (i = 0; i < table_size; i++) { - - status = __hal_vpath_rts_table_get(vpath_handle, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MASK, - i, - &val64, - NULL); - - if (status != VXGE_HAL_OK) - break; - - *hash_mask_ipv6sa++ = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_MASK_IPV6_SA_MASK( - val64); - - *hash_mask_ipv6da++ = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV6_DA_MASK( - val64); - - *hash_mask_ipv4sa++ = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV4_SA_MASK( - val64); - - *hash_mask_ipv4da++ = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_IPV4_DA_MASK( - val64); - - *hash_mask_l4sp++ = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_L4SP_MASK(val64); - - *hash_mask_l4dp++ = (u32) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_MASK_L4DP_MASK(val64); - - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_itable_set - Set/configure indirection table (IT). - * @vpath_handles: Virtual Path handles. - * @vpath_count: Number of vpath handles passed in vpath_handles - * @itable: Pointer to indirection table - * @itable_size: Number of entries in itable - * - * Used to set/configure indirection table. - * It enables the required no of entries in the IT. - * It adds entries to the IT. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_itable_set(vxge_hal_vpath_h *vpath_handles, - u32 vpath_count, - u8 *itable, - u32 itable_size) -{ - u32 i, j, k, l, items[4]; - u64 data0; - u64 data1; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handles[0]; - - vxge_assert((vpath_handles != NULL) && (itable != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", vpath_count = %d, " - "itable = 0x"VXGE_OS_STXFMT", itable_size = %d", - (ptr_t) vpath_handles, vpath_count, (ptr_t) itable, itable_size); - - if (hldev->header.config.rth_it_type == VXGE_HAL_RTH_IT_TYPE_SOLO_IT) { - - for (j = 0; j < itable_size; j++) { - - data1 = 0; - - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_SOLO_IT_BUCKET_DATA( - itable[j]); - - status = __hal_vpath_rts_table_set(vpath_handles[0], - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_SOLO_IT, - j, - data0, - data1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); - } - } - - for (j = 0; j < itable_size; j++) { - - data1 = 0; - - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_SOLO_IT_ENTRY_EN | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_SOLO_IT_BUCKET_DATA(itable[j]); - - status = __hal_vpath_rts_table_set(vpath_handles[itable[j]], - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_SOLO_IT, - j, data0, data1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - return (status); - } - } - - } else { - for (i = 0; i < vpath_count; i++) { - - for (k = 0, j = 0; k < itable_size; k++) { - - if (itable[k] != i) - continue; - - for (l = j; l < 4; l++) - items[l] = k; - - if ((j++ == 3) || (k == (itable_size - 1))) { - - data0 = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM0_BUCKET_NUM( - items[0]) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM0_ENTRY_EN | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM0_BUCKET_DATA( - itable[items[0]]) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM1_BUCKET_NUM( - items[1]) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM1_ENTRY_EN | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM1_BUCKET_DATA( - itable[items[1]]); - - data1 = - VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM0_BUCKET_NUM( - items[2]) | - VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM0_ENTRY_EN | - VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM0_BUCKET_DATA( - itable[items[2]]) | - VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM1_BUCKET_NUM( - items[3]) | - VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM1_ENTRY_EN | - VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM1_BUCKET_DATA( - itable[items[3]]); - - status = - __hal_vpath_rts_table_set(vpath_handles[i], - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT, - 0, - data0, - data1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", - __FILE__, __func__, - __LINE__, status); - - return (status); - } - - j = 0; - } - } - } - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_itable_get - Read indirection table(IT). - * @vpath_handles: Virtual Path handles. - * @vpath_count: Number of vpath handles passed in vpath_handles - * @itable: Pointer to the buffer to return indirection table - * @itable_size: pointer to buffer to return Number of entries in itable - * - * Used to read indirection table. - * - * See also: vxge_hal_vpath_rts_rth_clr(), vxge_hal_vpath_rts_rth_set(), - * vxge_hal_vpath_rts_rth_itable_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_itable_get(vxge_hal_vpath_h *vpath_handles, - u32 vpath_count, - u8 *itable, - u32 itable_size) -{ - u32 i, j; - u64 data0; - u64 data1; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handles[0]; - - vxge_assert((vpath_handles != NULL) && (itable != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", vpath_count = %d, " - "itable = 0x"VXGE_OS_STXFMT", itable_size = %d", - (ptr_t) vpath_handles, vpath_count, (ptr_t) itable, itable_size); - - if (hldev->header.config.rth_it_type == VXGE_HAL_RTH_IT_TYPE_SOLO_IT) { - - for (i = 0; i < vpath_count; i++) { - - for (j = 0; j < itable_size; j++) { - - status = __hal_vpath_rts_table_get(vpath_handles[i], - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_SOLO_IT, - j, - &data0, - &data1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); - } - - if ((u8) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_SOLO_IT_ENTRY_EN(data0)) { - itable[j] = (u8) i; - } - } - } - } else { - - for (i = 0; i < vpath_count; i++) { - - for (j = 0; j < itable_size; ) { - - data0 = 0; - data1 = 0; - - if (j < itable_size) - data0 = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM0_BUCKET_NUM(j); - - if (j + 1 < itable_size) - data0 |= VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM1_BUCKET_NUM(j + 1); - - if (j + 2 < itable_size) - data1 = VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM0_BUCKET_NUM(j + 2); - - if (j + 3 < itable_size) - data1 |= VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM1_BUCKET_NUM(j + 3); - - status = __hal_vpath_rts_table_get( - vpath_handles[i], - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_READ_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT, - 0, &data0, &data1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); - } - - if (j < itable_size) { - if ((u8) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_ITEM0_ENTRY_EN(data0)) { - itable[j] = (u8) i; - } - - j++; - } - - if (j < itable_size) { - if ((u8) - VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_RTH_ITEM1_ENTRY_EN(data0)) { - itable[j] = (u8) i; - } - j++; - } - - if (j < itable_size) { - if ((u8) - VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM0_ENTRY_EN(data1)) { - itable[j] = (u8) i; - } - j++; - } - - if (j < itable_size) { - if ((u8) - VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RTH_ITEM1_ENTRY_EN(data1)) { - itable[j] = (u8) i; - } - j++; - } - } - } - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_rts_rth_clr - Clear RTS hashing. - * @vpath_handles: Virtual Path handles. - * @vpath_count: Number of vpath handles passed in vpath_handles - * - * This function is used to clear all RTS hashing related stuff. - * - * See also: vxge_hal_vpath_rts_rth_set(), vxge_hal_vpath_rts_rth_itable_set(). - */ -vxge_hal_status_e -vxge_hal_vpath_rts_rth_clr( - vxge_hal_vpath_h *vpath_handles, - u32 vpath_count) -{ - u64 data0, data1; - u32 i, j; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath_handles != NULL); - - vp = (__hal_vpath_handle_t *) vpath_handles[0]; - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handles = 0x"VXGE_OS_STXFMT", vpath_count = %d", - (ptr_t) vpath_handles, vpath_count); - - if (hldev->header.config.rth_it_type == VXGE_HAL_RTH_IT_TYPE_SOLO_IT) { - - for (j = 0; j < VXGE_HAL_MAX_ITABLE_ENTRIES; j++) { - - data0 = 0; - data1 = 0; - - status = __hal_vpath_rts_table_set(vpath_handles[0], - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_SOLO_IT, - j, - data0, - data1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - - return (status); - } - } - } else { - for (i = 0; i < vpath_count; i++) { - - for (j = 0; j < VXGE_HAL_MAX_ITABLE_ENTRIES; j += 4) { - - data0 = - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM0_BUCKET_NUM(j) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_RTH_ITEM1_BUCKET_NUM(j + 1); - - data1 = - VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM0_BUCKET_NUM(j + 2) | - VXGE_HAL_RTS_ACCESS_STEER_DATA1_RTH_ITEM1_BUCKET_NUM(j + 3); - - status = __hal_vpath_rts_table_set(vpath_handles[i], - VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_WRITE_ENTRY, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_RTH_MULTI_IT, - 0, - data0, - data1); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - status); - return (status); - } - } - } - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_promisc_enable - Enable promiscuous mode. - * @vpath_handle: Vpath handle. - * - * Enable promiscuous mode of X3100 operation. - * - * See also: vxge_hal_vpath_promisc_disable(). - */ -vxge_hal_status_e -vxge_hal_vpath_promisc_enable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->promisc_en == VXGE_HAL_VP_PROMISC_ENABLE) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 |= VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN | - VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN | - VXGE_HAL_RXMAC_VCFG0_BCAST_EN | - VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->promisc_en = VXGE_HAL_VP_PROMISC_ENABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_promisc_disable - Disable promiscuous mode. - * @vpath_handle: Vpath handle. - * - * Disable promiscuous mode of X3100 operation. - * - * See also: vxge_hal_vpath_promisc_enable(). - */ -vxge_hal_status_e -vxge_hal_vpath_promisc_disable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->promisc_en == VXGE_HAL_VP_PROMISC_DISABLE) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - if (vpath->vp_config->rpa_ucast_all_addr_en == - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_DISABLE) { - val64 &= ~VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN; - } - - if (vpath->vp_config->rpa_mcast_all_addr_en == - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_DISABLE) { - val64 &= ~VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN; - } - - if (vpath->vp_config->rpa_bcast_en == - VXGE_HAL_VPATH_RPA_BCAST_DISABLE) { - val64 &= ~VXGE_HAL_RXMAC_VCFG0_BCAST_EN; - } - - if (vpath->vp_config->rpa_all_vid_en == - VXGE_HAL_VPATH_RPA_ALL_VID_DISABLE) { - val64 &= ~VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - } - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->promisc_en = VXGE_HAL_VP_PROMISC_DISABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_bcast_enable - Enable broadcast - * @vpath_handle: Vpath handle. - * - * Enable receiving broadcasts. - */ -vxge_hal_status_e -vxge_hal_vpath_bcast_enable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_HANDLE); - - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_bcast_en == - VXGE_HAL_VPATH_RPA_BCAST_ENABLE) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 |= VXGE_HAL_RXMAC_VCFG0_BCAST_EN; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_bcast_en = VXGE_HAL_VPATH_RPA_BCAST_ENABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_bcast_disable - Disable broadcast - * @vpath_handle: Vpath handle. - * - * Disable receiving broadcasts. - */ -vxge_hal_status_e -vxge_hal_vpath_bcast_disable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_bcast_en == - VXGE_HAL_VPATH_RPA_BCAST_DISABLE) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 &= ~VXGE_HAL_RXMAC_VCFG0_BCAST_EN; - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_bcast_en = VXGE_HAL_VPATH_RPA_BCAST_DISABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_mcast_enable - Enable multicast addresses. - * @vpath_handle: Vpath handle. - * - * Enable X3100 multicast addresses. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_mcast_enable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_mcast_all_addr_en == - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_ENABLE) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 |= VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN; - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_mcast_all_addr_en = - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_ENABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_mcast_disable - Disable multicast addresses. - * @vpath_handle: Vpath handle. - * - * Disable X3100 multicast addresses. - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_MEM_STROBE_CMD_EXECUTING - Failed to disable mcast - * feature within the time(timeout). - * - */ -vxge_hal_status_e -vxge_hal_vpath_mcast_disable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_mcast_all_addr_en == - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_DISABLE) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 &= ~VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN; - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_mcast_all_addr_en = - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_DISABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_ucast_enable - Enable unicast addresses. - * @vpath_handle: Vpath handle. - * - * Enable X3100 unicast addresses. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_ucast_enable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_ucast_all_addr_en == - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_ENABLE) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 |= VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN; - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_ucast_all_addr_en = - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_ENABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_ucast_disable - Disable unicast addresses. - * @vpath_handle: Vpath handle. - * - * Disable X3100 unicast addresses. - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_INF_MEM_STROBE_CMD_EXECUTING - Failed to disable mcast - * feature within the time(timeout). - * - */ -vxge_hal_status_e -vxge_hal_vpath_ucast_disable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_ucast_all_addr_en == - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_DISABLE) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 &= ~VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN; - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_ucast_all_addr_en = - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_DISABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_all_vid_enable - Enable all Vlan Ids. - * @vpath_handle: Vpath handle. - * - * Enable X3100 vlan ids. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_all_vid_enable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_all_vid_en == - VXGE_HAL_VPATH_RPA_ALL_VID_ENABLE) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 |= VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_all_vid_en = VXGE_HAL_VPATH_RPA_ALL_VID_ENABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_all_vid_disable - Disable all Vlan Ids. - * @vpath_handle: Vpath handle. - * - * Disable X3100 vlan ids. - * Returns: VXGE_HAL_OK - success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_all_vid_disable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_all_vid_en == - VXGE_HAL_VPATH_RPA_ALL_VID_DISABLE) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - val64 &= ~VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - - vxge_os_pio_mem_write64( - hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_all_vid_en = VXGE_HAL_VPATH_RPA_ALL_VID_DISABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_strip_vlan_tag_enable - Enable strip vlan tag. - * @vpath_handle: Vpath handle. - * - * Enable X3100 strip vlan tag. - * Returns: VXGE_HAL_OK on success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_strip_vlan_tag_enable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_strip_vlan_tag == - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_ENABLE) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->xmac_rpa_vcfg); - - val64 |= VXGE_HAL_XMAC_RPA_VCFG_STRIP_VLAN_TAG; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->xmac_rpa_vcfg); - - vpath->vp_config->rpa_strip_vlan_tag = - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_ENABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_strip_vlan_tag_disable - Disable strip vlan tag. - * @vpath_handle: Vpath handle. - * - * Disable X3100 strip vlan tag. - * Returns: VXGE_HAL_OK - success. - * - */ -vxge_hal_status_e -vxge_hal_vpath_strip_vlan_tag_disable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - if (vpath->vp_config->rpa_strip_vlan_tag == - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_DISABLE) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->xmac_rpa_vcfg); - - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_STRIP_VLAN_TAG; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->xmac_rpa_vcfg); - - vpath->vp_config->rpa_strip_vlan_tag = - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_DISABLE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_tpa_set - Set tpa parameters. - * @vpath_handle: Virtual Path ahandle. - * @params: vxge_hal_vpath_tpa_params {} structure with parameters - * - * The function sets the tpa parametrs for the vpath. - * - * See also: vxge_hal_vpath_tpa_params {} - */ -vxge_hal_status_e -vxge_hal_vpath_tpa_set(vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_tpa_params *params) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert((vpath_handle != NULL) && (params != NULL)); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", params = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) params); - - if (vpath->fifoh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tpa_cfg); - - if (params->tpa_ignore_frame_error != VXGE_HAL_DEFAULT_32) { - if (params->tpa_ignore_frame_error) - val64 |= VXGE_HAL_TPA_CFG_IGNORE_FRAME_ERR; - else - val64 &= ~VXGE_HAL_TPA_CFG_IGNORE_FRAME_ERR; - } - - if (params->tpa_ipv6_keep_searching != VXGE_HAL_DEFAULT_32) { - if (params->tpa_ipv6_keep_searching) - val64 &= ~VXGE_HAL_TPA_CFG_IPV6_STOP_SEARCHING; - else - val64 |= VXGE_HAL_TPA_CFG_IPV6_STOP_SEARCHING; - } - - if (params->tpa_l4_pshdr_present != VXGE_HAL_DEFAULT_32) { - if (params->tpa_l4_pshdr_present) - val64 |= VXGE_HAL_TPA_CFG_L4_PSHDR_PRESENT; - else - val64 &= ~VXGE_HAL_TPA_CFG_L4_PSHDR_PRESENT; - } - - if (params->tpa_support_mobile_ipv6_hdrs != VXGE_HAL_DEFAULT_32) { - if (params->tpa_support_mobile_ipv6_hdrs) - val64 |= VXGE_HAL_TPA_CFG_SUPPORT_MOBILE_IPV6_HDRS; - else - val64 &= ~VXGE_HAL_TPA_CFG_SUPPORT_MOBILE_IPV6_HDRS; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tpa_cfg); - - vpath->vp_config->tpa_ignore_frame_error = - params->tpa_ignore_frame_error; - vpath->vp_config->tpa_l4_pshdr_present = - params->tpa_l4_pshdr_present; - vpath->vp_config->tpa_support_mobile_ipv6_hdrs = - params->tpa_support_mobile_ipv6_hdrs; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tx_protocol_assist_cfg); - - if (params->tpa_lsov2_en != VXGE_HAL_DEFAULT_32) { - if (params->tpa_lsov2_en) - val64 |= VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_LSOV2_EN; - else - val64 &= ~VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_LSOV2_EN; - } - - if (params->tpa_ipv6_keep_searching != VXGE_HAL_DEFAULT_32) { - if (params->tpa_ipv6_keep_searching) - val64 |= - VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_IPV6_KEEP_SEARCHING; - else - val64 &= - ~VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_IPV6_KEEP_SEARCHING; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tx_protocol_assist_cfg); - - vpath->vp_config->tpa_lsov2_en = params->tpa_lsov2_en; - vpath->vp_config->tpa_ipv6_keep_searching = - params->tpa_ipv6_keep_searching; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_rpa_set - Set rpa parameters. - * @vpath_handle: Virtual Path ahandle. - * @params: vxge_hal_vpath_rpa_params {} structure with parameters - * - * The function sets the rpa parametrs for the vpath. - * - * See also: vxge_hal_vpath_rpa_params {} - */ -vxge_hal_status_e -vxge_hal_vpath_rpa_set(vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_rpa_params *params) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert((vpath_handle != NULL) && (params != NULL)); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT", params = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) params); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->xmac_rpa_vcfg); - - if (params->rpa_ipv4_tcp_incl_ph != VXGE_HAL_DEFAULT_32) { - if (params->rpa_ipv4_tcp_incl_ph) - val64 |= VXGE_HAL_XMAC_RPA_VCFG_IPV4_TCP_INCL_PH; - else - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_IPV4_TCP_INCL_PH; - } - - if (params->rpa_ipv6_tcp_incl_ph != VXGE_HAL_DEFAULT_32) { - if (params->rpa_ipv6_tcp_incl_ph) - val64 |= VXGE_HAL_XMAC_RPA_VCFG_IPV6_TCP_INCL_PH; - else - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_IPV6_TCP_INCL_PH; - } - - if (params->rpa_ipv4_udp_incl_ph != VXGE_HAL_DEFAULT_32) { - if (params->rpa_ipv4_udp_incl_ph) - val64 |= VXGE_HAL_XMAC_RPA_VCFG_IPV4_UDP_INCL_PH; - else - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_IPV4_UDP_INCL_PH; - } - - if (params->rpa_ipv6_udp_incl_ph != VXGE_HAL_DEFAULT_32) { - if (params->rpa_ipv6_udp_incl_ph) - val64 |= VXGE_HAL_XMAC_RPA_VCFG_IPV6_UDP_INCL_PH; - else - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_IPV6_UDP_INCL_PH; - } - - if (params->rpa_l4_incl_cf != VXGE_HAL_DEFAULT_32) { - if (params->rpa_l4_incl_cf) - val64 |= VXGE_HAL_XMAC_RPA_VCFG_L4_INCL_CF; - else - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_L4_INCL_CF; - } - - if (params->rpa_strip_vlan_tag != VXGE_HAL_DEFAULT_32) { - if (params->rpa_strip_vlan_tag) - val64 |= VXGE_HAL_XMAC_RPA_VCFG_STRIP_VLAN_TAG; - else - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_STRIP_VLAN_TAG; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->xmac_rpa_vcfg); - - vpath->vp_config->rpa_ipv4_tcp_incl_ph = params->rpa_ipv4_tcp_incl_ph; - vpath->vp_config->rpa_ipv6_tcp_incl_ph = params->rpa_ipv6_tcp_incl_ph; - vpath->vp_config->rpa_ipv4_udp_incl_ph = params->rpa_ipv4_udp_incl_ph; - vpath->vp_config->rpa_ipv6_udp_incl_ph = params->rpa_ipv6_udp_incl_ph; - vpath->vp_config->rpa_l4_incl_cf = params->rpa_l4_incl_cf; - vpath->vp_config->rpa_strip_vlan_tag = params->rpa_strip_vlan_tag; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - if (params->rpa_ucast_all_addr_en != VXGE_HAL_DEFAULT_32) { - if (params->rpa_ucast_all_addr_en) - val64 |= VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN; - else - val64 &= ~VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN; - } - - if (params->rpa_mcast_all_addr_en != VXGE_HAL_DEFAULT_32) { - if (params->rpa_mcast_all_addr_en) - val64 |= VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN; - else - val64 &= ~VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN; - } - - if (params->rpa_bcast_en != VXGE_HAL_DEFAULT_32) { - if (params->rpa_bcast_en) - val64 |= VXGE_HAL_RXMAC_VCFG0_BCAST_EN; - else - val64 &= ~VXGE_HAL_RXMAC_VCFG0_BCAST_EN; - } - - if (params->rpa_all_vid_en != VXGE_HAL_DEFAULT_32) { - if (params->rpa_all_vid_en) - val64 |= VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - else - val64 &= ~VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - vpath->vp_config->rpa_ucast_all_addr_en = params->rpa_ucast_all_addr_en; - vpath->vp_config->rpa_mcast_all_addr_en = params->rpa_mcast_all_addr_en; - vpath->vp_config->rpa_bcast_en = params->rpa_bcast_en; - vpath->vp_config->rpa_all_vid_en = params->rpa_all_vid_en; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->fau_rpa_vcfg); - - if (params->rpa_l4_comp_csum != VXGE_HAL_DEFAULT_32) { - if (params->rpa_l4_comp_csum) - val64 |= VXGE_HAL_FAU_RPA_VCFG_L4_COMP_CSUM; - else - val64 &= ~VXGE_HAL_FAU_RPA_VCFG_L4_COMP_CSUM; - } - - if (params->rpa_l3_incl_cf != VXGE_HAL_DEFAULT_32) { - if (params->rpa_l3_incl_cf) - val64 |= VXGE_HAL_FAU_RPA_VCFG_L3_INCL_CF; - else - val64 &= ~VXGE_HAL_FAU_RPA_VCFG_L3_INCL_CF; - } - - if (params->rpa_l3_comp_csum != VXGE_HAL_DEFAULT_32) { - if (params->rpa_l3_comp_csum) - val64 |= VXGE_HAL_FAU_RPA_VCFG_L3_COMP_CSUM; - else - val64 &= ~VXGE_HAL_FAU_RPA_VCFG_L3_COMP_CSUM; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->fau_rpa_vcfg); - - vpath->vp_config->rpa_l4_comp_csum = params->rpa_l4_comp_csum; - vpath->vp_config->rpa_l3_incl_cf = params->rpa_l3_incl_cf; - vpath->vp_config->rpa_l3_comp_csum = params->rpa_l3_comp_csum; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_intr_enable - Enable vpath interrupts. - * @vpath: Virtual Path. - * @op: One of the vxge_hal_vpath_intr_e enumerated values specifying - * the type(s) of interrupts to enable. - * - * Enable vpath interrupts. The function is to be executed the last in - * vpath initialization sequence. - * - * See also: __hal_vpath_intr_disable() - */ -vxge_hal_status_e -__hal_vpath_intr_enable(__hal_virtualpath_t *vpath) -{ - u64 val64; - __hal_device_t *hldev; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->kdfcctl_errors_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->general_errors_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->pci_config_errors_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->mrpcim_to_vpath_alarm_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_to_vpath_alarm_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->vpath_ppif_int_status); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_msg_to_vpath_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->vpath_pcipif_int_status); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->prc_alarm_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->wrdma_alarm_status); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->asic_ntwk_vp_err_reg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->xgmac_vp_int_status); - - vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_general_int_status); - - /* Unmask the individual interrupts. */ - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->kdfcctl_errors_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->general_errors_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->pci_config_errors_mask); - - if (hldev->first_vp_id != vpath->vp_id) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->mrpcim_to_vpath_alarm_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_to_vpath_alarm_mask); - } else { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->mrpcim_to_vpath_alarm_mask); - - if (hldev->access_rights & - VXGE_HAL_DEVICE_ACCESS_RIGHT_SRPCIM) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->srpcim_to_vpath_alarm_mask); - } - } - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->vpath_ppif_int_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_msg_to_vpath_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->vpath_pcipif_int_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(VXGE_HAL_PRC_ALARM_REG_PRC_RING_BUMP, 0), - &vpath->vp_reg->prc_alarm_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->wrdma_alarm_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->xgmac_vp_int_mask); - - if (hldev->first_vp_id != vpath->vp_id) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->asic_ntwk_vp_err_mask); - } else { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32(( - VXGE_HAL_ASIC_NTWK_VP_ERR_REG_REAF_FAULT | - VXGE_HAL_ASIC_NTWK_VP_ERR_REG_REAF_OK), 0), - &vpath->vp_reg->asic_ntwk_vp_err_mask); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_en); - - /* val64 |= VXGE_HAL_TIM_SET_INT_EN_VP(1 << (16 - vpath->vp_id)); */ - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_set_int_en); - - vxge_hal_pio_mem_write32_upper( - hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vp_reg->vpath_general_int_mask); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); - -} - -/* - * vxge_hal_vpath_intr_enable - Enable vpath interrupts. - * @vpath_handle: Virtual Path handle. - * @op: One of the vxge_hal_vpath_intr_e enumerated values specifying - * the type(s) of interrupts to enable. - * - * Enable vpath interrupts. The function is to be executed the last in - * vpath initialization sequence. - * - * See also: vxge_hal_vpath_intr_disable() - */ -vxge_hal_status_e -vxge_hal_vpath_intr_enable(vxge_hal_vpath_h vpath_handle) -{ - vxge_hal_status_e status; - - __hal_device_t *hldev; - __hal_vpath_handle_t *vp; - - vxge_assert(vpath_handle != NULL); - - vp = (__hal_vpath_handle_t *) vpath_handle; - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - status = __hal_vpath_intr_enable((__hal_virtualpath_t *) vp->vpath); - - vxge_hal_vpath_unmask_all(vpath_handle); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); - -} - -/* - * __hal_vpath_intr_disable - Disable vpath interrupts. - * @vpath: Virtual Path. - * @op: One of the vxge_hal_vpath_intr_e enumerated values specifying - * the type(s) of interrupts to enable. - * - * Disable vpath interrupts. The function is to be executed the last in - * vpath initialization sequence. - * - * See also: __hal_vpath_intr_enable() - */ -vxge_hal_status_e -__hal_vpath_intr_disable(__hal_virtualpath_t *vpath) -{ - u64 val64; - __hal_device_t *hldev; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->vpath_general_int_mask); - - val64 = VXGE_HAL_TIM_CLR_INT_EN_VP(1 << (16 - vpath->vp_id)); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_clr_int_en); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->kdfcctl_errors_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->general_errors_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->pci_config_errors_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->mrpcim_to_vpath_alarm_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_to_vpath_alarm_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->vpath_ppif_int_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_msg_to_vpath_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->vpath_pcipif_int_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->prc_alarm_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->wrdma_alarm_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->asic_ntwk_vp_err_mask); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->xgmac_vp_int_mask); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); - -} -/* - * vxge_hal_vpath_intr_disable - Disable vpath interrupts. - * @vpath_handle: Virtual Path handle. - * @op: One of the vxge_hal_vpath_intr_e enumerated values specifying - * the type(s) of interrupts to disable. - * - * Disable vpath interrupts. - * - * See also: vxge_hal_vpath_intr_enable() - */ -vxge_hal_status_e -vxge_hal_vpath_intr_disable(vxge_hal_vpath_h vpath_handle) -{ - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - vxge_hal_vpath_mask_all(vpath_handle); - - (void) __hal_vpath_intr_disable(vpath); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_mask_all - Mask all vpath interrupts. - * @vpath_handle: Virtual Path handle. - * - * Mask all vpath interrupts. - * - * See also: vxge_hal_vpath_unmask_all() - */ -void -vxge_hal_vpath_mask_all(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - - __hal_device_t *hldev; - __hal_vpath_handle_t *vp; - - vxge_assert(vpath_handle != NULL); - - vp = (__hal_vpath_handle_t *) vpath_handle; - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - val64 = VXGE_HAL_VPATH_GENERAL_INT_MASK_PIC_INT | - VXGE_HAL_VPATH_GENERAL_INT_MASK_PCI_INT | - VXGE_HAL_VPATH_GENERAL_INT_MASK_WRDMA_INT | - VXGE_HAL_VPATH_GENERAL_INT_MASK_XMAC_INT; - - vxge_hal_pio_mem_write32_upper( - hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vp->vpath->vp_reg->vpath_general_int_mask); - - if (vp->vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - val64 |= vBIT(0xf, (vp->vpath->vp_id * 4), 4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - - } else { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1(0xf), 0), - &hldev->common_reg->tim_int_mask1); - - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_unmask_all - Unmask all vpath interrupts. - * @vpath_handle: Virtual Path handle. - * - * Unmask all vpath interrupts. - * - * See also: vxge_hal_vpath_mask_all() - */ -void -vxge_hal_vpath_unmask_all(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vp == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return; - } - - vxge_hal_pio_mem_write32_upper( - hldev->header.pdev, - hldev->header.regh0, - 0, - &vp->vpath->vp_reg->vpath_general_int_mask); - - if (vp->vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - val64 &= ~(vBIT(0xf, (vp->vpath->vp_id * 4), 4)); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - - } else { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - 0, - &hldev->common_reg->tim_int_mask1); - - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * __hal_vpath_link_state_test - Test for the link state. - * @vpath: Virtual Path. - * - * Test link state. - * Returns: link state. - */ -vxge_hal_device_link_state_e -__hal_vpath_link_state_test(__hal_virtualpath_t *vpath) -{ - __hal_device_t *hldev; - - vxge_assert(vpath != NULL); - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_ASIC_NTWK_VP_CTRL_REQ_TEST_NTWK, - &vpath->vp_reg->asic_ntwk_vp_ctrl); - - (void) vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->asic_ntwk_vp_ctrl, - 0, - VXGE_HAL_ASIC_NTWK_VP_CTRL_REQ_TEST_NTWK, - hldev->header.config.device_poll_millis); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (hldev->header.link_state); -} - -/* - * __hal_vpath_link_state_poll - Poll for the link state. - * @vpath: Virtual Path. - * - * Get link state. - * Returns: link state. - */ -vxge_hal_device_link_state_e -__hal_vpath_link_state_poll(__hal_virtualpath_t *vpath) -{ - u64 val64; - __hal_device_t *hldev; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - if (vpath == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_LINK_NONE); - return (VXGE_HAL_LINK_NONE); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->xgmac_gen_status_vpmgmt_clone); - - if (val64 & VXGE_HAL_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_OK) { - - (void) __hal_device_handle_link_up_ind(vpath->hldev); - - if (val64 & - VXGE_HAL_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_DATA_RATE) { - VXGE_HAL_DEVICE_DATA_RATE_SET(vpath->hldev, - VXGE_HAL_DATA_RATE_10G); - - } else { - VXGE_HAL_DEVICE_DATA_RATE_SET(vpath->hldev, - VXGE_HAL_DATA_RATE_1G); - - } - } else { - (void) __hal_device_handle_link_down_ind(vpath->hldev); - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (vpath->hldev->header.link_state); -} - -/* - * __hal_vpath_data_rate_poll - Poll for the data rate. - * @vpath: Virtual Path. - * - * Get data rate. - * Returns: data rate. - */ -vxge_hal_device_data_rate_e -__hal_vpath_data_rate_poll( - __hal_virtualpath_t *vpath) -{ - u64 val64; - __hal_device_t *hldev; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - if (vpath == NULL) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_DATA_RATE_UNKNOWN); - return (VXGE_HAL_DATA_RATE_UNKNOWN); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->xgmac_gen_status_vpmgmt_clone); - - if (val64 & - VXGE_HAL_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_DATA_RATE) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_DATA_RATE_10G); - - } else { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_DATA_RATE_1G); - - } -} - -/* - * __hal_vpath_alarm_process - Process Alarms. - * @vpath: Virtual Path. - * @skip_alarms: Do not clear the alarms - * - * Process vpath alarms. - * - */ -vxge_hal_status_e -__hal_vpath_alarm_process(__hal_virtualpath_t *vpath, u32 skip_alarms) -{ - u64 val64; - u64 alarm_status; - u64 pic_status = 0; - u64 pif_status; - u64 wrdma_status; - u64 xgmac_status; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - alarm_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_general_int_status); - - vxge_hal_info_log_vpath_irq( - "alarm_status = 0x"VXGE_OS_STXFMT, (ptr_t) alarm_status); - - if (vxge_os_unlikely(!alarm_status)) { - status = VXGE_HAL_ERR_WRONG_IRQ; - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (alarm_status & VXGE_HAL_VPATH_GENERAL_INT_STATUS_PIC_INT) { - - pic_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_ppif_int_status); - - vxge_hal_info_log_vpath_irq( - "pic_status = 0x"VXGE_OS_STXFMT, (ptr_t) pic_status); - - if (pic_status & - VXGE_HAL_VPATH_PPIF_INT_STATUS_GENERAL_ERRORS_INT) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->general_errors_reg); - - vxge_hal_info_log_vpath_irq( - "general_errors_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) val64); - if (val64 & VXGE_HAL_GENERAL_ERRORS_REG_INI_SERR_DET) { - - vpath->sw_stats->error_stats.ini_serr_det++; - vxge_hal_info_log_vpath_irq("%s:" - "VXGE_HAL_GENERAL_ERRORS_REG_INI_SERR_DET", - __func__); - - __hal_device_handle_error(hldev, vpath->vp_id, - VXGE_HAL_EVENT_SERR); - - if (!skip_alarms) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_GENERAL_ERRORS_REG_INI_SERR_DET, - &vpath->vp_reg->general_errors_reg); - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d \ - Result = 0", __FILE__, __func__, __LINE__); - - return (VXGE_HAL_ERR_EVENT_SERR); - } - } - - if (pic_status & VXGE_HAL_VPATH_PPIF_INT_STATUS_PCI_CONFIG_ERRORS_INT) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->pci_config_errors_reg); - - vxge_hal_info_log_vpath_irq( - "pci_config_errors_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) val64); - - if (val64 & - VXGE_HAL_PCI_CONFIG_ERRORS_REG_STATUS_ERR) { - vpath->sw_stats->error_stats.pci_config_status_err++; - vxge_hal_info_log_vpath_irq("%s: \ - VXGE_HAL_PCI_CONFIG_ERRORS_REG_STATUS_ERR", - __func__); - } - - if (val64 & VXGE_HAL_PCI_CONFIG_ERRORS_REG_UNCOR_ERR) { - vpath->sw_stats->error_stats.pci_config_uncor_err++; - vxge_hal_info_log_vpath_irq("%s: \ - VXGE_HAL_PCI_CONFIG_ERRORS_REG_UNCOR_ERR", - __func__); - } - - if (val64 & VXGE_HAL_PCI_CONFIG_ERRORS_REG_COR_ERR) { - vpath->sw_stats->error_stats.pci_config_cor_err++; - vxge_hal_info_log_vpath_irq("%s: \ - VXGE_HAL_PCI_CONFIG_ERRORS_REG_COR_ERR", - __func__); - } - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->pci_config_errors_reg); - } - - if (pic_status & - VXGE_HAL_VPATH_PPIF_INT_STATUS_MRPCIM_TO_VPATH_ALARM_INT) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->mrpcim_to_vpath_alarm_reg); - - vxge_hal_info_log_vpath_irq( - "mrpcim_to_vpath_alarm_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) val64); - - if (val64 & - VXGE_HAL_MRPCIM_TO_VPATH_ALARM_REG_ALARM) { - - vpath->sw_stats->error_stats.mrpcim_to_vpath_alarms++; - hldev->stats.sw_dev_err_stats.mrpcim_alarms++; - vxge_hal_info_log_vpath_irq( - "%s:VXGE_HAL_MRPCIM_TO_VPATH_ALARM_REG_ALARM", - __func__); - - __hal_device_handle_error(hldev, vpath->vp_id, - VXGE_HAL_EVENT_MRPCIM_CRITICAL); - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_MRPCIM_TO_VPATH_ALARM_REG_ALARM, - &vpath->vp_reg->mrpcim_to_vpath_alarm_reg); - return (VXGE_HAL_ERR_EVENT_MRPCIM_CRITICAL); - } - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->mrpcim_to_vpath_alarm_reg); - } - - if (pic_status & - VXGE_HAL_VPATH_PPIF_INT_STATUS_SRPCIM_TO_VPATH_ALARM_INT) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->srpcim_to_vpath_alarm_reg); - - vxge_hal_info_log_vpath_irq( - "srpcim_to_vpath_alarm_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) val64); - - vpath->sw_stats->error_stats.srpcim_to_vpath_alarms++; - hldev->stats.sw_dev_err_stats.srpcim_alarms++; - - vxge_hal_info_log_vpath_irq( - "%s:VXGE_HAL_SRPCIM_TO_VPATH_ALARM_REG_GET_ALARM", - __func__); - - status = vxge_hal_srpcim_alarm_process( - (vxge_hal_device_h) hldev, skip_alarms); - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_to_vpath_alarm_reg); - - if (status == VXGE_HAL_ERR_EVENT_SRPCIM_CRITICAL) - return (status); - } - } - - if (alarm_status & VXGE_HAL_VPATH_GENERAL_INT_STATUS_WRDMA_INT) { - - wrdma_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->wrdma_alarm_status); - - vxge_hal_info_log_vpath_irq( - "wrdma_alarm_status = 0x"VXGE_OS_STXFMT, - (ptr_t) wrdma_status); - - if (wrdma_status & - VXGE_HAL_WRDMA_ALARM_STATUS_PRC_ALARM_PRC_INT) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->prc_alarm_reg); - - vxge_hal_info_log_vpath_irq( - "prc_alarm_reg = 0x"VXGE_OS_STXFMT, (ptr_t) val64); - - if (val64 & VXGE_HAL_PRC_ALARM_REG_PRC_RING_BUMP) { - vpath->sw_stats->error_stats.prc_ring_bumps++; - vxge_hal_info_log_vpath_irq( - "%s:VXGE_HAL_PRC_ALARM_REG_PRC_RING_BUMP", - __func__); - } - - if (val64 & VXGE_HAL_PRC_ALARM_REG_PRC_RXDCM_SC_ERR) { - vpath->sw_stats->error_stats.prc_rxdcm_sc_err++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_PRC_ALARM_REG_PRC_RXDCM_SC_ERR", - __func__); - __hal_device_handle_error(hldev, - vpath->vp_id, - VXGE_HAL_EVENT_CRITICAL); - - if (!skip_alarms) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_PRC_ALARM_REG_PRC_RXDCM_SC_ERR, - &vpath->vp_reg->prc_alarm_reg); - } - - vxge_hal_trace_log_vpath_irq( - "<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_EVENT_CRITICAL); - - return (VXGE_HAL_ERR_EVENT_CRITICAL); - } - - if (val64 & VXGE_HAL_PRC_ALARM_REG_PRC_RXDCM_SC_ABORT) { - vpath->sw_stats->error_stats.prc_rxdcm_sc_abort++; - vxge_hal_info_log_vpath_irq("%s: \ - VXGE_HAL_PRC_ALARM_REG_PRC_RXDCM_SC_ABORT", - __func__); - - __hal_device_handle_error(hldev, vpath->vp_id, - VXGE_HAL_EVENT_CRITICAL); - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_PRC_ALARM_REG_PRC_RXDCM_SC_ABORT, - &vpath->vp_reg->prc_alarm_reg); - - vxge_hal_trace_log_vpath_irq( - "<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_EVENT_CRITICAL); - - return (VXGE_HAL_ERR_EVENT_CRITICAL); - } - - if (val64 & VXGE_HAL_PRC_ALARM_REG_PRC_QUANTA_SIZE_ERR) { - vpath->sw_stats->error_stats.prc_quanta_size_err++; - vxge_hal_info_log_vpath_irq("%s: \ - VXGE_HAL_PRC_ALARM_REG_PRC_QUANTA_SIZE_ERR", - __func__); - } - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->prc_alarm_reg); - } - } - - if (alarm_status & VXGE_HAL_VPATH_GENERAL_INT_STATUS_PIC_INT) { - - if (pic_status & - VXGE_HAL_VPATH_PPIF_INT_STATUS_GENERAL_ERRORS_INT) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->general_errors_reg); - - vxge_hal_info_log_vpath_irq( - "general_errors_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) val64); - - if (val64 & - VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO0_OVRFLOW) { - - vpath->sw_stats->error_stats.dblgen_fifo0_overflow++; - vxge_hal_info_log_vpath_irq( - "%s:" - "VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO0_OVRFLOW", - __func__); - - __hal_device_handle_error(hldev, vpath->vp_id, - VXGE_HAL_EVENT_KDFCCTL); - - if (!skip_alarms) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO0_OVRFLOW, - &vpath->vp_reg->general_errors_reg); - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d \ - Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_EVENT_KDFCCTL); - return (VXGE_HAL_ERR_EVENT_KDFCCTL); - } - - if (val64 & VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO1_OVRFLOW) { - vpath->sw_stats->error_stats.dblgen_fifo1_overflow++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO1_OVRFLOW", - __func__); - - } - - if (val64 & - VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO2_OVRFLOW) { - vpath->sw_stats->error_stats.dblgen_fifo2_overflow++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO2_OVRFLOW", - __func__); - } - - if (val64 & - VXGE_HAL_GENERAL_ERRORS_REG_STATSB_PIF_CHAIN_ERR) { - vpath->sw_stats->error_stats.statsb_pif_chain_error++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_GENERAL_ERRORS_REG_STATSB_PIF_CHAIN_ERR", - __func__); - } - - if (val64 & - VXGE_HAL_GENERAL_ERRORS_REG_STATSB_DROP_TIMEOUT) { - vpath->sw_stats->error_stats.statsb_drop_timeout++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_GENERAL_ERRORS_REG_STATSB_DROP_TIMEOUT", - __func__); - } - - if (val64 & VXGE_HAL_GENERAL_ERRORS_REG_TGT_ILLEGAL_ACCESS) { - vpath->sw_stats->error_stats.target_illegal_access++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_GENERAL_ERRORS_REG_TGT_ILLEGAL_ACCESS", - __func__); - } - - if (!skip_alarms) - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->general_errors_reg); - } - - if (pic_status & - VXGE_HAL_VPATH_PPIF_INT_STATUS_KDFCCTL_ERRORS_INT) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->kdfcctl_errors_reg); - - vxge_hal_info_log_vpath_irq( - "kdfcctl_errors_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) val64); - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_OVRWR) { - vpath->sw_stats->error_stats.kdfcctl_fifo0_overwrite++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_OVRWR", - __func__); - __hal_device_handle_error(hldev, vpath->vp_id, - VXGE_HAL_EVENT_KDFCCTL); - - if (!skip_alarms) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_OVRWR, - &vpath->vp_reg->kdfcctl_errors_reg); - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d \ - Result = %d", __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_EVENT_KDFCCTL); - return (VXGE_HAL_ERR_EVENT_KDFCCTL); - } - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_OVRWR) { - vpath->sw_stats->error_stats.kdfcctl_fifo1_overwrite++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_OVRWR", - __func__); - - } - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_OVRWR) { - vpath->sw_stats->error_stats.kdfcctl_fifo2_overwrite++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_OVRWR", - __func__); - } - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_POISON) { - vpath->sw_stats->error_stats.kdfcctl_fifo0_poison++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_POISON", - __func__); - __hal_device_handle_error(hldev, vpath->vp_id, - VXGE_HAL_EVENT_KDFCCTL); - - if (!skip_alarms) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_POISON, - &vpath->vp_reg->kdfcctl_errors_reg); - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d \ - Result = %d", __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_EVENT_KDFCCTL); - return (VXGE_HAL_ERR_EVENT_KDFCCTL); - } - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_POISON) { - vpath->sw_stats->error_stats.kdfcctl_fifo1_poison++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_POISON", - __func__); - - } - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_POISON) { - vpath->sw_stats->error_stats.kdfcctl_fifo2_poison++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_POISON", - __func__); - } - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_DMA_ERR) { - vpath->sw_stats->error_stats.kdfcctl_fifo0_dma_error++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_DMA_ERR", - __func__); - - __hal_device_handle_error(hldev, vpath->vp_id, - VXGE_HAL_EVENT_KDFCCTL); - - if (!skip_alarms) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_DMA_ERR, - &vpath->vp_reg->kdfcctl_errors_reg); - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d \ - Result = %d", __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_EVENT_KDFCCTL); - return (VXGE_HAL_ERR_EVENT_KDFCCTL); - } - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_DMA_ERR) { - vpath->sw_stats->error_stats.kdfcctl_fifo1_dma_error++; - vxge_hal_info_log_vpath_irq("%s:" - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_DMA_ERR", - __func__); - } - - if (val64 & - VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_DMA_ERR) { - vpath->sw_stats->error_stats.kdfcctl_fifo2_dma_error++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_DMA_ERR", - __func__); - } - - if (!skip_alarms) { - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->kdfcctl_errors_reg); - } - } - } - - if (alarm_status & VXGE_HAL_VPATH_GENERAL_INT_STATUS_PCI_INT) { - - pif_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_pcipif_int_status); - - vxge_hal_info_log_vpath_irq( - "vpath_pcipif_int_status = 0x"VXGE_OS_STXFMT, - (ptr_t) pif_status); - - if (pif_status & - VXGE_HAL_VPATH_PCIPIF_INT_STATUS_SRPCIM_MSG_TO_VPATH_INT) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->srpcim_msg_to_vpath_reg); - - vxge_hal_info_log_vpath_irq( - "srpcim_msg_to_vpath_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) val64); - - if (val64 & - VXGE_HAL_SRPCIM_MSG_TO_VPATH_REG_INT) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->srpcim_to_vpath_wmsg); - - __hal_ifmsg_wmsg_process(vpath, val64); - - vpath->sw_stats->error_stats.srpcim_msg_to_vpath++; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - 0, - &vpath->vpmgmt_reg->srpcim_to_vpath_wmsg); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_msg_to_vpath_mask); - - vxge_hal_info_log_vpath_irq("%s:" - "VXGE_HAL_SRPCIM_MSG_TO_VPATH_REG_INT", - __func__); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->srpcim_msg_to_vpath_reg); - } - } - - if (alarm_status & VXGE_HAL_VPATH_GENERAL_INT_STATUS_XMAC_INT) { - - xgmac_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->xgmac_vp_int_status); - - vxge_hal_info_log_vpath_irq("xgmac_status = 0x"VXGE_OS_STXFMT, - (ptr_t) xgmac_status); - - if (xgmac_status & - VXGE_HAL_XGMAC_VP_INT_STATUS_ASIC_NTWK_VP_ERR_INT) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->asic_ntwk_vp_err_reg); - - vxge_hal_info_log_vpath_irq( - "asic_ntwk_vp_err_reg = 0x"VXGE_OS_STXFMT, - (ptr_t) val64); - - if (((val64 & VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_FAULT) && - (!(val64 & VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_OK))) || - ((val64 & VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_FAULT_OCCURRED) && - (!(val64 & VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_OK_OCCURRED)))) { - vpath->sw_stats->error_stats.network_sustained_fault++; - vxge_hal_info_log_vpath_irq("%s:" \ - "VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_FAULT", - __func__); - vxge_os_pio_mem_write64(vpath->hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_FAULT, - &vpath->vp_reg->asic_ntwk_vp_err_mask); - - (void) __hal_device_handle_link_down_ind(hldev); - } - - if (((val64 & VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_OK) && - (!(val64 & VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_FAULT))) || - ((val64 & VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_OK_OCCURRED) && - (!(val64 & VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_FAULT_OCCURRED)))) { - vpath->sw_stats->error_stats.network_sustained_ok++; - vxge_hal_info_log_vpath_irq( - "%s:VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_OK", - __func__); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_OK, - &vpath->vp_reg->asic_ntwk_vp_err_mask); - - (void) __hal_device_handle_link_up_ind(hldev); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTR_MASK_ALL, - &vpath->vp_reg->asic_ntwk_vp_err_reg); - return (VXGE_HAL_INF_LINK_UP_DOWN); - } - } - - if (alarm_status & ~( - VXGE_HAL_VPATH_GENERAL_INT_STATUS_PIC_INT | - VXGE_HAL_VPATH_GENERAL_INT_STATUS_PCI_INT | - VXGE_HAL_VPATH_GENERAL_INT_STATUS_WRDMA_INT | - VXGE_HAL_VPATH_GENERAL_INT_STATUS_XMAC_INT)) { - - vpath->sw_stats->error_stats.unknown_alarms++; - vxge_hal_info_log_vpath_irq( - "%s:%s:%d Unknown Alarm", __FILE__, __func__, __LINE__); - - __hal_device_handle_error(hldev, vpath->vp_id, - VXGE_HAL_EVENT_UNKNOWN); - status = VXGE_HAL_ERR_EVENT_UNKNOWN; - - } else { - hldev->stats.sw_dev_err_stats.vpath_alarms++; - status = VXGE_HAL_OK; - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (status); -} - -/* - * vxge_hal_vpath_begin_irq - Begin IRQ processing. - * @vpath_handle: Virtual Path handle. - * @skip_alarms: Do not clear the alarms - * @reason: "Reason" for the interrupt, the value of vpath's - * general_int_status register. - * - * The function performs two actions, It first checks whether (shared IRQ) the - * interrupt was raised by the device. Next, it masks the device interrupts. - * - * Note: - * vxge_hal_vpath_begin_irq() does not flush MMIO writes through the - * bridge. Therefore, two back-to-back interrupts are potentially possible. - * It is the responsibility of the ULD to make sure that only one - * vxge_hal_vpath_continue_irq() runs at a time. - * - * Returns: 0, if the interrupt is not "ours" (note that in this case the - * vpath remain enabled). - * Otherwise, vxge_hal_vpath_begin_irq() returns 64bit general adapter - * status. - * See also: vxge_hal_vpath_handle_irq() - */ -vxge_hal_status_e -vxge_hal_vpath_begin_irq(vxge_hal_vpath_h vpath_handle, - u32 skip_alarms, u64 *reason) -{ - u64 val64; - u64 adapter_status; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - vxge_hal_status_e ret_val = VXGE_HAL_OK; - - vxge_assert((vpath_handle != NULL) && (reason != NULL)); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq( - "vpath_handle = 0x"VXGE_OS_STXFMT", skip_alarms = %d, " - "reason = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle, - skip_alarms, (ptr_t) reason); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->titan_general_int_status); - - if (vxge_os_unlikely(!val64)) { - /* not Titan interrupt */ - *reason = 0; - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_WRONG_IRQ); - return (VXGE_HAL_ERR_WRONG_IRQ); - } - - if (vxge_os_unlikely(val64 == VXGE_HAL_ALL_FOXES)) { - - adapter_status = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->adapter_status); - - if (adapter_status == VXGE_HAL_ALL_FOXES) { - __hal_device_handle_error(hldev, - vpath->vp_id, - VXGE_HAL_EVENT_SLOT_FREEZE); - - *reason = 0; - ret_val = VXGE_HAL_ERR_SLOT_FREEZE; - goto exit; - } - } - - if (val64 & - VXGE_HAL_TITAN_GENERAL_INT_STATUS_VPATH_TRAFFIC_INT( - 1 << (16 - vpath->vp_id))) { - - if (vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - *reason = bVAL4(val64, (vpath->vp_id * 4)); - } else { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask1); - - *reason = bVAL4(val64, 0); - } - - return (VXGE_HAL_OK); - } - - *reason = VXGE_HAL_INTR_ALARM; - - if (vxge_os_unlikely(val64 & - VXGE_HAL_TITAN_GENERAL_INT_STATUS_MRPCIM_ALARM_INT)) { - vxge_hal_info_log_vpath_irq( - "%s:VXGE_HAL_TITAN_GENERAL_INT_STATUS_MRPCIM_ALARM_INT", - __func__); - ret_val = VXGE_HAL_ERR_CRITICAL; - goto exit; - } - - if (vxge_os_unlikely(val64 & - VXGE_HAL_TITAN_GENERAL_INT_STATUS_SRPCIM_ALARM_INT)) { - vxge_hal_info_log_vpath_irq( - "%s:VXGE_HAL_TITAN_GENERAL_INT_STATUS_SRPCIM_ALARM_INT", - __func__); - ret_val = VXGE_HAL_ERR_CRITICAL; - goto exit; - } - - if (vxge_os_unlikely(val64 & - VXGE_HAL_TITAN_GENERAL_INT_STATUS_VPATH_ALARM_INT)) { - vxge_hal_info_log_vpath_irq( - "%s:VXGE_HAL_TITAN_GENERAL_INT_STATUS_VPATH_ALARM_INT", - __func__); - ret_val = __hal_vpath_alarm_process(vpath, skip_alarms); - } - -exit: - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (ret_val); - -} - -/* - * vxge_hal_vpath_continue_irq - Continue handling IRQ: process all - * completed descriptors. - * @vpath_handle: Virtual Path handle. - * - * Process completed descriptors and unmask the vpath interrupts. - * - * The vxge_hal_vpath_continue_irq() calls upper-layer driver (ULD) - * via supplied completion callback. - * - * Note that the vxge_hal_vpath_continue_irq is part of the _fast_ path. - * To optimize the processing, the function does _not_ check for - * errors and alarms. - * - * Returns: VXGE_HAL_OK. - * - * See also: vxge_hal_vpath_handle_irq() - * vxge_hal_ring_rxd_next_completed(), - * vxge_hal_fifo_txdl_next_completed(), vxge_hal_ring_callback_f {}, - * vxge_hal_fifo_callback_f {}. - */ -vxge_hal_status_e -vxge_hal_vpath_continue_irq(vxge_hal_vpath_h vpath_handle) -{ - u32 got_rx = 1, got_tx = 1; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - u32 isr_polling_cnt; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - isr_polling_cnt = hldev->header.config.isr_polling_cnt; - - do { - if (got_rx && (vp->vpath->ringh != NULL)) - (void) vxge_hal_vpath_poll_rx(vpath_handle, &got_rx); - - if (got_tx && (vp->vpath->fifoh != NULL)) - (void) vxge_hal_vpath_poll_tx(vpath_handle, &got_tx); - - if (!got_rx && !got_tx) - break; - - } while (isr_polling_cnt--); - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_handle_irq - Handle vpath IRQ. - * @vpath_handle: Virtual Path handle. - * @skip_alarms: Do not clear the alarms - * - * Perform the complete handling of the line interrupt. The function - * performs two calls. - * First it uses vxge_hal_vpath_begin_irq() to check the reason for - * the interrupt and mask the vpath interrupts. - * Second, it calls vxge_hal_vpath_continue_irq() to process all - * completed descriptors and re-enable the interrupts. - * - * Returns: VXGE_HAL_OK - success; - * VXGE_HAL_ERR_WRONG_IRQ - (shared) IRQ produced by other device. - * - * See also: vxge_hal_vpath_begin_irq(), vxge_hal_vpath_continue_irq(). - */ -vxge_hal_status_e -vxge_hal_vpath_handle_irq(vxge_hal_vpath_h vpath_handle, u32 skip_alarms) -{ - u64 reason; - vxge_hal_status_e status; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - vxge_hal_vpath_mask_all(vpath_handle); - - status = vxge_hal_vpath_begin_irq(vpath_handle, - skip_alarms, &reason); - - if (status != VXGE_HAL_OK) { - vxge_hal_vpath_unmask_all(vpath_handle); - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (reason & VXGE_HAL_INTR_ALARM) { - if (skip_alarms) { - /* ULD needs to unmask explicitely */ - vxge_hal_trace_log_vpath_irq( - "<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_CRITICAL); - return (VXGE_HAL_ERR_CRITICAL); - } else { - vxge_hal_vpath_unmask_all(vpath_handle); - vxge_hal_trace_log_vpath_irq( - "<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - } - - if (reason & VXGE_HAL_INTR_RX) - vxge_hal_vpath_clear_rx(vpath_handle); - - status = vxge_hal_vpath_continue_irq(vpath_handle); - - vxge_hal_vpath_clear_tx(vpath_handle); - - vxge_hal_vpath_unmask_all(vpath_handle); - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - return (status); -} - -/* - * vxge_hal_vpath_mask_tx - Mask Tx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Mask Tx device interrupts. - * - * See also: vxge_hal_vpath_unmask_tx(), vxge_hal_vpath_mask_rx(), - * vxge_hal_vpath_clear_tx(). - */ -void -vxge_hal_vpath_mask_tx(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->fifoh == NULL) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_HANDLE); - return; - } - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - } - - if (vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - val64 |= vBIT(VXGE_HAL_INTR_TX, (vpath->vp_id * 4), 4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - - } else { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask1); - - val64 |= VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1(VXGE_HAL_INTR_TX); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_int_mask1); - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_clear_tx - Acknowledge (that is, clear) the - * condition that has caused the TX interrupt. - * @vpath_handle: Virtual Path handle. - * - * Acknowledge (that is, clear) the condition that has caused - * the Tx interrupt. - * See also: vxge_hal_vpath_begin_irq(), vxge_hal_vpath_continue_irq(), - * vxge_hal_vpath_clear_rx(), vxge_hal_vpath_mask_tx(). - */ -void -vxge_hal_vpath_clear_tx(vxge_hal_vpath_h vpath_handle) -{ - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->fifoh == NULL) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_HANDLE); - return; - } - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - } - - if (vpath->vp_id < 16) { - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - vBIT(VXGE_HAL_INTR_TX, (vpath->vp_id * 4), 4), - &hldev->common_reg->tim_int_status0); - - } else { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - vBIT(VXGE_HAL_INTR_TX, 0, 4), - 0), - &hldev->common_reg->tim_int_status1); - - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_unmask_tx - Unmask Tx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Unmask Tx vpath interrupts. - * - * See also: vxge_hal_vpath_mask_tx(), vxge_hal_vpath_clear_tx(). - */ -void -vxge_hal_vpath_unmask_tx(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->fifoh == NULL) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_INVALID_HANDLE); - return; - } - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - return; - } - - if (vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - val64 &= ~vBIT(VXGE_HAL_INTR_TX, (vpath->vp_id * 4), 4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - - } else { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask1); - - val64 &= - ~VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1(VXGE_HAL_INTR_TX); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_int_mask1); - - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_mask_rx - Mask Rx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Mask Rx vpath interrupts. - * - * See also: vxge_hal_vpath_unmask_rx(), vxge_hal_vpath_mask_tx(), - * vxge_hal_vpath_clear_rx(). - */ -void -vxge_hal_vpath_mask_rx(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return; - } - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - } - - if (vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - val64 |= vBIT(VXGE_HAL_INTR_RX, (vpath->vp_id * 4), 4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - - } else { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask1); - - val64 |= VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1(VXGE_HAL_INTR_RX); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_int_mask1); - - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - - -/* - * vxge_hal_vpath_clear_rx - Acknowledge (that is, clear) the - * condition that has caused the RX interrupt. - * @vpath_handle: Virtual Path handle. - * - * Acknowledge (that is, clear) the condition that has caused - * the Rx interrupt. - * See also: vxge_hal_vpath_begin_irq(), vxge_hal_vpath_continue_irq(), - * vxge_hal_vpath_clear_tx(), vxge_hal_vpath_mask_rx(). - */ -void -vxge_hal_vpath_clear_rx(vxge_hal_vpath_h vpath_handle) -{ - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return; - } - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - } - - if (vpath->vp_id < 16) { - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - vBIT(VXGE_HAL_INTR_RX, (vpath->vp_id * 4), 4), - &hldev->common_reg->tim_int_status0); - - } else { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(vBIT(VXGE_HAL_INTR_RX, 0, 4), 0), - &hldev->common_reg->tim_int_status1); - - } - - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_unmask_rx - Unmask Rx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Unmask Rx vpath interrupts. - * - * See also: vxge_hal_vpath_mask_rx(), vxge_hal_vpath_clear_rx(). - */ -void -vxge_hal_vpath_unmask_rx(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->ringh == NULL) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return; - } - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - } - - if (vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - val64 &= ~vBIT(VXGE_HAL_INTR_RX, (vpath->vp_id * 4), 4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - - } else { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask1); - - val64 &= - ~VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1(VXGE_HAL_INTR_RX); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_int_mask1); - - } - - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_mask_tx_rx - Mask Tx and Rx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Mask Tx and Rx vpath interrupts. - * - * See also: vxge_hal_vpath_unmask_tx_rx(), vxge_hal_vpath_clear_tx_rx(). - */ -void -vxge_hal_vpath_mask_tx_rx(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - } - - if (vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - val64 |= vBIT(VXGE_HAL_INTR_TX, (vpath->vp_id * 4), 4) | - vBIT(VXGE_HAL_INTR_RX, (vpath->vp_id * 4), 4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - - } else { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask1); - - val64 |= - VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1(VXGE_HAL_INTR_TX) | - VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1(VXGE_HAL_INTR_RX); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_int_mask1); - - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - - -/* - * vxge_hal_vpath_clear_tx_rx - Acknowledge (that is, clear) the - * condition that has caused the Tx and RX interrupt. - * @vpath_handle: Virtual Path handle. - * - * Acknowledge (that is, clear) the condition that has caused - * the Tx and Rx interrupt. - * See also: vxge_hal_vpath_begin_irq(), vxge_hal_vpath_continue_irq(), - * vxge_hal_vpath_clear_tx_rx(), vxge_hal_vpath_mask_tx_rx(). - */ -void -vxge_hal_vpath_clear_tx_rx(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - } - - val64 = 0; - - if (vpath->vp_id < 16) { - - if (vpath->fifoh != NULL) - val64 |= vBIT(VXGE_HAL_INTR_TX, (vpath->vp_id * 4), 4); - else - val64 &= ~vBIT(VXGE_HAL_INTR_TX, (vpath->vp_id * 4), 4); - - if (vpath->ringh != NULL) - val64 |= vBIT(VXGE_HAL_INTR_RX, (vpath->vp_id * 4), 4); - else - val64 &= ~vBIT(VXGE_HAL_INTR_RX, (vpath->vp_id * 4), 4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_status0); - - } else { - - if (vpath->fifoh != NULL) - val64 |= vBIT(VXGE_HAL_INTR_TX, 0, 4); - - if (vpath->ringh != NULL) - val64 |= vBIT(VXGE_HAL_INTR_RX, 0, 4); - else - val64 &= ~vBIT(VXGE_HAL_INTR_RX, 0, 4); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_int_status1); - - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_unmask_tx_rx - Unmask Tx and Rx interrupts. - * @vpath_handle: Virtual Path handle. - * - * Unmask Tx and Rx vpath interrupts. - * - * See also: vxge_hal_vpath_mask_tx_rx(), vxge_hal_vpath_clear_tx_rx(). - */ -void -vxge_hal_vpath_unmask_tx_rx(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - } - - if (vpath->vp_id < 16) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask0); - - if (vpath->fifoh != NULL) - val64 &= ~vBIT(VXGE_HAL_INTR_TX, (vpath->vp_id * 4), 4); - else - val64 |= vBIT(VXGE_HAL_INTR_TX, (vpath->vp_id * 4), 4); - - if (vpath->ringh != NULL) - val64 &= ~vBIT(VXGE_HAL_INTR_RX, (vpath->vp_id * 4), 4); - else - val64 |= vBIT(VXGE_HAL_INTR_RX, (vpath->vp_id * 4), 4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &hldev->common_reg->tim_int_mask0); - - } else { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->tim_int_mask1); - - if (vpath->fifoh != NULL) - val64 &= ~VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1( - VXGE_HAL_INTR_TX); - else - val64 |= VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1( - VXGE_HAL_INTR_TX); - - if (vpath->ringh != NULL) - val64 &= ~VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1( - VXGE_HAL_INTR_RX); - else - val64 |= VXGE_HAL_TIM_INT_MASK1_TIM_INT_MASK1( - VXGE_HAL_INTR_RX); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->tim_int_mask1); - - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_alarm_process - Process Alarms. - * @vpath: Virtual Path. - * @skip_alarms: Do not clear the alarms - * - * Process vpath alarms. - * - */ -vxge_hal_status_e -vxge_hal_vpath_alarm_process(vxge_hal_vpath_h vpath_handle, u32 skip_alarms) -{ - vxge_hal_status_e status; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - status = __hal_vpath_alarm_process( - vp->vpath, - skip_alarms); - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_msix_mode - Is MSIX enabled? - * @vpath_handle: Virtual Path handle. - * - * Returns 0 if MSI is enabled for the specified device, - * non-zero otherwise. - */ -u32 -vxge_hal_vpath_msix_mode(vxge_hal_vpath_h vpath_handle) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (hldev->header.msix_enabled); -} - -/* - * vxge_hal_vpath_msix_set - * Associate MSIX vectors with TIM interrupts and alrms - * @vpath_handle: Virtual Path handle. - * @tim_msix_id: MSIX vectors associated with VXGE_HAL_VPATH_MSIX_MAX number of - * interrupts(Can be repeated). If fifo or ring are not enabled - * the MSIX vector for that should be set to 0 - * @alarm_msix_id: MSIX vector for alarm. - * - * This API will associate a given MSIX vector numbers with the four TIM - * interrupts and alarm interrupt. - */ -vxge_hal_status_e -vxge_hal_vpath_msix_set(vxge_hal_vpath_h vpath_handle, - int *tim_msix_id, - int alarm_msix_id) -{ - u32 i; - u32 j; - u32 rvp_id; - u32 msix_id; - u64 val64; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vp != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT", " - "tim_msix_id0 = %d, tim_msix_id1 = %d, tim_msix_id2 = %d, " - "tim_msix_id3 = %d, alarm_msix_id = %d", (ptr_t) vpath_handle, - tim_msix_id[0], tim_msix_id[1], tim_msix_id[2], tim_msix_id[3], - alarm_msix_id); - - for (i = 0; i < VXGE_HAL_VPATH_MSIX_MAX + 1; i++) { - - if (i == VXGE_HAL_VPATH_MSIX_MAX) - msix_id = alarm_msix_id; - else - msix_id = tim_msix_id[i]; - - rvp_id = msix_id / VXGE_HAL_VPATH_MSIX_MAX; - - for (j = 0; j < VXGE_HAL_MAX_VIRTUAL_PATHS; j++) { - - if (!(hldev->vpath_assignments & mBIT(j))) - continue; - - if (rvp_id-- == 0) { - hldev->msix_map[msix_id].vp_id = j; - hldev->msix_map[msix_id].int_num = - msix_id % VXGE_HAL_VPATH_MSIX_MAX; - break; - } - } - } - - val64 = VXGE_HAL_INTERRUPT_CFG0_GROUP0_MSIX_FOR_TXTI( - hldev->msix_map[tim_msix_id[0]].vp_id * VXGE_HAL_VPATH_MSIX_MAX + - hldev->msix_map[tim_msix_id[0]].int_num) | - VXGE_HAL_INTERRUPT_CFG0_GROUP1_MSIX_FOR_TXTI( - hldev->msix_map[tim_msix_id[1]].vp_id * VXGE_HAL_VPATH_MSIX_MAX + - hldev->msix_map[tim_msix_id[1]].int_num) | - VXGE_HAL_INTERRUPT_CFG0_GROUP2_MSIX_FOR_TXTI( - hldev->msix_map[tim_msix_id[2]].vp_id * VXGE_HAL_VPATH_MSIX_MAX + - hldev->msix_map[tim_msix_id[2]].int_num) | - VXGE_HAL_INTERRUPT_CFG0_GROUP3_MSIX_FOR_TXTI( - hldev->msix_map[tim_msix_id[3]].vp_id * VXGE_HAL_VPATH_MSIX_MAX + - hldev->msix_map[tim_msix_id[3]].int_num); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vp->vpath->vp_reg->interrupt_cfg0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTERRUPT_CFG2_ALARM_MAP_TO_MSG( - hldev->msix_map[alarm_msix_id].vp_id * VXGE_HAL_VPATH_MSIX_MAX + - hldev->msix_map[alarm_msix_id].int_num), - &vp->vpath->vp_reg->interrupt_cfg2); - - if (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_MSIX_ONE_SHOT) { - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - VXGE_HAL_ONE_SHOT_VECT0_EN_ONE_SHOT_VECT0_EN, 0), - &vp->vpath->vp_reg->one_shot_vect0_en); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - VXGE_HAL_ONE_SHOT_VECT1_EN_ONE_SHOT_VECT1_EN, 0), - &vp->vpath->vp_reg->one_shot_vect1_en); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - VXGE_HAL_ONE_SHOT_VECT2_EN_ONE_SHOT_VECT2_EN, 0), - &vp->vpath->vp_reg->one_shot_vect2_en); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - VXGE_HAL_ONE_SHOT_VECT3_EN_ONE_SHOT_VECT3_EN, 0), - &vp->vpath->vp_reg->one_shot_vect3_en); - - } else if (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA) { - /* For emulated-INTA we are only using MSI-X 1 to be one shot */ - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - VXGE_HAL_ONE_SHOT_VECT1_EN_ONE_SHOT_VECT1_EN, 0), - &vp->vpath->vp_reg->one_shot_vect1_en); - - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_msix_mask - Mask MSIX Vector. - * @vpath_handle: Virtual Path handle. - * @msix_id: MSIX ID - * - * The function masks the msix interrupt for the given msix_id - * - * Note: - * - * Returns: 0, - * Otherwise, VXGE_HAL_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_msix_mask(vxge_hal_vpath_h vpath_handle, int msix_id) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq( - "vpath_handle = 0x"VXGE_OS_STXFMT", msix_id = %d", - (ptr_t) vpath_handle, msix_id); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(mBIT(hldev->msix_map[msix_id].vp_id), 0), - &hldev->common_reg->set_msix_mask_vect[ - hldev->msix_map[msix_id].int_num]); - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_msix_clear - Clear MSIX Vector. - * @vpath_handle: Virtual Path handle. - * @msix_id: MSI ID - * - * The function clears the msix interrupt for the given msix_id - * - * Note: - * - * Returns: 0, - * Otherwise, VXGE_HAL_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_msix_clear(vxge_hal_vpath_h vpath_handle, int msix_id) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp; - - vxge_assert(vpath_handle != NULL); - - vp = (__hal_vpath_handle_t *) vpath_handle; - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq( - "vpath_handle = 0x"VXGE_OS_STXFMT", msix_id = %d", - (ptr_t) vpath_handle, msix_id); - - if ((hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_MSIX_ONE_SHOT) || - (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA)) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(mBIT(hldev->msix_map[msix_id].vp_id), 0), - &hldev->common_reg->clr_msix_one_shot_vec[ - hldev->msix_map[msix_id].int_num]); - - if (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA) { - /* Adding read to flush the write, - * for HP-ISS platform - */ - vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->titan_general_int_status); - } - } else { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(mBIT(hldev->msix_map[msix_id].vp_id), 0), - &hldev->common_reg->clear_msix_mask_vect[ - hldev->msix_map[msix_id].int_num]); - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* NEW CODE BEGIN */ - -vxge_hal_status_e -vxge_hal_vpath_mf_msix_set(vxge_hal_vpath_h vpath_handle, - int *tim_msix_id, - int alarm_msix_id) -{ - - u64 val64; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp; - - vxge_assert(vpath_handle != NULL); - - vp = (__hal_vpath_handle_t *) vpath_handle; - hldev = vp->vpath->hldev; - - /* Write the internal msi-x vectors numbers */ - val64 = VXGE_HAL_INTERRUPT_CFG0_GROUP0_MSIX_FOR_TXTI(tim_msix_id[0]) | - VXGE_HAL_INTERRUPT_CFG0_GROUP1_MSIX_FOR_TXTI(tim_msix_id[1]); - -#if defined(VXGE_EMULATED_INTA) - if (hldev->config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA) - val64 |= VXGE_HAL_INTERRUPT_CFG0_GROUP2_MSIX_FOR_TXTI( - (vp->vpath->vp_id * 4) + tim_msix_id[2]); -#endif - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vp->vpath->vp_reg->interrupt_cfg0); - - vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp->vpath->vp_reg->interrupt_cfg0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_INTERRUPT_CFG2_ALARM_MAP_TO_MSG( - (hldev->first_vp_id * 4) + alarm_msix_id), - &vp->vpath->vp_reg->interrupt_cfg2); - - if ( -#if defined(VXGE_EMULATED_INTA) - (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA) || -#endif - (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_MSIX_ONE_SHOT)) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - VXGE_HAL_ONE_SHOT_VECT1_EN_ONE_SHOT_VECT1_EN, 0), - &vp->vpath->vp_reg->one_shot_vect1_en); - } - - if (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_MSIX_ONE_SHOT) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - VXGE_HAL_ONE_SHOT_VECT2_EN_ONE_SHOT_VECT2_EN, 0), - &vp->vpath->vp_reg->one_shot_vect2_en); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, (u32) bVAL32( - VXGE_HAL_ONE_SHOT_VECT3_EN_ONE_SHOT_VECT3_EN, 0), - &vp->vpath->vp_reg->one_shot_vect3_en); - } - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_mf_msix_mask - Mask MSIX Vector. - * @vp: Virtual Path handle. - * @msix_id: MSIX ID - * - * The function masks the msix interrupt for the given msix_id - * - * Returns: 0, - * Otherwise, VXGE_HW_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_mf_msix_mask(vxge_hal_vpath_h vpath_handle, int msix_id) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_hal_pio_mem_write32_upper(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, (u32) bVAL32(mBIT(msix_id >> 2), 0), - &vp->vpath->hldev->common_reg->set_msix_mask_vect[msix_id % 4]); -} - -/* - * vxge_hal_vpath_mf_msix_clear - Clear MSIX Vector. - * @vp: Virtual Path handle. - * @msix_id: MSI ID - * - * The function clears the msix interrupt for the given msix_id - * - * Returns: 0, - * Otherwise, VXGE_HW_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_mf_msix_clear(vxge_hal_vpath_h vpath_handle, int msix_id) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - if ( -#if defined(VXGE_EMULATED_INTA) - (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA) || -#endif - (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_MSIX_ONE_SHOT)) { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(mBIT((msix_id >> 2)), 0), - &hldev->common_reg->clr_msix_one_shot_vec[msix_id % 4]); - } else { - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(mBIT((msix_id >> 2)), 0), - &hldev->common_reg->clear_msix_mask_vect[msix_id % 4]); - } -} - -/* - * vxge_hal_vpath_mf_msix_unmask - Unmask the MSIX Vector. - * @vp: Virtual Path handle. - * @msix_id: MSI ID - * - * The function unmasks the msix interrupt for the given msix_id - * - * Returns: 0, - * Otherwise, VXGE_HW_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_mf_msix_unmask(vxge_hal_vpath_h vpath_handle, int msix_id) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - vxge_hal_pio_mem_write32_upper(vp->vpath->hldev->header.pdev, - vp->vpath->hldev->header.regh0, - (u32) bVAL32(mBIT(msix_id >> 2), 0), - &vp->vpath->hldev->common_reg-> - clear_msix_mask_vect[msix_id % 4]); -} - -/* NEW CODE ENDS */ - -/* - * vxge_hal_vpath_msix_unmask - Unmask the MSIX Vector. - * @vpath_handle: Virtual Path handle. - * @msix_id: MSI ID - * - * The function unmasks the msix interrupt for the given msix_id - * - * Note: - * - * Returns: 0, - * Otherwise, VXGE_HAL_ERR_WRONG_IRQ if the msix index is out of range - * status. - * See also: - */ -void -vxge_hal_vpath_msix_unmask(vxge_hal_vpath_h vpath_handle, int msix_id) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq( - "vpath_handle = 0x"VXGE_OS_STXFMT", msix_id = %d", - (ptr_t) vpath_handle, msix_id); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(mBIT(hldev->msix_map[msix_id].vp_id), 0), - &hldev->common_reg->clear_msix_mask_vect[ - hldev->msix_map[msix_id].int_num]); - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_msix_mask_all - Mask all MSIX vectors for the vpath. - * @vpath_handle: Virtual Path handle. - * - * The function masks all msix interrupt for the given vpath - * - */ -void -vxge_hal_vpath_msix_mask_all(vxge_hal_vpath_h vpath_handle) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq( - "vpath_handle = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(mBIT(vp->vpath->vp_id), 0), - &hldev->common_reg->set_msix_mask_all_vect); - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); - -} - -/* - * vxge_hal_vpath_msix_unmask_all - Unmask all MSIX vectors for the vpath. - * @vpath_handle: Virtual Path handle. - * - * The function unmasks the msix interrupt for the given vpath - * - */ -void -vxge_hal_vpath_msix_unmask_all(vxge_hal_vpath_h vpath_handle) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(mBIT(vp->vpath->vp_id), 0), - &hldev->common_reg->clear_msix_mask_all_vect); - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result = 0", - __FILE__, __func__, __LINE__); -} - -/* - * vxge_hal_vpath_poll_rx - Poll Rx Virtual Path for completed - * descriptors and process the same. - * @vpath_handle: Virtual Path ahandle. - * @got_rx: Buffer to return the flag set if receive interrupt is occurred - * - * The function polls the Rx for the completed descriptors and calls - * the upper-layer driver (ULD) via supplied completion callback. - * - * Returns: VXGE_HAL_OK, if the polling is completed successful. - * VXGE_HAL_COMPLETIONS_REMAIN: There are still more completed - * descriptors available which are yet to be processed. - * - * See also: vxge_hal_vpath_poll_tx() - */ -vxge_hal_status_e -vxge_hal_vpath_poll_rx(vxge_hal_vpath_h vpath_handle, u32 *got_rx) -{ - u8 t_code; - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_rxd_h first_rxdh; - void *rxd_priv; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - __hal_ring_t *ring; - - vxge_assert((vpath_handle != NULL) && (got_rx != NULL)); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq( - "vpathh = 0x"VXGE_OS_STXFMT", got_rx = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) got_rx); - - ring = (__hal_ring_t *) vpath->ringh; - if (ring == NULL) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - ring->cmpl_cnt = 0; - ring->channel.poll_bytes = 0; - *got_rx = 0; - - if ((status = vxge_hal_ring_rxd_next_completed(vpath_handle, - &first_rxdh, &rxd_priv, &t_code)) == VXGE_HAL_OK) { - if (ring->callback(vpath_handle, first_rxdh, rxd_priv, - t_code, ring->channel.userdata) != VXGE_HAL_OK) { - status = VXGE_HAL_COMPLETIONS_REMAIN; - } - - (*got_rx)++; - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_poll_tx - Poll Tx for completed descriptors and process - * the same. - * @vpath_handle: Virtual Path ahandle. - * @got_tx: Buffer to return the flag set if transmit interrupt is occurred - * - * The function polls the Tx for the completed descriptors and calls - * the upper-layer driver (ULD) via supplied completion callback. - * - * Returns: VXGE_HAL_OK, if the polling is completed successful. - * VXGE_HAL_COMPLETIONS_REMAIN: There are still more completed - * descriptors available which are yet to be processed. - * - * See also: vxge_hal_vpath_poll_rx(). - */ -vxge_hal_status_e -vxge_hal_vpath_poll_tx(vxge_hal_vpath_h vpath_handle, u32 *got_tx) -{ - vxge_hal_fifo_tcode_e t_code; - vxge_hal_txdl_h first_txdlh; - void *txdl_priv; - __hal_virtualpath_t *vpath; - __hal_fifo_t *fifo; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((vpath_handle != NULL) && (got_tx != NULL)); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath_irq("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath_irq( - "vpathh = 0x"VXGE_OS_STXFMT", got_tx = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) got_tx); - - fifo = (__hal_fifo_t *) vpath->fifoh; - if (fifo == NULL) { - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - fifo->channel.poll_bytes = 0; - *got_tx = 0; - - if ((status = vxge_hal_fifo_txdl_next_completed(vpath_handle, - &first_txdlh, &txdl_priv, &t_code)) == VXGE_HAL_OK) { - if (fifo->callback(vpath_handle, first_txdlh, txdl_priv, - t_code, fifo->channel.userdata) != VXGE_HAL_OK) { - status = VXGE_HAL_COMPLETIONS_REMAIN; - } - - (*got_tx)++; - } - - vxge_hal_trace_log_vpath_irq("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - - -/* - * __hal_vpath_mgmt_read - * @hldev: HAL device - * @vpath: Virtual path structure - * - * This routine reads the vpath_mgmt registers - */ -vxge_hal_status_e -__hal_vpath_mgmt_read( - __hal_device_t *hldev, - __hal_virtualpath_t *vpath) -{ - u32 i, mtu; - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((hldev != NULL) && (vpath != NULL)); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "hldev = 0x"VXGE_OS_STXFMT", vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) hldev, (ptr_t) vpath); - - vpath->sess_grps_available = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->sgrp_own); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->vpath_is_first); - - vpath->is_first_vpath = - (u32) VXGE_HAL_VPATH_IS_FIRST_GET_VPATH_IS_FIRST(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->tim_vpath_assignment); - - vpath->bmap_root_assigned = - (u32) VXGE_HAL_TIM_VPATH_ASSIGNMENT_GET_BMAP_ROOT(val64); - - mtu = 0; - - for (i = 0; i < VXGE_HAL_MAC_MAX_WIRE_PORTS; i++) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->rxmac_cfg0_port_vpmgmt_clone[i]); - - if (mtu < (u32) - VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_GET_MAX_PYLD_LEN( - val64)) { - mtu = (u32) - VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_GET_MAX_PYLD_LEN( - val64); - } - } - - vpath->max_mtu = mtu + VXGE_HAL_MAC_HEADER_MAX_SIZE; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->xmac_vsport_choices_vp); - - vpath->vsport_choices = - (u32) VXGE_HAL_XMAC_VSPORT_CHOICES_VP_GET_VSPORT_VECTOR(val64); - - for (i = 0; i < VXGE_HAL_MAX_VIRTUAL_PATHS; i++) { - - if (val64 & mBIT(i)) - vpath->vsport_number = i; - - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vpmgmt_reg->xgmac_gen_status_vpmgmt_clone); - - if (val64 & VXGE_HAL_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_OK) { - - VXGE_HAL_DEVICE_LINK_STATE_SET(vpath->hldev, VXGE_HAL_LINK_UP); - - } else { - - VXGE_HAL_DEVICE_LINK_STATE_SET(vpath->hldev, - VXGE_HAL_LINK_DOWN); - - } - - if (val64 & - VXGE_HAL_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_DATA_RATE) { - - VXGE_HAL_DEVICE_DATA_RATE_SET(vpath->hldev, - VXGE_HAL_DATA_RATE_10G); - - } else { - - VXGE_HAL_DEVICE_DATA_RATE_SET(vpath->hldev, - VXGE_HAL_DATA_RATE_1G); - - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_reset_check - Check if resetting the vpath completed - * - * @vpath: Virtual Path - * - * This routine checks the vpath_rst_in_prog register to see if adapter - * completed the reset process for the vpath - */ -vxge_hal_status_e -__hal_vpath_reset_check( - __hal_virtualpath_t *vpath) -{ - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->vpath_rst_in_prog, - 0, - VXGE_HAL_VPATH_RST_IN_PROG_VPATH_RST_IN_PROG( - 1 << (16 - vpath->vp_id)), - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_hw_reset - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine resets the vpath on the device - */ -vxge_hal_status_e -__hal_vpath_hw_reset(vxge_hal_device_h devh, u32 vp_id) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - - __hal_device_t *hldev; - - vxge_assert(devh != NULL); - - hldev = (__hal_device_t *) devh; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - val64 = VXGE_HAL_CMN_RSTHDLR_CFG0_SW_RESET_VPATH(1 << (16 - vp_id)); - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->cmn_rsthdlr_cfg0); - - (void) __hal_ifmsg_wmsg_post(hldev, - vp_id, - VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_VPATH_RESET_BEGIN, - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_sw_reset - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine resets the vpath structures - */ -vxge_hal_status_e -__hal_vpath_sw_reset( - vxge_hal_device_h devh, - u32 vp_id) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - - vxge_assert(devh != NULL); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - if (vpath->ringh) { - - status = __hal_ring_reset(vpath->ringh); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - } - - if (vpath->fifoh) { - - status = __hal_fifo_reset(vpath->fifoh); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_enable - * @vpath_handle: Handle to the vpath object - * - * This routine clears the vpath reset and puts vpath in service - */ -vxge_hal_status_e -vxge_hal_vpath_enable( - vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vxge_assert(vpath_handle != NULL); - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - hldev = vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - val64 = VXGE_HAL_CMN_RSTHDLR_CFG1_CLR_VPATH_RESET( - 1 << (16 - vpath->vp_id)); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->cmn_rsthdlr_cfg1); - - (void) __hal_ifmsg_wmsg_post(hldev, - vpath->vp_id, - VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_VPATH_RESET_END, - 0); - - VXGE_HAL_RING_POST_DOORBELL(vpath_handle, vpath->ringh); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - - -/* - * __hal_vpath_prc_configure - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine configures the prc registers of virtual path - * using the config passed - */ -vxge_hal_status_e -__hal_vpath_prc_configure( - vxge_hal_device_h devh, - u32 vp_id) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - vxge_hal_vp_config_t *vp_config; - - vxge_assert(devh != NULL); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - vp_config = vpath->vp_config; - - if (vp_config->ring.enable == VXGE_HAL_RING_DISABLE) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->prc_cfg1); - - if (vp_config->ring.rx_timer_val != - VXGE_HAL_RING_USE_FLASH_DEFAULT_RX_TIMER_VAL) { - val64 &= ~VXGE_HAL_PRC_CFG1_RX_TIMER_VAL(0x1fffffff); - val64 |= VXGE_HAL_PRC_CFG1_RX_TIMER_VAL( - vp_config->ring.rx_timer_val); - } - - val64 |= VXGE_HAL_PRC_CFG1_RTI_TINT_DISABLE; - - if (vp_config->ring.greedy_return != - VXGE_HAL_RING_GREEDY_RETURN_USE_FLASH_DEFAULT) { - if (vp_config->ring.greedy_return) - val64 |= VXGE_HAL_PRC_CFG1_GREEDY_RETURN; - else - val64 &= ~VXGE_HAL_PRC_CFG1_GREEDY_RETURN; - } - - if (vp_config->ring.rx_timer_ci != - VXGE_HAL_RING_RX_TIMER_CI_USE_FLASH_DEFAULT) { - if (vp_config->ring.rx_timer_ci) - val64 |= VXGE_HAL_PRC_CFG1_RX_TIMER_CI; - else - val64 &= ~VXGE_HAL_PRC_CFG1_RX_TIMER_CI; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->prc_cfg1); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->prc_cfg7); - - if (vpath->vp_config->ring.scatter_mode != - VXGE_HAL_RING_SCATTER_MODE_USE_FLASH_DEFAULT) { - - val64 &= ~VXGE_HAL_PRC_CFG7_SCATTER_MODE(0x3); - - switch (vpath->vp_config->ring.scatter_mode) { - case VXGE_HAL_RING_SCATTER_MODE_A: - val64 |= VXGE_HAL_PRC_CFG7_SCATTER_MODE( - VXGE_HAL_PRC_CFG7_SCATTER_MODE_A); - break; - case VXGE_HAL_RING_SCATTER_MODE_B: - val64 |= VXGE_HAL_PRC_CFG7_SCATTER_MODE( - VXGE_HAL_PRC_CFG7_SCATTER_MODE_B); - break; - case VXGE_HAL_RING_SCATTER_MODE_C: - val64 |= VXGE_HAL_PRC_CFG7_SCATTER_MODE( - VXGE_HAL_PRC_CFG7_SCATTER_MODE_C); - break; - } - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->prc_cfg7); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->prc_cfg6); - - if (vpath->vp_config->ring.post_mode != - VXGE_HAL_RING_POST_MODE_USE_FLASH_DEFAULT) { - - if (vpath->vp_config->ring.post_mode == - VXGE_HAL_RING_POST_MODE_DOORBELL) - val64 |= VXGE_HAL_PRC_CFG6_DOORBELL_MODE_EN; - else - val64 &= ~VXGE_HAL_PRC_CFG6_DOORBELL_MODE_EN; - - } else { - - vpath->vp_config->ring.post_mode = - ((val64 & VXGE_HAL_PRC_CFG6_DOORBELL_MODE_EN) ? - VXGE_HAL_RING_POST_MODE_DOORBELL : - VXGE_HAL_RING_POST_MODE_LEGACY); - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->prc_cfg6); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_PRC_CFG5_RXD0_ADD( - __hal_ring_first_block_address_get(vpath->ringh) >> 3), - &vpath->vp_reg->prc_cfg5); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->prc_cfg4); - - val64 |= VXGE_HAL_PRC_CFG4_IN_SVC; - - val64 &= ~VXGE_HAL_PRC_CFG4_RING_MODE(0x3); - - if (vp_config->ring.buffer_mode == VXGE_HAL_RING_RXD_BUFFER_MODE_1) { - val64 |= VXGE_HAL_PRC_CFG4_RING_MODE( - VXGE_HAL_PRC_CFG4_RING_MODE_ONE_BUFFER); - } else { - if (vp_config->ring.buffer_mode == - VXGE_HAL_RING_RXD_BUFFER_MODE_3) { - val64 |= VXGE_HAL_PRC_CFG4_RING_MODE( - VXGE_HAL_PRC_CFG4_RING_MODE_THREE_BUFFER); - } else { - val64 |= VXGE_HAL_PRC_CFG4_RING_MODE( - VXGE_HAL_PRC_CFG4_RING_MODE_FIVE_BUFFER); - } - } - - if (vp_config->ring.no_snoop_bits != - VXGE_HAL_RING_NO_SNOOP_USE_FLASH_DEFAULT) { - - val64 &= ~(VXGE_HAL_PRC_CFG4_FRM_NO_SNOOP | - VXGE_HAL_PRC_CFG4_RXD_NO_SNOOP); - - if (vp_config->ring.no_snoop_bits == - VXGE_HAL_RING_NO_SNOOP_RXD) { - val64 |= VXGE_HAL_PRC_CFG4_RXD_NO_SNOOP; - } else { - if (vp_config->ring.no_snoop_bits == - VXGE_HAL_RING_NO_SNOOP_FRM) { - val64 |= VXGE_HAL_PRC_CFG4_FRM_NO_SNOOP; - } else { - if (vp_config->ring.no_snoop_bits == - VXGE_HAL_RING_NO_SNOOP_ALL) { - val64 |= VXGE_HAL_PRC_CFG4_FRM_NO_SNOOP; - val64 |= VXGE_HAL_PRC_CFG4_RXD_NO_SNOOP; - } - } - } - - } - - if (hldev->header.config.rth_en == VXGE_HAL_RTH_DISABLE) - val64 |= VXGE_HAL_PRC_CFG4_RTH_DISABLE; - else - val64 &= ~VXGE_HAL_PRC_CFG4_RTH_DISABLE; - - val64 |= VXGE_HAL_PRC_CFG4_SIGNAL_BENIGN_OVFLW; - - val64 |= VXGE_HAL_PRC_CFG4_BIMODAL_INTERRUPT; - - if (vp_config->ring.backoff_interval_us != - VXGE_HAL_USE_FLASH_DEFAULT_BACKOFF_INTERVAL_US) { - - val64 &= ~VXGE_HAL_PRC_CFG4_BACKOFF_INTERVAL(0xffffff); - - val64 |= VXGE_HAL_PRC_CFG4_BACKOFF_INTERVAL( - vp_config->ring.backoff_interval_us * 1000 / 4); - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->prc_cfg4); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_vpath_kdfc_configure - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine configures the kdfc registers of virtual path - * using the config passed - */ -vxge_hal_status_e -__hal_vpath_kdfc_configure( - vxge_hal_device_h devh, - u32 vp_id) -{ - u64 val64; - u64 vpath_stride; - u64 fifo_stride; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - - vxge_assert(devh != NULL); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - status = __hal_kdfc_swapper_set((vxge_hal_device_t *) hldev, vp_id); - - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - - } - - if ((vpath->vp_config->ring.post_mode == - VXGE_HAL_RING_POST_MODE_DOORBELL) && - (vxge_hal_device_check_id(devh) == VXGE_HAL_CARD_TITAN_1)) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxdmem_size); - - vpath->rxd_mem_size = - (u32) VXGE_HAL_RXDMEM_SIZE_PRC_RXDMEM_SIZE(val64) * 8; - - } else { - - vpath->rxd_mem_size = (VXGE_HAL_MAX_RING_LENGTH / - vxge_hal_ring_rxds_per_block_get( - vpath->vp_config->ring.buffer_mode)) * - VXGE_OS_HOST_PAGE_SIZE; - - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->kdfc_drbl_triplet_total); - - vpath->max_kdfc_db = - (u32) VXGE_HAL_KDFC_DRBL_TRIPLET_TOTAL_GET_KDFC_MAX_SIZE(val64 + 1) / 2; - - vpath->max_ofl_db = 0; - - if (vpath->vp_config->fifo.enable == VXGE_HAL_FIFO_ENABLE) { - - vpath->max_nofl_db = vpath->max_kdfc_db - 1; - vpath->max_msg_db = 0; - - if (vpath->max_nofl_db < vpath->vp_config->fifo.fifo_length) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_BADCFG_FIFO_LENGTH); - return (VXGE_HAL_BADCFG_FIFO_LENGTH); - } - - } else { - - vpath->max_nofl_db = 0; - vpath->max_msg_db = vpath->max_kdfc_db; - } - - val64 = 0; - - if (vpath->max_nofl_db) - val64 |= VXGE_HAL_KDFC_FIFO_TRPL_PARTITION_LENGTH_0( - (vpath->max_nofl_db * 2) - 1); - - if (vpath->max_msg_db) - val64 |= VXGE_HAL_KDFC_FIFO_TRPL_PARTITION_LENGTH_1( - (vpath->max_msg_db * 2) - 1); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->kdfc_fifo_trpl_partition); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_KDFC_FIFO_TRPL_CTRL_TRIPLET_ENABLE, - &vpath->vp_reg->kdfc_fifo_trpl_ctrl); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->kdfc_trpl_fifo_0_ctrl); - - if (vpath->max_nofl_db) { - - val64 &= ~(VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_MODE(0x3) | - VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_SELECT(0xFF)); - - val64 |= VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_MODE( - VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_MODE_NON_OFFLOAD_ONLY) | -#if !defined(VXGE_OS_HOST_BIG_ENDIAN) - VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_SWAP_EN | -#endif - VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_SELECT(0); - - if (vpath->vp_config->no_snoop != - VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT) { - if (vpath->vp_config->no_snoop) - val64 |= - VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_NO_SNOOP; - else - val64 &= - ~VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_NO_SNOOP; - } - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->kdfc_trpl_fifo_0_ctrl); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->kdfc_trpl_fifo_1_ctrl); - - if (vpath->max_msg_db) { - - val64 &= ~(VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_MODE(0x3) | - VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_SELECT(0xFF)); - - val64 |= VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_MODE( - VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_MODE_MESSAGES_ONLY) | -#if !defined(VXGE_OS_HOST_BIG_ENDIAN) - VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_SWAP_EN | -#endif - VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_SELECT(0); - - if (vpath->vp_config->no_snoop != - VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT) { - if (vpath->vp_config->no_snoop) - val64 |= - VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_NO_SNOOP; - else - val64 &= - ~VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_NO_SNOOP; - } - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->kdfc_trpl_fifo_1_ctrl); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->kdfc_trpl_fifo_2_ctrl); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->kdfc_trpl_fifo_0_wb_address); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->kdfc_trpl_fifo_1_wb_address); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->kdfc_trpl_fifo_2_wb_address); - - - vxge_os_wmb(); - - vpath_stride = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_kdfc_vpath_stride); - - fifo_stride = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->toc_reg->toc_kdfc_fifo_stride); - - vpath->nofl_db = (__hal_non_offload_db_wrapper_t *) ((void *)(hldev->kdfc + - (vp_id * VXGE_HAL_TOC_KDFC_VPATH_STRIDE_GET_TOC_KDFC_VPATH_STRIDE( - vpath_stride)))); - - vpath->msg_db = (__hal_messaging_db_wrapper_t *) ((void *)(hldev->kdfc + - (vp_id * VXGE_HAL_TOC_KDFC_VPATH_STRIDE_GET_TOC_KDFC_VPATH_STRIDE( - vpath_stride)) + - VXGE_HAL_TOC_KDFC_FIFO_STRIDE_GET_TOC_KDFC_FIFO_STRIDE( - fifo_stride))); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_vpath_mac_configure - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine configures the mac of virtual path using the config passed - */ -vxge_hal_status_e -__hal_vpath_mac_configure( - vxge_hal_device_h devh, - u32 vp_id) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - vxge_hal_vp_config_t *vp_config; - - vxge_assert(devh != NULL); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - vp_config = vpath->vp_config; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_XMAC_VSPORT_CHOICE_VSPORT_NUMBER(vpath->vsport_number), - &vpath->vp_reg->xmac_vsport_choice); - - if (vp_config->ring.enable == VXGE_HAL_RING_ENABLE) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->xmac_rpa_vcfg); - - if (vp_config->rpa_ipv4_tcp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV4_TCP_INCL_PH_USE_FLASH_DEFAULT) { - if (vp_config->rpa_ipv4_tcp_incl_ph) - val64 |= - VXGE_HAL_XMAC_RPA_VCFG_IPV4_TCP_INCL_PH; - else - val64 &= - ~VXGE_HAL_XMAC_RPA_VCFG_IPV4_TCP_INCL_PH; - } - - if (vp_config->rpa_ipv6_tcp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV6_TCP_INCL_PH_USE_FLASH_DEFAULT) { - if (vp_config->rpa_ipv6_tcp_incl_ph) - val64 |= - VXGE_HAL_XMAC_RPA_VCFG_IPV6_TCP_INCL_PH; - else - val64 &= - ~VXGE_HAL_XMAC_RPA_VCFG_IPV6_TCP_INCL_PH; - } - - if (vp_config->rpa_ipv4_udp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV4_UDP_INCL_PH_USE_FLASH_DEFAULT) { - if (vp_config->rpa_ipv4_udp_incl_ph) - val64 |= - VXGE_HAL_XMAC_RPA_VCFG_IPV4_UDP_INCL_PH; - else - val64 &= - ~VXGE_HAL_XMAC_RPA_VCFG_IPV4_UDP_INCL_PH; - } - - if (vp_config->rpa_ipv6_udp_incl_ph != - VXGE_HAL_VPATH_RPA_IPV6_UDP_INCL_PH_USE_FLASH_DEFAULT) { - if (vp_config->rpa_ipv6_udp_incl_ph) - val64 |= - VXGE_HAL_XMAC_RPA_VCFG_IPV6_UDP_INCL_PH; - else - val64 &= - ~VXGE_HAL_XMAC_RPA_VCFG_IPV6_UDP_INCL_PH; - } - - if (vp_config->rpa_l4_incl_cf != - VXGE_HAL_VPATH_RPA_L4_INCL_CF_USE_FLASH_DEFAULT) { - if (vp_config->rpa_l4_incl_cf) - val64 |= VXGE_HAL_XMAC_RPA_VCFG_L4_INCL_CF; - else - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_L4_INCL_CF; - } - - if (vp_config->rpa_strip_vlan_tag != - VXGE_HAL_VPATH_RPA_STRIP_VLAN_TAG_USE_FLASH_DEFAULT) { - if (vp_config->rpa_strip_vlan_tag) - val64 |= VXGE_HAL_XMAC_RPA_VCFG_STRIP_VLAN_TAG; - else - val64 &= ~VXGE_HAL_XMAC_RPA_VCFG_STRIP_VLAN_TAG; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->xmac_rpa_vcfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg0); - - if (vp_config->mtu != - VXGE_HAL_VPATH_USE_FLASH_DEFAULT_INITIAL_MTU) { - val64 &= ~VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN(0x3fff); - if ((vp_config->mtu + VXGE_HAL_MAC_HEADER_MAX_SIZE) < - vpath->max_mtu) - val64 |= VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN( - vp_config->mtu + - VXGE_HAL_MAC_HEADER_MAX_SIZE); - else - val64 |= VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN( - vpath->max_mtu); - } - - if (vp_config->rpa_ucast_all_addr_en != - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_USE_FLASH_DEFAULT) { - if (vp_config->rpa_ucast_all_addr_en) - val64 |= VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN; - else - val64 &= - ~VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN; - } else { - if (val64 & VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN) { - vp_config->rpa_ucast_all_addr_en = - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_ENABLE; - } else { - vp_config->rpa_ucast_all_addr_en = - VXGE_HAL_VPATH_RPA_UCAST_ALL_ADDR_DISABLE; - } - } - - if (vp_config->rpa_mcast_all_addr_en != - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_USE_FLASH_DEFAULT) { - if (vp_config->rpa_mcast_all_addr_en) - val64 |= VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN; - else - val64 &= - ~VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN; - } else { - if (val64 & VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN) { - vp_config->rpa_mcast_all_addr_en = - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_ENABLE; - } else { - vp_config->rpa_mcast_all_addr_en = - VXGE_HAL_VPATH_RPA_MCAST_ALL_ADDR_DISABLE; - } - } - - if (vp_config->rpa_bcast_en != - VXGE_HAL_VPATH_RPA_BCAST_USE_FLASH_DEFAULT) { - if (vp_config->rpa_bcast_en) - val64 |= VXGE_HAL_RXMAC_VCFG0_BCAST_EN; - else - val64 &= ~VXGE_HAL_RXMAC_VCFG0_BCAST_EN; - } else { - if (val64 & VXGE_HAL_RXMAC_VCFG0_BCAST_EN) { - vp_config->rpa_bcast_en = - VXGE_HAL_VPATH_RPA_BCAST_ENABLE; - } else { - vp_config->rpa_bcast_en = - VXGE_HAL_VPATH_RPA_BCAST_DISABLE; - } - } - - if (vp_config->rpa_all_vid_en != - VXGE_HAL_VPATH_RPA_ALL_VID_USE_FLASH_DEFAULT) { - if (vp_config->rpa_all_vid_en) - val64 |= VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - else - val64 &= ~VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - } else { - if (val64 & VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN) { - vp_config->rpa_all_vid_en = - VXGE_HAL_VPATH_RPA_ALL_VID_ENABLE; - } else { - vp_config->rpa_all_vid_en = - VXGE_HAL_VPATH_RPA_ALL_VID_DISABLE; - } - } - - if (vpath->promisc_en == VXGE_HAL_VP_PROMISC_ENABLE) { - val64 |= VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN | - VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN | - VXGE_HAL_RXMAC_VCFG0_BCAST_EN | - VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg0); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxmac_vcfg1); - - val64 &= ~(VXGE_HAL_RXMAC_VCFG1_RTS_RTH_MULTI_IT_BD_MODE(0x3) | - VXGE_HAL_RXMAC_VCFG1_RTS_RTH_MULTI_IT_EN_MODE); - - if (hldev->header.config.rth_it_type == - VXGE_HAL_RTH_IT_TYPE_MULTI_IT) { - val64 |= - VXGE_HAL_RXMAC_VCFG1_RTS_RTH_MULTI_IT_BD_MODE(0x2) | - VXGE_HAL_RXMAC_VCFG1_RTS_RTH_MULTI_IT_EN_MODE; - } - - if (vp_config->vp_queue_l2_flow != - VXGE_HAL_VPATH_VP_Q_L2_FLOW_USE_FLASH_DEFAULT) { - if (vp_config->vp_queue_l2_flow) - val64 |= VXGE_HAL_RXMAC_VCFG1_CONTRIB_L2_FLOW; - else - val64 &= ~VXGE_HAL_RXMAC_VCFG1_CONTRIB_L2_FLOW; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rxmac_vcfg1); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->fau_rpa_vcfg); - - if (vp_config->rpa_l4_comp_csum != - VXGE_HAL_VPATH_RPA_L4_COMP_CSUM_USE_FLASH_DEFAULT) { - if (vp_config->rpa_l4_comp_csum) - val64 |= VXGE_HAL_FAU_RPA_VCFG_L4_COMP_CSUM; - else - val64 &= ~VXGE_HAL_FAU_RPA_VCFG_L4_COMP_CSUM; - } - - if (vp_config->rpa_l3_incl_cf != - VXGE_HAL_VPATH_RPA_L3_INCL_CF_USE_FLASH_DEFAULT) { - if (vp_config->rpa_l3_incl_cf) - val64 |= VXGE_HAL_FAU_RPA_VCFG_L3_INCL_CF; - else - val64 &= ~VXGE_HAL_FAU_RPA_VCFG_L3_INCL_CF; - } - - if (vp_config->rpa_l3_comp_csum != - VXGE_HAL_VPATH_RPA_L3_COMP_CSUM_USE_FLASH_DEFAULT) { - if (vp_config->rpa_l3_comp_csum) - val64 |= VXGE_HAL_FAU_RPA_VCFG_L3_COMP_CSUM; - else - val64 &= ~VXGE_HAL_FAU_RPA_VCFG_L3_COMP_CSUM; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->fau_rpa_vcfg); - } - - if (vp_config->fifo.enable == VXGE_HAL_FIFO_ENABLE) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tpa_cfg); - - if (vp_config->tpa_ignore_frame_error != - VXGE_HAL_VPATH_TPA_IGNORE_FRAME_ERROR_USE_FLASH_DEFAULT) { - if (vp_config->tpa_ignore_frame_error) - val64 |= VXGE_HAL_TPA_CFG_IGNORE_FRAME_ERR; - else - val64 &= ~VXGE_HAL_TPA_CFG_IGNORE_FRAME_ERR; - } - - if (vp_config->tpa_ipv6_keep_searching != - VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_USE_FLASH_DEFAULT) { - if (vp_config->tpa_ipv6_keep_searching) - val64 |= VXGE_HAL_TPA_CFG_IPV6_STOP_SEARCHING; - else - val64 &= ~VXGE_HAL_TPA_CFG_IPV6_STOP_SEARCHING; - } - - if (vp_config->tpa_l4_pshdr_present != - VXGE_HAL_VPATH_TPA_L4_PSHDR_PRESENT_USE_FLASH_DEFAULT) { - if (vp_config->tpa_l4_pshdr_present) - val64 |= VXGE_HAL_TPA_CFG_L4_PSHDR_PRESENT; - else - val64 &= ~VXGE_HAL_TPA_CFG_L4_PSHDR_PRESENT; - } - - if (vp_config->tpa_support_mobile_ipv6_hdrs != - VXGE_HAL_VPATH_TPA_SUPPORT_MOBILE_IPV6_HDRS_DEFAULT) { - if (vp_config->tpa_support_mobile_ipv6_hdrs) - val64 |= - VXGE_HAL_TPA_CFG_SUPPORT_MOBILE_IPV6_HDRS; - else - val64 &= - ~VXGE_HAL_TPA_CFG_SUPPORT_MOBILE_IPV6_HDRS; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tpa_cfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tx_protocol_assist_cfg); - - if (vp_config->tpa_lsov2_en != - VXGE_HAL_VPATH_TPA_LSOV2_EN_USE_FLASH_DEFAULT) { - if (vp_config->tpa_lsov2_en) - val64 |= - VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_LSOV2_EN; - else - val64 &= - ~VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_LSOV2_EN; - } - - if (vp_config->tpa_ipv6_keep_searching != - VXGE_HAL_VPATH_TPA_IPV6_KEEP_SEARCHING_USE_FLASH_DEFAULT) { - if (vp_config->tpa_ipv6_keep_searching) - val64 |= VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_IPV6_KEEP_SEARCHING; - else - val64 &= ~VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_IPV6_KEEP_SEARCHING; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tx_protocol_assist_cfg); - - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_vpath_tim_configure - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine configures the tim registers of virtual path - * using the config passed - */ -vxge_hal_status_e -__hal_vpath_tim_configure( - vxge_hal_device_h devh, - u32 vp_id) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_dest_addr); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_vpath_map); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_bitmap); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_remap); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rtdma_rd_optimization_ctrl); - - val64 |= VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY_EN; - - if (hldev->header.config.intr_mode == VXGE_HAL_INTR_MODE_EMULATED_INTA) - val64 = 0x1000150012000100ULL; /* override for HPISS */ - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->rtdma_rd_optimization_ctrl); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_wrkld_clc); - - val64 |= VXGE_HAL_TIM_WRKLD_CLC_WRKLD_EVAL_PRD(0x5BE9) | - VXGE_HAL_TIM_WRKLD_CLC_CNT_FRM_BYTE | - VXGE_HAL_TIM_WRKLD_CLC_WRKLD_EVAL_DIV(0x15) | - VXGE_HAL_TIM_WRKLD_CLC_CNT_RX_TX(3); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_wrkld_clc); - - if (vpath->vp_config->ring.enable == VXGE_HAL_RING_ENABLE) { - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - VXGE_HAL_TIM_RING_ASSN_INT_NUM(vpath->rx_intr_num), - &vpath->vp_reg->tim_ring_assn); - - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_pci_cfg); - - val64 |= VXGE_HAL_TIM_PCI_CFG_ADD_PAD; - - if (vpath->vp_config->no_snoop != - VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT) { - if (vpath->vp_config->no_snoop) - val64 |= VXGE_HAL_TIM_PCI_CFG_NO_SNOOP; - else - val64 &= ~VXGE_HAL_TIM_PCI_CFG_NO_SNOOP; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_pci_cfg); - - if (vpath->vp_config->fifo.enable == VXGE_HAL_FIFO_ENABLE) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_TX]); - - if (vpath->vp_config->tti.btimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_BTIMER_VAL) { - val64 &= - ~VXGE_HAL_TIM_CFG1_INT_NUM_BTIMER_VAL(0x3ffffff); - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_BTIMER_VAL( - vpath->vp_config->tti.btimer_val); - } - - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_BITMP_EN; - - if (vpath->vp_config->tti.txfrm_cnt_en != - VXGE_HAL_TXFRM_CNT_EN_USE_FLASH_DEFAULT) { - if (vpath->vp_config->tti.txfrm_cnt_en) - val64 |= - VXGE_HAL_TIM_CFG1_INT_NUM_TXFRM_CNT_EN; - else - val64 &= - ~VXGE_HAL_TIM_CFG1_INT_NUM_TXFRM_CNT_EN; - } - - if (vpath->vp_config->tti.txd_cnt_en != - VXGE_HAL_TXD_CNT_EN_USE_FLASH_DEFAULT) { - if (vpath->vp_config->tti.txd_cnt_en) - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_TXD_CNT_EN; - else - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_TXD_CNT_EN; - } - - if (vpath->vp_config->tti.timer_ac_en != - VXGE_HAL_TIM_TIMER_AC_USE_FLASH_DEFAULT) { - if (vpath->vp_config->tti.timer_ac_en) - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_AC; - else - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_AC; - } - - if (vpath->vp_config->tti.timer_ci_en != - VXGE_HAL_TIM_TIMER_CI_USE_FLASH_DEFAULT) { - if (vpath->vp_config->tti.timer_ci_en) - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - else - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - } - - if (vpath->vp_config->tti.urange_a != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_A) { - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_URNG_A(0x3f); - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_URNG_A( - vpath->vp_config->tti.urange_a); - } - - if (vpath->vp_config->tti.urange_b != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_B) { - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_URNG_B(0x3f); - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_URNG_B( - vpath->vp_config->tti.urange_b); - } - - if (vpath->vp_config->tti.urange_c != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_C) { - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_URNG_C(0x3f); - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_URNG_C( - vpath->vp_config->tti.urange_c); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_TX]); - - vpath->tim_tti_cfg1_saved = val64; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg2_int_num[VXGE_HAL_VPATH_INTR_TX]); - - if (vpath->vp_config->tti.uec_a != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_A) { - val64 &= ~VXGE_HAL_TIM_CFG2_INT_NUM_UEC_A(0xffff); - val64 |= VXGE_HAL_TIM_CFG2_INT_NUM_UEC_A( - vpath->vp_config->tti.uec_a); - } - - if (vpath->vp_config->tti.uec_b != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_B) { - val64 &= ~VXGE_HAL_TIM_CFG2_INT_NUM_UEC_B(0xffff); - val64 |= VXGE_HAL_TIM_CFG2_INT_NUM_UEC_B( - vpath->vp_config->tti.uec_b); - } - - if (vpath->vp_config->tti.uec_c != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_C) { - val64 &= ~VXGE_HAL_TIM_CFG2_INT_NUM_UEC_C(0xffff); - val64 |= VXGE_HAL_TIM_CFG2_INT_NUM_UEC_C( - vpath->vp_config->tti.uec_c); - } - - if (vpath->vp_config->tti.uec_d != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_D) { - val64 &= ~VXGE_HAL_TIM_CFG2_INT_NUM_UEC_D(0xffff); - val64 |= VXGE_HAL_TIM_CFG2_INT_NUM_UEC_D( - vpath->vp_config->tti.uec_d); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg2_int_num[VXGE_HAL_VPATH_INTR_TX]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg3_int_num[VXGE_HAL_VPATH_INTR_TX]); - - if (vpath->vp_config->tti.timer_ri_en != - VXGE_HAL_TIM_TIMER_RI_USE_FLASH_DEFAULT) { - if (vpath->vp_config->tti.timer_ri_en) - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_TIMER_RI; - else - val64 &= ~VXGE_HAL_TIM_CFG3_INT_NUM_TIMER_RI; - } - - if (vpath->vp_config->tti.rtimer_event_sf != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_EVENT_SF) { - val64 &= - ~VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_EVENT_SF(0xf); - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_EVENT_SF( - vpath->vp_config->tti.rtimer_event_sf); - } - - if (vpath->vp_config->tti.rtimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_VAL) { - val64 &= ~VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL( - 0x3ffffff); - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL( - vpath->vp_config->tti.rtimer_val); - } - - if (vpath->vp_config->tti.util_sel != - VXGE_HAL_TIM_UTIL_SEL_USE_FLASH_DEFAULT) { - val64 &= ~VXGE_HAL_TIM_CFG3_INT_NUM_UTIL_SEL(0x3f); - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_UTIL_SEL( - vpath->vp_config->tti.util_sel); - } - - if (vpath->vp_config->tti.ltimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_LTIMER_VAL) { - val64 &= - ~VXGE_HAL_TIM_CFG3_INT_NUM_LTIMER_VAL(0x3ffffff); - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_LTIMER_VAL( - vpath->vp_config->tti.ltimer_val); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg3_int_num[VXGE_HAL_VPATH_INTR_TX]); - - vpath->tim_tti_cfg3_saved = val64; - } - - if (vpath->vp_config->ring.enable == VXGE_HAL_RING_ENABLE) { - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_RX]); - - if (vpath->vp_config->rti.btimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_BTIMER_VAL) { - val64 &= - ~VXGE_HAL_TIM_CFG1_INT_NUM_BTIMER_VAL(0x3ffffff); - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_BTIMER_VAL( - vpath->vp_config->rti.btimer_val); - } - - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_BITMP_EN; - - if (vpath->vp_config->rti.txfrm_cnt_en != - VXGE_HAL_TXFRM_CNT_EN_USE_FLASH_DEFAULT) { - if (vpath->vp_config->rti.txfrm_cnt_en) - val64 |= - VXGE_HAL_TIM_CFG1_INT_NUM_TXFRM_CNT_EN; - else - val64 &= - ~VXGE_HAL_TIM_CFG1_INT_NUM_TXFRM_CNT_EN; - } - - if (vpath->vp_config->rti.txd_cnt_en != - VXGE_HAL_TXD_CNT_EN_USE_FLASH_DEFAULT) { - if (vpath->vp_config->rti.txd_cnt_en) - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_TXD_CNT_EN; - else - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_TXD_CNT_EN; - } - - if (vpath->vp_config->rti.timer_ac_en != - VXGE_HAL_TIM_TIMER_AC_USE_FLASH_DEFAULT) { - if (vpath->vp_config->rti.timer_ac_en) - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_AC; - else - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_AC; - } - - if (vpath->vp_config->rti.timer_ci_en != - VXGE_HAL_TIM_TIMER_CI_USE_FLASH_DEFAULT) { - if (vpath->vp_config->rti.timer_ci_en) - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - else - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - } - - if (vpath->vp_config->rti.urange_a != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_A) { - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_URNG_A(0x3f); - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_URNG_A( - vpath->vp_config->rti.urange_a); - } - - if (vpath->vp_config->rti.urange_b != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_B) { - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_URNG_B(0x3f); - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_URNG_B( - vpath->vp_config->rti.urange_b); - } - - if (vpath->vp_config->rti.urange_c != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_URANGE_C) { - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_URNG_C(0x3f); - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_URNG_C( - vpath->vp_config->rti.urange_c); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_RX]); - - vpath->tim_rti_cfg1_saved = val64; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg2_int_num[VXGE_HAL_VPATH_INTR_RX]); - - if (vpath->vp_config->rti.uec_a != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_A) { - val64 &= ~VXGE_HAL_TIM_CFG2_INT_NUM_UEC_A(0xffff); - val64 |= VXGE_HAL_TIM_CFG2_INT_NUM_UEC_A( - vpath->vp_config->rti.uec_a); - } - - if (vpath->vp_config->rti.uec_b != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_B) { - val64 &= ~VXGE_HAL_TIM_CFG2_INT_NUM_UEC_B(0xffff); - val64 |= VXGE_HAL_TIM_CFG2_INT_NUM_UEC_B( - vpath->vp_config->rti.uec_b); - } - - if (vpath->vp_config->rti.uec_c != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_C) { - val64 &= ~VXGE_HAL_TIM_CFG2_INT_NUM_UEC_C(0xffff); - val64 |= VXGE_HAL_TIM_CFG2_INT_NUM_UEC_C( - vpath->vp_config->rti.uec_c); - } - - if (vpath->vp_config->rti.uec_d != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_UEC_D) { - val64 &= ~VXGE_HAL_TIM_CFG2_INT_NUM_UEC_D(0xffff); - val64 |= VXGE_HAL_TIM_CFG2_INT_NUM_UEC_D( - vpath->vp_config->rti.uec_d); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg2_int_num[VXGE_HAL_VPATH_INTR_RX]); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg3_int_num[VXGE_HAL_VPATH_INTR_RX]); - - if (vpath->vp_config->rti.timer_ri_en != - VXGE_HAL_TIM_TIMER_RI_USE_FLASH_DEFAULT) { - if (vpath->vp_config->rti.timer_ri_en) - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_TIMER_RI; - else - val64 &= ~VXGE_HAL_TIM_CFG3_INT_NUM_TIMER_RI; - } - - if (vpath->vp_config->rti.rtimer_event_sf != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_EVENT_SF) { - val64 &= - ~VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_EVENT_SF(0xf); - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_EVENT_SF( - vpath->vp_config->rti.rtimer_event_sf); - } - - if (vpath->vp_config->rti.rtimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_RTIMER_VAL) { - val64 &= - ~VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL(0x3ffffff); - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL( - vpath->vp_config->rti.rtimer_val); - } - - if (vpath->vp_config->rti.util_sel != - VXGE_HAL_TIM_UTIL_SEL_USE_FLASH_DEFAULT) { - val64 &= ~VXGE_HAL_TIM_CFG3_INT_NUM_UTIL_SEL(0x3f); - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_UTIL_SEL( - vpath->vp_config->rti.util_sel); - } - - if (vpath->vp_config->rti.ltimer_val != - VXGE_HAL_USE_FLASH_DEFAULT_TIM_LTIMER_VAL) { - val64 &= - ~VXGE_HAL_TIM_CFG3_INT_NUM_LTIMER_VAL(0x3ffffff); - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_LTIMER_VAL( - vpath->vp_config->rti.ltimer_val); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg3_int_num[VXGE_HAL_VPATH_INTR_RX]); - - vpath->tim_rti_cfg3_saved = val64; - } - - val64 = 0; - - if (hldev->header.config.intr_mode == - VXGE_HAL_INTR_MODE_EMULATED_INTA) { - - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_BTIMER_VAL(1) | - VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - - } - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_EINTA]); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_cfg2_int_num[VXGE_HAL_VPATH_INTR_EINTA]); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_cfg3_int_num[VXGE_HAL_VPATH_INTR_EINTA]); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_BMAP]); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_cfg2_int_num[VXGE_HAL_VPATH_INTR_BMAP]); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - (u64) 0, - &vpath->vp_reg->tim_cfg3_int_num[VXGE_HAL_VPATH_INTR_BMAP]); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_is_rxdmem_leak - Check for the rxd memory leak. - * @vpath_handle: Virtual Path handle. - * - * The function checks for the rxd memory leak. - * - */ -u32 -vxge_hal_vpath_is_rxdmem_leak(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - u32 new_qw_count, rxd_spat, bRet = 0; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vp != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vp->vpath->vp_config->ring.enable == VXGE_HAL_RING_DISABLE) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, bRet); - return (bRet); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp->vpath->vp_reg->prc_rxd_doorbell); - - new_qw_count = (u32) VXGE_HAL_PRC_RXD_DOORBELL_GET_NEW_QW_CNT(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp->vpath->vp_reg->prc_cfg6); - - rxd_spat = (u32) VXGE_HAL_PRC_CFG6_GET_RXD_SPAT(val64); - - bRet = (new_qw_count > (rxd_spat * 3 / 2)); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, bRet); - - return (bRet); -} - -/* - * vxge_hal_vpath_mtu_check - check MTU value for ranges - * @vpath_handle: Virtal path handle - * @new_mtu: new MTU value to check - * - * Will do sanity check for new MTU value. - * - * Returns: VXGE_HAL_OK - success. - * VXGE_HAL_ERR_INVALID_MTU_SIZE - MTU is invalid. - * - * See also: vxge_hal_vpath_mtu_set() - */ -vxge_hal_status_e -vxge_hal_device_mtu_check(vxge_hal_vpath_h vpath_handle, - unsigned long new_mtu) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vp == NULL) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", __FILE__, __func__, - __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - new_mtu += VXGE_HAL_MAC_HEADER_MAX_SIZE; - - if ((new_mtu < VXGE_HAL_MIN_MTU) || (new_mtu > vp->vpath->max_mtu)) { - status = VXGE_HAL_ERR_INVALID_MTU_SIZE; - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_mtu_set - Set MTU. - * @vpath_handle: Virtal path handle - * @new_mtu: New MTU size to configure. - * - * Set new MTU value. Example, to use jumbo frames: - * vxge_hal_vpath_mtu_set(my_device, 9600); - * - */ -vxge_hal_status_e -vxge_hal_vpath_mtu_set(vxge_hal_vpath_h vpath_handle, - unsigned long new_mtu) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vp == NULL) { - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", __FILE__, __func__, - __LINE__, VXGE_HAL_ERR_INVALID_HANDLE); - return (VXGE_HAL_ERR_INVALID_HANDLE); - } - - new_mtu += VXGE_HAL_MAC_HEADER_MAX_SIZE; - - if ((new_mtu < VXGE_HAL_MIN_MTU) || (new_mtu > vp->vpath->max_mtu)) { - status = VXGE_HAL_ERR_INVALID_MTU_SIZE; - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp->vpath->vp_reg->rxmac_vcfg0); - - val64 &= ~VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN(0x3fff); - val64 |= VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN(new_mtu); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vp->vpath->vp_reg->rxmac_vcfg0); - - vp->vpath->vp_config->mtu = new_mtu - VXGE_HAL_MAC_HEADER_MAX_SIZE; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - - -/* - * __hal_vpath_size_quantum_set - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine configures the size quantum of virtual path - * using the config passed - */ -vxge_hal_status_e -__hal_vpath_size_quantum_set( - vxge_hal_device_h devh, - u32 vp_id) -{ - u64 val64; - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - switch (__vxge_os_cacheline_size) { - case 8: - val64 = 0; - break; - case 16: - val64 = 1; - break; - case 32: - val64 = 2; - break; - case 64: - val64 = 3; - break; - default: - case 128: - val64 = 4; - break; - case 256: - val64 = 5; - break; - case 512: - val64 = 6; - break; - } - - vxge_os_pio_mem_write64(hldev->header.pdev, hldev->header.regh0, - val64, - &vpath->vp_reg->vpath_general_cfg2); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_hw_initialize - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine initializes the registers of virtual path - * using the config passed - */ -vxge_hal_status_e -__hal_vpath_hw_initialize( - vxge_hal_device_h devh, - u32 vp_id) -{ - u64 val64; - u32 mrrs; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_virtualpath_t *vpath; - __hal_device_t *hldev = (__hal_device_t *) devh; - vxge_hal_pci_e_capability_t *pci_e_cap; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", vp_id = %d", - (ptr_t) devh, vp_id); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - if (!(hldev->vpath_assignments & mBIT(vp_id))) { - - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", __FILE__, __func__, - __LINE__, VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - return (VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - } - - status = __hal_vpath_swapper_set((vxge_hal_device_t *) hldev, vp_id); - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_vpath_size_quantum_set(hldev, vp_id); - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_vpath_mac_configure(hldev, vp_id); - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_vpath_kdfc_configure(hldev, vp_id); - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - - status = __hal_vpath_tim_configure(hldev, vp_id); - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vxge_os_pio_mem_write64(hldev->header.pdev, hldev->header.regh0, - VXGE_HAL_USDC_VPATH_SGRP_ASSIGN( - vpath->sess_grps_available), - &vpath->vp_reg->usdc_vpath); - - vxge_os_wmb(); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->qcc_pci_cfg); - - val64 |= VXGE_HAL_QCC_PCI_CFG_ADD_PAD_CQE_SPACE | - VXGE_HAL_QCC_PCI_CFG_ADD_PAD_WQE | - VXGE_HAL_QCC_PCI_CFG_ADD_PAD_SRQIR | - VXGE_HAL_QCC_PCI_CFG_CTL_STR_CQE_SPACE | - VXGE_HAL_QCC_PCI_CFG_CTL_STR_WQE | - VXGE_HAL_QCC_PCI_CFG_CTL_STR_SRQIR; - - if (vpath->vp_config->no_snoop != - VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT) { - if (vpath->vp_config->no_snoop) { - val64 |= VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_CQE_SPACE | - VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_WQE | - VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_SRQIR; - } else { - val64 &= ~(VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_CQE_SPACE | - VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_WQE | - VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_SRQIR); - } - } - - vxge_os_pio_mem_write64(hldev->header.pdev, hldev->header.regh0, - val64, - &vpath->vp_reg->qcc_pci_cfg); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->h2l_vpath_config); - - if (vpath->vp_config->no_snoop != - VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT) { - if (vpath->vp_config->no_snoop) { - val64 |= VXGE_HAL_H2L_VPATH_CONFIG_OD_NO_SNOOP; - } else { - val64 &= ~VXGE_HAL_H2L_VPATH_CONFIG_OD_NO_SNOOP; - } - } - - vxge_os_pio_mem_write64(hldev->header.pdev, hldev->header.regh0, - val64, - &vpath->vp_reg->h2l_vpath_config); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->ph2l_vp_cfg0); - - if (vpath->vp_config->no_snoop != - VXGE_HAL_VPATH_NO_SNOOP_USE_FLASH_DEFAULT) { - if (vpath->vp_config->no_snoop) { - val64 |= VXGE_HAL_PH2L_VP_CFG0_NOSNOOP_DATA; - } else { - val64 &= ~VXGE_HAL_PH2L_VP_CFG0_NOSNOOP_DATA; - } - } - - vxge_os_pio_mem_write64(hldev->header.pdev, hldev->header.regh0, - val64, - &vpath->vp_reg->ph2l_vp_cfg0); - - vxge_os_pio_mem_write64(hldev->header.pdev, hldev->header.regh0, - 0, - &vpath->vp_reg->gendma_int); - - pci_e_cap = (vxge_hal_pci_e_capability_t *) - (((char *)&hldev->pci_config_space_bios) + hldev->pci_e_caps); - - mrrs = pci_e_cap->pci_e_devctl >> 12; - - val64 = VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_GEN_INT_AFTER_ABORT | - VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_FB_FILL_THRESH(mrrs) | - VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY_EN | - VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_TXD_FILL_THRESH(1); - - vxge_os_pio_mem_write64(hldev->header.pdev, hldev->header.regh0, - val64, - &vpath->vp_reg->rtdma_rd_optimization_ctrl); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_vp_initialize - Initialize Virtual Path structure - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * @config: Configuration for the virtual path - * - * This routine initializes virtual path using the config passed - */ -vxge_hal_status_e -__hal_vp_initialize(vxge_hal_device_h devh, - u32 vp_id, - vxge_hal_vp_config_t *config) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert((hldev != NULL) && (config != NULL)); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "devh = 0x"VXGE_OS_STXFMT", vp_id = %d, config = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, vp_id, (ptr_t) config); - - if (!(hldev->vpath_assignments & mBIT(vp_id))) { - - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", __FILE__, __func__, - __LINE__, VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - return (VXGE_HAL_ERR_VPATH_NOT_AVAILABLE); - } - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - vpath->vp_id = vp_id; - - vpath->vp_open = VXGE_HAL_VP_OPEN; - - vpath->hldev = (__hal_device_t *) devh; - - vpath->vp_config = config; - - vpath->vp_reg = hldev->vpath_reg[vp_id]; - - vpath->vpmgmt_reg = hldev->vpmgmt_reg[vp_id]; - - status = __hal_vpath_hw_reset(devh, vp_id); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath( - "vpath is already in reset %s:%s:%d", - __FILE__, __func__, __LINE__); - } - - status = __hal_vpath_reset_check(vpath); - - if (status != VXGE_HAL_OK) { - vxge_os_memzero(vpath, sizeof(__hal_virtualpath_t)); - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); - } - - status = __hal_vpath_mgmt_read(hldev, vpath); - - if (status != VXGE_HAL_OK) { - vxge_os_memzero(vpath, sizeof(__hal_virtualpath_t)); - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vpath->tx_intr_num = - (vp_id * VXGE_HAL_MAX_INTR_PER_VP) + VXGE_HAL_VPATH_INTR_TX; - - vpath->rx_intr_num = - (vp_id * VXGE_HAL_MAX_INTR_PER_VP) + VXGE_HAL_VPATH_INTR_RX; - - vpath->einta_intr_num = - (vp_id * VXGE_HAL_MAX_INTR_PER_VP) + VXGE_HAL_VPATH_INTR_EINTA; - - vpath->bmap_intr_num = - (vp_id * VXGE_HAL_MAX_INTR_PER_VP) + VXGE_HAL_VPATH_INTR_BMAP; - - -#if defined(VXGE_HAL_VP_CBS) - vxge_os_spin_lock_init(&vpath->vpath_handles_lock, hldev->pdev); -#elif defined(VXGE_HAL_VP_CBS_IRQ) - vxge_os_spin_lock_init_irq(&vpath->vpath_handles_lock, hldev->irqh); -#endif - - vxge_list_init(&vpath->vpath_handles); - - vpath->sw_stats = &hldev->stats.sw_dev_info_stats.vpath_info[vp_id]; - - vxge_os_memzero(&vpath->sw_stats->obj_counts, - sizeof(vxge_hal_vpath_sw_obj_count_t)); - - VXGE_HAL_DEVICE_TIM_INT_MASK_SET(vpath->hldev, vpath->vp_id); - - status = __hal_vpath_hw_initialize(vpath->hldev, vpath->vp_id); - - if (status != VXGE_HAL_OK) { - __hal_vp_terminate(devh, vp_id); - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * __hal_vp_terminate - Terminate Virtual Path structure - * @hldev: Handle to the device object - * @vp_id: Virtual Path Id - * - * This routine closes all channels it opened and freeup memory - */ -void -__hal_vp_terminate(vxge_hal_device_h devh, u32 vp_id) -{ - __hal_virtualpath_t *vpath; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(devh != NULL); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "devh = 0x"VXGE_OS_STXFMT", vp_id = %d", (ptr_t) devh, vp_id); - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[vp_id]; - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - - vxge_hal_trace_log_vpath( - "<== %s:%s:%d Result: %d", __FILE__, __func__, - __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return; - - } - - VXGE_HAL_DEVICE_TIM_INT_MASK_RESET(vpath->hldev, vpath->vp_id); - - -#if defined(VXGE_HAL_VP_CBS) - vxge_os_spin_lock_destroy( - &vpath->vpath_handles_lock, hldev->header.pdev); -#elif defined(VXGE_HAL_VP_CBS_IRQ) - vxge_os_spin_lock_destroy_irq( - &vpath->vpath_handles_lock, hldev->header.pdev); -#endif - - vxge_os_memzero(vpath, sizeof(__hal_virtualpath_t)); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); -} - - -/* - * vxge_hal_vpath_obj_count_get - Get the Object usage count for a given - * virtual path - * @vpath_handle: Virtal path handle - * @obj_counts: Buffer to return object counts - * - * This function returns the object counts for virtual path. - */ -vxge_hal_status_e -vxge_hal_vpath_obj_count_get( - vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_sw_obj_count_t *obj_count) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - if ((vpath_handle == NULL) || (obj_count == NULL)) - return (VXGE_HAL_FAIL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT", " - "obj_count = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle, - (ptr_t) obj_count); - - vxge_os_memcpy(obj_count, &vp->vpath->sw_stats->obj_counts, - sizeof(vxge_hal_vpath_sw_obj_count_t)); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_open - Open a virtual path on a given adapter - * @devh: handle to device object - * @attr: Virtual path attributes - * @cb_fn: Call back to be called to complete an asynchronous function call - * @client_handle: handle to be returned in the callback - * @vpath_handle: Buffer to return a handle to the vpath - * - * This function is used to open access to virtual path of an - * adapter for offload, LRO and SPDM operations. This function returns - * synchronously. - */ -vxge_hal_status_e -vxge_hal_vpath_open(vxge_hal_device_h devh, - vxge_hal_vpath_attr_t *attr, - vxge_hal_vpath_callback_f cb_fn, - vxge_hal_client_h client_handle, - vxge_hal_vpath_h *vpath_handle) -{ - __hal_device_t *hldev = (__hal_device_t *) devh; - __hal_virtualpath_t *vpath; - __hal_vpath_handle_t *vp; - vxge_hal_status_e status; - - vxge_assert((devh != NULL) && (attr != NULL) && (cb_fn != NULL) && - (vpath_handle != NULL)); - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("devh = 0x"VXGE_OS_STXFMT", " - "attr = 0x"VXGE_OS_STXFMT", cb_fn = 0x"VXGE_OS_STXFMT", " - "client_handle = 0x"VXGE_OS_STXFMT", " - "vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) devh, (ptr_t) attr, (ptr_t) cb_fn, - (ptr_t) client_handle, (ptr_t) vpath_handle); - - - vpath = (__hal_virtualpath_t *) &hldev->virtual_paths[attr->vp_id]; - - if (vpath->vp_open == VXGE_HAL_VP_OPEN) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_INVALID_STATE); - return (VXGE_HAL_ERR_INVALID_STATE); - } - - status = __hal_vp_initialize(hldev, attr->vp_id, - &hldev->header.config.vp_config[attr->vp_id]); - - if (status != VXGE_HAL_OK) { - - vxge_hal_err_log_vpath( - "virtual Paths: __hal_vp_initialize failed == > %s : %d", - __func__, __LINE__); - - goto vpath_open_exit1; - - } - - vp = (__hal_vpath_handle_t *) vxge_os_malloc(hldev->header.pdev, - sizeof(__hal_vpath_handle_t)); - - if (vp == NULL) { - - status = VXGE_HAL_ERR_OUT_OF_MEMORY; - - goto vpath_open_exit2; - - } - - vxge_os_memzero(vp, sizeof(__hal_vpath_handle_t)); - - vp->vpath = vpath; - vp->cb_fn = cb_fn; - vp->client_handle = client_handle; - - - if (vp->vpath->vp_config->fifo.enable == VXGE_HAL_FIFO_ENABLE) { - - status = __hal_fifo_create(vp, &attr->fifo_attr); - if (status != VXGE_HAL_OK) { - goto vpath_open_exit6; - } - } - - if (vp->vpath->vp_config->ring.enable == VXGE_HAL_RING_ENABLE) { - - status = __hal_ring_create(vp, &attr->ring_attr); - if (status != VXGE_HAL_OK) { - goto vpath_open_exit7; - } - - status = __hal_vpath_prc_configure(devh, attr->vp_id); - if (status != VXGE_HAL_OK) { - goto vpath_open_exit8; - } - } - - - - vp->vpath->stats_block = __hal_blockpool_block_allocate(devh, - VXGE_OS_HOST_PAGE_SIZE); - - if (vp->vpath->stats_block == NULL) { - - status = VXGE_HAL_ERR_OUT_OF_MEMORY; - - goto vpath_open_exit8; - - } - - vp->vpath->hw_stats = - (vxge_hal_vpath_stats_hw_info_t *) vp->vpath->stats_block->memblock; - - vxge_os_memzero(vp->vpath->hw_stats, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - - hldev->stats.hw_dev_info_stats.vpath_info[attr->vp_id] = - vp->vpath->hw_stats; - - vp->vpath->hw_stats_sav = - &hldev->stats.hw_dev_info_stats.vpath_info_sav[attr->vp_id]; - - vxge_os_memzero(vp->vpath->hw_stats_sav, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - vp->vpath->stats_block->dma_addr, - &vpath->vp_reg->stats_cfg); - - status = vxge_hal_vpath_hw_stats_enable(vp); - - if (status != VXGE_HAL_OK) { - - goto vpath_open_exit8; - - } - - vxge_list_insert(&vp->item, &vpath->vpath_handles); - - hldev->vpaths_deployed |= mBIT(vpath->vp_id); - *vpath_handle = vp; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); - -vpath_open_exit8: - if (vpath->ringh != NULL) - __hal_ring_delete(vp); -vpath_open_exit7: - if (vpath->fifoh != NULL) - __hal_fifo_delete(vp); -vpath_open_exit6: - - vxge_os_free(hldev->header.pdev, vp, - sizeof(__hal_vpath_handle_t)); -vpath_open_exit2: - __hal_vp_terminate(devh, attr->vp_id); -vpath_open_exit1: - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_id - Get virtual path ID - * @vpath_handle: Handle got from previous vpath open - * - * This function returns virtual path id - */ -u32 -vxge_hal_vpath_id( - vxge_hal_vpath_h vpath_handle) -{ - u32 id; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - id = ((__hal_vpath_handle_t *) vpath_handle)->vpath->vp_id; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (id); -} - -/* - * vxge_hal_vpath_close - Close the handle got from previous vpath (vpath) open - * @vpath_handle: Handle got from previous vpath open - * - * This function is used to close access to virtual path opened - * earlier. - */ -vxge_hal_status_e -vxge_hal_vpath_close( - vxge_hal_vpath_h vpath_handle) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_virtualpath_t *vpath; - __hal_device_t *hldev; - u32 vp_id; - u32 is_empty = TRUE; - - vxge_assert(vpath_handle != NULL); - - vpath = (__hal_virtualpath_t *) vp->vpath; - - hldev = (__hal_device_t *) vpath->hldev; - - vp_id = vpath->vp_id; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath( - "vpath_handle = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - -#if defined(VXGE_HAL_VP_CBS) - vxge_os_spin_lock(&vpath->vpath_handles_lock); -#elif defined(VXGE_HAL_VP_CBS_IRQ) - vxge_os_spin_lock_irq(&vpath->vpath_handles_lock, flags); -#endif - - vxge_list_remove(&vp->item); - - if (!vxge_list_is_empty(&vpath->vpath_handles)) { - vxge_list_insert(&vp->item, &vpath->vpath_handles); - is_empty = FALSE; - } - -#if defined(VXGE_HAL_VP_CBS) - vxge_os_spin_unlock(&vpath->vpath_handles_lock); -#elif defined(VXGE_HAL_VP_CBS_IRQ) - vxge_os_spin_unlock_irq(&vpath->vpath_handles_lock, flags); -#endif - - if (!is_empty) { - vxge_hal_err_log_vpath("clients are still attached == > %s : %d", - __func__, __LINE__); - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 1", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_FAIL); - } - - vpath->hldev->vpaths_deployed &= ~mBIT(vp_id); - - if (vpath->ringh != NULL) - __hal_ring_delete(vpath_handle); - - if (vpath->fifoh != NULL) - __hal_fifo_delete(vpath_handle); - - - if (vpath->stats_block != NULL) { - __hal_blockpool_block_free(hldev, vpath->stats_block); - } - - vxge_os_free(hldev->header.pdev, - vpath_handle, sizeof(__hal_vpath_handle_t)); - - __hal_vp_terminate(hldev, vp_id); - - vpath->vp_open = VXGE_HAL_VP_NOT_OPEN; - - (void) __hal_ifmsg_wmsg_post(hldev, - vp_id, - VXGE_HAL_RTS_ACCESS_STEER_MSG_DEST_BROADCAST, - VXGE_HAL_RTS_ACCESS_STEER_DATA0_MSG_TYPE_VPATH_RESET_END, - 0); - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_reset - Resets vpath - * @vpath_handle: Handle got from previous vpath open - * - * This function is used to request a reset of vpath - */ -vxge_hal_status_e -vxge_hal_vpath_reset( - vxge_hal_vpath_h vpath_handle) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - vxge_hal_status_e status; - u32 count = 0, total_count = 0; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vp->vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - vxge_hw_vpath_set_zero_rx_frm_len(hldev, vp->vpath->vp_id); - - vxge_hw_vpath_wait_receive_idle(hldev, vp->vpath->vp_id, - &count, &total_count); - - status = __hal_vpath_hw_reset((vxge_hal_device_h) hldev, - vp->vpath->vp_id); - - if (status == VXGE_HAL_OK) - vp->vpath->sw_stats->soft_reset_cnt++; - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_reset_poll - Poll for reset complete - * @vpath_handle: Handle got from previous vpath open - * - * This function is used to poll for the vpath reset completion - */ -vxge_hal_status_e -vxge_hal_vpath_reset_poll( - vxge_hal_vpath_h vpath_handle) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_vpath("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_vpath("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - if (vp->vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - status = __hal_vpath_reset_check(vp->vpath); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result = %d", - __FILE__, __func__, __LINE__, status); - - return (status); - } - - status = __hal_vpath_sw_reset((vxge_hal_device_h) hldev, - vp->vpath->vp_id); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - vxge_os_memzero(vp->vpath->sw_stats, - sizeof(vxge_hal_vpath_stats_sw_info_t)); - - status = __hal_vpath_hw_initialize((vxge_hal_device_h) hldev, - vp->vpath->vp_id); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - if (vp->vpath->ringh != NULL) { - - status = __hal_vpath_prc_configure( - (vxge_hal_device_h) hldev, - vp->vpath->vp_id); - - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - } - - vxge_os_memzero(vp->vpath->hw_stats, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - - vxge_os_memzero(vp->vpath->hw_stats_sav, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - vp->vpath->stats_block->dma_addr, - &vp->vpath->vp_reg->stats_cfg); - - - status = vxge_hal_vpath_hw_stats_enable(vp); - - if (status != VXGE_HAL_OK) { - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - - } - - vxge_hal_trace_log_vpath("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_hw_stats_enable - Enable vpath h/wstatistics. - * @vpath_handle: Virtual Path handle. - * - * Enable the DMA vpath statistics. The function is to be called to re-enable - * the adapter to update stats into the host memory - * - * See also: vxge_hal_vpath_hw_stats_disable(), vxge_hal_vpath_hw_stats_get() - */ -vxge_hal_status_e -vxge_hal_vpath_hw_stats_enable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - vxge_hal_status_e status = VXGE_HAL_OK; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - vpath = vp->vpath; - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - vxge_os_memcpy(vpath->hw_stats_sav, - vpath->hw_stats, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - - if (hldev->header.config.stats_read_method == - VXGE_HAL_STATS_READ_METHOD_DMA) { - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->stats_cfg0); - - val64 |= VXGE_HAL_STATS_CFG0_STATS_ENABLE( - (1 << (16 - vpath->vp_id))); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->stats_cfg0); - } else { - status = __hal_vpath_hw_stats_get( - vpath, - vpath->hw_stats); - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_hw_stats_disable - Disable vpath h/w statistics. - * @vpath_handle: Virtual Path handle. - * - * Enable the DMA vpath statistics. The function is to be called to disable - * the adapter to update stats into the host memory. This function is not - * needed to be called, normally. - * - * See also: vxge_hal_vpath_hw_stats_enable(), vxge_hal_vpath_hw_stats_get() - */ -vxge_hal_status_e -vxge_hal_vpath_hw_stats_disable(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "vpath = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle); - - vpath = (__hal_virtualpath_t *) - ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->stats_cfg0); - - val64 &= ~VXGE_HAL_STATS_CFG0_STATS_ENABLE((1 << (16 - vpath->vp_id))); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &hldev->common_reg->stats_cfg0); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_hw_stats_get - Get the vpath hw statistics. - * @vpath_handle: Virtual Path handle. - * @hw_stats: Hardware stats - * - * Returns the vpath h/w stats. - * - * See also: vxge_hal_vpath_hw_stats_enable(), - * vxge_hal_vpath_hw_stats_disable() - */ -vxge_hal_status_e -vxge_hal_vpath_hw_stats_get(vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_stats_hw_info_t *hw_stats) -{ - __hal_virtualpath_t *vpath; - __hal_device_t *hldev; - vxge_hal_status_e status; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (hw_stats != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "vpath = 0x"VXGE_OS_STXFMT", hw_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) hw_stats); - - vpath = (__hal_virtualpath_t *) - ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &hldev->common_reg->stats_cfg0, - 0, - VXGE_HAL_STATS_CFG0_STATS_ENABLE((1 << (16 - vpath->vp_id))), - hldev->header.config.device_poll_millis); - - if (status == VXGE_HAL_OK) { - vxge_os_memcpy(hw_stats, - vpath->hw_stats, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_sw_stats_get - Get the vpath sw statistics. - * @vpath_handle: Virtual Path handle. - * @sw_stats: Software stats - * - * Returns the vpath s/w stats. - * - * See also: vxge_hal_vpath_hw_stats_get() - */ -vxge_hal_status_e -vxge_hal_vpath_sw_stats_get(vxge_hal_vpath_h vpath_handle, - vxge_hal_vpath_stats_sw_info_t *sw_stats) -{ - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert((vpath_handle != NULL) && (sw_stats != NULL)); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "vpath = 0x"VXGE_OS_STXFMT", sw_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle, (ptr_t) sw_stats); - - vpath = (__hal_virtualpath_t *) - ((__hal_vpath_handle_t *) vpath_handle)->vpath; - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - if (hldev->header.traffic_intr_cnt) { - int intrcnt = hldev->header.traffic_intr_cnt; - - if (!intrcnt) - intrcnt = 1; - - vpath->sw_stats->fifo_stats.common_stats.avg_compl_per_intr_cnt = - vpath->sw_stats->fifo_stats.common_stats.total_compl_cnt / intrcnt; - - if (vpath->sw_stats->fifo_stats.common_stats.avg_compl_per_intr_cnt == - 0) { - /* to not confuse user */ - vpath->sw_stats->fifo_stats.common_stats.avg_compl_per_intr_cnt = 1; - } - - vpath->sw_stats->ring_stats.common_stats.avg_compl_per_intr_cnt = - vpath->sw_stats->ring_stats.common_stats.total_compl_cnt / intrcnt; - - if (vpath->sw_stats->ring_stats.common_stats.avg_compl_per_intr_cnt == - 0) { - /* to not confuse user */ - vpath->sw_stats->ring_stats.common_stats.avg_compl_per_intr_cnt = 1; - } - } - - if (vpath->sw_stats->fifo_stats.total_posts) { - vpath->sw_stats->fifo_stats.avg_buffers_per_post = - vpath->sw_stats->fifo_stats.total_buffers / - vpath->sw_stats->fifo_stats.total_posts; - - vpath->sw_stats->fifo_stats.avg_post_size = - (u32) (vpath->hw_stats->tx_stats.tx_ttl_eth_octets / - vpath->sw_stats->fifo_stats.total_posts); - } - - if (vpath->sw_stats->fifo_stats.total_buffers) { - vpath->sw_stats->fifo_stats.avg_buffer_size = - (u32) (vpath->hw_stats->tx_stats.tx_ttl_eth_octets / - vpath->sw_stats->fifo_stats.total_buffers); - } - - vxge_os_memcpy(sw_stats, - vpath->sw_stats, - sizeof(vxge_hal_vpath_stats_sw_info_t)); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_stats_access - Get the statistics from the given location - * and offset and perform an operation - * @vpath: Virtual path. - * @operation: Operation to be performed - * @location: Location (one of vpath id, aggregate or port) - * @offset: Offset with in the location - * @stat: Pointer to a buffer to return the value - * - * Get the statistics from the given location and offset. - * - */ -vxge_hal_status_e -__hal_vpath_stats_access( - __hal_virtualpath_t *vpath, - u32 operation, - u32 offset, - u64 *stat) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status = VXGE_HAL_OK; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - val64 = VXGE_HAL_XMAC_STATS_ACCESS_CMD_OP(operation) | - VXGE_HAL_XMAC_STATS_ACCESS_CMD_STROBE | - VXGE_HAL_XMAC_STATS_ACCESS_CMD_OFFSET_SEL(offset); - - vxge_hal_pio_mem_write32_lower(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 32), - &vpath->vp_reg->xmac_stats_access_cmd); - vxge_os_wmb(); - - vxge_hal_pio_mem_write32_upper(hldev->header.pdev, - hldev->header.regh0, - (u32) bVAL32(val64, 0), - &vpath->vp_reg->xmac_stats_access_cmd); - vxge_os_wmb(); - - status = vxge_hal_device_register_poll(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->xmac_stats_access_cmd, - 0, - VXGE_HAL_XMAC_STATS_ACCESS_CMD_STROBE, - hldev->header.config.device_poll_millis); - - if ((status == VXGE_HAL_OK) && (operation == VXGE_HAL_STATS_OP_READ)) { - - *stat = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->xmac_stats_access_data); - - } else { - *stat = 0; - } - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); -} - -/* - * vxge_hal_vpath_stats_access - * Get statistics from given location and offset to perform an operation - * @vpath_handle: Virtual path handle. - * @operation: Operation to be performed - * @offset: Offset with in the location - * @stat: Pointer to a buffer to return the value - * - * Get the statistics from the given location and offset. - * - */ -vxge_hal_status_e -vxge_hal_vpath_stats_access( - vxge_hal_vpath_h vpath_handle, - u32 operation, - u32 offset, - u64 *stat) -{ - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - vxge_hal_status_e status; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "vpath_handle = 0x"VXGE_OS_STXFMT, (ptr_t) vpath_handle); - - status = __hal_vpath_stats_access(vp->vpath, - operation, - offset, - stat); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_xmac_tx_stats_get - Get the TX Statistics of a vpath - * @vpath: vpath - * @vpath_tx_stats: Buffer to return TX Statistics of vpath. - * - * Get the TX Statistics of a vpath - * - */ -vxge_hal_status_e -__hal_vpath_xmac_tx_stats_get(__hal_virtualpath_t *vpath, - vxge_hal_xmac_vpath_tx_stats_t *vpath_tx_stats) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, - __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_TTL_ETH_FRMS_OFFSET); - - vpath_tx_stats->tx_ttl_eth_frms = - VXGE_HAL_STATS_GET_VPATH_TX_TTL_ETH_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_TTL_ETH_OCTETS_OFFSET); - - vpath_tx_stats->tx_ttl_eth_octets = - VXGE_HAL_STATS_GET_VPATH_TX_TTL_ETH_OCTETS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_DATA_OCTETS_OFFSET); - - vpath_tx_stats->tx_data_octets = - VXGE_HAL_STATS_GET_VPATH_TX_DATA_OCTETS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_MCAST_FRMS_OFFSET); - - vpath_tx_stats->tx_mcast_frms = - VXGE_HAL_STATS_GET_VPATH_TX_MCAST_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_BCAST_FRMS_OFFSET); - - vpath_tx_stats->tx_bcast_frms = - VXGE_HAL_STATS_GET_VPATH_TX_BCAST_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_UCAST_FRMS_OFFSET); - - vpath_tx_stats->tx_ucast_frms = - VXGE_HAL_STATS_GET_VPATH_TX_UCAST_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_TAGGED_FRMS_OFFSET); - - vpath_tx_stats->tx_tagged_frms = - VXGE_HAL_STATS_GET_VPATH_TX_TAGGED_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_TX_VLD_IP_OFFSET); - - vpath_tx_stats->tx_vld_ip = - VXGE_HAL_STATS_GET_VPATH_TX_VLD_IP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_VLD_IP_OCTETS_OFFSET); - - vpath_tx_stats->tx_vld_ip_octets = - VXGE_HAL_STATS_GET_VPATH_TX_VLD_IP_OCTETS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_TX_ICMP_OFFSET); - - vpath_tx_stats->tx_icmp = - VXGE_HAL_STATS_GET_VPATH_TX_ICMP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_TX_TCP_OFFSET); - - vpath_tx_stats->tx_tcp = - VXGE_HAL_STATS_GET_VPATH_TX_TCP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_RST_TCP_OFFSET); - - vpath_tx_stats->tx_rst_tcp = - VXGE_HAL_STATS_GET_VPATH_TX_RST_TCP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_UDP_OFFSET); - - vpath_tx_stats->tx_udp = - VXGE_HAL_STATS_GET_VPATH_TX_UDP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_LOST_IP_OFFSET); - - vpath_tx_stats->tx_lost_ip = - (u32) VXGE_HAL_STATS_GET_VPATH_TX_LOST_IP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_UNKNOWN_PROTOCOL_OFFSET); - - vpath_tx_stats->tx_unknown_protocol = - (u32) VXGE_HAL_STATS_GET_VPATH_TX_UNKNOWN_PROTOCOL(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_PARSE_ERROR_OFFSET); - - vpath_tx_stats->tx_parse_error = - (u32) VXGE_HAL_STATS_GET_VPATH_TX_PARSE_ERROR(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_TCP_OFFLOAD_OFFSET); - - vpath_tx_stats->tx_tcp_offload = - VXGE_HAL_STATS_GET_VPATH_TX_TCP_OFFLOAD(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_RETX_TCP_OFFLOAD_OFFSET); - - vpath_tx_stats->tx_retx_tcp_offload = - VXGE_HAL_STATS_GET_VPATH_TX_RETX_TCP_OFFLOAD(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_TX_LOST_IP_OFFLOAD_OFFSET); - - vpath_tx_stats->tx_lost_ip_offload = - VXGE_HAL_STATS_GET_VPATH_TX_LOST_IP_OFFLOAD(val64); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * __hal_vpath_xmac_rx_stats_get - Get the RX Statistics of a vpath - * @vpath: vpath - * @vpath_rx_stats: Buffer to return RX Statistics of vpath. - * - * Get the RX Statistics of a vpath - * - */ -vxge_hal_status_e -__hal_vpath_xmac_rx_stats_get(__hal_virtualpath_t *vpath, - vxge_hal_xmac_vpath_rx_stats_t *vpath_rx_stats) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert(vpath != NULL); - - hldev = vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, - VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_ETH_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_eth_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_ETH_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_VLD_FRMS_OFFSET); - - vpath_rx_stats->rx_vld_frms = - VXGE_HAL_STATS_GET_VPATH_RX_VLD_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_OFFLOAD_FRMS_OFFSET); - - vpath_rx_stats->rx_offload_frms = - VXGE_HAL_STATS_GET_VPATH_RX_OFFLOAD_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_ETH_OCTETS_OFFSET); - - vpath_rx_stats->rx_ttl_eth_octets = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_ETH_OCTETS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_DATA_OCTETS_OFFSET); - - vpath_rx_stats->rx_data_octets = - VXGE_HAL_STATS_GET_VPATH_RX_DATA_OCTETS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_OFFLOAD_OCTETS_OFFSET); - - vpath_rx_stats->rx_offload_octets = - VXGE_HAL_STATS_GET_VPATH_RX_OFFLOAD_OCTETS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_VLD_MCAST_FRMS_OFFSET); - - vpath_rx_stats->rx_vld_mcast_frms = - VXGE_HAL_STATS_GET_VPATH_RX_VLD_MCAST_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_VLD_BCAST_FRMS_OFFSET); - - vpath_rx_stats->rx_vld_bcast_frms = - VXGE_HAL_STATS_GET_VPATH_RX_VLD_BCAST_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_ACC_UCAST_FRMS_OFFSET); - - vpath_rx_stats->rx_accepted_ucast_frms = - VXGE_HAL_STATS_GET_VPATH_RX_ACC_UCAST_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_ACC_NUCAST_FRMS_OFFSET); - - vpath_rx_stats->rx_accepted_nucast_frms = - VXGE_HAL_STATS_GET_VPATH_RX_ACC_NUCAST_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TAGGED_FRMS_OFFSET); - - vpath_rx_stats->rx_tagged_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TAGGED_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_LONG_FRMS_OFFSET); - - vpath_rx_stats->rx_long_frms = - VXGE_HAL_STATS_GET_VPATH_RX_LONG_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_USIZED_FRMS_OFFSET); - - vpath_rx_stats->rx_usized_frms = - VXGE_HAL_STATS_GET_VPATH_RX_USIZED_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_OSIZED_FRMS_OFFSET); - - vpath_rx_stats->rx_osized_frms = - VXGE_HAL_STATS_GET_VPATH_RX_OSIZED_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_FRAG_FRMS_OFFSET); - - vpath_rx_stats->rx_frag_frms = - VXGE_HAL_STATS_GET_VPATH_RX_FRAG_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_JABBER_FRMS_OFFSET); - - vpath_rx_stats->rx_jabber_frms = - VXGE_HAL_STATS_GET_VPATH_RX_JABBER_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_64_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_64_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_64_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_65_127_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_65_127_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_65_127_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_128_255_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_128_255_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_128_255_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_256_511_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_256_511_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_256_511_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_512_1023_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_512_1023_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_512_1023_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_1024_1518_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_1024_1518_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_1024_1518_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_1519_4095_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_1519_4095_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_1519_4095_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_4096_8191_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_4096_8191_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_4096_8191_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_8192_MAX_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_8192_max_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_8192_MAX_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_TTL_GT_MAX_FRMS_OFFSET); - - vpath_rx_stats->rx_ttl_gt_max_frms = - VXGE_HAL_STATS_GET_VPATH_RX_TTL_GT_MAX_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_IP_OFFSET); - - vpath_rx_stats->rx_ip = - VXGE_HAL_STATS_GET_VPATH_RX_IP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_ACC_IP_OFFSET); - - vpath_rx_stats->rx_accepted_ip = - VXGE_HAL_STATS_GET_VPATH_RX_ACC_IP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_IP_OCTETS_OFFSET); - - vpath_rx_stats->rx_ip_octets = - VXGE_HAL_STATS_GET_VPATH_RX_IP_OCTETS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_ERR_IP_OFFSET); - - vpath_rx_stats->rx_err_ip = - VXGE_HAL_STATS_GET_VPATH_RX_ERR_IP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_ICMP_OFFSET); - - vpath_rx_stats->rx_icmp = - VXGE_HAL_STATS_GET_VPATH_RX_ICMP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_TCP_OFFSET); - - vpath_rx_stats->rx_tcp = - VXGE_HAL_STATS_GET_VPATH_RX_TCP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_UDP_OFFSET); - - vpath_rx_stats->rx_udp = - VXGE_HAL_STATS_GET_VPATH_RX_UDP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_ERR_TCP_OFFSET); - - vpath_rx_stats->rx_err_tcp = - VXGE_HAL_STATS_GET_VPATH_RX_ERR_TCP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_LOST_FRMS_OFFSET); - - vpath_rx_stats->rx_lost_frms = - VXGE_HAL_STATS_GET_VPATH_RX_LOST_FRMS(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ(VXGE_HAL_STATS_VPATH_RX_LOST_IP_OFFSET); - - vpath_rx_stats->rx_lost_ip = - VXGE_HAL_STATS_GET_VPATH_RX_LOST_IP(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_LOST_IP_OFFLOAD_OFFSET); - - vpath_rx_stats->rx_lost_ip_offload = - VXGE_HAL_STATS_GET_VPATH_RX_LOST_IP_OFFLOAD(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_QUEUE_FULL_DISCARD_OFFSET); - - vpath_rx_stats->rx_queue_full_discard = - (u16) VXGE_HAL_STATS_GET_VPATH_RX_QUEUE_FULL_DISCARD(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_RED_DISCARD_OFFSET); - - vpath_rx_stats->rx_red_discard = - (u16) VXGE_HAL_STATS_GET_VPATH_RX_RED_DISCARD(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_SLEEP_DISCARD_OFFSET); - - vpath_rx_stats->rx_sleep_discard = - (u16) VXGE_HAL_STATS_GET_VPATH_RX_SLEEP_DISCARD(val64); - - vpath_rx_stats->rx_various_discard = - vpath_rx_stats->rx_queue_full_discard; - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_RX_MPA_OK_FRMS_OFFSET); - - vpath_rx_stats->rx_mpa_ok_frms = - VXGE_HAL_STATS_GET_VPATH_RX_MPA_OK_FRMS(val64); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: 0", - __FILE__, __func__, __LINE__); - return (VXGE_HAL_OK); -} - -/* - * vxge_hal_vpath_xmac_tx_stats_get - Get the TX Statistics of a vpath - * @vpath_handle: vpath handle. - * @vpath_tx_stats: Buffer to return TX Statistics of vpath. - * - * Get the TX Statistics of a vpath - * - */ -vxge_hal_status_e -vxge_hal_vpath_xmac_tx_stats_get(vxge_hal_vpath_h vpath_handle, - vxge_hal_xmac_vpath_tx_stats_t *vpath_tx_stats) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - status = __hal_vpath_xmac_tx_stats_get(vp->vpath, vpath_tx_stats); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_xmac_rx_stats_get - Get the RX Statistics of a vpath - * @vpath_handle: vpath handle. - * @vpath_rx_stats: Buffer to return RX Statistics of vpath. - * - * Get the RX Statistics of a vpath - * - */ -vxge_hal_status_e -vxge_hal_vpath_xmac_rx_stats_get(vxge_hal_vpath_h vpath_handle, - vxge_hal_xmac_vpath_rx_stats_t *vpath_rx_stats) -{ - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert(vpath_handle != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("vpath_handle = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - status = __hal_vpath_xmac_rx_stats_get(vp->vpath, vpath_rx_stats); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * __hal_vpath_hw_stats_get - Get the vpath hw statistics. - * @vpath: Virtual Path. - * @hw_stats: Hardware stats - * - * Returns the vpath h/w stats. - * - * See also: vxge_hal_vpath_hw_stats_enable(), - * vxge_hal_vpath_hw_stats_disable() - */ -vxge_hal_status_e -__hal_vpath_hw_stats_get(__hal_virtualpath_t *vpath, - vxge_hal_vpath_stats_hw_info_t *hw_stats) -{ - u64 val64; - __hal_device_t *hldev; - vxge_hal_status_e status; - - vxge_assert((vpath != NULL) && (hw_stats != NULL)); - - hldev = vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats( - "vpath = 0x"VXGE_OS_STXFMT", hw_stats = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath, (ptr_t) hw_stats); - - if (vpath->vp_open == VXGE_HAL_VP_NOT_OPEN) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, VXGE_HAL_ERR_VPATH_NOT_OPEN); - return (VXGE_HAL_ERR_VPATH_NOT_OPEN); - } - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_debug_stats0); - - hw_stats->ini_num_mwr_sent = - (u32) VXGE_HAL_VPATH_DEBUG_STATS0_GET_INI_NUM_MWR_SENT(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_debug_stats1); - - hw_stats->ini_num_mrd_sent = - (u32) VXGE_HAL_VPATH_DEBUG_STATS1_GET_INI_NUM_MRD_SENT(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_debug_stats2); - - hw_stats->ini_num_cpl_rcvd = - (u32) VXGE_HAL_VPATH_DEBUG_STATS2_GET_INI_NUM_CPL_RCVD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_debug_stats3); - - hw_stats->ini_num_mwr_byte_sent = - VXGE_HAL_VPATH_DEBUG_STATS3_GET_INI_NUM_MWR_BYTE_SENT(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_debug_stats4); - - hw_stats->ini_num_cpl_byte_rcvd = - VXGE_HAL_VPATH_DEBUG_STATS4_GET_INI_NUM_CPL_BYTE_RCVD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_debug_stats5); - - hw_stats->wrcrdtarb_xoff = - (u32) VXGE_HAL_VPATH_DEBUG_STATS5_GET_WRCRDTARB_XOFF(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_debug_stats6); - - hw_stats->rdcrdtarb_xoff = - (u32) VXGE_HAL_VPATH_DEBUG_STATS6_GET_RDCRDTARB_XOFF(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_genstats_count01); - - hw_stats->vpath_genstats_count0 = - (u32) VXGE_HAL_VPATH_GENSTATS_COUNT01_GET_PPIF_VPATH_GENSTATS_COUNT0( - val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_genstats_count01); - - hw_stats->vpath_genstats_count1 = - (u32) VXGE_HAL_VPATH_GENSTATS_COUNT01_GET_PPIF_VPATH_GENSTATS_COUNT1( - val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_genstats_count23); - - hw_stats->vpath_genstats_count2 = - (u32) VXGE_HAL_VPATH_GENSTATS_COUNT23_GET_PPIF_VPATH_GENSTATS_COUNT2( - val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_genstats_count01); - - hw_stats->vpath_genstats_count3 = - (u32) VXGE_HAL_VPATH_GENSTATS_COUNT23_GET_PPIF_VPATH_GENSTATS_COUNT3( - val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_genstats_count4); - - hw_stats->vpath_genstats_count4 = - (u32) VXGE_HAL_VPATH_GENSTATS_COUNT4_GET_PPIF_VPATH_GENSTATS_COUNT4( - val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->vpath_genstats_count5); - - hw_stats->vpath_genstats_count5 = (u32) - VXGE_HAL_VPATH_GENSTATS_COUNT5_GET_PPIF_VPATH_GENSTATS_COUNT5( - val64); - - status = __hal_vpath_xmac_tx_stats_get(vpath, &hw_stats->tx_stats); - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - status = __hal_vpath_xmac_rx_stats_get(vpath, &hw_stats->rx_stats); - if (status != VXGE_HAL_OK) { - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - return (status); - } - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM0_OFFSET); - - hw_stats->prog_event_vnum0 = - (u32) VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM0(val64); - - hw_stats->prog_event_vnum1 = - (u32) VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM1(val64); - - VXGE_HAL_VPATH_STATS_PIO_READ( - VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM2_OFFSET); - - hw_stats->prog_event_vnum2 = - (u32) VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM2(val64); - - hw_stats->prog_event_vnum3 = - (u32) VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM3(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rx_multi_cast_stats); - - hw_stats->rx_multi_cast_frame_discard = - (u16) VXGE_HAL_RX_MULTI_CAST_STATS_GET_FRAME_DISCARD(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rx_frm_transferred); - - hw_stats->rx_frm_transferred = - (u32) VXGE_HAL_RX_FRM_TRANSFERRED_GET_RX_FRM_TRANSFERRED(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->rxd_returned); - - hw_stats->rxd_returned = - (u16) VXGE_HAL_RXD_RETURNED_GET_RXD_RETURNED(val64); - - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->dbg_stats_rx_mpa); - - hw_stats->rx_mpa_len_fail_frms = - (u16) VXGE_HAL_DBG_STATS_GET_RX_MPA_LEN_FAIL_FRMS(val64); - hw_stats->rx_mpa_mrk_fail_frms = - (u16) VXGE_HAL_DBG_STATS_GET_RX_MPA_MRK_FAIL_FRMS(val64); - hw_stats->rx_mpa_crc_fail_frms = - (u16) VXGE_HAL_DBG_STATS_GET_RX_MPA_CRC_FAIL_FRMS(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->dbg_stats_rx_fau); - - hw_stats->rx_permitted_frms = - (u16) VXGE_HAL_DBG_STATS_GET_RX_FAU_RX_PERMITTED_FRMS(val64); - hw_stats->rx_vp_reset_discarded_frms = (u16) - VXGE_HAL_DBG_STATS_GET_RX_FAU_RX_VP_RESET_DISCARDED_FRMS(val64); - hw_stats->rx_wol_frms = - (u16) VXGE_HAL_DBG_STATS_GET_RX_FAU_RX_WOL_FRMS(val64); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tx_vp_reset_discarded_frms); - - hw_stats->tx_vp_reset_discarded_frms = (u16) - VXGE_HAL_TX_VP_RESET_DISCARDED_FRMS_GET_TX_VP_RESET_DISCARDED_FRMS( - val64); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - -/* - * vxge_hal_vpath_stats_clear - Clear all the statistics of vpath - * @vpath_handle: Virtual path handle. - * - * Clear the statistics of the given vpath. - * - */ -vxge_hal_status_e -vxge_hal_vpath_stats_clear(vxge_hal_vpath_h vpath_handle) -{ - u64 stat; - vxge_hal_status_e status; - __hal_device_t *hldev; - __hal_vpath_handle_t *vp = (__hal_vpath_handle_t *) vpath_handle; - - vxge_assert(vp != NULL); - - hldev = vp->vpath->hldev; - - vxge_hal_trace_log_stats("==> %s:%s:%d", - __FILE__, __func__, __LINE__); - - vxge_hal_trace_log_stats("vpath = 0x"VXGE_OS_STXFMT, - (ptr_t) vpath_handle); - - vxge_os_memcpy(vp->vpath->hw_stats_sav, - vp->vpath->hw_stats, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - - vxge_os_memzero(vp->vpath->hw_stats, - sizeof(vxge_hal_vpath_stats_hw_info_t)); - - vxge_os_memzero(vp->vpath->sw_stats, - sizeof(vxge_hal_vpath_stats_sw_info_t)); - - status = vxge_hal_vpath_stats_access( - vpath_handle, - VXGE_HAL_STATS_OP_CLEAR_ALL_VPATH_STATS, - 0, - &stat); - - vxge_hal_trace_log_stats("<== %s:%s:%d Result: %d", - __FILE__, __func__, __LINE__, status); - - return (status); -} - - -/* - * vxge_hal_set_fw_api - Setup FW api - * @devh: Device Handle. - * - */ -vxge_hal_status_e -vxge_hal_set_fw_api(vxge_hal_device_h devh, - u64 vp_id, u32 action, u32 offset, - u64 data0, u64 data1) -{ - vxge_hal_status_e status = VXGE_HAL_OK; - u64 val64; - u32 fw_memo = VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO; - - vxge_hal_vpath_reg_t *vp_reg; - - __hal_device_t *hldev = (__hal_device_t *) devh; - vxge_assert(hldev != NULL); - - /* Assumption: Privileged vpath is zero */ - vp_reg = hldev->vpath_reg[vp_id]; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, data0, - &vp_reg->rts_access_steer_data0); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, data1, - &vp_reg->rts_access_steer_data1); - - vxge_os_wmb(); - - val64 = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION(action) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(fw_memo) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(offset) | - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, val64, - &vp_reg->rts_access_steer_ctrl); - - vxge_os_wmb(); - - status = - vxge_hal_device_register_poll( - hldev->header.pdev, hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl, 0, - VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE, - WAIT_FACTOR * hldev->header.config.device_poll_millis); - - if (status != VXGE_HAL_OK) - return (VXGE_HAL_FAIL); - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_ctrl); - - if (val64 & VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS) - status = VXGE_HAL_OK; - else - status = VXGE_HAL_FAIL; - - return (status); -} - -/* - * vxge_hal_get_active_config - Get active configuration - * @devh: Device Handle. - * - */ -vxge_hal_status_e -vxge_hal_get_active_config(vxge_hal_device_h devh, - vxge_hal_xmac_nwif_actconfig req_config, - u64 *cur_config) -{ - u32 action; - u64 data0 = 0x0, data1 = 0x0; - u32 cmd = VXGE_HAL_XMAC_NWIF_Cmd_Get_Active_Config; - - vxge_hal_vpath_reg_t *vp_reg; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_assert(hldev != NULL); - - /* Assumption: Privileged vpath is zero */ - vp_reg = hldev->vpath_reg[0]; - - /* get port mode */ - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_SET_NWIF_CMD(cmd) | req_config; - action = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_PORT_CTRL; - - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, data1); - if (status == VXGE_HAL_OK) { - *cur_config = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_data1); - } - - return (status); -} - -/* - * vxge_hal_set_port_mode - Set dual port mode - * override the default dual port mode - * @devh: Device Handle. - * - */ -vxge_hal_status_e -vxge_hal_set_port_mode(vxge_hal_device_h devh, - vxge_hal_xmac_nwif_dp_mode port_mode) -{ - u32 action; - u64 data0 = 0x0, data1 = 0x0; - u32 cmd = VXGE_HAL_XMAC_NWIF_Cmd_SetMode; - - vxge_hal_status_e status = VXGE_HAL_OK; - - if ((port_mode < VXGE_HAL_DP_NP_MODE_DEFAULT) || - (port_mode > VXGE_HAL_DP_NP_MODE_DISABLE_PORT_MGMT)) { - - vxge_os_printf("Invalid port mode : %d\n", port_mode); - return (VXGE_HAL_ERR_INVALID_DP_MODE); - } - - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_SET_NWIF_CMD(cmd); - data1 = port_mode; - action = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_PORT_CTRL; - - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, data1); - - return (status); -} - -/* - * vxge_hal_set_port_mode - Set dual port mode - * change behavior on failure * - * @devh: Device Handle. - */ -vxge_hal_status_e -vxge_hal_set_behavior_on_failure(vxge_hal_device_h devh, - vxge_hal_xmac_nwif_behavior_on_failure behave_on_failure) -{ - u32 action; - u64 data0 = 0x0, data1 = 0x0; - u32 cmd = VXGE_HAL_XMAC_NWIF_Cmd_CfgSetBehaviourOnFailure; - vxge_hal_status_e status = VXGE_HAL_OK; - - if ((behave_on_failure < VXGE_HAL_XMAC_NWIF_OnFailure_NoMove) || - (behave_on_failure > - VXGE_HAL_XMAC_NWIF_OnFailure_OtherPortBackOnRestore)) { - vxge_os_printf("Invalid setting for failure behavior : %d\n", - behave_on_failure); - - return (VXGE_HAL_FAIL); - } - - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_SET_NWIF_CMD(cmd); - data1 = behave_on_failure; - action = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_PORT_CTRL; - - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, data1); - - return (status); -} - -vxge_hal_status_e -vxge_hal_set_l2switch_mode(vxge_hal_device_h devh, - enum vxge_hal_xmac_nwif_l2_switch_status l2_switch) -{ - u32 action; - u64 data0 = 0x0, data1 = 0x0; - u32 cmd = VXGE_HAL_XMAC_NWIF_Cmd_CfgDualPort_L2SwitchEnable; - - vxge_hal_status_e status = VXGE_HAL_OK; - - if ((l2_switch < VXGE_HAL_XMAC_NWIF_L2_SWITCH_DISABLE) || - (l2_switch > VXGE_HAL_XMAC_NWIF_L2_SWITCH_ENABLE)) { - vxge_os_printf("Invalid setting for failure behavior : %d\n", - l2_switch); - - return (VXGE_HAL_ERR_INVALID_L2_SWITCH_STATE); - } - - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_SET_NWIF_CMD(cmd); - data1 = l2_switch; - action = VXGE_HAL_RTS_ACCESS_FW_MEMO_ACTION_PRIV_NWIF; - - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, data1); - - return (status); -} - -/* Get function mode */ -vxge_hal_status_e -vxge_hal_func_mode_get(vxge_hal_device_h devh, u32 *func_mode) -{ - int vp_id; - u32 action; - u64 val64; - - vxge_hal_status_e status = VXGE_HAL_OK; - vxge_hal_vpath_reg_t *vp_reg; - - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_assert(hldev != NULL); - /* get the first vpath number assigned to this function */ - vp_id = hldev->first_vp_id; - - vp_reg = hldev->vpath_reg[vp_id]; - action = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_GET_FUNC_MODE; - - status = vxge_hal_set_fw_api(devh, vp_id, action, 0x0, 0x0, 0x0); - if (status == VXGE_HAL_OK) { - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, hldev->header.regh0, - &vp_reg->rts_access_steer_data0); - - *func_mode = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_FUNC_MODE(val64); - } - - return (status); -} - -vxge_hal_status_e -vxge_hal_func_mode_count(vxge_hal_device_h devh, u32 func_mode, u32 *num_funcs) -{ - int vp_id; - u32 action; - u64 val64, data0; - - vxge_hal_vpath_reg_t *vp_reg; - vxge_hal_status_e status = VXGE_HAL_OK; - - __hal_device_t *hldev = (__hal_device_t *) devh; - - vp_id = hldev->first_vp_id; - vp_reg = hldev->vpath_reg[0]; - - data0 = func_mode; - action = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_GET_FUNC_COUNT; - - status = vxge_hal_set_fw_api(devh, vp_id, action, 0x0, data0, 0x0); - if (status == VXGE_HAL_OK) { - - val64 = vxge_os_pio_mem_read64( - hldev->header.pdev, hldev->header.regh0, - &vp_reg->rts_access_steer_data0); - - *num_funcs = (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA0_GET_NUM_FUNC(val64); - } - - return (status); -} - -vxge_hal_status_e -vxge_hal_config_vpath_map(vxge_hal_device_h devh, u64 port_map) -{ - u32 action; - u64 data0 = 0x0, data1 = 0x0; - u32 cmd = VXGE_HAL_XMAC_NWIF_Cmd_CfgDualPort_VPathVector; - vxge_hal_status_e status = VXGE_HAL_OK; - - action = VXGE_HAL_RTS_ACCESS_FW_MEMO_ACTION_PRIV_NWIF; - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_SET_NWIF_CMD(cmd); - data1 = port_map; - - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, data1); - - return (status); -} - -vxge_hal_status_e -vxge_hal_get_vpath_mask(vxge_hal_device_h devh, - u32 vf_id, u32 * num_vp, u64 * data1) -{ - u32 action, vhn = 0; - u64 data0 = 0x0; - - vxge_hal_vpath_reg_t *vp_reg; - vxge_hal_status_e status = VXGE_HAL_OK; - - __hal_device_t *hldev = (__hal_device_t *) devh; - vp_reg = hldev->vpath_reg[0]; - - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_VFID(vf_id) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_VHN(vhn); - - action = VXGE_HAL_PRIV_VPATH_ACTION; - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, 0x0); - if (status == VXGE_HAL_OK) { - - data0 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_data0); - - *num_vp = (u32) ((data0 >> 16) & 0xFF); - *data1 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_data1); - } - - return (status); -} - -vxge_hal_status_e -vxge_hal_get_vpath_list(vxge_hal_device_h devh, u32 vf_id, - u64 *vpath_list, u32 *vpath_count) -{ - u32 i, j = 0; - u64 pos, vpath_mask; - vxge_hal_status_e status = VXGE_HAL_OK; - - *vpath_count = 0; - - status = vxge_hal_get_vpath_mask(devh, vf_id, vpath_count, &vpath_mask); - if (status == VXGE_HAL_OK) { - for (i = VXGE_HAL_VPATH_BMAP_END; - i >= VXGE_HAL_VPATH_BMAP_START; i--) { - if (bVAL1(vpath_mask, i)) { - pos = VXGE_HAL_VPATH_BMAP_END - i; - vpath_list[j] = pos; - j++; - } - } - } - - return (status); -} - -vxge_hal_status_e -vxge_hal_rx_bw_priority_set(vxge_hal_device_h devh, u64 vp_id) -{ - u64 data0 = 0x0, data1 = 0x0; - u32 action, bandwidth, priority, set = 0; - - vxge_hal_vpath_reg_t *vp_reg; - vxge_hal_status_e status = VXGE_HAL_OK; - - __hal_device_t *hldev = (__hal_device_t *) devh; - vp_reg = hldev->vpath_reg[0]; - action = VXGE_HAL_BW_CONTROL; - - bandwidth = - ((vxge_hal_device_t *) (devh))->config.vp_config[vp_id].bandwidth; - - priority = - ((vxge_hal_device_t *) (devh))->config.vp_config[vp_id].priority; - - /* - * Get bandwidth and priority settings - * and perform read-modify-write operation - */ - data0 = 1; - data0 |= vp_id << 32; - - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, data1); - if (status != VXGE_HAL_OK) - goto _exit; - - data1 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_data1); - - /* Set */ - data0 = 0; - data0 |= vp_id << 32; - - /* Rx Bandwidth */ - if (bandwidth != VXGE_HAL_VPATH_BW_LIMIT_DEFAULT) { - set = 1; - data1 &= ~VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_RX_MAX_BW(0xff); - bandwidth = (bandwidth * 256) / 10000; - data1 |= - VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_RX_MAX_BW(bandwidth); - data1 |= VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_VPATH_OR_FUNC(1); - } - - /* Priority */ - if (priority != VXGE_HAL_VPATH_PRIORITY_DEFAULT) { - set = 1; - data1 &= ~VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_RX_PRIORITY(0x7); - data1 |= - VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_RX_PRIORITY(priority); - } - - if (set == 1) - status = vxge_hal_set_fw_api(devh, 0, action, - 0x0, data0, data1); - -_exit: - return (status); -} - -vxge_hal_status_e -vxge_hal_tx_bw_priority_set(vxge_hal_device_h devh, u64 vp_id) -{ - u64 data0 = 0x0, data1 = 0x0; - u32 action, bandwidth, priority, set = 0; - - vxge_hal_vpath_reg_t *vp_reg; - vxge_hal_status_e status = VXGE_HAL_OK; - - __hal_device_t *hldev = (__hal_device_t *) devh; - vp_reg = hldev->vpath_reg[0]; - action = VXGE_HAL_BW_CONTROL; - - bandwidth = - ((vxge_hal_device_t *) (devh))->config.vp_config[vp_id].bandwidth; - - priority = - ((vxge_hal_device_t *) (devh))->config.vp_config[vp_id].priority; - - /* - * Get bandwidth and priority settings and - * perform a read-modify-write operation - */ - data0 = 1; - data0 |= vp_id << 32; - - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, data1); - if (status != VXGE_HAL_OK) - goto _exit; - - data1 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_data1); - - /* Set */ - data0 = 0; - data0 |= vp_id << 32; - - /* Tx Bandwidth */ - if (bandwidth != VXGE_HAL_VPATH_BW_LIMIT_DEFAULT) { - set = 1; - data1 &= ~VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_TX_MAX_BW(0xff); - bandwidth = (bandwidth * 256) / 10000; - data1 |= - VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_TX_MAX_BW(bandwidth); - } - - /* Priority */ - if (priority != VXGE_HAL_VPATH_PRIORITY_DEFAULT) { - set = 1; - data1 &= ~VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_TX_PRIORITY(0x7); - data1 |= - VXGE_HAL_RTS_ACCESS_STEER_DATA1_SET_TX_PRIORITY(priority); - } - - if (set == 1) - status = vxge_hal_set_fw_api(devh, 0, action, - 0x0, data0, data1); - -_exit: - return (status); -} - -vxge_hal_status_e -vxge_hal_bw_priority_get(vxge_hal_device_h devh, u64 vp_id, - u32 *bandwidth, u32 *priority) -{ - u32 action; - u64 data0 = 0x0, data1 = 0x0; - - vxge_hal_vpath_reg_t *vp_reg; - vxge_hal_status_e status = VXGE_HAL_OK; - - __hal_device_t *hldev = (__hal_device_t *) devh; - vp_reg = hldev->vpath_reg[0]; - action = VXGE_HAL_BW_CONTROL; - - /* Get rx bandwidth and rx priority settings */ - data0 = 1; - data0 |= vp_id << 32; - - status = vxge_hal_set_fw_api(devh, 0, action, 0x0, data0, data1); - if (status != VXGE_HAL_OK) - return (status); - - data1 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_data1); - - *priority = (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RX_PRIORITY(data1); - - /* - * Bandwidth setting is stored in increments of approx. 39 Mb/s - * so revert it back to get the b/w value - */ - *bandwidth = (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RX_MAX_BW(data1); - *bandwidth = ((*bandwidth) * 10000) / 256; - - return (status); -} - -vxge_hal_status_e -vxge_hal_vf_rx_bw_get(vxge_hal_device_h devh, u64 func_id, - u32 *bandwidth, u32 *priority) -{ - u32 action; - u64 data0 = 0x0, data1 = 0x0; - __hal_device_t *hldev = (__hal_device_t *) devh; - - vxge_hal_vpath_reg_t *vp_reg; - vxge_hal_status_e status = VXGE_HAL_OK; - - vp_reg = hldev->vpath_reg[func_id]; - action = VXGE_HAL_RTS_ACCESS_FW_MEMO_ACTION_NON_PRIV_BANDWIDTH_CTRL; - - /* Get rx bandwidth and rx priority settings */ - data0 = 3; - data0 |= func_id << 32; - - status = vxge_hal_set_fw_api(devh, func_id, action, 0x0, data0, data1); - if (status != VXGE_HAL_OK) - return (status); - - data1 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vp_reg->rts_access_steer_data1); - - *priority = - (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RX_PRIORITY(data1); - - /* - * Bandwidth setting is stored in increments of approx. 39 Mb/s - * so revert it back to get the b/w value - */ - *bandwidth = (u32) VXGE_HAL_RTS_ACCESS_STEER_DATA1_GET_RX_MAX_BW(data1); - *bandwidth = ((*bandwidth) * 10000) / 256; - - return (status); -} - -void -vxge_hal_vpath_dynamic_tti_rtimer_set(vxge_hal_vpath_h vpath_handle, - u32 timer_val) -{ - u64 val64, timer; - - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - hldev = vpath->hldev; - - val64 = vpath->tim_tti_cfg3_saved; - timer = (timer_val * 1000) / 272; - - val64 &= ~VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL(0x3ffffff); - if (timer) - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL(timer) | - VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_EVENT_SF(5); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg3_int_num[VXGE_HAL_VPATH_INTR_TX]); - - /* - * tti_cfg3_saved is not updated again because it is - * initialized at one place only - init time. - */ -} - -void -vxge_hal_vpath_dynamic_rti_rtimer_set(vxge_hal_vpath_h vpath_handle, - u32 timer_val) -{ - u64 val64, timer; - - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - hldev = vpath->hldev; - - val64 = vpath->tim_rti_cfg3_saved; - timer = (timer_val * 1000) / 272; - - val64 &= ~VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL(0x3ffffff); - if (timer) - val64 |= VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL(timer) | - VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_EVENT_SF(4); - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg3_int_num[VXGE_HAL_VPATH_INTR_RX]); - - /* - * rti_cfg3_saved is not updated again because it is - * initialized at one place only - init time. - */ -} - -void -vxge_hal_vpath_tti_ci_set(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - hldev = vpath->hldev; - - if (vpath->vp_config->fifo.enable == VXGE_HAL_FIFO_ENABLE) { - if (vpath->vp_config->tti.timer_ci_en != VXGE_HAL_TIM_TIMER_CI_ENABLE) { - vpath->vp_config->tti.timer_ci_en = VXGE_HAL_TIM_TIMER_CI_ENABLE; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_TX]); - - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - vpath->tim_rti_cfg1_saved = val64; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_TX]); - } - } -} - -void -vxge_hal_vpath_tti_ci_reset(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - hldev = vpath->hldev; - - if (vpath->vp_config->fifo.enable == VXGE_HAL_FIFO_ENABLE) { - if (vpath->vp_config->tti.timer_ci_en != VXGE_HAL_TIM_TIMER_CI_DISABLE) { - vpath->vp_config->tti.timer_ci_en = VXGE_HAL_TIM_TIMER_CI_DISABLE; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_TX]); - - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - vpath->tim_rti_cfg1_saved = val64; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_TX]); - } - } -} - -void -vxge_hal_vpath_rti_ci_set(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - hldev = vpath->hldev; - - if (vpath->vp_config->ring.enable == VXGE_HAL_RING_ENABLE) { - if (vpath->vp_config->rti.timer_ci_en != VXGE_HAL_TIM_TIMER_CI_ENABLE) { - vpath->vp_config->rti.timer_ci_en = VXGE_HAL_TIM_TIMER_CI_ENABLE; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_RX]); - - val64 |= VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - vpath->tim_rti_cfg1_saved = val64; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_RX]); - } - } -} - -void -vxge_hal_vpath_rti_ci_reset(vxge_hal_vpath_h vpath_handle) -{ - u64 val64; - - __hal_device_t *hldev; - __hal_virtualpath_t *vpath; - - vpath = ((__hal_vpath_handle_t *) vpath_handle)->vpath; - hldev = vpath->hldev; - - if (vpath->vp_config->ring.enable == VXGE_HAL_RING_ENABLE) { - if (vpath->vp_config->rti.timer_ci_en != VXGE_HAL_TIM_TIMER_CI_DISABLE) { - vpath->vp_config->rti.timer_ci_en = VXGE_HAL_TIM_TIMER_CI_DISABLE; - - val64 = vxge_os_pio_mem_read64(hldev->header.pdev, - hldev->header.regh0, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_RX]); - - val64 &= ~VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI; - vpath->tim_rti_cfg1_saved = val64; - - vxge_os_pio_mem_write64(hldev->header.pdev, - hldev->header.regh0, - val64, - &vpath->vp_reg->tim_cfg1_int_num[VXGE_HAL_VPATH_INTR_RX]); - } - } -} - -vxge_hal_status_e -vxge_hal_send_message(vxge_hal_device_h devh, u64 vp_id, u8 msg_type, - u8 msg_dst, u32 msg_data, u64 *msg_sent_to_vpaths) -{ - u32 action; - u64 data0 = 0x0, data1 = 0x0; - u32 attempts = VXGE_HAL_MSG_SEND_RETRY; - vxge_hal_status_e status = VXGE_HAL_OK; - - data0 = VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEND_MSG_TYPE(msg_type) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEND_MSG_DEST(msg_dst) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEND_MSG_SRC(vp_id) | - VXGE_HAL_RTS_ACCESS_STEER_DATA0_SEND_MSG_DATA(msg_data); - - action = VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION_SEND_MSG; - - do { - status = vxge_hal_set_fw_api(devh, vp_id, action, 0x0, - data0, data1); - if (status != VXGE_HAL_OK) { - attempts--; - if (attempts == 0) - return (status); - } - } while (status != VXGE_HAL_OK); - - if (msg_sent_to_vpaths != NULL) { - /* The API returns a vector of VPATHs the message - * was sent to in the event the destination is a - * broadcast message or being sent to the privileged VPATH - */ - *msg_sent_to_vpaths = data0 & VXGE_HAL_MSG_SEND_TO_VPATH_MASK; - } - - return (status); -} Index: sys/dev/vxge/vxgehal/vxgehal-vpath-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-vpath-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-vpath-reg.h @@ -1,727 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_VPATH_REGS_H -#define VXGE_HAL_VPATH_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_vpath_reg_t { - - u8 unused00300[0x00300]; - -/* 0x00300 */ u64 usdc_vpath; -#define VXGE_HAL_USDC_VPATH_SGRP_ASSIGN(val) vBIT(val, 0, 32) - u8 unused00a00[0x00a00 - 0x00308]; - -/* 0x00a00 */ u64 wrdma_alarm_status; -#define VXGE_HAL_WRDMA_ALARM_STATUS_PRC_ALARM_PRC_INT mBIT(1) -/* 0x00a08 */ u64 wrdma_alarm_mask; - u8 unused00a30[0x00a30 - 0x00a10]; - -/* 0x00a30 */ u64 prc_alarm_reg; -#define VXGE_HAL_PRC_ALARM_REG_PRC_RING_BUMP mBIT(0) -#define VXGE_HAL_PRC_ALARM_REG_PRC_RXDCM_SC_ERR mBIT(1) -#define VXGE_HAL_PRC_ALARM_REG_PRC_RXDCM_SC_ABORT mBIT(2) -#define VXGE_HAL_PRC_ALARM_REG_PRC_QUANTA_SIZE_ERR mBIT(3) -/* 0x00a38 */ u64 prc_alarm_mask; -/* 0x00a40 */ u64 prc_alarm_alarm; -/* 0x00a48 */ u64 prc_cfg1; -#define VXGE_HAL_PRC_CFG1_RX_TIMER_VAL(val) vBIT(val, 3, 29) -#define VXGE_HAL_PRC_CFG1_TIM_RING_BUMP_INT_ENABLE mBIT(34) -#define VXGE_HAL_PRC_CFG1_RTI_TINT_DISABLE mBIT(35) -#define VXGE_HAL_PRC_CFG1_GREEDY_RETURN mBIT(36) -#define VXGE_HAL_PRC_CFG1_QUICK_SHOT mBIT(37) -#define VXGE_HAL_PRC_CFG1_RX_TIMER_CI mBIT(39) -#define VXGE_HAL_PRC_CFG1_RESET_TIMER_ON_RXD_RET(val) vBIT(val, 40, 2) - u8 unused00a60[0x00a60 - 0x00a50]; - -/* 0x00a60 */ u64 prc_cfg4; -#define VXGE_HAL_PRC_CFG4_IN_SVC mBIT(7) -#define VXGE_HAL_PRC_CFG4_RING_MODE(val) vBIT(val, 14, 2) -#define VXGE_HAL_PRC_CFG4_RXD_NO_SNOOP mBIT(22) -#define VXGE_HAL_PRC_CFG4_FRM_NO_SNOOP mBIT(23) -#define VXGE_HAL_PRC_CFG4_RTH_DISABLE mBIT(31) -#define VXGE_HAL_PRC_CFG4_IGNORE_OWNERSHIP mBIT(32) -#define VXGE_HAL_PRC_CFG4_SIGNAL_BENIGN_OVFLW mBIT(36) -#define VXGE_HAL_PRC_CFG4_BIMODAL_INTERRUPT mBIT(37) -#define VXGE_HAL_PRC_CFG4_BACKOFF_INTERVAL(val) vBIT(val, 40, 24) -/* 0x00a68 */ u64 prc_cfg5; -#define VXGE_HAL_PRC_CFG5_RXD0_ADD(val) vBIT(val, 0, 61) -/* 0x00a70 */ u64 prc_cfg6; -#define VXGE_HAL_PRC_CFG6_FRM_PAD_EN mBIT(0) -#define VXGE_HAL_PRC_CFG6_QSIZE_ALIGNED_RXD mBIT(2) -#define VXGE_HAL_PRC_CFG6_DOORBELL_MODE_EN mBIT(5) -#define VXGE_HAL_PRC_CFG6_L3_CPC_TRSFR_CODE_EN mBIT(8) -#define VXGE_HAL_PRC_CFG6_L4_CPC_TRSFR_CODE_EN mBIT(9) -#define VXGE_HAL_PRC_CFG6_RXD_CRXDT(val) vBIT(val, 23, 9) -#define VXGE_HAL_PRC_CFG6_RXD_SPAT(val) vBIT(val, 36, 9) -/* 0x00a78 */ u64 prc_cfg7; -#define VXGE_HAL_PRC_CFG7_SCATTER_MODE(val) vBIT(val, 6, 2) -#define VXGE_HAL_PRC_CFG7_SMART_SCAT_EN mBIT(11) -#define VXGE_HAL_PRC_CFG7_RXD_NS_CHG_EN mBIT(12) -#define VXGE_HAL_PRC_CFG7_NO_HDR_SEPARATION mBIT(14) -#define VXGE_HAL_PRC_CFG7_RXD_BUFF_SIZE_MASK(val) vBIT(val, 20, 4) -#define VXGE_HAL_PRC_CFG7_BUFF_SIZE0_MASK(val) vBIT(val, 27, 5) -/* 0x00a80 */ u64 tim_dest_addr; -#define VXGE_HAL_TIM_DEST_ADDR_TIM_DEST_ADDR(val) vBIT(val, 0, 64) -/* 0x00a88 */ u64 prc_rxd_doorbell; -#define VXGE_HAL_PRC_RXD_DOORBELL_NEW_QW_CNT(val) vBIT(val, 48, 16) -/* 0x00a90 */ u64 rqa_prty_for_vp; -#define VXGE_HAL_RQA_PRTY_FOR_VP_RQA_PRTY_FOR_VP(val) vBIT(val, 59, 5) -/* 0x00a98 */ u64 rxdmem_size; -#define VXGE_HAL_RXDMEM_SIZE_PRC_RXDMEM_SIZE(val) vBIT(val, 51, 13) -/* 0x00aa0 */ u64 frm_in_progress_cnt; -#define VXGE_HAL_FRM_IN_PROGRESS_CNT_PRC_FRM_IN_PROGRESS_CNT(val)\ - vBIT(val, 59, 5) -/* 0x00aa8 */ u64 rx_multi_cast_stats; -#define VXGE_HAL_RX_MULTI_CAST_STATS_FRAME_DISCARD(val) vBIT(val, 48, 16) -/* 0x00ab0 */ u64 rx_frm_transferred; -#define VXGE_HAL_RX_FRM_TRANSFERRED_RX_FRM_TRANSFERRED(val) vBIT(val, 32, 32) -/* 0x00ab8 */ u64 rxd_returned; -#define VXGE_HAL_RXD_RETURNED_RXD_RETURNED(val) vBIT(val, 48, 16) - u8 unused00c00[0x00c00 - 0x00ac0]; - -/* 0x00c00 */ u64 kdfc_fifo_trpl_partition; -#define VXGE_HAL_KDFC_FIFO_TRPL_PARTITION_LENGTH_0(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_FIFO_TRPL_PARTITION_LENGTH_1(val) vBIT(val, 33, 15) -#define VXGE_HAL_KDFC_FIFO_TRPL_PARTITION_LENGTH_2(val) vBIT(val, 49, 15) -/* 0x00c08 */ u64 kdfc_fifo_trpl_ctrl; -#define VXGE_HAL_KDFC_FIFO_TRPL_CTRL_TRIPLET_ENABLE mBIT(7) -/* 0x00c10 */ u64 kdfc_trpl_fifo_0_ctrl; -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_MODE(val) vBIT(val, 14, 2) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_FLIP_EN mBIT(22) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_SWAP_EN mBIT(23) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_INT_CTRL(val) vBIT(val, 26, 2) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_CTRL_STRUC mBIT(28) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_ADD_PAD mBIT(29) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_NO_SNOOP mBIT(30) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_RLX_ORD mBIT(31) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_SELECT(val) vBIT(val, 32, 8) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_INT_NO(val) vBIT(val, 41, 7) -#define VXGE_HAL_KDFC_TRPL_FIFO_0_CTRL_BIT_MAP(val) vBIT(val, 48, 16) -/* 0x00c18 */ u64 kdfc_trpl_fifo_1_ctrl; -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_MODE(val) vBIT(val, 14, 2) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_FLIP_EN mBIT(22) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_SWAP_EN mBIT(23) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_INT_CTRL(val) vBIT(val, 26, 2) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_CTRL_STRUC mBIT(28) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_ADD_PAD mBIT(29) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_NO_SNOOP mBIT(30) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_RLX_ORD mBIT(31) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_SELECT(val) vBIT(val, 32, 8) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_INT_NO(val) vBIT(val, 41, 7) -#define VXGE_HAL_KDFC_TRPL_FIFO_1_CTRL_BIT_MAP(val) vBIT(val, 48, 16) -/* 0x00c20 */ u64 kdfc_trpl_fifo_2_ctrl; -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_FLIP_EN mBIT(22) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_SWAP_EN mBIT(23) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_INT_CTRL(val) vBIT(val, 26, 2) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_CTRL_STRUC mBIT(28) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_ADD_PAD mBIT(29) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_NO_SNOOP mBIT(30) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_RLX_ORD mBIT(31) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_SELECT(val) vBIT(val, 32, 8) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_INT_NO(val) vBIT(val, 41, 7) -#define VXGE_HAL_KDFC_TRPL_FIFO_2_CTRL_BIT_MAP(val) vBIT(val, 48, 16) -/* 0x00c28 */ u64 kdfc_trpl_fifo_0_wb_address; -#define VXGE_HAL_KDFC_TRPL_FIFO_0_WB_ADDRESS_ADD(val) vBIT(val, 0, 64) -/* 0x00c30 */ u64 kdfc_trpl_fifo_1_wb_address; -#define VXGE_HAL_KDFC_TRPL_FIFO_1_WB_ADDRESS_ADD(val) vBIT(val, 0, 64) -/* 0x00c38 */ u64 kdfc_trpl_fifo_2_wb_address; -#define VXGE_HAL_KDFC_TRPL_FIFO_2_WB_ADDRESS_ADD(val) vBIT(val, 0, 64) -/* 0x00c40 */ u64 kdfc_trpl_fifo_offset; -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_KDFC_RCTR0(val) vBIT(val, 1, 15) -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_KDFC_RCTR1(val) vBIT(val, 17, 15) -#define VXGE_HAL_KDFC_TRPL_FIFO_OFFSET_KDFC_RCTR2(val) vBIT(val, 33, 15) -/* 0x00c48 */ u64 kdfc_drbl_triplet_total; -#define VXGE_HAL_KDFC_DRBL_TRIPLET_TOTAL_KDFC_MAX_SIZE(val) vBIT(val, 17, 15) - u8 unused00c60[0x00c60 - 0x00c50]; - -/* 0x00c60 */ u64 usdc_drbl_ctrl; -#define VXGE_HAL_USDC_DRBL_CTRL_FLIP_EN mBIT(22) -#define VXGE_HAL_USDC_DRBL_CTRL_SWAP_EN mBIT(23) -/* 0x00c68 */ u64 usdc_vp_ready; -#define VXGE_HAL_USDC_VP_READY_USDC_HTN_READY mBIT(7) -#define VXGE_HAL_USDC_VP_READY_USDC_SRQ_READY mBIT(15) -#define VXGE_HAL_USDC_VP_READY_USDC_CQRQ_READY mBIT(23) -/* 0x00c70 */ u64 kdfc_status; -#define VXGE_HAL_KDFC_STATUS_KDFC_WRR_0_READY mBIT(0) -#define VXGE_HAL_KDFC_STATUS_KDFC_WRR_1_READY mBIT(1) -#define VXGE_HAL_KDFC_STATUS_KDFC_WRR_2_READY mBIT(2) - u8 unused00c80[0x00c80 - 0x00c78]; - -/* 0x00c80 */ u64 xmac_rpa_vcfg; -#define VXGE_HAL_XMAC_RPA_VCFG_IPV4_TCP_INCL_PH mBIT(3) -#define VXGE_HAL_XMAC_RPA_VCFG_IPV6_TCP_INCL_PH mBIT(7) -#define VXGE_HAL_XMAC_RPA_VCFG_IPV4_UDP_INCL_PH mBIT(11) -#define VXGE_HAL_XMAC_RPA_VCFG_IPV6_UDP_INCL_PH mBIT(15) -#define VXGE_HAL_XMAC_RPA_VCFG_L4_INCL_CF mBIT(19) -#define VXGE_HAL_XMAC_RPA_VCFG_STRIP_VLAN_TAG mBIT(23) -/* 0x00c88 */ u64 rxmac_vcfg0; -#define VXGE_HAL_RXMAC_VCFG0_RTS_MAX_FRM_LEN(val) vBIT(val, 2, 14) -#define VXGE_HAL_RXMAC_VCFG0_RTS_USE_MIN_LEN mBIT(19) -#define VXGE_HAL_RXMAC_VCFG0_RTS_MIN_FRM_LEN(val) vBIT(val, 26, 14) -#define VXGE_HAL_RXMAC_VCFG0_UCAST_ALL_ADDR_EN mBIT(43) -#define VXGE_HAL_RXMAC_VCFG0_MCAST_ALL_ADDR_EN mBIT(47) -#define VXGE_HAL_RXMAC_VCFG0_BCAST_EN mBIT(51) -#define VXGE_HAL_RXMAC_VCFG0_ALL_VID_EN mBIT(55) -/* 0x00c90 */ u64 rxmac_vcfg1; -#define VXGE_HAL_RXMAC_VCFG1_RTS_RTH_MULTI_IT_BD_MODE(val) vBIT(val, 42, 2) -#define VXGE_HAL_RXMAC_VCFG1_RTS_RTH_MULTI_IT_EN_MODE mBIT(47) -#define VXGE_HAL_RXMAC_VCFG1_CONTRIB_L2_FLOW mBIT(51) -/* 0x00c98 */ u64 rts_access_steer_ctrl; -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_ACTION(val) vBIT(val, 1, 7) -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL(val) vBIT(val, 8, 4) -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_STROBE mBIT(15) -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_BEHAV_TBL_SEL mBIT(23) -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_TABLE_SEL mBIT(27) -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_OFFSET(val) vBIT(val, 40, 8) -#define VXGE_HAL_RTS_ACCESS_STEER_CTRL_RMACJ_STATUS mBIT(0) -/* 0x00ca0 */ u64 rts_access_steer_data0; -#define VXGE_HAL_RTS_ACCESS_STEER_DATA0_DATA(val) vBIT(val, 0, 64) -/* 0x00ca8 */ u64 rts_access_steer_data1; -#define VXGE_HAL_RTS_ACCESS_STEER_DATA1_DATA(val) vBIT(val, 0, 64) - u8 unused00d00[0x00d00 - 0x00cb0]; - -/* 0x00d00 */ u64 xmac_vsport_choice; -#define VXGE_HAL_XMAC_VSPORT_CHOICE_VSPORT_NUMBER(val) vBIT(val, 3, 5) -/* 0x00d08 */ u64 xmac_stats_cfg; -/* 0x00d10 */ u64 xmac_stats_access_cmd; -#define VXGE_HAL_XMAC_STATS_ACCESS_CMD_OP(val) vBIT(val, 6, 2) -#define VXGE_HAL_XMAC_STATS_ACCESS_CMD_STROBE mBIT(15) -#define VXGE_HAL_XMAC_STATS_ACCESS_CMD_OFFSET_SEL(val) vBIT(val, 32, 8) -/* 0x00d18 */ u64 xmac_stats_access_data; -#define VXGE_HAL_XMAC_STATS_ACCESS_DATA_XSMGR_DATA(val) vBIT(val, 0, 64) -/* 0x00d20 */ u64 asic_ntwk_vp_ctrl; -#define VXGE_HAL_ASIC_NTWK_VP_CTRL_REQ_TEST_NTWK mBIT(3) -#define VXGE_HAL_ASIC_NTWK_VP_CTRL_XMACJ_SHOW_PORT_INFO mBIT(55) -#define VXGE_HAL_ASIC_NTWK_VP_CTRL_XMACJ_PORT_NUM mBIT(63) - u8 unused00d30[0x00d30 - 0x00d28]; - -/* 0x00d30 */ u64 xgmac_vp_int_status; -#define VXGE_HAL_XGMAC_VP_INT_STATUS_ASIC_NTWK_VP_ERR_INT mBIT(3) -/* 0x00d38 */ u64 xgmac_vp_int_mask; -/* 0x00d40 */ u64 asic_ntwk_vp_err_reg; -#define VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_FAULT mBIT(3) -#define VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_OK mBIT(7) -#define VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_FAULT_OCCURRED mBIT(11) -#define VXGE_HAL_ASIC_NTWK_VP_ERR_REG_SUS_OK_OCCURRED mBIT(15) -#define VXGE_HAL_ASIC_NTWK_VP_ERR_REG_REAF_FAULT mBIT(19) -#define VXGE_HAL_ASIC_NTWK_VP_ERR_REG_REAF_OK mBIT(23) -/* 0x00d48 */ u64 asic_ntwk_vp_err_mask; -/* 0x00d50 */ u64 asic_ntwk_vp_err_alarm; - u8 unused00d80[0x00d80 - 0x00d58]; - -/* 0x00d80 */ u64 rtdma_bw_ctrl; -#define VXGE_HAL_RTDMA_BW_CTRL_BW_CTRL_EN mBIT(39) -#define VXGE_HAL_RTDMA_BW_CTRL_DESIRED_BW(val) vBIT(val, 46, 18) -/* 0x00d88 */ u64 rtdma_rd_optimization_ctrl; -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_GEN_INT_AFTER_ABORT mBIT(3) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_PAD_MODE(val) vBIT(val, 6, 2) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_PAD_PATTERN(val) vBIT(val, 8, 8) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_FB_WAIT_FOR_SPACE mBIT(19) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_FB_FILL_THRESH(val)\ - vBIT(val, 21, 3) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_TXD_PYLD_WMARK_EN mBIT(28) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_TXD_PYLD_WMARK(val)\ - vBIT(val, 29, 3) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY_EN mBIT(35) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_FB_ADDR_BDRY(val) vBIT(val, 37, 3) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_TXD_WAIT_FOR_SPACE mBIT(43) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_TXD_FILL_THRESH(val)\ - vBIT(val, 51, 5) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_TXD_ADDR_BDRY_EN mBIT(59) -#define VXGE_HAL_RTDMA_RD_OPTIMIZATION_CTRL_TXD_ADDR_BDRY(val) vBIT(val, 61, 3) -/* 0x00d90 */ u64 pda_pcc_job_monitor; -#define VXGE_HAL_PDA_PCC_JOB_MONITOR_PDA_PCC_JOB_STATUS mBIT(7) -/* 0x00d98 */ u64 tx_protocol_assist_cfg; -#define VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_LSOV2_EN mBIT(6) -#define VXGE_HAL_TX_PROTOCOL_ASSIST_CFG_IPV6_KEEP_SEARCHING mBIT(7) - u8 unused01000[0x01000 - 0x00da0]; - -/* 0x01000 */ u64 tim_cfg1_int_num[4]; -#define VXGE_HAL_TIM_CFG1_INT_NUM_BTIMER_VAL(val) vBIT(val, 6, 26) -#define VXGE_HAL_TIM_CFG1_INT_NUM_BITMP_EN mBIT(35) -#define VXGE_HAL_TIM_CFG1_INT_NUM_TXFRM_CNT_EN mBIT(36) -#define VXGE_HAL_TIM_CFG1_INT_NUM_TXD_CNT_EN mBIT(37) -#define VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_AC mBIT(38) -#define VXGE_HAL_TIM_CFG1_INT_NUM_TIMER_CI mBIT(39) -#define VXGE_HAL_TIM_CFG1_INT_NUM_URNG_A(val) vBIT(val, 41, 7) -#define VXGE_HAL_TIM_CFG1_INT_NUM_URNG_B(val) vBIT(val, 49, 7) -#define VXGE_HAL_TIM_CFG1_INT_NUM_URNG_C(val) vBIT(val, 57, 7) -/* 0x01020 */ u64 tim_cfg2_int_num[4]; -#define VXGE_HAL_TIM_CFG2_INT_NUM_UEC_A(val) vBIT(val, 0, 16) -#define VXGE_HAL_TIM_CFG2_INT_NUM_UEC_B(val) vBIT(val, 16, 16) -#define VXGE_HAL_TIM_CFG2_INT_NUM_UEC_C(val) vBIT(val, 32, 16) -#define VXGE_HAL_TIM_CFG2_INT_NUM_UEC_D(val) vBIT(val, 48, 16) -/* 0x01040 */ u64 tim_cfg3_int_num[4]; -#define VXGE_HAL_TIM_CFG3_INT_NUM_TIMER_RI mBIT(0) -#define VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_EVENT_SF(val) vBIT(val, 1, 4) -#define VXGE_HAL_TIM_CFG3_INT_NUM_RTIMER_VAL(val) vBIT(val, 6, 26) -#define VXGE_HAL_TIM_CFG3_INT_NUM_UTIL_SEL(val) vBIT(val, 32, 6) -#define VXGE_HAL_TIM_CFG3_INT_NUM_LTIMER_VAL(val) vBIT(val, 38, 26) -/* 0x01060 */ u64 tim_wrkld_clc; -#define VXGE_HAL_TIM_WRKLD_CLC_WRKLD_EVAL_PRD(val) vBIT(val, 0, 32) -#define VXGE_HAL_TIM_WRKLD_CLC_WRKLD_EVAL_DIV(val) vBIT(val, 35, 5) -#define VXGE_HAL_TIM_WRKLD_CLC_CNT_FRM_BYTE mBIT(40) -#define VXGE_HAL_TIM_WRKLD_CLC_CNT_RX_TX(val) vBIT(val, 41, 2) -#define VXGE_HAL_TIM_WRKLD_CLC_CNT_LNK_EN mBIT(43) -#define VXGE_HAL_TIM_WRKLD_CLC_HOST_UTIL(val) vBIT(val, 57, 7) -/* 0x01068 */ u64 tim_bitmap; -#define VXGE_HAL_TIM_BITMAP_MASK(val) vBIT(val, 0, 32) -#define VXGE_HAL_TIM_BITMAP_LLROOT_RXD_EN mBIT(32) -#define VXGE_HAL_TIM_BITMAP_LLROOT_TXD_EN mBIT(33) -/* 0x01070 */ u64 tim_ring_assn; -#define VXGE_HAL_TIM_RING_ASSN_INT_NUM(val) vBIT(val, 6, 2) -/* 0x01078 */ u64 tim_remap; -#define VXGE_HAL_TIM_REMAP_TX_EN mBIT(5) -#define VXGE_HAL_TIM_REMAP_RX_EN mBIT(6) -#define VXGE_HAL_TIM_REMAP_OFFLOAD_EN mBIT(7) -#define VXGE_HAL_TIM_REMAP_TO_VPATH_NUM(val) vBIT(val, 11, 5) -/* 0x01080 */ u64 tim_vpath_map; -#define VXGE_HAL_TIM_VPATH_MAP_BMAP_ROOT(val) vBIT(val, 0, 32) -/* 0x01088 */ u64 tim_pci_cfg; -#define VXGE_HAL_TIM_PCI_CFG_ADD_PAD mBIT(7) -#define VXGE_HAL_TIM_PCI_CFG_NO_SNOOP mBIT(15) -#define VXGE_HAL_TIM_PCI_CFG_RELAXED mBIT(23) -#define VXGE_HAL_TIM_PCI_CFG_CTL_STR mBIT(31) - u8 unused01100[0x01100 - 0x01090]; - -/* 0x01100 */ u64 sgrp_assign; -#define VXGE_HAL_SGRP_ASSIGN_SGRP_ASSIGN(val) vBIT(val, 0, 64) -/* 0x01108 */ u64 sgrp_aoa_and_result; -#define VXGE_HAL_SGRP_AOA_AND_RESULT_PET_SGRP_AOA_AND_RESULT(val)\ - vBIT(val, 0, 64) -/* 0x01110 */ u64 rpe_pci_cfg; -#define VXGE_HAL_RPE_PCI_CFG_PAD_LRO_DATA_ENABLE mBIT(7) -#define VXGE_HAL_RPE_PCI_CFG_PAD_LRO_HDR_ENABLE mBIT(8) -#define VXGE_HAL_RPE_PCI_CFG_PAD_LRO_CQE_ENABLE mBIT(9) -#define VXGE_HAL_RPE_PCI_CFG_PAD_NONLL_CQE_ENABLE mBIT(10) -#define VXGE_HAL_RPE_PCI_CFG_PAD_BASE_LL_CQE_ENABLE mBIT(11) -#define VXGE_HAL_RPE_PCI_CFG_PAD_LL_CQE_IDATA_ENABLE mBIT(12) -#define VXGE_HAL_RPE_PCI_CFG_PAD_CQRQ_IR_ENABLE mBIT(13) -#define VXGE_HAL_RPE_PCI_CFG_PAD_CQSQ_IR_ENABLE mBIT(14) -#define VXGE_HAL_RPE_PCI_CFG_PAD_CQRR_IR_ENABLE mBIT(15) -#define VXGE_HAL_RPE_PCI_CFG_NOSNOOP_DATA mBIT(18) -#define VXGE_HAL_RPE_PCI_CFG_NOSNOOP_NONLL_CQE mBIT(19) -#define VXGE_HAL_RPE_PCI_CFG_NOSNOOP_LL_CQE mBIT(20) -#define VXGE_HAL_RPE_PCI_CFG_NOSNOOP_CQRQ_IR mBIT(21) -#define VXGE_HAL_RPE_PCI_CFG_NOSNOOP_CQSQ_IR mBIT(22) -#define VXGE_HAL_RPE_PCI_CFG_NOSNOOP_CQRR_IR mBIT(23) -#define VXGE_HAL_RPE_PCI_CFG_RELAXED_DATA mBIT(26) -#define VXGE_HAL_RPE_PCI_CFG_RELAXED_NONLL_CQE mBIT(27) -#define VXGE_HAL_RPE_PCI_CFG_RELAXED_LL_CQE mBIT(28) -#define VXGE_HAL_RPE_PCI_CFG_RELAXED_CQRQ_IR mBIT(29) -#define VXGE_HAL_RPE_PCI_CFG_RELAXED_CQSQ_IR mBIT(30) -#define VXGE_HAL_RPE_PCI_CFG_RELAXED_CQRR_IR mBIT(31) -/* 0x01118 */ u64 rpe_lro_cfg; -#define VXGE_HAL_RPE_LRO_CFG_SUPPRESS_LRO_ETH_TRLR mBIT(7) -#define VXGE_HAL_RPE_LRO_CFG_ALLOW_LRO_SNAP_SNAPJUMBO_MRG mBIT(11) -#define VXGE_HAL_RPE_LRO_CFG_ALLOW_LRO_LLC_LLCJUMBO_MRG mBIT(15) -#define VXGE_HAL_RPE_LRO_CFG_INCL_ACK_CNT_IN_CQE mBIT(23) -/* 0x01120 */ u64 pe_mr2vp_ack_blk_limit; -#define VXGE_HAL_PE_MR2VP_ACK_BLK_LIMIT_BLK_LIMIT(val) vBIT(val, 32, 32) -/* 0x01128 */ u64 pe_mr2vp_rirr_lirr_blk_limit; -#define VXGE_HAL_PE_MR2VP_RIRR_LIRR_BLK_LIMIT_RIRR_BLK_LIMIT(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_PE_MR2VP_RIRR_LIRR_BLK_LIMIT_LIRR_BLK_LIMIT(val)\ - vBIT(val, 32, 32) -/* 0x01130 */ u64 txpe_pci_nce_cfg; -#define VXGE_HAL_TXPE_PCI_NCE_CFG_NCE_THRESH(val) vBIT(val, 0, 32) -#define VXGE_HAL_TXPE_PCI_NCE_CFG_PAD_TOWI_ENABLE mBIT(55) -#define VXGE_HAL_TXPE_PCI_NCE_CFG_NOSNOOP_TOWI mBIT(63) - u8 unused01180[0x01180 - 0x01138]; - -/* 0x01180 */ u64 msg_qpad_en_cfg; -#define VXGE_HAL_MSG_QPAD_EN_CFG_UMQ_BWR_READ mBIT(3) -#define VXGE_HAL_MSG_QPAD_EN_CFG_DMQ_BWR_READ mBIT(7) -#define VXGE_HAL_MSG_QPAD_EN_CFG_MXP_GENDMA_READ mBIT(11) -#define VXGE_HAL_MSG_QPAD_EN_CFG_UXP_GENDMA_READ mBIT(15) -#define VXGE_HAL_MSG_QPAD_EN_CFG_UMQ_MSG_WRITE mBIT(19) -#define VXGE_HAL_MSG_QPAD_EN_CFG_UMQDMQ_IR_WRITE mBIT(23) -#define VXGE_HAL_MSG_QPAD_EN_CFG_MXP_GENDMA_WRITE mBIT(27) -#define VXGE_HAL_MSG_QPAD_EN_CFG_UXP_GENDMA_WRITE mBIT(31) -/* 0x01188 */ u64 msg_pci_cfg; -#define VXGE_HAL_MSG_PCI_CFG_GENDMA_NO_SNOOP mBIT(3) -#define VXGE_HAL_MSG_PCI_CFG_UMQDMQ_IR_NO_SNOOP mBIT(7) -#define VXGE_HAL_MSG_PCI_CFG_UMQ_NO_SNOOP mBIT(11) -#define VXGE_HAL_MSG_PCI_CFG_DMQ_NO_SNOOP mBIT(15) -/* 0x01190 */ u64 umqdmq_ir_init; -#define VXGE_HAL_UMQDMQ_IR_INIT_HOST_WRITE_ADD(val) vBIT(val, 0, 64) -/* 0x01198 */ u64 dmq_ir_int; -#define VXGE_HAL_DMQ_IR_INT_IMMED_ENABLE mBIT(6) -#define VXGE_HAL_DMQ_IR_INT_EVENT_ENABLE mBIT(7) -#define VXGE_HAL_DMQ_IR_INT_NUMBER(val) vBIT(val, 9, 7) -#define VXGE_HAL_DMQ_IR_INT_BITMAP(val) vBIT(val, 16, 16) -/* 0x011a0 */ u64 dmq_bwr_init_add; -#define VXGE_HAL_DMQ_BWR_INIT_ADD_HOST(val) vBIT(val, 0, 64) -/* 0x011a8 */ u64 dmq_bwr_init_byte; -#define VXGE_HAL_DMQ_BWR_INIT_BYTE_COUNT(val) vBIT(val, 0, 32) -/* 0x011b0 */ u64 dmq_ir; -#define VXGE_HAL_DMQ_IR_POLICY(val) vBIT(val, 0, 8) -/* 0x011b8 */ u64 umq_int; -#define VXGE_HAL_UMQ_INT_IMMED_ENABLE mBIT(6) -#define VXGE_HAL_UMQ_INT_EVENT_ENABLE mBIT(7) -#define VXGE_HAL_UMQ_INT_NUMBER(val) vBIT(val, 9, 7) -#define VXGE_HAL_UMQ_INT_BITMAP(val) vBIT(val, 16, 16) -/* 0x011c0 */ u64 umq_mr2vp_bwr_pfch_init; -#define VXGE_HAL_UMQ_MR2VP_BWR_PFCH_INIT_NUMBER(val) vBIT(val, 0, 8) -/* 0x011c8 */ u64 umq_bwr_pfch_ctrl; -#define VXGE_HAL_UMQ_BWR_PFCH_CTRL_POLL_EN mBIT(3) -/* 0x011d0 */ u64 umq_mr2vp_bwr_eol; -#define VXGE_HAL_UMQ_MR2VP_BWR_EOL_POLL_LATENCY(val) vBIT(val, 32, 32) -/* 0x011d8 */ u64 umq_bwr_init_add; -#define VXGE_HAL_UMQ_BWR_INIT_ADD_HOST(val) vBIT(val, 0, 64) -/* 0x011e0 */ u64 umq_bwr_init_byte; -#define VXGE_HAL_UMQ_BWR_INIT_BYTE_COUNT(val) vBIT(val, 0, 32) -/* 0x011e8 */ u64 gendma_int; -#define VXGE_HAL_GENDMA_INT_IMMED_ENABLE mBIT(6) -#define VXGE_HAL_GENDMA_INT_EVENT_ENABLE mBIT(7) -#define VXGE_HAL_GENDMA_INT_NUMBER(val) vBIT(val, 9, 7) -#define VXGE_HAL_GENDMA_INT_BITMAP(val) vBIT(val, 16, 16) -/* 0x011f0 */ u64 umqdmq_ir_init_notify; -#define VXGE_HAL_UMQDMQ_IR_INIT_NOTIFY_PULSE mBIT(3) -/* 0x011f8 */ u64 dmq_init_notify; -#define VXGE_HAL_DMQ_INIT_NOTIFY_PULSE mBIT(3) -/* 0x01200 */ u64 umq_init_notify; -#define VXGE_HAL_UMQ_INIT_NOTIFY_PULSE mBIT(3) - u8 unused01380[0x01380 - 0x01208]; - -/* 0x01380 */ u64 tpa_cfg; -#define VXGE_HAL_TPA_CFG_IGNORE_FRAME_ERR mBIT(3) -#define VXGE_HAL_TPA_CFG_IPV6_STOP_SEARCHING mBIT(7) -#define VXGE_HAL_TPA_CFG_L4_PSHDR_PRESENT mBIT(11) -#define VXGE_HAL_TPA_CFG_SUPPORT_MOBILE_IPV6_HDRS mBIT(15) - u8 unused01400[0x01400 - 0x01388]; - -/* 0x01400 */ u64 tx_vp_reset_discarded_frms; -#define VXGE_HAL_TX_VP_RESET_DISCARDED_FRMS_TX_VP_RESET_DISCARDED_FRMS(val)\ - vBIT(val, 48, 16) - u8 unused01480[0x01480 - 0x01408]; - -/* 0x01480 */ u64 fau_rpa_vcfg; -#define VXGE_HAL_FAU_RPA_VCFG_L4_COMP_CSUM mBIT(7) -#define VXGE_HAL_FAU_RPA_VCFG_L3_INCL_CF mBIT(11) -#define VXGE_HAL_FAU_RPA_VCFG_L3_COMP_CSUM mBIT(15) - u8 unused014a8[0x014a8 - 0x01488]; - -/* 0x014a8 */ u64 fau_adaptive_lro_filter_ctrl; -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_CTRL_IP_FILTER_EN mBIT(0) -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_CTRL_IP_MODE mBIT(1) -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_CTRL_VLAN_FILTER_EN mBIT(2) -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_CTRL_IPV4_ADDRESS_A_EN mBIT(3) -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_CTRL_IPV4_ADDRESS_B_EN mBIT(4) -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_CTRL_IPV4_ADDRESS_C_EN mBIT(5) -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_CTRL_IPV4_ADDRESS_D_EN mBIT(6) -/* 0x014b0 */ u64 fau_adaptive_lro_filter_ip_data0; -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_IP_DATA0_DATA(val) vBIT(val, 0, 64) -/* 0x014b8 */ u64 fau_adaptive_lro_filter_ip_data1; -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_IP_DATA1_DATA(val) vBIT(val, 0, 64) -/* 0x014c0 */ u64 fau_adaptive_lro_filter_vlan_data; -#define VXGE_HAL_FAU_ADAPTIVE_LRO_FILTER_VLAN_DATA_VLAN_VID(val)\ - vBIT(val, 0, 12) - u8 unused014d0[0x014d0 - 0x014c8]; - -/* 0x014d0 */ u64 dbg_stats_rx_mpa; -#define VXGE_HAL_DBG_STATS_RX_MPA_CRC_FAIL_FRMS(val) vBIT(val, 0, 16) -#define VXGE_HAL_DBG_STATS_RX_MPA_MRK_FAIL_FRMS(val) vBIT(val, 16, 16) -#define VXGE_HAL_DBG_STATS_RX_MPA_LEN_FAIL_FRMS(val) vBIT(val, 32, 16) -/* 0x014d8 */ u64 dbg_stats_rx_fau; -#define VXGE_HAL_DBG_STATS_RX_FAU_RX_WOL_FRMS(val) vBIT(val, 0, 16) -#define VXGE_HAL_DBG_STATS_RX_FAU_RX_VP_RESET_DISCARDED_FRMS(val)\ - vBIT(val, 16, 16) -#define VXGE_HAL_DBG_STATS_RX_FAU_RX_PERMITTED_FRMS(val) vBIT(val, 32, 32) - u8 unused014f0[0x014f0 - 0x014e0]; - -/* 0x014f0 */ u64 fbmc_vp_rdy; -#define VXGE_HAL_FBMC_VP_RDY_QUEUE_SPAV_FM mBIT(0) - u8 unused01e00[0x01e00 - 0x014f8]; - -/* 0x01e00 */ u64 vpath_pcipif_int_status; -#define VXGE_HAL_VPATH_PCIPIF_INT_STATUS_SRPCIM_MSG_TO_VPATH_INT mBIT(3) -#define VXGE_HAL_VPATH_PCIPIF_INT_STATUS_VPATH_SPARE_R1_INT mBIT(7) -/* 0x01e08 */ u64 vpath_pcipif_int_mask; - u8 unused01e20[0x01e20 - 0x01e10]; - -/* 0x01e20 */ u64 srpcim_msg_to_vpath_reg; -#define VXGE_HAL_SRPCIM_MSG_TO_VPATH_REG_INT mBIT(3) -/* 0x01e28 */ u64 srpcim_msg_to_vpath_mask; -/* 0x01e30 */ u64 srpcim_msg_to_vpath_alarm; - u8 unused01ea0[0x01ea0 - 0x01e38]; - -/* 0x01ea0 */ u64 vpath_to_srpcim_wmsg; -#define VXGE_HAL_VPATH_TO_SRPCIM_WMSG_WMSG(val) vBIT(val, 0, 64) -/* 0x01ea8 */ u64 vpath_to_srpcim_wmsg_trig; -#define VXGE_HAL_VPATH_TO_SRPCIM_WMSG_TRIG mBIT(0) - u8 unused02000[0x02000 - 0x01eb0]; - -/* 0x02000 */ u64 vpath_general_int_status; -#define VXGE_HAL_VPATH_GENERAL_INT_STATUS_PIC_INT mBIT(3) -#define VXGE_HAL_VPATH_GENERAL_INT_STATUS_PCI_INT mBIT(7) -#define VXGE_HAL_VPATH_GENERAL_INT_STATUS_WRDMA_INT mBIT(15) -#define VXGE_HAL_VPATH_GENERAL_INT_STATUS_XMAC_INT mBIT(19) -/* 0x02008 */ u64 vpath_general_int_mask; -#define VXGE_HAL_VPATH_GENERAL_INT_MASK_PIC_INT mBIT(3) -#define VXGE_HAL_VPATH_GENERAL_INT_MASK_PCI_INT mBIT(7) -#define VXGE_HAL_VPATH_GENERAL_INT_MASK_WRDMA_INT mBIT(15) -#define VXGE_HAL_VPATH_GENERAL_INT_MASK_XMAC_INT mBIT(19) -/* 0x02010 */ u64 vpath_ppif_int_status; -#define VXGE_HAL_VPATH_PPIF_INT_STATUS_KDFCCTL_ERRORS_INT mBIT(3) -#define VXGE_HAL_VPATH_PPIF_INT_STATUS_GENERAL_ERRORS_INT mBIT(7) -#define VXGE_HAL_VPATH_PPIF_INT_STATUS_PCI_CONFIG_ERRORS_INT mBIT(11) -#define VXGE_HAL_VPATH_PPIF_INT_STATUS_MRPCIM_TO_VPATH_ALARM_INT mBIT(15) -#define VXGE_HAL_VPATH_PPIF_INT_STATUS_SRPCIM_TO_VPATH_ALARM_INT mBIT(19) -/* 0x02018 */ u64 vpath_ppif_int_mask; -/* 0x02020 */ u64 kdfcctl_errors_reg; -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_OVRWR mBIT(3) -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_OVRWR mBIT(7) -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_OVRWR mBIT(11) -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_POISON mBIT(15) -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_POISON mBIT(19) -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_POISON mBIT(23) -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO0_DMA_ERR mBIT(31) -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_DMA_ERR mBIT(35) -#define VXGE_HAL_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_DMA_ERR mBIT(39) -/* 0x02028 */ u64 kdfcctl_errors_mask; -/* 0x02030 */ u64 kdfcctl_errors_alarm; - u8 unused02040[0x02040 - 0x02038]; - -/* 0x02040 */ u64 general_errors_reg; -#define VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO0_OVRFLOW mBIT(3) -#define VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO1_OVRFLOW mBIT(7) -#define VXGE_HAL_GENERAL_ERRORS_REG_DBLGEN_FIFO2_OVRFLOW mBIT(11) -#define VXGE_HAL_GENERAL_ERRORS_REG_STATSB_PIF_CHAIN_ERR mBIT(15) -#define VXGE_HAL_GENERAL_ERRORS_REG_STATSB_DROP_TIMEOUT mBIT(19) -#define VXGE_HAL_GENERAL_ERRORS_REG_TGT_ILLEGAL_ACCESS mBIT(27) -#define VXGE_HAL_GENERAL_ERRORS_REG_INI_SERR_DET mBIT(31) -/* 0x02048 */ u64 general_errors_mask; -/* 0x02050 */ u64 general_errors_alarm; -/* 0x02058 */ u64 pci_config_errors_reg; -#define VXGE_HAL_PCI_CONFIG_ERRORS_REG_STATUS_ERR mBIT(3) -#define VXGE_HAL_PCI_CONFIG_ERRORS_REG_UNCOR_ERR mBIT(7) -#define VXGE_HAL_PCI_CONFIG_ERRORS_REG_COR_ERR mBIT(11) -/* 0x02060 */ u64 pci_config_errors_mask; -/* 0x02068 */ u64 pci_config_errors_alarm; -/* 0x02070 */ u64 mrpcim_to_vpath_alarm_reg; -#define VXGE_HAL_MRPCIM_TO_VPATH_ALARM_REG_ALARM mBIT(3) -/* 0x02078 */ u64 mrpcim_to_vpath_alarm_mask; -/* 0x02080 */ u64 mrpcim_to_vpath_alarm_alarm; -/* 0x02088 */ u64 srpcim_to_vpath_alarm_reg; -#define VXGE_HAL_SRPCIM_TO_VPATH_ALARM_REG_PPIF_ALARM(val) vBIT(val, 0, 17) -/* 0x02090 */ u64 srpcim_to_vpath_alarm_mask; -/* 0x02098 */ u64 srpcim_to_vpath_alarm_alarm; - u8 unused02108[0x02108 - 0x020a0]; - -/* 0x02108 */ u64 kdfcctl_status; -#define VXGE_HAL_KDFCCTL_STATUS_KDFCCTL_FIFO0_PRES(val) vBIT(val, 0, 8) -#define VXGE_HAL_KDFCCTL_STATUS_KDFCCTL_FIFO1_PRES(val) vBIT(val, 8, 8) -#define VXGE_HAL_KDFCCTL_STATUS_KDFCCTL_FIFO2_PRES(val) vBIT(val, 16, 8) -#define VXGE_HAL_KDFCCTL_STATUS_KDFCCTL_FIFO0_OVRWR(val) vBIT(val, 24, 8) -#define VXGE_HAL_KDFCCTL_STATUS_KDFCCTL_FIFO1_OVRWR(val) vBIT(val, 32, 8) -#define VXGE_HAL_KDFCCTL_STATUS_KDFCCTL_FIFO2_OVRWR(val) vBIT(val, 40, 8) -/* 0x02110 */ u64 rsthdlr_status; -#define VXGE_HAL_RSTHDLR_STATUS_RSTHDLR_CURRENT_RESET mBIT(3) -#define VXGE_HAL_RSTHDLR_STATUS_RSTHDLR_CURRENT_VPIN(val) vBIT(val, 6, 2) -/* 0x02118 */ u64 fifo0_status; -#define VXGE_HAL_FIFO0_STATUS_DBLGEN_FIFO0_RDIDX(val) vBIT(val, 0, 12) -/* 0x02120 */ u64 fifo1_status; -#define VXGE_HAL_FIFO1_STATUS_DBLGEN_FIFO1_RDIDX(val) vBIT(val, 0, 12) -/* 0x02128 */ u64 fifo2_status; -#define VXGE_HAL_FIFO2_STATUS_DBLGEN_FIFO2_RDIDX(val) vBIT(val, 0, 12) - u8 unused02158[0x02158 - 0x02130]; - -/* 0x02158 */ u64 tgt_illegal_access; -#define VXGE_HAL_TGT_ILLEGAL_ACCESS_SWIF_REGION(val) vBIT(val, 1, 7) - u8 unused02200[0x02200 - 0x02160]; - -/* 0x02200 */ u64 vpath_general_cfg1; -#define VXGE_HAL_VPATH_GENERAL_CFG1_TC_VALUE(val) vBIT(val, 1, 3) -#define VXGE_HAL_VPATH_GENERAL_CFG1_DATA_BYTE_SWAPEN mBIT(7) -#define VXGE_HAL_VPATH_GENERAL_CFG1_DATA_FLIPEN mBIT(11) -#define VXGE_HAL_VPATH_GENERAL_CFG1_CTL_BYTE_SWAPEN mBIT(15) -#define VXGE_HAL_VPATH_GENERAL_CFG1_CTL_FLIPEN mBIT(23) -#define VXGE_HAL_VPATH_GENERAL_CFG1_MSIX_ADDR_SWAPEN mBIT(51) -#define VXGE_HAL_VPATH_GENERAL_CFG1_MSIX_ADDR_FLIPEN mBIT(55) -#define VXGE_HAL_VPATH_GENERAL_CFG1_MSIX_DATA_SWAPEN mBIT(59) -#define VXGE_HAL_VPATH_GENERAL_CFG1_MSIX_DATA_FLIPEN mBIT(63) -/* 0x02208 */ u64 vpath_general_cfg2; -#define VXGE_HAL_VPATH_GENERAL_CFG2_SIZE_QUANTUM(val) vBIT(val, 1, 3) -/* 0x02210 */ u64 vpath_general_cfg3; -#define VXGE_HAL_VPATH_GENERAL_CFG3_IGNORE_VPATH_RST_FOR_INTA mBIT(3) - u8 unused02220[0x02220 - 0x02218]; - -/* 0x02220 */ u64 kdfcctl_cfg0; -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO0 mBIT(1) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO1 mBIT(2) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_SWAPEN_FIFO2 mBIT(3) -#define VXGE_HAL_KDFCCTL_CFG0_BIT_FLIPEN_FIFO0 mBIT(5) -#define VXGE_HAL_KDFCCTL_CFG0_BIT_FLIPEN_FIFO1 mBIT(6) -#define VXGE_HAL_KDFCCTL_CFG0_BIT_FLIPEN_FIFO2 mBIT(7) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE0_FIFO0 mBIT(9) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE0_FIFO1 mBIT(10) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE0_FIFO2 mBIT(11) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE1_FIFO0 mBIT(13) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE1_FIFO1 mBIT(14) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE1_FIFO2 mBIT(15) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE2_FIFO0 mBIT(17) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE2_FIFO1 mBIT(18) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE2_FIFO2 mBIT(19) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE3_FIFO0 mBIT(21) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE3_FIFO1 mBIT(22) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE3_FIFO2 mBIT(23) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE4_FIFO0 mBIT(25) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE4_FIFO1 mBIT(26) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE4_FIFO2 mBIT(27) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE5_FIFO0 mBIT(29) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE5_FIFO1 mBIT(30) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE5_FIFO2 mBIT(31) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE6_FIFO0 mBIT(33) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE6_FIFO1 mBIT(34) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE6_FIFO2 mBIT(35) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE7_FIFO0 mBIT(37) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE7_FIFO1 mBIT(38) -#define VXGE_HAL_KDFCCTL_CFG0_BYTE_MASK_BYTE7_FIFO2 mBIT(39) -/* 0x02228 */ u64 dblgen_cfg0; -#define VXGE_HAL_DBLGEN_CFG0_NO_OF_QWORDS(val) vBIT(val, 0, 12) -#define VXGE_HAL_DBLGEN_CFG0_EN_DMA mBIT(15) -#define VXGE_HAL_DBLGEN_CFG0_NO_SNOOP mBIT(19) -#define VXGE_HAL_DBLGEN_CFG0_RELAX_ORD mBIT(23) -#define VXGE_HAL_DBLGEN_CFG0_RD_SPLIT_ON_ADDR mBIT(27) -/* 0x02230 */ u64 dblgen_cfg1; -#define VXGE_HAL_DBLGEN_CFG1_FIFO0_BUFFER_START_ADDR(val) vBIT(val, 0, 64) -/* 0x02238 */ u64 dblgen_cfg2; -#define VXGE_HAL_DBLGEN_CFG2_FIFO1_BUFFER_START_ADDR(val) vBIT(val, 0, 64) -/* 0x02240 */ u64 dblgen_cfg3; -#define VXGE_HAL_DBLGEN_CFG3_FIFO2_BUFFER_START_ADDR(val) vBIT(val, 0, 64) -/* 0x02248 */ u64 dblgen_cfg4; -#define VXGE_HAL_DBLGEN_CFG4_TRIPLET_PRIORITY_VP_NUMBER(val) vBIT(val, 3, 5) -/* 0x02250 */ u64 dblgen_cfg5; -#define VXGE_HAL_DBLGEN_CFG5_FIFO0_WRIDX(val) vBIT(val, 0, 12) -/* 0x02258 */ u64 dblgen_cfg6; -#define VXGE_HAL_DBLGEN_CFG6_FIFO1_WRIDX(val) vBIT(val, 0, 12) -/* 0x02260 */ u64 dblgen_cfg7; -#define VXGE_HAL_DBLGEN_CFG7_FIFO2_WRIDX(val) vBIT(val, 0, 12) -/* 0x02268 */ u64 stats_cfg; -#define VXGE_HAL_STATS_CFG_START_HOST_ADDR(val) vBIT(val, 0, 57) -/* 0x02270 */ u64 interrupt_cfg0; -#define VXGE_HAL_INTERRUPT_CFG0_MSIX_FOR_RXTI(val) vBIT(val, 1, 7) -#define VXGE_HAL_INTERRUPT_CFG0_GROUP0_MSIX_FOR_TXTI(val) vBIT(val, 9, 7) -#define VXGE_HAL_INTERRUPT_CFG0_GROUP1_MSIX_FOR_TXTI(val) vBIT(val, 17, 7) -#define VXGE_HAL_INTERRUPT_CFG0_GROUP2_MSIX_FOR_TXTI(val) vBIT(val, 25, 7) -#define VXGE_HAL_INTERRUPT_CFG0_GROUP3_MSIX_FOR_TXTI(val) vBIT(val, 33, 7) - u8 unused02280[0x02280 - 0x02278]; - -/* 0x02280 */ u64 interrupt_cfg2; -#define VXGE_HAL_INTERRUPT_CFG2_ALARM_MAP_TO_MSG(val) vBIT(val, 1, 7) -/* 0x02288 */ u64 one_shot_vect0_en; -#define VXGE_HAL_ONE_SHOT_VECT0_EN_ONE_SHOT_VECT0_EN mBIT(3) -/* 0x02290 */ u64 one_shot_vect1_en; -#define VXGE_HAL_ONE_SHOT_VECT1_EN_ONE_SHOT_VECT1_EN mBIT(3) -/* 0x02298 */ u64 one_shot_vect2_en; -#define VXGE_HAL_ONE_SHOT_VECT2_EN_ONE_SHOT_VECT2_EN mBIT(3) -/* 0x022a0 */ u64 one_shot_vect3_en; -#define VXGE_HAL_ONE_SHOT_VECT3_EN_ONE_SHOT_VECT3_EN mBIT(3) - u8 unused022b0[0x022b0 - 0x022a8]; - -/* 0x022b0 */ u64 pci_config_access_cfg1; -#define VXGE_HAL_PCI_CONFIG_ACCESS_CFG1_ADDRESS(val) vBIT(val, 0, 12) -#define VXGE_HAL_PCI_CONFIG_ACCESS_CFG1_SEL_FUNC0 mBIT(15) -/* 0x022b8 */ u64 pci_config_access_cfg2; -#define VXGE_HAL_PCI_CONFIG_ACCESS_CFG2_REQ mBIT(0) -/* 0x022c0 */ u64 pci_config_access_status; -#define VXGE_HAL_PCI_CONFIG_ACCESS_STATUS_ACCESS_ERR mBIT(0) -#define VXGE_HAL_PCI_CONFIG_ACCESS_STATUS_DATA(val) vBIT(val, 32, 32) - u8 unused02300[0x02300 - 0x022c8]; - -/* 0x02300 */ u64 vpath_debug_stats0; -#define VXGE_HAL_VPATH_DEBUG_STATS0_INI_NUM_MWR_SENT(val) vBIT(val, 0, 32) -/* 0x02308 */ u64 vpath_debug_stats1; -#define VXGE_HAL_VPATH_DEBUG_STATS1_INI_NUM_MRD_SENT(val) vBIT(val, 0, 32) -/* 0x02310 */ u64 vpath_debug_stats2; -#define VXGE_HAL_VPATH_DEBUG_STATS2_INI_NUM_CPL_RCVD(val) vBIT(val, 0, 32) -/* 0x02318 */ u64 vpath_debug_stats3; -#define VXGE_HAL_VPATH_DEBUG_STATS3_INI_NUM_MWR_BYTE_SENT(val) vBIT(val, 0, 64) -/* 0x02320 */ u64 vpath_debug_stats4; -#define VXGE_HAL_VPATH_DEBUG_STATS4_INI_NUM_CPL_BYTE_RCVD(val) vBIT(val, 0, 64) -/* 0x02328 */ u64 vpath_debug_stats5; -#define VXGE_HAL_VPATH_DEBUG_STATS5_WRCRDTARB_XOFF(val) vBIT(val, 32, 32) -/* 0x02330 */ u64 vpath_debug_stats6; -#define VXGE_HAL_VPATH_DEBUG_STATS6_RDCRDTARB_XOFF(val) vBIT(val, 32, 32) -/* 0x02338 */ u64 vpath_genstats_count01; -#define VXGE_HAL_VPATH_GENSTATS_COUNT01_PPIF_VPATH_GENSTATS_COUNT1(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_VPATH_GENSTATS_COUNT01_PPIF_VPATH_GENSTATS_COUNT0(val)\ - vBIT(val, 32, 32) -/* 0x02340 */ u64 vpath_genstats_count23; -#define VXGE_HAL_VPATH_GENSTATS_COUNT23_PPIF_VPATH_GENSTATS_COUNT3(val)\ - vBIT(val, 0, 32) -#define VXGE_HAL_VPATH_GENSTATS_COUNT23_PPIF_VPATH_GENSTATS_COUNT2(val)\ - vBIT(val, 32, 32) -/* 0x02348 */ u64 vpath_genstats_count4; -#define VXGE_HAL_VPATH_GENSTATS_COUNT4_PPIF_VPATH_GENSTATS_COUNT4(val)\ - vBIT(val, 32, 32) -/* 0x02350 */ u64 vpath_genstats_count5; -#define VXGE_HAL_VPATH_GENSTATS_COUNT5_PPIF_VPATH_GENSTATS_COUNT5(val)\ - vBIT(val, 32, 32) - u8 unused02540[0x02540 - 0x02358]; - -/* 0x02540 */ u64 qcc_pci_cfg; -#define VXGE_HAL_QCC_PCI_CFG_ADD_PAD_CQE_SPACE mBIT(5) -#define VXGE_HAL_QCC_PCI_CFG_ADD_PAD_WQE mBIT(6) -#define VXGE_HAL_QCC_PCI_CFG_ADD_PAD_SRQIR mBIT(7) -#define VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_CQE_SPACE mBIT(13) -#define VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_WQE mBIT(14) -#define VXGE_HAL_QCC_PCI_CFG_NO_SNOOP_SRQIR mBIT(15) -#define VXGE_HAL_QCC_PCI_CFG_RELAXED_SRQIR mBIT(23) -#define VXGE_HAL_QCC_PCI_CFG_CTL_STR_CQE_SPACE mBIT(29) -#define VXGE_HAL_QCC_PCI_CFG_CTL_STR_WQE mBIT(30) -#define VXGE_HAL_QCC_PCI_CFG_CTL_STR_SRQIR mBIT(31) - u8 unused02600[0x02600 - 0x02548]; - -/* 0x02600 */ u64 h2l_vpath_config; -#define VXGE_HAL_H2L_VPATH_CONFIG_OD_PAD_ENABLE mBIT(7) -#define VXGE_HAL_H2L_VPATH_CONFIG_OD_NO_SNOOP mBIT(15) -/* 0x02608 */ u64 h2l_zero_byte_read_address; -#define VXGE_HAL_H2L_ZERO_BYTE_READ_ADDRESS_H2L_ZERO_BYTE_READ_ADDRESS(val)\ - vBIT(val, 0, 64) - u8 unused02640[0x02640 - 0x02610]; - -/* 0x02640 */ u64 ph2l_vp_cfg0; -#define VXGE_HAL_PH2L_VP_CFG0_NOSNOOP_DATA mBIT(7) - -} vxge_hal_vpath_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_VPATH_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal-vpmgmt-reg.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal-vpmgmt-reg.h +++ sys/dev/vxge/vxgehal/vxgehal-vpmgmt-reg.h @@ -1,248 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_VPMGMT_REGS_H -#define VXGE_HAL_VPMGMT_REGS_H - -__EXTERN_BEGIN_DECLS - -typedef struct vxge_hal_vpmgmt_reg_t { - -/* 0x00000 */ u64 one_cfg_sr_rdy; -#define VXGE_HAL_ONE_CFG_SR_RDY_ONE_CFG_SR_RDY mBIT(7) -/* 0x00008 */ u64 sgrp_own; -#define VXGE_HAL_SGRP_OWN_SGRP_OWN(val) vBIT(val, 0, 64) - u8 unused00040[0x00040 - 0x00010]; - -/* 0x00040 */ u64 vpath_to_func_map_cfg1; -#define VXGE_HAL_VPATH_TO_FUNC_MAP_CFG1_VPATH_TO_FUNC_MAP_CFG1(val)\ - vBIT(val, 3, 5) -/* 0x00048 */ u64 vpath_is_first; -#define VXGE_HAL_VPATH_IS_FIRST_VPATH_IS_FIRST mBIT(3) -/* 0x00050 */ u64 srpcim_to_vpath_wmsg; -#define VXGE_HAL_SRPCIM_TO_VPATH_WMSG_SRPCIM_TO_VPATH_WMSG(val)\ - vBIT(val, 0, 64) -/* 0x00058 */ u64 srpcim_to_vpath_wmsg_trig; -#define VXGE_HAL_SRPCIM_TO_VPATH_WMSG_TRIG_TRIG mBIT(0) - u8 unused00100[0x00100 - 0x00060]; - -/* 0x00100 */ u64 tim_vpath_assignment; -#define VXGE_HAL_TIM_VPATH_ASSIGNMENT_BMAP_ROOT(val) vBIT(val, 0, 32) - u8 unused00140[0x00140 - 0x00108]; - -/* 0x00140 */ u64 rqa_top_prty_for_vp; -#define VXGE_HAL_RQA_TOP_PRTY_FOR_VP_RQA_TOP_PRTY_FOR_VP(val) vBIT(val, 59, 5) - u8 unused00180[0x00180 - 0x00148]; - -/* 0x00180 */ u64 usdc_vpath_own; -#define VXGE_HAL_USDC_VPATH_OWN_SGRP_OWN(val) vBIT(val, 0, 32) - u8 unused001c0[0x001c0 - 0x00188]; - -/* 0x001c0 */ u64 rxmac_rx_pa_cfg0_vpmgmt_clone; -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_IGNORE_FRAME_ERR mBIT(3) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_SUPPORT_SNAP_AB_N mBIT(7) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_SEARCH_FOR_HAO mBIT(18) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_SUPPORT_MOBILE_IPV6_HDRS\ - mBIT(19) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_IPV6_STOP_SEARCHING mBIT(23) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_NO_PS_IF_UNKNOWN mBIT(27) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_SEARCH_FOR_ETYPE mBIT(35) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_TOSS_ANY_FRM_IF_L3_CSUM_ERR\ - mBIT(39) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_TOSS_OFFLD_FRM_IF_L3_CSUM_ERR\ - mBIT(43) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_TOSS_ANY_FRM_IF_L4_CSUM_ERR\ - mBIT(47) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_TOSS_OFFLD_FRM_IF_L4_CSUM_ERR\ - mBIT(51) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_TOSS_ANY_FRM_IF_RPA_ERR\ - mBIT(55) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_TOSS_OFFLD_FRM_IF_RPA_ERR\ - mBIT(59) -#define VXGE_HAL_RXMAC_RX_PA_CFG0_VPMGMT_CLONE_JUMBO_SNAP_EN mBIT(63) -/* 0x001c8 */ u64 rts_mgr_cfg0_vpmgmt_clone; -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_RTS_DP_SP_PRIORITY mBIT(3) -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_FLEX_L4PRTCL_VALUE(val)\ - vBIT(val, 24, 8) -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_ICMP_TRASH mBIT(35) -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_TCPSYN_TRASH mBIT(39) -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_ZL4PYLD_TRASH mBIT(43) -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_L4PRTCL_TCP_TRASH mBIT(47) -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_L4PRTCL_UDP_TRASH mBIT(51) -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_L4PRTCL_FLEX_TRASH mBIT(55) -#define VXGE_HAL_RTS_MGR_CFG0_VPMGMT_CLONE_IPFRAG_TRASH mBIT(59) -/* 0x001d0 */ u64 rts_mgr_criteria_priority_vpmgmt_clone; -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_ETYPE(val)\ - vBIT(val, 5, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_ICMP_TCPSYN(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_L4PN(val)\ - vBIT(val, 13, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_RANGE_L4PN(val)\ - vBIT(val, 17, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_RTH_IT(val)\ - vBIT(val, 21, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_DS(val)\ - vBIT(val, 25, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_QOS(val)\ - vBIT(val, 29, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_ZL4PYLD(val)\ - vBIT(val, 33, 3) -#define VXGE_HAL_RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE_L4PRTCL(val)\ - vBIT(val, 37, 3) -/* 0x001d8 */ u64 rxmac_cfg0_port_vpmgmt_clone[3]; -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_RMAC_EN mBIT(3) -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_STRIP_FCS mBIT(7) -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_DISCARD_PFRM mBIT(11) -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_IGNORE_FCS_ERR mBIT(15) -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_IGNORE_LONG_ERR mBIT(19) -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_IGNORE_USIZED_ERR mBIT(23) -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_IGNORE_LEN_MISMATCH mBIT(27) -#define VXGE_HAL_RXMAC_CFG0_PORT_VPMGMT_CLONE_MAX_PYLD_LEN(val)\ - vBIT(val, 50, 14) -/* 0x001f0 */ u64 rxmac_pause_cfg_port_vpmgmt_clone[3]; -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_GEN_EN mBIT(3) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_RCV_EN mBIT(7) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_ACCEL_SEND(val)\ - vBIT(val, 9, 3) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_DUAL_THR mBIT(15) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_HIGH_PTIME(val)\ - vBIT(val, 20, 16) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_IGNORE_PF_FCS_ERR mBIT(39) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_IGNORE_PF_LEN_ERR mBIT(43) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_LIMITER_EN mBIT(47) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_MAX_LIMIT(val)\ - vBIT(val, 48, 8) -#define VXGE_HAL_RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_PERMIT_RATEMGMT_CTRL mBIT(59) - u8 unused00240[0x00240 - 0x00208]; - -/* 0x00240 */ u64 xmac_vsport_choices_vp; -#define VXGE_HAL_XMAC_VSPORT_CHOICES_VP_VSPORT_VECTOR(val) vBIT(val, 0, 17) - u8 unused00260[0x00260 - 0x00248]; - -/* 0x00260 */ u64 xgmac_gen_status_vpmgmt_clone; -#define VXGE_HAL_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_OK mBIT(3) -#define VXGE_HAL_XGMAC_GEN_STATUS_VPMGMT_CLONE_XMACJ_NTWK_DATA_RATE mBIT(11) -/* 0x00268 */ u64 xgmac_status_port_vpmgmt_clone[2]; -#define VXGE_HAL_XGMAC_STATUS_PORT_VPMGMT_CLONE_RMAC_REMOTE_FAULT mBIT(3) -#define VXGE_HAL_XGMAC_STATUS_PORT_VPMGMT_CLONE_RMAC_LOCAL_FAULT mBIT(7) -#define VXGE_HAL_XGMAC_STATUS_PORT_VPMGMT_CLONE_XMACJ_MAC_PHY_LAYER_AVAIL\ - mBIT(11) -#define VXGE_HAL_XGMAC_STATUS_PORT_VPMGMT_CLONE_XMACJ_PORT_OK mBIT(15) -/* 0x00278 */ u64 xmac_gen_cfg_vpmgmt_clone; -#define VXGE_HAL_XMAC_GEN_CFG_VPMGMT_CLONE_RATEMGMT_MAC_RATE_SEL(val)\ - vBIT(val, 2, 2) -#define VXGE_HAL_XMAC_GEN_CFG_VPMGMT_CLONE_TX_HEAD_DROP_WHEN_FAULT\ - mBIT(7) -#define VXGE_HAL_XMAC_GEN_CFG_VPMGMT_CLONE_FAULT_BEHAVIOUR\ - mBIT(27) -#define VXGE_HAL_XMAC_GEN_CFG_VPMGMT_CLONE_PERIOD_NTWK_UP(val)\ - vBIT(val, 28, 4) -#define VXGE_HAL_XMAC_GEN_CFG_VPMGMT_CLONE_PERIOD_NTWK_DOWN(val)\ - vBIT(val, 32, 4) -/* 0x00280 */ u64 xmac_timestamp_vpmgmt_clone; -#define VXGE_HAL_XMAC_TIMESTAMP_VPMGMT_CLONE_EN mBIT(3) -#define VXGE_HAL_XMAC_TIMESTAMP_VPMGMT_CLONE_USE_LINK_ID(val)\ - vBIT(val, 6, 2) -#define VXGE_HAL_XMAC_TIMESTAMP_VPMGMT_CLONE_INTERVAL(val)\ - vBIT(val, 12, 4) -#define VXGE_HAL_XMAC_TIMESTAMP_VPMGMT_CLONE_TIMER_RESTART\ - mBIT(19) -#define VXGE_HAL_XMAC_TIMESTAMP_VPMGMT_CLONE_XMACJ_ROLLOVER_CNT(val)\ - vBIT(val, 32, 16) -/* 0x00288 */ u64 xmac_stats_gen_cfg_vpmgmt_clone; -#define VXGE_HAL_XMAC_STATS_GEN_CFG_VPMGMT_CLONE_PRTAGGR_CUM_TIMER(val)\ - vBIT(val, 4, 4) -#define VXGE_HAL_XMAC_STATS_GEN_CFG_VPMGMT_CLONE_VPATH_CUM_TIMER(val)\ - vBIT(val, 8, 4) -#define VXGE_HAL_XMAC_STATS_GEN_CFG_VPMGMT_CLONE_VLAN_HANDLING\ - mBIT(15) -/* 0x00290 */ u64 xmac_cfg_port_vpmgmt_clone[3]; -#define VXGE_HAL_XMAC_CFG_PORT_VPMGMT_CLONE_XGMII_LOOPBACK\ - mBIT(3) -#define VXGE_HAL_XMAC_CFG_PORT_VPMGMT_CLONE_XGMII_REVERSE_LOOPBACK\ - mBIT(7) -#define VXGE_HAL_XMAC_CFG_PORT_VPMGMT_CLONE_XGMII_TX_BEHAV\ - mBIT(11) -#define VXGE_HAL_XMAC_CFG_PORT_VPMGMT_CLONE_XGMII_RX_BEHAV\ - mBIT(15) - u8 unused002c0[0x002c0 - 0x002a8]; - -/* 0x002c0 */ u64 txmac_gen_cfg0_vpmgmt_clone; -#define VXGE_HAL_TXMAC_GEN_CFG0_VPMGMT_CLONE_CHOSEN_TX_PORT\ - mBIT(7) -/* 0x002c8 */ u64 txmac_cfg0_port_vpmgmt_clone[3]; -#define VXGE_HAL_TXMAC_CFG0_PORT_VPMGMT_CLONE_TMAC_EN\ - mBIT(3) -#define VXGE_HAL_TXMAC_CFG0_PORT_VPMGMT_CLONE_APPEND_PAD\ - mBIT(7) -#define VXGE_HAL_TXMAC_CFG0_PORT_VPMGMT_CLONE_PAD_BYTE(val) vBIT(val, 8, 8) - u8 unused00300[0x00300 - 0x002e0]; - -/* 0x00300 */ u64 wol_mp_crc; -#define VXGE_HAL_WOL_MP_CRC_CRC(val) vBIT(val, 0, 32) -#define VXGE_HAL_WOL_MP_CRC_RC_EN mBIT(63) -/* 0x00308 */ u64 wol_mp_mask_a; -#define VXGE_HAL_WOL_MP_MASK_A_MASK(val) vBIT(val, 0, 64) -/* 0x00310 */ u64 wol_mp_mask_b; -#define VXGE_HAL_WOL_MP_MASK_B_MASK(val) vBIT(val, 0, 64) - u8 unused00360[0x00360 - 0x00318]; - -/* 0x00360 */ u64 fau_pa_cfg_vpmgmt_clone; -#define VXGE_HAL_FAU_PA_CFG_VPMGMT_CLONE_REPL_L4_COMP_CSUM mBIT(3) -#define VXGE_HAL_FAU_PA_CFG_VPMGMT_CLONE_REPL_L3_INCL_CF mBIT(7) -#define VXGE_HAL_FAU_PA_CFG_VPMGMT_CLONE_REPL_L3_COMP_CSUM mBIT(11) -/* 0x00368 */ u64 rx_datapath_util_vp_clone; -#define VXGE_HAL_RX_DATAPATH_UTIL_VP_CLONE_FAU_RX_UTILIZATION(val)\ - vBIT(val, 7, 9) -#define VXGE_HAL_RX_DATAPATH_UTIL_VP_CLONE_RX_UTIL_CFG(val) vBIT(val, 16, 4) -#define VXGE_HAL_RX_DATAPATH_UTIL_VP_CLONE_FAU_RX_FRAC_UTIL(val)\ - vBIT(val, 20, 4) -#define VXGE_HAL_RX_DATAPATH_UTIL_VP_CLONE_RX_PKT_WEIGHT(val)\ - vBIT(val, 24, 4) - u8 unused00380[0x00380 - 0x00370]; - -/* 0x00380 */ u64 tx_datapath_util_vp_clone; -#define VXGE_HAL_TX_DATAPATH_UTIL_VP_CLONE_TPA_TX_UTILIZATION(val)\ - vBIT(val, 7, 9) -#define VXGE_HAL_TX_DATAPATH_UTIL_VP_CLONE_TX_UTIL_CFG(val) vBIT(val, 16, 4) -#define VXGE_HAL_TX_DATAPATH_UTIL_VP_CLONE_TPA_TX_FRAC_UTIL(val)\ - vBIT(val, 20, 4) -#define VXGE_HAL_TX_DATAPATH_UTIL_VP_CLONE_TX_PKT_WEIGHT(val) vBIT(val, 24, 4) - -} vxge_hal_vpmgmt_reg_t; - -__EXTERN_END_DECLS - -#endif /* VXGE_HAL_VPMGMT_REGS_H */ Index: sys/dev/vxge/vxgehal/vxgehal.h =================================================================== --- sys/dev/vxge/vxgehal/vxgehal.h +++ sys/dev/vxge/vxgehal/vxgehal.h @@ -1,69 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef VXGE_HAL_H -#define VXGE_HAL_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - -#endif /* VXGE_HAL_H */ Index: sys/dev/vxge/vxgell-version.h =================================================================== --- sys/dev/vxge/vxgell-version.h +++ sys/dev/vxge/vxgell-version.h @@ -1,73 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef _VXGELL_VERSION_H_ -#define _VXGELL_VERSION_H_ - -#define XGELL_VERSION_MAJOR 2 -#define XGELL_VERSION_MINOR 5 -#define XGELL_VERSION_FIX 1 -#define XGELL_VERSION_BUILD GENERATED_BUILD_VERSION - -#define VXGE_FW_VERSION(major, minor, build) \ - ((major << 16) + (minor << 8) + build) - -#define VXGE_FW_MAJ_MIN_VERSION(major, minor) \ - ((major << 16) + (minor << 8)) - -/* Adapter should be running with this fw version for using FW_UPGRADE API's */ -#define VXGE_BASE_FW_MAJOR_VERSION 1 -#define VXGE_BASE_FW_MINOR_VERSION 4 -#define VXGE_BASE_FW_BUILD_VERSION 4 - -#define VXGE_BASE_FW_VERSION \ - VXGE_FW_VERSION(VXGE_BASE_FW_MAJOR_VERSION, \ - VXGE_BASE_FW_MINOR_VERSION, \ - VXGE_BASE_FW_BUILD_VERSION) - -#define VXGE_DRV_FW_VERSION \ - VXGE_FW_VERSION(VXGE_MIN_FW_MAJOR_VERSION, \ - VXGE_MIN_FW_MINOR_VERSION, \ - VXGE_MIN_FW_BUILD_NUMBER) - -#define VXGE_DRV_FW_MAJ_MIN_VERSION \ - VXGE_FW_MAJ_MIN_VERSION(VXGE_MIN_FW_MAJOR_VERSION, \ - VXGE_MIN_FW_MINOR_VERSION) - -#define VXGE_FW_ARRAY_NAME X3fw_ncf -#define VXGE_COPYRIGHT "Copyright(c) 2002-2011 Exar Corp.\n" -#define VXGE_ADAPTER_NAME "Neterion x3100 10GbE PCIe Server Adapter " \ - "(Rev %d)" - -#endif /* _VXGELL_VERSION_H_ */ Index: sys/modules/Makefile =================================================================== --- sys/modules/Makefile +++ sys/modules/Makefile @@ -399,7 +399,6 @@ vr \ vte \ vx \ - ${_vxge} \ wb \ ${_wbwd} \ ${_wi} \ @@ -617,7 +616,6 @@ _splash= splash _sppp= sppp _vmware= vmware -_vxge= vxge _wbwd= wbwd _wi= wi _xe= xe Index: sys/modules/vxge/Makefile =================================================================== --- sys/modules/vxge/Makefile +++ sys/modules/vxge/Makefile @@ -1,64 +0,0 @@ -# $FreeBSD$ - -.PATH: ${SRCTOP}/sys/dev/vxge -VPATH = ${SRCTOP}/sys/dev/vxge/vxgehal - -CFLAGS_VXGE = - -# Debugging/Tracing: -#VXGE_COMPONENT_HAL_DEVICE 0x00000001 -#VXGE_COMPONENT_HAL_DEVICE_IRQ 0x00000002 -#VXGE_COMPONENT_HAL_VPATH 0x00000004 -#VXGE_COMPONENT_HAL_VPATH_IRQ 0x00000008 -#VXGE_COMPONENT_HAL_CONFIG 0x00000010 -#VXGE_COMPONENT_HAL_MM 0x00000020 -#VXGE_COMPONENT_HAL_POOL 0x00000040 -#VXGE_COMPONENT_HAL_QUEUE 0x00000080 -#VXGE_COMPONENT_HAL_CHANNEL 0x00000200 -#VXGE_COMPONENT_HAL_FIFO 0x00000400 -#VXGE_COMPONENT_HAL_RING 0x00000800 -#VXGE_COMPONENT_HAL_LRO 0x00100000 -#VXGE_COMPONENT_HAL_STATS 0x00800000 -#VXGE_COMPONENT_HAL_MRPCIM 0x01000000 -#VXGE_COMPONENT_HAL_MRPCIM_IRQ 0x02000000 -#VXGE_COMPONENT_HAL_SRPCIM 0x04000000 -#VXGE_COMPONENT_HAL_SRPCIM_IRQ 0x08000000 -#VXGE_COMPONENT_HAL_DRIVER 0x10000000 -#VXGE_COMPONENT_OSDEP 0x20000000 -#VXGE_COMPONENT_LL 0x40000000 -#VXGE_COMPONENT_ULD 0x80000000 -#VXGE_COMPONENT_ALL 0xffffffff - -#CFLAGS_VXGE += -DVXGE_DEBUG_MODULE_MASK=VXGE_COMPONENT_ALL -#CFLAGS_VXGE += -DVXGE_DEBUG_ERR_MASK=VXGE_COMPONENT_ALL -#CFLAGS_VXGE += -DVXGE_DEBUG_TRACE_MASK=VXGE_COMPONENT_ALL -#CFLAGS_VXGE += -DVXGE_OS_MEMORY_CHECK - -CFLAGS_VXGE += -DVXGE_HAL_RX_MULTI_POST -CFLAGS_VXGE += -DVXGE_HAL_TX_MULTI_POST - -CFLAGS += $(CFLAGS_VXGE) - -KMOD = vxge -SRCS = vxge.c -SRCS += vxgehal-driver.c -SRCS += vxgehal-swapper.c -SRCS += vxgehal-config.c -SRCS += vxgehal-device.c -SRCS += vxge-queue.c -SRCS += vxgehal-mm.c -SRCS += vxgehal-blockpool.c -SRCS += vxgehal-channel.c -SRCS += vxgehal-fifo.c -SRCS += vxgehal-ring.c -SRCS += vxgehal-virtualpath.c -SRCS += vxgehal-doorbells.c -SRCS += vxgehal-mgmt.c -SRCS += vxgehal-mgmtaux.c -SRCS += vxgehal-mrpcim.c -SRCS += vxgehal-srpcim.c -SRCS += vxgehal-ifmsg.c - -SRCS+= bus_if.h device_if.h pci_if.h - -.include Index: tools/kerneldoc/subsys/Doxyfile-dev_vxge =================================================================== --- tools/kerneldoc/subsys/Doxyfile-dev_vxge +++ tools/kerneldoc/subsys/Doxyfile-dev_vxge @@ -1,21 +0,0 @@ -# Doxyfile 1.5.2 - -# $FreeBSD$ - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "FreeBSD kernel VXGE device code" -OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_vxge/ -EXTRACT_ALL = YES # for undocumented src, no warnings enabled -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = $(DOXYGEN_SRC_PATH)/dev/vxge/ \ - $(NOTREVIEWED) - -GENERATE_TAGFILE = dev_vxge/dev_vxge.tag - -@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH) -@INCLUDE = common-Doxyfile - Index: tools/tools/README =================================================================== --- tools/tools/README +++ tools/tools/README @@ -63,5 +63,4 @@ stack infrastructure. vop_table Generates a HTML document that shows all the VOP's in the kernel. -vxge A diagnostic tool for the vxge(4) driver whereintheworld Summarizes "make world" output. Index: tools/tools/vxge/Makefile =================================================================== --- tools/tools/vxge/Makefile +++ tools/tools/vxge/Makefile @@ -1,7 +0,0 @@ -# $FreeBSD$ - -PROG= vxge-manage -SRCS= vxge_info.c vxge_log.c -MAN= - -.include Index: tools/tools/vxge/vxge_cmn.h =================================================================== --- tools/tools/vxge/vxge_cmn.h +++ tools/tools/vxge/vxge_cmn.h @@ -1,262 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef _VXGE_CMN_H_ -#define _VXGE_CMN_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if BYTE_ORDER == BIG_ENDIAN -#define VXGE_OS_HOST_BIG_ENDIAN -#else -#define VXGE_OS_HOST_LITTLE_ENDIAN -#endif - -#if defined(VXGE_OS_HOST_BIG_ENDIAN) - -#define GET_OFFSET_STATS(index) statsInfo[(index)].be_offset -#define GET_OFFSET_PCICONF(index) pciconfInfo[(index)].be_offset - -#else - -#define GET_OFFSET_STATS(index) statsInfo[(index)].le_offset -#define GET_OFFSET_PCICONF(index) pciconfInfo[(index)].le_offset - -#endif - -#define vxge_mem_free(x) \ - if (NULL != x) { free(x); x = NULL; } - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef unsigned long long u64; -typedef u_long ulong_t; - -typedef enum _vxge_query_device_info_e { - - VXGE_GET_PCI_CONF = 100, - VXGE_GET_MRPCIM_STATS = 101, - VXGE_GET_DEVICE_STATS = 102, - VXGE_GET_DEVICE_HWINFO = 103, - VXGE_GET_DRIVER_STATS = 104, - VXGE_GET_INTR_STATS = 105, - VXGE_GET_VERSION = 106, - VXGE_GET_TCODE = 107, - VXGE_GET_VPATH_COUNT = 108, - VXGE_GET_BANDWIDTH = 109, - VXGE_SET_BANDWIDTH = 110, - VXGE_GET_PORT_MODE = 111, - VXGE_SET_PORT_MODE = 112 - -} vxge_query_device_info_e; - -/* Register type enumaration */ -typedef enum vxge_hal_mgmt_reg_type_e { - - vxge_hal_mgmt_reg_type_legacy = 0, - vxge_hal_mgmt_reg_type_toc = 1, - vxge_hal_mgmt_reg_type_common = 2, - vxge_hal_mgmt_reg_type_memrepair = 3, - vxge_hal_mgmt_reg_type_pcicfgmgmt = 4, - vxge_hal_mgmt_reg_type_mrpcim = 5, - vxge_hal_mgmt_reg_type_srpcim = 6, - vxge_hal_mgmt_reg_type_vpmgmt = 7, - vxge_hal_mgmt_reg_type_vpath = 8 - -} vxge_hal_mgmt_reg_type_e; - -typedef enum vxge_hal_xmac_nwif_dp_mode { - - VXGE_HAL_DP_NP_MODE_DEFAULT, - VXGE_HAL_DP_NP_MODE_LINK_AGGR, - VXGE_HAL_DP_NP_MODE_ACTIVE_PASSIVE, - VXGE_HAL_DP_NP_MODE_SINGLE_PORT, - VXGE_HAL_DP_NP_MODE_DUAL_PORT, - VXGE_HAL_DP_NP_MODE_DISABLE_PORT_MGMT - -} vxge_hal_xmac_nwif_dp_mode; - -typedef enum vxge_hal_xmac_nwif_behavior_on_failure { - - VXGE_HAL_XMAC_NWIF_OnFailure_NoMove, - VXGE_HAL_XMAC_NWIF_OnFailure_OtherPort, - VXGE_HAL_XMAC_NWIF_OnFailure_OtherPortBackOnRestore - -} vxge_hal_xmac_nwif_behavior_on_failure; - -#define VXGE_HAL_MGMT_REG_COUNT_LEGACY 7 -#define VXGE_HAL_MGMT_REG_COUNT_TOC 11 -#define VXGE_HAL_MGMT_REG_COUNT_COMMON 65 -#define VXGE_HAL_MGMT_REG_COUNT_PCICFGMGMT 3 -#define VXGE_HAL_MGMT_REG_COUNT_MRPCIM 1370 -#define VXGE_HAL_MGMT_REG_COUNT_SRPCIM 48 -#define VXGE_HAL_MGMT_REG_COUNT_VPMGMT 29 -#define VXGE_HAL_MGMT_REG_COUNT_VPATH 139 -#define VXGE_HAL_MGMT_STATS_COUNT_DRIVER 17 -#define VXGE_HAL_MGMT_STATS_COUNT 160 -#define VXGE_HAL_MGMT_STATS_COUNT_SW 54 -#define VXGE_HAL_MGMT_STATS_COUNT_EXTENDED 56 -#define VXGE_MAX_BANDWIDTH 10000 - -#define VXGE_HAL_MAX_VIRTUAL_PATHS 17 -#define ETH_LENGTH_OF_ADDRESS 6 - -typedef char macaddr[ETH_LENGTH_OF_ADDRESS]; - -#define VXGE_PRINT(fd, fmt...) { \ - fprintf(fd, fmt); \ - fprintf(fd, "\n"); \ - printf(fmt); \ - printf("\n"); \ -} - -/* Read & Write Register */ -typedef struct _vxge_register_info_t { - - u64 value; - u64 offset; - char option[2]; - -} vxge_register_info_t; - -/* Register Dump */ -typedef struct _vxge_pci_bar0_t { - char name[64]; - u64 offset; - u32 size; - -} vxge_pci_bar0_t; - -typedef struct _vxge_stats_driver_info_t { - - char name[32]; - u64 value; - -} vxge_stats_driver_info_t; - -typedef struct _vxge_hal_device_pmd_info_t { - - u32 type; - u32 unused; - char vendor[24]; - char part_num[24]; - char ser_num[24]; - -} vxge_hal_device_pmd_info_t; - -typedef struct _vxge_hal_device_version_t { - - u32 major; - u32 minor; - u32 build; - char version[32]; - -} vxge_hal_device_version_t; - -typedef struct _vxge_hal_device_date_t { - - u32 day; - u32 month; - u32 year; - char date[16]; - -} vxge_hal_device_date_t; - -typedef struct _vxge_hal_device_hw_info_t { - - u32 host_type; - u64 function_mode; - u32 func_id; - u64 vpath_mask; - - vxge_hal_device_version_t fw_version; - vxge_hal_device_date_t fw_date; - vxge_hal_device_version_t flash_version; - vxge_hal_device_date_t flash_date; - - char serial_number[24]; - char part_number[24]; - char product_description[72]; - u32 unused; - u32 ports; - - vxge_hal_device_pmd_info_t pmd_port0; - vxge_hal_device_pmd_info_t pmd_port1; - - macaddr mac_addrs[VXGE_HAL_MAX_VIRTUAL_PATHS]; - macaddr mac_addr_masks[VXGE_HAL_MAX_VIRTUAL_PATHS]; - -} vxge_hal_device_hw_info_t; - -typedef struct _vxge_device_hw_info_t { - - vxge_hal_device_hw_info_t hw_info; - u32 port_mode; - u32 port_failure; - -} vxge_device_hw_info_t; - -typedef struct _vxge_bw_info_t { - - char query; - u64 func_id; - int priority; - int bandwidth; - -} vxge_bw_info_t; - -typedef struct _vxge_port_info_t { - - char query; - int port_mode; - int port_failure; - -} vxge_port_info_t; - -u32 vxge_get_num_vpath(void); -void vxge_null_terminate(char *, size_t); - -#endif /* _VXGE_CMN_H_ */ Index: tools/tools/vxge/vxge_info.h =================================================================== --- tools/tools/vxge/vxge_info.h +++ tools/tools/vxge/vxge_info.h @@ -1,92 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef _VXGE_INFO_H_ -#define _VXGE_INFO_H_ - -#include "vxge_cmn.h" - -/* Function declerations */ - -void vxge_get_registers_all(void); -int vxge_get_registers_toc(void); -int vxge_get_registers_vpath(void); -int vxge_get_registers_vpmgmt(void); -int vxge_get_registers_legacy(void); -int vxge_get_registers_srpcim(void); -int vxge_get_registers_mrpcim(void); -int vxge_get_registers_common(void); -int vxge_get_registers_pcicfgmgmt(void); - -int vxge_get_stats_common(void); -int vxge_get_stats_mrpcim(void); -int vxge_get_stats_driver(int); -void vxge_get_stats_all(void); - -int vxge_get_hw_info(void); -int vxge_get_pci_config(void); -int vxge_get_port_mode(void); -int vxge_set_port_mode(int); - -int vxge_get_bw_priority(int, vxge_query_device_info_e); -int vxge_set_bw_priority(int, int, int, vxge_query_device_info_e); - -void vxge_print_registers(void *); -void vxge_print_registers_toc(void *); -void vxge_print_registers_vpath(void *, int); -void vxge_print_registers_vpmgmt(void *); -void vxge_print_registers_legacy(void *); -void vxge_print_registers_srpcim(void *); -void vxge_print_registers_mrpcim(void *); -void vxge_print_registers_pcicfgmgmt(void *); - -void vxge_print_hw_info(void *); -void vxge_print_pci_config(void *); -void vxge_print_stats(void *, int); -void vxge_print_stats_drv(void *, int); -void vxge_print_bw_priority(void *); -void vxge_print_port_mode(void *); - -void* vxge_mem_alloc(u_long); - -extern vxge_pci_bar0_t reginfo_toc[]; -extern vxge_pci_bar0_t reginfo_vpath[]; -extern vxge_pci_bar0_t reginfo_legacy[]; -extern vxge_pci_bar0_t reginfo_vpmgmt[]; -extern vxge_pci_bar0_t reginfo_mrpcim[]; -extern vxge_pci_bar0_t reginfo_srpcim[]; -extern vxge_pci_bar0_t reginfo_registers[]; -extern vxge_pci_bar0_t reginfo_pcicfgmgmt[]; - -#endif /* _VXGE_INFO_H_ */ Index: tools/tools/vxge/vxge_info.c =================================================================== --- tools/tools/vxge/vxge_info.c +++ tools/tools/vxge/vxge_info.c @@ -1,869 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include "vxge_info.h" -#include - -static int sockfd; -static struct ifreq ifr; - -int -main(int argc, char *argv[]) -{ - uid_t uid; - - uid = getuid(); - - if (uid) { - printf("vxge-manage: Operation not permitted.\nExiting...\n"); - goto _exit0; - } - - if (argc >= 4) { - if (!((strcasecmp(argv[2], "regs") == 0) || - (strcasecmp(argv[2], "stats") == 0) || - (strcasecmp(argv[2], "bw_pri_set") == 0) || - (strcasecmp(argv[2], "port_mode_set") == 0) || - (strcasecmp(argv[2], "bw_pri_get") == 0))) - goto out; - else { - if (strcasecmp(argv[2], "regs") == 0) { - if (!((strcasecmp(argv[3], "common") == 0) || - (strcasecmp(argv[3], "legacy") == 0) || - (strcasecmp(argv[3], "pcicfgmgmt") == 0) || - (strcasecmp(argv[3], "toc") == 0) || - (strcasecmp(argv[3], "vpath") == 0) || - (strcasecmp(argv[3], "vpmgmt") == 0) || - (strcasecmp(argv[3], "mrpcim") == 0) || - (strcasecmp(argv[3], "srpcim") == 0) || - (strcasecmp(argv[3], "all") == 0))) { - goto regs; - } - } else if (strcasecmp(argv[2], "stats") == 0) { - - if (!((strcasecmp(argv[3], "common") == 0) || - (strcasecmp(argv[3], "mrpcim") == 0) || - (strcasecmp(argv[3], "all") == 0) || - (strcasecmp(argv[3], "driver") == 0))) { - goto stats; - } - } - } - } else { - if (argc != 3) - goto out; - else { - if (!((strcasecmp(argv[2], "hwinfo") == 0) || - (strcasecmp(argv[2], "pciconfig") == 0) || - (strcasecmp(argv[2], "port_mode_get") == 0) || - (strcasecmp(argv[2], "bw_pri_get") == 0))) { - if (strcasecmp(argv[2], "regs") == 0) - goto regs; - - if (strcasecmp(argv[2], "stats") == 0) - goto stats; - - if (strcasecmp(argv[2], "bw_pri_set") == 0) - goto bw_pri_set; - - if (strcasecmp(argv[2], "port_mode_set") == 0) - goto port_mode_set; - - goto out; - } - } - } - - sockfd = socket(AF_INET, SOCK_DGRAM, 0); - if (sockfd < 0) { - printf("Creating socket failed\n"); - goto _exit0; - } - - ifr.ifr_addr.sa_family = AF_INET; - strlcpy(ifr.ifr_name, argv[1], sizeof(ifr.ifr_name)); - - if (strcasecmp(argv[2], "pciconfig") == 0) - vxge_get_pci_config(); - - else if (strcasecmp(argv[2], "hwinfo") == 0) - vxge_get_hw_info(); - - else if (strcasecmp(argv[2], "vpathinfo") == 0) - vxge_get_num_vpath(); - - else if (strcasecmp(argv[2], "port_mode_get") == 0) - vxge_get_port_mode(); - - else if (strcasecmp(argv[2], "regs") == 0) { - - if (strcasecmp(argv[3], "common") == 0) - vxge_get_registers_common(); - - else if (strcasecmp(argv[3], "toc") == 0) - vxge_get_registers_toc(); - - else if (strcasecmp(argv[3], "pcicfgmgmt") == 0) - vxge_get_registers_pcicfgmgmt(); - - else if (strcasecmp(argv[3], "vpath") == 0) - vxge_get_registers_vpath(); - - else if (strcasecmp(argv[3], "vpmgmt") == 0) - vxge_get_registers_vpmgmt(); - - else if (strcasecmp(argv[3], "srpcim") == 0) - vxge_get_registers_srpcim(); - - else if (strcasecmp(argv[3], "legacy") == 0) - vxge_get_registers_legacy(); - - if (strcasecmp(argv[3], "mrpcim") == 0) - vxge_get_registers_mrpcim(); - - else if (strcasecmp(argv[3], "all") == 0) - vxge_get_registers_all(); - - } else if (strcasecmp(argv[2], "stats") == 0) { - - if (strcasecmp(argv[3], "mrpcim") == 0) - vxge_get_stats_mrpcim(); - - else if (strcasecmp(argv[3], "common") == 0) - vxge_get_stats_common(); - - else if (strcasecmp(argv[3], "all") == 0) - vxge_get_stats_all(); - - else if (strcasecmp(argv[3], "driver") == 0) { - if (argc == 4) { - vxge_get_stats_driver(-1); - } else if (argc == 6) { - if ((strcasecmp(argv[4], "vpath") == 0) && - (atoi(argv[5]) >= 0) && - (atoi(argv[5]) < 17)) { - vxge_get_stats_driver(atoi(argv[5])); - } else { - goto stats; - } - } - } else { - goto stats; - } - } else if (strcasecmp(argv[2], "port_mode_set") == 0) { - if ((atoi(argv[3]) >= 2) && (atoi(argv[3]) <= 4)) - vxge_set_port_mode(atoi(argv[3])); - else - goto port_mode_set; - } else if (argc == 5) { - if (strcasecmp(argv[2], "bw_pri_set") == 0) { - if (((atoi(argv[3]) >= 0) && (atoi(argv[3]) < 8) && - (atoi(argv[4]) <= 10000))) - vxge_set_bw_priority(atoi(argv[3]), - atoi(argv[4]), -1, VXGE_SET_BANDWIDTH); - else - goto bw_pri_set; - } - } else if (argc == 6) { - if (strcasecmp(argv[2], "bw_pri_set") == 0) { - if (((atoi(argv[3]) >= 0) && (atoi(argv[3]) < 8) && - (atoi(argv[4]) <= 10000)) && (atoi(argv[5]) <= 3)) - vxge_set_bw_priority(atoi(argv[3]), - atoi(argv[4]), atoi(argv[5]), - VXGE_SET_BANDWIDTH); - else - goto bw_pri_set; - } - } else if (argc == 4) { - if (strcasecmp(argv[2], "bw_pri_get") == 0) { - if ((atoi(argv[3]) >= 0) && (atoi(argv[3]) < 8)) - vxge_get_bw_priority(atoi(argv[3]), VXGE_GET_BANDWIDTH); - else - goto bw_pri_get; - } - } else if (argc == 3) { - if (strcasecmp(argv[2], "bw_pri_get") == 0) - vxge_get_bw_priority(-1, VXGE_GET_BANDWIDTH); - else - goto bw_pri_get; - } - - goto _exit0; - -out: - printf("Usage: "); - printf("vxge-manage "); - printf("[regs] [stats] [hwinfo] [bw_pri_get] [bw_pri_set] [port_mode_get] [port_mode_set] [pciconfig]\n"); - printf("\tINTERFACE : Interface (vxge0, vxge1, vxge2, ..)\n"); - printf("\tregs : Prints register values\n"); - printf("\tstats : Prints statistics\n"); - printf("\tpciconfig : Prints pci configuration space\n"); - printf("\thwinfo : Displays hardware information\n"); - printf("\tbw_pri_get : Displays bandwidth and priority information\n"); - printf("\tbw_pri_set : Set bandwidth and priority of a function\n"); - printf("\tport_mode_get : Displays dual port adapter's port mode\n"); - printf("\tport_mode_set : Set dual port adapter's port mode\n\n"); - goto _exit0; - -regs: - printf("Regs\n"); - printf("[common] [legacy] [pcicfgmgmt] [toc] [vpath] [vpmgmt] [mrpcim] [srpcim] [All]\n"); - printf("\tcommon : print common registers\n"); - printf("\tlegacy : print legacy registers\n"); - printf("\tpcicfgmgmt : print pcicfgmgmt registers\n"); - printf("\ttoc : print toc registers\n"); - printf("\tvpath : print vpath registers\n"); - printf("\tvpmgmt : print vpmgmt registers\n"); - printf("\tmrpcim : print mrpcim registers\n"); - printf("\tsrpcim : print srpcim registers\n\n"); - goto _exit0; - -stats: - printf("Stats\n"); - printf("[common] [mrpcim] [driver [vpath (< 17) ]] [All]\n"); - printf("\tcommon : print common statistics\n"); - printf("\tmrpcim : print mrpcim statistics\n"); - printf("\tdriver : print driver statistics\n"); - printf("\tAll : print all statistics\n\n"); - goto _exit0; - -bw_pri_set: - printf("Bandwidth & Priority\n"); - printf("[vf-id (0-7)] [bandwidth (100-10000)] [priority (0-3)]\n\n"); - goto _exit0; - -bw_pri_get: - printf("Bandwidth & Priority\n"); - printf("[vf-id (0-7)]\n\n"); - goto _exit0; - -port_mode_set: - printf("Port mode Setting\n"); - printf("[port mode value (2-4)]\n\n"); - goto _exit0; - -_exit0: - return (0); -} - -/* - * vxge_get_registers_all - */ -void -vxge_get_registers_all(void) -{ - vxge_get_registers_legacy(); - vxge_get_registers_toc(); - vxge_get_registers_common(); - vxge_get_registers_pcicfgmgmt(); - vxge_get_registers_srpcim(); - vxge_get_registers_mrpcim(); - vxge_get_registers_vpmgmt(); - vxge_get_registers_vpath(); -} - -int -vxge_get_registers_common(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = - reginfo_registers[VXGE_HAL_MGMT_REG_COUNT_COMMON - 1].offset + 8; - - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for register dump failed\n"); - goto _exit0; - } - - *buffer = vxge_hal_mgmt_reg_type_common; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting register values failed\n"); - goto _exit0; - } - - vxge_print_registers(buffer); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_registers_legacy - */ -int -vxge_get_registers_legacy(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = reginfo_legacy[VXGE_HAL_MGMT_REG_COUNT_LEGACY - 1].offset + 8; - - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for register dump failed\n"); - goto _exit0; - } - - *buffer = vxge_hal_mgmt_reg_type_legacy; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting register values failed\n"); - goto _exit0; - } - - vxge_print_registers_legacy(buffer); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_registers_toc - */ -int -vxge_get_registers_toc(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = reginfo_toc[VXGE_HAL_MGMT_REG_COUNT_TOC - 1].offset + 8; - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for register dump failed\n"); - goto _exit0; - } - - *buffer = vxge_hal_mgmt_reg_type_toc; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting register values failed\n"); - goto _exit0; - } - - vxge_print_registers_toc(buffer); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_registers_pcicfgmgmt - */ -int -vxge_get_registers_pcicfgmgmt(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = reginfo_pcicfgmgmt[VXGE_HAL_MGMT_REG_COUNT_PCICFGMGMT - 1].offset + 8; - - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for register dump failed\n"); - goto _exit0; - } - - *buffer = vxge_hal_mgmt_reg_type_pcicfgmgmt; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting register values failed\n"); - goto _exit0; - } - - vxge_print_registers_pcicfgmgmt(buffer); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_registers_vpath - */ -int -vxge_get_registers_vpath(void) -{ - int bufsize, err = 0; - u32 i, no_of_vpath; - char *buffer = NULL; - - no_of_vpath = vxge_get_num_vpath(); - bufsize = reginfo_vpath[VXGE_HAL_MGMT_REG_COUNT_VPATH - 1].offset + 8; - - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for register dump failed\n"); - goto _exit0; - } - - for (i = 0; i < no_of_vpath; i++) { - - bzero(buffer, bufsize); - *buffer = vxge_hal_mgmt_reg_type_vpath; - *((u32 *) (buffer + sizeof(u32))) = i; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting register values failed\n"); - goto _exit0; - } - - vxge_print_registers_vpath(buffer, i); - } - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_registers_vpmgmt - */ -int -vxge_get_registers_vpmgmt(void) -{ - int bufsize, err = 0; - u32 i, no_of_vpath; - char *buffer = NULL; - - no_of_vpath = vxge_get_num_vpath(); - bufsize = reginfo_vpmgmt[VXGE_HAL_MGMT_REG_COUNT_VPMGMT - 1].offset + 8; - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for register dump failed\n"); - goto _exit0; - } - - for (i = 0; i < no_of_vpath; i++) { - - bzero(buffer, bufsize); - *buffer = vxge_hal_mgmt_reg_type_vpmgmt; - *((u32 *) (buffer + sizeof(u32))) = i; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting register values failed\n"); - goto _exit0; - } - - vxge_print_registers_vpmgmt(buffer); - } - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -u32 -vxge_get_num_vpath(void) -{ - int err = 0; - u32 buffer, no_of_vpath = 0; - - buffer = VXGE_GET_VPATH_COUNT; - - ifr.ifr_data = (caddr_t) &buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if (err == 0) - no_of_vpath = buffer; - else - printf("Getting number of vpath failed\n"); - - return (no_of_vpath); -} - -/* - * vxge_get_registers_mrpcim - */ -int -vxge_get_registers_mrpcim(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = reginfo_mrpcim[VXGE_HAL_MGMT_REG_COUNT_MRPCIM - 1].offset + 8; - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for register dump failed\n"); - goto _exit0; - } - - *buffer = vxge_hal_mgmt_reg_type_mrpcim; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting register values failed\n"); - goto _exit0; - } - - vxge_print_registers_mrpcim(buffer); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_registers_srpcim - * Gets srpcim register values - * Returns EXIT_SUCCESS or EXIT_FAILURE - */ -int -vxge_get_registers_srpcim(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = reginfo_srpcim[VXGE_HAL_MGMT_REG_COUNT_SRPCIM - 1].offset + 8; - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for register dump failed\n"); - goto _exit0; - } - - *buffer = vxge_hal_mgmt_reg_type_srpcim; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_1, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting register values failed\n"); - goto _exit0; - } - - vxge_print_registers_srpcim(buffer); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_stats_driver - */ -int -vxge_get_stats_driver(int vpath_num) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = VXGE_HAL_MGMT_STATS_COUNT_DRIVER * sizeof(u64) * - VXGE_HAL_MAX_VIRTUAL_PATHS; - - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for driver statistics failed\n"); - goto _exit0; - } - - *buffer = VXGE_GET_DRIVER_STATS; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting Driver Statistics failed\n"); - goto _exit0; - } - - vxge_print_stats_drv(buffer, vpath_num); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_stats_common - */ -int -vxge_get_stats_common(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = 1024 * 64 * sizeof(char); - - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for statistics dump failed\n"); - goto _exit0; - } - - *buffer = VXGE_GET_DEVICE_STATS; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting statistics values failed\n"); - goto _exit0; - } - - vxge_print_stats(buffer, VXGE_GET_DEVICE_STATS); - -_exit0: - vxge_mem_free(buffer); - return (err); - -} - -/* - * vxge_get_stats_mrpcim - */ -int -vxge_get_stats_mrpcim(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = 1024 * 64 * sizeof(char); - - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for statistics dump failed\n"); - goto _exit0; - } - - *buffer = VXGE_GET_MRPCIM_STATS; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting statistics values failed\n"); - goto _exit0; - } - - vxge_print_stats(buffer, VXGE_GET_MRPCIM_STATS); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -int -vxge_get_pci_config(void) -{ - int bufsize, err = 0; - char *buffer = NULL; - - bufsize = 64 * 1024 * sizeof(char); - - buffer = (char *) vxge_mem_alloc(bufsize); - if (!buffer) { - printf("Allocating memory for pci config failed\n"); - goto _exit0; - } - - *buffer = VXGE_GET_PCI_CONF; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting pci config values failed\n"); - goto _exit0; - } - - vxge_print_pci_config(buffer); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_hw_info - */ -int -vxge_get_hw_info(void) -{ - int err = 0; - char *buffer = NULL; - - buffer = (char *) vxge_mem_alloc(sizeof(vxge_device_hw_info_t)); - if (!buffer) { - printf("Allocating memory for hw info failed\n"); - goto _exit0; - } - - *buffer = VXGE_GET_DEVICE_HWINFO; - - ifr.ifr_data = (caddr_t) buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) { - printf("Getting hw info failed\n"); - goto _exit0; - } - - vxge_print_hw_info(buffer); - -_exit0: - vxge_mem_free(buffer); - return (err); -} - -/* - * vxge_get_stats_all - */ -void -vxge_get_stats_all(void) -{ - vxge_get_stats_mrpcim(); - vxge_get_stats_common(); - vxge_get_stats_driver(0); -} - -int -vxge_get_bw_priority(int func_id, vxge_query_device_info_e vxge_query_info) -{ - int err = 0; - vxge_bw_info_t buffer; - - bzero(&buffer, sizeof(vxge_bw_info_t)); - - buffer.query = (char) vxge_query_info; - if (func_id != -1) - buffer.func_id = func_id; - - ifr.ifr_data = (caddr_t) &buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) - printf("Getting bw info failed\n"); - else - vxge_print_bw_priority(&buffer); - - return (err); -} - -int -vxge_set_bw_priority(int func_id, int bandwidth, int priority, - vxge_query_device_info_e vxge_query_info) -{ - int err = 0; - vxge_bw_info_t buffer; - - bzero(&buffer, sizeof(vxge_bw_info_t)); - - buffer.query = (char) vxge_query_info; - buffer.func_id = func_id; - buffer.bandwidth = bandwidth; - buffer.priority = priority; - - ifr.ifr_data = (caddr_t) &buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) - printf("Setting bandwidth failed\n"); - - return (err); -} - -int -vxge_set_port_mode(int port_val) -{ - int err = 0; - vxge_port_info_t buffer; - - buffer.query = VXGE_SET_PORT_MODE; - buffer.port_mode = port_val; - buffer.port_failure = 0; - - ifr.ifr_data = (caddr_t) &buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) - printf("Setting port_mode failed\n"); - else - printf("Port mode set. Reboot the system for changes to take effect.\n"); - - return (err); -} - -int -vxge_get_port_mode() -{ - int err = 0; - vxge_port_info_t buffer; - - bzero(&buffer, sizeof(vxge_port_info_t)); - - buffer.query = VXGE_GET_PORT_MODE; - - ifr.ifr_data = (caddr_t) &buffer; - err = ioctl(sockfd, SIOCGPRIVATE_0, &ifr); - if ((err < 0) || (err == EINVAL)) - printf("Getting port mode info failed\n"); - else - vxge_print_port_mode(&buffer); - - return (err); -} -/* - * Removes trailing spaces padded - * and NULL terminates strings - */ -void -vxge_null_terminate(char *str, size_t len) -{ - len--; - while (*str && (*str != ' ') && (len != 0)) - ++str; - - --len; - if (*str) - *str = '\0'; -} - -void * -vxge_mem_alloc(u_long size) -{ - void *vaddr = NULL; - vaddr = malloc(size); - if (NULL != vaddr) - bzero(vaddr, size); - - return (vaddr); -} Index: tools/tools/vxge/vxge_log.h =================================================================== --- tools/tools/vxge/vxge_log.h +++ tools/tools/vxge/vxge_log.h @@ -1,1874 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#ifndef _VXGE_LOG_H_ -#define _VXGE_LOG_H_ - -#include "vxge_cmn.h" - -#define VXGE_STR_MAX_LEN_REGS 40 -#define VXGE_STR_MAX_LEN_STATS 32 -#define VXGE_STR_MAX_LEN_PCICONF 20 -#define VXGE_STR_MAX_LEN_DEVCONF 32 - -#define VXGE_FORMAT_STATS "%s%*s%d" -#define VXGE_FORMAT_DEVCONF "%s%*s\t%d" -#define VXGE_FORMAT_PCICONF "%s%*s\t0x%.4llx\t0x%.4llx" -#define VXGE_FORMAT_REGS "| %.8llx | %s%*s | %.16llx |" -#define VXGE_FORMAT_HEADER \ - "| Address | Name%*s | Value |" - -static int vxge_nspaces = 0; -static char vxge_line[120] = \ -"+-----------------------------------------------------------------------------+"; - -#define VXGE_PRINT_LINE(fd) VXGE_PRINT(fd, vxge_line); - -#define VXGE_PRINT_REG_NAME(fd, parameter) { \ - VXGE_PRINT(fd, parameter); \ -} - -#define VXGE_PRINT_HEADER(fd, maxSize, Offset) { \ - VXGE_PRINT_LINE(fd); \ - vxge_nspaces = maxSize - 4; \ - if (Offset == 1) { \ - VXGE_PRINT(fd, VXGE_FORMAT_HEADER, vxge_nspaces, " "); \ - } else { \ - VXGE_PRINT(fd, "Name%*s\tValue", vxge_nspaces, " "); \ - } \ - VXGE_PRINT_LINE(fd); \ -} - -#define VXGE_PRINT_HEADER_REGS(fd) \ - VXGE_PRINT_HEADER(fd, VXGE_STR_MAX_LEN_REGS, 1) - -#define VXGE_PRINT_HEADER_PCICONF(fd) \ - VXGE_PRINT_HEADER(fd, VXGE_STR_MAX_LEN_PCICONF, 1) - -#define VXGE_PRINT_HEADER_DEVCONF(fd) \ - VXGE_PRINT_HEADER(fd, VXGE_STR_MAX_LEN_DEVCONF, 0) - -#define VXGE_PRINT_REGS(fd, parameter, offset, value) { \ - vxge_nspaces = VXGE_STR_MAX_LEN_REGS - strlen(parameter); \ - VXGE_PRINT(fd, VXGE_FORMAT_REGS, (offset), (parameter), \ - (vxge_nspaces), " ", (value)); \ -} - -#define VXGE_PRINT_STATS(fd, parameter, value) { \ - vxge_nspaces = VXGE_STR_MAX_LEN_STATS - strlen(parameter); \ - VXGE_PRINT(fd, VXGE_FORMAT_STATS, (parameter), \ - (vxge_nspaces), " ", (value)); \ -} - -#define STR_FUNC_MODE_SF1_VP17 "Single Function - 1 function(s) 17 VPath(s)/function" -#define STR_FUNC_MODE_MF2_VP8 "Multi Function - 2 function(s) 8 VPath(s)/function" -#define STR_FUNC_MODE_MF4_VP4 "Multi Function - 4 function(s) 4 VPath(s)/function" -#define STR_FUNC_MODE_MF8_VP2 "Multi Function - 8 function(s) 2 VPath(s)/function" -#define STR_FUNC_MODE_MF8P_VP2 "Multi Function (DirectIO) - 8 function(s) 2 VPath(s)/function" - -const char * -vxge_func_mode[12] = -{ - STR_FUNC_MODE_SF1_VP17, - STR_FUNC_MODE_MF8_VP2, - "Not supported", - "Not supported", - "Not supported", - "Not supported", - "Not supported", - "Not supported", - STR_FUNC_MODE_MF2_VP8, - STR_FUNC_MODE_MF4_VP4, - "Not supported", - STR_FUNC_MODE_MF8P_VP2 -}; - -const char * -vxge_port_mode[6] = -{ - "Default", - "Reserved", - "Active/Passive", - "Single Port", - "Dual Port", - "Disabled" -}; - -const char * -vxge_port_failure[3] = -{ - "No Failover", - "Failover only", - "Failover & Failback" -}; - -vxge_pci_bar0_t reginfo_registers[] = -{ - {"PRC_STATUS1", 0x00A00, 1}, - {"RXDCM_RESET_IN_PROGRESS", 0x00A08, 1}, - {"REPLICQ_FLUSH_IN_PROGRESS", 0x00A10, 1}, - {"RXPE_CMDS_RESET_IN_PROGRESS", 0x00A18, 1}, - {"MXP_CMDS_RESET_IN_PROGRESS", 0x00A20, 1}, - {"NOFFLOAD_RESET_IN_PROGRESS", 0x00A28, 1}, - {"RD_REQ_IN_PROGRESS", 0x00A30, 1}, - {"RD_REQ_OUTSTANDING", 0x00A38, 1}, - {"KDFC_RESET_IN_PROGRESS", 0x00A40, 1}, - {"ONE_CFG_VP", 0x00B00, 1}, - {"ONE_COMMON", 0x00B08, 1}, - {"TIM_INT_EN", 0x00B80, 1}, - {"TIM_SET_INT_EN", 0x00B88, 1}, - {"TIM_CLR_INT_EN", 0x00B90, 1}, - {"TIM_MASK_INT_DURING_RESET", 0x00B98, 1}, - {"TIM_RESET_IN_PROGRESS", 0x00BA0, 1}, - {"TIM_OUTSTANDING_BMAP", 0x00BA8, 1}, - {"MSG_RESET_IN_PROGRESS", 0x00C00, 1}, - {"MSG_MXP_MR_READY", 0x00C08, 1}, - {"MSG_UXP_MR_READY", 0x00C10, 1}, - {"MSG_DMQ_NONI_RTL_PREFETCH", 0x00C18, 1}, - {"MSG_UMQ_RTL_BWR", 0x00C20, 1}, - {"CMN_RSTHDLR_CFG%d", 0x00D00, 5}, - {"CMN_RSTHDLR_CFG8", 0x00D40, 1}, - {"STATS_CFG0", 0x00D48, 1}, - {"CLEAR_MSIX_MASK_VECT%d", 0x00DA8, 4}, - {"SET_MSIX_MASK_VECT%d", 0x00DC8, 4}, - {"CLEAR_MSIX_MASK_ALL_VECT", 0x00DE8, 1}, - {"SET_MSIX_MASK_ALL_VECT", 0x00DF0, 1}, - {"MASK_VECTOR_%d", 0x00DF8, 4}, - {"MSIX_PENDING_VECTOR_%d", 0x00E18, 4}, - {"CLR_MSIX_ONE_SHOT_VEC%d", 0x00E38, 4}, - {"TITAN_ASIC_ID", 0x00E58, 1}, - {"TITAN_GENERAL_INT_STATUS", 0x00E60, 1}, - {"TITAN_MASK_ALL_INT", 0x00E70, 1}, - {"TIM_INT_STATUS0", 0x00E80, 1}, - {"TIM_INT_MASK0", 0x00E88, 1}, - {"TIM_INT_STATUS1", 0x00E90, 1}, - {"TIM_INT_MASK1", 0x00E98, 1}, - {"RTI_INT_STATUS", 0x00EA0, 1}, - {"RTI_INT_MASK", 0x00EA8, 1}, - {"ADAPTER_STATUS", 0x00EB0, 1}, - {"GEN_CTRL", 0x00EB8, 1}, - {"ADAPTER_READY", 0x00ED0, 1}, - {"OUTSTANDING_READ", 0x00ED8, 1}, - {"VPATH_RST_IN_PROG", 0x00EE0, 1}, - {"VPATH_REG_MODIFIED", 0x00EE8, 1}, - {"QCC_RESET_IN_PROGRESS", 0x00F40, 1}, - {"CP_RESET_IN_PROGRESS", 0x00FC0, 1}, - {"H2L_RESET_IN_PROGRESS", 0x01000, 1}, - {"XGMAC_READY", 0x01080, 1}, - {"FBIF_READY", 0x010C0, 1}, - {"VPLANE_ASSIGNMENTS", 0x01100, 1}, - {"VPATH_ASSIGNMENTS", 0x01108, 1}, - {"RESOURCE_ASSIGNMENTS", 0x01110, 1}, - {"HOST_TYPE_ASSIGNMENTS", 0x01118, 1}, - {"MAX_RESOURCE_ASSIGNMENTS", 0x01128, 1}, - {"PF_VPATH_ASSIGNMENTS", 0x01130, 1}, - {"RTS_ACCESS_ICMP", 0x01200, 1}, - {"RTS_ACCESS_TCPSYN", 0x01208, 1}, - {"RTS_ACCESS_ZL4PYLD", 0x01210, 1}, - {"RTS_ACCESS_L4PRTCL_TCP", 0x01218, 1}, - {"RTS_ACCESS_L4PRTCL_UDP", 0x01220, 1}, - {"RTS_ACCESS_L4PRTCL_FLEX", 0x01228, 1}, - {"RTS_ACCESS_IPFRAG", 0x01230, 1} -}; - -vxge_pci_bar0_t reginfo_legacy[] = -{ - {"TOC_SWAPPER_FB", 0x00010, 1}, - {"PIFM_RD_SWAP_EN", 0x00018, 1}, - {"PIFM_RD_FLIP_EN", 0x00020, 1}, - {"PIFM_WR_SWAP_EN", 0x00028, 1}, - {"PIFM_WR_FLIP_EN", 0x00030, 1}, - {"TOC_FIRST_POINTER", 0x00038, 1}, - {"HOST_ACCESS_EN", 0x00040, 1} -}; - -vxge_pci_bar0_t reginfo_pcicfgmgmt[] = -{ - {"RESOURCE_NO", 0x00000, 1}, - {"BARGRP_PF_OR_VF_BAR%d_MASK", 0x00008, 3}, - {"MSIXGRP_NO", 0x00020, 1} -}; - -vxge_pci_bar0_t reginfo_toc[] = -{ - {"TOC_COMMON_POINTER", 0x00050, 1}, - {"TOC_MEMREPAIR_POINTER", 0x00058, 1}, - {"TOC_PCICFGMGMT_POINTER_%d", 0x00060, 17}, - {"TOC_MRPCIM_POINTER", 0x001E0, 1}, - {"TOC_SRPCIM_POINTER_%d", 0x001E8, 17}, - {"TOC_VPMGMT_POINTER_%d", 0x00278, 17}, - {"TOC_VPATH_POINTER_%d", 0x00390, 17}, - {"TOC_KDFC", 0x004A0, 1}, - {"TOC_USDC", 0x004A8, 1}, - {"TOC_KDFC_VPATH_STRIDE", 0x004B0, 1}, - {"TOC_KDFC_FIFO_STRIDE", 0x004B8, 1} -}; - -vxge_pci_bar0_t reginfo_vpath[] = -{ - {"USDC_VPATH_VP%d", 0x00300, 1}, - {"WRDMA_ALARM_STATUS_VP%d", 0x00A00, 1}, - {"WRDMA_ALARM_MASK_VP%d", 0x00A08, 1}, - {"PRC_ALARM_REG_VP%d", 0x00A30, 1}, - {"PRC_ALARM_MASK_VP%d", 0x00A38, 1}, - {"PRC_ALARM_ALARM_VP%d", 0x00A40, 1}, - {"PRC_CFG1_VP%d", 0x00A48, 1}, - {"PRC_CFG4_VP%d", 0x00A60, 1}, - {"PRC_CFG5_VP%d", 0x00A68, 1}, - {"PRC_CFG6_VP%d", 0x00A70, 1}, - {"PRC_CFG7_VP%d", 0x00A78, 1}, - {"TIM_DEST_ADDR_VP%d", 0x00A80, 1}, - {"PRC_RXD_DOORBELL_VP%d", 0x00A88, 1}, - {"RQA_PRTY_FOR_VP_VP%d", 0x00A90, 1}, - {"RXDMEM_SIZE_VP%d", 0x00A98, 1}, - {"FRM_IN_PROGRESS_CNT_VP%d", 0x00AA0, 1}, - {"RX_MULTI_CAST_STATS_VP%d", 0x00AA8, 1}, - {"RX_FRM_TRANSFERRED_VP%d", 0x00AB0, 1}, - {"RXD_RETURNED_VP%d", 0x00AB8, 1}, - {"KDFC_FIFO_TRPL_PARTITION_VP%d", 0x00C00, 1}, - {"KDFC_FIFO_TRPL_CTRL_VP%d", 0x00C08, 1}, - {"KDFC_TRPL_FIFO_%d_CTRL_VP%d", 0x00C10, 3}, - {"KDFC_TRPL_FIFO_%d_WB_ADDRESS_VP%d", 0x00C28, 3}, - {"KDFC_TRPL_FIFO_OFFSET_VP%d", 0x00C40, 1}, - {"KDFC_DRBL_TRIPLET_TOTAL_VP%d", 0x00C48, 1}, - {"USDC_DRBL_CTRL_VP%d", 0x00C60, 1}, - {"USDC_VP_READY_VP%d", 0x00C68, 1}, - {"KDFC_STATUS_VP%d", 0x00C70, 1}, - {"XMAC_RPA_VCFG_VP%d", 0x00C80, 1}, - {"RXMAC_VCFG%d_VP%d", 0x00C88, 2}, - {"RTS_ACCESS_STEER_CTRL_VP%d", 0x00C98, 1}, - {"RTS_ACCESS_STEER_DATA%d_VP%d", 0x00CA0, 2}, - {"XMAC_VSPORT_CHOICE_VP%d", 0x00D00, 1}, - {"XMAC_STATS_CFG_VP%d", 0x00D08, 1}, - {"XMAC_STATS_ACCESS_CMD_VP%d", 0x00D10, 1}, - {"XMAC_STATS_ACCESS_DATA_VP%d", 0x00D18, 1}, - {"ASIC_NTWK_VP_CTRL_VP%d", 0x00D20, 1}, - {"XGMAC_VP_INT_STATUS_VP%d", 0x00D30, 1}, - {"XGMAC_VP_INT_MASK_VP%d", 0x00D38, 1}, - {"ASIC_NTWK_VP_ERR_REG_VP%d", 0x00D40, 1}, - {"ASIC_NTWK_VP_ERR_MASK_VP%d", 0x00D48, 1}, - {"ASIC_NTWK_VP_ERR_ALARM_VP%d", 0x00D50, 1}, - {"RTDMA_BW_CTRL_VP%d", 0x00D80, 1}, - {"RTDMA_RD_OPTIMIZATION_CTRL_VP%d", 0x00D88, 1}, - {"PDA_PCC_JOB_MONITOR_VP%d", 0x00D90, 1}, - {"TX_PROTOCOL_ASSIST_CFG_VP%d", 0x00D98, 1}, - {"TIM_CFG1_INT_NUM_%d_VP%d", 0x01000, 4}, - {"TIM_CFG2_INT_NUM_%d_VP%d", 0x01020, 4}, - {"TIM_CFG3_INT_NUM_%d_VP%d", 0x01040, 4}, - {"TIM_WRKLD_CLC_VP%d", 0x01060, 1}, - {"TIM_BITMAP_VP%d", 0x01068, 1}, - {"TIM_RING_ASSN_VP%d", 0x01070, 1}, - {"TIM_REMAP_VP%d", 0x01078, 1}, - {"TIM_VPATH_MAP_VP%d", 0x01080, 1}, - {"TIM_PCI_CFG_VP%d", 0x01088, 1}, - {"SGRP_ASSIGN_VP%d", 0x01100, 1}, - {"SGRP_AOA_AND_RESULT_VP%d", 0x01108, 1}, - {"RPE_PCI_CFG_VP%d", 0x01110, 1}, - {"RPE_LRO_CFG_VP%d", 0x01118, 1}, - {"PE_MR2VP_ACK_BLK_LIMIT_VP%d", 0x01120, 1}, - {"PE_MR2VP_RIRR_LIRR_BLK_LIMIT_VP%d", 0x01128, 1}, - {"TXPE_PCI_NCE_CFG_VP%d", 0x01130, 1}, - {"MSG_QPAD_EN_CFG_VP%d", 0x01180, 1}, - {"MSG_PCI_CFG_VP%d", 0x01188, 1}, - {"UMQDMQ_IR_INIT_VP%d", 0x01190, 1}, - {"DMQ_IR_INT_VP%d", 0x01198, 1}, - {"DMQ_BWR_INIT_ADD_VP%d", 0x011A0, 1}, - {"DMQ_BWR_INIT_BYTE_VP%d", 0x011A8, 1}, - {"DMQ_IR_VP%d", 0x011B0, 1}, - {"UMQ_INT_VP%d", 0x011B8, 1}, - {"UMQ_MR2VP_BWR_PFCH_INIT_VP%d", 0x011C0, 1}, - {"UMQ_BWR_PFCH_CTRL_VP%d", 0x011C8, 1}, - {"UMQ_MR2VP_BWR_EOL_VP%d", 0x011D0, 1}, - {"UMQ_BWR_INIT_ADD_VP%d", 0x011D8, 1}, - {"UMQ_BWR_INIT_BYTE_VP%d", 0x011E0, 1}, - {"GENDMA_INT_VP%d", 0x011E8, 1}, - {"UMQDMQ_IR_INIT_NOTIFY_VP%d", 0x011F0, 1}, - {"DMQ_INIT_NOTIFY_VP%d", 0x011F8, 1}, - {"UMQ_INIT_NOTIFY_VP%d", 0x01200, 1}, - {"TPA_CFG_VP%d", 0x01380, 1}, - {"TX_VP_RESET_DISCARDED_FRMS_VP%d", 0x01400, 1}, - {"FAU_RPA_VCFG_VP%d", 0x01480, 1}, - {"FAU_ADAPTIVE_LRO_FILTER_CTRL_VP%d", 0x014A8, 1}, - {"FAU_ADAPTIVE_LRO_FILTER_IP_DATA0_VP%d", 0x014B0, 1}, - {"FAU_ADAPTIVE_LRO_FILTER_IP_DATA1_VP%d", 0x014B8, 1}, - {"FAU_ADAPTIVE_LRO_FILTER_VLAN_DATA_VP%d", 0x014C0, 1}, - {"DBG_STATS_RX_MPA_VP%d", 0x014D0, 1}, - {"DBG_STATS_RX_FAU_VP%d", 0x014D8, 1}, - {"FBMC_VP_RDY_VP%d", 0x014F0, 1}, - {"VPATH_PCIPIF_INT_STATUS_VP%d", 0x01E00, 1}, - {"VPATH_PCIPIF_INT_MASK_VP%d", 0x01E08, 1}, - {"SRPCIM_MSG_TO_VPATH_REG_VP%d", 0x01E20, 1}, - {"SRPCIM_MSG_TO_VPATH_MASK_VP%d", 0x01E28, 1}, - {"SRPCIM_MSG_TO_VPATH_ALARM_VP%d", 0x01E30, 1}, - {"VPATH_TO_SRPCIM_WMSG_VP%d", 0x01EA0, 1}, - {"VPATH_TO_SRPCIM_WMSG_TRIG_VP%d", 0x01EA8, 1}, - {"VPATH_GENERAL_INT_STATUS_VP%d", 0x02000, 1}, - {"VPATH_GENERAL_INT_MASK_VP%d", 0x02008, 1}, - {"VPATH_PPIF_INT_STATUS_VP%d", 0x02010, 1}, - {"VPATH_PPIF_INT_MASK_VP%d", 0x02018, 1}, - {"KDFCCTL_ERRORS_REG_VP%d", 0x02020, 1}, - {"KDFCCTL_ERRORS_MASK_VP%d", 0x02028, 1}, - {"KDFCCTL_ERRORS_ALARM_VP%d", 0x02030, 1}, - {"GENERAL_ERRORS_REG_VP%d", 0x02040, 1}, - {"GENERAL_ERRORS_MASK_VP%d", 0x02048, 1}, - {"GENERAL_ERRORS_ALARM_VP%d", 0x02050, 1}, - {"PCI_CONFIG_ERRORS_REG_VP%d", 0x02058, 1}, - {"PCI_CONFIG_ERRORS_MASK_VP%d", 0x02060, 1}, - {"PCI_CONFIG_ERRORS_ALARM_VP%d", 0x02068, 1}, - {"MRPCIM_TO_VPATH_ALARM_REG_VP%d", 0x02070, 1}, - {"MRPCIM_TO_VPATH_ALARM_MASK_VP%d", 0x02078, 1}, - {"MRPCIM_TO_VPATH_ALARM_ALARM_VP%d", 0x02080, 1}, - {"SRPCIM_TO_VPATH_ALARM_REG_VP%d", 0x02088, 1}, - {"SRPCIM_TO_VPATH_ALARM_MASK_VP%d", 0x02090, 1}, - {"SRPCIM_TO_VPATH_ALARM_ALARM_VP%d", 0x02098, 1}, - {"KDFCCTL_STATUS_VP%d", 0x02108, 1}, - {"RSTHDLR_STATUS_VP%d", 0x02110, 1}, - {"FIFO%d_STATUS_VP%d", 0x02118, 3}, - {"TGT_ILLEGAL_ACCESS_VP%d", 0x02158, 1}, - {"VPATH_GENERAL_CFG1_VP%d", 0x02200, 1}, - {"VPATH_GENERAL_CFG2_VP%d", 0x02208, 1}, - {"VPATH_GENERAL_CFG3_VP%d", 0x02210, 1}, - {"KDFCCTL_CFG0_VP%d", 0x02220, 1}, - {"DBLGEN_CFG%d_VP%d", 0x02228, 8}, - {"STATS_CFG_VP%d", 0x02268, 1}, - {"INTERRUPT_CFG0_VP%d", 0x02270, 1}, - {"INTERRUPT_CFG2_VP%d", 0x02280, 1}, - {"ONE_SHOT_VECT%d_EN_VP%d", 0x02288, 4}, - {"PCI_CONFIG_ACCESS_CFG1_VP%d", 0x022B0, 1}, - {"PCI_CONFIG_ACCESS_CFG2_VP%d", 0x022B8, 1}, - {"PCI_CONFIG_ACCESS_STATUS_VP%d", 0x022C0, 1}, - {"VPATH_DEBUG_STATS%d_VP%d", 0x02300, 7}, - {"VPATH_GENSTATS_COUNT01_VP%d", 0x02338, 1}, - {"VPATH_GENSTATS_COUNT23_VP%d", 0x02340, 1}, - {"VPATH_GENSTATS_COUNT4_VP%d", 0x02348, 1}, - {"VPATH_GENSTATS_COUNT5_VP%d", 0x02350, 1}, - {"QCC_PCI_CFG_VP%d", 0x02540, 1}, - {"H2L_VPATH_CONFIG_VP%d", 0x02600, 1}, - {"H2L_ZERO_BYTE_READ_ADDRESS_VP%d", 0x02608, 1}, - {"PH2L_VP_CFG0_VP%d", 0x02640, 1} -}; - -vxge_pci_bar0_t reginfo_vpmgmt[] = -{ - {"ONE_CFG_SR_RDY", 0x00000, 1}, - {"SGRP_OWN", 0x00008, 1}, - {"VPATH_TO_FUNC_MAP_CFG1", 0x00040, 1}, - {"VPATH_IS_FIRST", 0x00048, 1}, - {"SRPCIM_TO_VPATH_WMSG", 0x00050, 1}, - {"SRPCIM_TO_VPATH_WMSG_TRIG", 0x00058, 1}, - {"TIM_VPATH_ASSIGNMENT", 0x00100, 1}, - {"RQA_TOP_PRTY_FOR_VP", 0x00140, 1}, - {"USDC_VPATH_OWN", 0x00180, 1}, - {"RXMAC_RX_PA_CFG0_VPMGMT_CLONE", 0x001C0, 1}, - {"RTS_MGR_CFG0_VPMGMT_CLONE", 0x001C8, 1}, - {"RTS_MGR_CRITERIA_PRIORITY_VPMGMT_CLONE", 0x001D0, 1}, - {"RXMAC_CFG0_PORT_VPMGMT_CLONE_%d", 0x001D8, 3}, - {"RXMAC_PAUSE_CFG_PORT_VPMGMT_CLONE_%d", 0x001F0, 3}, - {"XMAC_VSPORT_CHOICES_VP", 0x00240, 1}, - {"XGMAC_GEN_STATUS_VPMGMT_CLONE", 0x00260, 1}, - {"XGMAC_STATUS_PORT_VPMGMT_CLONE_%d", 0x00268, 2}, - {"XMAC_GEN_CFG_VPMGMT_CLONE", 0x00278, 1}, - {"XMAC_TIMESTAMP_VPMGMT_CLONE", 0x00280, 1}, - {"XMAC_STATS_GEN_CFG_VPMGMT_CLONE", 0x00288, 1}, - {"XMAC_CFG_PORT_VPMGMT_CLONE_%d", 0x00290, 3}, - {"TXMAC_GEN_CFG0_VPMGMT_CLONE", 0x002C0, 1}, - {"TXMAC_CFG0_PORT_VPMGMT_CLONE_%d", 0x002C8, 3}, - {"WOL_MP_CRC", 0x00300, 1}, - {"WOL_MP_MASK_A", 0x00308, 1}, - {"WOL_MP_MASK_B", 0x00310, 1}, - {"FAU_PA_CFG_VPMGMT_CLONE", 0x00360, 1}, - {"RX_DATAPATH_UTIL_VP_CLONE", 0x00368, 1}, - {"TX_DATAPATH_UTIL_VP_CLONE", 0x00380, 1} -}; - -vxge_pci_bar0_t reginfo_mrpcim[] = -{ - {"G3FBCT_INT_STATUS", 0x00000, 1}, - {"G3FBCT_INT_MASK", 0x00008, 1}, - {"G3FBCT_ERR_REG", 0x00010, 1}, - {"G3FBCT_ERR_MASK", 0x00018, 1}, - {"G3FBCT_ERR_ALARM", 0x00020, 1}, - {"G3FBCT_CONFIG%d", 0x00028, 3}, - {"G3FBCT_INIT%d", 0x00040, 6}, - {"G3FBCT_DLL_TRAINING1", 0x00070, 1}, - {"G3FBCT_DLL_TRAINING2", 0x00078, 1}, - {"G3FBCT_DLL_TRAINING3", 0x00080, 1}, - {"G3FBCT_DLL_TRAINING4", 0x00088, 1}, - {"G3FBCT_DLL_TRAINING6", 0x00090, 1}, - {"G3FBCT_DLL_TRAINING7", 0x00098, 1}, - {"G3FBCT_DLL_TRAINING8", 0x000A0, 1}, - {"G3FBCT_DLL_TRAINING9", 0x000A8, 1}, - {"G3FBCT_DLL_TRAINING5", 0x000B0, 1}, - {"G3FBCT_DLL_TRAINING10", 0x000B8, 1}, - {"G3FBCT_DLL_TRAINING11", 0x000C0, 1}, - {"G3FBCT_INIT6", 0x000C8, 1}, - {"G3FBCT_TEST0", 0x000D0, 1}, - {"G3FBCT_TEST01", 0x000D8, 1}, - {"G3FBCT_TEST1", 0x000E0, 1}, - {"G3FBCT_TEST2", 0x000E8, 1}, - {"G3FBCT_TEST11", 0x000F0, 1}, - {"G3FBCT_TEST21", 0x000F8, 1}, - {"G3FBCT_TEST3", 0x00100, 1}, - {"G3FBCT_TEST4", 0x00108, 1}, - {"G3FBCT_TEST31", 0x00110, 1}, - {"G3FBCT_TEST41", 0x00118, 1}, - {"G3FBCT_TEST5", 0x00120, 1}, - {"G3FBCT_TEST6", 0x00128, 1}, - {"G3FBCT_TEST51", 0x00130, 1}, - {"G3FBCT_TEST61", 0x00138, 1}, - {"G3FBCT_TEST7", 0x00140, 1}, - {"G3FBCT_TEST71", 0x00148, 1}, - {"G3FBCT_LOOP_BACK", 0x001B0, 1}, - {"G3FBCT_LOOP_BACK1", 0x001B8, 1}, - {"G3FBCT_LOOP_BACK2", 0x001C0, 1}, - {"G3FBCT_LOOP_BACK3", 0x001C8, 1}, - {"G3FBCT_LOOP_BACK4", 0x001D0, 1}, - {"G3FBCT_LOOP_BACK5", 0x001D8, 1}, - {"G3FBCT_LOOP_BACK_RDLL_%d", 0x00200, 4}, - {"G3FBCT_LOOP_BACK_WDLL_%d", 0x00220, 4}, - {"G3FBCT_TRAN_WRD_CNT", 0x00240, 1}, - {"G3FBCT_TRAN_AP_CNT", 0x00248, 1}, - {"G3FBCT_G3BIST", 0x00250, 1}, - {"WRDMA_INT_STATUS", 0x00A00, 1}, - {"WRDMA_INT_MASK", 0x00A08, 1}, - {"RC_ALARM_REG", 0x00A10, 1}, - {"RC_ALARM_MASK", 0x00A18, 1}, - {"RC_ALARM_ALARM", 0x00A20, 1}, - {"RXDRM_SM_ERR_REG", 0x00A28, 1}, - {"RXDRM_SM_ERR_MASK", 0x00A30, 1}, - {"RXDRM_SM_ERR_ALARM", 0x00A38, 1}, - {"RXDCM_SM_ERR_REG", 0x00A40, 1}, - {"RXDCM_SM_ERR_MASK", 0x00A48, 1}, - {"RXDCM_SM_ERR_ALARM", 0x00A50, 1}, - {"RXDWM_SM_ERR_REG", 0x00A58, 1}, - {"RXDWM_SM_ERR_MASK", 0x00A60, 1}, - {"RXDWM_SM_ERR_ALARM", 0x00A68, 1}, - {"RDA_ERR_REG", 0x00A70, 1}, - {"RDA_ERR_MASK", 0x00A78, 1}, - {"RDA_ERR_ALARM", 0x00A80, 1}, - {"RDA_ECC_DB_REG", 0x00A88, 1}, - {"RDA_ECC_DB_MASK", 0x00A90, 1}, - {"RDA_ECC_DB_ALARM", 0x00A98, 1}, - {"RDA_ECC_SG_REG", 0x00AA0, 1}, - {"RDA_ECC_SG_MASK", 0x00AA8, 1}, - {"RDA_ECC_SG_ALARM", 0x00AB0, 1}, - {"RQA_ERR_REG", 0x00AB8, 1}, - {"RQA_ERR_MASK", 0x00AC0, 1}, - {"RQA_ERR_ALARM", 0x00AC8, 1}, - {"FRF_ALARM_REG", 0x00AD0, 1}, - {"FRF_ALARM_MASK", 0x00AD8, 1}, - {"FRF_ALARM_ALARM", 0x00AE0, 1}, - {"ROCRC_ALARM_REG", 0x00AE8, 1}, - {"ROCRC_ALARM_MASK", 0x00AF0, 1}, - {"ROCRC_ALARM_ALARM", 0x00AF8, 1}, - {"WDE0_ALARM_REG", 0x00B00, 1}, - {"WDE0_ALARM_MASK", 0x00B08, 1}, - {"WDE0_ALARM_ALARM", 0x00B10, 1}, - {"WDE1_ALARM_REG", 0x00B18, 1}, - {"WDE1_ALARM_MASK", 0x00B20, 1}, - {"WDE1_ALARM_ALARM", 0x00B28, 1}, - {"WDE2_ALARM_REG", 0x00B30, 1}, - {"WDE2_ALARM_MASK", 0x00B38, 1}, - {"WDE2_ALARM_ALARM", 0x00B40, 1}, - {"WDE3_ALARM_REG", 0x00B48, 1}, - {"WDE3_ALARM_MASK", 0x00B50, 1}, - {"WDE3_ALARM_ALARM", 0x00B58, 1}, - {"RC_CFG", 0x00B60, 1}, - {"ECC_CFG", 0x00B68, 1}, - {"RXD_CFG_1BM", 0x00B70, 1}, - {"RXD_CFG1_1BM", 0x00B78, 1}, - {"RXD_CFG2_1BM", 0x00B80, 1}, - {"RXD_CFG3_1BM", 0x00B88, 1}, - {"RXD_CFG4_1BM", 0x00B90, 1}, - {"RXD_CFG_3BM", 0x00B98, 1}, - {"RXD_CFG1_3BM", 0x00BA0, 1}, - {"RXD_CFG2_3BM", 0x00BA8, 1}, - {"RXD_CFG3_3BM", 0x00BB0, 1}, - {"RXD_CFG4_3BM", 0x00BB8, 1}, - {"RXD_CFG_5BM", 0x00BC0, 1}, - {"RXD_CFG1_5BM", 0x00BC8, 1}, - {"RXD_CFG2_5BM", 0x00BD0, 1}, - {"RXD_CFG3_5BM", 0x00BD8, 1}, - {"RXD_CFG4_5BM", 0x00BE0, 1}, - {"RX_W_ROUND_ROBIN_%d", 0x00BE8, 22}, - {"RX_QUEUE_PRIORITY_%d", 0x00C98, 3}, - {"REPLICATION_QUEUE_PRIORITY", 0x00CC8, 1}, - {"RX_QUEUE_SELECT", 0x00CD0, 1}, - {"RQA_VPBP_CTRL", 0x00CD8, 1}, - {"RX_MULTI_CAST_CTRL", 0x00CE0, 1}, - {"WDE_PRM_CTRL", 0x00CE8, 1}, - {"NOA_CTRL", 0x00CF0, 1}, - {"PHASE_CFG", 0x00CF8, 1}, - {"RCQ_BYPQ_CFG", 0x00D00, 1}, - {"DOORBELL_INT_STATUS", 0x00E00, 1}, - {"DOORBELL_INT_MASK", 0x00E08, 1}, - {"KDFC_ERR_REG", 0x00E10, 1}, - {"KDFC_ERR_MASK", 0x00E18, 1}, - {"KDFC_ERR_REG_ALARM", 0x00E20, 1}, - {"USDC_ERR_REG", 0x00E28, 1}, - {"USDC_ERR_MASK", 0x00E30, 1}, - {"USDC_ERR_REG_ALARM", 0x00E38, 1}, - {"KDFC_VP_PARTITION_%d", 0x00E40, 9}, - {"KDFC_W_ROUND_ROBIN_%d", 0x00E88, 60}, - {"KDFC_ENTRY_TYPE_SEL_%d", 0x01068, 2}, - {"KDFC_FIFO_%d_CTRL", 0x01078, 51}, - {"KDFC_KRNL_USR_CTRL", 0x01210, 1}, - {"KDFC_PDA_MONITOR", 0x01218, 1}, - {"KDFC_MP_MONITOR", 0x01220, 1}, - {"KDFC_PE_MONITOR", 0x01228, 1}, - {"KDFC_READ_CNTRL", 0x01230, 1}, - {"KDFC_READ_DATA", 0x01238, 1}, - {"KDFC_FORCE_VALID_CTRL", 0x01240, 1}, - {"KDFC_MULTI_CYCLE_CTRL", 0x01248, 1}, - {"KDFC_ECC_CTRL", 0x01250, 1}, - {"KDFC_VPBP_CTRL", 0x01258, 1}, - {"RXMAC_INT_STATUS", 0x01600, 1}, - {"RXMAC_INT_MASK", 0x01608, 1}, - {"RXMAC_GEN_ERR_REG", 0x01618, 1}, - {"RXMAC_GEN_ERR_MASK", 0x01620, 1}, - {"RXMAC_GEN_ERR_ALARM", 0x01628, 1}, - {"RXMAC_ECC_ERR_REG", 0x01630, 1}, - {"RXMAC_ECC_ERR_MASK", 0x01638, 1}, - {"RXMAC_ECC_ERR_ALARM", 0x01640, 1}, - {"RXMAC_VARIOUS_ERR_REG", 0x01648, 1}, - {"RXMAC_VARIOUS_ERR_MASK", 0x01650, 1}, - {"RXMAC_VARIOUS_ERR_ALARM", 0x01658, 1}, - {"RXMAC_GEN_CFG", 0x01660, 1}, - {"RXMAC_AUTHORIZE_ALL_ADDR", 0x01668, 1}, - {"RXMAC_AUTHORIZE_ALL_VID", 0x01670, 1}, - {"RXMAC_THRESH_CROSS_REPL", 0x016B8, 1}, - {"RXMAC_RED_RATE_REPL_QUEUE", 0x016C0, 1}, - {"RXMAC_CFG0_PORT%d", 0x016E0, 3}, - {"RXMAC_CFG2_PORT%d", 0x01710, 3}, - {"RXMAC_PAUSE_CFG_PORT%d", 0x01728, 3}, - {"RXMAC_RED_CFG0_PORT%d", 0x01758, 3}, - {"RXMAC_RED_CFG1_PORT%d", 0x01770, 3}, - {"RXMAC_RED_CFG2_PORT%d", 0x01788, 3}, - {"RXMAC_LINK_UTIL_PORT%d", 0x017A0, 3}, - {"RXMAC_STATUS_PORT%d", 0x017D0, 3}, - {"RXMAC_RX_PA_CFG%d", 0x01800, 2}, - {"RTS_MGR_CFG%d", 0x01828, 2}, - {"RTS_MGR_CRITERIA_PRIORITY", 0x01838, 1}, - {"RTS_MGR_DA_PAUSE_CFG", 0x01840, 1}, - {"RTS_MGR_DA_SLOW_PROTO_CFG", 0x01848, 1}, - {"RTS_MGR_STEER_CTRL", 0x018A8, 1}, - {"RTS_MGR_STEER_DATA0", 0x018B0, 1}, - {"RTS_MGR_STEER_DATA1", 0x018B8, 1}, - {"RTS_MGR_STEER_VPATH_VECTOR", 0x018C0, 1}, - {"XMAC_STATS_RX_XGMII_CHAR", 0x01930, 1}, - {"XMAC_STATS_RX_XGMII_COLUMN1", 0x01938, 1}, - {"XMAC_STATS_RX_XGMII_COLUMN2", 0x01940, 1}, - {"XMAC_STATS_RX_XGMII_BEHAV_COLUMN2", 0x01948, 1}, - {"XMAC_RX_XGMII_CAPTURE_CTRL_PORT%d", 0x01950, 3}, - {"DBG_STAT_RX_ANY_FRMS", 0x01968, 1}, - {"RXMAC_RED_RATE_VP%d", 0x01A00, 17}, - {"RXMAC_THRESH_CROSS_VP%d", 0x01C00, 17}, - {"XGMAC_INT_STATUS", 0x01E00, 1}, - {"XGMAC_INT_MASK", 0x01E08, 1}, - {"XMAC_GEN_ERR_REG", 0x01E10, 1}, - {"XMAC_GEN_ERR_MASK", 0x01E18, 1}, - {"XMAC_GEN_ERR_ALARM", 0x01E20, 1}, - {"XMAC_LINK_ERR_PORT_REG%d", 0x01E28, 2}, - {"XMAC_LINK_ERR_PORT_MASK%d", 0x01E30, 2}, - {"XMAC_LINK_ERR_PORT_ALARM%d", 0x01E38, 2}, - {"XGXS_GEN_ERR_REG", 0x01E58, 1}, - {"XGXS_GEN_ERR_MASK", 0x01E60, 1}, - {"XGXS_GEN_ERR_ALARM", 0x01E68, 1}, - {"ASIC_NTWK_ERR_REG", 0x01E70, 1}, - {"ASIC_NTWK_ERR_MASK", 0x01E78, 1}, - {"ASIC_NTWK_ERR_ALARM", 0x01E80, 1}, - {"ASIC_GPIO_ERR_REG", 0x01E88, 1}, - {"ASIC_GPIO_ERR_MASK", 0x01E90, 1}, - {"ASIC_GPIO_ERR_ALARM", 0x01E98, 1}, - {"XGMAC_GEN_STATUS", 0x01EA0, 1}, - {"XGMAC_GEN_FW_MEMO_STATUS", 0x01EA8, 1}, - {"XGMAC_GEN_FW_MEMO_MASK", 0x01EB0, 1}, - {"XGMAC_GEN_FW_VPATH_TO_VSPORT_STATUS", 0x01EB8, 1}, - {"XGMAC_MAIN_CFG_PORT%d", 0x01EC0, 2}, - {"XGMAC_DEBOUNCE_PORT%d", 0x01ED0, 2}, - {"XGMAC_STATUS_PORT%d", 0x01EE0, 2}, - {"XMAC_GEN_CFG", 0x01F40, 1}, - {"XMAC_TIMESTAMP", 0x01F48, 1}, - {"XMAC_STATS_GEN_CFG", 0x01F50, 1}, - {"XMAC_STATS_SYS_CMD", 0x01F58, 1}, - {"XMAC_STATS_SYS_DATA", 0x01F60, 1}, - {"ASIC_NTWK_CTRL", 0x01F80, 1}, - {"ASIC_NTWK_CFG_SHOW_PORT_INFO", 0x01F88, 1}, - {"ASIC_NTWK_CFG_PORT_NUM", 0x01F90, 1}, - {"XMAC_CFG_PORT%d", 0x01F98, 3}, - {"XMAC_STATION_ADDR_PORT%d", 0x01FB0, 2}, - {"ASIC_LED_ACTIVITY_CTRL_PORT%d", 0x01FC0, 3}, - {"LAG_CFG", 0x02020, 1}, - {"LAG_STATUS", 0x02028, 1}, - {"LAG_ACTIVE_PASSIVE_CFG", 0x02030, 1}, - {"LAG_LACP_CFG", 0x02040, 1}, - {"LAG_TIMER_CFG_1", 0x02048, 1}, - {"LAG_TIMER_CFG_2", 0x02050, 1}, - {"LAG_SYS_ID", 0x02058, 1}, - {"LAG_SYS_CFG", 0x02060, 1}, - {"LAG_AGGR_ADDR_CFG%d", 0x02070, 2}, - {"LAG_AGGR_ID_CFG%d", 0x02080, 2}, - {"LAG_AGGR_ADMIN_KEY%d", 0x02090, 2}, - {"LAG_AGGR_ALT_ADMIN_KEY", 0x020A0, 1}, - {"LAG_AGGR_OPER_KEY%d", 0x020A8, 2}, - {"LAG_AGGR_PARTNER_SYS_ID%d", 0x020B8, 2}, - {"LAG_AGGR_PARTNER_INFO%d", 0x020C8, 2}, - {"LAG_AGGR_STATE%d", 0x020D8, 2}, - {"LAG_PORT_CFG%d", 0x020F0, 2}, - {"LAG_PORT_ACTOR_ADMIN_CFG%d", 0x02100, 2}, - {"LAG_PORT_ACTOR_ADMIN_STATE%d", 0x02110, 2}, - {"LAG_PORT_PARTNER_ADMIN_SYS_ID%d", 0x02120, 2}, - {"LAG_PORT_PARTNER_ADMIN_CFG%d", 0x02130, 2}, - {"LAG_PORT_PARTNER_ADMIN_STATE%d", 0x02140, 2}, - {"LAG_PORT_TO_AGGR%d", 0x02150, 2}, - {"LAG_PORT_ACTOR_OPER_KEY%d", 0x02160, 2}, - {"LAG_PORT_ACTOR_OPER_STATE%d", 0x02170, 2}, - {"LAG_PORT_PARTNER_OPER_SYS_ID%d", 0x02180, 2}, - {"LAG_PORT_PARTNER_OPER_INFO%d", 0x02190, 2}, - {"LAG_PORT_PARTNER_OPER_STATE%d", 0x021A0, 2}, - {"LAG_PORT_STATE_VARS%d", 0x021B0, 2}, - {"LAG_PORT_TIMER_CNTR%d", 0x021C0, 2}, - {"TRANSCEIVER_RESET_PORT%d", 0x021E0, 2}, - {"TRANSCEIVER_CTRL_PORT%d", 0x021F0, 2}, - {"ASIC_GPIO_CTRL", 0x02200, 1}, - {"ASIC_LED_BEACON_CTRL", 0x02208, 1}, - {"ASIC_LED_CTRL%d", 0x02210, 2}, - {"ASIC_LED_DEBUG_SEL", 0x02220, 1}, - {"USDC_SGRP_PARTITION", 0x02300, 1}, - {"USDC_UGRP_PRIORITY_%d", 0x02308, 17}, - {"UGRP_HTN_WRR_PRIORITY_%d", 0x02398, 20}, - {"USDC_VPLANE_%d", 0x02438, 17}, - {"USDC_SGRP_ASSIGNMENT", 0x024C8, 1}, - {"USDC_CNTRL", 0x024D0, 1}, - {"USDC_READ_CNTRL", 0x024D8, 1}, - {"USDC_READ_DATA", 0x024E0, 1}, - {"UGRP_SRQ_WRR_PRIORITY_%d", 0x02500, 20}, - {"UGRP_CQRQ_WRR_PRIORITY_%d", 0x025A0, 20}, - {"USDC_ECC_CTRL", 0x02640, 1}, - {"USDC_VPBP_CTRL", 0x02648, 1}, - {"RTDMA_INT_STATUS", 0x02700, 1}, - {"RTDMA_INT_MASK", 0x02708, 1}, - {"PDA_ALARM_REG", 0x02710, 1}, - {"PDA_ALARM_MASK", 0x02718, 1}, - {"PDA_ALARM_ALARM", 0x02720, 1}, - {"PCC_ERROR_REG", 0x02728, 1}, - {"PCC_ERROR_MASK", 0x02730, 1}, - {"PCC_ERROR_ALARM", 0x02738, 1}, - {"LSO_ERROR_REG", 0x02740, 1}, - {"LSO_ERROR_MASK", 0x02748, 1}, - {"LSO_ERROR_ALARM", 0x02750, 1}, - {"SM_ERROR_REG", 0x02758, 1}, - {"SM_ERROR_MASK", 0x02760, 1}, - {"SM_ERROR_ALARM", 0x02768, 1}, - {"PDA_CONTROL", 0x02770, 1}, - {"PDA_PDA_CONTROL_0", 0x02778, 1}, - {"PDA_PDA_SERVICE_STATE_%d", 0x02780, 3}, - {"PDA_PDA_TASK_PRIORITY_NUMBER", 0x02798, 1}, - {"PDA_VP", 0x027A0, 1}, - {"TXD_OWNERSHIP_CTRL", 0x027A8, 1}, - {"PCC_CFG", 0x027B0, 1}, - {"PCC_CONTROL", 0x027B8, 1}, - {"PDA_STATUS1", 0x027C0, 1}, - {"RTDMA_BW_TIMER", 0x027C8, 1}, - {"G3CMCT_INT_STATUS", 0x02900, 1}, - {"G3CMCT_INT_MASK", 0x02908, 1}, - {"G3CMCT_ERR_REG", 0x02910, 1}, - {"G3CMCT_ERR_MASK", 0x02918, 1}, - {"G3CMCT_ERR_ALARM", 0x02920, 1}, - {"G3CMCT_CONFIG%d", 0x02928, 3}, - {"G3CMCT_INIT%d", 0x02940, 6}, - {"G3CMCT_DLL_TRAINING1", 0x02970, 1}, - {"G3CMCT_DLL_TRAINING2", 0x02978, 1}, - {"G3CMCT_DLL_TRAINING3", 0x02980, 1}, - {"G3CMCT_DLL_TRAINING4", 0x02988, 1}, - {"G3CMCT_DLL_TRAINING6", 0x02990, 1}, - {"G3CMCT_DLL_TRAINING7", 0x02998, 1}, - {"G3CMCT_DLL_TRAINING8", 0x029A0, 1}, - {"G3CMCT_DLL_TRAINING9", 0x029A8, 1}, - {"G3CMCT_DLL_TRAINING5", 0x029B0, 1}, - {"G3CMCT_DLL_TRAINING10", 0x029B8, 1}, - {"G3CMCT_DLL_TRAINING11", 0x029C0, 1}, - {"G3CMCT_INIT6", 0x029C8, 1}, - {"G3CMCT_TEST0", 0x029D0, 1}, - {"G3CMCT_TEST01", 0x029D8, 1}, - {"G3CMCT_TEST1", 0x029E0, 1}, - {"G3CMCT_TEST2", 0x029E8, 1}, - {"G3CMCT_TEST11", 0x029F0, 1}, - {"G3CMCT_TEST21", 0x029F8, 1}, - {"G3CMCT_TEST3", 0x02A00, 1}, - {"G3CMCT_TEST4", 0x02A08, 1}, - {"G3CMCT_TEST31", 0x02A10, 1}, - {"G3CMCT_TEST41", 0x02A18, 1}, - {"G3CMCT_TEST5", 0x02A20, 1}, - {"G3CMCT_TEST6", 0x02A28, 1}, - {"G3CMCT_TEST51", 0x02A30, 1}, - {"G3CMCT_TEST61", 0x02A38, 1}, - {"G3CMCT_TEST7", 0x02A40, 1}, - {"G3CMCT_TEST71", 0x02A48, 1}, - {"G3CMCT_INIT41", 0x02A50, 1}, - {"G3CMCT_TEST8", 0x02A58, 1}, - {"G3CMCT_TEST9", 0x02A60, 1}, - {"G3CMCT_TEST10", 0x02A68, 1}, - {"G3CMCT_TEST101", 0x02A70, 1}, - {"G3CMCT_TEST12", 0x02A78, 1}, - {"G3CMCT_TEST13", 0x02A80, 1}, - {"G3CMCT_TEST14", 0x02A88, 1}, - {"G3CMCT_TEST15", 0x02A90, 1}, - {"G3CMCT_TEST16", 0x02A98, 1}, - {"G3CMCT_TEST17", 0x02AA0, 1}, - {"G3CMCT_TEST18", 0x02AA8, 1}, - {"G3CMCT_LOOP_BACK", 0x02AB0, 1}, - {"G3CMCT_LOOP_BACK1", 0x02AB8, 1}, - {"G3CMCT_LOOP_BACK2", 0x02AC0, 1}, - {"G3CMCT_LOOP_BACK3", 0x02AC8, 1}, - {"G3CMCT_LOOP_BACK4", 0x02AD0, 1}, - {"G3CMCT_LOOP_BACK5", 0x02AD8, 1}, - {"G3CMCT_LOOP_BACK_RDLL_%d", 0x02B00, 4}, - {"G3CMCT_LOOP_BACK_WDLL_%d", 0x02B20, 4}, - {"G3CMCT_TRAN_WRD_CNT", 0x02B40, 1}, - {"G3CMCT_TRAN_AP_CNT", 0x02B48, 1}, - {"G3CMCT_G3BIST", 0x02B50, 1}, - {"MC_INT_STATUS", 0x03000, 1}, - {"MC_INT_MASK", 0x03008, 1}, - {"MC_ERR_REG", 0x03010, 1}, - {"MC_ERR_MASK", 0x03018, 1}, - {"MC_ERR_ALARM", 0x03020, 1}, - {"GROCRC_ALARM_REG", 0x03028, 1}, - {"GROCRC_ALARM_MASK", 0x03030, 1}, - {"GROCRC_ALARM_ALARM", 0x03038, 1}, - {"RX_THRESH_CFG_REPL", 0x03100, 1}, - {"DBG_REG1_%d", 0x03108, 8}, - {"DBG_REG2", 0x03148, 1}, - {"DBG_REG3", 0x03150, 1}, - {"DBG_REG4", 0x03158, 1}, - {"DBG_REG5", 0x03160, 1}, - {"RX_QUEUE_CFG", 0x03200, 1}, - {"RX_QUEUE_SIZE_Q%d", 0x03208, 15}, - {"RX_QUEUE_SIZE_Q15", 0x03280, 0}, - {"RX_QUEUE_SIZE_Q16", 0x03288, 0}, - {"RX_QUEUE_SIZE_Q17", 0x03290, 0}, - {"RX_QUEUE_START_Q%d", 0x032A0, 18}, - {"FM_DEFINITION", 0x03330, 1}, - {"TRAFFIC_CTRL", 0x03380, 1}, - {"XFMD_ARB_CTRL", 0x03388, 1}, - {"XFMD_ARB_CTRL1", 0x03390, 1}, - {"RD_TRANC_CTRL", 0x03398, 1}, - {"FM_ARB", 0x033A0, 1}, - {"ARB", 0x033A8, 1}, - {"SETTINGS0", 0x033B0, 1}, - {"FBMC_ECC_CFG", 0x033B8, 1}, - {"PCIPIF_INT_STATUS", 0x03400, 1}, - {"PCIPIF_INT_MASK", 0x03408, 1}, - {"DBECC_ERR_REG", 0x03410, 1}, - {"DBECC_ERR_MASK", 0x03418, 1}, - {"DBECC_ERR_ALARM", 0x03420, 1}, - {"SBECC_ERR_REG", 0x03428, 1}, - {"SBECC_ERR_MASK", 0x03430, 1}, - {"SBECC_ERR_ALARM", 0x03438, 1}, - {"GENERAL_ERR_REG", 0x03440, 1}, - {"GENERAL_ERR_MASK", 0x03448, 1}, - {"GENERAL_ERR_ALARM", 0x03450, 1}, - {"SRPCIM_MSG_REG", 0x03458, 1}, - {"SRPCIM_MSG_MASK", 0x03460, 1}, - {"SRPCIM_MSG_ALARM", 0x03468, 1}, - {"GCMG1_INT_STATUS", 0x03600, 1}, - {"GCMG1_INT_MASK", 0x03608, 1}, - {"GSSCC_ERR_REG", 0x03610, 1}, - {"GSSCC_ERR_MASK", 0x03618, 1}, - {"GSSCC_ERR_ALARM", 0x03620, 1}, - {"GSSC_ERR0_REG_%d", 0x03628, 3}, - {"GSSC_ERR0_MASK_%d", 0x03630, 3}, - {"GSSC_ERR0_ALARM_%d", 0x03638, 3}, - {"GSSC_ERR1_REG_%d", 0x03670, 3}, - {"GSSC_ERR1_MASK_%d", 0x03678, 3}, - {"GSSC_ERR1_ALARM_%d", 0x03680, 3}, - {"GQCC_ERR_REG", 0x036B8, 1}, - {"GQCC_ERR_MASK", 0x036C0, 1}, - {"GQCC_ERR_ALARM", 0x036C8, 1}, - {"UQM_ERR_REG", 0x036D0, 1}, - {"UQM_ERR_MASK", 0x036D8, 1}, - {"UQM_ERR_ALARM", 0x036E0, 1}, - {"SSCC_CONFIG", 0x036E8, 1}, - {"SSCC_MASK_%d", 0x036F0, 6}, - {"GCMG1_ECC", 0x03720, 1}, - {"PCMG1_INT_STATUS", 0x03A00, 1}, - {"PCMG1_INT_MASK", 0x03A08, 1}, - {"PSSCC_ERR_REG", 0x03A10, 1}, - {"PSSCC_ERR_MASK", 0x03A18, 1}, - {"PSSCC_ERR_ALARM", 0x03A20, 1}, - {"PQCC_ERR_REG", 0x03A28, 1}, - {"PQCC_ERR_MASK", 0x03A30, 1}, - {"PQCC_ERR_ALARM", 0x03A38, 1}, - {"PQCC_CQM_ERR_REG", 0x03A40, 1}, - {"PQCC_CQM_ERR_MASK", 0x03A48, 1}, - {"PQCC_CQM_ERR_ALARM", 0x03A50, 1}, - {"PQCC_SQM_ERR_REG", 0x03A58, 1}, - {"PQCC_SQM_ERR_MASK", 0x03A60, 1}, - {"PQCC_SQM_ERR_ALARM", 0x03A68, 1}, - {"QCC_SRQ_CQRQ", 0x03A70, 1}, - {"QCC_ERR_POLICY", 0x03A78, 1}, - {"QCC_BP_CTRL", 0x03A80, 1}, - {"PCMG1_ECC", 0x03A88, 1}, - {"QCC_CQM_CQRQ_ID", 0x03A90, 1}, - {"QCC_SQM_SRQ_ID", 0x03A98, 1}, - {"QCC_CQM_FLM_ID", 0x03AA0, 1}, - {"QCC_SQM_FLM_ID", 0x03AA8, 1}, - {"ONE_INT_STATUS", 0x04000, 1}, - {"ONE_INT_MASK", 0x04008, 1}, - {"RPE_ERR_REG", 0x04010, 1}, - {"RPE_ERR_MASK", 0x04018, 1}, - {"RPE_ERR_ALARM", 0x04020, 1}, - {"PE_ERR_REG", 0x04028, 1}, - {"PE_ERR_MASK", 0x04030, 1}, - {"PE_ERR_ALARM", 0x04038, 1}, - {"RXPE_ERR_REG", 0x04040, 1}, - {"RXPE_ERR_MASK", 0x04048, 1}, - {"RXPE_ERR_ALARM", 0x04050, 1}, - {"DLM_ERR_REG", 0x04058, 1}, - {"DLM_ERR_MASK", 0x04060, 1}, - {"DLM_ERR_ALARM", 0x04068, 1}, - {"OES_ERR_REG", 0x04070, 1}, - {"OES_ERR_MASK", 0x04078, 1}, - {"OES_ERR_ALARM", 0x04080, 1}, - {"TXPE_ERR_REG", 0x04088, 1}, - {"TXPE_ERR_MASK", 0x04090, 1}, - {"TXPE_ERR_ALARM", 0x04098, 1}, - {"TXPE_BCC_MEM_SG_ECC_ERR_REG", 0x040A0, 1}, - {"TXPE_BCC_MEM_SG_ECC_ERR_MASK", 0x040A8, 1}, - {"TXPE_BCC_MEM_SG_ECC_ERR_ALARM", 0x040B0, 1}, - {"TXPE_BCC_MEM_DB_ECC_ERR_REG", 0x040B8, 1}, - {"TXPE_BCC_MEM_DB_ECC_ERR_MASK", 0x040C0, 1}, - {"TXPE_BCC_MEM_DB_ECC_ERR_ALARM", 0x040C8, 1}, - {"RPE_FSM_ERR_REG", 0x040D0, 1}, - {"RPE_FSM_ERR_MASK", 0x040D8, 1}, - {"RPE_FSM_ERR_ALARM", 0x040E0, 1}, - {"ONE_CFG", 0x04100, 1}, - {"SGRP_ALLOC_%d", 0x04108, 17}, - {"SGRP_IWARP_LRO_ALLOC", 0x04190, 1}, - {"RPE_CFG0", 0x04198, 1}, - {"RPE_CFG1", 0x041A0, 1}, - {"RPE_CFG2", 0x041A8, 1}, - {"RPE_CFG5", 0x041C0, 1}, - {"WQEOWN%d", 0x041C8, 2}, - {"RPE_WQEOWN2", 0x041D8, 1}, - {"PE_CTXT", 0x04200, 1}, - {"PE_CFG", 0x04208, 1}, - {"PE_STATS_CMD", 0x04210, 1}, - {"PE_STATS_DATA", 0x04218, 1}, - {"RXPE_FP_MASK", 0x04220, 1}, - {"RXPE_CFG", 0x04228, 1}, - {"PE_XT_CTRL%d", 0x04230, 4}, - {"PET_IWARP_COUNTERS", 0x04250, 1}, - {"PET_IWARP_SLOW_COUNTER", 0x04258, 1}, - {"PET_IWARP_TIMERS", 0x04260, 1}, - {"PET_LRO_CFG", 0x04268, 1}, - {"PET_LRO_COUNTERS", 0x04270, 1}, - {"PET_TIMER_BP_CTRL", 0x04278, 1}, - {"PE_VP_ACK_%d", 0x04280, 17}, - {"PE_VP%d", 0x04308, 17}, - {"DLM_CFG", 0x04390, 1}, - {"TXPE_TOWI_CFG", 0x04400, 1}, - {"TXPE_PMON", 0x04410, 1}, - {"TXPE_PMON_DOWNCOUNT", 0x04418, 1}, - {"TXPE_PMON_EVENT", 0x04420, 1}, - {" TXPE_PMON_OTHER", 0x04428, 1}, - {"OES_INEVT", 0x04500, 1}, - {"OES_INBKBKEVT", 0x04508, 1}, - {"OES_INEVT_WRR%d", 0x04510, 2}, - {"OES_PENDEVT", 0x04520, 1}, - {"OES_PENDBKBKEVT", 0x04528, 1}, - {"OES_PENDEVT_WRR%d", 0x04530, 2}, - {"OES_PEND_QUEUE", 0x04540, 1}, - {"ROCRC_BYPQ%d_STAT_WATERMARK", 0x04800, 3}, - {"NOA_WCT_CTRL", 0x04818, 1}, - {"RC_CFG2", 0x04820, 1}, - {"RC_CFG3", 0x04828, 1}, - {"RX_MULTI_CAST_CTRL1", 0x04830, 1}, - {"RXDM_DBG_RD", 0x04838, 1}, - {"RXDM_DBG_RD_DATA", 0x04840, 1}, - {"RQA_TOP_PRTY_FOR_VH%d", 0x04848, 17}, - {"TIM_STATUS", 0x04900, 1}, - {"TIM_ECC_ENABLE", 0x04908, 1}, - {"TIM_BP_CTRL", 0x04910, 1}, - {"TIM_RESOURCE_ASSIGNMENT_VH%d", 0x04918, 17}, - {"TIM_BMAP_MAPPING_VP_ERR%d", 0x049A0, 17}, - {"GCMG2_INT_STATUS", 0x04B00, 1}, - {"GCMG2_INT_MASK", 0x04B08, 1}, - {"GXTMC_ERR_REG", 0x04B10, 1}, - {"GXTMC_ERR_MASK", 0x04B18, 1}, - {"GXTMC_ERR_ALARM", 0x04B20, 1}, - {"CMC_ERR_REG", 0x04B28, 1}, - {"CMC_ERR_MASK", 0x04B30, 1}, - {"CMC_ERR_ALARM", 0x04B38, 1}, - {"GCP_ERR_REG", 0x04B40, 1}, - {"GCP_ERR_MASK", 0x04B48, 1}, - {"GCP_ERR_ALARM", 0x04B50, 1}, - {"CMC_L2_CLIENT_UQM_1", 0x04B58, 1}, - {"CMC_L2_CLIENT_SSC_L", 0x04B60, 1}, - {"CMC_L2_CLIENT_QCC_SQM_0", 0x04B68, 1}, - {"CMC_L2_CLIENT_DAM_0", 0x04B70, 1}, - {"CMC_L2_CLIENT_H2L_0", 0x04B78, 1}, - {"CMC_L2_CLIENT_STC_0", 0x04B80, 1}, - {"CMC_L2_CLIENT_XTMC_0", 0x04B88, 1}, - {"CMC_WRR_L2_CALENDAR_%d", 0x04B90, 4}, - {"CMC_L3_CLIENT_QCC_SQM_1", 0x04BB0, 1}, - {"CMC_L3_CLIENT_QCC_CQM", 0x04BB8, 1}, - {"CMC_L3_CLIENT_DAM_1", 0x04BC0, 1}, - {"CMC_L3_CLIENT_H2L_1", 0x04BC8, 1}, - {"CMC_L3_CLIENT_STC_1", 0x04BD0, 1}, - {"CMC_L3_CLIENT_XTMC_1", 0x04BD8, 1}, - {"CMC_WRR_L3_CALENDAR_%d", 0x04BE0, 3}, - {"CMC_USER_DOORBELL_PARTITION", 0x04BF8, 1}, - {"CMC_HIT_RECORD_PARTITION_%d", 0x04C00, 8}, - {"CMC_C_SCR_RECORD_PARTITION_%d", 0x04C40, 8}, - {"CMC_WQE_OD_GROUP_RECORD_PARTITION", 0x04C80, 1}, - {"CMC_ACK_RECORD_PARTITION", 0x04C88, 1}, - {"CMC_LIRR_RECORD_PARTITION", 0x04C90, 1}, - {"CMC_RIRR_RECORD_PARTITION", 0x04C98, 1}, - {"CMC_TCE_RECORD_PARTITION", 0x04CA0, 1}, - {"CMC_HOQ_RECORD_PARTITION", 0x04CA8, 1}, - {"CMC_STAG_VP_RECORD_PARTITION_%d", 0x04CB0, 17}, - {"CMC_R_SCR_RECORD_PARTITION", 0x04D38, 1}, - {"CMC_CQRQ_CONTEXT_RECORD_PARTITION", 0x04D40, 1}, - {"CMC_CQE_GROUP_RECORD_PARTITION", 0x04D48, 1}, - {"CMC_P_SCR_RECORD_PARTITION", 0x04D50, 1}, - {"CMC_NCE_CONTEXT_RECORD_PARTITION", 0x04D58, 1}, - {"CMC_BYPASS_QUEUE_PARTITION", 0x04D60, 1}, - {"CMC_H_SCR_RECORD_PARTITION", 0x04D68, 1}, - {"CMC_PBL_RECORD_PARTITION", 0x04D70, 1}, - {"CMC_LIT_RECORD_PARTITION", 0x04D78, 1}, - {"CMC_SRQ_CONTEXT_RECORD_PARTITION", 0x04D80, 1}, - {"CMC_P_SCR_RECORD", 0x04D88, 1}, - {"CMC_DEVICE_SELECT", 0x04D90, 1}, - {"G3IF_FIFO_DST_ECC", 0x04D98, 1}, - {"GXTMC_CFG", 0x04DA0, 1}, - {"PCMG2_INT_STATUS", 0x04F00, 1}, - {"PCMG2_INT_MASK", 0x04F08, 1}, - {"PXTMC_ERR_REG", 0x04F10, 1}, - {"PXTMC_ERR_MASK", 0x04F18, 1}, - {"PXTMC_ERR_ALARM", 0x04F20, 1}, - {"CP_ERR_REG", 0x04F28, 1}, - {"CP_ERR_MASK", 0x04F30, 1}, - {"CP_ERR_ALARM", 0x04F38, 1}, - {"CP_XT_CTRL1", 0x04F40, 1}, - {"CP_GEN_CFG", 0x04F48, 1}, - {"CP_EXC_REG", 0x04F50, 1}, - {"CP_EXC_MASK", 0x04F58, 1}, - {"CP_EXC_ALARM", 0x04F60, 1}, - {"CP_EXC_CAUSE", 0x04F68, 1}, - {"XTMC_IMG_CTRL%d", 0x04FE8, 5}, - {"PXTMC_CFG0%d", 0x05010, 2}, - {"XTMC_MEM_CFG", 0x05020, 1}, - {"XTMC_MEM_BYPASS_CFG", 0x05028, 1}, - {"XTMC_CXP_REGION0", 0x05030, 1}, - {"XTMC_MXP_REGION0", 0x05038, 1}, - {"XTMC_UXP_REGION0", 0x05040, 1}, - {"XTMC_CXP_REGION1", 0x05048, 1}, - {"XTMC_MXP_REGION1", 0x05050, 1}, - {"XTMC_UXP_REGION1", 0x05058, 1}, - {"XTMC_CXP_REGION2", 0x05060, 1}, - {"XTMC_MXP_REGION2", 0x05068, 1}, - {"XTMC_UXP_REGION2", 0x05070, 1}, - {"MSG_INT_STATUS", 0x05200, 1}, - {"MSG_INT_MASK", 0x05208, 1}, - {"TIM_ERR_REG", 0x05210, 1}, - {"TIM_ERR_MASK", 0x05218, 1}, - {"TIM_ERR_ALARM", 0x05220, 1}, - {"MSG_ERR_REG", 0x05228, 1}, - {"MSG_ERR_MASK", 0x05230, 1}, - {"MSG_ERR_ALARM", 0x05238, 1}, - {"MSG_XT_CTRL", 0x05240, 1}, - {"MSG_DISPATCH", 0x052A8, 1}, - {"MSG_EXC_REG", 0x05340, 1}, - {"MSG_EXC_MASK", 0x05348, 1}, - {"MSG_EXC_ALARM", 0x05350, 1}, - {"MSG_EXC_CAUSE", 0x05358, 1}, - {"MSG_DIRECT_PIC", 0x05368, 1}, - {"UMQ_IR_TEST_VPA", 0x05370, 1}, - {"UMQ_IR_TEST_BYTE", 0x05378, 1}, - {"MSG_ERR2_REG", 0x05380, 1}, - {"MSG_ERR2_MASK", 0x05388, 1}, - {"MSG_ERR2_ALARM", 0x05390, 1}, - {"MSG_ERR3_REG", 0x05398, 1}, - {"MSG_ERR3_MASK", 0x053A0, 1}, - {"MSG_ERR3_ALARM", 0x053A8, 1}, - {"UMQ_IR_TEST_BYTE_NOTIFY", 0x053B0, 1}, - {"MSG_BP_CTRL", 0x053B8, 1}, - {"UMQ_BWR_PFCH_INIT_%d", 0x053C0, 17}, - {"UMQ_BWR_PFCH_INIT_NOTIFY_%d", 0x05448, 17}, - {"UMQ_BWR_EOL", 0x054D0, 1}, - {"UMQ_BWR_EOL_LATENCY_NOTIFY", 0x054D8, 1}, - {"FAU_GEN_ERR_REG", 0x05600, 1}, - {"FAU_GEN_ERR_MASK", 0x05608, 1}, - {"FAU_GEN_ERR_ALARM", 0x05610, 1}, - {"FAU_ECC_ERR_REG", 0x05618, 1}, - {"FAU_ECC_ERR_MASK", 0x05620, 1}, - {"FAU_ECC_ERR_ALARM", 0x05628, 1}, - {"FAU_GLOBAL_CFG", 0x05648, 1}, - {"RX_DATAPATH_UTIL", 0x05650, 1}, - {"FAU_PA_CFG", 0x05658, 1}, - {"DBG_STATS_FAU_RX_PATH", 0x05668, 1}, - {"FAU_AUTO_LRO_CONTROL", 0x05670, 1}, - {"FAU_AUTO_LRO_DATA_%d", 0x05678, 5}, - {"FAU_LAG_CFG", 0x056C0, 1}, - {"FAU_MPA_CFG", 0x05700, 1}, - {"XMAC_RX_XGMII_CAPTURE_DATA_PORT%d", 0x057A0, 3}, - {"TPA_INT_STATUS", 0x05800, 1}, - {"TPA_INT_MASK", 0x05808, 1}, - {"ORP_ERR_REG", 0x05810, 1}, - {"ORP_ERR_MASK", 0x05818, 1}, - {"ORP_ERR_ALARM", 0x05820, 1}, - {"PTM_ALARM_REG", 0x05828, 1}, - {"PTM_ALARM_MASK", 0x05830, 1}, - {"PTM_ALARM_ALARM", 0x05838, 1}, - {"TPA_ERROR_REG", 0x05840, 1}, - {"TPA_ERROR_MASK", 0x05848, 1}, - {"TPA_ERROR_ALARM", 0x05850, 1}, - {"TPA_GLOBAL_CFG", 0x05858, 1}, - {"TX_DATAPATH_UTIL", 0x05860, 1}, - {"ORP_CFG", 0x05868, 1}, - {"PTM_ECC_CFG", 0x05870, 1}, - {"PTM_PHASE_CFG", 0x05878, 1}, - {"ORP_LRO_EVENTS", 0x05880, 1}, - {"ORP_BS_EVENTS", 0x05888, 1}, - {"ORP_IWARP_EVENTS", 0x05890, 1}, - {"DBG_STATS_TPA_TX_PATH", 0x05898, 1}, - {"TMAC_INT_STATUS", 0x05900, 1}, - {"TMAC_INT_MASK", 0x05908, 1}, - {"TXMAC_GEN_ERR_REG", 0x05910, 1}, - {"TXMAC_GEN_ERR_MASK", 0x05918, 1}, - {"TXMAC_GEN_ERR_ALARM", 0x05920, 1}, - {"TXMAC_ECC_ERR_REG", 0x05928, 1}, - {"TXMAC_ECC_ERR_MASK", 0x05930, 1}, - {"TXMAC_ECC_ERR_ALARM", 0x05938, 1}, - {"TXMAC_GEN_CFG1", 0x05948, 1}, - {"TXMAC_ERR_INJECT_CFG", 0x05958, 1}, - {"TXMAC_FRMGEN_CFG", 0x05960, 1}, - {"TXMAC_FRMGEN_CONTENTS", 0x05968, 1}, - {"TXMAC_FRMGEN_DATA", 0x05970, 1}, - {"DBG_STAT_TX_ANY_FRMS", 0x05978, 1}, - {"TXMAC_LINK_UTIL_PORT%d", 0x059A0, 3}, - {"TXMAC_CFG0_PORT%d", 0x059B8, 3}, - {"TXMAC_CFG1_PORT%d", 0x059D0, 3}, - {"TXMAC_STATUS_PORT%d", 0x059E8, 3}, - {"LAG_DISTRIB_DEST", 0x05A20, 1}, - {"LAG_MARKER_CFG", 0x05A28, 1}, - {"LAG_TX_CFG", 0x05A30, 1}, - {"LAG_TX_STATUS", 0x05A38, 1}, - {"TXMAC_STATS_TX_XGMII_CHAR", 0x05A50, 1}, - {"TXMAC_STATS_TX_XGMII_COLUMN1", 0x05A58, 1}, - {"TXMAC_STATS_TX_XGMII_COLUMN2", 0x05A60, 1}, - {"TXMAC_STATS_TX_XGMII_BEHAV_COLUMN2", 0x05A68, 1}, - {"SHAREDIO_STATUS", 0x05B00, 1}, - {"CRDT_STATUS1_VPLANE%d", 0x05B08, 17}, - {"CRDT_STATUS2_VPLANE%d", 0x05B90, 17}, - {"CRDT_STATUS3_VPLANE%d", 0x05C18, 17}, - {"CRDT_STATUS4_VPLANE%d", 0x05CA0, 17}, - {"CRDT_STATUS5", 0x05D28, 1}, - {"CRDT_STATUS6", 0x05D30, 1}, - {"CRDT_STATUS7", 0x05D38, 1}, - {"CRDT_STATUS8", 0x05D40, 1}, - {"SRPCIM_TO_MRPCIM_VPLANE_RMSG_%d", 0x05D48, 17}, - {"PCIE_LANE_CFG1", 0x06000, 1}, - {"PCIE_LANE_CFG2", 0x06008, 1}, - {"PCICFG_NO_TO_FUNC_CFG_%d", 0x06010, 25}, - {"RESOURCE_TO_VPLANE_CFG_%d", 0x060D8, 17}, - {"PCICFG_NO_TO_VPLANE_CFG_%d", 0x06160, 25}, - {"GENERAL_CFG", 0x06228, 1}, - {"START_BIST", 0x06230, 1}, - {"BIST_CFG", 0x06238, 1}, - {"PCI_LINK_CONTROL", 0x06240, 1}, - {"SHOW_SRIOV_CAP", 0x06248, 1}, - {"LINK_RST_WAIT_CNT", 0x06250, 1}, - {"PCIE_BASED_CRDT_CFG1", 0x06258, 1}, - {"PCIE_BASED_CRDT_CFG2", 0x06260, 1}, - {"SHAREDIO_ABS_BASED_CRDT_CFG1_VPLANE%d", 0x06268, 17}, - {"SHAREDIO_ABS_BASED_CRDT_CFG2_VPLANE%d", 0x062F0, 17}, - {"ARBITER_CFG", 0x06378, 1}, - {"SERDES_CFG1", 0x06380, 1}, - {"SERDES_CFG2", 0x06388, 1}, - {"SERDES_CFG3", 0x06390, 1}, - {"VHLABEL_TO_VPLANE_CFG_%d", 0x06398, 17}, - {"MRPCIM_TO_SRPCIM_VPLANE_WMSG_%d", 0x06420, 17}, - {"MRPCIM_TO_SRPCIM_VPLANE_WMSG_TRIG_%d", 0x064A8, 17}, - {"DEBUG_STATS%d", 0x06530, 3}, - {"DEBUG_STATS3_VPLANE%d", 0x06548, 17}, - {"DEBUG_STATS4_VPLANE%d", 0x065D0, 17}, - {"RC_RXDMEM_END_OFST_%d", 0x06B00, 16}, - {"MRPCIM_GENERAL_INT_STATUS", 0x07000, 1}, - {"MRPCIM_GENERAL_INT_MASK", 0x07008, 1}, - {"MRPCIM_PPIF_INT_STATUS", 0x07010, 1}, - {"MRPCIM_PPIF_INT_MASK", 0x07018, 1}, - {"INI_ERRORS_REG", 0x07028, 1}, - {"INI_ERRORS_MASK", 0x07030, 1}, - {"INI_ERRORS_ALARM", 0x07038, 1}, - {"DMA_ERRORS_REG", 0x07040, 1}, - {"DMA_ERRORS_MASK", 0x07048, 1}, - {"DMA_ERRORS_ALARM", 0x07050, 1}, - {"TGT_ERRORS_REG", 0x07058, 1}, - {"TGT_ERRORS_MASK", 0x07060, 1}, - {"TGT_ERRORS_ALARM", 0x07068, 1}, - {"CONFIG_ERRORS_REG", 0x07070, 1}, - {"CONFIG_ERRORS_MASK", 0x07078, 1}, - {"CONFIG_ERRORS_ALARM", 0x07080, 1}, - {"CRDT_ERRORS_REG", 0x07090, 1}, - {"CRDT_ERRORS_MASK", 0x07098, 1}, - {"CRDT_ERRORS_ALARM", 0x070A0, 1}, - {"MRPCIM_GENERAL_ERRORS_REG", 0x070B0, 1}, - {"MRPCIM_GENERAL_ERRORS_MASK", 0x070B8, 1}, - {"MRPCIM_GENERAL_ERRORS_ALARM", 0x070C0, 1}, - {"PLL_ERRORS_REG", 0x070D0, 1}, - {"PLL_ERRORS_MASK", 0x070D8, 1}, - {"PLL_ERRORS_ALARM", 0x070E0, 1}, - {"SRPCIM_TO_MRPCIM_ALARM_REG", 0x070E8, 1}, - {"SRPCIM_TO_MRPCIM_ALARM_MASK", 0x070F0, 1}, - {"SRPCIM_TO_MRPCIM_ALARM_ALARM", 0x070F8, 1}, - {"VPATH_TO_MRPCIM_ALARM_REG", 0x07100, 1}, - {"VPATH_TO_MRPCIM_ALARM_MASK", 0x07108, 1}, - {"VPATH_TO_MRPCIM_ALARM_ALARM", 0x07110, 1}, - {"CRDT_ERRORS_VPLANE_REG_%d", 0x07128, 17}, - {"CRDT_ERRORS_VPLANE_MASK_%d", 0x07130, 17}, - {"CRDT_ERRORS_VPLANE_ALARM_%d", 0x07138, 17}, - {"MRPCIM_RST_IN_PROG", 0x072F0, 1}, - {"MRPCIM_REG_MODIFIED", 0x072F8, 1}, - {"SPLIT_TABLE_STATUS1", 0x07300, 1}, - {"SPLIT_TABLE_STATUS2", 0x07308, 1}, - {"SPLIT_TABLE_STATUS3", 0x07310, 1}, - {"MRPCIM_GENERAL_STATUS1", 0x07318, 1}, - {"MRPCIM_GENERAL_STATUS2", 0x07320, 1}, - {"MRPCIM_GENERAL_STATUS3", 0x07328, 1}, - {"TEST_STATUS", 0x07338, 1}, - {"KDFCCTL_DBG_STATUS", 0x07348, 1}, - {"MSIX_ADDR", 0x07350, 1}, - {"MSIX_TABLE", 0x07358, 1}, - {"MSIX_CTL", 0x07360, 1}, - {"MSIX_ACCESS_TABLE", 0x07368, 1}, - {"WRITE_ARB_PENDING", 0x07378, 1}, - {"READ_ARB_PENDING", 0x07380, 1}, - {"DMAIF_DMADBL_PENDING", 0x07388, 1}, - {"WRCRDTARB_STATUS0_VPLANE%d", 0x07390, 17}, - {"WRCRDTARB_STATUS1_VPLANE%d", 0x07418, 17}, - {"MRPCIM_GENERAL_CFG1", 0x07500, 1}, - {"MRPCIM_GENERAL_CFG2", 0x07508, 1}, - {"MRPCIM_GENERAL_CFG3", 0x07510, 1}, - {"MRPCIM_STATS_START_HOST_ADDR", 0x07518, 1}, - {"ASIC_MODE", 0x07520, 1}, - {"DIS_FW_PIPELINE_WR", 0x07528, 1}, - {"INI_TIMEOUT_VAL", 0x07530, 1}, - {"PIC_ARBITER_CFG", 0x07538, 1}, - {"READ_ARBITER", 0x07540, 1}, - {"WRITE_ARBITER", 0x07548, 1}, - {"ADAPTER_CONTROL", 0x07550, 1}, - {"PROGRAM_CFG0", 0x07558, 1}, - {"PROGRAM_CFG1", 0x07560, 1}, - {"DBLGEN_WRR_CFG%d", 0x07568, 21}, - {"DEBUG_CFG1", 0x07608, 1}, - {"TEST_CFG1%d", 0x07900, 3}, - {"WRCRDTARB_CFG%d", 0x07918, 3}, - {"TEST_WRCRDTARB_CFG%d", 0x07930, 4}, - {"RDCRDTARB_CFG%d", 0x07950, 3}, - {"TEST_RDCRDTARB_CFG%d", 0x07968, 4}, - {"PIC_DEBUG_CONTROL", 0x07988, 1}, - {"SPI_CONTROL_3_REG", 0x079D8, 1}, - {"CLOCK_CFG0", 0x079E0, 1}, - {"STATS_BP_CTRL", 0x079E8, 1}, - {"KDFCDMA_BP_CTRL", 0x079F0, 1}, - {"INTCTL_BP_CTRL", 0x079F8, 1}, - {"VECTOR_SRPCIM_ALARM_MAP_%d", 0x07A00, 9}, - {"VPLANE_RDCRDTARB_CFG0_%d", 0x07B10, 17}, - {"MRPCIM_SPI_CONTROL", 0x07BA0, 1}, - {"MRPCIM_SPI_DATA", 0x07BA8, 1}, - {"MRPCIM_SPI_WRITE_PROTECT", 0x07BB0, 1}, - {"CHIP_FULL_RESET", 0x07BE0, 1}, - {"BF_SW_RESET", 0x07BE8, 1}, - {"SW_RESET_STATUS", 0x07BF0, 1}, - {"RIC_TIMEOUT", 0x07C28, 1}, - {"MRPCIM_PCI_CONFIG_ACCESS_CFG1", 0x07C30, 1}, - {"MRPCIM_PCI_CONFIG_ACCESS_CFG2", 0x07C38, 1}, - {"MRPCIM_PCI_CONFIG_ACCESS_STATUS", 0x07C40, 1}, - {"RDCRDTARB_STATUS0_VPLANE%d", 0x07CA8, 17}, - {"MRPCIM_DEBUG_STATS0", 0x07D30, 1}, - {"MRPCIM_DEBUG_STATS1_VPLANE%d", 0x07D38, 17}, - {"MRPCIM_DEBUG_STATS2_VPLANE%d", 0x07DC0, 17}, - {"MRPCIM_DEBUG_STATS3_VPLANE%d", 0x07E48, 17}, - {"MRPCIM_DEBUG_STATS4", 0x07ED0, 1}, - {"GENSTATS_COUNT01", 0x07ED8, 1}, - {"GENSTATS_COUNT23", 0x07EE0, 1}, - {"GENSTATS_COUNT4", 0x07EE8, 1}, - {"GENSTATS_COUNT5", 0x07EF0, 1}, - {"MRPCIM_MMIO_CFG1", 0x07EF8, 1}, - {"MRPCIM_MMIO_CFG2", 0x07F00, 1}, - {"GENSTATS_CFG_%d", 0x07F08, 6}, - {"GENSTAT_64BIT_CFG", 0x07F38, 1}, - {"PLL_SLIP_COUNTERS", 0x07F40, 1}, - {"GCMG3_INT_STATUS", 0x08000, 1}, - {"GCMG3_INT_MASK", 0x08008, 1}, - {"GSTC_ERR0_REG", 0x08010, 1}, - {"GSTC_ERR0_MASK", 0x08018, 1}, - {"GSTC_ERR0_ALARM", 0x08020, 1}, - {"GSTC_ERR1_REG", 0x08028, 1}, - {"GSTC_ERR1_MASK", 0x08030, 1}, - {"GSTC_ERR1_ALARM", 0x08038, 1}, - {"GH2L_ERR0_REG", 0x08040, 1}, - {"GH2L_ERR0_MASK", 0x08048, 1}, - {"GH2L_ERR0_ALARM", 0x08050, 1}, - {"GHSQ_ERR_REG", 0x08058, 1}, - {"GHSQ_ERR_MASK", 0x08060, 1}, - {"GHSQ_ERR_ALARM", 0x08068, 1}, - {"GHSQ_ERR2_REG", 0x08070, 1}, - {"GHSQ_ERR2_MASK", 0x08078, 1}, - {"GHSQ_ERR2_ALARM", 0x08080, 1}, - {"GHSQ_ERR3_REG", 0x08088, 1}, - {"GHSQ_ERR3_MASK", 0x08090, 1}, - {"GHSQ_ERR3_ALARM", 0x08098, 1}, - {"GH2L_SMERR0_REG", 0x080A0, 1}, - {"GH2L_SMERR0_MASK", 0x080A8, 1}, - {"GH2L_SMERR0_ALARM", 0x080B0, 1}, - {"HCC_ALARM_REG", 0x080B8, 1}, - {"HCC_ALARM_MASK", 0x080C0, 1}, - {"HCC_ALARM_ALARM", 0x080C8, 1}, - {"GSTC_CFG%d", 0x080D0, 3}, - {"STC_ARB_CFG%d", 0x080E8, 4}, - {"STC_JHASH_CFG", 0x08108, 1}, - {"STC_SMI_ARB_CFG%d", 0x08110, 2}, - {"STC_CAA_ARB_CFG0%d", 0x08120, 2}, - {"STC_ECI_ARB_CFG0%d", 0x08130, 2}, - {"STC_ECI_CFG0", 0x08140, 1}, - {"STC_PRM_CFG0", 0x08148, 1}, - {"H2L_MISC_CFG", 0x08150, 1}, - {"HSQ_CFG_%d", 0x08158, 17}, - {"USDC_VPBP_CFG", 0x081E0, 1}, - {"KDFC_VPBP_CFG", 0x081E8, 1}, - {"TXPE_VPBP_CFG", 0x081F0, 1}, - {"ONE_VPBP_CFG", 0x081F8, 1}, - {"HOPARB_WRR_CTRL_%d", 0x08200, 20}, - {"HOPARB_WRR_CMP_%d", 0x082A0, 3}, - {"HOP_BCK_STATS0", 0x082E8, 1}, - {"PCMG3_INT_STATUS", 0x08400, 1}, - {"PCMG3_INT_MASK", 0x08408, 1}, - {"DAM_ERR_REG", 0x08410, 1}, - {"DAM_ERR_MASK", 0x08418, 1}, - {"DAM_ERR_ALARM", 0x08420, 1}, - {"PSTC_ERR_REG", 0x08428, 1}, - {"PSTC_ERR_MASK", 0x08430, 1}, - {"PSTC_ERR_ALARM", 0x08438, 1}, - {"PH2L_ERR0_REG", 0x08440, 1}, - {"PH2L_ERR0_MASK", 0x08448, 1}, - {"PH2L_ERR0_ALARM", 0x08450, 1}, - {"DAM_BYPASS_QUEUE_%d", 0x08458, 3}, - {"DAM_ECC_CTRL", 0x08470, 1}, - {"PH2L_CFG0", 0x08478, 1}, - {"PSTC_CFG0", 0x08480, 1}, - {"NETERION_MEMBIST_CONTROL", 0x08510, 1}, - {"NETERION_MEMBIST_ERRORS", 0x08518, 1}, - {"RR_CQM_CACHE_RTL_TOP_0", 0x08520, 1}, - {"RR_CQM_CACHE_RTL_TOP_1", 0x08528, 1}, - {"RR_SQM_CACHE_RTL_TOP_0", 0x08530, 1}, - {"RR_SQM_CACHE_RTL_TOP_1", 0x08538, 1}, - {"RF_SQM_LPRPEDAT_RTL_TOP_0", 0x08540, 1}, - {"RF_SQM_LPRPEDAT_RTL_TOP_1", 0x08548, 1}, - {"RR_SQM_DMAWQERSP_RTL_TOP_0", 0x08550, 1}, - {"RR_SQM_DMAWQERSP_RTL_TOP_1", 0x08558, 1}, - {"RF_CQM_DMACQERSP_RTL_TOP", 0x08560, 1}, - {"RF_SQM_RPEREQDAT_RTL_TOP_0", 0x08568, 1}, - {"RF_SQM_RPEREQDAT_RTL_TOP_1", 0x08570, 1}, - {"RF_SSCC_SSR_RTL_TOP_0_0", 0x08578, 1}, - {"RF_SSCC_SSR_RTL_TOP_1_0", 0x08580, 1}, - {"RF_SSCC_SSR_RTL_TOP_0_1", 0x08588, 1}, - {"RF_SSCC_SSR_RTL_TOP_1_1", 0x08590, 1}, - {"RF_SSC_CM_RESP_RTL_TOP_1_SSC0", 0x08598, 1}, - {"RF_SSC_CM_RESP_RTL_TOP_0_SSC1", 0x085A0, 1}, - {"RF_SSC_CM_RESP_RTL_TOP_1_SSCL", 0x085A8, 1}, - {"RF_SSC_CM_RESP_RTL_TOP_0_SSC0", 0x085B0, 1}, - {"RF_SSC_CM_RESP_RTL_TOP_1_SSC1", 0x085B8, 1}, - {"RF_SSC_CM_RESP_RTL_TOP_0_SSCL", 0x085C0, 1}, - {"RF_SSC_SSR_RESP_RTL_TOP_SSC0", 0x085C8, 1}, - {"RF_SSC_SSR_RESP_RTL_TOP_SSC1", 0x085D0, 1}, - {"RF_SSC_SSR_RESP_RTL_TOP_SSCL", 0x085D8, 1}, - {"RF_SSC_TSR_RESP_RTL_TOP_1_SSC0", 0x085E0, 1}, - {"RF_SSC_TSR_RESP_RTL_TOP_2_SSC0", 0x085E8, 1}, - {"RF_SSC_TSR_RESP_RTL_TOP_2_SSC1", 0x085F0, 1}, - {"RF_SSC_TSR_RESP_RTL_TOP_0_SSCL", 0x085F8, 1}, - {"RF_SSC_TSR_RESP_RTL_TOP_0_SSC0", 0x08600, 1}, - {"RF_SSC_TSR_RESP_RTL_TOP_0_SSC1", 0x08608, 1}, - {" RF_SSC_TSR_RESP_RTL_TOP_1_SSC1", 0x08610, 1}, - {"RF_SSC_TSR_RESP_RTL_TOP_1_SSCL", 0x08618, 1}, - {"RF_SSC_TSR_RESP_RTL_TOP_2_SSCL", 0x08620, 1}, - {"RF_SSC_STATE_RTL_TOP_1_SSC0", 0x08628, 1}, - {"RF_SSC_STATE_RTL_TOP_2_SSC0", 0x08630, 1}, - {"RF_SSC_STATE_RTL_TOP_1_SSC1", 0x08638, 1}, - {"RF_SSC_STATE_RTL_TOP_2_SSC1", 0x08640, 1}, - {"RF_SSC_STATE_RTL_TOP_1_SSCL", 0x08648, 1}, - {"RF_SSC_STATE_RTL_TOP_2_SSCL", 0x08650, 1}, - {"RF_SSC_STATE_RTL_TOP_0_SSC0", 0x08658, 1}, - {"RF_SSC_STATE_RTL_TOP_3_SSC0", 0x08660, 1}, - {"RF_SSC_STATE_RTL_TOP_0_SSC1", 0x08668, 1}, - {"RF_SSC_STATE_RTL_TOP_3_SSC1", 0x08670, 1}, - {"RF_SSC_STATE_RTL_TOP_0_SSCL", 0x08678, 1}, - {"RF_SSC_STATE_RTL_TOP_3_SSCL", 0x08680, 1}, - {"RF_SSCC_TSR_RTL_TOP_%d", 0x08688, 3}, - {"RF_UQM_CMCREQ_RTL_TOP", 0x086A0, 1}, - {"RR%d_G3IF_CM_CTRL_RTL_TOP", 0x086A8, 3}, - {"RF_G3IF_CM_RD_RTL_TOP%d", 0x086C0, 3}, - {"RF_CMG_MSG2CMG_RTL_TOP_0_0", 0x086D8, 1}, - {"RF_CMG_MSG2CMG_RTL_TOP_1_0", 0x086E0, 1}, - {"RF_CMG_MSG2CMG_RTL_TOP_0_1", 0x086E8, 1}, - {"RF_CMG_MSG2CMG_RTL_TOP_1_1", 0x086F0, 1}, - {"RF_CP_DMA_RESP_RTL_TOP_0", 0x086F8, 1}, - {"RF_CP_DMA_RESP_RTL_TOP_1", 0x08700, 1}, - {"RF_CP_DMA_RESP_RTL_TOP_2", 0x08708, 1}, - {"RF_CP_QCC2CXP_RTL_TOP", 0x08710, 1}, - {"RF_CP_STC2CP_RTL_TOP", 0x08718, 1}, - {"RF_CP_XT_TRACE_RTL_TOP", 0x08720, 1}, - {"RF_CP_XT_DTAG_RTL_TOP", 0x08728, 1}, - {"RF_CP_XT_ICACHE_RTL_TOP_0_0", 0x08730, 1}, - {"RF_CP_XT_ICACHE_RTL_TOP_1_0", 0x08738, 1}, - {"RF_CP_XT_ICACHE_RTL_TOP_0_1", 0x08740, 1}, - {"RF_CP_XT_ICACHE_RTL_TOP_1_1", 0x08748, 1}, - {"RF_CP_XT_ITAG_RTL_TOP", 0x08750, 1}, - {"RF_CP_XT_DCACHE_RTL_TOP_0_0", 0x08758, 1}, - {"RF_CP_XT_DCACHE_RTL_TOP_1_0", 0x08760, 1}, - {"RF_CP_XT_DCACHE_RTL_TOP_0_1", 0x08768, 1}, - {"RF_CP_XT_DCACHE_RTL_TOP_1_1", 0x08770, 1}, - {"RF_XTMC_BDT_MEM_RTL_TOP_0", 0x08778, 1}, - {"RF_XTMC_BDT_MEM_RTL_TOP_1", 0x08780, 1}, - {"RF_XT_PIF_SRAM_RTL_TOP_SRAM0", 0x08788, 1}, - {"RF_XT_PIF_SRAM_RTL_TOP_SRAM1", 0x08790, 1}, - {"RF_STC_SRCH_MEM_RTL_TOP_0_0", 0x08798, 1}, - {"RF_STC_SRCH_MEM_RTL_TOP_1_0", 0x087A0, 1}, - {"RF_STC_SRCH_MEM_RTL_TOP_0_1", 0x087A8, 1}, - {"RF_STC_SRCH_MEM_RTL_TOP_1_1", 0x087B0, 1}, - {"RF_DAM_WRRESP_RTL_TOP", 0x087B8, 1}, - {"RF_DAM_RDSB_FIFO_RTL_TOP", 0x087C0, 1}, - {"RF_DAM_WRSB_FIFO_RTL_TOP", 0x087C8, 1}, - {"RR_DBF_LADD_0_DBL_RTL_TOP", 0x087D0, 1}, - {"RR_DBF_LADD_1_DBL_RTL_TOP", 0x087D8, 1}, - {"RR_DBF_LADD_2_DBL_RTL_TOP", 0x087E0, 1}, - {"RR_DBF_HADD_0_DBL_RTL_TOP", 0x087E8, 1}, - {"RR_DBF_HADD_1_DBL_RTL_TOP", 0x087F0, 1}, - {"RR_DBF_HADD_2_DBL_RTL_TOP", 0x087F8, 1}, - {"RF_USDC_0_FIFO_RTL_TOP", 0x08800, 1}, - {"RF_USDC_1_FIFO_RTL_TOP", 0x08808, 1}, - {"RF_USDC_0_WA_RTL_TOP", 0x08810, 1}, - {"RF_USDC_1_WA_RTL_TOP", 0x08818, 1}, - {"RF_USDC_0_SA_RTL_TOP", 0x08820, 1}, - {"RF_USDC_1_SA_RTL_TOP", 0x08828, 1}, - {"RF_USDC_0_CA_RTL_TOP", 0x08830, 1}, - {"RF_USDC_1_CA_RTL_TOP", 0x08838, 1}, - {"RF_G3IF_FB_RD1", 0x08840, 1}, - {"RF_G3IF_FB_RD2", 0x08848, 1}, - {"RF_G3IF_FB_CTRL_RTL_TOP1", 0x08850, 1}, - {"RF_G3IF_FB_CTRL_RTL_TOP", 0x08858, 1}, - {"RR_ROCRC_FRMBUF_RTL_TOP_0", 0x08860, 1}, - {"RR_ROCRC_FRMBUF_RTL_TOP_1", 0x08868, 1}, - {"RR_FAU_XFMD_INS_RTL_TOP", 0x08870, 1}, - {"RF_FBMC_XFMD_RTL_TOP_A1", 0x08878, 1}, - {"RF_FBMC_XFMD_RTL_TOP_A2", 0x08880, 1}, - {"RF_FBMC_XFMD_RTL_TOP_A3", 0x08888, 1}, - {"RF_FBMC_XFMD_RTL_TOP_B1", 0x08890, 1}, - {"RF_FBMC_XFMD_RTL_TOP_B2", 0x08898, 1}, - {"RF_FBMC_XFMD_RTL_TOP_B3", 0x088A0, 1}, - {"RR_FAU_MAC2F_W_H_RTL_TOP_PORT0", 0x088A8, 1}, - {"RR_FAU_MAC2F_W_H_RTL_TOP_PORT1", 0x088B0, 1}, - {"RR_FAU_MAC2F_N_H_RTL_TOP_PORT0", 0x088B8, 1}, - {"RR_FAU_MAC2F_N_H_RTL_TOP_PORT1", 0x088C0, 1}, - {"RR_FAU_MAC2F_W_L_RTL_TOP_PORT2", 0x088C8, 1}, - {"RR_FAU_MAC2F_N_L_RTL_TOP_PORT2", 0x088D0, 1}, - {"RF_ORP_FRM_FIFO_RTL_TOP_0", 0x088D8, 1}, - {"RF_ORP_FRM_FIFO_RTL_TOP_1", 0x088E0, 1}, - {"RF_TPA_DA_LKP_RTL_TOP_0_0", 0x088E8, 1}, - {"RF_TPA_DA_LKP_RTL_TOP_1_0", 0x088F0, 1}, - {"RF_TPA_DA_LKP_RTL_TOP_0_1", 0x088F8, 1}, - {"RF_TPA_DA_LKP_RTL_TOP_1_1", 0x08900, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_0_0", 0x08908, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_1_0", 0x08910, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_2_0", 0x08918, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_0_1", 0x08920, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_1_1", 0x08928, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_2_1", 0x08930, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_0_2", 0x08938, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_1_2", 0x08940, 1}, - {"RF_TMAC_TPA2MAC_RTL_TOP_2_2", 0x08948, 1}, - {"RF_TMAC_TPA2M_DA_RTL_TOP", 0x08950, 1}, - {"RF_TMAC_TPA2M_SB_RTL_TOP", 0x08958, 1}, - {"RF_XT_TRACE_RTL_TOP_MP", 0x08960, 1}, - {"RF_MP_XT_DTAG_RTL_TOP", 0x08968, 1}, - {"RF_MP_XT_ICACHE_RTL_TOP_0_0", 0x08970, 1}, - {"RF_MP_XT_ICACHE_RTL_TOP_1_0", 0x08978, 1}, - {"RF_MP_XT_ICACHE_RTL_TOP_0_1", 0x08980, 1}, - {"RF_MP_XT_ICACHE_RTL_TOP_1_1", 0x08988, 1}, - {"RF_MP_XT_ITAG_RTL_TOP", 0x08990, 1}, - {"RF_MP_XT_DCACHE_RTL_TOP_0_0", 0x08998, 1}, - {"RF_MP_XT_DCACHE_RTL_TOP_1_0", 0x089A0, 1}, - {"RF_MP_XT_DCACHE_RTL_TOP_0_1", 0x089A8, 1}, - {"RF_MP_XT_DCACHE_RTL_TOP_1_1", 0x089B0, 1}, - {"RF_MSG_BWR_PF_RTL_TOP_0", 0x089B8, 1}, - {"RF_MSG_BWR_PF_RTL_TOP_1", 0x089C0, 1}, - {"RF_MSG_UMQ_RTL_TOP_0", 0x089C8, 1}, - {"RF_MSG_UMQ_RTL_TOP_1", 0x089D0, 1}, - {"RF_MSG_DMQ_RTL_TOP_0", 0x089D8, 1}, - {"RF_MSG_DMQ_RTL_TOP_1", 0x089E0, 1}, - {"RF_MSG_DMQ_RTL_TOP_2", 0x089E8, 1}, - {"RF_MSG_DMA_RESP_RTL_TOP_0", 0x089F0, 1}, - {"RF_MSG_DMA_RESP_RTL_TOP_1", 0x089F8, 1}, - {"RF_MSG_DMA_RESP_RTL_TOP_2", 0x08A00, 1}, - {"RF_MSG_CMG2MSG_RTL_TOP_0_0", 0x08A08, 1}, - {"RF_MSG_CMG2MSG_RTL_TOP_1_0", 0x08A10, 1}, - {"RF_MSG_CMG2MSG_RTL_TOP_0_1", 0x08A18, 1}, - {"RF_MSG_CMG2MSG_RTL_TOP_1_1", 0x08A20, 1}, - {"RF_MSG_TXPE2MSG_RTL_TOP", 0x08A28, 1}, - {"RF_MSG_RXPE2MSG_RTL_TOP", 0x08A30, 1}, - {"RF_MSG_RPE2MSG_RTL_TOP", 0x08A38, 1}, - {"RR_TIM_BMAP_RTL_TOP", 0x08A40, 1}, - {"RF_TIM_VBLS_RTL_TOP", 0x08A48, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_0_0", 0x08A50, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_1_0", 0x08A58, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_2_0", 0x08A60, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_0_1", 0x08A68, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_1_1", 0x08A70, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_2_1", 0x08A78, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_0_2", 0x08A80, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_1_2", 0x08A88, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_2_2", 0x08A90, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_0_3", 0x08A98, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_1_3", 0x08AA0, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_2_3", 0x08AA8, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_0_4", 0x08AB0, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_1_4", 0x08AB8, 1}, - {"RF_TIM_BMAP_MSG_RTL_TOP_2_4", 0x08AC0, 1}, - {"RF_XT_TRACE_RTL_TOP_UP", 0x08AC8, 1}, - {"RF_UP_XT_DTAG_RTL_TOP", 0x08AD0, 1}, - {"RF_UP_XT_ICACHE_RTL_TOP_0_0", 0x08AD8, 1}, - {"RF_UP_XT_ICACHE_RTL_TOP_1_0", 0x08AE0, 1}, - {"RF_UP_XT_ICACHE_RTL_TOP_0_1", 0x08AE8, 1}, - {"RF_UP_XT_ICACHE_RTL_TOP_1_1", 0x08AF0, 1}, - {"RF_UP_XT_ITAG_RTL_TOP", 0x08AF8, 1}, - {"RF_UP_XT_DCACHE_RTL_TOP_0_0", 0x08B00, 1}, - {"RF_UP_XT_DCACHE_RTL_TOP_1_0", 0x08B08, 1}, - {"RF_UP_XT_DCACHE_RTL_TOP_0_1", 0x08B10, 1}, - {"RF_UP_XT_DCACHE_RTL_TOP_1_1", 0x08B18, 1}, - {"RR_RXPE_XT0_IRAM_RTL_TOP_0", 0x08B20, 1}, - {"RR_RXPE_XT0_IRAM_RTL_TOP_1", 0x08B28, 1}, - {"RR_RXPE_XT_DRAM_RTL_TOP_0", 0x08B30, 1}, - {"RR_RXPE_XT_DRAM_RTL_TOP_1", 0x08B38, 1}, - {"RF_RXPE_MSG2RXPE_RTL_TOP_0", 0x08B40, 1}, - {"RF_RXPE_MSG2RXPE_RTL_TOP_1", 0x08B48, 1}, - {"RF_RXPE_XT0_FRM_RTL_TOP", 0x08B50, 1}, - {"RF_RPE_PDM_RCMD_RTL_TOP", 0x08B58, 1}, - {"RF_RPE_RCQ_RTL_TOP", 0x08B60, 1}, - {"RF_RPE_RCO_PBLE_RTL_TOP", 0x08B68, 1}, - {"RR_RXPE_XT1_IRAM_RTL_TOP_0", 0x08B70, 1}, - {"RR_RXPE_XT1_IRAM_RTL_TOP_1", 0x08B78, 1}, - {"RR_RPE_SCCM_RTL_TOP_0", 0x08B80, 1}, - {"RR_RPE_SCCM_RTL_TOP_1", 0x08B88, 1}, - {"RR_PE_PET_TIMER_RTL_TOP_0", 0x08B90, 1}, - {"RR_PE_PET_TIMER_RTL_TOP_1", 0x08B98, 1}, - {"RF_PE_DLM_LWRQ_RTL_TOP_0", 0x08BA0, 1}, - {"RF_PE_DLM_LWRQ_RTL_TOP_1", 0x08BA8, 1}, - {"RF_TXPE_MSG2TXPE_RTL_TOP_%d", 0x08BB0, 2}, - {"RF_PCI_RETRY_BUF_RTL_TOP_%d", 0x08BC0, 6}, - {"RF_PCI_SOT_BUF_RTL_TOP", 0x08BF0, 1}, - {"RF_PCI_RX_PH_RTL_TOP", 0x08BF8, 1}, - {"RF_PCI_RX_NPH_RTL_TOP", 0x08C00, 1}, - {"RF_PCI_RX_PD_RTL_TOP_%d", 0x08C08, 12}, - {"RF_PCI_RX_NPD_RTL_TOP_%d", 0x08C68, 2}, - {"RF_PIC_KDFC_DBL_RTL_TOP_%d", 0x08C78, 5}, - {"RF_PCC_TXDO_RTL_TOP_PCC%d", 0x08CA0, 8}, - {"RR_PCC_ASS_BUF_RTL_TOP_PCC1", 0x08CE0, 1}, - {"RR_PCC_ASS_BUF_RTL_TOP_PCC3", 0x08CE8, 1}, - {"RR_PCC_ASS_BUF_RTL_TOP_PCC5", 0x08CF0, 1}, - {"RR_PCC_ASS_BUF_RTL_TOP_PCC7", 0x08CF8, 1}, - {"RR_PCC_ASS_BUF_RTL_TOP_PCC0", 0x08D00, 1}, - {"RR_PCC_ASS_BUF_RTL_TOP_PCC2", 0x08D08, 1}, - {"RR_PCC_ASS_BUF_RTL_TOP_PCC6", 0x08D10, 1}, - {"RR_PCC_ASS_BUF_RTL_TOP_PCC4", 0x08D18, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_0_WRAPPER0", 0x08D20, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_1_WRAPPER0", 0x08D28, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_2_WRAPPER0", 0x08D30, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_0_WRAPPER1", 0x08D38, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_1_WRAPPER1", 0x08D40, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_2_WRAPPER1", 0x08D48, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_0_WRAPPER2", 0x08D50, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_1_WRAPPER2", 0x08D58, 1}, - {"RF_ROCRC_CMDQ_BP_RTL_TOP_2_WRAPPER2", 0x08D60, 1}, - {"RR_ROCRC_RXD_RTL_TOP_RXD%d", 0x08D68, 2}, - {"RF_ROCRC_UMQ_MDQ_RTL_TOP_%d", 0x08D78, 8}, - {"RF_ROCRC_IMMDBUF_RTL_TOP", 0x08DB8, 1}, - {"RF_ROCRC_QCC_BYP_RTL_TOP_%d", 0x08DC0, 2}, - {"RR_RMAC_DA_LKP_RTL_TOP_%d", 0x08DD0, 4}, - {"RR_RMAC_PN_LKP_D_RTL_TOP", 0x08DF0, 1}, - {"RF_RMAC_PN_LKP_S_RTL_TOP_%d", 0x08DF8, 2}, - {"RF_RMAC_RTH_LKP_RTL_TOP_0_0", 0x08E08, 1}, - {"RF_RMAC_RTH_LKP_RTL_TOP_1_0", 0x08E10, 1}, - {"RF_RMAC_RTH_LKP_RTL_TOP_0_1", 0x08E18, 1}, - {"RF_RMAC_RTH_LKP_RTL_TOP_1_1", 0x08E20, 1}, - {"RF_RMAC_DS_LKP_RTL_TOP", 0x08E28, 1}, - {"RF_RMAC_RTS_PART_RTL_TOP_0_RMAC0", 0x08E30, 1}, - {"RF_RMAC_RTS_PART_RTL_TOP_1_RMAC0", 0x08E38, 1}, - {"RF_RMAC_RTS_PART_RTL_TOP_0_RMAC1", 0x08E40, 1}, - {"RF_RMAC_RTS_PART_RTL_TOP_1_RMAC1", 0x08E48, 1}, - {"RF_RMAC_RTS_PART_RTL_TOP_0_RMAC2", 0x08E50, 1}, - {"RF_RMAC_RTS_PART_RTL_TOP_1_RMAC2", 0x08E58, 1}, - {"RF_RMAC_RTH_MASK_RTL_TOP_%d", 0x08E60, 4}, - {"RF_RMAC_VID_LKP_RTL_TOP_1", 0x08E88, 0}, - {"RF_RMAC_VID_LKP_RTL_TOP_2", 0x08E90, 0}, - {"RF_RMAC_VID_LKP_RTL_TOP_3", 0x08E98, 0}, - {"RF_RMAC_VID_LKP_RTL_TOP_4", 0x08EA0, 0}, - {"RF_RMAC_VID_LKP_RTL_TOP_5", 0x08EA8, 0}, - {"RF_RMAC_VID_LKP_RTL_TOP_6", 0x08EB0, 0}, - {"RF_RMAC_VID_LKP_RTL_TOP_7", 0x08EB8, 0}, - {"RF_RMAC_STATS_RTL_TOP_0_STATS_0", 0x08EC0, 1}, - {"RF_RMAC_STATS_RTL_TOP_1_STATS_0", 0x08EC8, 1}, - {"RF_RMAC_STATS_RTL_TOP_0_STATS_1", 0x08ED0, 1}, - {"RF_RMAC_STATS_RTL_TOP_1_STATS_1", 0x08ED8, 1}, - {"RF_RMAC_STATS_RTL_TOP_0_STATS_2", 0x08EE0, 1}, - {"RF_RMAC_STATS_RTL_TOP_1_STATS_2", 0x08EE8, 1}, - {"RF_RMAC_STATS_RTL_TOP_0_STATS_3", 0x08EF0, 1}, - {"RF_RMAC_STATS_RTL_TOP_1_STATS_3", 0x08EF8, 1}, - {"RF_RMAC_STATS_RTL_TOP_0_STATS_4", 0x08F00, 1}, - {"RF_RMAC_STATS_RTL_TOP_1_STATS_4", 0x08F08, 1}, - {"G3IFCMD_FB_INT_STATUS", 0x09000, 1}, - {"G3IFCMD_FB_INT_MASK", 0x09008, 1}, - {"G3IFCMD_FB_ERR_REG", 0x09010, 1}, - {"G3IFCMD_FB_ERR_MASK", 0x09018, 1}, - {"G3IFCMD_FB_ERR_ALARM", 0x09020, 1}, - {"G3IFCMD_FB_DLL_CK0", 0x09028, 1}, - {"G3IFCMD_FB_IO_CTRL", 0x09030, 1}, - {"G3IFCMD_FB_IOCAL", 0x09038, 1}, - {"G3IFCMD_FB_MASTER_DLL_CK", 0x09040, 1}, - {"G3IFCMD_FB_DLL_TRAINING", 0x09048, 1}, - {"G3IFGR01_FB_GROUP0_DLL_RDQS", 0x09110, 1}, - {"G3IFGR01_FB_GROUP0_DLL_RDQS1", 0x09118, 1}, - {"G3IFGR01_FB_GROUP0_DLL_WDQS", 0x09120, 1}, - {"G3IFGR01_FB_GROUP0_DLL_WDQS1", 0x09128, 1}, - {"G3IFGR01_FB_GROUP0_DLL_TRAINING1", 0x09130, 1}, - {"G3IFGR01_FB_GROUP0_DLL_TRAINING2", 0x09138, 1}, - {"G3IFGR01_FB_GROUP0_DLL_TRAINING3", 0x09140, 1}, - {"G3IFGR01_FB_GROUP0_DLL_ACT_TRAINING5", 0x09148, 1}, - {"G3IFGR01_FB_GROUP0_DLL_TRAINING6", 0x09150, 1}, - {"G3IFGR01_FB_GROUP0_DLL_ATRA_OFFSET", 0x09158, 1}, - {"G3IFGR01_FB_GROUP0_DLL_TRA_HOLD", 0x09160, 1}, - {"G3IFGR01_FB_GROUP0_DLL_ATRA_HOLD", 0x09168, 1}, - {"G3IFGR01_FB_GROUP0_DLL_MASTER_CODES", 0x09170, 1}, - {"G3IFGR01_FB_GROUP0_DLL_ATRA_TIMER", 0x09178, 1}, - {"G3IFGR01_FB_GROUP1_DLL_RDQS", 0x09180, 1}, - {"G3IFGR01_FB_GROUP1_DLL_RDQS1", 0x09188, 1}, - {"G3IFGR01_FB_GROUP1_DLL_WDQS", 0x09190, 1}, - {"G3IFGR01_FB_GROUP1_DLL_WDQS1", 0x09198, 1}, - {"G3IFGR01_FB_GROUP1_DLL_TRAINING1", 0x091A0, 1}, - {"G3IFGR01_FB_GROUP1_DLL_TRAINING2", 0x091A8, 1}, - {"G3IFGR01_FB_GROUP1_DLL_TRAINING3", 0x091B0, 1}, - {"G3IFGR01_FB_GROUP1_DLL_ACT_TRAINING5", 0x091B8, 1}, - {"G3IFGR01_FB_GROUP1_DLL_TRAINING6", 0x091C0, 1}, - {"G3IFGR01_FB_GROUP1_DLL_ATRA_OFFSET", 0x091C8, 1}, - {"G3IFGR01_FB_GROUP1_DLL_TRA_HOLD", 0x091D0, 1}, - {"G3IFGR01_FB_GROUP1_DLL_ATRA_HOLD", 0x091D8, 1}, - {"G3IFGR01_FB_GROUP1_DLL_MASTER_CODES", 0x091E0, 1}, - {"G3IFGR01_FB_GROUP1_DLL_ATRA_TIMER", 0x091E8, 1}, - {"G3IFGR23_FB_GROUP2_DLL_RDQS", 0x09210, 1}, - {"G3IFGR23_FB_GROUP2_DLL_RDQS1", 0x09218, 1}, - {"G3IFGR23_FB_GROUP2_DLL_WDQS", 0x09220, 1}, - {"G3IFGR23_FB_GROUP2_DLL_WDQS1", 0x09228, 1}, - {"G3IFGR23_FB_GROUP2_DLL_TRAINING1", 0x09230, 1}, - {"G3IFGR23_FB_GROUP2_DLL_TRAINING2", 0x09238, 1}, - {"G3IFGR23_FB_GROUP2_DLL_TRAINING3", 0x09240, 1}, - {"G3IFGR23_FB_GROUP2_DLL_ACT_TRAINING5", 0x09248, 1}, - {"G3IFGR23_FB_GROUP2_DLL_TRAINING6", 0x09250, 1}, - {"G3IFGR23_FB_GROUP2_DLL_ATRA_OFFSET", 0x09258, 1}, - {"G3IFGR23_FB_GROUP2_DLL_TRA_HOLD", 0x09260, 1}, - {"G3IFGR23_FB_GROUP2_DLL_ATRA_HOLD", 0x09268, 1}, - {"G3IFGR23_FB_GROUP2_DLL_MASTER_CODES", 0x09270, 1}, - {"G3IFGR23_FB_GROUP2_DLL_ATRA_TIMER", 0x09278, 1}, - {"G3IFGR23_FB_GROUP3_DLL_RDQS", 0x09280, 1}, - {"G3IFGR23_FB_GROUP3_DLL_RDQS1", 0x09288, 1}, - {"G3IFGR23_FB_GROUP3_DLL_WDQS", 0x09290, 1}, - {"G3IFGR23_FB_GROUP3_DLL_WDQS1", 0x09298, 1}, - {"G3IFGR23_FB_GROUP3_DLL_TRAINING1", 0x092A0, 1}, - {"G3IFGR23_FB_GROUP3_DLL_TRAINING2", 0x092A8, 1}, - {"G3IFGR23_FB_GROUP3_DLL_TRAINING3", 0x092B0, 1}, - {"G3IFGR23_FB_GROUP3_DLL_ACT_TRAINING5", 0x092B8, 1}, - {"G3IFGR23_FB_GROUP3_DLL_TRAINING6", 0x092C0, 1}, - {"G3IFGR23_FB_GROUP3_DLL_ATRA_OFFSET", 0x092C8, 1}, - {"G3IFGR23_FB_GROUP3_DLL_TRA_HOLD", 0x092D0, 1}, - {"G3IFGR23_FB_GROUP3_DLL_ATRA_HOLD", 0x092D8, 1}, - {"G3IFGR23_FB_GROUP3_DLL_MASTER_CODES", 0x092E0, 1}, - {"G3IFGR23_FB_GROUP3_DLL_ATRA_TIMER", 0x092E8, 1}, - {"G3IFCMD_CMU_INT_STATUS", 0x09400, 1}, - {"G3IFCMD_CMU_INT_MASK", 0x09408, 1}, - {"G3IFCMD_CMU_ERR_REG", 0x09410, 1}, - {"G3IFCMD_CMU_ERR_MASK", 0x09418, 1}, - {"G3IFCMD_CMU_ERR_ALARM", 0x09420, 1}, - {"G3IFCMD_CMU_DLL_CK0", 0x09428, 1}, - {"G3IFCMD_CMU_IO_CTRL", 0x09430, 1}, - {"G3IFCMD_CMU_IOCAL", 0x09438, 1}, - {"G3IFCMD_CMU_MASTER_DLL_CK", 0x09440, 1}, - {"G3IFCMD_CMU_DLL_TRAINING", 0x09448, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_RDQS", 0x09510, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_RDQS1", 0x09518, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_WDQS", 0x09520, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_WDQS1", 0x09528, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_TRAINING1", 0x09530, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_TRAINING2", 0x09538, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_TRAINING3", 0x09540, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_ACT_TRAINING5", 0x09548, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_TRAINING6", 0x09550, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_ATRA_OFFSET", 0x09558, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_TRA_HOLD", 0x09560, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_ATRA_HOLD", 0x09568, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_MASTER_CODES", 0x09570, 1}, - {"G3IFGR01_CMU_GROUP0_DLL_ATRA_TIMER", 0x09578, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_RDQS", 0x09580, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_RDQS1", 0x09588, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_WDQS", 0x09590, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_WDQS1", 0x09598, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_TRAINING1", 0x095A0, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_TRAINING2", 0x095A8, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_TRAINING3", 0x095B0, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_ACT_TRAINING5", 0x095B8, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_TRAINING6", 0x095C0, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_ATRA_OFFSET", 0x095C8, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_TRA_HOLD", 0x095D0, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_ATRA_HOLD", 0x095D8, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_MASTER_CODES", 0x095E0, 1}, - {"G3IFGR01_CMU_GROUP1_DLL_ATRA_TIMER", 0x095E8, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_RDQS", 0x09610, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_RDQS1", 0x09618, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_WDQS", 0x09620, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_WDQS1", 0x09628, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_TRAINING1", 0x09630, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_TRAINING2", 0x09638, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_TRAINING3", 0x09640, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_ACT_TRAINING5", 0x09648, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_TRAINING6", 0x09650, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_ATRA_OFFSET", 0x09658, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_TRA_HOLD", 0x09660, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_ATRA_HOLD", 0x09668, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_MASTER_CODES", 0x09670, 1}, - {"G3IFGR23_CMU_GROUP2_DLL_ATRA_TIMER", 0x09678, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_RDQS", 0x09680, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_RDQS1", 0x09688, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_WDQS", 0x09690, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_WDQS1", 0x09698, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_TRAINING1", 0x096A0, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_TRAINING2", 0x096A8, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_TRAINING3", 0x096B0, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_ACT_TRAINING5", 0x096B8, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_TRAINING6", 0x096C0, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_ATRA_OFFSET", 0x096C8, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_TRA_HOLD", 0x096D0, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_ATRA_HOLD", 0x096D8, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_MASTER_CODES", 0x096E0, 1}, - {"G3IFGR23_CMU_GROUP3_DLL_ATRA_TIMER", 0x096E8, 1}, - {"G3IFCMD_CML_INT_STATUS", 0x09800, 1}, - {"G3IFCMD_CML_INT_MASK", 0x09808, 1}, - {"G3IFCMD_CML_ERR_REG", 0x09810, 1}, - {"G3IFCMD_CML_ERR_MASK", 0x09818, 1}, - {"G3IFCMD_CML_ERR_ALARM", 0x09820, 1}, - {"G3IFCMD_CML_DLL_CK0", 0x09828, 1}, - {"G3IFCMD_CML_IO_CTRL", 0x09830, 1}, - {"G3IFCMD_CML_IOCAL", 0x09838, 1}, - {"G3IFCMD_CML_MASTER_DLL_CK", 0x09840, 1}, - {"G3IFCMD_CML_DLL_TRAINING", 0x09848, 1}, - {"G3IFGR01_CML_GROUP0_DLL_RDQS", 0x09910, 1}, - {"G3IFGR01_CML_GROUP0_DLL_RDQS1", 0x09918, 1}, - {"G3IFGR01_CML_GROUP0_DLL_WDQS", 0x09920, 1}, - {"G3IFGR01_CML_GROUP0_DLL_WDQS1", 0x09928, 1}, - {"G3IFGR01_CML_GROUP0_DLL_TRAINING1", 0x09930, 1}, - {"G3IFGR01_CML_GROUP0_DLL_TRAINING2", 0x09938, 1}, - {"G3IFGR01_CML_GROUP0_DLL_TRAINING3", 0x09940, 1}, - {"G3IFGR01_CML_GROUP0_DLL_ACT_TRAINING5", 0x09948, 1}, - {"G3IFGR01_CML_GROUP0_DLL_TRAINING6", 0x09950, 1}, - {"G3IFGR01_CML_GROUP0_DLL_ATRA_OFFSET", 0x09958, 1}, - {"G3IFGR01_CML_GROUP0_DLL_TRA_HOLD", 0x09960, 1}, - {"G3IFGR01_CML_GROUP0_DLL_ATRA_HOLD", 0x09968, 1}, - {"G3IFGR01_CML_GROUP0_DLL_MASTER_CODES", 0x09970, 1}, - {"G3IFGR01_CML_GROUP0_DLL_ATRA_TIMER", 0x09978, 1}, - {"G3IFGR01_CML_GROUP1_DLL_RDQS", 0x09980, 1}, - {"G3IFGR01_CML_GROUP1_DLL_RDQS1", 0x09988, 1}, - {"G3IFGR01_CML_GROUP1_DLL_WDQS", 0x09990, 1}, - {"G3IFGR01_CML_GROUP1_DLL_WDQS1", 0x09998, 1}, - {"G3IFGR01_CML_GROUP1_DLL_TRAINING1", 0x099A0, 1}, - {"G3IFGR01_CML_GROUP1_DLL_TRAINING2", 0x099A8, 1}, - {"G3IFGR01_CML_GROUP1_DLL_TRAINING3", 0x099B0, 1}, - {"G3IFGR01_CML_GROUP1_DLL_ACT_TRAINING5", 0x099B8, 1}, - {"G3IFGR01_CML_GROUP1_DLL_TRAINING6", 0x099C0, 1}, - {"G3IFGR01_CML_GROUP1_DLL_ATRA_OFFSET", 0x099C8, 1}, - {"G3IFGR01_CML_GROUP1_DLL_TRA_HOLD", 0x099D0, 1}, - {"G3IFGR01_CML_GROUP1_DLL_ATRA_HOLD", 0x099D8, 1}, - {"G3IFGR01_CML_GROUP1_DLL_MASTER_CODES", 0x099E0, 1}, - {"G3IFGR01_CML_GROUP1_DLL_ATRA_TIMER", 0x099E8, 1}, - {"G3IFGR23_CML_GROUP2_DLL_RDQS", 0x09A10, 1}, - {"G3IFGR23_CML_GROUP2_DLL_RDQS1", 0x09A18, 1}, - {"G3IFGR23_CML_GROUP2_DLL_WDQS", 0x09A20, 1}, - {"G3IFGR23_CML_GROUP2_DLL_WDQS1", 0x09A28, 1}, - {"G3IFGR23_CML_GROUP2_DLL_TRAINING1", 0x09A30, 1}, - {"G3IFGR23_CML_GROUP2_DLL_TRAINING2", 0x09A38, 1}, - {"G3IFGR23_CML_GROUP2_DLL_TRAINING3", 0x09A40, 1}, - {"G3IFGR23_CML_GROUP2_DLL_ACT_TRAINING5", 0x09A48, 1}, - {"G3IFGR23_CML_GROUP2_DLL_TRAINING6", 0x09A50, 1}, - {"G3IFGR23_CML_GROUP2_DLL_ATRA_OFFSET", 0x09A58, 1}, - {"G3IFGR23_CML_GROUP2_DLL_TRA_HOLD", 0x09A60, 1}, - {"G3IFGR23_CML_GROUP2_DLL_ATRA_HOLD", 0x09A68, 1}, - {"G3IFGR23_CML_GROUP2_DLL_MASTER_CODES", 0x09A70, 1}, - {"G3IFGR23_CML_GROUP2_DLL_ATRA_TIMER", 0x09A78, 1}, - {"G3IFGR23_CML_GROUP3_DLL_RDQS", 0x09A80, 1}, - {"G3IFGR23_CML_GROUP3_DLL_RDQS1", 0x09A88, 1}, - {"G3IFGR23_CML_GROUP3_DLL_WDQS", 0x09A90, 1}, - {"G3IFGR23_CML_GROUP3_DLL_WDQS1", 0x09A98, 1}, - {"G3IFGR23_CML_GROUP3_DLL_TRAINING1", 0x09AA0, 1}, - {"G3IFGR23_CML_GROUP3_DLL_TRAINING2", 0x09AA8, 1}, - {"G3IFGR23_CML_GROUP3_DLL_TRAINING3", 0x09AB0, 1}, - {"G3IFGR23_CML_GROUP3_DLL_ACT_TRAINING5", 0x09AB8, 1}, - {"G3IFGR23_CML_GROUP3_DLL_TRAINING6", 0x09AC0, 1}, - {"G3IFGR23_CML_GROUP3_DLL_ATRA_OFFSET", 0x09AC8, 1}, - {"G3IFGR23_CML_GROUP3_DLL_TRA_HOLD", 0x09AD0, 1}, - {"G3IFGR23_CML_GROUP3_DLL_ATRA_HOLD", 0x09AD8, 1}, - {"G3IFGR23_CML_GROUP3_DLL_MASTER_CODES", 0x09AE0, 1}, - {"G3IFGR23_CML_GROUP3_DLL_ATRA_TIMER", 0x09AE8, 1}, - {"VPATH_TO_VPLANE_MAP_%d", 0x09B00, 17}, - {"XGXS_CFG_PORT%d", 0x09C30, 2}, - {"XGXS_RXBER_CFG_PORT%d", 0x09C40, 2}, - {"XGXS_RXBER_STATUS_PORT%d", 0x09C50, 2}, - {"XGXS_STATUS_PORT%d", 0x09C60, 2}, - {"XGXS_PMA_RESET_PORT%d", 0x09C70, 2}, - {"XGXS_STATIC_CFG_PORT%d", 0x09C90, 2}, - {"XGXS_SERDES_FW_CFG_PORT%d", 0x09CC0, 2}, - {"XGXS_SERDES_TX_CFG_PORT%d", 0x09CD0, 2}, - {"XGXS_SERDES_RX_CFG_PORT%d", 0x09CE0, 2}, - {"XGXS_SERDES_EXTRA_CFG_PORT%d", 0x09CF0, 2}, - {"XGXS_SERDES_STATUS_PORT%d", 0x09D00, 2}, - {"XGXS_SERDES_CR_ACCESS_PORT%d", 0x09D10, 2}, - {"XGXS_INFO_PORT%d", 0x09D40, 2}, - {"RATEMGMT_CFG_PORT%d", 0x09D50, 2}, - {"RATEMGMT_STATUS_PORT%d", 0x09D60, 2}, - {"RATEMGMT_FIXED_CFG_PORT%d", 0x09D80, 2}, - {"RATEMGMT_ANTP_CFG_PORT%d", 0x09D90, 2}, - {"RATEMGMT_ANBE_CFG_PORT%d", 0x09DA0, 2}, - {"ANBE_CFG_PORT%d", 0x09DB0, 2}, - {"ANBE_MGR_CTRL_PORT%d", 0x09DC0, 2}, - {"ANBE_FW_MSTR_PORT%d", 0x09DE0, 2}, - {"ANBE_HWFSM_GEN_STATUS_PORT%d", 0x09DF0, 2}, - {"ANBE_HWFSM_BP_STATUS_PORT%d", 0x09E00, 2}, - {"ANBE_HWFSM_NP_STATUS_PORT%d", 0x09E10, 2}, - {"ANTP_GEN_CFG_PORT%d", 0x09E30, 2}, - {"ANTP_HWFSM_GEN_STATUS_PORT%d", 0x09E40, 2}, - {"ANTP_HWFSM_BP_STATUS_PORT%d", 0x09E50, 2}, - {"ANTP_HWFSM_XNP_STATUS_PORT%d", 0x09E60, 2}, - {"MDIO_MGR_ACCESS_PORT%d", 0x09E70, 2}, - {"XMAC_VSPORT_CHOICES_VH%d", 0x0A200, 17}, - {"RX_THRESH_CFG_VP%d", 0x0A400, 17}, - {"FAU_ADAPTIVE_LRO_VPATH_ENABLE", 0x0AC00, 1}, - {"FAU_ADAPTIVE_LRO_BASE_SID_VP%d", 0x0AC08, 17}, -}; - -vxge_pci_bar0_t reginfo_srpcim[] = -{ - {"TIM_MR2SR_RESOURCE_ASSIGNMENT_VH", 0x00000, 1}, - {"SRPCIM_PCIPIF_INT_STATUS", 0x00100, 1}, - {"SRPCIM_PCIPIF_INT_MASK", 0x00108, 1}, - {"MRPCIM_MSG_REG", 0x00110, 1}, - {"MRPCIM_MSG_MASK", 0x00118, 1}, - {"MRPCIM_MSG_ALARM", 0x00120, 1}, - {"VPATH_MSG_REG", 0x00128, 1}, - {"VPATH_MSG_MASK", 0x00130, 1}, - {"VPATH_MSG_ALARM", 0x00138, 1}, - {"VF_BARGRP_NO", 0x00158, 1}, - {"SRPCIM_TO_MRPCIM_WMSG", 0x00160, 1}, - {"SRPCIM_TO_MRPCIM_WMSG_TRIG", 0x00168, 1}, - {"MRPCIM_TO_SRPCIM_RMSG", 0x00170, 1}, - {"VPATH_TO_SRPCIM_RMSG_SEL", 0x00178, 1}, - {"PATH_TO_SRPCIM_RMSG", 0x00180, 1}, - {"SRPCIM_GENERAL_INT_STATUS", 0x00200, 1}, - {"SRPCIM_GENERAL_INT_MASK", 0x00210, 1}, - {"SRPCIM_PPIF_INT_STATUS", 0x00220, 1}, - {"SRPCIM_PPIF_INT_MASK", 0x00228, 1}, - {"SRPCIM_GEN_ERRORS_REG", 0x00230, 1}, - {"SRPCIM_GEN_ERRORS_MASK", 0x00238, 1}, - {"SRPCIM_GEN_ERRORS_ALARM", 0x00240, 1}, - {"MRPCIM_TO_SRPCIM_ALARM_REG", 0x00248, 1}, - {"VPATH_TO_SRPCIM_ALARM_MASK", 0x00268, 1}, - {"VPATH_TO_SRPCIM_ALARM_ALARM", 0x00270, 1}, - {"PF_SW_RESET", 0x00280, 1}, - {"SRPCIM_GENERAL_CFG1", 0x00288, 1}, - {"SRPCIM_INTERRUPT_CFG1", 0x00290, 1}, - {"SRPCIM_INTERRUPT_CFG2", 0x00298, 1}, - {"SRPCIM_CLEAR_MSIX_MASK", 0x002A8, 1}, - {"SRPCIM_SET_MSIX_MASK", 0x002B0, 1}, - {"SRPCIM_CLR_MSIX_ONE_SHOT", 0x002B8, 1}, - {"SRPCIM_RST_IN_PROG", 0x002C0, 1}, - {"SRPCIM_REG_MODIFIED", 0x002C8, 1}, - {"TGT_PF_ILLEGAL_ACCESS", 0x002D0, 1}, - {"SRPCIM_MSIX_STATUS", 0x002D8, 1}, - {"USDC_VPL", 0x00318, 1}, - {"ONE_CFG_SR_COPY", 0x00600, 1}, - {"SGRP_ALLOCATED", 0x00608, 1}, - {"SGRP_IWARP_LRO_ALLOCATED", 0x00610, 1}, - {"XGMAC_SR_INT_STATUS", 0x00880, 1}, - {"XGMAC_SR_INT_MASK", 0x00888, 1}, - {"ASIC_NTWK_SR_ERR_REG", 0x00890, 1}, - {"ASIC_NTWK_SR_ERR_MASK", 0x00898, 1}, - {"ASIC_NTWK_SR_ERR_ALARM", 0x008A0, 1}, - {"XMAC_VSPORT_CHOICES_SR_CLONE", 0x008C0, 1}, - {"MR_RQA_TOP_PRTY_FOR_VH", 0x00900, 1}, - {"UMQ_VH_DATA_LIST_EMPTY", 0x00908, 1}, - {"WDE_CFG", 0x00910, 1} -}; - -vxge_stats_driver_info_t driverInfo[] = -{ - /* ISR statistics */ - {"isr_msix", 0}, - - /* Tx statistics */ - {"tx_xmit", 0}, - {"tx_posted", 0}, - {"tx_compl", 0}, - {"tx_tso", 0}, - {"tx_tcode", 0}, - {"tx_low_dtr_cnt", 0}, - {"tx_reserve_failed", 0}, - {"tx_no_dma_setup", 0}, - {"tx_max_frags", 0}, - {"tx_again", 0}, - - /* Rx statistics */ - {"rx_compl", 0}, - {"rx_tcode", 0}, - {"rx_no_buf", 0}, - {"rx_map_fail", 0}, - {"rx_lro_queued", 0}, - {"rx_lro_flushed", 0} -}; - -#endif /* _VXGE_LOG_H_ */ Index: tools/tools/vxge/vxge_log.c =================================================================== --- tools/tools/vxge/vxge_log.c +++ tools/tools/vxge/vxge_log.c @@ -1,596 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright(c) 2002-2011 Exar Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification are permitted provided the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Exar Corporation nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/*$FreeBSD$*/ - -#include "vxge_log.h" - -static FILE *fdAll; - -/* - * vxge_print_registers - * Prints/logs Register values - * @registers Register values - */ -void -vxge_print_registers(void *registers) -{ - int i = 0, j = 0; - u64 noffset, nRegValue = 0; - char szName[64]; - - fdAll = fopen("vxge_regs.log", "w+"); - if (!fdAll) - return; - - VXGE_PRINT_REG_NAME(fdAll, "Registers : COMMON"); - VXGE_PRINT_HEADER_REGS(fdAll); - - for (i = 0; i < VXGE_HAL_MGMT_REG_COUNT_COMMON; i++) { - if (reginfo_registers[i].size == 1) - strlcpy(szName, reginfo_registers[i].name, - sizeof(szName)); - - for (j = 0; j < reginfo_registers[i].size; j++) { - noffset = reginfo_registers[i].offset + (0x8 * j); - - if (reginfo_registers[i].size > 1) - snprintf(szName, sizeof(szName), - reginfo_registers[i].name, j); - - nRegValue = *((u64 *) ((unsigned char *) registers + - noffset)); - - VXGE_PRINT_REGS(fdAll, (const char *) szName, noffset, - nRegValue); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_registers_legacy - * Prints/logs legacy Register values - * @registers Register values - */ -void -vxge_print_registers_legacy(void *registers) -{ - int i = 0, j = 0; - u64 noffset, nRegValue = 0; - char szName[64]; - - fdAll = fopen("vxge_regs.log", "a+"); - if (!fdAll) - return; - - VXGE_PRINT_REG_NAME(fdAll, "Registers : LEGACY"); - VXGE_PRINT_HEADER_REGS(fdAll); - - for (i = 0; i < VXGE_HAL_MGMT_REG_COUNT_LEGACY; i++) { - if (reginfo_legacy[i].size == 1) - strlcpy(szName, reginfo_legacy[i].name, sizeof(szName)); - - for (j = 0; j < reginfo_legacy[i].size; j++) { - noffset = reginfo_legacy[i].offset + (0x8 * j); - - if (reginfo_legacy[i].size > 1) - snprintf(szName, sizeof(szName), - reginfo_legacy[i].name, j); - - nRegValue = *((u64 *) ((unsigned char *) registers + - noffset)); - - VXGE_PRINT_REGS(fdAll, (const char *) szName, noffset, - nRegValue); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_registers_toc - * Prints/logs toc Register values - * @registers Register values - */ -void -vxge_print_registers_toc(void *registers) -{ - int i = 0, j = 0; - u64 noffset, nRegValue = 0; - char szName[64]; - - fdAll = fopen("vxge_regs.log", "a+"); - if (!fdAll) - return; - - VXGE_PRINT_REG_NAME(fdAll, "Registers : TOC"); - VXGE_PRINT_HEADER_REGS(fdAll); - - for (i = 0; i < VXGE_HAL_MGMT_REG_COUNT_TOC; i++) { - if (reginfo_toc[i].size == 1) - strlcpy(szName, reginfo_toc[i].name, sizeof(szName)); - - for (j = 0; j < reginfo_toc[i].size; j++) { - noffset = reginfo_toc[i].offset + (0x8 * j); - - if (reginfo_toc[i].size > 1) - snprintf(szName, sizeof(szName), - reginfo_toc[i].name, j); - - nRegValue = *((u64 *) ((unsigned char *) registers + - noffset)); - - VXGE_PRINT_REGS(fdAll, (const char *) szName, noffset, - nRegValue); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_registers_pcicfgmgmt - * Prints/logs pcicfgmgmt Register values - * @registers Register values - */ -void -vxge_print_registers_pcicfgmgmt(void *registers) -{ - int i = 0, j = 0; - u64 noffset, nRegValue; - char szName[64]; - - fdAll = fopen("vxge_regs.log", "a+"); - if (!fdAll) - return; - - VXGE_PRINT_REG_NAME(fdAll, "Registers : PCICFGMGMT"); - VXGE_PRINT_HEADER_REGS(fdAll); - - for (i = 0; i < VXGE_HAL_MGMT_REG_COUNT_PCICFGMGMT; i++) { - if (reginfo_pcicfgmgmt[i].size == 1) - strlcpy(szName, reginfo_pcicfgmgmt[i].name, - sizeof(szName)); - - for (j = 0; j < reginfo_pcicfgmgmt[i].size; j++) { - - noffset = reginfo_pcicfgmgmt[i].offset + (0x8 * j); - - if (reginfo_pcicfgmgmt[i].size > 1) - snprintf(szName, sizeof(szName), - reginfo_pcicfgmgmt[i].name, j); - - nRegValue = *((u64 *) ((unsigned char *) registers + - noffset)); - - VXGE_PRINT_REGS(fdAll, (const char *) szName, noffset, - nRegValue); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_registers_vpath - * Prints/logs vpath Register values - * @registers Register values - */ -void -vxge_print_registers_vpath(void *registers, int vpath_num) -{ - int i = 0, j = 0; - u64 noffset, nRegValue = 0; - char szName[64]; - - fdAll = fopen("vxge_regs.log", "a+"); - if (!fdAll) - return; - - VXGE_PRINT_REG_NAME(fdAll, "Registers : VPATH"); - VXGE_PRINT_HEADER_REGS(fdAll); - - for (i = 0; i < VXGE_HAL_MGMT_REG_COUNT_VPATH; i++) { - if (reginfo_vpath[i].size == 1) - snprintf(szName, sizeof(szName), - reginfo_vpath[i].name, vpath_num); - - for (j = 0; j < reginfo_vpath[i].size; j++) { - noffset = reginfo_vpath[i].offset + (0x8 * j); - - if (reginfo_vpath[i].size > 1) - snprintf(szName, sizeof(szName), reginfo_vpath[i].name, j, vpath_num); - - nRegValue = *((u64 *) ((unsigned char *) registers + - noffset)); - - VXGE_PRINT_REGS(fdAll, (const char *) szName, noffset, - nRegValue); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_registers_vpmgmt - * Prints/logs vpmgmt Register values - * @registers Register values - */ -void -vxge_print_registers_vpmgmt(void *registers) -{ - int i = 0, j = 0; - u64 noffset, nRegValue = 0; - char szName[64]; - - fdAll = fopen("vxge_regs.log", "a+"); - if (!fdAll) - return; - - VXGE_PRINT_REG_NAME(fdAll, "Registers : VPMGMT"); - VXGE_PRINT_HEADER_REGS(fdAll); - - for (i = 0; i < VXGE_HAL_MGMT_REG_COUNT_VPMGMT; i++) { - - if (reginfo_vpmgmt[i].size == 1) - strlcpy(szName, reginfo_vpmgmt[i].name, sizeof(szName)); - - for (j = 0; j < reginfo_vpmgmt[i].size; j++) { - - noffset = reginfo_vpmgmt[i].offset + (0x8 * j); - - if (reginfo_vpmgmt[i].size > 1) - snprintf(szName, sizeof(szName), - reginfo_vpmgmt[i].name, j); - - nRegValue = *((u64 *) ((unsigned char *) registers + - noffset)); - - VXGE_PRINT_REGS(fdAll, (const char *) szName, noffset, - nRegValue); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_registers_mrpcim - * Prints/logs mrpcim Register values - * @registers Register values - */ -void -vxge_print_registers_mrpcim(void *registers) -{ - int i = 0, j = 0; - u64 noffset, nRegValue = 0; - char szName[64]; - - fdAll = fopen("vxge_regs.log", "a+"); - if (!fdAll) - return; - - VXGE_PRINT_REG_NAME(fdAll, "Registers : MRPCIM"); - VXGE_PRINT_HEADER_REGS(fdAll); - - for (i = 0; i < VXGE_HAL_MGMT_REG_COUNT_MRPCIM; i++) { - - if (reginfo_mrpcim[i].size == 1) - strlcpy(szName, reginfo_mrpcim[i].name, sizeof(szName)); - - for (j = 0; j < reginfo_mrpcim[i].size; j++) { - - noffset = reginfo_mrpcim[i].offset + (0x8 * j); - - if (reginfo_mrpcim[i].size > 1) - snprintf(szName, sizeof(szName), - reginfo_mrpcim[i].name, j); - - nRegValue = *((u64 *) ((unsigned char *) registers + - noffset)); - - VXGE_PRINT_REGS(fdAll, (const char *) szName, noffset, - nRegValue); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_registers_srpcim - * Prints/logs srpcim Register values - * @registers Register values - */ -void -vxge_print_registers_srpcim(void *registers) -{ - int i = 0, j = 0; - u64 noffset, nRegValue = 0; - char szName[64]; - - fdAll = fopen("vxge_regs.log", "a+"); - if (!fdAll) - return; - - VXGE_PRINT_REG_NAME(fdAll, "Registers : SRPCIM"); - VXGE_PRINT_HEADER_REGS(fdAll); - - for (i = 0; i < VXGE_HAL_MGMT_REG_COUNT_SRPCIM; i++) { - - if (reginfo_srpcim[i].size == 1) - strlcpy(szName, reginfo_srpcim[i].name, sizeof(szName)); - - for (j = 0; j < reginfo_srpcim[i].size; j++) { - - noffset = reginfo_srpcim[i].offset + (0x8 * j); - - if (reginfo_srpcim[i].size > 1) - snprintf(szName, sizeof(szName), - reginfo_srpcim[i].name, j); - - nRegValue = *((u64 *) ((unsigned char *) registers + - noffset)); - - VXGE_PRINT_REGS(fdAll, (const char *) szName, noffset, - nRegValue); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_stats_drv - * Prints/logs Driver Statistics - * @driver_stats Driver Statistics - */ -void -vxge_print_stats_drv(void *driver_stats, int vpath_num) -{ - int i, j; - u32 no_of_vpath; - - no_of_vpath = vxge_get_num_vpath(); - fdAll = fopen("vxge_drv_stats.log", "w+"); - if (!fdAll) - return; - - for (i = 0; i < no_of_vpath; i++) { - - if (vpath_num != -1) { - if (vpath_num != i) { - driver_stats = driver_stats + - (VXGE_HAL_MGMT_STATS_COUNT_DRIVER * sizeof(u64)); - continue; - } - } - - VXGE_PRINT_LINE(fdAll); - VXGE_PRINT(fdAll, " VPath # %d ", i); - VXGE_PRINT_LINE(fdAll); - - for (j = 0; j < VXGE_HAL_MGMT_STATS_COUNT_DRIVER; j++) { - - driverInfo[j].value = - *((u64 *) ((unsigned char *) driver_stats + - (j * (sizeof(u64))))); - - VXGE_PRINT_STATS(fdAll, (const char *) - driverInfo[j].name, driverInfo[j].value); - } - driver_stats = driver_stats + (j * sizeof(u64)); - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -/* - * vxge_print_stats - * Prints/logs Statistics - * @driver_stats Driver Statistics - */ -void -vxge_print_stats(void *stats, vxge_query_device_info_e stat_type) -{ - fdAll = fopen("vxge_stats.log", "a+"); - if (!fdAll) - return; - - switch (stat_type) { - case VXGE_GET_MRPCIM_STATS: - VXGE_PRINT_LINE(fdAll); - VXGE_PRINT_REG_NAME(fdAll, "Statistics : MRPCIM"); - VXGE_PRINT_LINE(fdAll); - break; - - case VXGE_GET_DEVICE_STATS: - VXGE_PRINT_LINE(fdAll); - VXGE_PRINT_REG_NAME(fdAll, "Statistics: COMMON"); - VXGE_PRINT_LINE(fdAll); - break; - } - - VXGE_PRINT(fdAll, "%s", stats); - fclose(fdAll); -} - -void -vxge_print_pci_config(void *info) -{ - fdAll = fopen("vxge_regs.log", "a+"); - if (!fdAll) - return; - - VXGE_PRINT_LINE(fdAll); - VXGE_PRINT_REG_NAME(fdAll, "PCI CONFIG SPACE"); - VXGE_PRINT_LINE(fdAll); - VXGE_PRINT(fdAll, "%s", info); - fclose(fdAll); -} - -void -vxge_print_hw_info(void *info) -{ - u32 i; - vxge_device_hw_info_t *dev_hw_info; - vxge_hal_device_hw_info_t *hw_info; - vxge_hal_device_pmd_info_t *pmd_port; - - fdAll = fopen("vxge_regs.log", "w+"); - if (!fdAll) - return; - - dev_hw_info = (vxge_device_hw_info_t *) info; - hw_info = &(dev_hw_info->hw_info); - pmd_port = &(hw_info->pmd_port0); - - VXGE_PRINT_LINE(fdAll); - VXGE_PRINT_REG_NAME(fdAll, "HARDWARE INFO"); - VXGE_PRINT_LINE(fdAll); - - VXGE_PRINT(fdAll, "Description \t\t: %s", - hw_info->product_description); - - VXGE_PRINT(fdAll, "Serial Number \t\t: %s", hw_info->serial_number); - VXGE_PRINT(fdAll, "Part Number \t\t: %s", hw_info->part_number); - - VXGE_PRINT(fdAll, "Firmware Version \t: %s", - hw_info->fw_version.version); - - VXGE_PRINT(fdAll, "Firmware Date \t\t: %s", hw_info->fw_date.date); - - VXGE_PRINT(fdAll, "Function Mode \t\t: %s", - vxge_func_mode[hw_info->function_mode]); - - for (i = 0; i < hw_info->ports; i++) { - - vxge_null_terminate(pmd_port->vendor, - sizeof(pmd_port->vendor)); - - if (strlen(pmd_port->vendor) == 0) { - VXGE_PRINT(fdAll, - "PMD Port %d \t\t: vendor=??, sn=??, pn=??", i); - - pmd_port = &(hw_info->pmd_port1); - continue; - } - - vxge_null_terminate(pmd_port->ser_num, - sizeof(pmd_port->ser_num)); - - vxge_null_terminate(pmd_port->part_num, - sizeof(pmd_port->part_num)); - - VXGE_PRINT(fdAll, - "PMD Port %d \t\t: vendor=%s, sn=%s, pn=%s", i, - pmd_port->vendor, pmd_port->ser_num, - pmd_port->part_num); - - pmd_port = &(hw_info->pmd_port1); - } - - if (hw_info->ports > 1) { - - VXGE_PRINT(fdAll, "Port mode \t\t: %s", - vxge_port_mode[dev_hw_info->port_mode]); - - if (dev_hw_info->port_mode != VXGE_HAL_DP_NP_MODE_SINGLE_PORT) { - VXGE_PRINT(fdAll, "Port failure \t\t: %s", - vxge_port_failure[dev_hw_info->port_failure]); - } - } - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -void -vxge_print_bw_priority(void *info) -{ - u32 i; - u64 func_id; - vxge_bw_info_t *buffer; - - fdAll = fopen("vxge_stats.log", "a+"); - if (!fdAll) - return; - - buffer = (vxge_bw_info_t *) info; - func_id = buffer->func_id; - - VXGE_PRINT_LINE(fdAll); - - VXGE_PRINT(fdAll, - "Function : %02lld Bandwidth : %05d\tPriority : %d", - func_id, (buffer->bandwidth ? - buffer->bandwidth : VXGE_MAX_BANDWIDTH), - buffer->priority); - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -} - -void -vxge_print_port_mode(void *info) -{ - vxge_port_info_t *buffer; - - fdAll = fopen("vxge_stats.log", "a+"); - if (!fdAll) - return; - - buffer = (vxge_port_info_t *) info; - - VXGE_PRINT_LINE(fdAll); - - VXGE_PRINT(fdAll, - "Port Mode: %s\tPort Failure: %s", - vxge_port_mode[buffer->port_mode], - vxge_port_failure[buffer->port_failure]); - - VXGE_PRINT_LINE(fdAll); - fclose(fdAll); -}